NormandC wrote: ↑
Sun Feb 04, 2018 1:06 am
This is no longer necessary, as the solver now automatically switches the coincident+tangent combo with the proper endpoint-to-endpoint tangent constraint.
There is such a change now in FC. However, this statement is not absolutely accurate. It is my fault, because of the terminology used and because I had to change my original implementation idea. IF not_interested_in_history GOTO Conclusion
(Some history here, feel free to jump to the last two paragraphs).
is the solver. There is no doubt there.
is the interface between the Sketcher and the solver. Here we do special mappings now, for example for the Block constraint, which is implemented by removing other constraints and fixing the parameters of some geometric elements. Many times I call this "at solver level", as the change is not visible to the Sketcher, but it is not accurate to call it "the solver". It is the intermediary.
That in reality is all of it, but usually I use this terminology to refer to the higher level representation of geometries and constraints that very reasonably matches with what the user sees on the screen.
When tackling this tangency issue, I originally thought of using the intermediary, "sketch.cpp" to make the change and I said "at solver level". I realize I misled many of you. I started an implementation of this. However, because of the way the "sketcher" constraints travel within the solver (via pointer), the change could not be simply undone at the intermediary, sketch.cpp. As I did not like the changes necessary at "Intermediary" level to enable this transparent changes, I decided to implement it at Sketcher level. So it is when you add a tangency or a coincident at "Sketcher" level, that the Sketcher checks for the other constraint and it then makes the change of the constraint at "Sketcher" level to a point-to-point tangency. Then for the "Intermediary" it is like if the user would have deleted the coincident and added a point-to-point tangency himself.
To make this simple to understand, if the change were at "intermediary level", in the Sketcher's constraints widget you would still see a coincident and a tangency, but it would work just as if you had a point-to-point tangency there. As it is done at "Sketcher" level, what you actually see is that whatever constraints you added are changed to a point-to-point tangency (you can no longer see the coincident in the widget, is not there).
I thought it would be right to explain the whole thing.
I am unaware of the specifics of how SALOME uses PlaneGCS. PlaneGCS itself has not been changed to implement this "automatic swap".
I am sorry for the misunderstanding.