Ejemplo n.º 1
0
 def _bounding_box(self, obj, tol=1e-5):
     bbox = Bnd_Box()
     if self.optimal:
         BRepTools.Clean_s(obj)
         BRepBndLib.AddOptimal_s(obj, bbox)
     else:
         BRepBndLib.Add_s(obj, bbox)
     values = bbox.Get()
     return (values[0], values[3], values[1], values[4], values[2], values[5])
Ejemplo n.º 2
0
 def _bounding_box(self, obj, tol=1e-6):
     bbox = Bnd_Box()
     if self.optimal:
         BRepTools.Clean_s(obj)
         BRepBndLib.AddOptimal_s(obj, bbox)
     else:
         BRepBndLib.Add_s(obj, bbox)
     if not bbox.IsVoid():
         values = bbox.Get()
         return (values[0], values[3], values[1], values[4], values[2],
                 values[5])
     else:
         c = self._center_of_mass(obj)
         bb = (c[0] - tol, c[0] + tol, c[1] - tol, c[1] + tol, c[2] - tol,
               c[2] + tol)
         print("\nVoid Bounding Box", bb)
         return bb
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
 def _bounding_box(self, obj, tol=1e-5):
     bbox = Bnd_Box()
     BRepBndLib.AddOptimal_s(obj, bbox)
     values = bbox.Get()
     return (values[0], values[3], values[1], values[4], values[2],
             values[5])