def add_cylinder(self, nodeA, nodeB, radius, cylinder_id): try: idA = tuple(nodeA) # self.gtree.tree_data[cylinder_id]['nodeIdA'] idB = tuple(nodeB) # self.gtree.tree_data[cylinder_id]['nodeIdB'] except: idA = 0 idB = 0 self.use_joints = False # vect = nodeA - nodeB # self.__draw_circle(nodeB, vect, radius) vector = (np.array(nodeA) - np.array(nodeB)).tolist() # mov circles to center of cylinder by size of radius because of joint nodeA = g3.translate(nodeA, vector, -radius * self.endDistMultiplicator) nodeB = g3.translate(nodeB, vector, radius * self.endDistMultiplicator) if all(nodeA == nodeB): logger.error("End points are on same place") ptsA, ptsB = g3.cylinder_circles(nodeA, nodeB, radius, element_number=30) CVlistA = self.__construct_cylinder_end(ptsA, idA) CVlistB = self.__construct_cylinder_end(ptsB, idB) CVlist = CVlistA + CVlistB self.CV.append(CVlist)
def add_cylinder(self, nodeA, nodeB, radius, cylinder_id=None): """ cylinder_id is not needed anymore """ try: idA = tuple(nodeA) # self.gtree.tree_data[cylinder_id]['nodeIdA'] idB = tuple(nodeB) # self.gtree.tree_data[cylinder_id]['nodeIdB'] except: idA = 0 idB = 0 self.use_joints = False if all(nodeA == nodeB): logger.error("End points are on same place") # generate lists of points of two end circles ptsA, ptsB = g3.cylinder_circles(nodeA, nodeB, radius, element_number=30) # gives points unique global id. merges to global list of points. # self.joints[id] == list of lists of ids of cylinder points that # belong to joint idA/idB. CVlistA = self.__construct_cylinder_end(ptsA, idA) CVlistB = self.__construct_cylinder_end(ptsB, idB) CVlist = CVlistA + CVlistB self.CV.append(CVlist)