2018-12-29 18:44:08 -05:00
|
|
|
import cadquery as cq
|
|
|
|
|
|
|
|
# X axis line length 20.0
|
|
|
|
path = cq.Workplane("XZ").moveTo(-10, 0).lineTo(10, 0)
|
|
|
|
|
|
|
|
# Sweep a circle from diameter 2.0 to diameter 1.0 to diameter 2.0 along X axis length 10.0 + 10.0
|
2019-11-30 14:57:29 -05:00
|
|
|
defaultSweep = (cq.Workplane("YZ").workplane(offset=-10.0).circle(2.0).
|
|
|
|
workplane(offset=10.0).circle(1.0).
|
|
|
|
workplane(offset=10.0).circle(2.0).sweep(path, multisection=True))
|
2018-12-29 18:44:08 -05:00
|
|
|
|
|
|
|
# We can sweep thrue different shapes
|
2019-11-30 14:57:29 -05:00
|
|
|
recttocircleSweep = (cq.Workplane("YZ").workplane(offset=-10.0).rect(2.0, 2.0).
|
|
|
|
workplane(offset=8.0).circle(1.0).workplane(offset=4.0).circle(1.0).
|
|
|
|
workplane(offset=8.0).rect(2.0, 2.0).sweep(path, multisection=True))
|
2018-12-29 18:44:08 -05:00
|
|
|
|
2019-11-30 14:57:29 -05:00
|
|
|
circletorectSweep = (cq.Workplane("YZ").workplane(offset=-10.0).circle(1.0).
|
|
|
|
workplane(offset=7.0).rect(2.0, 2.0).workplane(offset=6.0).rect(2.0, 2.0).
|
|
|
|
workplane(offset=7.0).circle(1.0).sweep(path, multisection=True))
|
2018-12-29 18:44:08 -05:00
|
|
|
|
|
|
|
|
|
|
|
# Placement of the Shape is important otherwise could produce unexpected shape
|
2019-11-30 14:57:29 -05:00
|
|
|
specialSweep = (cq.Workplane("YZ").circle(1.0).workplane(offset=10.0).rect(2.0, 2.0).
|
|
|
|
sweep(path, multisection=True))
|
2018-12-29 18:44:08 -05:00
|
|
|
|
|
|
|
# Switch to an arc for the path : line l=5.0 then half circle r=4.0 then line l=5.0
|
2019-11-30 14:57:29 -05:00
|
|
|
path = (cq.Workplane("XZ").moveTo(-5, 4).lineTo(0, 4).
|
|
|
|
threePointArc((4, 0), (0, -4)).lineTo(-5, -4))
|
2018-12-29 18:44:08 -05:00
|
|
|
|
|
|
|
# Placement of different shapes should follow the path
|
|
|
|
# cylinder r=1.5 along first line
|
|
|
|
# then sweep allong arc from r=1.5 to r=1.0
|
|
|
|
# then cylinder r=1.0 along last line
|
2019-11-30 14:57:29 -05:00
|
|
|
arcSweep = (cq.Workplane("YZ").workplane(offset=-5).moveTo(0, 4).circle(1.5).
|
|
|
|
workplane(offset=5).circle(1.5).
|
|
|
|
moveTo(0, -8).circle(1.0).
|
|
|
|
workplane(offset=-5).circle(1.0).
|
|
|
|
sweep(path, multisection=True))
|
2018-12-29 18:44:08 -05:00
|
|
|
|
|
|
|
|
|
|
|
# Translate the resulting solids so that they do not overlap and display them left to right
|
|
|
|
show_object(defaultSweep)
|
|
|
|
show_object(circletorectSweep.translate((0, 5, 0)))
|
|
|
|
show_object(recttocircleSweep.translate((0, 10, 0)))
|
|
|
|
show_object(specialSweep.translate((0, 15, 0)))
|
|
|
|
show_object(arcSweep.translate((0, -5, 0)))
|
|
|
|
|
|
|
|
|