Author: janehu Date: 2008-12-10 18:55:42 -0600 (Wed, 10 Dec 2008) New Revision: 2480 Modified: cgm/trunk/geom/OCC/OCCLoop.cpp cgm/trunk/geom/OCC/OCCQueryEngine.cpp Log: Trying to fix r_w test for 32-bit build. Modified: cgm/trunk/geom/OCC/OCCLoop.cpp =================================================================== --- cgm/trunk/geom/OCC/OCCLoop.cpp 2008-12-10 17:19:19 UTC (rev 2479) +++ cgm/trunk/geom/OCC/OCCLoop.cpp 2008-12-11 00:55:42 UTC (rev 2480) @@ -67,7 +67,18 @@ void OCCLoop::set_TopoDS_Wire(TopoDS_Wire loop) { + if(loop.IsEqual(*myTopoDSWire)) + return; TopoDS_Wire* the_wire = new TopoDS_Wire(loop); + DLIList<OCCCoEdge *> coedges = this->coedges(); + for(int i = 0; i < coedges.size(); i++) + { + OCCCoEdge *coedge = coedges.get_and_step(); + Curve* curve = coedge->curve(); + CAST_TO(curve, OCCCurve)->remove_loop(this); + this->remove_coedge(coedge); + delete coedge; + } if(myTopoDSWire) delete myTopoDSWire; myTopoDSWire = the_wire; Modified: cgm/trunk/geom/OCC/OCCQueryEngine.cpp =================================================================== --- cgm/trunk/geom/OCC/OCCQueryEngine.cpp 2008-12-10 17:19:19 UTC (rev 2479) +++ cgm/trunk/geom/OCC/OCCQueryEngine.cpp 2008-12-11 00:55:42 UTC (rev 2480) @@ -1210,6 +1210,8 @@ BodySM* OCCQueryEngine::populate_topology_bridge(const TopoDS_CompSolid& aShape) { + if(aShape.IsNull()) + return (BodySM*)NULL; OCCBody *body; if (!OCCMap->IsBound(aShape)) { @@ -1245,6 +1247,8 @@ Lump* OCCQueryEngine::populate_topology_bridge(const TopoDS_Solid& aShape, CubitBoolean build_body) { + if(aShape.IsNull()) + return (Lump*)NULL; //one OCCBody corresponds one OCCLump OCCLump *lump; OCCBody *body; @@ -1289,6 +1293,8 @@ OCCShell* OCCQueryEngine::populate_topology_bridge(const TopoDS_Shell& aShape, CubitBoolean standalone) { + if(aShape.IsNull()) + return (OCCShell*)NULL; OCCShell *shell ; CubitBoolean build_body = CUBIT_FALSE; DLIList<OCCCoFace*> cofaces_old, cofaces_new; @@ -1369,6 +1375,8 @@ Surface* OCCQueryEngine::populate_topology_bridge(const TopoDS_Face& aShape, CubitBoolean build_body) { + if(aShape.IsNull()) + return (Surface*)NULL; OCCSurface *surface = NULL; GProp_GProps myProps; BRepGProp::SurfaceProperties(aShape, myProps); @@ -1423,6 +1431,8 @@ OCCLoop* OCCQueryEngine::populate_topology_bridge(const TopoDS_Wire& aShape, CubitBoolean standalone) { + if(aShape.IsNull()) + return (OCCLoop*)NULL; OCCLoop *loop ; if (!OCCMap->IsBound(aShape)) { @@ -1479,21 +1489,21 @@ //search through the curve loops for(int i = 0; i < loops.size() ; i++) { - OCCLoop* loop = loops.get_and_step(); - if (!OCCMap->IsBound(*loop->get_TopoDS_Wire())) + OCCLoop* occ_loop = loops.get_and_step(); + if (!OCCMap->IsBound(*occ_loop->get_TopoDS_Wire())) { - DLIList<OCCCoEdge*> coedge_list = loop->coedges(); + DLIList<OCCCoEdge*> coedge_list = occ_loop->coedges(); for(int j = 0; j < coedge_list.size(); j++) { OCCCoEdge * test_coedge = coedge_list.get_and_step(); if (test_coedge->curve() == curve) { - loop->remove_coedge(test_coedge); - occ_curve->remove_loop(loop); + occ_loop->remove_coedge(test_coedge); + occ_curve->remove_loop(occ_loop); delete test_coedge; } } - delete loop; + delete occ_loop; } } //for the cylinder side face, there are 4 coedges, 2 of them are seam @@ -1509,6 +1519,8 @@ break; } } + + assert(occ_curve->loops().size() <2); coedge = new OCCCoEdge( curve, loop, sense); coedges_new.append(coedge); occ_curve->add_loop(loop); @@ -1532,6 +1544,8 @@ Curve* OCCQueryEngine::populate_topology_bridge(const TopoDS_Edge& aShape) { + if(aShape.IsNull()) + return (Curve*)NULL; Curve *curve; GProp_GProps myProps; BRepGProp::LinearProperties(aShape, myProps); @@ -1567,6 +1581,8 @@ Point* OCCQueryEngine::populate_topology_bridge(const TopoDS_Vertex& aShape) { + if(aShape.IsNull()) + return (Point*)NULL; OCCPoint *point; if (iTotalTBCreated == 0 || !OCCMap->IsBound(aShape)) {
participants (1)
-
janehu@mcs.anl.gov