Exemplo n.º 1
0
    def geometry(self):
        r"""Part geometry

        Returns
        -------
        Solid : the tube with 2 tails as a ccad Solid

        """
        # Create the tails
        left_tail = cm.box(self.tail_length + self.outer_diameter / 2,
                           self.tail_thickness, self.length)
        right_tail = cm.box(self.tail_length + self.outer_diameter / 2,
                            self.tail_thickness, self.length)
        # Position the tails
        left_tail.translate((0, -self.tail_spacing / 2 - self.tail_thickness,
                             0))
        right_tail.translate((0, self.tail_spacing / 2, 0))

        # Create the tube
        # TODO : why not use Tube
        tube_ = cm.cylinder(self.outer_diameter / 2, self.length) -\
            cm.cylinder(self.inner_diameter / 2, self.length)

        # Remove the part of the tails that are inside the tube
        trimmed_tails = left_tail + right_tail -\
            cm.cylinder(self.inner_diameter / 2, self.length)

        # Fuse the tube and the tails
        union = tube_ + trimmed_tails
        union.fillet(0.5, [10, 37])
        union.fillet(2.5, [21, 47])

        return union
Exemplo n.º 2
0
 def inner_wires(self):
     c1 = cm.cylinder(1.0, 1.0)
     c2 = cm.cylinder(2.0, 1.0)
     s1 = c2 - c1
     f1 = s1.nearest('Face', [(0.0, 0.0, 1.0)])[0]
     iw = f1.inner_wires()[0]
     self.assert_(close(iw.length(), 2 * math.pi * 1.0))
Exemplo n.º 3
0
 def inner_wires(self):
     c1 = cm.cylinder(1.0, 1.0)
     c2 = cm.cylinder(2.0, 1.0)
     s1 = c2 - c1
     f1 = s1.nearest('face', [(0.0, 0.0, 1.0)])[0]
     iw = f1.inner_wires()[0]
     self.assert_(close(iw.length(), 2 * math.pi * 1.0))
Exemplo n.º 4
0
    def geometry(self):
        r"""Part geometry

        Returns
        -------
        Solid : the tube as a ccad Solid

        """
        return cm.cylinder(self.outer_diameter / 2, self.length) - \
            cm.cylinder(self.inner_diameter / 2, self.length)
Exemplo n.º 5
0
    def geometry(self):
        r"""Geometry creation

        Returns
        -------
        Solid : the tube end as a ccad Solid

        """
        return cm.cylinder(self.big_diameter / 2, self.big_diameter_length) \
            + cm.cylinder(self.small_diameter / 2, self.big_diameter_length +
                          self.small_diameter_length)
Exemplo n.º 6
0
 def test_slice(self):
     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
     f1 = cm.slice(s1, z=1.0)[0]
     self.assert_(close(100.0 - math.pi * 2.5 ** 2, f1.area(), 0.001))
Exemplo n.º 7
0
 def test_slice(self):
     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
     f1 = cm.slice_(s1, z=1.0)[0]
     self.assert_(close(100.0 - math.pi * 2.5**2, f1.area(), 0.001))
Exemplo n.º 8
0
    def geometry(self):
        r"""Geometry creation, using the geometry of the TubeEnd parent class

        Returns
        -------
        Solid : the tube end with blind hole as a ccad solid

        """
        return super(TubeEndWithBlindHole, self).geometry - \
            cm.cylinder(self.hole_diameter / 2, self.hole_depth)
Exemplo n.º 9
0
def derived_slice():
    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
    f1 = cm.slice(s1, z=1.0)[0]
    v.viewstandard(viewtype='top')
    v.display(f1)
    v.fit()
    v.save('derived_slice.png')
    v.clear()
Exemplo n.º 10
0
def derived_slice():
    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
    f1 = cm.slice_(s1, z=1.0)[0]
    v.viewstandard(viewtype='top')
    v.display(f1)
    v.fit()
    v.save('derived_slice.png')
    v.clear()
Exemplo n.º 11
0
Arquivo: parts.py Projeto: bmjjr/ccad
    def geometry(self):
        r"""Part geometry

        Returns
        -------
        Solid : the tube with a guide as a ccad solid

        """
        main_cyl = cm.cylinder(self.outer_diameter / 2, self.length)
        small_tube = cm.cylinder(
            self.thickness_around_small_hole + self.small_hole_diameter / 2 +
            0.1, self.length)
        small_hole = cm.cylinder(self.small_hole_diameter / 2, self.length)
        small_tube.translate(
            (self.outer_diameter / 2 + self.small_hole_distance_to_od +
             self.small_hole_diameter / 2, 0, 0))
        small_hole.translate(
            (self.outer_diameter / 2 + self.small_hole_distance_to_od +
             self.small_hole_diameter / 2, 0, 0))

        return cm.fillet_fuse(main_cyl, small_tube, 200) -\
            cm.cylinder(self.inner_diameter / 2, self.length) - small_hole
Exemplo n.º 12
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))
Exemplo n.º 13
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))
Exemplo n.º 14
0
def derived_offset_solid():
    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]
    v.viewstandard(viewtype='iso')
    v.display(s1, (1.0, 0.0, 0.0))
    edges = s1.subshapes('edge')
    for edge in edges:
        v.display(edge, (0.0, 0.0, 0.0))
    v.display(s2, transparency=0.5)
    v.fit()
    v.save('derived_offset_solid.png')
    v.clear()
Exemplo n.º 15
0
def derived_offset_solid():
    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]
    v.viewstandard(viewtype='iso')
    v.display(s1, (1.0, 0.0, 0.0))
    edges = s1.subshapes('edge')
    for edge in edges:
        v.display(edge, (0.0, 0.0, 0.0))
    v.display(s2, transparency=0.5)
    v.fit()
    v.save('derived_offset_solid.png')
    v.clear()
Exemplo n.º 16
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))
Exemplo n.º 17
0
def solid_cylinder():
    s1 = cm.cylinder(1.0, 2.0)
    save_iso(s1, 'solid_cylinder.png')
Exemplo n.º 18
0
#!/usr/bin/env python
# coding: utf-8
r"""Generation script"""

from ccad.model import cylinder

part = cylinder(10., 100.)
anchors = list()
#!/usr/bin/env python
# coding: utf-8
r"""Generation script for ISO 4014 screw"""

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

k_max = 1.225
s_max = 3.2
l_g_max = 3.0
d_s_max = 1.6
d_s_min = 1.46
l_max = 12.35

head = translated(
    prism(filling(ngon(2 / 3**.5 * s_max / 2., 6)), (0, 0, k_max)),
    (0., 0., -k_max))

threaded = cylinder(d_s_min / 2., l_max)
unthreaded = cylinder(d_s_max / 2., l_g_max)

__shape__ = (head + threaded + unthreaded).shape
__anchors__ = {
    "head_bottom": {
        "p": (0., 0., 0.),
        "u": (0., 0., -1.),
        "v": (1., 0., 0.),
        "dimension": d_s_max,
        "description": "screw head on plane"
    }
}
Exemplo n.º 20
0
def solid_cylinder():
    s1 = cm.cylinder(1.0, 2.0)
    save_iso(s1, 'solid_cylinder.png')
Exemplo n.º 21
0
 def test_cylinder(self):
     s1 = cm.cylinder(1.0, 2.0)
     self.assert_(close(2.0 * math.pi, s1.volume()))
Exemplo n.º 22
0
#!/usr/bin/python
# coding: utf-8

from ccad.model import cylinder

outer_diameter = 19.0
inner_diameter = 10.0
thickness = 7.0

flange_diameter = 21.0
flange_thickness = 1.5

part = cylinder(outer_diameter / 2, thickness) - cylinder(
    inner_diameter / 2, thickness)

flange = cylinder(flange_diameter / 2, flange_thickness) - cylinder(
    outer_diameter / 2, flange_thickness)
part += flange

if __name__ == '__main__':
    import ccad.display as cd
    v = cd.view()
    v.display(part)
    cd.start()
Exemplo n.º 23
0
#!/usr/bin/python
# coding: utf-8

from ccad.model import cylinder

outer_diameter = 22.0
inner_diameter = 8.0
thickness = 7.0

part = cylinder(outer_diameter / 2, thickness) - cylinder(inner_diameter / 2, thickness)

if __name__ == '__main__':
    import ccad.display as cd
    v = cd.view()
    v.display(part)
    cd.start()
Exemplo n.º 24
0
e = input["e"]
l = input["l"]
w = input["w"]

hole_d = 2

hole_positions = ((l / 4, -w / 4), (l / 4, w / 4), (-l / 4, -w / 4), (-l / 4,
                                                                      w / 4))

plate = translated(box(l, w, e), (-l / 2, -w / 2, 0))

cylinders = list()

for (x, y) in hole_positions:
    cylinders.append(translated(cylinder(hole_d / 2., e), (x, y, 0)))

for c in cylinders:
    plate -= c

__shape__ = plate.shape

__anchors__ = dict()
for i, (x, y) in enumerate(hole_positions, 1):
    __anchors__[str(i)] = {
        "p": (x, y, e),
        "u": (0., 0., -1.),
        "v": (1., 0., 0.),
        "dimension": hole_d,
        "description": "%s mm hole" % hole_d
    }
Exemplo n.º 25
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
    }
}
Exemplo n.º 26
0
 def test_cylinder(self):
     s1 = cm.cylinder(1.0, 2.0)
     self.assert_(close(2.0 * math.pi, s1.volume()))
from __future__ import division

import ccad.model as cm

length = 90.0
threaded_length = 22.0
unthreaded_diameter = 5.0
threaded_diameter = 4.48
head_diameter = 8.5
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))
Exemplo n.º 28
0
#!/usr/bin/env python
# coding: utf-8
r"""Generation script"""

from ccad.model import cylinder

part__ = cylinder(10., 100.)
anchors = {}