MEFISTO problem and solution
MEFISTO problem and solutionPosted by Torsten Sadowski at October 10. 2007Hello,
I ran into a problem with MEFISTO. If a face has a degenerated edge MEFISTO will build a disconnected Mesh which will fail for Netgen 3D. Degenerated edges appear in OCC at the point of conical surfaces. My solution is to modify SMESH_Block::GetOrderedEdges so that degenerated edges are not returned to the surface mesher. I don't know if this breaks something else but so far it works for me:
tmac:~/Diss/Code/CADSimShaft totty$ diff -Nurd src/SMESH/SMESH_Block.cxx.changed src/SMESH/SMESH_Block.cxx
--- src/SMESH/SMESH_Block.cxx.changed 2007-10-10 01:53:54.000000000 +0200
+++ src/SMESH/SMESH_Block.cxx 2007-10-10 02:12:52.000000000 +0200
@@ -865,7 +865,10 @@
TopoDS_Edge edge = wExp.Current();
edge = TopoDS::Edge( edge.Oriented( wExp.Orientation() ));
- theEdges.push_back( edge );
+ if (!BRep_Tool:egenerated(edge))
+ theEdges.push_back( edge );
theNbVertexInWires.push_back( iE );
iE = 0;
If you want to repeat my problem use
and MEFISTO as the surface mesher.
Netgen-1D-2D-3D does not have the problem but fails for my more complex files.
Re: MEFISTO problem and solutionPosted by Edward AGAPOV at October 10. 2007Hello Torsten
I tried to mesh your shape with NbSegments=5; 2D mesh is OK, not disconnected (I check it with "Free Edges" control).
We know that shapes with degenerated edges are meshes so that there are geometrically (not topologically) degenerated 2D elements. This is taken into account when passing a surface mesh to 3D meshers. You can see it by meshing a sphere - it is OK.
In your case, the problem is that NETGEN 3D is very sensitive to quality of input mesh, it dislikes narrow faces. It is often possible to make it work by varying hypotheses.
I tried your solution, it really let NETGEN 3D succed in your case but fail on a simple sphere (NbSegments=5)
Re: MEFISTO problem and solutionPosted by Torsten Sadowski at October 10. 2007Hello Edward,
thank you for checking. Could you try to mesh drilltest.stp with Netgen3D too? It fails for me every time without my modification. Also a simple visual check for free edges is in my opinion not reliable. If I really want to check I use Create Group with a free edges filter on the original mesh. I get free edges at the drill point in the 2d mesh.
Re: MEFISTO problem and solutionPosted by Edward AGAPOV at October 11. 2007Hello Torsten
I tried to mesh your shape and I see that we have a bug here, input mesh of NETGEN is not totally correct. I tried such a way: build 2D mesh only then merge nodes (not always OK, sometimes holes appear), add NETGEN 3D and then NETGEN succeeds. Then I made a sphere of 2 faces to have 2 degenerated edges at one apex like in your shape and here NETGEN failed also.
If you could re-build your shape so that to have only one conical surface in the hole, it would help you.
Re: MEFISTO problem and solutionPosted by Torsten Sadowski at October 11. 2007Hello Edward,
this might be a stupid question, but how do I prevent the 1D and 2D algos from executing if I add a 3D algo later? It would be really helpful for me if I could work on the 2D mesh before using it for 3D.
Rebuilding of the geometry is not really feasible for me, because I use rather complex imported STEP geometries and I am happy if the geometry is at least valid.
Re: MEFISTO problem and solutionPosted by Edward AGAPOV at October 12. 2007
>how do I prevent the 1D and 2D algos from executing if I add a 3D algo later?<br >Hello Torsten
There is nothing to do; a sub-mesh is not re-computed every time 'Compute' is called, it is re-computed only if a hypothesis (=algo+parameters) change. So that if 1D and 2D hypotheses remain the same, adding a 3D hypothesis does not lead to re-computing 1D and 2D sub-meshes.
Powered by Ploneboard