You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
1.6 KiB

from cadquery import exporters
from cq_warehouse.extensions import Workplane
import cadquery as cq
result = Workplane()
length = 27
width = 10
height = 30
rod_diameter = 11.0
rod_height = 150
rod_radius = rod_diameter / 2.0
female_hole_height = rod_height / 3.0
rod_female = Workplane()
rod_female = rod_female.cylinder(rod_height, rod_radius)
rod_female = rod_female.workplane(
offset=(rod_height / 2.0) - female_hole_height / 2
).cylinder(female_hole_height, (rod_radius / 2.0) + 0.12, combine="cut")
rod_female = rod_female.workplane(
offset=-(rod_height / 2.0) - (female_hole_height / 2) + 20
).cylinder(female_hole_height - 10, rod_radius / 2.0)
rod_male = Workplane()
rod_male = rod_male.cylinder(rod_height, rod_radius)
rod_male = rod_male.workplane(
offset=(rod_height / 2.0) + (female_hole_height / 2) - 10
).cylinder(female_hole_height - 10, rod_radius / 2.0)
# l, w, h
result = result.box(length, width, height)
result = (
result.workplane(offset=-13)
.center(0, 0)
.box(length / 2, width, height + 13.61, combine="cut")
)
result = (
result.workplane(offset=-30)
.center(10, 0)
.box(length / 2, width, height, combine="cut")
)
result = result.workplane(offset=-height / 2).center(-30, -2.5).box(20, 5, 5)
result = result.workplane(offset=-height / 2 + 10).center(-7.5, 0).box(5, 5, 20)
cq.exporters.export(result, "/home/deck/model_files/curtain_holder.step")
cq.exporters.export(rod_female, "/home/deck/model_files/curtain_rod_female.step")
cq.exporters.export(rod_male, "/home/deck/model_files/curtain_rod_male.step")
try:
show_object(result)
except NameError:
pass