Esempio n. 1
0
 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)
Esempio n. 2
0
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
Esempio n. 5
0
class Create_boll_SCcrew(object):
    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

    def Create_Bk(self, filename="SFU01204-4", ss="BKBF10", L=1000):
        pass
        "获取选择零件名称  获取路径"
        # 获取零件名称
        try:
            pass
            new_shape = TopoDS_Shape()
            #filename = "SFU2005-4"
            # 获取相应零件的路径***************************************
            self.partpath = os.getcwd()
            self.partpath = self.partpath + "\\3Ddata" + "\\STP" + "\\" + filename + ".stp"
            self.shape = read_step_file(self.partpath)
            self.shape.Free(True)  # 先释放shape
            # self.new_build.Add(self.aCompound,shape123)#将shaoe添加入复合体
            self.new_build.Add(self.aCompound, self.shape)
            #绘制丝杆**************************************************
            if int(filename[3:6]) == 12 or int(filename[3:6]) == 14 or int(
                    filename[3:6]) == 15:
                ss = "BKBF10"
            elif int(filename[3:6]) == 14 or int(filename[3:6]) == 15 or int(
                    filename[3:6]) == 16 or int(filename[3:6]) == 18:
                pass
                ss = "BKBF12"
            elif int(filename[3:6]) == 18 or int(filename[3:6]) == 20:
                ss = "BKBF15"
            elif int(filename[3:6]) == 20 or int(filename[3:6]) == 25:
                ss = "BKBF17"
            elif int(filename[3:6]) == 25 or int(filename[3:6]) == 28:
                ss = "BKBF20"
            elif int(filename[3:6]) == 32 or int(filename[3:6]) == 36:
                ss = "BKBF25"
            elif int(filename[3:6]) == 36 or int(filename[3:6]) == 40:
                ss = "BKBF30"
            elif int(filename[3:6]) == 40 or int(filename[3:6]) == 45 or int(
                    filename[3:6]) == 50:
                ss = "BKBF35"
            elif int(filename[3:6]) == 50 or int(filename[3:6]) == 55:
                ss = "BKBF40"
            self.BK_serise_dict[ss]["D3"] = int(filename[3:6])  #重新设置丝杆直径

            #print(filename[3:6])
            #PL = (L - 15 - 39 - 10) / 2
            '''
            PL = (L - self.BK_serise_dict[ss]["L1"] - self.BK_serise_dict[ss]["L3"]
                  - self.BK_serise_dict[ss]["L4"]) / 2
            '''
            #Center_point=filename[0:]
            PL = L / 2
            #P1 = [0, 0, PL + 39 + 15]
            P1 = [
                0, 0, PL + self.BK_serise_dict[ss]["L3"] +
                self.BK_serise_dict[ss]["L1"]
            ]
            #P2 = [0, 4, PL + 39 + 15]
            P2 = [
                0, self.BK_serise_dict[ss]["D1"] / 2, PL +
                self.BK_serise_dict[ss]["L3"] + self.BK_serise_dict[ss]["L1"]
            ]
            #P3 = [0, 4, PL + 39]
            P3 = [
                0, self.BK_serise_dict[ss]["D1"] / 2,
                PL + self.BK_serise_dict[ss]["L3"]
            ]
            #P4 = [0, 5, PL + 39]
            P4 = [
                0, self.BK_serise_dict[ss]["D2"] / 2,
                PL + self.BK_serise_dict[ss]["L3"]
            ]
            #P5 = [0, 5, PL]
            P5 = [0, self.BK_serise_dict[ss]["D2"] / 2, PL]
            #P6 = [0, 6, PL]
            P6 = [0, self.BK_serise_dict[ss]["D3"] / 2, PL]
            #P7 = [0, 6, -PL]
            P7 = [0, self.BK_serise_dict[ss]["D3"] / 2, -PL]
            #P8 = [0, 4, -PL]
            P8 = [0, self.BK_serise_dict[ss]["D4"] / 2, -PL]
            #P9 = [0, 4, -PL - 7.9]
            P9 = [
                0, self.BK_serise_dict[ss]["D4"] / 2,
                -PL - self.BK_serise_dict[ss]["L5"]
            ]
            #P10 = [0, 4 - 0.2, -PL - 7.9]
            P10 = [
                0, self.BK_serise_dict[ss]["D5"] / 2,
                -PL - self.BK_serise_dict[ss]["L5"]
            ]
            #P11 = [0, 4 - 0.2, -PL - 7.9 - 0.8]
            P11 = [
                0, self.BK_serise_dict[ss]["D5"] / 2, -PL -
                self.BK_serise_dict[ss]["L5"] - self.BK_serise_dict[ss]["L6"]
            ]
            #P12 = [0, 4, -PL - 7.9 - 0.8]
            P12 = [
                0, self.BK_serise_dict[ss]["D4"] / 2, -PL -
                self.BK_serise_dict[ss]["L5"] - self.BK_serise_dict[ss]["L6"]
            ]
            #P13 = [0, 4, -PL - 10]
            P13 = [
                0, self.BK_serise_dict[ss]["D4"] / 2,
                -PL - self.BK_serise_dict[ss]["L4"]
            ]
            #P14 = [0, 0, -PL - 10]
            P14 = [0, 0, -PL - self.BK_serise_dict[ss]["L4"]]
            E11 = BRepBuilderAPI_MakeEdge(gp_Pnt(P1[0], P1[1], P1[2]),
                                          gp_Pnt(P2[0], P2[1], P2[2])).Edge()
            E12 = BRepBuilderAPI_MakeEdge(gp_Pnt(P2[0], P2[1], P2[2]),
                                          gp_Pnt(P3[0], P3[1], P3[2])).Edge()
            E13 = BRepBuilderAPI_MakeEdge(gp_Pnt(P3[0], P3[1], P3[2]),
                                          gp_Pnt(P4[0], P4[1], P4[2])).Edge()
            E14 = BRepBuilderAPI_MakeEdge(gp_Pnt(P4[0], P4[1], P4[2]),
                                          gp_Pnt(P5[0], P5[1], P5[2])).Edge()
            E15 = BRepBuilderAPI_MakeEdge(gp_Pnt(P5[0], P5[1], P5[2]),
                                          gp_Pnt(P6[0], P6[1], P6[2])).Edge()
            E16 = BRepBuilderAPI_MakeEdge(gp_Pnt(P6[0], P6[1], P6[2]),
                                          gp_Pnt(P7[0], P7[1], P7[2])).Edge()
            E17 = BRepBuilderAPI_MakeEdge(gp_Pnt(P7[0], P7[1], P7[2]),
                                          gp_Pnt(P8[0], P8[1], P8[2])).Edge()
            E18 = BRepBuilderAPI_MakeEdge(gp_Pnt(P8[0], P8[1], P8[2]),
                                          gp_Pnt(P9[0], P9[1], P9[2])).Edge()
            E19 = BRepBuilderAPI_MakeEdge(gp_Pnt(P9[0], P9[1], P9[2]),
                                          gp_Pnt(P10[0], P10[1],
                                                 P10[2])).Edge()
            E20 = BRepBuilderAPI_MakeEdge(gp_Pnt(P10[0], P10[1], P10[2]),
                                          gp_Pnt(P11[0], P11[1],
                                                 P11[2])).Edge()
            E21 = BRepBuilderAPI_MakeEdge(gp_Pnt(P11[0], P11[1], P11[2]),
                                          gp_Pnt(P12[0], P12[1],
                                                 P12[2])).Edge()
            E22 = BRepBuilderAPI_MakeEdge(gp_Pnt(P12[0], P12[1], P12[2]),
                                          gp_Pnt(P13[0], P13[1],
                                                 P13[2])).Edge()
            E23 = BRepBuilderAPI_MakeEdge(gp_Pnt(P13[0], P13[1], P13[2]),
                                          gp_Pnt(P14[0], P14[1],
                                                 P14[2])).Edge()
            E24 = BRepBuilderAPI_MakeEdge(gp_Pnt(P14[0], P14[1], P14[2]),
                                          gp_Pnt(P1[0], P1[1], P1[2])).Edge()

            new_charme = ChFi2d_ChamferAPI()
            new_charme.Init(E11, E12)
            new_charme.Perform()
            E25 = new_charme.Result(E11, E12, self.BK_serise_dict[ss]["C1"],
                                    self.BK_serise_dict[ss]["C1"])  #倒角1

            new_charme.Init(E13, E14)
            new_charme.Perform()
            E26 = new_charme.Result(E13, E14, self.BK_serise_dict[ss]["C2"],
                                    self.BK_serise_dict[ss]["C2"])  #倒角2

            new_charme.Init(E15, E16)
            new_charme.Perform()
            E27 = new_charme.Result(E15, E16, self.BK_serise_dict[ss]["C3"],
                                    self.BK_serise_dict[ss]["C3"])  #倒角3

            new_charme.Init(E16, E17)
            new_charme.Perform()
            E28 = new_charme.Result(E16, E17, self.BK_serise_dict[ss]["C3"],
                                    self.BK_serise_dict[ss]["C3"])  # 倒角4

            new_charme.Init(E22, E23)
            new_charme.Perform()
            E29 = new_charme.Result(E22, E23, self.BK_serise_dict[ss]["C1"],
                                    self.BK_serise_dict[ss]["C1"])  # 倒角5

            #print(type(E11))
            #print(E29.IsNull())

            W1 = BRepBuilderAPI_MakeWire(E11, E25, E12).Wire()
            W2 = BRepBuilderAPI_MakeWire(E13, E26, E14).Wire()
            W3 = BRepBuilderAPI_MakeWire(E15, E27, E16).Wire()
            W4 = BRepBuilderAPI_MakeWire(E16, E28, E17).Wire()
            W5 = BRepBuilderAPI_MakeWire(E18, E19, E20, E21).Wire()
            W6 = BRepBuilderAPI_MakeWire(E22, E29, E23, E24).Wire()
            #print("succeed")

            mkWire = BRepBuilderAPI_MakeWire()
            mkWire.Add(W1)
            mkWire.Add(W2)
            mkWire.Add(W3)
            mkWire.Add(W4)
            mkWire.Add(W5)
            mkWire.Add(W6)
            Rob = BRepPrimAPI_MakeRevol(
                BRepBuilderAPI_MakeFace(mkWire.Wire()).Face(),
                gp_Ax1(gp_Pnt(0, 0, 0), gp_Dir(0, 0, 1))).Shape()
            #倒角-----------------------------
            #MF=BRepFilletAPI_MakeChamfer(Rob)
            #MF.Add()
            #移动
            ls_filename = filename[0:8] + "_4"
            move_distance = 0.5 * L - (
                L - float(self.SFU_serise_dict[ls_filename]["L"])) / 2
            cone = TopoDS_Shape(Rob)
            T = gp_Trsf()
            T.SetTranslation(gp_Vec(0, 0, -move_distance))
            loc = TopLoc_Location(T)
            cone.Location(loc)
            self.new_build.Add(self.aCompound, cone)
            print(type(self.aCompound))
            return self.aCompound

        except:
            return False

    def Create_Ek(self, filename="SFU01204-4", ss="EKEF10", L=100):
        pass
        if int(filename[3:6]) == 6 or int(filename[3:6]) == 8:
            ss = "EKEF06"
        elif int(filename[3:6]) == 10 or int(filename[3:6]) == 12:
            ss = "EKEF08"
        elif int(filename[3:6]) == 12 or int(filename[3:6]) == 14 or int(
                filename[3:6]) == 15:
            ss = "EKEF10"
        elif int(filename[3:6]) == 14 or int(filename[3:6]) == 15 or int(
                filename[3:6]) == 16:
            ss = "EKEF12"
        elif int(filename[3:6]) == 18 or int(filename[3:6]) == 20:
            ss = "EKEF15"
        elif int(filename[3:6]) == 25 or int(filename[3:6]) == 28 or int(
                filename[3:6]) == 32:
            ss = "EKEF20"
        elif int(filename[3:6]) == 32 or int(filename[3:6]) == 36:
            ss = "EKEF25"
        "获取选择零件名称  获取路径"
        # 获取零件名称
        try:
            pass
            new_shape = TopoDS_Shape()
            #filename = "SFU2005-4"
            # 获取相应零件的路径***************************************
            self.partpath = os.getcwd()
            self.partpath = self.partpath + "\\3Ddata" + "\\STP" + "\\" + filename + ".stp"
            self.shape = read_step_file(self.partpath)
            self.shape.Free(True)  # 先释放shape
            # self.new_build.Add(self.aCompound,shape123)#将shaoe添加入复合体
            self.new_build.Add(self.aCompound, self.shape)
            #绘制丝杆**************************************************
            self.EK_serise_dict[ss]["D3"] = int(filename[3:6])  #重新设置丝杆直径
            #print(filename[3:6])
            #PL = (L - 15 - 39 - 10) / 2
            PL = (L - self.EK_serise_dict[ss]["L1"] -
                  self.EK_serise_dict[ss]["L2"] -
                  self.EK_serise_dict[ss]["L4"]) / 2
            #P1 = [0, 0, PL + 39 + 15]
            P1 = [
                0, 0, PL + self.EK_serise_dict[ss]["L3"] +
                self.EK_serise_dict[ss]["L1"]
            ]
            #P2 = [0, 4, PL + 39 + 15]
            P2 = [
                0, self.EK_serise_dict[ss]["D1"] / 2, PL +
                self.EK_serise_dict[ss]["L3"] + self.EK_serise_dict[ss]["L1"]
            ]
            #P3 = [0, 4, PL + 39]
            P3 = [
                0, self.EK_serise_dict[ss]["D1"] / 2,
                PL + self.EK_serise_dict[ss]["L3"]
            ]
            #P4 = [0, 5, PL + 39]
            P4 = [
                0, self.EK_serise_dict[ss]["D2"] / 2,
                PL + self.EK_serise_dict[ss]["L3"]
            ]
            #P5 = [0, 5, PL]
            P5 = [0, self.EK_serise_dict[ss]["D2"] / 2, PL]
            #P6 = [0, 6, PL]
            P6 = [0, self.EK_serise_dict[ss]["D3"] / 2, PL]
            #P7 = [0, 6, -PL]
            P7 = [0, self.EK_serise_dict[ss]["D3"] / 2, -PL]
            #P8 = [0, 4, -PL]
            P8 = [0, self.EK_serise_dict[ss]["D1"] / 2, -PL]
            #P9 = [0, 4, -PL - 7.9]
            P9 = [
                0, self.EK_serise_dict[ss]["D1"] / 2,
                -PL - self.EK_serise_dict[ss]["L5"]
            ]
            #P10 = [0, 4 - 0.2, -PL - 7.9]
            P10 = [
                0, self.EK_serise_dict[ss]["D5"] / 2,
                -PL - self.EK_serise_dict[ss]["L5"]
            ]
            #P11 = [0, 4 - 0.2, -PL - 7.9 - 0.8]
            P11 = [
                0, self.EK_serise_dict[ss]["D5"] / 2, -PL -
                self.EK_serise_dict[ss]["L5"] - self.EK_serise_dict[ss]["L6"]
            ]
            #P12 = [0, 4, -PL - 7.9 - 0.8]
            P12 = [
                0, self.EK_serise_dict[ss]["D1"] / 2, -PL -
                self.EK_serise_dict[ss]["L5"] - self.EK_serise_dict[ss]["L6"]
            ]
            #P13 = [0, 4, -PL - 10]
            P13 = [
                0, self.EK_serise_dict[ss]["D1"] / 2,
                -PL - self.EK_serise_dict[ss]["L4"]
            ]
            #P14 = [0, 0, -PL - 10]
            P14 = [0, 0, -PL - self.EK_serise_dict[ss]["L4"]]
            E11 = BRepBuilderAPI_MakeEdge(gp_Pnt(P1[0], P1[1], P1[2]),
                                          gp_Pnt(P2[0], P2[1], P2[2])).Edge()
            E12 = BRepBuilderAPI_MakeEdge(gp_Pnt(P2[0], P2[1], P2[2]),
                                          gp_Pnt(P3[0], P3[1], P3[2])).Edge()
            E13 = BRepBuilderAPI_MakeEdge(gp_Pnt(P3[0], P3[1], P3[2]),
                                          gp_Pnt(P4[0], P4[1], P4[2])).Edge()
            E14 = BRepBuilderAPI_MakeEdge(gp_Pnt(P4[0], P4[1], P4[2]),
                                          gp_Pnt(P5[0], P5[1], P5[2])).Edge()
            E15 = BRepBuilderAPI_MakeEdge(gp_Pnt(P5[0], P5[1], P5[2]),
                                          gp_Pnt(P6[0], P6[1], P6[2])).Edge()
            E16 = BRepBuilderAPI_MakeEdge(gp_Pnt(P6[0], P6[1], P6[2]),
                                          gp_Pnt(P7[0], P7[1], P7[2])).Edge()
            E17 = BRepBuilderAPI_MakeEdge(gp_Pnt(P7[0], P7[1], P7[2]),
                                          gp_Pnt(P8[0], P8[1], P8[2])).Edge()
            E18 = BRepBuilderAPI_MakeEdge(gp_Pnt(P8[0], P8[1], P8[2]),
                                          gp_Pnt(P9[0], P9[1], P9[2])).Edge()
            E19 = BRepBuilderAPI_MakeEdge(gp_Pnt(P9[0], P9[1], P9[2]),
                                          gp_Pnt(P10[0], P10[1],
                                                 P10[2])).Edge()
            E20 = BRepBuilderAPI_MakeEdge(gp_Pnt(P10[0], P10[1], P10[2]),
                                          gp_Pnt(P11[0], P11[1],
                                                 P11[2])).Edge()
            E21 = BRepBuilderAPI_MakeEdge(gp_Pnt(P11[0], P11[1], P11[2]),
                                          gp_Pnt(P12[0], P12[1],
                                                 P12[2])).Edge()
            E22 = BRepBuilderAPI_MakeEdge(gp_Pnt(P12[0], P12[1], P12[2]),
                                          gp_Pnt(P13[0], P13[1],
                                                 P13[2])).Edge()
            E23 = BRepBuilderAPI_MakeEdge(gp_Pnt(P13[0], P13[1], P13[2]),
                                          gp_Pnt(P14[0], P14[1],
                                                 P14[2])).Edge()
            E24 = BRepBuilderAPI_MakeEdge(gp_Pnt(P14[0], P14[1], P14[2]),
                                          gp_Pnt(P1[0], P1[1], P1[2])).Edge()

            new_charme = ChFi2d_ChamferAPI()
            new_charme.Init(E11, E12)
            new_charme.Perform()
            E25 = new_charme.Result(E11, E12, self.EK_serise_dict[ss]["C1"],
                                    self.EK_serise_dict[ss]["C1"])  #倒角1

            new_charme.Init(E13, E14)
            new_charme.Perform()
            E26 = new_charme.Result(E13, E14, self.EK_serise_dict[ss]["C2"],
                                    self.EK_serise_dict[ss]["C2"])  #倒角2

            new_charme.Init(E15, E16)
            new_charme.Perform()
            E27 = new_charme.Result(E15, E16, self.EK_serise_dict[ss]["C3"],
                                    self.EK_serise_dict[ss]["C3"])  #倒角3

            new_charme.Init(E16, E17)
            new_charme.Perform()
            E28 = new_charme.Result(E16, E17, self.EK_serise_dict[ss]["C3"],
                                    self.EK_serise_dict[ss]["C3"])  # 倒角4

            new_charme.Init(E22, E23)
            new_charme.Perform()
            E29 = new_charme.Result(E22, E23, self.EK_serise_dict[ss]["C1"],
                                    self.EK_serise_dict[ss]["C1"])  # 倒角5

            #print(type(E11))
            #print(E29.IsNull())

            W1 = BRepBuilderAPI_MakeWire(E11, E25, E12).Wire()
            W2 = BRepBuilderAPI_MakeWire(E13, E26, E14).Wire()
            W3 = BRepBuilderAPI_MakeWire(E15, E27, E16).Wire()
            W4 = BRepBuilderAPI_MakeWire(E16, E28, E17).Wire()
            W5 = BRepBuilderAPI_MakeWire(E18, E19, E20, E21).Wire()
            W6 = BRepBuilderAPI_MakeWire(E22, E29, E23, E24).Wire()
            #print("succeed")

            mkWire = BRepBuilderAPI_MakeWire()
            mkWire.Add(W1)
            mkWire.Add(W2)
            mkWire.Add(W3)
            mkWire.Add(W4)
            mkWire.Add(W5)
            mkWire.Add(W6)
            Rob = BRepPrimAPI_MakeRevol(
                BRepBuilderAPI_MakeFace(mkWire.Wire()).Face(),
                gp_Ax1(gp_Pnt(0, 0, 0), gp_Dir(0, 0, 1))).Shape()
            #倒角-----------------------------
            #MF=BRepFilletAPI_MakeChamfer(Rob)
            #MF.Add()
            # 移动
            ls_filename = filename[0:8] + "_4"
            move_distance = 0.5 * L - (
                L - float(self.SFU_serise_dict[ls_filename]["L"])) / 2
            cone = TopoDS_Shape(Rob)
            T = gp_Trsf()
            T.SetTranslation(gp_Vec(0, 0, -move_distance))
            loc = TopLoc_Location(T)
            cone.Location(loc)
            self.new_build.Add(self.aCompound, cone)
            print(type(self.aCompound))
            return self.aCompound

        except:
            return False

    def Create_Fk(self, filename="SFU01204-4", ss="FKFF8", L=100):
        pass
        if int(filename[3:6]) == 10 or int(filename[3:6]) == 12:
            ss = "FKFF08"
        if int(filename[3:6]) == 12 or int(filename[3:6]) == 14 or int(
                filename[3:6]) == 15:
            ss = "FKFF10"
        if int(filename[3:6]) == 14 or int(filename[3:6]) == 15 or int(
                filename[3:6]) == 16:
            ss = "FKFF12"
        if int(filename[3:6]) == 18 or int(filename[3:6]) == 20:
            ss = "FKFF15"
        if int(filename[3:6]) == 25 or int(filename[3:6]) == 28:
            ss = "FKFF20"
        if int(filename[3:6]) == 32 or int(filename[3:6]) == 36:
            ss = "FKFF25"
        if int(filename[3:6]) == 40 or int(filename[3:6]) == 50:
            ss = "FKFF30"
        "获取选择零件名称  获取路径"
        # 获取零件名称
        try:
            pass
            new_shape = TopoDS_Shape()
            #filename = "SFU2005-4"
            # 获取相应零件的路径***************************************
            self.partpath = os.getcwd()
            self.partpath = self.partpath + "\\3Ddata" + "\\STP" + "\\" + filename + ".stp"
            self.shape = read_step_file(self.partpath)
            self.shape.Free(True)  # 先释放shape
            # self.new_build.Add(self.aCompound,shape123)#将shaoe添加入复合体
            self.new_build.Add(self.aCompound, self.shape)
            #绘制丝杆**************************************************
            self.BK_serise_dict[ss]["D3"] = int(filename[3:6])  #重新设置丝杆直径
            #print(filename[3:6])
            #PL = (L - 15 - 39 - 10) / 2
            PL = (L - self.BK_serise_dict[ss]["L1"] -
                  self.BK_serise_dict[ss]["L2"] -
                  self.BK_serise_dict[ss]["L4"]) / 2
            #P1 = [0, 0, PL + 39 + 15]
            P1 = [
                0, 0, PL + self.BK_serise_dict[ss]["L3"] +
                self.BK_serise_dict[ss]["L1"]
            ]
            #P2 = [0, 4, PL + 39 + 15]
            P2 = [
                0, self.BK_serise_dict[ss]["D1"] / 2, PL +
                self.BK_serise_dict[ss]["L3"] + self.BK_serise_dict[ss]["L1"]
            ]
            #P3 = [0, 4, PL + 39]
            P3 = [
                0, self.BK_serise_dict[ss]["D1"] / 2,
                PL + self.BK_serise_dict[ss]["L3"]
            ]
            #P4 = [0, 5, PL + 39]
            P4 = [
                0, self.BK_serise_dict[ss]["D2"] / 2,
                PL + self.BK_serise_dict[ss]["L3"]
            ]
            #P5 = [0, 5, PL]
            P5 = [0, self.BK_serise_dict[ss]["D2"] / 2, PL]
            #P6 = [0, 6, PL]
            P6 = [0, self.BK_serise_dict[ss]["D3"] / 2, PL]
            #P7 = [0, 6, -PL]
            P7 = [0, self.BK_serise_dict[ss]["D3"] / 2, -PL]
            #P8 = [0, 4, -PL]
            P8 = [0, self.BK_serise_dict[ss]["D1"] / 2, -PL]
            #P9 = [0, 4, -PL - 7.9]
            P9 = [
                0, self.BK_serise_dict[ss]["D1"] / 2,
                -PL - self.BK_serise_dict[ss]["L5"]
            ]
            #P10 = [0, 4 - 0.2, -PL - 7.9]
            P10 = [
                0, self.BK_serise_dict[ss]["D5"] / 2,
                -PL - self.BK_serise_dict[ss]["L5"]
            ]
            #P11 = [0, 4 - 0.2, -PL - 7.9 - 0.8]
            P11 = [
                0, self.BK_serise_dict[ss]["D5"] / 2, -PL -
                self.BK_serise_dict[ss]["L5"] - self.BK_serise_dict[ss]["L6"]
            ]
            #P12 = [0, 4, -PL - 7.9 - 0.8]
            P12 = [
                0, self.BK_serise_dict[ss]["D1"] / 2, -PL -
                self.BK_serise_dict[ss]["L5"] - self.BK_serise_dict[ss]["L6"]
            ]
            #P13 = [0, 4, -PL - 10]
            P13 = [
                0, self.BK_serise_dict[ss]["D1"] / 2,
                -PL - self.BK_serise_dict[ss]["L4"]
            ]
            #P14 = [0, 0, -PL - 10]
            P14 = [0, 0, -PL - self.BK_serise_dict[ss]["L4"]]
            E11 = BRepBuilderAPI_MakeEdge(gp_Pnt(P1[0], P1[1], P1[2]),
                                          gp_Pnt(P2[0], P2[1], P2[2])).Edge()
            E12 = BRepBuilderAPI_MakeEdge(gp_Pnt(P2[0], P2[1], P2[2]),
                                          gp_Pnt(P3[0], P3[1], P3[2])).Edge()
            E13 = BRepBuilderAPI_MakeEdge(gp_Pnt(P3[0], P3[1], P3[2]),
                                          gp_Pnt(P4[0], P4[1], P4[2])).Edge()
            E14 = BRepBuilderAPI_MakeEdge(gp_Pnt(P4[0], P4[1], P4[2]),
                                          gp_Pnt(P5[0], P5[1], P5[2])).Edge()
            E15 = BRepBuilderAPI_MakeEdge(gp_Pnt(P5[0], P5[1], P5[2]),
                                          gp_Pnt(P6[0], P6[1], P6[2])).Edge()
            E16 = BRepBuilderAPI_MakeEdge(gp_Pnt(P6[0], P6[1], P6[2]),
                                          gp_Pnt(P7[0], P7[1], P7[2])).Edge()
            E17 = BRepBuilderAPI_MakeEdge(gp_Pnt(P7[0], P7[1], P7[2]),
                                          gp_Pnt(P8[0], P8[1], P8[2])).Edge()
            E18 = BRepBuilderAPI_MakeEdge(gp_Pnt(P8[0], P8[1], P8[2]),
                                          gp_Pnt(P9[0], P9[1], P9[2])).Edge()
            E19 = BRepBuilderAPI_MakeEdge(gp_Pnt(P9[0], P9[1], P9[2]),
                                          gp_Pnt(P10[0], P10[1],
                                                 P10[2])).Edge()
            E20 = BRepBuilderAPI_MakeEdge(gp_Pnt(P10[0], P10[1], P10[2]),
                                          gp_Pnt(P11[0], P11[1],
                                                 P11[2])).Edge()
            E21 = BRepBuilderAPI_MakeEdge(gp_Pnt(P11[0], P11[1], P11[2]),
                                          gp_Pnt(P12[0], P12[1],
                                                 P12[2])).Edge()
            E22 = BRepBuilderAPI_MakeEdge(gp_Pnt(P12[0], P12[1], P12[2]),
                                          gp_Pnt(P13[0], P13[1],
                                                 P13[2])).Edge()
            E23 = BRepBuilderAPI_MakeEdge(gp_Pnt(P13[0], P13[1], P13[2]),
                                          gp_Pnt(P14[0], P14[1],
                                                 P14[2])).Edge()
            E24 = BRepBuilderAPI_MakeEdge(gp_Pnt(P14[0], P14[1], P14[2]),
                                          gp_Pnt(P1[0], P1[1], P1[2])).Edge()

            new_charme = ChFi2d_ChamferAPI()
            new_charme.Init(E11, E12)
            new_charme.Perform()
            E25 = new_charme.Result(E11, E12, 1.0, 1.0)  #倒角1

            new_charme.Init(E13, E14)
            new_charme.Perform()
            E26 = new_charme.Result(E13, E14, 0.5, 0.5)  #倒角2

            new_charme.Init(E15, E16)
            new_charme.Perform()
            E27 = new_charme.Result(E15, E16, 0.5, 0.5)  #倒角3

            new_charme.Init(E16, E17)
            new_charme.Perform()
            E28 = new_charme.Result(E16, E17, 0.5, 0.5)  # 倒角4

            new_charme.Init(E22, E23)
            new_charme.Perform()
            E29 = new_charme.Result(E22, E23, 0.5, 0.5)  # 倒角5

            #print(type(E11))
            #print(E29.IsNull())

            W1 = BRepBuilderAPI_MakeWire(E11, E25, E12).Wire()
            W2 = BRepBuilderAPI_MakeWire(E13, E26, E14).Wire()
            W3 = BRepBuilderAPI_MakeWire(E15, E27, E16).Wire()
            W4 = BRepBuilderAPI_MakeWire(E16, E28, E17).Wire()
            W5 = BRepBuilderAPI_MakeWire(E18, E19, E20, E21).Wire()
            W6 = BRepBuilderAPI_MakeWire(E22, E29, E23, E24).Wire()
            #print("succeed")

            mkWire = BRepBuilderAPI_MakeWire()
            mkWire.Add(W1)
            mkWire.Add(W2)
            mkWire.Add(W3)
            mkWire.Add(W4)
            mkWire.Add(W5)
            mkWire.Add(W6)
            Rob = BRepPrimAPI_MakeRevol(
                BRepBuilderAPI_MakeFace(mkWire.Wire()).Face(),
                gp_Ax1(gp_Pnt(0, 0, 0), gp_Dir(0, 0, 1))).Shape()
            #倒角-----------------------------
            #MF=BRepFilletAPI_MakeChamfer(Rob)
            #MF.Add()
            # 移动
            ls_filename = filename[0:8] + "_4"
            move_distance = 0.5 * L - (
                L - float(self.SFU_serise_dict[ls_filename]["L"])) / 2
            cone = TopoDS_Shape(Rob)
            T = gp_Trsf()
            T.SetTranslation(gp_Vec(0, 0, -move_distance))
            loc = TopLoc_Location(T)
            cone.Location(loc)
            self.new_build.Add(self.aCompound, cone)
            print(type(self.aCompound))
            return self.aCompound

        except:
            return False