40 lines
2.1 KiB
Python
40 lines
2.1 KiB
Python
import cadquery as cq
|
|
|
|
# These can be modified rather than hardcoding values for each dimension.
|
|
width = 3.0 # The width of the plate
|
|
height = 4.0 # The height of the plate
|
|
thickness = 0.25 # The thickness of the plate
|
|
polygon_sides = 6 # The number of sides that the polygonal holes should have
|
|
polygon_dia = 1.0 # The diameter of the circle enclosing the polygon points
|
|
|
|
# Create a plate with two polygons cut through it
|
|
# 1. Establishes a workplane that an object can be built on.
|
|
# 1a. Uses the named plane orientation "front" to define the workplane, meaning
|
|
# that the positive Z direction is "up", and the negative Z direction
|
|
# is "down".
|
|
# 2. A 3D box is created in one box() operation to represent the plate.
|
|
# 2a. The box is centered around the origin, which creates a result that may
|
|
# be unituitive when the polygon cuts are made.
|
|
# 3. 2 points are pushed onto the stack and will be used as centers for the
|
|
# polygonal holes.
|
|
# 4. The two polygons are created, on for each point, with one call to
|
|
# polygon() using the number of sides and the circle that bounds the
|
|
# polygon.
|
|
# 5. The polygons are cut thru all objects that are in the line of extrusion.
|
|
# 5a. A face was not selected, and so the polygons are created on the
|
|
# workplane. Since the box was centered around the origin, the polygons end
|
|
# up being in the center of the box. This makes them cut from the center to
|
|
# the outside along the normal (positive direction).
|
|
# 6. The polygons are cut through all objects, starting at the center of the
|
|
# box/plate and going "downward" (opposite of normal) direction. Functions
|
|
# like cutBlind() assume a positive cut direction, but cutThruAll() assumes
|
|
# instead that the cut is made from a max direction and cuts downward from
|
|
# that max through all objects.
|
|
result = cq.Workplane("front").box(width, height, thickness) \
|
|
.pushPoints([(0, 0.75), (0, -0.75)]) \
|
|
.polygon(polygon_sides, polygon_dia) \
|
|
.cutThruAll()
|
|
|
|
# Displays the result of this script
|
|
build_object(result)
|