Skip to content

Conversation

@phkahler
Copy link
Member

Just an outline at this point (in the code). Hoping to attempt this over the hollidays. Thought people might want to follow along or comment if this goes anywhere.

…ting chamfers and fillets. The function is hooked in Group::Generate but does not modify the shell at this point so it is benign.
@ruevs
Copy link
Member

ruevs commented Dec 10, 2024

@phkahler great to see you attempting this. Over the years I've been considering this - most recently at the time Dune3D started.

In my head it works similarly to what you started outlining with one more level of abstraction:

A chamfer/fillet is:

  • An edge modifier class/module/cpp_file goes over the selected edges and duplicates them (in reality each visible edge is already two coincident edges so the code could "just" move them) - this is specific to the fillet/chamfer tool.
  • A general purpose patch tool (with conditions as parameters - e.g. G1 continuity), which is a separate class, generates NURBS patches to close the holes between the edges created in the previous step.

In the future the patch class can be used to implement generic patch functionality - e.g. close a "random" hole outlined by a contour of any edges (not necessarily straight) in 3d.

A general purpose patch tool may/will have to generate new edges on it's own (imagine a corner where a few edges meet and they are all filleted) and I am not sure how this will be handled by this approach. Intersections of the newly created NURBS surfaces will be these new edges.

@phkahler
Copy link
Member Author

  • in reality each visible edge is already two coincident edges so the code could "just" move them

Woops you're right. Curves are not duplicated, but there are two TrimBy, one for each surface that meets along a curve. These reference the same underlying curve but one is "backward". So I'll still need to generate 2 new curves, and move both Trims rather than creating a new one. Good news - the PWL points are not in the trims!

Assuming all fillets meeting at a point are the same radius, the surface we want there is spherical. It's really hard to find anything (with google) on spherical NURBS patches, never mind triangular ones. But that's for later. Chamfers first and Fillets with 1 or 2 per vertex. I'm both excited and dreading this...

@ruevs
Copy link
Member

ruevs commented Dec 11, 2024

I'm both excited and dreading this...

Indeed :-)

@BKLronin
Copy link

I very welcome the attempt to add this. :)

@ruevs ruevs marked this pull request as draft January 24, 2025 13:46
@phkahler
Copy link
Member Author

phkahler commented Aug 21, 2025

Getting back to this soon. Here is a sketch to visualize how fillets meet at a corner. Drag the green lines around.
corner_arcs.zip

For equal radius fillets it forms a spherical triangle.
Edit: This is not the new feature demo, it's a line sketch to aid understanding the geometry of corner fillets.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants