예제 #1
0
    def test_cube_cube_coplanar_touchface(self):
        w = mt.createCube(marker=1)
        w.scale([2.0, 2.0, 2.0])

        c = mt.createCube(marker=2)
        c.translate([1.5, 0.0, 0.0])
        w = mt.mergePLC3D([w, c])
        self.assertEqual(w.nodeCount(), 8 + 8)
        self.assertEqual(w.boundaryCount(), 6 + 5)

        c = mt.createCube(marker=3)
        c.translate([-1.5, 0.0, 0.0])
        w = mt.mergePLC3D([w, c])
        self.assertEqual(w.nodeCount(), 8 + 8 + 8)
        self.assertEqual(w.boundaryCount(), 6 + 5 + 5)

        c = mt.createCube(marker=4)
        c.translate([0.0, 1.5, 0.0])
        w = mt.mergePLC3D([w, c])
        self.assertEqual(w.nodeCount(), 8 + 8 + 8 + 8)
        self.assertEqual(w.boundaryCount(), 6 + 5 + 5 + 5)

        c = mt.createCube(marker=5)
        c.translate([0.0, 0.0, -1.5])
        w = mt.mergePLC3D([w, c])
        self.assertEqual(w.nodeCount(), 8 + 8 + 8 + 8 + 8)
        self.assertEqual(w.boundaryCount(), 6 + 5 + 5 + 5 + 5)

        pg.show(w)
        # w.exportPLC('t.poly')
        pg.show(mt.createMesh(w))
예제 #2
0
    def test_cube_cube_equalface(self):
        w = mt.createCube(marker=1)
        c = mt.createCube(marker=2)
        c.translate([c.xmax() - w.xmin(), 0.0])

        w = mt.mergePLC3D([w, c])
        self.assertEqual(w.nodeCount(), 8 + 4)
        self.assertEqual(w.boundaryCount(), 6 + 5)

        c = mt.createCube(marker=3)
        c.translate([0.0, w.ymax() - c.ymin(), 0.0])
        w = mt.mergePLC3D([w, c])
        self.assertEqual(w.nodeCount(), 8 + 4 + 4)
        self.assertEqual(w.boundaryCount(), 6 + 5 + 5)

        c = mt.createCube(marker=4)
        c.translate([0.0, 0.0, c.zmax() - w.zmin()])
        w = mt.mergePLC3D([c, w])
        self.assertEqual(w.nodeCount(), 8 + 4 + 4 + 4)
        self.assertEqual(w.boundaryCount(), 6 + 5 + 5 + 5)

        c = mt.createCube(marker=5)
        c.translate([0.0, w.ymax() - c.ymin(), c.zmax() - w.zmin()])
        w = mt.mergePLC3D([c, w])
        self.assertEqual(w.nodeCount(), 8 + 4 + 4 + 4 + 6)
        self.assertEqual(w.boundaryCount(), 6 + 5 + 5 + 5 + 6)

        c = mt.createCube(marker=6)
        c.translate([0.0, c.ymax() - w.ymin(), c.zmax() - w.zmin()])
        w = mt.mergePLC3D([w, c])
        self.assertEqual(w.nodeCount(), 8 + 4 + 4 + 4 + 6 + 0)
        self.assertEqual(w.boundaryCount(), 6 + 5 + 5 + 5 + 6 + 3)

        # w.exportPLC('t.poly')
        pg.show(mt.createMesh(w))
예제 #3
0
    def test_cyl_on_cyl(self):
        # merge only works if smaller face merged into larger face on contact plane
        segs = 12
        c1 = mt.createCylinder(radius=2, nSegments=segs, boundaryMarker=1)
        c2 = mt.createCylinder(radius=1, nSegments=segs, boundaryMarker=2)
        c1.translate([0, 0, 0.5])
        c2.translate([0, 0, -0.5])

        w = mt.mergePLC3D([c1, c2])

        self.assertEqual(w.nodeCount(), segs * 2 * 2)
        self.assertEqual(w.boundaryCount(), segs * 2 + 3)
예제 #4
0
    def test_smallcube_in_bigcube(self):
        """
        A small cube in a bigger one, creating two subfaces.
        author: @frodo4fingers
        """
        w = mt.createCube(marker=1)
        c = mt.createCube(size=[0.5, 1.0, 1.0], marker=2)

        w = mt.mergePLC3D([w, c])
        self.assertEqual(w.nodeCount(), 8 + 8)
        self.assertEqual(w.boundaryCount(), 8)

        # will not work until edge intersection is working
        # d = mt.createCube(size=[0.8, 1.0, 1.0],
        #                   pos=[0.1, 0.0, 1.0],
        #                   marker=3)
        # w = mt.mergePLC3D([w, d])
        # self.assertEqual(w.nodeCount(), 8+8)
        # self.assertEqual(w.boundaryCount(), 8)

        # print(w)
        pg.show(w)
        pg.show(mt.createMesh(w))
예제 #5
0
 def test_cube_cube_same(self):
     c1 = mt.createCube()
     c2 = mt.createCube()
     m = mt.mergePLC3D([c1, c2])
     self.assertEqual(c1.nodeCount(), m.nodeCount())
     self.assertEqual(c1.boundaryCount(), m.boundaryCount())