def write_stl_file(compound, filename, tolerance=None, angular_tolerance=None): # Remove previous mesh data BRepTools.Clean_s(compound) mesh = BRepMesh_IncrementalMesh(compound, tolerance, True, angular_tolerance) mesh.Perform() writer = StlAPI_Writer() result = writer.Write(compound, filename) # Remove the mesh data again BRepTools.Clean_s(compound) return result
def _fromTopoDS( cls: Type["BoundBox"], shape: TopoDS_Shape, tol: Optional[float] = None, optimal: bool = True, ): """ Constructs a bounding box from a TopoDS_Shape """ tol = TOL if tol is None else tol # tol = TOL (by default) bbox = Bnd_Box() if optimal: BRepBndLib.AddOptimal_s( shape, bbox ) # this is 'exact' but expensive - not yet wrapped by PythonOCC else: mesh = BRepMesh_IncrementalMesh(shape, tol, True) mesh.Perform() # this is adds +margin but is faster BRepBndLib.Add_s(shape, bbox, True) return cls(bbox)