Esempio n. 1
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. 2
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. 3
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. 4
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. 5
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