def test_plane_loft(self):
     w1 = cm.ngon(1.0, 5)
     w2 = cm.ngon(2.0, 5)
     w2.translate((0.0, 0.0, 4.0))
     s1 = cm.plane_loft([w1, w2])
     # empirical
     self.assert_(close(22.191, s1.volume(), 0.001))
Exemple #2
0
 def test_plane_loft(self):
     w1 = cm.ngon(1.0, 5)
     w2 = cm.ngon(2.0, 5)
     w2.translate((0.0, 0.0, 4.0))
     s1 = cm.plane_loft([w1, w2])
     # empirical
     self.assert_(close(22.191, s1.volume(), 0.001))
 def test_to_iges(self):
     s1 = cm.plane(cm.ngon(1.0, 3))
     r1 = s1.area()
     s1.to_iges('tmp.igs', brep_mode=1)
     s2 = cm.from_iges('tmp.igs')
     r2 = s2.area()
     self.assert_(close(r1, r2))
 def test_to_step(self):
     s1 = cm.plane(cm.ngon(1.0, 3))
     r1 = s1.area()
     s1.to_step('tmp.stp')
     s2 = cm.from_step('tmp.stp')
     r2 = s2.area()
     self.assert_(close(r1, r2))
 def test_subcenters(self):
     s1 = cm.plane(cm.ngon(1.0, 3))
     cs = s1.subcenters('vertex')
     rt3d2 = math.sqrt(3.0) / 2
     self.assert_(close(cs[0], (-0.5, rt3d2, 0.0)) and
                  close(cs[1], (-0.5, -rt3d2, 0.0)) and
                  close(cs[2], (1.0, 0.0, 0.0)))
Exemple #6
0
 def test_to_brep(self):
     s1 = cm.ngon(1.0, 3)
     r1 = s1.length()
     s1.to_brep('tmp.brp')
     s2 = cm.from_brep('tmp.brp')
     r2 = s2.length()
     self.assert_(close(r1, 5.196, eps=1e-3) and close(r2, 5.196, eps=1e-3))
Exemple #7
0
 def test_to_iges(self):
     s1 = cm.ngon(1.0, 3)
     r1 = s1.length()
     s1.to_iges('tmp.igs', brep_mode=1)
     s2 = cm.from_iges('tmp.igs')
     r2 = s2.length()
     self.assert_(close(r1, 5.196, eps=1e-3) and close(r2, 5.196, eps=1e-3))
Exemple #8
0
 def test_to_iges(self):
     s1 = cm.plane(cm.ngon(1.0, 3))
     r1 = s1.area()
     s1.to_iges('tmp.igs', brep_mode=1)
     s2 = cm.from_iges('tmp.igs')
     r2 = s2.area()
     self.assert_(close(r1, r2))
Exemple #9
0
 def poly(self):
     s1 = cm.ngon(1.0, 3)
     p1 = s1.poly()
     cs = s1.subcenters('vertex')
     self.assert_(
         len(p1) == 4 and close(p1[0], cs[0]) and close(p1[1], cs[1])
         and close(p1[2], cs[2]) and close(p1[3], cs[3]))
Exemple #10
0
 def test_to_step(self):
     s1 = cm.plane(cm.ngon(1.0, 3))
     r1 = s1.area()
     s1.to_step('tmp.stp')
     s2 = cm.from_step('tmp.stp')
     r2 = s2.area()
     self.assert_(close(r1, r2))
Exemple #11
0
 def test_subcenters(self):
     s1 = cm.plane(cm.ngon(1.0, 3))
     cs = s1.subcenters('Vertex')
     rt3d2 = math.sqrt(3.0) / 2
     self.assert_(close(cs[0], (-0.5, rt3d2, 0.0)) and
                  close(cs[1], (-0.5, -rt3d2, 0.0)) and
                  close(cs[2], (1.0, 0.0, 0.0)))
Exemple #12
0
 def test_copy(self):
     s1 = cm.plane(cm.ngon(1.0, 3))
     s2 = s1.copy()
     s1.translate((1.0, 1.0, 1.0))
     self.assert_(
         close(s2.center(), (0.0, 0.0, 0.0))
         and close(s1.center(), (1.0, 1.0, 1.0)))
 def test_to_iges(self):
     s1 = cm.ngon(1.0, 3)
     r1 = s1.length()
     s1.to_iges('tmp.igs', brep_mode=1)
     s2 = cm.from_iges('tmp.igs')
     r2 = s2.length()
     self.assert_(close(r1, 5.196, eps=1e-3) and
                  close(r2, 5.196, eps=1e-3))
 def test_to_brep(self):
     s1 = cm.ngon(1.0, 3)
     r1 = s1.length()
     s1.to_brep('tmp.brp')
     s2 = cm.from_brep('tmp.brp')
     r2 = s2.length()
     self.assert_(close(r1, 5.196, eps=1e-3) and
                  close(r2, 5.196, eps=1e-3))
 def poly(self):
     s1 = cm.ngon(1.0, 3)
     p1 = s1.poly()
     cs = s1.subcenters('vertex')
     self.assert_(len(p1) == 4 and
                  close(p1[0], cs[0]) and
                  close(p1[1], cs[1]) and
                  close(p1[2], cs[2]) and
                  close(p1[3], cs[3]))
Exemple #16
0
def derived_offset_face():
    w1 = cm.ngon(8.0, 6)
    f1 = cm.offset(cm.plane(w1), 1.0)[0]
    v.viewstandard(viewtype='top')
    v.display(w1, (0.0, 0.0, 0.0))
    v.display(f1)
    v.fit()
    v.save('derived_offset_face.png')
    v.clear()
def derived_pipe():
    profile = cm.ngon(2.0, 6)
    e1 = cm.arc(8.0, 0.0, math.pi / 2)
    e2 = cm.segment((0.0, 8.0, 0.0), (-8.0, 8.0, 0.0))
    spine = cm.wire([e1, e2])
    spine.translate((-8.0, 0.0, 0.0))
    spine.rotatex(math.pi / 2)
    s1 = cm.pipe(profile, spine)
    save_iso(s1, 'derived_pipe.png')
def derived_offset_face():
    w1 = cm.ngon(8.0, 6)
    f1 = cm.offset(cm.plane(w1), 1.0)[0]
    v.viewstandard(viewtype='top')
    v.display(w1, (0.0, 0.0, 0.0))
    v.display(f1)
    v.fit()
    v.save('derived_offset_face.png')
    v.clear()
Exemple #19
0
def derived_pipe():
    profile = cm.ngon(2.0, 6)
    e1 = cm.arc(8.0, 0.0, math.pi / 2)
    e2 = cm.segment((0.0, 8.0, 0.0), (-8.0, 8.0, 0.0))
    spine = cm.wire([e1, e2])
    spine.translate((-8.0, 0.0, 0.0))
    spine.rotatex(math.pi / 2)
    s1 = cm.pipe(profile, spine)
    save_iso(s1, 'derived_pipe.png')
 def test_pipe(self):
     profile = cm.ngon(2.0, 6)
     e1 = cm.arc(8.0, 0.0, math.pi / 2)
     e2 = cm.segment((0.0, 8.0, 0.0), (-8.0, 8.0, 0.0))
     spine = cm.wire([e1, e2])
     spine.translate((-8.0, 0.0, 0.0))
     spine.rotatex(math.pi / 2)
     s1 = cm.pipe(profile, spine)
     # empirical
     self.assert_(close(213.732, s1.volume(), 0.001))
Exemple #21
0
 def test_pipe(self):
     profile = cm.ngon(2.0, 6)
     e1 = cm.arc(8.0, 0.0, math.pi / 2)
     e2 = cm.segment((0.0, 8.0, 0.0), (-8.0, 8.0, 0.0))
     spine = cm.Wire([e1, e2])
     spine.translate((-8.0, 0.0, 0.0))
     spine.rotatex(math.pi / 2)
     s1 = cm.pipe(profile, spine)
     # empirical
     self.assert_(close(213.732, s1.volume(), 0.001))
    def test_offset(self):
        w1 = cm.ngon(8.0, 6)
        f1 = cm.offset(cm.plane(w1), 1.0)[0]

        b1 = cm.box(10.0, 10.0, 10.0)
        b1.translate((-5.0, -5.0, 0.0))
        c1 = cm.cylinder(2.5, 20.0)
        c1.translate((0.0, 0.0, -5.0))
        s1 = b1 - c1
        s2 = cm.offset(s1, 1.0)[0]

        # empirical
        self.assert_(close(217.418, f1.area(), 0.001) and
                     close(1608.966, s2.volume(), 0.001))
Exemple #23
0
    def test_offset(self):
        w1 = cm.ngon(8.0, 6)
        f1 = cm.offset(cm.plane(w1), 1.0)[0]

        b1 = cm.box(10.0, 10.0, 10.0)
        b1.translate((-5.0, -5.0, 0.0))
        c1 = cm.cylinder(2.5, 20.0)
        c1.translate((0.0, 0.0, -5.0))
        s1 = b1 - c1
        s2 = cm.offset(s1, 1.0)[0]

        # empirical
        self.assert_(
            close(217.418, f1.area(), 0.001)
            and close(1608.966, s2.volume(), 0.001))
Exemple #24
0
    def test_offset(self):
        w1 = cm.ngon(8.0, 6)
        f1 = cm.offset(cm.plane(w1), 1.0)[0]

        b1 = cm.box(10.0, 10.0, 10.0)
        b1.translate((-5.0, -5.0, 0.0))
        c1 = cm.cylinder(2.5, 20.0)
        c1.translate((0.0, 0.0, -5.0))
        s1 = b1 - c1
        # print("s1 is : %s" % s1)
        assert isinstance(s1, cm.Solid)
        s2 = cm.offset(s1, 1.0)
        # print("s2 is : %s" % s2)
        s2 = s2[0]

        # empirical
        self.assert_(close(217.418, f1.area(), 0.001) and
                     close(1608.966, s2.volume(), 0.001))
Exemple #25
0
    def test_fillet(self):
        s = cm.plane(cm.ngon(1.0, 3))
        s1 = s.copy()
        s1.fillet(0.2)
        r1 = s1.area()

        s1 = s.copy()
        s1.fillet(0.2, [0])
        r2 = s1.area()

        s1 = s.copy()
        s1.fillet(0.2, [(1.0, 0.0, 0.0)])
        r3 = s1.area()

        s1 = s.copy()
        s1.fillet([(0.1, [0]), (0.2, [1]), (0.3, [2])])
        r4 = s1.area()
        # empirical
        self.assert_(
            close(r1, 1.217, eps=0.001) and close(r2, 1.272, eps=0.001)
            and close(r3, 1.272, eps=0.001) and close(r4, 1.203, eps=0.001))
    def test_fillet(self):
        s = cm.plane(cm.ngon(1.0, 3))
        s1 = s.copy()
        s1.fillet(0.2)
        r1 = s1.area()

        s1 = s.copy()
        s1.fillet(0.2, [0])
        r2 = s1.area()

        s1 = s.copy()
        s1.fillet(0.2, [(1.0, 0.0, 0.0)])
        r3 = s1.area()

        s1 = s.copy()
        s1.fillet([(0.1, [0]),
                   (0.2, [1]),
                   (0.3, [2])])
        r4 = s1.area()
        # empirical
        self.assert_(close(r1, 1.217, eps=0.001) and
                     close(r2, 1.272, eps=0.001) and
                     close(r3, 1.272, eps=0.001) and
                     close(r4, 1.203, eps=0.001))
 def test_ngon(self):
     w1 = cm.ngon(2.0, 6)
     self.assert_(close(12.0, w1.length()))
 def test_plane(self):
     w1 = cm.ngon(2.0, 5)
     f1 = cm.plane(w1)
     self.assert_(close(9.511, f1.area(), 0.001))
 def test_bounds(self):
     s1 = cm.plane(cm.ngon(1.0, 3))
     rt3d2 = math.sqrt(3.0) / 2
     print('bounds', s1.bounds())
     self.assert_(close(s1.bounds(),
                        (-0.5, -rt3d2, 0.0, 1.0, rt3d2, 0.0), eps=0.1))
 def test_nearest(self):
     s1 = cm.plane(cm.ngon(1.0, 3))
     i1 = s1.nearest('vertex', [(1.0, 0.0, 0.0)])[0]
     self.assert_(i1 == 2)
Exemple #31
0
 def test_subtolerance(self):
     s1 = cm.plane(cm.ngon(1.0, 3))
     subtols = s1.subtolerance()
     self.assert_(close(subtols, (1e-7, 1e-7, 1e-7), eps=1e-9))
Exemple #32
0
 def test_dump(self):
     s1 = cm.plane(cm.ngon(1.0, 3))
     s1.dump()
     self.assert_(True)
Exemple #33
0
 def test_check(self):
     s1 = cm.plane(cm.ngon(1.0, 3))
     self.assert_(s1.check())
 def test_helical_solid(self):
     profile = cm.ngon(0.2, 3)
     s1 = cm.helical_solid(profile, 2.0, 1.0 / math.pi, 2)
     # empirical
     self.assert_(close(1.346, s1.volume(), 0.001))
 def type(self):
     s1 = cm.plane(cm.ngon(1.0, 3))
     self.assert_(s1.type() == 'plane')
 def test_subshapes(self):
     s1 = cm.plane(cm.ngon(1.0, 3))
     ws = s1.subshapes('wire')
     es = s1.subshapes('edge')
     vs = s1.subshapes('vertex')
     self.assert_(len(vs) == 3 and len(es) == 3 and len(ws) == 1)
Exemple #37
0
#!/usr/bin/env python
# coding: utf-8
r"""Generation script for ISO 4032 nut"""

from ccad.model import prism, filling, ngon, cylinder

m_max = 2.0
s_max = 5.0
d_a_min = 2.5

body = prism(filling(ngon(2 / 3**.5 * s_max / 2., 6)), (0, 0, m_max))

hole = cylinder(d_a_min / 2., m_max)

__shape__ = (body - hole).shape

__anchors__ = {
    "nut_bottom": {
        "p": (0., 0., 0.),
        "u": (0., 0., -1.),
        "v": (1., 0., 0.),
        "dimension": d_a_min
    },
    "nut_top": {
        "p": (0., 0., m_max),
        "u": (0., 0., 1.),
        "v": (1., 0., 0.),
        "dimension": d_a_min
    }
}
 def test_subtolerance(self):
     s1 = cm.plane(cm.ngon(1.0, 3))
     subtols = s1.subtolerance()
     self.assert_(close(subtols, (1e-7, 1e-7, 1e-7), eps=1e-9))
 def test_check(self):
     s1 = cm.plane(cm.ngon(1.0, 3))
     self.assert_(s1.check())
 def test_fix(self):
     s1 = cm.plane(cm.ngon(1.0, 3))
     s1.translate((1.0, 2.0, 3.0))
     s1.fix()
     self.assert_(close(s1.center(), (1.0, 2.0, 3.0)))
Exemple #41
0
 def test_bounds(self):
     s1 = cm.plane(cm.ngon(1.0, 3))
     rt3d2 = math.sqrt(3.0) / 2
     print('bounds', s1.bounds())
     self.assert_(
         close(s1.bounds(), (-0.5, -rt3d2, 0.0, 1.0, rt3d2, 0.0), eps=0.1))
Exemple #42
0
 def wire(self):
     w1 = cm.ngon(1.0, 3)
     s1 = cm.plane(w1)
     w2 = s1.wire()
     self.assert_(close(w1.length(), w2.length()))
Exemple #43
0
 def test_fix(self):
     s1 = cm.plane(cm.ngon(1.0, 3))
     s1.translate((1.0, 2.0, 3.0))
     s1.fix()
     self.assert_(close(s1.center(), (1.0, 2.0, 3.0)))
Exemple #44
0
 def type(self):
     s1 = cm.plane(cm.ngon(1.0, 3))
     self.assert_(s1.type() == 'plane')
Exemple #45
0
 def test_nearest(self):
     s1 = cm.plane(cm.ngon(1.0, 3))
     i1 = s1.nearest('Vertex', [(1.0, 0.0, 0.0)])[0]
     self.assert_(i1 == 2)
Exemple #46
0
def face_plane():
    w1 = cm.ngon(2.0, 5)
    f1 = cm.plane(w1)
    save_top(f1, 'face_plane.png')
Exemple #47
0
def derived_prism():
    f1 = cm.plane(cm.ngon(2.0, 6))
    s1 = cm.prism(f1, (0.0, 0.0, 1.0))
    save_iso(s1, 'derived_prism.png')
 def test_dump(self):
     s1 = cm.plane(cm.ngon(1.0, 3))
     s1.dump()
     self.assert_(True)
Exemple #49
0
 def tolerance(self):
     s1 = cm.plane(cm.ngon(1.0, 3))
     self.assert_(close(s1.tolerance(), 1e-7, eps=1e-9))
Exemple #50
0
def derived_helical_solid():
    profile = cm.ngon(0.2, 3)
    s1 = cm.helical_solid(profile, 2.0, 1.0 / math.pi, 2)
    save_iso(s1, 'derived_helical_solid.png')
Exemple #51
0
def wire_ngon():
    w1 = cm.ngon(2.0, 6)
    save_top(w1, 'wire_ngon.png', (0.0, 0.0, 0.0))
 def test_subshapes(self):
     s1 = cm.ngon(1.0, 3)
     es = s1.subshapes('edge')
     vs = s1.subshapes('vertex')
     self.assert_(len(vs) == 3 and len(es) == 3)
Exemple #53
0
def face_face_from():
    w1 = cm.ngon(2.0, 8)
    w2 = cm.ngon(10.0, 4)
    f2 = cm.plane(w1)
    f1 = cm.face_from(f2, w2)
    save_top(f1, 'face_face_from.png')
 def test_copy(self):
     s1 = cm.plane(cm.ngon(1.0, 3))
     s2 = s1.copy()
     s1.translate((1.0, 1.0, 1.0))
     self.assert_(close(s2.center(), (0.0, 0.0, 0.0)) and
                  close(s1.center(), (1.0, 1.0, 1.0)))
 def test_prism(self):
     f1 = cm.plane(cm.ngon(2.0, 6))
     s1 = cm.prism(f1, (0.0, 0.0, 1.0))
     # empirical
     self.assert_(close(10.392, s1.volume(), 0.001))
 def test_surface(self):
     w1 = cm.ngon(2.0, 8)
     w2 = cm.ngon(10.0, 4)
     f2 = cm.plane(w1)
     f1 = cm.face_from(f2, w2)
     self.assert_(close(200.0, f1.area()))
 def wire(self):
     w1 = cm.ngon(1.0, 3)
     s1 = cm.plane(w1)
     w2 = s1.wire()
     self.assert_(close(w1.length(), w2.length()))
 def test_center(self):
     s1 = cm.ngon(1.0, 3)
     s1.translate((1.0, 2.0, 3.0))
     self.assert_(close(s1.center(), (1.0, 2.0, 3.0)))
head_height = 5.0
key_size = 4.0
socket_depth = 2.5

if length - threaded_length > 0.:
    body = cm.cylinder(threaded_diameter / 2, length) + \
           cm.cylinder(unthreaded_diameter / 2, length - threaded_length)
else:
    body = cm.cylinder(threaded_diameter / 2, length)

socket = cm.translated(
    cm.prism(
        cm.filling
        # ngon is written in a circle of a given radius,
        # the socket definition is the diameter of the
        # circle written in the hexagon
        # -> multiply by 2 / sqrt(3)
        (cm.ngon(2 / 3**.5 * key_size / 2., 6)),
        (0, 0, socket_depth)),
    (0, 0, -head_height))

head = cm.translated(cm.cylinder(head_diameter / 2., head_height),
                     (0, 0, -head_height)) - socket
part = head + body

if __name__ == "__main__":
    import ccad.display as cd
    v = cd.view()
    v.display(part)
    cd.start()
 def tolerance(self):
     s1 = cm.plane(cm.ngon(1.0, 3))
     self.assert_(close(s1.tolerance(), 1e-7, eps=1e-9))