from cadquery import exporters from cq_warehouse.extensions import Workplane from cq_warehouse.fastener import * from cq_warehouse.thread import * from cqmore.curve import archimedeanSpiral, circle from cqmore.polygon import regularPolygon, star from cqmore.polyhedron import polarZonohedra, Polyhedron, superellipsoid from svg_path import addSvgPath from svgpathtools import svg2paths import cadquery as cq import cqmore from cq_gears import ( SpurGear, Worm, HerringboneGear, RackGear, HerringboneRackGear, BevelGear, BevelGearPair, ) Workplane = cqmore.extend(Workplane) Workplane.addSvgPath = addSvgPath adapter_diameter = 30.3 adapter_radius = adapter_diameter / 2.0 adapter_height = 50 adapter_thickness = 3 # how thick the side is end_part_height = 150 # how long the end part is end_part_width = 10 side_cut = Workplane("ZX") side_cut = ( side_cut.workplane(offset=-end_part_width) .move(-(adapter_height + end_part_height - 50), 43) .makePolygon( regularPolygon( nSides=3, radius=60, thetaStart=30, thetaEnd=360 - 30, ) ) .extrude(50) ) result = Workplane() result = result.cylinder(adapter_height, adapter_radius + adapter_thickness) result = result.workplane(offset=5).cylinder( adapter_height, adapter_radius, combine="cut" ) result = result.workplane(offset=-adapter_height * 1.9).box( end_part_width, end_part_width, end_part_height ) result = result.workplane(offset=0).box(8, 8, 400, combine="cut") result = result.cut(side_cut) cq.exporters.export(result, "/home/deck/model_files/vacuum_adapter.stl") try: show_object(result) except NameError: pass