| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import cadquery as cq
- from cadquery.occ_impl.exporters import *
- from ocp_vscode import show
- hole_diam = 5
- hole_dist = 24.5
- bar_width = 8
- bar_thickness = 2.75
- height_padding = 2
- lever_length = 32
- lever_max_thickness = 8
- bar_height = hole_dist + hole_diam + 2*height_padding
- clip = (
- cq.Workplane("XY") # Start in the XY plane
- .box(bar_width, bar_height,bar_thickness)
- .edges("|Z and >Y or |Z and >X")
- .fillet(2)
- .faces(">Z")
- .workplane()
- .rect(0,hole_dist,forConstruction=True)
- .vertices(">X")
- .circle(hole_diam/2)
- .cutThruAll()
- )
- upper_lever = cq.Sketch().trapezoid(bar_thickness, lever_length,100, angle=90).vertices("<X").fillet(1)
- upper_thick_lever = upper_lever.moved(z=-bar_thickness/2)
- bottom = cq.Sketch().trapezoid(bar_thickness, lever_length/4,100, angle=90).vertices("<X").fillet(1).moved(x = 3*lever_length/8, z=(height_padding+hole_diam))
- # extr_trapezoid = cq.Workplane().placeSketch(upper_lever, lower_lever).loft()
- lever = (
- clip.faces("<Y")
- .workplane(
- offset=-(height_padding+hole_diam),
- origin=(-(lever_length/2 + bar_width/2), 0, 0)
- )
- .placeSketch(upper_lever, bottom).loft()
- )
- lever_thick = (
- clip.faces("<Y")
- .workplane(
- offset=-(height_padding+hole_diam),
- origin=(-(lever_length/2 + bar_width/2), 0, 0)
- )
- .placeSketch(upper_lever, upper_thick_lever).loft()
- )
- result = clip.union(lever).union(lever_thick)
- show(result)
- # export the box as a STEP file
- with open("/home/sgruen/Dokumente/cadquery/mill-endstop-lever.step", "w") as fp:
- cq.exporters.exportShape(result, ExportTypes.STEP, fp)
|