Example #1
0
 def __init__(self, faces=None, vertices=None, **kwargs):
     """
     SuperClass for Revitinterface option
     """
     RevitInterface.__init__(self, **kwargs)
     Trimesh.__init__(self, vertices=vertices, faces=faces)
     self._reps = {}
     self._facet_centroids = None
     self._convex_comps = None
     self._current_rep = 'mesh'
     self._axis = []
Example #2
0
 def __init__(self, faces=None, vertices=None, **kwargs):
     """
     Arbitrary thing assumed to be a line-based geometry
     """
     CadInterface.__init__(self, **kwargs)
     Trimesh.__init__(self, vertices=vertices, faces=faces)
     self._reps = {}
     self._facet_centroids = None
     self._current_rep = 'mesh'
     self._convex_comps = None
     # axis is two facet_box indices
     self._axis = []
Example #3
0
    def __init__(self, vertices=None, mesh=None, debug=False, **kwargs):
        if mesh is None and vertices is not None:
            mesh = Trimesh(vertices=vertices).convex_hull.bounding_box_oriented

        Trimesh.__init__(self, vertices=mesh.vertices, faces=mesh.faces)
        vert_face = self.vertices[self.faces[self.facets]]

        # facet centroids np.shape([6, 3])
        self._facet_centers = vert_face.reshape(self.facets.shape[0], -1,
                                                3).mean(axis=1)

        fct_norm = self.facets_normal
        mn1, mn2 = np.where(
            np.isclose(spatial.distance.cdist(fct_norm, -fct_norm), 0.))

        # pairs of axis points of obb : [ 3, 2]
        self._pairs = np.unique([sorted(v) for v in zip(mn1, mn2)], axis=0)
        lines = []
        for n1, n2 in zip(self.axes_vertices[:, 0, :],
                          self.axes_vertices[:, 1, :]):
            lines.append(lib.geo.Line(lib.geo.Point(n1), lib.geo.Point(n2)))
        self._axis_skel = AxisSkeleton(lines)