예제 #1
0
def getVTX(self):
    self.idx1, self.idx2 = self.selected_edges
    self.edge1 = cm.coords_tuple_from_edge_idx(self.bm, self.idx1)
    self.edge2 = cm.coords_tuple_from_edge_idx(self.bm, self.idx2)
    self.point = cm.get_intersection(self.edge1, self.edge2)
    self.edges = cm.find_intersecting_edges(
        self.bm, self.point, self.idx1, self.idx2)
예제 #2
0
def getVTX(self):
    self.idx1, self.idx2 = self.selected_edges
    self.edge1 = cm.coords_tuple_from_edge_idx(self.bm, self.idx1)
    self.edge2 = cm.coords_tuple_from_edge_idx(self.bm, self.idx2)
    self.point = cm.get_intersection(self.edge1, self.edge2)
    self.edges = cm.find_intersecting_edges(
        self.bm, self.point, self.idx1, self.idx2)
예제 #3
0
def add_or_remove_new_edge(self, idx):
    '''
        - only add idx if not edge_prime
        - and not currently present in selected_edges
    '''
    p_idx = self.edge_prime_idx

    if idx == p_idx:
        print(idx, 'is edge prime, not adding')
        return

    if (idx in self.selected_edges):
        self.selected_edges.remove(idx)
        del self.xvectors[idx]
    else:
        edge_prime = cm.coords_tuple_from_edge_idx(self.bm, p_idx)
        edge2 = cm.coords_tuple_from_edge_idx(self.bm, idx)
        p = cm.get_intersection(edge_prime, edge2)

        if not cm.point_on_edge(p, edge_prime):
            return

        vert_idx_closest = cm.closest_idx(p, self.bm.edges[idx])
        self.xvectors[idx] = [p, vert_idx_closest]
        self.selected_edges.append(idx)
예제 #4
0
    def do_single_draw_pass(self):

        # draw edge prime
        c = cm.coords_tuple_from_edge_idx(self.bm, self.edge_prime_idx)
        draw_edge(c, "prime", 3)

        # draw extender edges and projections.
        if len(self.selected_edges) > 0:

            # get and draw selected valid edges
            coords_ext = get_extender_coords(self)
            draw_edge(coords_ext, "extend", 3)

            # get and draw extenders only
            coords_proj = get_projection_coords(self)
            draw_edge(coords_proj, "projection", 3)

        restore_bgl_defaults()
예제 #5
0
def get_extender_coords(self):
    coords = []
    for idx in self.selected_edges:
        c = cm.coords_tuple_from_edge_idx(self.bm, idx)
        coords.extend(c)
    return coords