def get_vertices(shape, length): bt = BRep.BRep_Tool() t = Topo(shape) vertices = t.vertices() vert = [] for vertex in vertices: vert.append([ correctLengt(bt.Pnt(vertex).Coord()[0], length, None), correctLengt(bt.Pnt(vertex).Coord()[1], length, None), correctLengt(bt.Pnt(vertex).Coord()[2], length, None) ]) return vert
def corners(house): d = {} iface = -1 topo = Topo(house['volume']) house['boundaries'] = {'walls': [], 'windows': [], 'heats': []} house['faces'] = [] for f in topo.wires(): iface += 1 key = 'face' + str(iface) print 'new_face' edges = [] d[key] = [] topof = Topo(f) for e in topof.edges(): vts = Topo(e) print 'edge' edge = [] for i, v in enumerate(vts.vertices()): brt = BRep_Tool() pnt = brt.Pnt(topods_Vertex(v)) edge.append([pnt.X(), pnt.Y(), pnt.Z()]) edges.append(edge) print len(edges) first_edge = edges.pop(0) point_array = [first_edge[0], first_edge[1]] print 'edges :' for e in edges: print e print '-------' while len(edges) > 0: for i, e in enumerate(edges): if point_array[-1] in e: ed = edges.pop(i) print point_array[-1] if ed[0] == point_array[-1]: point_array.append(ed[1]) elif ed[1] == point_array[-1]: point_array.append(ed[0]) break d[key] = point_array house['faces'].append(point_array) return d
faces_ax[faces_ax.keys()[0]].Shape(), False) #section.SetFuzzyValue(1.e-18) section.ComputePCurveOn1(True) section.ComputePCurveOn2(True) section.Approximation(True) section.Build() #dumpTopology(section.Shape()) display.DisplayColoredShape(section.Shape(), 'GREEN') all_points = [] all_edges = [] for edg in Topo(section.Shape()).edges(): brt = BRep_Tool() print '--- edge -----' edge_points = [] tpedg = Topo(edg) for v in tpedg.vertices(): pnt = brt.Pnt(topods_Vertex(v)) edge_points.append(Point([pnt.X(), pnt.Y(), pnt.Z()])) display.DisplayColoredShape(pnt, 'GREEN') all_points.append(edge_points) if len(all_points) != 0: pol = segments_to_polyline(all_points) all_edges = polyline3d_to_edges(pol) for edg in all_edges: face_explorer = TopExp_Explorer(faces1[f].Shape(), TopAbs_FACE) while False: #face_explorer.More(): try: TopOpeBRepTool_CurveTool_MakePCurveOnFace( edg, topods_Face(face_explorer.Current())) print 'done'