def test_read_iges_45_shapes(self): all_shapes = read_iges_file(IGES_45_FACES, return_as_shapes=True, verbosity=True) self.assertEqual(len(all_shapes), 1) topo_explorer = TopologyExplorer(all_shapes[0]) self.assertEqual(topo_explorer.number_of_faces(), 45)
def prop_soild(self, sol=TopoDS_Solid()): self.sol_builder = TopoDS_Builder() sol_exp = TopExp_Explorer(sol, TopAbs_FACE) sol_top = TopologyExplorer(sol) #print(self.cal_vol(sol), self.base_vol) print(sol_top.number_of_faces()) self.face_lst = TopTools_ListOfShape() self.face_cnt = [] self.face_num = 0 self.face_init(sol_exp.Current()) #self.sol_builder.Add(sol, sol_exp.Current()) sol_exp.Next() while sol_exp.More(): face = sol_exp.Current() self.face_expand(face) sol_exp.Next() if self.file == True: stp_file = "./shp/shp_{:04d}.stp".format(self.sol_num) write_step_file(sol, stp_file) stp_file = "./shp/shp_{:04d}_exp.stp".format(self.sol_num) new_shpe = TopoDS_Compound() self.sol_builder.Add(gp_Pnt()) # self.sol_builder.MakeCompSolid(new_shpe) #write_step_file(new_shpe, stp_file) # if self.show == True: # self.display.DisplayShape(self.face_cnt) """self.face_init(face)
def prop_soild(self, sol=TopoDS_Solid()): sol_exp = TopExp_Explorer(sol, TopAbs_FACE) sol_top = TopologyExplorer(sol) print() print(sol, self.cal_vol(sol)) print(sol_top.number_of_faces()) self.face_init(sol_exp.Current()) sol_exp.Next() while sol_exp.More(): face = sol_exp.Current() self.face_expand(face) sol_exp.Next() self.tmp_face_n += 1 """self.face_init(face)
def generate_mesh_framework(compound, shape_maps): def generate_face_framework(face, shape_maps): def generate_wire_framework(wire): wire_framework = [] ex = TopExp_Explorer(wire, TopAbs_EDGE) while ex.More(): edge = ex.Current() edge_info = (wire, edge) wire_framework.append(edge_info) ex.Next() return wire_framework _, wire_map, _ = shape_maps wire_frameworks = [] outer_loop, inner_loops = [], [] ex = TopExp_Explorer(face, TopAbs_WIRE) outer_wire_id = wire_map.FindIndex(shapeanalysis.OuterWire(face)) while ex.More(): wire = ex.Current() wire_id = wire_map.FindIndex(wire) if wire_id == outer_wire_id and INCLUDE_OUTER_WIRES: outer_loop += generate_wire_framework(wire) elif wire_id != outer_wire_id and INCLUDE_INNER_WIRES: inner_loops.append(generate_wire_framework(wire)) else: pass ex.Next() wire_frameworks.append(outer_loop) wire_frameworks += inner_loops return wire_frameworks, face model_framework = [] ex = TopologyExplorer(compound) print('model compound contains', ex.number_of_faces(), 'faces', end='') print(',', ex.number_of_wires(), 'wires', end='') print(',', ex.number_of_edges(), 'edges') cnt = 1 for face in ex.faces(): if SELECTED_MODEL_FACE > 0 and cnt != SELECTED_MODEL_FACE: cnt += 1 continue face_framework = generate_face_framework(face, shape_maps) model_framework.append(face_framework) cnt += 1 return model_framework