Exemplo n.º 1
0
 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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
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