[Issue #6189] Surface to surface tangency

Have some feature requests, feedback, cool stuff to share, or want to know where FreeCAD is going? This is the place.
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
User avatar
Pauvres_honteux
Posts: 728
Joined: Sun Feb 16, 2014 12:05 am
Location: Far side of the moon

Re: Surface to surface tangency

Post by Pauvres_honteux »

Filling_problem_01.png
Filling_problem_01.png (113.86 KiB) Viewed 2217 times
.
Filling tool
must be made to work as follows:
.
- Select four CURVES in consective order (no need to first click on "Add Edge"). User can reorder curves if selected in a non consective order. (if this reordering is possible to make automagic [the endpoint of one curve must be the start point of the next curve] it would of course be a huge plus)
- Select/set one sovereign surface per curve.
- Select/set continuity per sovereign surface.
- All presented as columns and rows in "Filling" window.
.
I guess "Unbound Edges" refeer to curves situated in the empty space between the sovereign surfaces? If so, then rename it to "Curves for surface to pass through".
.
I guess "Vertices" refeer to points situated in the empty space between the sovereign surfaces? If so, then rename it to "Points for surface to pass through".
.
Anyone have an explanation for the practical purpose of the "Initial Face" at the top?
.
As can be seen in picture "Filling_problem_01.png", one can not make the empty space filled by a surface with the CURVES as arguments, only with the sovereign surface edges. This will cause enormous problems further down the modeling road since these edges will shift identity when the sovereign surfaces are recalculated. And recalculation is what this way of modeling is all about.
.
.
.
Multisection tool
must be made to work as follows:
.
The multisection surfaces making up the sovereign surfaces must obey tangency/curvature to the planes at the end of them.
See "Blend_Curve001.Edge1" versus "Surface001.Edge3", they should reassemble each other to get a correct sovereign surface. (here I set visualisation "Control Points" to true)
User avatar
Pauvres_honteux
Posts: 728
Joined: Sun Feb 16, 2014 12:05 am
Location: Far side of the moon

Re: Surface to surface tangency

Post by Pauvres_honteux »

Hmm, as it works now one can only choose a sovereign suface when double clicking on the row containing an EDGE of a sovereign suface.
.
In my mind this implies the programmer of this tool derives, what he think is, the only possible list of sovereign sufaces by backtracking from the choosen edge.
This could mean it should be possible to do it the other way around; i.e. first select the CURVE, then the sovereign suface, then check if the surface originate from the curve. Or is close enough to the CURVE.
.
So the new paradigm should be: user selects whatever she/he sees fit. Then some smart small looping algorithms checks, in the background, if the selections will work together.
.
For example an effective algorithm to check if the first selected curve (curve_1) has its end point equal to the second selected curve (curve_2) start point. This tiny algorithm must of course be made public so it can be reused for other programmers in FreeCad.
The same goes for direction check of a curve with an automatic direction flip if necessary, tangency check and so on and so forth.
wmayer
Founder
Posts: 20243
Joined: Thu Feb 19, 2009 10:32 am
Contact:

Re: Surface to surface tangency

Post by wmayer »

- Select four CURVES in consective order (no need to first click on "Add Edge")
Done.
User can reorder curves if selected in a non consective order.
Reordering is implemented now.
I guess "Unbound Edges" refeer to curves situated in the empty space between the sovereign surfaces? If so, then rename it to "Curves for surface to pass through".
It's called "Edge constraints" now.
I guess "Vertices" refeer to points situated in the empty space between the sovereign surfaces? If so, then rename it to "Points for surface to pass through".
It's called "Vertex constraints" now.
Anyone have an explanation for the practical purpose of the "Initial Face" at the top?
The algorithm can use a given support surface. It will try to adjust this surface to the given boundaries and constraints.
As can be seen in picture "Filling_problem_01.png", one can not make the empty space filled by a surface with the CURVES as arguments, only with the sovereign surface edges. This will cause enormous problems further down the modeling road since these edges will shift identity when the sovereign surfaces are recalculated. And recalculation is what this way of modeling is all about.
:?:
The multisection surfaces making up the sovereign surfaces must obey tangency/curvature to the planes at the end of them.
OCCT (i.e. the classes BRepFill_NSections or GeomFill_NSections) doesn't support it. Maybe you can combine it with the "Fill surface" function by using the face from sections as support surface.
User avatar
Pauvres_honteux
Posts: 728
Joined: Sun Feb 16, 2014 12:05 am
Location: Far side of the moon

Re: Surface to surface tangency

Post by Pauvres_honteux »

wmayer wrote: Tue Oct 13, 2020 3:47 pm As can be seen in picture "Filling_problem_01.png", one can not make the empty space filled by a surface with the CURVES as arguments, only with the sovereign surface edges.
:?:
.
Slightly rewritten from my previous comments:
... as it works now one can only choose a sovereign surface if user first selected an EDGE of a sovereign surface.
.
For me, this implies the original programmer of this tool derived, what he thought was, the only possible list of sovereign surfaces by backtracking from the chosen edge.
In my world it should be possible to do it the other way around; i.e. first select the CURVE, then the sovereign surface, then check if the surface originate from the curve. Or is close enough (within 0,000 001 mm) to the CURVE.
.
So the new paradigm should be: user selects whatever she/he sees fit. Then some smart small looping algorithms checks, in the background, if the selections will work together.
.
For example an effective algorithm to check if the first selected curve (curve_1) has its end point equal to the second selected curve (curve_2) start point. This tiny algorithm must of course be made public so it can be reused for other programmers in FreeCad.
The same goes for direction check of a curve with an automatic direction flip if necessary, tangency check and so on and so forth.
.
wmayer wrote: Tue Oct 13, 2020 3:47 pm The Multi section surfaces making up the sovereign surfaces must obey tangency/curvature to the planes at the end of them.
OCCT (i.e. the classes BRepFill_NSections or GeomFill_NSections) doesn't support it. Maybe you can combine it with the "Fill surface" function by using the face from sections as support surface.
.
How do I "combine" Multi section surface with Fill surface?
Are there any other OCCT classes we can trick to work here?
How are these BRepFill_NSections and GeomFill_NSections made/built? Is it possible to create something new from their constituent components?
.
I just tested 0.19.22670 (Git) AppImage, but could not see any difference compared to 0.19.22522 (Git) AppImage.
User avatar
Pauvres_honteux
Posts: 728
Joined: Sun Feb 16, 2014 12:05 am
Location: Far side of the moon

Re: Surface to surface tangency

Post by Pauvres_honteux »

mnesarco wrote:
Hi mnesarco, found this old blog from China
Geometry Surface of OpenCascade BRep (translated, possibly not so good for code reading).
Geometry Surface of OpenCascade BRep (original, possibly better for code reading).

Further it seams to me that "poles" are the end points of a directional vector ruling the acceleration at the "pole"/point on a curve/edge/surface.
Bezier_Points_on_curve_and_poles.gif
Bezier_Points_on_curve_and_poles.gif (2.77 KiB) Viewed 1941 times

OCC GeomFill_ConstrainedFilling Class seams to utilize a system of 30 control "poles" along the curve and edge, checking them for equality. To me it's not clear if this approach is smart when taking the true curve/edge length into account. I mean, a seven millimeter long curve/edge divided by 30 equals a pretty fine tuned approximation, while the same 30 dividends for a 7 000 mm curve/edge opens up for a lot of uncertainty between each "pole"/point.
To get around this, possibly tolerance inducing conundrum, perhaps one should introduce a subset of calculation "poles"/points between the original set of 30 "poles"/points to ensure nothing inappropriate is going on along the curve/edge?
User avatar
Pauvres_honteux
Posts: 728
Joined: Sun Feb 16, 2014 12:05 am
Location: Far side of the moon

Re: Surface to surface tangency

Post by Pauvres_honteux »

Request: issue #4615
User avatar
Pauvres_honteux
Posts: 728
Joined: Sun Feb 16, 2014 12:05 am
Location: Far side of the moon

Re: Surface to surface tangency

Post by Pauvres_honteux »

Quaoar wrote:
Hi Quaoar, as I interpret your post Utility to inspect OCC models you are able to test OCC functions?
If so, then I'd like to ask you to check if it is, at all, possible to create surfaces according to what I've typed above?
User avatar
Quaoar
Posts: 106
Joined: Thu Jul 27, 2017 11:56 am
Location: Nizhny Novgorod
Contact:

Re: Surface to surface tangency

Post by Quaoar »

The way gap filling is done in the plating functionality of OpenCascade (GeomPlate) is approximation. The commercial version of it (SSP) does this same thing using a sort of finite element approximation, something alike xNURBS plugin of Rhino. I could try messing around with that, but no promises: it's a hell of work and time.
FOSS CAD model inspection utility and prototyping framework: http://analysissitus.org
User avatar
Pauvres_honteux
Posts: 728
Joined: Sun Feb 16, 2014 12:05 am
Location: Far side of the moon

Re: Surface to surface tangency

Post by Pauvres_honteux »

Quaoar wrote: Tue Apr 13, 2021 10:04 pm ... (GeomPlate) ...
No wonder it is so hard to find for programmers! They would probably search for something involving "surface".

Quaoar wrote: Tue Apr 13, 2021 10:04 pm The commercial version of it (SSP) does this same thing using a sort of finite element approximation ...
Approximation you say? That could potentially spell a problem when making surfaces depending on other surfaces when considering "water tightness" unless the control points are really close together.

Quaoar wrote: Tue Apr 13, 2021 10:04 pm ... it's a hell of work and time.
We acknowledge that and appreciate you taking it under concideration. And please do not hesitate to ask the community for help in any way or form!

We would very much like to read/hear your findings here on the forum in some form, be it in the form of text or video or something else.
Svet
Posts: 50
Joined: Fri Feb 12, 2021 1:00 am
Location: USA, Texas

Re: [Ticket #4615] Surface to surface tangency

Post by Svet »

Just checking if there was any progress on this issue last year... Is only G1 continuity possible right now?
Post Reply