Add a new draft.
This commit is contained in:
parent
377ebe3517
commit
d9436240f6
|
|
@ -0,0 +1,63 @@
|
|||
---
|
||||
title: "CadQuery Direct API"
|
||||
author: "James Pace"
|
||||
date: "2024/02/06"
|
||||
---
|
||||
|
||||
[CadQuery][cadquery-homepage] is a "CAD via Python" library.
|
||||
Instead of using a WYSIWYG editor to generate CAD models, when using CadQuery
|
||||
you write Python code that does the same operations.
|
||||
|
||||
The most popular code based CAD tool is [OpenSCAD][openscad-homepage].
|
||||
Uins CadQuery feels much closer to using a "normal" CAD package, in my opinion,
|
||||
than using OpenSCAD, in the sense that with CadQuery and normal CAD packages you
|
||||
think in terms of operations on sketches or faces that compose into the final part.
|
||||
At least the little bit of OpenSCAD didn't feel like that, though my experience with
|
||||
OpenSCAD is extremely limited.
|
||||
|
||||
CadQuery has three API layers (in order from highest to lowest level: fluent, direct, OCCT).
|
||||
Fluent is the suggested level with the most documentation.
|
||||
It feels the closest to normal CAD.
|
||||
The mental model is you start with a workplane which is a root of a tree and then
|
||||
perform operations which add elements to the tree with the modifications needed to build
|
||||
the desired part.
|
||||
For example:
|
||||
```python
|
||||
import cadquery as cq
|
||||
|
||||
result = (
|
||||
cq.Workplane("front")
|
||||
.circle(2.0)
|
||||
.pushPoints([(1.5, 0), (0, 1.5), (-1.5, 0), (0, -1.5)])
|
||||
.circle(0.25)
|
||||
.extrude(0.125)
|
||||
)
|
||||
```
|
||||
will:
|
||||
1. Make a workplane.
|
||||
2. Add a single 2D circle.
|
||||
3. Add four points to the stack of the tree.
|
||||
4. Operate on those four points by drawing smaller circles at each point.
|
||||
5. Extrude the result.
|
||||
|
||||
This may seem confusing, but if you've worked with Fusion360 or Creo, you've basically done
|
||||
the same thing (see the timeline in the bottom of the window in Fusion360 or the history in Creo),
|
||||
and I've found that it clicks, what's going on isn't that hard to work out.
|
||||
|
||||
What is a pain to work out is ehen something goes wrong, its very hard to introspect what's happening
|
||||
at each step.
|
||||
You don't have to write everything in basically one line like I did above, but based on the examples,
|
||||
that's basically the suggested the way.
|
||||
Even if you didn't write everything on one line, the actions in each of the lines is extremely dependent
|
||||
on state hidden in the workplane that is basically impossible to tease out.
|
||||
|
||||
What I've found more challenging is it is really hard to organize things in a way that allows for code/shape
|
||||
reuse.
|
||||
Specifically, I've worked on two projects where I've wanted to reuse idenctically dimensioned 2d shape in
|
||||
multiple parts.
|
||||
The direct mode API make this much easier.
|
||||
|
||||
|
||||
[cadquery-homepage]: https://cadquery.readthedocs.io/en/latest/index.html
|
||||
[openscad-homepage]: https://openscad.org/
|
||||
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: "Draft"
|
||||
author: "James Pace"
|
||||
date: "2024/01/01"
|
||||
---
|
||||
Loading…
Reference in New Issue