def hash_edge_lenght_to_face(faces): """ for every edge in the list `faces` loop through the edges of the face associate (hash) the edge lenght to point to the face :note: this approach would blow less if you use a tuple ( length, edge-mid-point ) the TopoDS_Edge entitiy has a HashCode method that might be actually a proper idea :param faces: :return: dict hashing all edge lengths """ _edge_length_to_face = {} _edge_length_to_edge = {} for f in faces: tp = TopologyExplorer(f) for e in tp.edges(): length = round(length_from_edge(e), 3) _edge_length_to_face[length] = f _edge_length_to_edge[length] = e return _edge_length_to_face, _edge_length_to_edge
def build_curve_network(event=None): ''' mimic the curve network surfacing command from rhino ''' print('Importing IGES file...') pth = os.path.dirname(os.path.abspath(__file__)) pth = os.path.abspath( os.path.join(pth, 'models', 'curve_geom_plate.igs')) iges = read_iges_file(pth) print(iges) print('Building geomplate...') topo = TopologyExplorer(iges) edges_list = list(topo.edges()) face = build_geom_plate(edges_list) print('done.') display.EraseAll() display.DisplayShape(edges_list) display.DisplayShape(face) display.FitAll() print('Cutting out of edges...')