r1782 - in cgm/trunk/geom: . OCC facet virtual
Author: janehu Date: 2008-04-28 13:09:47 -0500 (Mon, 28 Apr 2008) New Revision: 1782 Modified: cgm/trunk/geom/Body.cpp cgm/trunk/geom/BodySM.hpp cgm/trunk/geom/GeometryModifyTool.cpp cgm/trunk/geom/GeometryModifyTool.hpp cgm/trunk/geom/OCC/OCCModifyEngine.cpp cgm/trunk/geom/OCC/OCCQueryEngine.cpp cgm/trunk/geom/OCC/OCCSurface.cpp cgm/trunk/geom/facet/FacetBody.hpp cgm/trunk/geom/virtual/CompositeBody.hpp cgm/trunk/geom/virtual/PartitionBody.hpp Log: worked on deleting free edge and vertices, still has some left, investgating. Modified: cgm/trunk/geom/Body.cpp =================================================================== --- cgm/trunk/geom/Body.cpp 2008-04-28 17:27:52 UTC (rev 1781) +++ cgm/trunk/geom/Body.cpp 2008-04-28 18:09:47 UTC (rev 1782) @@ -193,8 +193,19 @@ DLIList<RefVolume*> volumes; ref_volumes(volumes); while (volumes.size()) + { if (!volumes.pop()->is_sheet()) - return CUBIT_FALSE; + { + //OCC sheet body just has one face or shell, not like Acis + BodySM* bodysm = get_body_sm_ptr(); + if (bodysm == NULL) + { + PRINT_ERROR("Body %d is invalid -- no attached BodySM.\n", this->id()); + return CUBIT_FALSE; + } + return bodysm->is_sheet_body(); + } + } return CUBIT_TRUE; } Modified: cgm/trunk/geom/BodySM.hpp =================================================================== --- cgm/trunk/geom/BodySM.hpp 2008-04-28 17:27:52 UTC (rev 1781) +++ cgm/trunk/geom/BodySM.hpp 2008-04-28 18:09:47 UTC (rev 1782) @@ -74,6 +74,7 @@ CubitBox bounding_box(); + virtual CubitBoolean is_sheet_body() = 0; protected: private: Modified: cgm/trunk/geom/GeometryModifyTool.cpp =================================================================== --- cgm/trunk/geom/GeometryModifyTool.cpp 2008-04-28 17:27:52 UTC (rev 1781) +++ cgm/trunk/geom/GeometryModifyTool.cpp 2008-04-28 18:09:47 UTC (rev 1782) @@ -1425,7 +1425,6 @@ // // Creation Date : 03/29/97 //------------------------------------------------------------------------- -/* RefVolume* GeometryModifyTool::make_RefVolume( DLIList<RefFace*>& ref_face_list) const { @@ -1465,13 +1464,14 @@ } // Use the Lump to make a RefVolume + CubitBoolean modified; RefVolume* ref_volume_ptr = - GeometryQueryTool::instance()->make_RefVolume(lump_ptr); + GeometryQueryTool::instance()->make_RefVolume(lump_ptr, modified); // Return the new RefVolume return ref_volume_ptr ; } -*/ + //------------------------------------------------------------------------- // Purpose : This function takes a list of RefVolumes to create a // Body. The underlying representation of the Body is Modified: cgm/trunk/geom/GeometryModifyTool.hpp =================================================================== --- cgm/trunk/geom/GeometryModifyTool.hpp 2008-04-28 17:27:52 UTC (rev 1781) +++ cgm/trunk/geom/GeometryModifyTool.hpp 2008-04-28 18:09:47 UTC (rev 1782) @@ -916,7 +916,7 @@ * made for some reason. */ -// RefVolume* make_RefVolume(DLIList<RefFace*>& ref_face_list) const ; + RefVolume* make_RefVolume(DLIList<RefFace*>& ref_face_list) const ; /**< \return RefVlume* * \return - A pointer to a newly created RefVlume * \arg ref_volume_type Modified: cgm/trunk/geom/OCC/OCCModifyEngine.cpp =================================================================== --- cgm/trunk/geom/OCC/OCCModifyEngine.cpp 2008-04-28 17:27:52 UTC (rev 1781) +++ cgm/trunk/geom/OCC/OCCModifyEngine.cpp 2008-04-28 18:09:47 UTC (rev 1782) @@ -1632,16 +1632,7 @@ else if(fuser.IsDeleted(face)) { TopoDS_Face null_face; - int k = OCCSurface::update_OCC_entity(face, null_face, &fuser); - std::map<int, TopologyBridge*>::iterator it = - OCCQueryEngine::instance()->OccToCGM->find(k); - TopologyBridge* tb = NULL; - if (it != OCCQueryEngine::instance()->OccToCGM->end()) - { - OCCQueryEngine::instance()->OccToCGM->erase(k); - tb = (*it).second; - delete tb; - } + OCCSurface::update_OCC_entity(face, null_face, &fuser); } } } Modified: cgm/trunk/geom/OCC/OCCQueryEngine.cpp =================================================================== --- cgm/trunk/geom/OCC/OCCQueryEngine.cpp 2008-04-28 17:27:52 UTC (rev 1781) +++ cgm/trunk/geom/OCC/OCCQueryEngine.cpp 2008-04-28 18:09:47 UTC (rev 1782) @@ -2447,8 +2447,10 @@ int k = OCCMap->Find(old_shape); assert (k > 0 && k <= iTotalTBCreated); - if (!new_shape.IsNull() && !old_shape.IsSame(new_shape)&& - OCCMap->IsBound(new_shape)) + OCCMap->UnBind(old_shape); + + if ((!new_shape.IsNull() && !old_shape.IsSame(new_shape)&& + OCCMap->IsBound(new_shape))|| new_shape.IsNull()) //already has a TB built on new_shape { //delete the second TB corresponding to old_shape @@ -2462,8 +2464,7 @@ } } - OCCMap->UnBind(old_shape); - if(!new_shape.IsNull()) + else OCCMap->Bind(new_shape, k); return k; } Modified: cgm/trunk/geom/OCC/OCCSurface.cpp =================================================================== --- cgm/trunk/geom/OCC/OCCSurface.cpp 2008-04-28 17:27:52 UTC (rev 1781) +++ cgm/trunk/geom/OCC/OCCSurface.cpp 2008-04-28 18:09:47 UTC (rev 1782) @@ -853,25 +853,12 @@ for(Ex.Init(wire); Ex.More();Ex.Next()) { TopoDS_Edge edge = Ex.Current(); - shape.Nullify(); shapes.Assign(op->Modified(edge)); shape.Nullify(); if (shapes.Extent() > 0) shape = shapes.First(); else if (op->IsDeleted(edge)) - { - int k = OCCQueryEngine::instance()->update_OCC_map(edge, shape); - std::map<int, TopologyBridge*>::iterator it = - OCCQueryEngine::instance()->OccToCGM->find(k); - TopologyBridge* tb = NULL; - if (it != OCCQueryEngine::instance()->OccToCGM->end()) - { - OCCQueryEngine::instance()->OccToCGM->erase(k); - tb = (*it).second; - delete tb; - } - } - + ; else continue; @@ -879,9 +866,9 @@ { shape.Orientation( shape.Orientation()==TopAbs_FORWARD? TopAbs_REVERSED:TopAbs_FORWARD); - OCCQueryEngine::instance()->update_OCC_map(edge, shape); } - + OCCQueryEngine::instance()->update_OCC_map(edge, shape); + //update vertex TopoDS_Vertex vertex = Ex.CurrentVertex(); shapes.Assign(op->Modified(vertex)); @@ -892,18 +879,7 @@ OCCQueryEngine::instance()->update_OCC_map(vertex, shape); } else if(op->IsDeleted(vertex)) - { - int k = OCCQueryEngine::instance()->update_OCC_map(vertex, shape); - std::map<int, TopologyBridge*>::iterator it = - OCCQueryEngine::instance()->OccToCGM->find(k); - TopologyBridge* tb = NULL; - if (it != OCCQueryEngine::instance()->OccToCGM->end()) - { - OCCQueryEngine::instance()->OccToCGM->erase(k); - tb = (*it).second; - delete tb; - } - } + OCCQueryEngine::instance()->update_OCC_map(vertex, shape); } } return CUBIT_SUCCESS; Modified: cgm/trunk/geom/facet/FacetBody.hpp =================================================================== --- cgm/trunk/geom/facet/FacetBody.hpp 2008-04-28 17:27:52 UTC (rev 1781) +++ cgm/trunk/geom/facet/FacetBody.hpp 2008-04-28 18:09:47 UTC (rev 1782) @@ -191,6 +191,7 @@ virtual CubitPointContainment point_containment( const CubitVector& pos ); + virtual CubitBoolean is_sheet_body(){return CUBIT_FALSE;} protected: private: Modified: cgm/trunk/geom/virtual/CompositeBody.hpp =================================================================== --- cgm/trunk/geom/virtual/CompositeBody.hpp 2008-04-28 17:27:52 UTC (rev 1781) +++ cgm/trunk/geom/virtual/CompositeBody.hpp 2008-04-28 18:09:47 UTC (rev 1782) @@ -78,6 +78,7 @@ void combine( CompositeBody* other ); + CubitBoolean is_sheet_body(){return CUBIT_FALSE;} private: CompositeLump* firstLump; Modified: cgm/trunk/geom/virtual/PartitionBody.hpp =================================================================== --- cgm/trunk/geom/virtual/PartitionBody.hpp 2008-04-28 17:27:52 UTC (rev 1781) +++ cgm/trunk/geom/virtual/PartitionBody.hpp 2008-04-28 18:09:47 UTC (rev 1782) @@ -100,7 +100,8 @@ void transform(const CubitTransformMatrix&) {} void get_all_children( DLIList<PartitionEntity*>& list ); - + + virtual CubitBoolean is_sheet_body(){return CUBIT_FALSE;} protected: private:
participants (1)
-
janehu@mcs.anl.gov