[MOAB-dev] r4773 - in MOAB/trunk: MeshFiles/unittest src src/moab test

iulian at mcs.anl.gov iulian at mcs.anl.gov
Sat Apr 23 00:04:46 CDT 2011


Author: iulian
Date: 2011-04-23 00:04:45 -0500 (Sat, 23 Apr 2011)
New Revision: 4773

Modified:
   MOAB/trunk/MeshFiles/unittest/polyPB.txt
   MOAB/trunk/src/FBEngine.cpp
   MOAB/trunk/src/SmoothCurve.cpp
   MOAB/trunk/src/SmoothCurve.hpp
   MOAB/trunk/src/moab/FBEngine.hpp
   MOAB/trunk/test/mbfacet_test.cpp
Log:
add test for splitting a face along a "grounding" line
add closest point method for smooth curve; use Newton iteration; robustness 
  needs to be tested
add method to split an FBedge at an existing node

still to do:
 intersection of a smooth face too sensitive to tolerance at the boundary
 remove or update the OBB before writing to a file
 method to split an FBEdge at an arbitrary point
modified the test file with polyline definition due to robustness issues
 it may fail on different precision computers; need to make it more robust
 


Modified: MOAB/trunk/MeshFiles/unittest/polyPB.txt
===================================================================
--- MOAB/trunk/MeshFiles/unittest/polyPB.txt	2011-04-22 19:29:26 UTC (rev 4772)
+++ MOAB/trunk/MeshFiles/unittest/polyPB.txt	2011-04-23 05:04:45 UTC (rev 4773)
@@ -1,5 +1,5 @@
  0. 0. 1. 10.
 537200  7680200  -2000.
 537800  7680100  -2000.
-537700  7680950  -2000.
+537700  7680980  -2000.
 537100  7680900  -2000.

Modified: MOAB/trunk/src/FBEngine.cpp
===================================================================
--- MOAB/trunk/src/FBEngine.cpp	2011-04-22 19:29:26 UTC (rev 4772)
+++ MOAB/trunk/src/FBEngine.cpp	2011-04-23 05:04:45 UTC (rev 4773)
@@ -559,12 +559,14 @@
   if (type == 0) {
     rval = getVtxCoord(this_gent, on_x, on_y, on_z);
     MBERRORR(rval, "Failed to get vertex coordinates.");
-  } else if (type == 1) {
-    // just copy over the coordinates
-    // should be modified
+  } else if (_smooth && type == 1) {
     *on_x = near_x;
     *on_y = near_y;
     *on_z = near_z;
+    SmoothCurve * smthcurve = _edges[this_gent];
+    // call the new method from smooth edge
+    smthcurve->move_to_curve( *on_x, *on_y, *on_z);
+
   } else if (type == 2 || type == 3) {
     double point[3] = { near_x, near_y, near_z };
     double point_out[3];
@@ -1077,7 +1079,7 @@
 }
 
 ErrorCode FBEngine::split_surface_with_direction(EntityHandle face, std::vector<double> & xyz,
-    double * direction, EntityHandle & newFace)
+    double * direction, EntityHandle & newFace, int closed)
 {
 
   // first of all, find all intersection points (piercing in the face along the direction)
@@ -1129,7 +1131,7 @@
   // starting from 2 points on 2 triangles, and having the direction, get more intersection points
   // between the plane formed by direction and those 2 points, and edges from triangulation (the triangles
   // involved will be part of the same gentity , original face ( moab set)
-  int closed = 1;// closed = 0 if the polyline is not closed
+  //int closed = 1;// closed = 0 if the polyline is not closed
 
   CartVect Dir(direction);


More information about the moab-dev mailing list