def replace(self, mesh): newMesh = Mesh() newNodes = [] for n in mesh.points: normal = n.getNormal() normal.setMag(self.offset) node = Node(n) node.add(normal) newNodes.append(node) for oldFace in mesh.faces: newFace = Face() for node in oldFace.points: newFace.addPoint(newNodes[node.id]) newFace.inverse() newMesh.addFace(newFace) newMesh.addFace(oldFace) if self.closeSides == True: for face in mesh.faces: edges = face.getEdges() for e in edges: if e.f1 == None or e.f2 == None: newMesh.addFace(e.n2, e.n1, newNodes[e.n1.id], newNodes[e.n2.id]) newMesh.constructTopology() return newMesh
def getEdgePt(self, edge): node = Node(edge.getCenter()) dX = edge.n2.x - edge.n1.x dY = edge.n2.y - edge.n1.y dZ = edge.n2.z - edge.n1.z if dZ > dX and dZ > dY: normal = edge.getNormal() normal.mult(self.factorEdge) node.add(normal) return node
def getEdgePt(self,edge): node =Node(edge.getCenter()) dX=abs(edge.n2.x-edge.n1.x) dY=abs(edge.n2.y-edge.n1.y) dZ=abs(edge.n2.z-edge.n1.z) if dX>dY and dX >dZ: normal=edge.getNormal() normal.mult(self.factorEdge) node.add(normal) else: e=PVector(dX,dY,dZ) e.normalize() normal=edge.getNormal() cross = normal.cross(e) cross.mult(self.factorEdge) node.add(cross) return node
def getFacePt(self, face): node = Node(face.getCenterAverage()) normal = face.getNormal() normal.mult(self.factorFace) node.add(normal) return node