Esempio n. 1
0
    def __init__(self, D, B, T, t, s, l, t1, H):
        self.B = B
        self.T = T
        self.D = D
        self.t = t
        self.l = l
        self.s = s
        self.t1 = t1
        self.H = H

        self.Isection1 = ISection(B, T, D, t, 0, 0, 0, H, None)
        self.Isection2 = ISection(B, T, D, t, 0, 0, 0, H, None)
        self.Plate1 = Plate(t1, H, l)
        self.Plate2 = Plate(t1, H, l)
Esempio n. 2
0
    def __init__(self, a, b, t, l, t1, H):
        self.l = l
        self.a = a
        self.b = b
        self.t = t
        self.t1 = t1
        self.H = H

        self.sec_origin = numpy.array([0, 0, 0])
        self.uDir = numpy.array([1.0, 0, 0])
        self.wDir = numpy.array([0.0, 0, 1.0])
        self.vDir = self.wDir * self.uDir
        self.angle1 = Angle(H, a, b, t, 0, 0)
        self.angle2 = Angle(H, b, a, t, 0, 0)
        self.plate1 = Plate(l, H, t1)
Esempio n. 3
0
 def initialiseWelds(self):
     w = self.welds
     p = self.intermittentPlate
     for i in np.arange(self.no_intermitent_connections):
         self.weldsabw.append(FilletWeld(w.h, w.b, w.L))
         self.weldsblw.append(FilletWeld(w.h, w.b, w.L))
         self.weldsabw1.append(FilletWeld(w.h, w.b, w.L))
         self.weldsblw1.append(FilletWeld(w.h, w.b, w.L))
         self.plates.append(Plate(p.L, p.W, p.T))
Esempio n. 4
0
    def __init__(self, D, B, T, t, s, l, t1, H):
        self.B = B
        self.T = T
        self.D = D
        self.t = t
        self.l = l
        self.s = s
        self.t1 = t1
        self.H = H

        self.sec_origin = numpy.array([0, 0, 0])
        self.uDir = numpy.array([1.0, 0, 0])
        self.wDir = numpy.array([0.0, 0, 1.0])

        self.Plate1 = Plate(t1, H, l)
        self.Plate2 = Plate(t1, H, l)
        self.channel1 = Channel(B, T, D, t, 0, 0, H)
        self.channel2 = Channel(B, T, D, t, 0, 0, H)
Esempio n. 5
0
 def initialiseNutBolts(self):
     b = self.bolt
     n = self.nut
     p = self.intermittentPlate
     for i in np.arange(self.row * self.no_intermitent_connections):
         bolt_len_required = float(self.gap)
         b.H = bolt_len_required + 10
         self.bolts.append(Bolt(b.R, b.T, b.H, b.r))
         self.nuts.append(Nut(n.R, n.T, n.H, n.r1))
         self.boltsabv.append(Bolt(b.R, b.T, b.H, b.r))
         self.nutsabv.append(Nut(n.R, n.T, n.H, n.r1))
     for i in np.arange(self.no_intermitent_connections):
         self.plates.append(Plate(p.L, p.W, p.T))
Esempio n. 6
0
    def __init__(self, A, B, t, H, s, s1):
        self.A = A
        self.B = B
        self.H = H
        self.t = t
        self.s = s
        self.B = s + t
        self.s1 = s1
        self.A = s1 + t

        self.sec_origin = numpy.array([0, 0, 0])
        self.uDir = numpy.array([1.0, 0, 0])
        self.wDir = numpy.array([0.0, 0, 1.0])
        self.vDir = self.wDir * self.uDir

        self.plate1 = Plate(self.B, H, t)
        self.plate2 = Plate(t, H, self.A)
        self.plate3 = Plate(self.B, H, t)
        self.plate4 = Plate(t, H, self.A)
Esempio n. 7
0
    def __init__(self, a, b, t, l, t1, l1, H, s, s1):
        self.l = s + 2 * t1
        self.a = a
        self.b = b
        self.t = t
        self.s = s
        self.s1 = s1
        self.t1 = t1
        self.l1 = s1 + 2 * t1 + 2 * t
        self.H = H

        self.sec_origin = numpy.array([0, 0, 0])
        self.uDir = numpy.array([1.0, 0, 0])
        self.wDir = numpy.array([0.0, 0, 1.0])
        self.vDir = self.wDir * self.uDir

        self.angle1 = Angle(H, a, b, t, 0, 0)
        self.angle2 = Angle(H, b, a, t, 0, 0)
        self.angle3 = Angle(H, a, b, t, 0, 0)
        self.angle4 = Angle(H, b, a, t, 0, 0)
        self.plate1 = Plate(self.l, H, t1)
        self.plate2 = Plate(t1, H, self.l1)
        self.plate3 = Plate(self.l, H, t1)
        self.plate4 = Plate(t1, H, self.l1)
Esempio n. 8
0
    from OCC.Core.Quantity import Quantity_NOC_SADDLEBROWN, Quantity_NOC_BLUE1
    from OCC.Core.Graphic3d import Graphic3d_NOT_2D_ALUMINUM
    from utilities import osdag_display_shape
    # from cad.common_logic import CommonDesignLogic

    from OCC.gp import gp_Pnt
    from OCC.Display.SimpleGui import init_display

    display, start_display, add_menu, add_function_to_menu = init_display()

    member_data = 'Star Angles' #'Back to Back Channels'#  #'Channels'  # 'Back to Back Angles' #'Angles' #'
    loc = 'Long Leg'  # 'Short Leg'#
    weld_size = 6
    s = max(15, weld_size)

    intermittentPlate = Plate(L=195, W=80, T=16)
    welds = FilletWeld(h=5, b=5, L=intermittentPlate.W)
    weld_plate_array = IntermittentWelds(member_data, welds, intermittentPlate)

    if member_data == 'Channels' or member_data == 'Back to Back Channels':
        member = Channel(B=75, T=10.2, D=175, t=6, R1=0, R2=0, L=2000)
        plate = GassetPlate(L=560 + 50, H=210, T=16, degree=30)
        plate_intercept = plate.L - s - 50
        inline_weld = FilletWeld(b=weld_size, h=weld_size, L=plate_intercept)
        opline_weld = FilletWeld(b=weld_size, h=weld_size, L=member.D)

        tensionCAD = TensionChannelWeldCAD(member_data, member, plate, inline_weld, opline_weld, weld_plate_array)


    else:
        member = Angle(L=2000.0, A=70.0, B=20.0, T=5.0, R1=0.0, R2=0.0)
Esempio n. 9
0
class IsectionCoverPlate(object):
    def __init__(self, D, B, T, t, s, l, t1, H):
        self.B = B
        self.T = T
        self.D = D
        self.t = t
        self.l = l
        self.s = s
        self.t1 = t1
        self.H = H

        self.Isection1 = ISection(B, T, D, t, 0, 0, 0, H, None)
        self.Isection2 = ISection(B, T, D, t, 0, 0, 0, H, None)
        self.Plate1 = Plate(t1, H, l)
        self.Plate2 = Plate(t1, H, l)

    def place(self, sec_origin, uDir, wDir):
        self.sec_origin = sec_origin
        self.uDir = uDir
        self.wDir = wDir

        origin = numpy.array([-self.s / 2., 0., 0.])
        self.Isection1.place(origin, self.uDir, self.wDir)
        origin1 = numpy.array([self.s / 2., 0., 0.])
        self.Isection2.place(origin1, self.uDir, self.wDir)
        origin2 = numpy.array([0., (self.D + self.t1) / 2, 0.])
        self.Plate1.place(origin2, self.uDir, self.wDir)
        origin3 = numpy.array([0., -(self.D + self.t1) / 2, 0.])
        self.Plate2.place(origin3, self.uDir, self.wDir)
        #self.compute_params()

    def compute_params():
        self.Isection1.compute_params()
        self.Isection2.compute_params()
        self.Plate1.compute_params()
        self.Plate2.compute_params()

    def create_model(self):

        prism1 = self.Isection1.create_model()
        prism2 = self.Isection2.create_model()

        prism3 = self.Plate1.create_model()
        prism4 = self.Plate2.create_model()

        prism = BRepAlgoAPI_Fuse(prism1, prism2).Shape()
        # prism = BRepAlgoAPI_Fuse(prism, prism3).Shape()
        # prism = BRepAlgoAPI_Fuse(prism, prism4).Shape()
        return prism, [prism3, prism4]

    def create_marking(self):
        middel_pnt = []
        line = []
        labels = ["z", "y", "u", "v"]
        offset = self.B + self.s
        uvoffset = offset / numpy.sqrt(2)

        #b = self.B/2+self.s/2
        z_points = [
            numpy.array([-offset, 0., self.H / 2]),
            numpy.array([offset, 0., self.H / 2])
        ]
        line.append(makeEdgesFromPoints(z_points))

        y_points = [
            numpy.array([0, -offset, self.H / 2]),
            numpy.array([0, offset, self.H / 2])
        ]
        line.append(makeEdgesFromPoints(y_points))

        u_points = [
            numpy.array([-uvoffset, uvoffset, self.H / 2]),
            numpy.array([uvoffset, -uvoffset, self.H / 2])
        ]
        line.append(makeEdgesFromPoints(u_points))

        v_points = [
            numpy.array([-uvoffset, -uvoffset, self.H / 2]),
            numpy.array([uvoffset, uvoffset, self.H / 2])
        ]
        line.append(makeEdgesFromPoints(v_points))

        start_pnt = [[-offset, 0, self.H / 2], [0, -offset + 1, self.H / 2],
                     [uvoffset, -uvoffset, self.H / 2],
                     [uvoffset, uvoffset, self.H / 2]]
        end_pnt = [[offset, 0, self.H / 2], [0, offset - 2, self.H / 2],
                   [-uvoffset, uvoffset, self.H / 2],
                   [-uvoffset, -uvoffset, self.H / 2]]

        return line, [start_pnt, end_pnt], labels
Esempio n. 10
0
class StarAngleOpposite(object):
    def __init__(self, a, b, t, l, t1, H):
        self.l = l
        self.a = a
        self.b = b
        self.t = t
        self.t1 = t1
        self.H = H

        self.sec_origin = numpy.array([0, 0, 0])
        self.uDir = numpy.array([1.0, 0, 0])
        self.wDir = numpy.array([0.0, 0, 1.0])
        self.vDir = self.wDir * self.uDir

        self.angle1 = Angle(H, a, b, t, 0, 0)
        self.angle2 = Angle(H, b, a, t, 0, 0)
        self.plate1 = Plate(l, H, t1)

    def place(self, secOrigin, uDir, wDir):
        self.sec_origin = secOrigin
        self.uDir = uDir
        self.wDir = wDir
        origin1 = numpy.array([self.t1 / 2., 0., 0.])
        self.angle1.place(origin1, self.uDir, self.wDir)
        origin2 = numpy.array([0., self.t1 / 2., 0])
        self.angle2.place(origin2, self.uDir, self.wDir)
        origin3 = numpy.array([0., self.a / 2, 0.])
        self.plate1.place(origin3, self.uDir, self.wDir)

    def compute_params(self):
        self.angle1.computeParams()
        self.angle2.computeParams()
        self.angle2.points = self.rotate(self.angle2.points)
        self.plate1.compute_params()

    def create_model(self):
        prism1 = self.angle1.create_model()
        prism2 = self.angle2.create_model()

        prism3 = self.plate1.create_model()

        prism = BRepAlgoAPI_Fuse(prism1, prism2).Shape()
        # prism = BRepAlgoAPI_Fuse(prism, prism3).Shape()
        return prism, [prism3]

    def rotate(self, points):
        rotated_points = []
        rmatrix = numpy.array([[0, -1, 0], [1, 0, 0], [0, 0, 1]])
        for point in points:
            point = numpy.matmul(rmatrix, point)
            rotated_points.append(point)
        return rotated_points

    def create_marking(self):
        middel_pnt = []
        line = []
        labels = ["z", "y", "u", "v"]
        offset = 2 * self.l
        uvoffset = offset / numpy.sqrt(2)

        z_points = [
            numpy.array([-offset, self.t / 2, self.H / 2]),
            numpy.array([offset, self.t / 2, self.H / 2])
        ]
        line.append(makeEdgesFromPoints(z_points))

        y_points = [
            numpy.array([0., -offset + self.t / 2, self.H / 2]),
            numpy.array([0, offset + self.t / 2, self.H / 2])
        ]
        line.append(makeEdgesFromPoints(y_points))

        u_points = [
            numpy.array([-uvoffset, uvoffset + self.t / 2, self.H / 2]),
            numpy.array([uvoffset, -uvoffset + self.t / 2, self.H / 2])
        ]
        line.append(makeEdgesFromPoints(u_points))

        v_points = [
            numpy.array([-uvoffset, -uvoffset + self.t / 2, self.H / 2]),
            numpy.array([uvoffset, uvoffset + self.t / 2, self.H / 2])
        ]
        line.append(makeEdgesFromPoints(v_points))

        start_pnt = [[-offset, self.t / 2, self.H / 2],
                     [0, -offset + self.t / 2 + 1, self.H / 2],
                     [uvoffset, -uvoffset + self.t / 2, self.H / 2],
                     [uvoffset, uvoffset + self.t / 2, self.H / 2]]
        end_pnt = [[offset, self.t / 2, self.H / 2],
                   [0, offset + self.t / 2 - 1, self.H / 2],
                   [-uvoffset, uvoffset + self.t / 2, self.H / 2],
                   [-uvoffset, -uvoffset + self.t / 2, self.H / 2]]

        return line, [start_pnt, end_pnt], labels
Esempio n. 11
0
class CCSpliceCoverPlateWeldedCAD(object):
    def __init__(self, C, column, flangePlate, innerFlangePlate, webPlate,
                 flangePlateWeldL, flangePlateWeldW, innerflangePlateWeldL,
                 innerflangePlateWeldW, webPlateWeldL, webPlateWeldW):

        self.C = C
        self.column = column
        self.flangePlate = flangePlate
        self.innerFlangePlate = innerFlangePlate
        self.webPlate = webPlate
        self.flangePlateWeldL = flangePlateWeldL
        self.flangePlateWeldW = flangePlateWeldW
        self.webPlateWeldL = webPlateWeldL
        self.webPlateWeldW = webPlateWeldW
        self.innerflangePlateWeldL = innerflangePlateWeldL
        self.innerflangePlateWeldW = innerflangePlateWeldW

        self.gap = float(self.C.flange_plate.gap)
        self.flangespace = float(self.C.flangespace)
        self.webspace = float(self.C.webspace)

        self.column1 = copy.deepcopy(self.column)
        self.column2 = copy.deepcopy(self.column)

        self.flangePlate1 = copy.deepcopy(self.flangePlate)
        self.flangePlate2 = copy.deepcopy(self.flangePlate)

        self.innerFlangePlate1 = copy.deepcopy(self.innerFlangePlate)
        self.innerFlangePlate2 = copy.deepcopy(self.innerFlangePlate)
        self.innerFlangePlate3 = copy.deepcopy(self.innerFlangePlate)
        self.innerFlangePlate4 = copy.deepcopy(self.innerFlangePlate)

        self.webPlate1 = copy.deepcopy(self.webPlate)
        self.webPlate2 = copy.deepcopy(self.webPlate)

        # nuber top to bottom
        self.flangePlateWeldL11 = copy.deepcopy(self.flangePlateWeldL)
        self.flangePlateWeldL12 = copy.deepcopy(self.flangePlateWeldL)
        self.flangePlateWeldL21 = copy.deepcopy(self.flangePlateWeldL)
        self.flangePlateWeldL22 = copy.deepcopy(self.flangePlateWeldL)

        self.flangePlateWeldW11 = copy.deepcopy(self.flangePlateWeldW)
        self.flangePlateWeldW12 = copy.deepcopy(self.flangePlateWeldW)
        self.flangePlateWeldW21 = copy.deepcopy(self.flangePlateWeldW)
        self.flangePlateWeldW22 = copy.deepcopy(self.flangePlateWeldW)

        # Todo: update numbering
        self.webPlateWeldL11 = copy.deepcopy(self.webPlateWeldL)
        self.webPlateWeldL12 = copy.deepcopy(self.webPlateWeldL)
        self.webPlateWeldL21 = copy.deepcopy(self.webPlateWeldL)
        self.webPlateWeldL22 = copy.deepcopy(self.webPlateWeldL)

        self.webPlateWeldW11 = copy.deepcopy(self.webPlateWeldW)
        self.webPlateWeldW12 = copy.deepcopy(self.webPlateWeldW)
        self.webPlateWeldW21 = copy.deepcopy(self.webPlateWeldW)
        self.webPlateWeldW22 = copy.deepcopy(self.webPlateWeldW)

        # numbering is clock wise starting from right side top plate
        self.innerflangePlateWeldL11 = copy.deepcopy(
            self.innerflangePlateWeldL)
        self.innerflangePlateWeldL12 = copy.deepcopy(
            self.innerflangePlateWeldL)
        self.innerflangePlateWeldL21 = copy.deepcopy(
            self.innerflangePlateWeldL)
        self.innerflangePlateWeldL22 = copy.deepcopy(
            self.innerflangePlateWeldL)
        self.innerflangePlateWeldL31 = copy.deepcopy(
            self.innerflangePlateWeldL)
        self.innerflangePlateWeldL32 = copy.deepcopy(
            self.innerflangePlateWeldL)
        self.innerflangePlateWeldL41 = copy.deepcopy(
            self.innerflangePlateWeldL)
        self.innerflangePlateWeldL42 = copy.deepcopy(
            self.innerflangePlateWeldL)

        self.innerflangePlateWeldW11 = copy.deepcopy(
            self.innerflangePlateWeldW)
        self.innerflangePlateWeldW12 = copy.deepcopy(
            self.innerflangePlateWeldW)
        self.innerflangePlateWeldW21 = copy.deepcopy(
            self.innerflangePlateWeldW)
        self.innerflangePlateWeldW22 = copy.deepcopy(
            self.innerflangePlateWeldW)
        self.innerflangePlateWeldW31 = copy.deepcopy(
            self.innerflangePlateWeldW)
        self.innerflangePlateWeldW32 = copy.deepcopy(
            self.innerflangePlateWeldW)
        self.innerflangePlateWeldW41 = copy.deepcopy(
            self.innerflangePlateWeldW)
        self.innerflangePlateWeldW42 = copy.deepcopy(
            self.innerflangePlateWeldW)

        self.weldCutPlate = Plate(L=self.column.D + 4 * self.flangePlate.T,
                                  W=self.column.B + 2 * self.flangePlate.T,
                                  T=self.gap)

    def create_3DModel(self):
        '''
        :return:  CAD model of each of the followings. Debugging each command below would give give clear picture
        '''

        self.createColumnGeometry()
        self.createPlateGeometry()
        self.createWeldedGeometry()

    def createColumnGeometry(self):
        """

        :return: Geometric Orientation of this component
        """
        column1Origin = numpy.array([0.0, 0.0, self.gap / 2])
        column1_uDir = numpy.array([1.0, 0.0, 0.0])
        column1_wDir = numpy.array([0.0, 0.0, 1.0])
        self.column1.place(column1Origin, column1_uDir, column1_wDir)

        self.column1Model = self.column1.create_model()

        column2Origin = numpy.array([0.0, 0.0, -self.gap / 2])
        column2_uDir = numpy.array([1.0, 0.0, 0.0])
        column2_wDir = numpy.array([0.0, 0.0, -1.0])
        self.column2.place(column2Origin, column2_uDir, column2_wDir)

        self.column2Model = self.column2.create_model()

    def createPlateGeometry(self):
        flangePlate1Origin = numpy.array([
            -self.flangePlate.W / 2, (self.column.D + self.flangePlate.T) / 2,
            0.0
        ])
        flangePlate1_uDir = numpy.array([0.0, 1.0, 0.0])
        flangePlate1_wDir = numpy.array([1.0, 0.0, 0.0])
        self.flangePlate1.place(flangePlate1Origin, flangePlate1_uDir,
                                flangePlate1_wDir)

        self.flangePlate1Model = self.flangePlate1.create_model()

        flangePlate2Origin = numpy.array([
            -self.flangePlate.W / 2, -(self.column.D + self.flangePlate.T) / 2,
            0.0
        ])
        flangePlate2_uDir = numpy.array([0.0, 1.0, 0.0])
        flangePlate2_wDir = numpy.array([1.0, 0.0, 0.0])
        self.flangePlate2.place(flangePlate2Origin, flangePlate2_uDir,
                                flangePlate2_wDir)

        self.flangePlate2Model = self.flangePlate2.create_model()

        webPlate1Origin = numpy.array([(self.column.t + self.webPlate.T) / 2,
                                       -self.webPlate.W / 2, 0.0])
        webPlate1_uDir = numpy.array([1.0, 0.0, 0.0])
        webPlate1_wDir = numpy.array([0.0, 1.0, 0.0])
        self.webPlate1.place(webPlate1Origin, webPlate1_uDir, webPlate1_wDir)

        self.webPlate1Model = self.webPlate1.create_model()

        webPlate2Origin = numpy.array([
            -(self.column.t + self.webPlate.T) / 2, -self.webPlate.W / 2, 0.0
        ])
        webPlate2_uDir = numpy.array([1.0, 0.0, 0.0])
        webPlate2_wDir = numpy.array([0.0, 1.0, 0.0])
        self.webPlate2.place(webPlate2Origin, webPlate2_uDir, webPlate2_wDir)

        self.webPlate2Model = self.webPlate2.create_model()

        if self.C.preference != 'Outside':
            innerFlangePlatespacing = self.flangespace + self.column.t / 2 + self.column.R1
            innerFlangePlate1Origin = numpy.array([
                innerFlangePlatespacing,
                (self.column.D - self.innerFlangePlate.T) / 2 - self.column.T,
                0.0
            ])
            innerFlangePlate1_uDir = numpy.array([0.0, 1.0, 0.0])
            innerFlangePlate1_wDir = numpy.array([1.0, 0.0, 0.0])
            self.innerFlangePlate1.place(innerFlangePlate1Origin,
                                         innerFlangePlate1_uDir,
                                         innerFlangePlate1_wDir)

            self.innerFlangePlate1Model = self.innerFlangePlate1.create_model()

            innerFlangePlate2Origin = numpy.array([
                innerFlangePlatespacing,
                -(self.column.D - self.innerFlangePlate.T) / 2 + self.column.T,
                0.0
            ])
            innerFlangePlate2_uDir = numpy.array([0.0, 1.0, 0.0])
            innerFlangePlate2_wDir = numpy.array([1.0, 0.0, 0.0])
            self.innerFlangePlate2.place(innerFlangePlate2Origin,
                                         innerFlangePlate2_uDir,
                                         innerFlangePlate2_wDir)

            self.innerFlangePlate2Model = self.innerFlangePlate2.create_model()

            innerFlangePlate3Origin = numpy.array([
                -innerFlangePlatespacing,
                -(self.column.D - --self.innerFlangePlate.T) / 2 +
                self.column.T, 0.0
            ])
            innerFlangePlate3_uDir = numpy.array([0.0, 1.0, 0.0])
            innerFlangePlate3_wDir = numpy.array([-1.0, 0.0, 0.0])
            self.innerFlangePlate3.place(innerFlangePlate3Origin,
                                         innerFlangePlate3_uDir,
                                         innerFlangePlate3_wDir)

            self.innerFlangePlate3Model = self.innerFlangePlate3.create_model()

            innerFlangePlate4Origin = numpy.array([
                -innerFlangePlatespacing,
                (self.column.D - self.innerFlangePlate.T) / 2 - self.column.T,
                0.0
            ])
            innerFlangePlate4_uDir = numpy.array([0.0, 1.0, 0.0])
            innerFlangePlate4_wDir = numpy.array([-1.0, 0.0, 0.0])
            self.innerFlangePlate4.place(innerFlangePlate4Origin,
                                         innerFlangePlate4_uDir,
                                         innerFlangePlate4_wDir)

            self.innerFlangePlate4Model = self.innerFlangePlate4.create_model()

    def createWeldedGeometry(self):

        # Flangeplate1
        flangePlateWeldL11Origin = numpy.array([
            self.flangePlate.W / 2, (self.column.D) / 2,
            self.flangePlateWeldL.L / 2
        ])
        flangePlateWeldL11_uDir = numpy.array([0.0, 1.0, 0.0])
        flangePlateWeldL11_wDir = numpy.array([0.0, 0.0, -1.0])
        self.flangePlateWeldL11.place(flangePlateWeldL11Origin,
                                      flangePlateWeldL11_uDir,
                                      flangePlateWeldL11_wDir)

        self.flangePlateWeldL11Model = self.flangePlateWeldL11.create_model()

        flangePlateWeldL12Origin = numpy.array([
            -self.flangePlate.W / 2, (self.column.D) / 2,
            -self.flangePlateWeldL.L / 2
        ])
        flangePlateWeldL12_uDir = numpy.array([0.0, 1.0, 0.0])
        flangePlateWeldL12_wDir = numpy.array([0.0, 0.0, 1.0])
        self.flangePlateWeldL12.place(flangePlateWeldL12Origin,
                                      flangePlateWeldL12_uDir,
                                      flangePlateWeldL12_wDir)

        self.flangePlateWeldL12Model = self.flangePlateWeldL12.create_model()

        flangePlateWeldW11Origin = numpy.array([
            -self.flangePlate.W / 2, (self.column.D) / 2,
            self.flangePlateWeldL.L / 2
        ])
        flangePlateWeldW11_uDir = numpy.array([0.0, 1.0, 0.0])
        flangePlateWeldW11_wDir = numpy.array([1.0, 0.0, 0.0])
        self.flangePlateWeldW11.place(flangePlateWeldW11Origin,
                                      flangePlateWeldW11_uDir,
                                      flangePlateWeldW11_wDir)

        self.flangePlateWeldW11Model = self.flangePlateWeldW11.create_model()

        flangePlateWeldW12Origin = numpy.array([
            self.flangePlate.W / 2, (self.column.D) / 2,
            -self.flangePlateWeldL.L / 2
        ])
        flangePlateWeldW12_uDir = numpy.array([0.0, 1.0, 0.0])
        flangePlateWeldW12_wDir = numpy.array([-1.0, 0.0, 0.0])
        self.flangePlateWeldW12.place(flangePlateWeldW12Origin,
                                      flangePlateWeldW12_uDir,
                                      flangePlateWeldW12_wDir)

        self.flangePlateWeldW12Model = self.flangePlateWeldW12.create_model()

        # FlangePlate2
        flangePlateWeldL21Origin = numpy.array([
            self.flangePlate.W / 2, -(self.column.D) / 2,
            -self.flangePlateWeldL.L / 2
        ])
        flangePlateWeldL21_uDir = numpy.array([0.0, -1.0, 0.0])
        flangePlateWeldL21_wDir = numpy.array([0.0, 0.0, 1.0])
        self.flangePlateWeldL21.place(flangePlateWeldL21Origin,
                                      flangePlateWeldL21_uDir,
                                      flangePlateWeldL21_wDir)

        self.flangePlateWeldL21Model = self.flangePlateWeldL21.create_model()

        flangePlateWeldL22Origin = numpy.array([
            -self.flangePlate.W / 2, -(self.column.D) / 2,
            self.flangePlateWeldL.L / 2
        ])
        flangePlateWeldL22_uDir = numpy.array([0.0, -1.0, 0.0])
        flangePlateWeldL22_wDir = numpy.array([0.0, 0.0, -1.0])
        self.flangePlateWeldL22.place(flangePlateWeldL22Origin,
                                      flangePlateWeldL22_uDir,
                                      flangePlateWeldL22_wDir)

        self.flangePlateWeldL22Model = self.flangePlateWeldL22.create_model()

        flangePlateWeldW21Origin = numpy.array([
            self.flangePlate.W / 2, -(self.column.D) / 2,
            self.flangePlateWeldL.L / 2
        ])
        flangePlateWeldW21_uDir = numpy.array([0.0, -1.0, 0.0])
        flangePlateWeldW21_wDir = numpy.array([-1.0, 0.0, 0.0])
        self.flangePlateWeldW21.place(flangePlateWeldW21Origin,
                                      flangePlateWeldW21_uDir,
                                      flangePlateWeldW21_wDir)

        self.flangePlateWeldW21Model = self.flangePlateWeldW21.create_model()

        flangePlateWeldW22Origin = numpy.array([
            -self.flangePlate.W / 2, -(self.column.D) / 2,
            -self.flangePlateWeldL.L / 2
        ])
        flangePlateWeldW22_uDir = numpy.array([0.0, -1.0, 0.0])
        flangePlateWeldW22_wDir = numpy.array([1.0, 0.0, 0.0])
        self.flangePlateWeldW22.place(flangePlateWeldW22Origin,
                                      flangePlateWeldW22_uDir,
                                      flangePlateWeldW22_wDir)

        self.flangePlateWeldW22Model = self.flangePlateWeldW22.create_model()

        # Webplate1 (right side)
        webPlateWeldL11Origin = numpy.array([(self.column.t) / 2,
                                             self.webPlate.W / 2,
                                             -self.webPlate.L / 2])
        webPlateWeldL11_uDir = numpy.array([1.0, 0.0, 0.0])
        webPlateWeldL11_wDir = numpy.array([0.0, 0.0, 1.0])
        self.webPlateWeldL11.place(webPlateWeldL11Origin, webPlateWeldL11_uDir,
                                   webPlateWeldL11_wDir)

        self.webPlateWeldL11Model = self.webPlateWeldL11.create_model()

        webPlateWeldL12Origin = numpy.array([(self.column.t) / 2,
                                             -self.webPlate.W / 2,
                                             -self.webPlate.L / 2])
        webPlateWeldL12_uDir = numpy.array([0.0, -1.0, 0.0])
        webPlateWeldL12_wDir = numpy.array([0.0, 0.0, 1.0])
        self.webPlateWeldL12.place(webPlateWeldL12Origin, webPlateWeldL12_uDir,
                                   webPlateWeldL12_wDir)

        self.webPlateWeldL12Model = self.webPlateWeldL12.create_model()

        webPlateWeldW11Origin = numpy.array([(self.column.t) / 2,
                                             self.webPlate.W / 2,
                                             self.webPlate.L / 2])
        webPlateWeldW11_uDir = numpy.array([1.0, 0.0, 0.0])
        webPlateWeldW11_wDir = numpy.array([0.0, -1.0, 0.0])
        self.webPlateWeldW11.place(webPlateWeldW11Origin, webPlateWeldW11_uDir,
                                   webPlateWeldW11_wDir)

        self.webPlateWeldW11Model = self.webPlateWeldW11.create_model()

        webPlateWeldW12Origin = numpy.array([(self.column.t) / 2,
                                             -self.webPlate.W / 2,
                                             -self.webPlate.L / 2])
        webPlateWeldW12_uDir = numpy.array([1.0, 0.0, 0.0])
        webPlateWeldW12_wDir = numpy.array([0.0, 1.0, 0.0])
        self.webPlateWeldW12.place(webPlateWeldW12Origin, webPlateWeldW12_uDir,
                                   webPlateWeldW12_wDir)

        self.webPlateWeldW12Model = self.webPlateWeldW12.create_model()

        # Webplate2
        webPlateWeldL21Origin = numpy.array(
            [-(self.column.t) / 2, -self.webPlate.W / 2, -self.webPlate.L / 2])
        webPlateWeldL21_uDir = numpy.array([-1.0, 0.0, 0.0])
        webPlateWeldL21_wDir = numpy.array([0.0, 0.0, 1.0])
        self.webPlateWeldL21.place(webPlateWeldL21Origin, webPlateWeldL21_uDir,
                                   webPlateWeldL21_wDir)

        self.webPlateWeldL21Model = self.webPlateWeldL21.create_model()

        webPlateWeldL22Origin = numpy.array(
            [-(self.column.t) / 2, self.webPlate.W / 2, self.webPlate.L / 2])
        webPlateWeldL22_uDir = numpy.array([-1.0, 0.0, 0.0])
        webPlateWeldL22_wDir = numpy.array([0.0, 0.0, -1.0])
        self.webPlateWeldL22.place(webPlateWeldL22Origin, webPlateWeldL22_uDir,
                                   webPlateWeldL22_wDir)

        self.webPlateWeldL22Model = self.webPlateWeldL22.create_model()

        webPlateWeldW21Origin = numpy.array(
            [-(self.column.t) / 2, -self.webPlate.W / 2, self.webPlate.L / 2])
        webPlateWeldW21_uDir = numpy.array([-1.0, 0.0, 0.0])
        webPlateWeldW21_wDir = numpy.array([0.0, 1.0, 0.0])
        self.webPlateWeldW21.place(webPlateWeldW21Origin, webPlateWeldW21_uDir,
                                   webPlateWeldW21_wDir)

        self.webPlateWeldW21Model = self.webPlateWeldW21.create_model()

        webPlateWeldW22Origin = numpy.array(
            [-(self.column.t) / 2, self.webPlate.W / 2, -self.webPlate.L / 2])
        webPlateWeldW22_uDir = numpy.array([-1.0, 0.0, 0.0])
        webPlateWeldW22_wDir = numpy.array([0.0, -1.0, 0.0])
        self.webPlateWeldW22.place(webPlateWeldW22Origin, webPlateWeldW22_uDir,
                                   webPlateWeldW22_wDir)

        self.webPlateWeldW22Model = self.webPlateWeldW22.create_model()

        if self.C.preference != 'Outside':
            # innerplate1 (right top)
            innerFlangePlatespacing = self.flangespace + self.column.t / 2 + self.column.R1
            innerflangePlateWeldL11Origin = numpy.array([
                innerFlangePlatespacing + self.innerFlangePlate.W,
                (self.column.D) / 2 - self.column.T,
                -self.innerFlangePlate.L / 2
            ])
            innerflangePlateWeldL11_uDir = numpy.array([0.0, -1.0, 0.0])
            innerflangePlateWeldL11_wDir = numpy.array([0.0, 0.0, 1.0])
            self.innerflangePlateWeldL11.place(innerflangePlateWeldL11Origin,
                                               innerflangePlateWeldL11_uDir,
                                               innerflangePlateWeldL11_wDir)

            self.innerflangePlateWeldL11Model = self.innerflangePlateWeldL11.create_model(
            )

            innerflangePlateWeldL12Origin = numpy.array([
                innerFlangePlatespacing, (self.column.D) / 2 - self.column.T,
                self.innerFlangePlate.L / 2
            ])
            innerflangePlateWeldL12_uDir = numpy.array([0.0, -1.0, 0.0])
            innerflangePlateWeldL12_wDir = numpy.array([0.0, 0.0, -1.0])
            self.innerflangePlateWeldL12.place(innerflangePlateWeldL12Origin,
                                               innerflangePlateWeldL12_uDir,
                                               innerflangePlateWeldL12_wDir)

            self.innerflangePlateWeldL12Model = self.innerflangePlateWeldL12.create_model(
            )

            innerflangePlateWeldW11Origin = numpy.array([
                innerFlangePlatespacing + self.innerFlangePlate.W,
                (self.column.D) / 2 - self.column.T,
                self.innerFlangePlate.L / 2
            ])
            innerflangePlateWeldW11_uDir = numpy.array([0.0, -1.0, 0.0])
            innerflangePlateWeldW11_wDir = numpy.array([-1.0, 0.0, 0.0])
            self.innerflangePlateWeldW11.place(innerflangePlateWeldW11Origin,
                                               innerflangePlateWeldW11_uDir,
                                               innerflangePlateWeldW11_wDir)

            self.innerflangePlateWeldW11Model = self.innerflangePlateWeldW11.create_model(
            )

            innerflangePlateWeldW12Origin = numpy.array([
                innerFlangePlatespacing, (self.column.D) / 2 - self.column.T,
                -self.innerFlangePlate.L / 2
            ])
            innerflangePlateWeldW12_uDir = numpy.array([0.0, -1.0, 0.0])
            innerflangePlateWeldW12_wDir = numpy.array([1.0, 0.0, 0.0])
            self.innerflangePlateWeldW12.place(innerflangePlateWeldW12Origin,
                                               innerflangePlateWeldW12_uDir,
                                               innerflangePlateWeldW12_wDir)

            self.innerflangePlateWeldW12Model = self.innerflangePlateWeldW12.create_model(
            )

            # innerplate2 (top left)
            innerflangePlateWeldL21Origin = numpy.array([
                -innerFlangePlatespacing, (self.column.D) / 2 - self.column.T,
                -self.innerFlangePlate.L / 2
            ])
            innerflangePlateWeldL21_uDir = numpy.array([0.0, -1.0, 0.0])
            innerflangePlateWeldL21_wDir = numpy.array([0.0, 0.0, 1.0])
            self.innerflangePlateWeldL21.place(innerflangePlateWeldL21Origin,
                                               innerflangePlateWeldL21_uDir,
                                               innerflangePlateWeldL21_wDir)

            self.innerflangePlateWeldL21Model = self.innerflangePlateWeldL21.create_model(
            )

            innerflangePlateWeldL22Origin = numpy.array([
                -innerFlangePlatespacing - self.innerFlangePlate.W,
                (self.column.D) / 2 - self.column.T,
                self.innerFlangePlate.L / 2
            ])
            innerflangePlateWeldL22_uDir = numpy.array([0.0, -1.0, 0.0])
            innerflangePlateWeldL22_wDir = numpy.array([0.0, 0.0, -1.0])
            self.innerflangePlateWeldL22.place(innerflangePlateWeldL22Origin,
                                               innerflangePlateWeldL22_uDir,
                                               innerflangePlateWeldL22_wDir)

            self.innerflangePlateWeldL22Model = self.innerflangePlateWeldL22.create_model(
            )

            innerflangePlateWeldW21Origin = numpy.array([
                -innerFlangePlatespacing, (self.column.D) / 2 - self.column.T,
                self.innerFlangePlate.L / 2
            ])
            innerflangePlateWeldW21_uDir = numpy.array([0.0, -1.0, 0.0])
            innerflangePlateWeldW21_wDir = numpy.array([-1.0, 0.0, 0.0])
            self.innerflangePlateWeldW21.place(innerflangePlateWeldW21Origin,
                                               innerflangePlateWeldW21_uDir,
                                               innerflangePlateWeldW21_wDir)

            self.innerflangePlateWeldW21Model = self.innerflangePlateWeldW21.create_model(
            )

            innerflangePlateWeldW22Origin = numpy.array([
                -innerFlangePlatespacing - self.innerFlangePlate.W,
                (self.column.D) / 2 - self.column.T,
                -self.innerFlangePlate.L / 2
            ])
            innerflangePlateWeldW22_uDir = numpy.array([0.0, -1.0, 0.0])
            innerflangePlateWeldW22_wDir = numpy.array([1.0, 0.0, 0.0])
            self.innerflangePlateWeldW22.place(innerflangePlateWeldW22Origin,
                                               innerflangePlateWeldW22_uDir,
                                               innerflangePlateWeldW22_wDir)

            self.innerflangePlateWeldW22Model = self.innerflangePlateWeldW22.create_model(
            )

            # innerplate3 (Right bottom)
            innerflangePlateWeldL31Origin = numpy.array([
                innerFlangePlatespacing + self.innerFlangePlate.W,
                -(self.column.D) / 2 + self.column.T,
                self.innerFlangePlate.L / 2
            ])
            innerflangePlateWeldL31_uDir = numpy.array([0.0, 1.0, 0.0])
            innerflangePlateWeldL31_wDir = numpy.array([0.0, 0.0, -1.0])
            self.innerflangePlateWeldL31.place(innerflangePlateWeldL31Origin,
                                               innerflangePlateWeldL31_uDir,
                                               innerflangePlateWeldL31_wDir)

            self.innerflangePlateWeldL31Model = self.innerflangePlateWeldL31.create_model(
            )

            innerflangePlateWeldL32Origin = numpy.array([
                innerFlangePlatespacing, -(self.column.D) / 2 + self.column.T,
                -self.innerFlangePlate.L / 2
            ])
            innerflangePlateWeldL32_uDir = numpy.array([0.0, 1.0, 0.0])
            innerflangePlateWeldL32_wDir = numpy.array([0.0, 0.0, 1.0])
            self.innerflangePlateWeldL32.place(innerflangePlateWeldL32Origin,
                                               innerflangePlateWeldL32_uDir,
                                               innerflangePlateWeldL32_wDir)

            self.innerflangePlateWeldL32Model = self.innerflangePlateWeldL32.create_model(
            )

            innerflangePlateWeldW31Origin = numpy.array([
                innerFlangePlatespacing, -(self.column.D) / 2 + self.column.T,
                self.innerFlangePlate.L / 2
            ])
            innerflangePlateWeldW31_uDir = numpy.array([0.0, 1.0, 0.0])
            innerflangePlateWeldW31_wDir = numpy.array([1.0, 0.0, 0.0])
            self.innerflangePlateWeldW31.place(innerflangePlateWeldW31Origin,
                                               innerflangePlateWeldW31_uDir,
                                               innerflangePlateWeldW31_wDir)

            self.innerflangePlateWeldW31Model = self.innerflangePlateWeldW31.create_model(
            )

            innerflangePlateWeldW32Origin = numpy.array([
                innerFlangePlatespacing + self.innerFlangePlate.W,
                -(self.column.D) / 2 + self.column.T,
                -self.innerFlangePlate.L / 2
            ])
            innerflangePlateWeldW32_uDir = numpy.array([0.0, 1.0, 0.0])
            innerflangePlateWeldW32_wDir = numpy.array([-1.0, 0.0, 0.0])
            self.innerflangePlateWeldW32.place(innerflangePlateWeldW32Origin,
                                               innerflangePlateWeldW32_uDir,
                                               innerflangePlateWeldW32_wDir)

            self.innerflangePlateWeldW32Model = self.innerflangePlateWeldW32.create_model(
            )

            # innetplate4 (left bottom)
            innerflangePlateWeldL41Origin = numpy.array([
                -innerFlangePlatespacing, -(self.column.D) / 2 + self.column.T,
                self.innerFlangePlate.L / 2
            ])
            innerflangePlateWeldL41_uDir = numpy.array([0.0, 1.0, 0.0])
            innerflangePlateWeldL41_wDir = numpy.array([0.0, 0.0, -1.0])
            self.innerflangePlateWeldL41.place(innerflangePlateWeldL41Origin,
                                               innerflangePlateWeldL41_uDir,
                                               innerflangePlateWeldL41_wDir)

            self.innerflangePlateWeldL41Model = self.innerflangePlateWeldL41.create_model(
            )

            innerflangePlateWeldL42Origin = numpy.array([
                -innerFlangePlatespacing - self.innerFlangePlate.W,
                -(self.column.D) / 2 + self.column.T,
                -self.innerFlangePlate.L / 2
            ])
            innerflangePlateWeldL42_uDir = numpy.array([0.0, 1.0, 0.0])
            innerflangePlateWeldL42_wDir = numpy.array([0.0, 0.0, 1.0])
            self.innerflangePlateWeldL42.place(innerflangePlateWeldL42Origin,
                                               innerflangePlateWeldL42_uDir,
                                               innerflangePlateWeldL42_wDir)

            self.innerflangePlateWeldL42Model = self.innerflangePlateWeldL42.create_model(
            )

            innerflangePlateWeldW41Origin = numpy.array([
                -innerFlangePlatespacing - self.innerFlangePlate.W,
                -(self.column.D) / 2 + self.column.T,
                self.innerFlangePlate.L / 2
            ])
            innerflangePlateWeldW41_uDir = numpy.array([0.0, 1.0, 0.0])
            innerflangePlateWeldW41_wDir = numpy.array([1.0, 0.0, 0.0])
            self.innerflangePlateWeldW41.place(innerflangePlateWeldW41Origin,
                                               innerflangePlateWeldW41_uDir,
                                               innerflangePlateWeldW41_wDir)

            self.innerflangePlateWeldW41Model = self.innerflangePlateWeldW41.create_model(
            )

            innerflangePlateWeldW42Origin = numpy.array([
                -innerFlangePlatespacing, -(self.column.D) / 2 + self.column.T,
                -self.innerFlangePlate.L / 2
            ])
            innerflangePlateWeldW42_uDir = numpy.array([0.0, 1.0, 0.0])
            innerflangePlateWeldW42_wDir = numpy.array([-1.0, 0.0, 0.0])
            self.innerflangePlateWeldW42.place(innerflangePlateWeldW42Origin,
                                               innerflangePlateWeldW42_uDir,
                                               innerflangePlateWeldW42_wDir)

            self.innerflangePlateWeldW42Model = self.innerflangePlateWeldW42.create_model(
            )

        # to cut the welds
        weldCutPlateOrigin = numpy.array([-self.weldCutPlate.W / 2, 0.0, 0.0])
        weldCutPlate_uDir = numpy.array([0.0, 0.0, 1.0])
        weldCutPlate_wDir = numpy.array([1.0, 0.0, 0.0])
        self.weldCutPlate.place(weldCutPlateOrigin, weldCutPlate_uDir,
                                weldCutPlate_wDir)

        self.weldCutPlateModel = self.weldCutPlate.create_model()

    def get_column_models(self):
        """

        :return: CAD mode for the columns
        """
        columns = BRepAlgoAPI_Fuse(self.column1Model,
                                   self.column2Model).Shape()

        return columns

    def get_plate_models(self):
        """
        :return: CAD model for all the plates
        """

        if self.C.preference != 'Outside':
            plates_sec = [
                self.flangePlate1Model, self.flangePlate2Model,
                self.innerFlangePlate1Model, self.innerFlangePlate2Model,
                self.innerFlangePlate3Model, self.innerFlangePlate4Model,
                self.webPlate1Model, self.webPlate2Model
            ]
        else:
            plates_sec = [
                self.flangePlate1Model, self.flangePlate2Model,
                self.webPlate1Model, self.webPlate2Model
            ]

        plates = plates_sec[0]

        for comp in plates_sec[1:]:
            plates = BRepAlgoAPI_Fuse(comp, plates).Shape()

        return plates

    def get_welded_modules(self):
        """
        :return: CAD model for all the welds
        """
        if self.C.preference != 'Outside':
            welded_sec = [self.flangePlateWeldL11Model, self.flangePlateWeldL12Model, self.flangePlateWeldL21Model,
                          self.flangePlateWeldL22Model, self.flangePlateWeldW11Model, self.flangePlateWeldW12Model,
                          self.flangePlateWeldW21Model, self.flangePlateWeldW22Model, \
                          self.webPlateWeldL11Model, self.webPlateWeldL12Model, self.webPlateWeldL21Model,
                          self.webPlateWeldL22Model, self.webPlateWeldW11Model, self.webPlateWeldW12Model,
                          self.webPlateWeldW21Model, self.webPlateWeldW22Model, \
                          self.innerflangePlateWeldL11Model, self.innerflangePlateWeldL12Model,
                          self.innerflangePlateWeldL21Model, self.innerflangePlateWeldL22Model,
                          self.innerflangePlateWeldL31Model, self.innerflangePlateWeldL32Model,
                          self.innerflangePlateWeldL41Model, self.innerflangePlateWeldL42Model, \
                          self.innerflangePlateWeldW11Model, self.innerflangePlateWeldW12Model,
                          self.innerflangePlateWeldW21Model, self.innerflangePlateWeldW22Model,
                          self.innerflangePlateWeldW31Model, self.innerflangePlateWeldW32Model,
                          self.innerflangePlateWeldW41Model, self.innerflangePlateWeldW42Model]
        else:
            welded_sec = [self.flangePlateWeldL11Model, self.flangePlateWeldL12Model, self.flangePlateWeldL21Model,
                          self.flangePlateWeldL22Model, self.flangePlateWeldW11Model, self.flangePlateWeldW12Model,
                          self.flangePlateWeldW21Model, self.flangePlateWeldW22Model, \
                          self.webPlateWeldL11Model, self.webPlateWeldL12Model, self.webPlateWeldL21Model,
                          self.webPlateWeldL22Model, self.webPlateWeldW11Model, self.webPlateWeldW12Model,
                          self.webPlateWeldW21Model, self.webPlateWeldW22Model]

        welds = welded_sec[0]

        for comp in welded_sec[1:]:
            welds = BRepAlgoAPI_Fuse(comp, welds).Shape()

        welds = BRepAlgoAPI_Cut(welds, self.weldCutPlateModel).Shape()

        return welds
        # return self.innerflangePlateWeldW42Model

    def get_models(self):
        columns = self.get_column_models()
        plate_conectors = self.get_plate_models()
        welds = self.get_welded_modules()

        CAD = BRepAlgoAPI_Fuse(columns, plate_conectors).Shape()
        CAD = BRepAlgoAPI_Fuse(CAD, welds).Shape()

        return CAD
Esempio n. 12
0
    import OCC.Core.V3d
    from OCC.Core.Quantity import Quantity_NOC_SADDLEBROWN, Quantity_NOC_BLUE1
    from OCC.Core.Graphic3d import Graphic3d_NOT_2D_ALUMINUM
    from utilities import osdag_display_shape
    # from cad.common_logic import CommonDesignLogic

    # from OCC.Core.Graphic3d import Quantity_NOC_GRAY as GRAY
    from OCC.Core.Quantity import Quantity_NOC_GRAY25 as GRAY
    from OCC.gp import gp_Pnt
    from OCC.Display.SimpleGui import init_display

    display, start_display, add_menu, add_function_to_menu = init_display()

    column = ISection(B=250, T=13.7, D=450, t=9.8, R1=15.0, R2=7.5, alpha=94, length=1500, notchObj=None)
    baseplate = Plate(L=650, W=415, T=45)

    weldType = 'Groove'  # 'Fillet'

    if weldType == 'Fillet':
        weldAbvFlang = FilletWeld(b=10, h=10, L=250)
        weldBelwFlang = FilletWeld(b=10, h=10, L=100)
        weldSideWeb = FilletWeld(b=10, h=10, L=420)

    else:
        weldAbvFlang = GrooveWeld(b=column.T, h=10, L=column.B)
        weldBelwFlang = GrooveWeld(b=column.T, h=10, L=column.B)
        weldSideWeb = GrooveWeld(b=column.t, h=10, L=column.D)
    # concrete = Concrete(L= baseplate.W*1.5, W= baseplate.L*1.5, T= baseplate.T*10)
    concrete = Plate(L=baseplate.L * 1.5, W=baseplate.W * 1.5, T=baseplate.T * 10)
    grout = Grout(L=concrete.L, W=concrete.W, T=50)
Esempio n. 13
0
class ChannelSectionOpposite(object):
    def __init__(self, D, B, T, t, s, l, t1, H):
        self.B = B
        self.T = T
        self.D = D
        self.t = t
        self.l = l
        self.s = s
        self.t1 = t1
        self.H = H

        self.sec_origin = numpy.array([0, 0, 0])
        self.uDir = numpy.array([1.0, 0, 0])
        self.wDir = numpy.array([0.0, 0, 1.0])

        self.Plate1 = Plate(t1, H, l)
        self.Plate2 = Plate(t1, H, l)
        self.channel1 = Channel(B, T, D, t, 0, 0, H)
        self.channel2 = Channel(B, T, D, t, 0, 0, H)
        #self.compute_params()

    def place(self, sec_origin, uDir, wDir):
        self.sec_origin = sec_origin
        self.uDir = uDir
        self.wDir = wDir
        space = self.s / 2 + self.B
        origin = numpy.array([space, 0., 0.])
        self.channel1.place(origin, self.uDir, self.wDir)
        origin1 = numpy.array([space, 0., 0.])
        self.channel2.place(origin1, self.uDir, self.wDir)
        origin2 = numpy.array([0., -self.t1 / 2, 0.])
        self.Plate1.place(origin2, self.uDir, self.wDir)
        origin3 = numpy.array([0., self.D + self.t1 / 2, 0.])
        self.Plate2.place(origin3, self.uDir, self.wDir)
        #self.compute_params()

    def compute_params(self):
        self.channel1.compute_params()
        self.channel2.compute_params()
        self.channel2.points = self.rotateY(self.channel2.points)
        self.channel2.points = self.rotateY(self.channel2.points)
        self.Plate1.compute_params()
        self.Plate2.compute_params()

    def create_model(self):
        prism1 = self.channel1.create_model()
        prism2 = self.channel2.create_model()

        prism3 = self.Plate1.create_model()
        prism4 = self.Plate2.create_model()

        prism = BRepAlgoAPI_Fuse(prism1, prism2).Shape()
        # prism = BRepAlgoAPI_Fuse(prism, prism3).Shape()
        # prism = BRepAlgoAPI_Fuse(prism, prism4).Shape()
        return prism, [prism3, prism4]

    def rotateY(self, points):
        rotated_points = []
        rmatrix = numpy.array([[0, 0, 1], [0, 1, 0], [-1, 0, 0]])
        for point in points:
            point = numpy.matmul(rmatrix, point)
            rotated_points.append(point)
        return rotated_points

    def create_marking(self):
        middel_pnt = []
        line = []
        labels = ["z", "y", "u", "v"]
        offset = self.s + 2 * self.B
        uvoffset = offset / numpy.sqrt(2)

        z_points = [
            numpy.array([-offset, self.D / 2, self.H / 2]),
            numpy.array([offset, self.D / 2, self.H / 2])
        ]
        line.append(makeEdgesFromPoints(z_points))

        y_points = [
            numpy.array([0., -offset + self.D / 2, self.H / 2]),
            numpy.array([0, offset + self.D / 2, self.H / 2])
        ]
        line.append(makeEdgesFromPoints(y_points))

        u_points = [
            numpy.array([-uvoffset, uvoffset + self.D / 2, self.H / 2]),
            numpy.array([uvoffset, -uvoffset + self.D / 2, self.H / 2])
        ]
        line.append(makeEdgesFromPoints(u_points))

        v_points = [
            numpy.array([-uvoffset, -uvoffset + self.D / 2, self.H / 2]),
            numpy.array([uvoffset, uvoffset + self.D / 2, self.H / 2])
        ]
        line.append(makeEdgesFromPoints(v_points))

        start_pnt = [[-offset, self.D / 2, self.H / 2],
                     [0, -offset + self.D / 2 + 1, self.H / 2],
                     [uvoffset, -uvoffset + self.D / 2, self.H / 2],
                     [uvoffset, uvoffset + self.D / 2, self.H / 2]]
        end_pnt = [[offset, self.D / 2, self.H / 2],
                   [0, offset + self.D / 2 - 2, self.H / 2],
                   [-uvoffset, uvoffset + self.D / 2, self.H / 2],
                   [-uvoffset, -uvoffset + self.D / 2, self.H / 2]]

        return line, [start_pnt, end_pnt], labels
Esempio n. 14
0
    display, start_display, add_menu, add_function_to_menu = init_display()

    nutboltArrayOrigin = numpy.array([0., 0., 0.])
    gaugeDir = numpy.array([0.0, 1.0, 0])
    pitchDir = numpy.array([1.0, 0.0, 0])
    boltDir = numpy.array([0, 0, 1.0])

    bolt = Bolt(R=6, T=5, H=6, r=3)
    nut = Nut(R=bolt.R, T=bolt.T, H=bolt.T + 1, innerR1=bolt.r)
    nut_space = 10 + 5 + nut.T  # member.T + plate.T + nut.T
    Obj = 'Star Angles'  # 'Back to Back Channels'  #'Channels'  #'  #'Angles'  #      or 'Back to Back Angles' 'Channels' or

    # nut_bolt_array = NutBoltArray(Obj, nut, bolt, nut_space)

    intermittentPlate = Plate(L=35 + 35 + 35, W=35 + 35, T=10)
    # nut_bolt_array = IntermittentNutBoltPlateArray(Obj, nut, bolt, intermittentPlate, nut_space)
    #
    # place = nut_bolt_array.place(nutboltArrayOrigin, gaugeDir, pitchDir, boltDir)
    # nut_bolt_array_Model = nut_bolt_array.create_model()

    welds = FilletWeld(h=5, b=5, L=intermittentPlate.W)
    weld_plate_array = IntermittentWelds(Obj, welds, intermittentPlate)
    place = weld_plate_array.place(nutboltArrayOrigin, pitchDir, gaugeDir,
                                   boltDir)

    weld_plate_array.create_model()

    welds = weld_plate_array.get_welded_models()
    plates = weld_plate_array.get_plate_models()
Esempio n. 15
0
    # from cad.common_logic import CommonDesignLogic

    from OCC.gp import gp_Pnt
    from OCC.Display.SimpleGui import init_display

    display, start_display, add_menu, add_function_to_menu = init_display()

    Obj = 'Star Angles'  #'Back to Back Channels'  # 'Channels'  #'  #'Angles'  #      or 'Back to Back Angles' 'Channels' or

    # weld_size = 6
    # s = max(15, weld_size)

    plate = GassetPlate(L=360 + 50, H=205.0, T=10, degree=30)
    bolt = Bolt(R=8, T=5, H=6, r=3)
    nut = Nut(R=bolt.R, T=bolt.T, H=bolt.T + 1, innerR1=bolt.r)
    intermittentPlate = Plate(L= 2*125 , W=70, T=plate.T)

    if Obj == 'Channels' or Obj == 'Back to Back Channels':
        member = Channel(B=50, T=6.6, D=125, t=3, R1=6.0, R2=2.4, L=4000)
        # plate_intercept = plate.L - s - 50
        if Obj == 'Channels':
            nut_space = member.t + plate.T + nut.T  # member.T + plate.T + nut.T
        else:
            nut_space = 2 * member.t + plate.T + nut.T  # 2*member.T + plate.T + nut.T
        # plateObj = 0.0

        nut_bolt_array = NutBoltArray(Obj, nut, bolt, nut_space)
        intermittentConnection = IntermittentNutBoltPlateArray(Obj, nut, bolt, intermittentPlate, nut_space)

        tensionCAD = TensionChannelBoltCAD(Obj, member, plate, nut_bolt_array, intermittentConnection)
Esempio n. 16
0
    nutboltArrayOrigin = numpy.array([0., 0., 0.])
    gaugeDir = numpy.array([1.0, 0, 0])
    pitchDir = numpy.array([0, 1.0, 0])
    boltDir = numpy.array([0, 0, 1.0])

    numberOfBolts = 12
    column = ISection(B=250,
                      T=13.7,
                      D=450,
                      t=9.8,
                      R1=14.0,
                      R2=7.0,
                      alpha=94,
                      length=1500,
                      notchObj=None)
    baseplate = Plate(L=700, W=500, T=30)

    l = 550
    c = 225
    a = 175
    r = 24
    ex_length = (50 + 24 + baseplate.T)  # nut.T = 24
    bolt = AnchorBolt_A(l=250, c=125, a=75, r=12, ex=ex_length)
    # bolt = AnchorBolt_B(l= 250, c= 125, a= 75, r= 12)
    # bolt = AnchorBolt_Endplate(l= 250, c= 125, a= 75, r= 12)

    nut = Nut(R=bolt.r * 3, T=24, H=30, innerR1=bolt.r)
    washer = Washer(a=8 * bolt.r, d=2 * bolt.r, t=2)

    nutSpace = bolt.c + baseplate.T
Esempio n. 17
0
    from cad.items.plate import Plate
    from cad.items.bolt import Bolt
    from cad.items.nut import Nut
    from cad.items.filletweld import FilletWeld
    from cad.items.groove_weld import GrooveWeld
    from cad.MomentConnections.CCEndPlateCAD.nutBoltPlacement import NutBoltArray

    import OCC.Core.V3d

    from OCC.gp import gp_Pnt
    from OCC.Display.SimpleGui import init_display

    display, start_display, add_menu, add_function_to_menu = init_display()

    column = ISection(B=250, T=12.7, D=400, t=9.1, R1=11, R2=5.5, alpha=94, length=1000, notchObj=None)
    endPlate = Plate(L=column.D, W=column.B, T=45)
    flangeWeld = GrooveWeld(b=column.T, h=20, L=column.B)
    webWeld = GrooveWeld(b=column.t, h=20, L=column.D - 2 * column.T)

    bolt = Bolt(R=14, T=10, H=13, r=8)
    nut = Nut(R=bolt.R, T=bolt.T, H=bolt.T + 1, innerR1=bolt.r)
    nut_space = 2 * endPlate.T + nut.T  # member.T + plate.T + nut.T
    Obj = '6'

    nut_bolt_array = NutBoltArray(Obj, nut, bolt, nut_space)

    CCEndPlate = CCEndPlateCAD(column, endPlate, flangeWeld, webWeld, nut_bolt_array)

    CCEndPlate.create_3DModel()
    column = CCEndPlate.get_column_models()
    plates = CCEndPlate.get_plate_models()
Esempio n. 18
0
    from OCC.gp import gp_Pnt
    from OCC.Display.SimpleGui import init_display

    display, start_display, add_menu, add_function_to_menu = init_display()

    column = ISection(B=250,
                      T=13.5,
                      D=450,
                      t=9.8,
                      R1=15,
                      R2=75,
                      alpha=94,
                      length=1000,
                      notchObj=None)
    flangePlate = Plate(L=550, W=210, T=14)
    innerFlangePlate = Plate(L=550, W=80, T=14)
    webPlate = Plate(L=365, W=170, T=8)
    gap = 10

    flangePlateWeldL = FilletWeld(h=5, b=5, L=flangePlate.L)
    flangePlateWeldW = FilletWeld(h=5, b=5, L=flangePlate.W)

    innerflangePlateWeldL = FilletWeld(h=5, b=5, L=innerFlangePlate.L)
    innerflangePlateWeldW = FilletWeld(h=5, b=5, L=innerFlangePlate.W)

    webPlateWeldL = FilletWeld(h=5, b=5, L=webPlate.L)
    webPlateWeldW = FilletWeld(h=5, b=5, L=webPlate.W)

    CCSpliceCoverPlateCAD = CCSpliceCoverPlateWeldedCAD(
        column, flangePlate, innerFlangePlate, webPlate, gap, flangePlateWeldL,
Esempio n. 19
0
    import OCC.Core.V3d

    from OCC.gp import gp_Pnt
    from OCC.Display.SimpleGui import init_display
    display, start_display, add_menu, add_function_to_menu = init_display()

    column = ISection(B=206.4,
                      T=17.3,
                      D=215.8,
                      t=10,
                      R1=15,
                      R2=75,
                      alpha=94,
                      length=1000,
                      notchObj=None)
    flangePlate = Plate(L=240, W=203.6, T=10)
    innerFlangePlate = Plate(L=240, W=85, T=10)
    webPlate = Plate(L=600, W=120, T=8)
    gap = 10

    bolt = Bolt(R=12, T=5, H=6, r=6)
    nut = Nut(R=bolt.R, T=bolt.T, H=bolt.T + 1, innerR1=bolt.r)
    nut_space = 2 * flangePlate.T + column.T
    Obj = '6'
    numOfboltsF = 24
    plateAbvFlangeL = 100

    nut_bolt_array_AF = NutBoltArray_AF(Obj, nut, bolt, numOfboltsF, nut_space)
    nut_bolt_array_BF = NutBoltArray_BF(Obj, nut, bolt, numOfboltsF, nut_space)
    numOfboltsF = 24
    nut_space = 2 * webPlate.T + column.t
Esempio n. 20
0
    def __init__(self, C, column, flangePlate, innerFlangePlate, webPlate,
                 flangePlateWeldL, flangePlateWeldW, innerflangePlateWeldL,
                 innerflangePlateWeldW, webPlateWeldL, webPlateWeldW):

        self.C = C
        self.column = column
        self.flangePlate = flangePlate
        self.innerFlangePlate = innerFlangePlate
        self.webPlate = webPlate
        self.flangePlateWeldL = flangePlateWeldL
        self.flangePlateWeldW = flangePlateWeldW
        self.webPlateWeldL = webPlateWeldL
        self.webPlateWeldW = webPlateWeldW
        self.innerflangePlateWeldL = innerflangePlateWeldL
        self.innerflangePlateWeldW = innerflangePlateWeldW

        self.gap = float(self.C.flange_plate.gap)
        self.flangespace = float(self.C.flangespace)
        self.webspace = float(self.C.webspace)

        self.column1 = copy.deepcopy(self.column)
        self.column2 = copy.deepcopy(self.column)

        self.flangePlate1 = copy.deepcopy(self.flangePlate)
        self.flangePlate2 = copy.deepcopy(self.flangePlate)

        self.innerFlangePlate1 = copy.deepcopy(self.innerFlangePlate)
        self.innerFlangePlate2 = copy.deepcopy(self.innerFlangePlate)
        self.innerFlangePlate3 = copy.deepcopy(self.innerFlangePlate)
        self.innerFlangePlate4 = copy.deepcopy(self.innerFlangePlate)

        self.webPlate1 = copy.deepcopy(self.webPlate)
        self.webPlate2 = copy.deepcopy(self.webPlate)

        # nuber top to bottom
        self.flangePlateWeldL11 = copy.deepcopy(self.flangePlateWeldL)
        self.flangePlateWeldL12 = copy.deepcopy(self.flangePlateWeldL)
        self.flangePlateWeldL21 = copy.deepcopy(self.flangePlateWeldL)
        self.flangePlateWeldL22 = copy.deepcopy(self.flangePlateWeldL)

        self.flangePlateWeldW11 = copy.deepcopy(self.flangePlateWeldW)
        self.flangePlateWeldW12 = copy.deepcopy(self.flangePlateWeldW)
        self.flangePlateWeldW21 = copy.deepcopy(self.flangePlateWeldW)
        self.flangePlateWeldW22 = copy.deepcopy(self.flangePlateWeldW)

        # Todo: update numbering
        self.webPlateWeldL11 = copy.deepcopy(self.webPlateWeldL)
        self.webPlateWeldL12 = copy.deepcopy(self.webPlateWeldL)
        self.webPlateWeldL21 = copy.deepcopy(self.webPlateWeldL)
        self.webPlateWeldL22 = copy.deepcopy(self.webPlateWeldL)

        self.webPlateWeldW11 = copy.deepcopy(self.webPlateWeldW)
        self.webPlateWeldW12 = copy.deepcopy(self.webPlateWeldW)
        self.webPlateWeldW21 = copy.deepcopy(self.webPlateWeldW)
        self.webPlateWeldW22 = copy.deepcopy(self.webPlateWeldW)

        # numbering is clock wise starting from right side top plate
        self.innerflangePlateWeldL11 = copy.deepcopy(
            self.innerflangePlateWeldL)
        self.innerflangePlateWeldL12 = copy.deepcopy(
            self.innerflangePlateWeldL)
        self.innerflangePlateWeldL21 = copy.deepcopy(
            self.innerflangePlateWeldL)
        self.innerflangePlateWeldL22 = copy.deepcopy(
            self.innerflangePlateWeldL)
        self.innerflangePlateWeldL31 = copy.deepcopy(
            self.innerflangePlateWeldL)
        self.innerflangePlateWeldL32 = copy.deepcopy(
            self.innerflangePlateWeldL)
        self.innerflangePlateWeldL41 = copy.deepcopy(
            self.innerflangePlateWeldL)
        self.innerflangePlateWeldL42 = copy.deepcopy(
            self.innerflangePlateWeldL)

        self.innerflangePlateWeldW11 = copy.deepcopy(
            self.innerflangePlateWeldW)
        self.innerflangePlateWeldW12 = copy.deepcopy(
            self.innerflangePlateWeldW)
        self.innerflangePlateWeldW21 = copy.deepcopy(
            self.innerflangePlateWeldW)
        self.innerflangePlateWeldW22 = copy.deepcopy(
            self.innerflangePlateWeldW)
        self.innerflangePlateWeldW31 = copy.deepcopy(
            self.innerflangePlateWeldW)
        self.innerflangePlateWeldW32 = copy.deepcopy(
            self.innerflangePlateWeldW)
        self.innerflangePlateWeldW41 = copy.deepcopy(
            self.innerflangePlateWeldW)
        self.innerflangePlateWeldW42 = copy.deepcopy(
            self.innerflangePlateWeldW)

        self.weldCutPlate = Plate(L=self.column.D + 4 * self.flangePlate.T,
                                  W=self.column.B + 2 * self.flangePlate.T,
                                  T=self.gap)
Esempio n. 21
0
class Box(object):
    def __init__(self, A, B, t, H, s, s1):
        self.A = A
        self.B = B
        self.H = H
        self.t = t
        self.s = s
        self.B = s + t
        self.s1 = s1
        self.A = s1 + t

        self.sec_origin = numpy.array([0, 0, 0])
        self.uDir = numpy.array([1.0, 0, 0])
        self.wDir = numpy.array([0.0, 0, 1.0])
        self.vDir = self.wDir * self.uDir

        self.plate1 = Plate(self.B, H, t)
        self.plate2 = Plate(t, H, self.A)
        self.plate3 = Plate(self.B, H, t)
        self.plate4 = Plate(t, H, self.A)

    def place(self, secOrigin, uDir, wDir):
        self.sec_origin = secOrigin
        self.uDir = uDir
        self.wDir = wDir
        origin5 = numpy.array([0., 0., 0.])
        origin5 = numpy.array([-self.A / 2 - self.t / 2, 0., 0.])
        self.plate1.place(origin5, self.uDir, self.wDir)
        origin6 = numpy.array([0., -self.B / 2 + self.t / 2., 0.])
        self.plate2.place(origin6, self.uDir, self.wDir)
        origin7 = numpy.array([self.A / 2 + self.t / 2., 0., 0.])
        self.plate3.place(origin7, self.uDir, self.wDir)
        origin8 = numpy.array([0., self.B / 2 - self.t / 2, 0.])
        self.plate4.place(origin8, self.uDir, self.wDir)

    def compute_params(self):
        self.plate1.compute_params()
        self.plate2.compute_params()
        self.plate3.compute_params()
        self.plate4.compute_params()

    def create_model(self):
        prism1 = self.plate1.create_model()
        prism2 = self.plate2.create_model()
        prism3 = self.plate3.create_model()
        prism4 = self.plate4.create_model()

        prism = BRepAlgoAPI_Fuse(prism1, prism2).Shape()
        prism = BRepAlgoAPI_Fuse(prism, prism3).Shape()
        prism = BRepAlgoAPI_Fuse(prism, prism4).Shape()
        return prism

    def create_marking(self):
        middel_pnt = []
        line = []
        labels = ["z", "y", "u", "v"]
        offset = (self.s + self.s1) / 2
        uvoffset = offset / numpy.sqrt(2)

        z_points = [
            numpy.array([-offset, 0., self.H / 2]),
            numpy.array([offset, 0., self.H / 2])
        ]
        line.append(makeEdgesFromPoints(z_points))

        y_points = [
            numpy.array([0., -offset, self.H / 2]),
            numpy.array([0, offset, self.H / 2])
        ]
        line.append(makeEdgesFromPoints(y_points))

        u_points = [
            numpy.array([-uvoffset, uvoffset, self.H / 2]),
            numpy.array([uvoffset, -uvoffset, self.H / 2])
        ]
        line.append(makeEdgesFromPoints(u_points))

        v_points = [
            numpy.array([-uvoffset, -uvoffset, self.H / 2]),
            numpy.array([uvoffset, uvoffset, self.H / 2])
        ]
        line.append(makeEdgesFromPoints(v_points))

        pnt_start = [[-offset, 0, self.H / 2], [0, -offset + 1, self.H / 2],
                     [uvoffset, -uvoffset, self.H / 2],
                     [uvoffset, uvoffset, self.H / 2]]
        pnt_end = [[offset, 0, self.H / 2], [0, offset - 3, self.H / 2],
                   [-uvoffset, uvoffset, self.H / 2],
                   [-uvoffset, -uvoffset, self.H / 2]]

        return line, [pnt_start, pnt_end], labels
Esempio n. 22
0
    def createPlateGeometry(self):
        body = Plate(L=self.L, W=self.W, T=self.T)
        body.place(self.sec_origin, self.uDir, self.wDir)

        part1 = body.create_model()
        return part1
Esempio n. 23
0
class BoxAngle(object):
    def __init__(self, a, b, t, l, t1, l1, H, s, s1):
        self.l = s + 2 * t1
        self.a = a
        self.b = b
        self.t = t
        self.s = s
        self.s1 = s1
        self.t1 = t1
        self.l1 = s1 + 2 * t1 + 2 * t
        self.H = H

        self.sec_origin = numpy.array([0, 0, 0])
        self.uDir = numpy.array([1.0, 0, 0])
        self.wDir = numpy.array([0.0, 0, 1.0])
        self.vDir = self.wDir * self.uDir

        self.angle1 = Angle(H, a, b, t, 0, 0)
        self.angle2 = Angle(H, b, a, t, 0, 0)
        self.angle3 = Angle(H, a, b, t, 0, 0)
        self.angle4 = Angle(H, b, a, t, 0, 0)
        self.plate1 = Plate(self.l, H, t1)
        self.plate2 = Plate(t1, H, self.l1)
        self.plate3 = Plate(self.l, H, t1)
        self.plate4 = Plate(t1, H, self.l1)

    def place(self, secOrigin, uDir, wDir):
        self.sec_origin = secOrigin
        self.uDir = uDir
        self.wDir = wDir
        verti = -self.t - self.s1 / 2  #-self.s1/2 - self.b
        hori = -self.t - self.s / 2
        t = self.t1 / 2

        origin1 = numpy.array([verti, hori, 0.])
        self.angle1.place(origin1, self.uDir, self.wDir)
        origin2 = numpy.array([hori, verti, 0.])
        self.angle2.place(origin2, self.uDir, self.wDir)
        origin3 = numpy.array([verti, hori, 0.])
        self.angle3.place(origin3, self.uDir, self.wDir)
        origin4 = numpy.array([hori, verti, 0.])
        self.angle4.place(origin4, self.uDir, self.wDir)

        origin5 = numpy.array([-self.l1 / 2 + t, 0., 0.])
        self.plate1.place(origin5, self.uDir, self.wDir)
        origin6 = numpy.array([0., -self.l / 2 - t, 0.])
        self.plate2.place(origin6, self.uDir, self.wDir)
        origin7 = numpy.array([self.l1 / 2 - t, 0., 0.])
        self.plate3.place(origin7, self.uDir, self.wDir)
        origin8 = numpy.array([0., self.l / 2 + t, 0.])
        self.plate4.place(origin8, self.uDir, self.wDir)

    def compute_params(self):
        self.angle1.computeParams()
        self.angle2.computeParams()

        self.angle2.points = self.rotate(self.angle2.points, numpy.pi / 2)
        self.angle3.computeParams()
        self.angle3.points = self.rotate(self.angle3.points, numpy.pi)
        self.angle4.computeParams()
        self.angle4.points = self.rotate(self.angle4.points, 3 * numpy.pi / 2)

        self.plate1.compute_params()
        self.plate2.compute_params()
        self.plate3.compute_params()
        self.plate4.compute_params()

    def create_model(self):
        prism1 = self.angle1.create_model()
        prism2 = self.angle2.create_model()
        prism3 = self.angle3.create_model()
        prism4 = self.angle4.create_model()

        prism5 = self.plate1.create_model()
        prism6 = self.plate2.create_model()
        prism7 = self.plate3.create_model()
        prism8 = self.plate4.create_model()

        prism = BRepAlgoAPI_Fuse(prism1, prism2).Shape()
        prism = BRepAlgoAPI_Fuse(prism, prism3).Shape()
        prism = BRepAlgoAPI_Fuse(prism, prism4).Shape()
        # prism = BRepAlgoAPI_Fuse(prism, prism5).Shape()
        # prism = BRepAlgoAPI_Fuse(prism, prism6).Shape()
        # prism = BRepAlgoAPI_Fuse(prism, prism7).Shape()
        # prism = BRepAlgoAPI_Fuse(prism, prism8).Shape()
        return prism, [prism5, prism6, prism7, prism8]

    def rotate(self, points, x):
        rotated_points = []
        rmatrix = numpy.array([[numpy.cos(x), -numpy.sin(x), 0],
                               [numpy.sin(x), numpy.cos(x), 0], [0, 0, 1]])
        for point in points:
            point = numpy.matmul(rmatrix, point)
            rotated_points.append(point)
        return rotated_points

    def create_marking(self):
        middel_pnt = []
        line = []
        labels = ["z", "y", "u", "v"]
        offset = (self.s + self.s1) / 2
        uvoffset = offset / numpy.sqrt(2)

        z_points = [
            numpy.array([-offset, 0., self.H / 2]),
            numpy.array([offset, 0., self.H / 2])
        ]
        line.append(makeEdgesFromPoints(z_points))

        y_points = [
            numpy.array([0., -offset, self.H / 2]),
            numpy.array([0, offset, self.H / 2])
        ]
        line.append(makeEdgesFromPoints(y_points))

        u_points = [
            numpy.array([-uvoffset, uvoffset, self.H / 2]),
            numpy.array([uvoffset, -uvoffset, self.H / 2])
        ]
        line.append(makeEdgesFromPoints(u_points))

        v_points = [
            numpy.array([-uvoffset, -uvoffset, self.H / 2]),
            numpy.array([uvoffset, uvoffset, self.H / 2])
        ]
        line.append(makeEdgesFromPoints(v_points))

        start_pnt = [[-offset, 0, self.H / 2], [0, -offset + 1, self.H / 2],
                     [uvoffset, -uvoffset, self.H / 2],
                     [uvoffset, uvoffset, self.H / 2]]
        end_pnt = [[offset, 0, self.H / 2], [0, offset - 2, self.H / 2],
                   [-uvoffset, uvoffset, self.H / 2],
                   [-uvoffset, -uvoffset, self.H / 2]]

        return line, [start_pnt, end_pnt], labels