def getElements(node):
    obj = node.GetObject()
    objTriMesh = obj.AsTriObject()
    objMesh = objTriMesh.GetMesh()

    numVerts = objMesh.GetNumVertices()
    numFaces = objMesh.GetNumFaces()

    allElements = []

    faces = MaxPlus.BitArray(numFaces)
    faces.SetAll()
    verts = [[] for i in range(numVerts)]

    for i in range(0, numFaces):
        face = objMesh.GetFace(i)
    for k in range(0, 3):
        verts[face.GetVert(k)].append(i)

    for i in range(0, numFaces):
        if faces[i]:

            element = []
            element.append(i)
            faceBits = MaxPlus.BitArray(numFaces)
            vertBits = MaxPlus.BitArray(numVerts)

            #for j in range(0, len(element)):
            j = 0
            while j < len(element):
                fi = element[j]
                j += 1

            if not faceBits[fi]:
                face = objMesh.GetFace(fi)

            for k in range(0, 3):
                v = face.GetVert(k)

            if vertBits[v]:
                continue

    for singleFace in range(0, len(verts[v])):
        element.append(verts[v][singleFace])
        vertBits.Set(v, True)

        faceBits.Set(fi, True)
        faces.Clear(fi)

        allElements.append(MaxPlus.BitArray(faceBits))

    return allElements
Ejemplo n.º 2
0
 def compare_mesh_vert_pos(self, src, target):
     src_mesh = self.get_mesh_from_node(src)
     target_mesh = self.get_mesh_from_node(target)
     ba_bad_verts = MaxPlus.BitArray()
     ba_bad_verts.SetSize(target_mesh.GetNumVertices())
     print "{0} with {1}".format(target.Name, src.Name)
     for t in xrange(target_mesh.GetNumVertices()):
         distances = []
         for s in xrange(src_mesh.GetNumVertices()):
             _distance = self.distance(target_mesh.GetVertex(t),
                                       src_mesh.GetVertex(s))
             # Check if Distance is lower than Tolerance
             distances.append(_distance < self.tolerance)
         # index of non-existent item in list returns ValueError
         try:
             idx = distances.index(True)
         except ValueError:  # Pos Mismatch / Bad Verts
             ba_bad_verts.Set(t, True)
     return ba_bad_verts