Author: janehu Date: 2012-10-03 13:18:24 -0500 (Wed, 03 Oct 2012) New Revision: 5764 Modified: cgm/trunk/geom/OCC/OCCCurve.cpp cgm/trunk/geom/OCC/OCCCurve.hpp cgm/trunk/geom/OCC/OCCQueryEngine.cpp Log: Fixed mcnp2cad/lat4,holes. This is a large test, at some point, the curve's loops failed to update, currently haven't figure out where the failed update takes place. I just added a preventive check, to remove stale pointers before doing actual calls. Passed cgm make check and short mcnp2cad tests. Still testing more. Now there are 40 tests passed and 7 failed. Modified: cgm/trunk/geom/OCC/OCCCurve.cpp =================================================================== --- cgm/trunk/geom/OCC/OCCCurve.cpp 2012-10-02 16:43:17 UTC (rev 5763) +++ cgm/trunk/geom/OCC/OCCCurve.cpp 2012-10-03 18:18:24 UTC (rev 5764) @@ -122,6 +122,28 @@ } } +void OCCCurve::add_loop(OCCLoop* loop) +{ + //before add the loop into the looplist, check to make sure the + //looplist is up-to-date + //It should be done somewhere else, however, in large mcnp2cad test, there's + //no way to check where the code forget to remove the out-dated loop. + for (int i = 0; i < myLoopList.size(); i++) + { + OCCLoop* myLoop = CAST_TO(myLoopList.get(), OCCLoop); + + if(!myLoop) + this->remove_loop(myLoopList.get()); + else if(myLoop->get_TopoDS_Wire() < (void*) 0x1000) + this->remove_loop(myLoop); + else if(myLoop->coedges().size() == 0) + this->remove_loop(myLoop); + myLoopList.step(); + } + if(loop != NULL) + myLoopList.append_unique(loop); +} + void OCCCurve::set_TopoDS_Edge(TopoDS_Edge edge) { if(myTopoDSEdge && edge.IsEqual(*myTopoDSEdge)) @@ -755,6 +777,9 @@ void OCCCurve::get_parents_virt( DLIList<TopologyBridge*>& parents ) { + //check to see all myLoops are up-to-date. + add_loop(NULL); + for(int i = 0; i < myLoopList.size(); i++) { DLIList<OCCCoEdge*> coedges = myLoopList.get_and_step()->coedges(); Modified: cgm/trunk/geom/OCC/OCCCurve.hpp =================================================================== --- cgm/trunk/geom/OCC/OCCCurve.hpp 2012-10-02 16:43:17 UTC (rev 5763) +++ cgm/trunk/geom/OCC/OCCCurve.hpp 2012-10-03 18:18:24 UTC (rev 5764) @@ -49,7 +49,7 @@ void set_myMarked( CubitBoolean marked) {myMarked = marked;}
participants (1)
-
janehu@mcs.anl.gov