def get_intersecting_lines(self,coord,bm):
scene = bpy.context.scene
vertex_vec_new = self.limit_cursor_by_bounds(bpy.context,coord)
if scene.coa_surface_snap:
coord, point_type, bm_ob = self.snap_to_edge_or_vert(vertex_vec_new)
else:
coord, point_type, bm_ob = [None,None,None]
intersection_points = []
if self.selected_vert_coord != None and coord != None:
obj = bpy.context.active_object
e1 = [self.selected_vert_coord.xz,coord.xz]
for edge in bm.edges:
if not edge.hide:# and (edge.is_wire or edge.is_boundary):
e2 = [(obj.matrix_world * edge.verts[0].co).xz , (obj.matrix_world * edge.verts[1].co).xz ]
ip = geometry.intersect_line_line_2d(e1[0],e1[1],e2[0],e2[1])
if ip != None:
ip = Vector((ip[0],self.selected_vert_coord[1],ip[1]))
if (ip - self.selected_vert_coord).magnitude > 0.001 and (ip - coord).magnitude > 0.001:
#ip, point_type, bm_ob = self.snap_to_edge_or_vert(ip) ### snap intersection points
intersection_points.append(ip)
intersection_points.sort(key=lambda x: (self.selected_vert_coord - x).magnitude)
return intersection_points
评论列表
文章目录