Hacker News new | ask | show | jobs
by robodan 2956 days ago
Complex CAD parts can have complex construction to get things like symmetry and parametric sizing to work correctly. It's much more involved than word processing, for example. If you watch an experienced CAD technician work, they will often wipe the entire part and start over so that the right operators are applied at the right part in the construction sequence.

So CAD part design is a lot like programming, so why not use an actual programming language? That way you get the editing and version control of a programming language.

OpenScad works fairly well for 3D printing, but isn't very good for CNC. It's internal engine understands volume occupied, but not surface shape. This means it can't output standard CAD file formats like STEP or IGES.

CadQuery uses the same engine that's in FreeCad to output STEP and IGES files. It's Python based, so you don't have to learn another language to use it. FreeCad or other CAD programs can then do analysis or generate CNC profiles, for example.

1 comments

I feel like this misses the point of the D in Computer Aided Design.

Engineering and Product design are incredibly visual and collaborative processes that an industry standard CAD package provides the right tools for.

A designer my rough out a component and try it in an assembly, try to explore the ergonomics with human models or the design for manufacture and assembly by exploring it's space claim in respect to the rest of the assembly.

The aesthetics and GUI rendering are also extremely important for exploring where to go with engineering and aesthetic product designs.

Programming itself is incredibly creative, but programming as a CAD tool is, I feel, decidedly antithetic and sterile.

CadQuery is usually used within FreeCAD. Most of what you describe is there because the part just shows up in the CAD workspace like any other part.

The only difference is that you make changes by changing code instead of doing it graphically. In a perfect world, you'd be able to do it either way; but current technology doesn't know how to relate final characteristics back to the line(s) of code that set them.

As parts and their relationship to the whole become more intricate, the programming approach makes more sense.