Harry R. Schwartz

Software engineer, nominal scientist, gentleman of the internet. Member, ←Hotline Webring→.

CAD Paper-reading Group Notes

Published 08 Nov 2015. Tags: computer-science.

I’ve recently gotten involved with a paper-reading group at the Institute down the street, where we’re reading some papers on CAD and CAM systems. These are some rough notes from the first meeting:

Discussing Adrian Bowyer’s Computer-aided Design and Manufacturing.

About 14 people showed up! Half physical, half virtual.

Questions & Discussion

Why is one good at calculating volume, and one at surface area? BREPs are easy for surface area, since you’re just summing up the surfaces. But volume is trickier, since topologies could be bizarre, and aren’t obvious from the representation. You could still do it, it’s just harder.

How does Solidworks represent CSG? Still ultimately BREPs in the background. Probably some scary stuff in there.

Two main B-Rep kernels in common use: Parasolid and ACIS.

Rhino uses B-Rep/NURBS. Not really for building things that are manufacturable.

Are there any open kernels out there (aside from Open CASCADE)? Apparently Open CASCADE is a mess to maintain, so it’s pretty limiting. It’s huge, not modular, limited unit testing.

What’s the deal with special purpose hardware and the depth buffer? We’ve had special-purpose hardware for rendering triangles for quite some time. That’s especially good for B-Reps – current hardware generally assumes that we’re using B-Rep.

The big priority shouldn’t be code quality, but testing. Not crashing would be good.

It’d be great to have a FOSS implementation. Apple and Intel would probably be interested.

Onshape makes a nice CAD platform that supports plugins well.

What are our goals here? Just learning? Creating a new kernel? Building new tools?

Any downsides to STEP and STL files?

See STEPcode for a set of tools built on ISO 10303. It’s BSD-licensed and used in a bunch of other tools.

It might be helpful to see the whole pipeline of how F-Rep/B-Rep models are rendered.

What’s involved in a B-Rep kernel? The most difficult part is handling intersections. Tons of other features, though: curved surfaces on the ends of models, making surfaces from point clouds, handling discontinuities, etc, etc.