Getting Started
First Example
Let’s start with a simple box:
Now we fillet the corners. We choose the edges with the first argument for Body.fillet()
method.
"|Z"
selects all edges parallel to Z axis.
The second argument is the radius of the fillet.
Next we add a little chamfer to the top and bottom edges. Again, the first argument selects the edges to work on.
"#Z"
selects all edges perpendicular to Z axis, that is, parallel to the XY plane.
We continue by creating a sketch and drawing a heart. We start with a square.
Then we add two circles at the center of two of the sides. The operation is a Boolean union, so the circles are merged with the square.
sketch = cadscript.make_sketch()
sketch.add_rect(12, 12)
sketch.add_circle(diameter=12, positions=[(6, 0), (0, 6)])
Finally, we place the sketch on the top face of our object, rotate it 45 degrees, and use it to cut a hole by extruding it down (negative value).
result = cadscript.make_box(40, 30, 4)
result.fillet("|Z", 5)
result.chamfer("#Z", 0.8)
sketch = cadscript.make_sketch()
sketch.add_rect(12, 12)
sketch.add_circle(diameter=12, positions=[(6, 0), (0, 6)])
result.cut_extrude(">Z", sketch.rotate(45), -4)
Second Example
In this example we build a complex object by
creating two sketches
extruding them
intersecting the two extrusions
Let’s start with the first sketch. We add a rectangle with width 70 and height 30, centered at the origin.
Now we add chamfers. “>X” selects all vertices with maximum X coordinate. This will add a chamfer at the corners at the right side of the rectangle. The chamfer will be symmetric, with a distance of 10mm.
We add another rectangle, this time with width 50 and height 20. This time, the centering is done along the Y axis only. The new rectangle will be “added”, that is, it will be unioned with the first rectangle. After that we add a circle with diameter 30, its center at x=50,y=0.
Now we cut a rectangle from the sketch. The dimension in x direction is here given by a tuple. The first value is the start position, the second value is the end position. In y direction, the dimension is 16mm. It will be centered, so it will range from -8 to +8 in y direction.
Now we do a couple of fillets. “<X” selects all vertices with minimum X coordinate. You can invert that by using “not <X”, which selects all vertices but the ones with minimum X coordinate.
Cutting a circle from the sketch, centered at x=50, y=0 with diameter 16.
now we create the second sketch. We start with a rectangle and a circle.
sketch2 = cadscript.make_sketch()
sketch2.add_rect(70, 5, center=False)
sketch2.add_circle(d=26, pos=(0, 10))
We add a fillet now. We want only the point where the circle and the rectangle meet at a sharp angle. The search string “>>X” sorts all points (also called vertices) in positive X direction. The “[1]” selects the second point in that list (first in the list has index 0), which is the one we want. “>>X[0]” would select the point where the circle and the rectangle meet at the bottom. “>>X[2]” returns the corners of the rectangle at the right side. Here two points are selected, because they both have the same X coordinate.
Now we cut a circle and a rectangle from the sketch The circle is centered at x=0,y=10 with diameter 12. The rectangle ranges from -50 to 50 in x direction and -100 to 0 in y direction, effectively cutting off the lower half of the sketch.
Now we place the first sketch on the XY plane and make an extrusion. The extrusion will happen perpendicular to the plane, that is, in positive Z direction.
Now we do the same for the second sketch. We use the XZ plane this time, so the extrusion will happen in Y direction. The extrusion amount is given as a tuple, the first value is the start position, the second value is the end position.
Finally, we intersect the two extrusions. This performs a boolean intersection of the two bodies.
The complete script looks like this:
sketch1 = cadscript.make_sketch()
sketch1.add_rect(70, 30)
sketch1.chamfer(">X", 10)
sketch1.add_rect(50, 20, center="Y")
sketch1.add_circle(d=30, pos=(50, 0))
sketch1.cut_rect((-50, 20), 16, center="Y")
sketch1.fillet("not <X", 4)
sketch1.cut_circle(d=16, pos=(50, 0))
sketch2 = cadscript.make_sketch()
sketch2.add_rect(70, 5, center=False)
sketch2.add_circle(d=26, pos=(0, 10))
sketch2.fillet(">>X[1]", 15)
sketch2.cut_circle(d=12, pos=(0, 10))
sketch2.cut_rect(100, (-100, 0), center="X")
extr1 = cadscript.make_extrude("XY", sketch1, 30)
extr2 = cadscript.make_extrude("XZ", sketch2, (-20, 20))
result = extr2.intersect(extr1)