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
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))
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))
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)
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)
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))
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))
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)
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()
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()
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
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))
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))
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()
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()
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))
def solid_cylinder(): s1 = cm.cylinder(1.0, 2.0) save_iso(s1, 'solid_cylinder.png')
#!/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" } }
def solid_cylinder(): s1 = cm.cylinder(1.0, 2.0) save_iso(s1, 'solid_cylinder.png')
def test_cylinder(self): s1 = cm.cylinder(1.0, 2.0) self.assert_(close(2.0 * math.pi, s1.volume()))
#!/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()
#!/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()
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 }
#!/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_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))
#!/usr/bin/env python # coding: utf-8 r"""Generation script""" from ccad.model import cylinder part__ = cylinder(10., 100.) anchors = {}