hannobraun / fornjot

Early-stage b-rep CAD kernel, written in the Rust programming language.
https://www.fornjot.app/
Other
1.94k stars 109 forks source link

Support sweeping from a curved surface #1112

Open hannobraun opened 1 year ago

hannobraun commented 1 year ago

Fornjot models can sweep a sketch along a path, to create a solid. As of this writing, all sketches in Fornjot models are defined in the xy-plane (which is why this issue doesn't affect Fornjot models yet), but the kernel already supports specifying sketches in any surface.

However, sweeping a sketch that is defined in a curved surface is not supported yet. See this piece of code: https://github.com/hannobraun/Fornjot/blob/781259429e01bb031fc7aa44db2294fde4d62208/crates/fj-kernel/src/algorithms/sweep/curve.rs#L17-L31

I'm not sure what it would take to lift this limitation. Maybe the u-coordinate of Surface needs to be defined by a (SurfacePath, Surface) instead of a GlobalPath. Or alternatively, GlobalPath needs such a variant. The latter would be more general, but lead to a weird circular dependency between GlobalPath and Surface, and I'm not sure how that would work.

hannobraun commented 7 months ago

Things have changed since I originally opened this issue, so this needs a bit of an update.

First, all models are written directly against the kernel API right now, so it's possible to trigger this issue. I've re-classified it as a bug.

Second, there are changes to the geometry representation incoming which, if things work out as planned, would address this issue. I don't think it makes sense to work on this before that.