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 test_default_constructor_DEFINE_STANDARD_ALLOC(self): ''' OCE classes the defines standard alllocator can be instanciated if they're not abstract nor define any protected or private constructor ''' BRep_Builder() TopoDS_Builder() ShapeAnalysis_Curve()
def solid_comp(solidList): aRes = TopoDS_CompSolid() builder = TopoDS_Builder() builder.MakeCompSolid(aRes) # transfer shapes and write file for shp in solidList: builder.Add(aRes, shp) return aRes
def test_default_constructor_DEFINE_STANDARD_ALLOC(self) -> None: ''' OCE classes the defines standard alllocator can be instantiated if they're not abstract nor define any protected or private constructor ''' b = BRep_Builder() self.assertIsInstance(b, BRep_Builder) t = TopoDS_Builder() self.assertIsInstance(t, TopoDS_Builder) s = ShapeAnalysis_Curve() self.assertIsInstance(s, ShapeAnalysis_Curve)
def testTopoDS_byref_arguments(self): ''' Test byref pass arguments to TopoDS ''' cyl1 = BRepPrimAPI_MakeCylinder(10., 10.).Shape() cyl2 = BRepPrimAPI_MakeCylinder(100., 50.).Shape() c = TopoDS_Compound() bb = TopoDS_Builder() bb.MakeCompound(c) for child in [cyl1, cyl2]: bb.Add(c, child)
def compound(topo): ''' accumulate a bunch of TopoDS_* in list `topo` to a TopoDS_Compound @param topo: list of TopoDS_* instances ''' bd = TopoDS_Builder() comp = TopoDS_Compound() bd.MakeCompound(comp) for i in topo: bd.Add(comp, i) return comp
def test_TopoDS_byref_arguments(self) -> None: ''' Test byref pass arguments to TopoDS ''' cyl1 = BRepPrimAPI_MakeCylinder(10., 10.).Shape() cyl2 = BRepPrimAPI_MakeCylinder(100., 50.).Shape() c = TopoDS_Compound() self.assertTrue(c.IsNull()) bb = TopoDS_Builder() bb.MakeCompound(c) for child in [cyl1, cyl2]: bb.Add(c, child) self.assertFalse(c.IsNull())
def voxel_to_TopoDS(model, voxel_length, voxel_width, voxel_height): (position_x, position_y, position_z) = np.where(model.data) voxel = TopoDS_Compound() counter = TopoDS_Builder() counter.MakeCompound(voxel) for i in range(position_x.size): voxel1 = TopoDS_Shape( BRepPrimAPI_MakeBox(voxel_length, voxel_width, voxel_height).Shape()) transmat = gp_Trsf() x, y, z = position_x[i] * voxel_length, position_y[ i] * voxel_width, position_z[i] * voxel_height transmat.SetTranslation(gp_Vec(float(x), float(y), float(z))) location = TopLoc_Location(transmat) voxel1.Location(location) counter.Add(voxel, voxel1) return voxel
def test_protected_constructor(self): """ Test: protected constructor """ # 1st, class with no subclass tds_builder = TopoDS_Builder() self.assertTrue(hasattr(tds_builder, "MakeCompound"))
def testProtectedConstructor(self): """ Test: protected constructor """ # 1st, class with no subclass from OCC.Core.TopoDS import TopoDS_Builder tds_builder = TopoDS_Builder() self.assertTrue(hasattr(tds_builder, "MakeCompound"))
def __init__(self): #初始化参数 pass #螺母参数初始化--------------------------- self.SFU01204_4_dict = { "d": 12, "I": 4, "Da": 2.500, "D": 24, "A": 40, "B": 10, "L": 40, "W": 32, "H": 30, "X": 4.5, "Q": "-", "N": "1x4", "Ca": 902, "Coa": 1884, "kgf/um": 26 } # self.SFU01604_4_dict = { "d": 16, "I": 4, "Da": 2.381, "D": 28, "A": 48, "B": 10, "L": 40, "W": 38, "H": 40, "X": 5.5, "Q": "M6", "N": "1x4", "Ca": 973, "Coa": 2406, "kgf/um": 32 } # self.SFU01605_4_dict = { "d": 16, "I": 5, "Da": 3.175, "D": 28, "A": 48, "B": 10, "L": 50, "W": 38, "H": 40, "X": 5.5, "Q": "M6", "N": "1x4", "Ca": 1380, "Coa": 3052, "kgf/um": 32 } # self.SFU01610_4_dict = { "d": 16, "I": 10, "Da": 3.175, "D": 28, "A": 48, "B": 10, "L": 57, "W": 38, "H": 40, "X": 5.5, "Q": "M6", "N": "1x3", "Ca": 1103, "Coa": 2401, "kgf/um": 26 } # self.SFU02004_4_dict = { "d": 20, "I": 4, "Da": 2.381, "D": 36, "A": 58, "B": 10, "L": 42, "W": 47, "H": 44, "X": 6.6, "Q": "M6", "N": "1x4", "Ca": 1066, "Coa": 2987, "kgf/um": 38 } self.SFU02005_4_dict = { "d": 20, "I": 5, "Da": 3.175, "D": 36, "A": 58, "B": 10, "L": 51, "W": 47, "H": 44, "X": 6.6, "Q": "M6", "N": "1x4", "Ca": 1551, "Coa": 3875, "kgf/um": 39 } self.SFU02504_4_dict = { "d": 25, "I": 4, "Da": 2.381, "D": 40, "A": 62, "B": 10, "L": 42, "W": 51, "H": 48, "X": 6.6, "Q": "M6", "N": "1x4", "Ca": 1180, "Coa": 3795, "kgf/um": 43 } self.SFU02505_4_dict = { "d": 25, "I": 5, "Da": 3.175, "D": 40, "A": 62, "B": 10, "L": 51, "W": 51, "H": 48, "X": 6.6, "Q": "M6", "N": "1x4", "Ca": 1724, "Coa": 4904, "kgf/um": 45 } self.SFU02506_4_dict = { "d": 25, "I": 6, "Da": 3.969, "D": 40, "A": 62, "B": 10, "L": 54, "W": 51, "H": 48, "X": 6.6, "Q": "M6", "N": "1x4", "Ca": 2318, "Coa": 6057, "kgf/um": 47 } self.SFU02508_4_dict = { "d": 25, "I": 8, "Da": 4.762, "D": 40, "A": 62, "B": 10, "L": 63, "W": 51, "H": 48, "X": 6.6, "Q": "M6", "N": "1x4", "Ca": 2963, "Coa": 7313, "kgf/um": 49 } self.SFU02510_4_dict = { "d": 25, "I": 10, "Da": 4.762, "D": 40, "A": 62, "B": 12, "L": 85, "W": 51, "H": 48, "X": 6.6, "Q": "M6", "N": "1x4", "Ca": 2954, "Coa": 7295, "kgf/um": 50 } self.SFU03204_4_dict = { "d": 32, "I": 4, "Da": 2.381, "D": 50, "A": 80, "B": 12, "L": 44, "W": 65, "H": 62, "X": 9.0, "Q": "M6", "N": "1x4", "Ca": 1296, "Coa": 4838, "kgf/um": 51 } self.SFU03205_4_dict = { "d": 32, "I": 5, "Da": 2.381, "D": 50, "A": 80, "B": 12, "L": 52, "W": 65, "H": 62, "X": 9.0, "Q": "M6", "N": "1x4", "Ca": 1922, "Coa": 6343, "kgf/um": 54 } self.SFU03206_4_dict = { "d": 32, "I": 6, "Da": 3.969, "D": 50, "A": 80, "B": 12, "L": 57, "W": 65, "H": 62, "X": 9.0, "Q": "M6", "N": "1x4", "Ca": 2632, "Coa": 7979, "kgf/um": 57 } self.SFU03208_4_dict = { "d": 32, "I": 8, "Da": 3.969, "D": 50, "A": 80, "B": 12, "L": 65, "W": 65, "H": 62, "X": 9.0, "Q": "M6", "N": "1x4", "Ca": 3387, "Coa": 9622, "kgf/um": 60 } self.SFU03210_4_dict = { "d": 32, "I": 10, "Da": 3.969, "D": 50, "A": 80, "B": 12, "L": 90, "W": 65, "H": 62, "X": 9.0, "Q": "M6", "N": "1x4", "Ca": 4805, "Coa": 12208, "kgf/um": 61 } self.SFU04005_4_dict = { "d": 40, "I": 5, "Da": 3.175, "D": 63, "A": 93, "B": 14, "L": 55, "W": 78, "H": 70, "X": 9.0, "Q": "M6", "N": "1x4", "Ca": 2110, "Coa": 7988, "kgf/um": 63 } self.SFU04006_4_dict = { "d": 40, "I": 6, "Da": 3.969, "D": 63, "A": 93, "B": 14, "L": 60, "W": 78, "H": 70, "X": 9.0, "Q": "M6", "N": "1x4", "Ca": 2873, "Coa": 9913, "kgf/um": 66 } self.SFU04008_4_dict = { "d": 40, "I": 8, "Da": 4.762, "D": 63, "A": 93, "B": 14, "L": 67, "W": 78, "H": 70, "X": 9.0, "Q": "M6", "N": "1x4", "Ca": 3712, "Coa": 11947, "kgf/um": 70 } self.SFU04010_4_dict = { "d": 40, "I": 10, "Da": 6.325, "D": 63, "A": 93, "B": 14, "L": 93, "W": 78, "H": 70, "X": 9.0, "Q": "M6", "N": "1x4", "Ca": 5399, "Coa": 15500, "kgf/um": 73 } self.SFU05010_4_dict = { "d": 50, "I": 10, "Da": 6.325, "D": 75, "A": 110, "B": 16, "L": 93, "W": 93, "H": 85, "X": 11, "Q": "M6", "N": "1x4", "Ca": 6004, "Coa": 19614, "kgf/um": 85 } self.SFU05020_4_dict = { "d": 50, "I": 20, "Da": 7.144, "D": 75, "A": 110, "B": 16, "L": 138, "W": 93, "H": 85, "X": 11, "Q": "M6", "N": "1x4", "Ca": 7142, "Coa": 22588, "kgf/um": 94 } self.SFU06310_4_dict = { "d": 63, "I": 10, "Da": 6.325, "D": 90, "A": 125, "B": 18, "L": 98, "W": 108, "H": 95, "X": 11, "Q": "M6", "N": "1x4", "Ca": 6719, "Coa": 25358, "kgf/um": 99 } self.SFU06320_4_dict = { "d": 63, "I": 10, "Da": 9.525, "D": 95, "A": 135, "B": 20, "L": 149, "W": 115, "H": 100, "X": 13.5, "Q": "M6", "N": "1x4", "Ca": 11444, "Coa": 36653, "kgf/um": 112 } self.SFU08010_4_dict = { "d": 80, "I": 10, "Da": 6.325, "D": 95, "A": 105, "B": 20, "L": 98, "W": 125, "H": 110, "X": 13.5, "Q": "M6", "N": "1x4", "Ca": 7346, "Coa": 31953, "kgf/um": 109 } self.SFU08020_4_dict = { "d": 80, "I": 20, "Da": 9.525, "D": 125, "A": 165, "B": 25, "L": 154, "W": 145, "H": 130, "X": 13.5, "Q": "M6", "N": "1x4", "Ca": 12911, "Coa": 47747, "kgf/um": 138 } self.SFU10020_4_dict = { "d": 100, "I": 20, "Da": 9.525, "D": 125, "A": 150, "B": 30, "L": 180, "W": 170, "H": 155, "X": 13.5, "Q": "M6", "N": "1x4", "Ca": 14303, "Coa": 60698, "kgf/um": 162 } self.SFU_serise_dict = { "SFU01204_4": self.SFU01204_4_dict, "SFU01604_4": self.SFU01604_4_dict, "SFU01605_4": self.SFU01605_4_dict, "SFU01610_4": self.SFU01610_4_dict, "SFU02004_4": self.SFU02004_4_dict, "SFU02005_4": self.SFU02005_4_dict, "SFU02505_4": self.SFU02505_4_dict, "SFU02506_4": self.SFU02506_4_dict, "SFU02508_4": self.SFU02508_4_dict, "SFU02510_4": self.SFU02510_4_dict, "SFU03204_4": self.SFU03204_4_dict, "SFU03205_4": self.SFU03205_4_dict, "SFU03206_4": self.SFU03206_4_dict, "SFU03208_4": self.SFU03208_4_dict, "SFU03210_4": self.SFU03210_4_dict, "SFU04005_4": self.SFU04005_4_dict, "SFU04006_4": self.SFU04006_4_dict, "SFU04008_4": self.SFU04008_4_dict, "SFU04010_4": self.SFU04010_4_dict, "SFU05010_4": self.SFU05010_4_dict, "SFU05020_4": self.SFU05020_4_dict, "SFU06310_4": self.SFU06310_4_dict, "SFU06320_4": self.SFU06320_4_dict, "SFU08010_4": self.SFU08010_4_dict, "SFU08020_4": self.SFU08020_4_dict, "SFU10020_4": self.SFU10020_4_dict } #丝杆参数初始化---------------------------------- #-------------BKBF系列-------------------------- self.BK_10_dict = { "D1": 8., "D2": 10., "D3": 12, "D4": 8, "D5": 7.0, "L1": 15, "L2": 16, "L3": 39, "L4": 10, "L5": 7.9, "L6": 0.9, "C1": 0.5, "C2": 0.5, "C3": 0.5 } # ok self.BK_12_dict = { "D1": 10., "D2": 12., "D3": 16, "D4": 10, "D5": 9.6, "L1": 15, "L2": 14, "L3": 39, "L4": 11, "L5": 9.15, "L6": 1.15, "C1": 0.5, "C2": 0.5, "C3": 0.5 } #ok self.BK_15_dict = { "D1": 12., "D2": 15., "D3": 20, "D4": 15, "D5": 14.3, "L1": 20, "L2": 12, "L3": 40, "L4": 13, "L5": 10.15, "L6": 1.15, "C1": 0.5, "C2": 0.5, "C3": 0.5 } #ok self.BK_17_dict = { "D1": 15., "D2": 17., "D3": 20, "D4": 17, "D5": 16.2, "L1": 23, "L2": 17, "L3": 53, "L4": 16, "L5": 13.15, "L6": 1.15, "C1": 0.5, "C2": 0.5, "C3": 0.5 } #ok self.BK_20_dict = { "D1": 17., "D2": 20., "D3": 25, "D4": 20, "D5": 16.2, "L1": 25, "L2": 15, "L3": 53, "L4": 16, "L5": 13.35, "L6": 1.35, "C1": 0.5, "C2": 0.5, "C3": 0.5 } #ok self.BK_25_dict = { "D1": 20., "D2": 25., "D3": 30, "D4": 25, "D5": 23.9, "L1": 30, "L2": 18, "L3": 65, "L4": 20, "L5": 16.35, "L6": 1.35, "C1": 0.5, "C2": 0.5, "C3": 0.5 } # ok self.BK_30_dict = { "D1": 25., "D2": 30., "D3": 35, "D4": 30, "D5": 28.6, "L1": 38, "L2": 25, "L3": 72, "L4": 21, "L5": 17.75, "L6": 1.75, "C1": 0.5, "C2": 0.7, "C3": 1.0 } #ok self.BK_35_dict = { "D1": 30., "D2": 35., "D3": 40, "D4": 35, "D5": 33, "L1": 45, "L2": 28, "L3": 83, "L4": 22, "L5": 18.75, "L6": 1.75, "C1": 0.5, "C2": 1.0, "C3": 1.0 } # ok self.BK_40_dict = { "D1": 35., "D2": 40., "D3": 50, "D4": 40, "D5": 38, "L1": 50, "L2": 35, "L3": 98, "L4": 23, "L5": 19.95, "L6": 1.95, "C1": 0.5, "C2": 1.0, "C3": 1.0 } #ok self.BK_serise_dict = { "BKBF10": self.BK_10_dict, "BKBF12": self.BK_12_dict, "BKBF15": self.BK_15_dict, "BKBF17": self.BK_17_dict, "BKBF20": self.BK_20_dict, "BKBF25": self.BK_25_dict, "BKBF30": self.BK_30_dict, "BKBF35": self.BK_35_dict, "BKBF40": self.BK_40_dict } # -------------EKEF系列-------------------------- self.EK_06_dict = { "D1": 8., "D2": 6., "D3": 6, "D4": 6, "D5": 5.7, "L1": 8, "L2": 10, "L3": 30, "L4": 9, "L5": 6.8, "L6": 0.8, "C1": 0.3, "C2": 0.3, "C3": 0.3 } # ok self.EK_08_dict = { "D1": 6., "D2": 8., "D3": 10, "D4": 6, "D5": 5.7, "L1": 9, "L2": 10, "L3": 35, "L4": 9, "L5": 6.8, "L6": 0.8, "C1": 0.3, "C2": 0.3, "C3": 0.3 } # ok self.EK_10_dict = { "D1": 8., "D2": 10., "D3": 12, "D4": 8, "D5": 7.6, "L1": 15, "L2": 11, "L3": 36, "L4": 10, "L5": 7.9, "L6": 0.9, "C1": 0.5, "C2": 0.5, "C3": 0.5 } # ok self.EK_12_dict = { "D1": 10., "D2": 12., "D3": 15, "D4": 10, "D5": 9.6, "L1": 15, "L2": 11, "L3": 36, "L4": 11, "L5": 9.15, "L6": 1.15, "C1": 0.5, "C2": 0.5, "C3": 0.5 } # ok self.EK_15_dict = { "D1": 12., "D2": 15., "D3": 18, "D4": 15, "D5": 14.3, "L1": 20, "L2": 11, "L3": 49, "L4": 13, "L5": 10.15, "L6": 1.15, "C1": 0.5, "C2": 0.5, "C3": 0.5 } # ok self.EK_20_dict = { "D1": 17., "D2": 20., "D3": 25, "D4": 20, "D5": 19, "L1": 25, "L2": 17, "L3": 64, "L4": 19, "L5": 15.35, "L6": 1.35, "C1": 0.5, "C2": 0.5, "C3": 0.5 } # ok self.EK_25_dict = { "D1": 20., "D2": 25., "D3": 32, "D4": 25, "D5": 23.9, "L1": 30, "L2": 18, "L3": 65, "L4": 20, "L5": 16.35, "L6": 1.35, "C1": 0.5, "C2": 0.7, "C3": 0.1 } # ok self.EK_serise_dict = { "EKEF06": self.EK_06_dict, "EKEF08": self.EK_08_dict, "EKEF10": self.EK_10_dict, "EKEF12": self.EK_12_dict, "EKEF15": self.EK_15_dict, "EKEF20": self.EK_20_dict, "EKEF25": self.EK_25_dict } # -------------FKFF系列-------------------------- self.FK_08_dict = { "D1": 6., "D2": 8., "D3": 10, "D4": 6, "D5": 5.7, "L1": 9, "L2": 15, "L3": 25, "L4": 9, "L5": 6.8, "L6": 0.8, "C1": 0.5, "C2": 0.5, "C3": 0.5 } # ok self.FK_10_dict = { "D1": 8., "D2": 10., "D3": 12, "D4": 8, "D5": 5.6, "L1": 15, "L2": 11, "L3": 36, "L4": 10, "L5": 7.9, "L6": 0.9, "C1": 0.5, "C2": 0.5, "C3": 0.5 } # ok self.FK_12_dict = { "D1": 10., "D2": 12., "D3": 15, "D4": 10, "D5": 9.6, "L1": 15, "L2": 11, "L3": 36, "L4": 11, "L5": 9.15, "L6": 1.15, "C1": 0.5, "C2": 0.5, "C3": 0.5 } # ok self.FK_15_dict = { "D1": 12., "D2": 15., "D3": 18, "D4": 15, "D5": 14.3, "L1": 20, "L2": 13, "L3": 36, "L4": 13, "L5": 10.15, "L6": 1.15, "C1": 0.5, "C2": 0.5, "C3": 0.5 } # ok self.FK_20_dict = { "D1": 17., "D2": 20., "D3": 25, "D4": 20, "D5": 19, "L1": 25, "L2": 17, "L3": 64, "L4": 19, "L5": 15.75, "L6": 1.35, "C1": 0.5, "C2": 0.5, "C3": 0.5 } # ok self.FK_25_dict = { "D1": 20., "D2": 25., "D3": 32, "D4": 25, "D5": 23.9, "L1": 30, "L2": 20, "L3": 76, "L4": 20, "L5": 16.35, "L6": 1.35, "C1": 0.5, "C2": 0.5, "C3": 0.5 } # ok self.FK_30_dict = { "D1": 25., "D2": 30., "D3": 40, "D4": 30, "D5": 28.6, "L1": 38, "L2": 25, "L3": 72, "L4": 21, "L5": 17.75, "L6": 1.75, "C1": 0.5, "C2": 0.5, "C3": 0.5 } # ok self.FK_serise_dict = { "FKFF08": self.FK_08_dict, "FKFF10": self.FK_10_dict, "FKFF15": self.FK_15_dict, "FKFF20": self.FK_20_dict, "FKFF25": self.FK_25_dict, "FKFF30": self.FK_30_dict } #复合体初始化--------------------------------- self.shape = TopoDS_Shape() self.new_build = TopoDS_Builder() # 建立一个TopoDS_Builder() self.aCompound = TopoDS_Compound() # 定义一个复合体 self.new_build.MakeCompound(self.aCompound) # 生成一个复合体DopoDS_shape