-void GEOM_AssemblyBuilder::MeshShape(const TopoDS_Shape myShape,
- Standard_Real deflection,
- Standard_Boolean forced)
-{
- // Mesh the shape if necessary
- Standard_Boolean alreadymesh = Standard_True;
- TopExp_Explorer ex;
- TopLoc_Location aLoc;
-
- for (ex.Init(myShape, TopAbs_FACE); ex.More(); ex.Next()) {
- const TopoDS_Face& aFace = TopoDS::Face(ex.Current());
- Handle(Poly_Triangulation) aPoly = BRep_Tool::Triangulation(aFace,aLoc);
- if(aPoly.IsNull()) { alreadymesh = Standard_False; break; }
- }
-
- if(!alreadymesh || forced) {
- if(deflection<=0) {
- // Compute default deflection
- Bnd_Box B;
- BRepBndLib::Add(myShape, B);
- Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax;
- B.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax);
- deflection = MAX3( aXmax-aXmin , aYmax-aYmin , aZmax-aZmin) * 0.001 *4;
- }
- BRepMesh_IncrementalMesh MESH(myShape,deflection);
- }
-}
-
-
-