From a695ce3aeecb27a023e248ccb9433d62916308cd Mon Sep 17 00:00:00 2001 From: eap Date: Wed, 16 Mar 2016 19:59:08 +0300 Subject: [PATCH] IPAL53051: 3D Extrusion fails + minor doc modifs --- doc/salome/examples/creating_meshes_ex02.py | 26 +++++++++------- doc/salome/examples/creating_meshes_ex03.py | 29 ++++++++---------- .../gui/SMESH/images/prism_needs_hyps.png | Bin 19373 -> 33626 bytes doc/salome/gui/SMESH/input/prism_3d_algo.doc | 9 +++--- doc/salome/gui/SMESH/input/quad_ijk_algo.doc | 4 +-- src/StdMeshers/StdMeshers_Prism_3D.cxx | 2 +- src/StdMeshers/StdMeshers_ProjectionUtils.cxx | 4 +-- src/StdMeshers/StdMeshers_Projection_2D.cxx | 19 +++++++++--- 8 files changed, 52 insertions(+), 41 deletions(-) diff --git a/doc/salome/examples/creating_meshes_ex02.py b/doc/salome/examples/creating_meshes_ex02.py index fe9f72f08..3980d4d74 100644 --- a/doc/salome/examples/creating_meshes_ex02.py +++ b/doc/salome/examples/creating_meshes_ex02.py @@ -1,4 +1,4 @@ -# Construction of a Submesh +# Construction of a Sub-mesh import salome salome.salome_init() @@ -20,27 +20,31 @@ EdgeX = geompy.GetEdgeNearPoint(box, p5) geompy.addToStudyInFather(box, EdgeX, "Edge [0,0,0 - 10,0,0]") # create a hexahedral mesh on the box -quadra = smesh.Mesh(box, "Box : quadrangle 2D mesh") +mesh = smesh.Mesh(box, "Box : hexahedral 3D mesh") -# create a regular 1D algorithm for the faces -algo1D = quadra.Segment() +# create a Regular_1D algorithm for discretization of edges +algo1D = mesh.Segment() # define "NumberOfSegments" hypothesis to cut # all the edges in a fixed number of segments algo1D.NumberOfSegments(4) # create a quadrangle 2D algorithm for the faces -quadra.Quadrangle() +mesh.Quadrangle() -# construct a submesh on the edge with a local hypothesis -algo_local = quadra.Segment(EdgeX) +# construct a sub-mesh on the edge with a local Regular_1D algorithm +algo_local = mesh.Segment(EdgeX) -# define "Arithmetic1D" hypothesis to cut the edge in several segments with increasing arithmetic length +# define "Arithmetic1D" hypothesis to cut EdgeX in several segments with length arithmetically +# increasing from 1.0 to 4.0 algo_local.Arithmetic1D(1, 4) -# define "Propagation" hypothesis that propagates all other hypotheses -# on all edges of the opposite side in case of quadrangular faces +# define "Propagation" hypothesis that propagates algo_local and "Arithmetic1D" hypothesis +# on all parallel edges of the box algo_local.Propagation() +# assign a hexahedral algorithm +mesh.Hexahedron() + # compute the mesh -quadra.Compute() +mesh.Compute() diff --git a/doc/salome/examples/creating_meshes_ex03.py b/doc/salome/examples/creating_meshes_ex03.py index 7cf85b786..8687b8971 100644 --- a/doc/salome/examples/creating_meshes_ex03.py +++ b/doc/salome/examples/creating_meshes_ex03.py @@ -1,4 +1,4 @@ -# Change priority of submeshes in Mesh +# Change priority of sub-meshes in Mesh import salome salome.salome_init() @@ -16,47 +16,44 @@ Box_1 = geompy.MakeBoxDXDYDZ(200, 200, 200) # create Mesh object on Box shape Mesh_1 = smesh.Mesh(Box_1) -# assign mesh algorithms +# assign mesh algorithms and hypotheses Regular_1D = Mesh_1.Segment() Nb_Segments_1 = Regular_1D.NumberOfSegments(20) -Nb_Segments_1.SetDistrType( 0 ) MEFISTO_2D = Mesh_1.Triangle() Max_Element_Area_1 = MEFISTO_2D.MaxElementArea(1200) Tetrahedron = Mesh_1.Tetrahedron() Max_Element_Volume_1 = Tetrahedron.MaxElementVolume(40000) -# create submesh and assign algorithms on Face_1 +# create sub-mesh and assign algorithms on Face_1 Regular_1D_1 = Mesh_1.Segment(geom=Face_1) Nb_Segments_2 = Regular_1D_1.NumberOfSegments(4) -Nb_Segments_2.SetDistrType( 0 ) MEFISTO_2D_1 = Mesh_1.Triangle(algo=smeshBuilder.MEFISTO,geom=Face_1) -Length_From_Edges_2D = MEFISTO_2D_1.LengthFromEdges() SubMesh_1 = MEFISTO_2D_1.GetSubMesh() -# create submesh and assign algorithms on Face_2 +# create sub-mesh and assign algorithms on Face_2 Regular_1D_2 = Mesh_1.Segment(geom=Face_2) Nb_Segments_3 = Regular_1D_2.NumberOfSegments(8) -Nb_Segments_3.SetDistrType( 0 ) MEFISTO_2D_2 = Mesh_1.Triangle(algo=smeshBuilder.MEFISTO,geom=Face_2) -Length_From_Edges_2D_1 = MEFISTO_2D_2.LengthFromEdges() SubMesh_2 = MEFISTO_2D_2.GetSubMesh() -# create submesh and assign algorithms on Face_3 +# create sub-mesh and assign algorithms on Face_3 Regular_1D_3 = Mesh_1.Segment(geom=Face_3) Nb_Segments_4 = Regular_1D_3.NumberOfSegments(12) -Nb_Segments_4.SetDistrType( 0 ) MEFISTO_2D_3 = Mesh_1.Triangle(algo=smeshBuilder.MEFISTO,geom=Face_3) -Length_From_Edges_2D_2 = MEFISTO_2D_3.LengthFromEdges() SubMesh_3 = MEFISTO_2D_3.GetSubMesh() -# check exisiting submesh priority order +# check exisiting sub-mesh priority order [ [ SubMesh_1, SubMesh_3, SubMesh_2 ] ] = Mesh_1.GetMeshOrder() -# set new submesh order +isDone = Mesh_1.Compute() +print "Nb elements at initial order of sub-meshes:", Mesh_1.NbElements() + +# set new sub-mesh order isDone = Mesh_1.SetMeshOrder( [ [ SubMesh_1, SubMesh_2, SubMesh_3 ] ]) # compute mesh isDone = Mesh_1.Compute() +print "Nb elements at new order of sub-meshes:", Mesh_1.NbElements() -# clear mesh result and compute with other submesh order -Mesh_1.Clear() +# compute with other sub-mesh order isDone = Mesh_1.SetMeshOrder( [ [ SubMesh_2, SubMesh_1, SubMesh_3 ] ]) isDone = Mesh_1.Compute() +print "Nb elements at another order of sub-meshes:", Mesh_1.NbElements() diff --git a/doc/salome/gui/SMESH/images/prism_needs_hyps.png b/doc/salome/gui/SMESH/images/prism_needs_hyps.png index 8c567809df180b98afe8c1ebf95f78bfffd5b275..d56d4309994ece8cc91152d868f6b85e47898f55 100644 GIT binary patch literal 33626 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�@|1ZT&1G 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 E00ZOiUjP6A literal 19373 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 1D algorithm and hypothesis that will be applied for meshing (logically) vertical edges of the prism (which connect the top and the base faces of the prism). In the sample picture above these are - "Regular_1D" algorithm and "Nb. Segments_1" hypothesis. + "Regular_1D" algorithm and "Nb. Segments" hypothesis named "Vertical + Nb. Segments". The \b Local algorithms and hypotheses to be chosen at @@ -51,9 +52,9 @@ The \b Local algorithms and hypotheses to be chosen at meshing the top and the base prism faces. These faces can be meshed with any type of 2D elements: quadrangles, triangles, polygons or their mix. It is enough to define a sub-mesh on either the top or the base - face. In the sample picture above, "BLSURF" algorithm meshes - "Face_1" base surface with triangles. (1D algorithm is not - assigned as "BLSURF" does not require divided edges to create a 2D mesh.) + face. In the sample picture above, "NETGEN_1D2D" algorithm meshes + "bottom disk" face with triangles. (1D algorithm is not + assigned as "NETGEN_1D2D" does not require divided edges to create a 2D mesh.)
  • Optionally you can define a 1D sub-mesh on some vertical edges of stacked prisms, which will override the global 1D hypothesis mentioned diff --git a/doc/salome/gui/SMESH/input/quad_ijk_algo.doc b/doc/salome/gui/SMESH/input/quad_ijk_algo.doc index 1ba49dd83..90e7eea94 100644 --- a/doc/salome/gui/SMESH/input/quad_ijk_algo.doc +++ b/doc/salome/gui/SMESH/input/quad_ijk_algo.doc @@ -20,8 +20,8 @@ The algorithm treats any face as quadrangle. If a face is bound by more than four edges, four most sharp vertices are considered as corners of the quadrangle and all edges between these vertices are treated as quadrangle sides. In the case of three edges, the vertex -specified by the user is considered as a degenerated side of the -quadrangle. +specified by the user is considered as a fourth degenerated side of the +quadrangle. \image html quad_meshes.png "Algorithm generates a structured mesh on complex faces provided that edges are properly discretized" diff --git a/src/StdMeshers/StdMeshers_Prism_3D.cxx b/src/StdMeshers/StdMeshers_Prism_3D.cxx index d2413b564..5c0a5af0f 100644 --- a/src/StdMeshers/StdMeshers_Prism_3D.cxx +++ b/src/StdMeshers/StdMeshers_Prism_3D.cxx @@ -1330,7 +1330,7 @@ bool StdMeshers_Prism_3D::compute(const Prism_3D::TPrismTopo& thePrism) // update state of sub-meshes (mostly in order to erase improper errors) SMESH_subMesh* sm = myHelper->GetMesh()->GetSubMesh( thePrism.myShape3D ); - SMESH_subMeshIteratorPtr smIt = sm->getDependsOnIterator(/*includeSelf=*/false); + SMESH_subMeshIteratorPtr smIt = sm->getDependsOnIterator(/*includeSelf=*/true); while ( smIt->more() ) { sm = smIt->next(); diff --git a/src/StdMeshers/StdMeshers_ProjectionUtils.cxx b/src/StdMeshers/StdMeshers_ProjectionUtils.cxx index 51a639869..06aa33a57 100644 --- a/src/StdMeshers/StdMeshers_ProjectionUtils.cxx +++ b/src/StdMeshers/StdMeshers_ProjectionUtils.cxx @@ -1868,7 +1868,7 @@ StdMeshers_ProjectionUtils::GetPropagationEdge( SMESH_Mesh* aMes int prevChainSize = aChain.Extent(); if ( aChain.Add(anOppE) > prevChainSize ) { // ... anOppE is not in aChain // Add found edge to the chain oriented so that to - // have it co-directed with a forward MainEdge + // have it co-directed with a fromEdge TopAbs_Orientation ori = anE.Orientation(); if ( anOppE.Orientation() == fourEdges[found].Orientation() ) ori = TopAbs::Reverse( ori ); @@ -1931,7 +1931,7 @@ FindMatchingNodesOnFaces( const TopoDS_Face& face1, helper1.SetSubShape( face1 ); helper2.SetSubShape( face2 ); - if ( helper1.HasSeam() != helper2.HasSeam() ) + if ( helper1.HasRealSeam() != helper2.HasRealSeam() ) RETURN_BAD_RESULT("Different faces' geometry"); // Data to call SMESH_MeshEditor::FindMatchingNodes(): diff --git a/src/StdMeshers/StdMeshers_Projection_2D.cxx b/src/StdMeshers/StdMeshers_Projection_2D.cxx index 66c893628..648510c94 100644 --- a/src/StdMeshers/StdMeshers_Projection_2D.cxx +++ b/src/StdMeshers/StdMeshers_Projection_2D.cxx @@ -821,8 +821,8 @@ namespace { // find trsf const int totNbSeg = 50; vector< gp_XY > srcPnts, tgtPnts; - srcPnts.resize( totNbSeg ); - tgtPnts.resize( totNbSeg ); + srcPnts.reserve( totNbSeg ); + tgtPnts.reserve( totNbSeg ); for ( size_t iW = 0; iW < srcWires.size(); ++iW ) { const double minSegLen = srcWires[iW]->Length() / totNbSeg; @@ -1392,10 +1392,19 @@ bool StdMeshers_Projection_2D::Compute(SMESH_Mesh& theMesh, const TopoDS_Shape& } } } - else if ( nbEdgesInWires.front() == 1 ) + else if ( nbEdgesInWires.front() == 1 ) // a sole edge in a wire { - // TODO::Compare orientation of curves in a sole edge - //RETURN_BAD_RESULT("Not implemented case"); + TopoDS_Edge srcE1 = srcEdges.front(), tgtE1 = tgtEdges.front(); + for ( size_t iW = 0; iW < srcWires.size(); ++iW ) + { + StdMeshers_FaceSidePtr srcWire = srcWires[iW]; + for ( int iE = 0; iE < srcWire->NbEdges(); ++iE ) + if ( srcE1.IsSame( srcWire->Edge( iE ))) + { + reverse = ( tgtE1.Orientation() != tgtWires[iW]->Edge( iE ).Orientation() ); + break; + } + } } else { -- 2.39.2