jnxd wrote: ↑Fri Jun 10, 2022 12:44 pm
If we do not want to remove this "axis", other alternatives are possible: we can add that axis to an internal geometry, or to search the edges for this geometry and manually delete this axis.
Precisely that is the decision that needs to be made:
a) Delete the construction line (so that new parabolas are not created with this construction line); or
b) Add it to internal geometry, even when it is not (fully it).
The former has as a drawback that if the parabola axis needs to be constrained to an angle (for example), the user will have to create it. It is not convenient (I think).
The latter has as a drawback that then it will need to be checked everywhere where internal geometry is. We would need to ensure backward compatibility. Forward compatibility may be an issue (but I think that the next development cycle will have many of these forward compatibility issues).
While we can change definitions, it is important that we have actual definitions to call things consistently (and be able to understand each other, and manage the expectations of what we expect from FreeCAD). I think it is good to discuss about it.
Originally, "internal geometry" referred to implicitly constraining one complex geometry within another (so as to enable to constrain the complex one). There are no explicit constrains in internal geometry (well, there are those internal alignment constrains that are invisible to the user that does not change the corresponding checkbox in the constraint widget). This implicit hidden constraining, can generally not be (simply) achieved by conventional constraints.
A second consideration is the lifetime. Originally "internal geometry" was "construction geometry". It could be created and added and removed (very originally). This was unhandable and the "Expose/Hide internal geometry" toolbar button appeared. Then internal geometry was created directly with the shape.
One change I have in the pipeline is preventing deletion of internal geometry. This will also lead to the removal from the toolbar of the button to "Expose the internal geometry". After that, the internal geometry will match, from a user perspective, the definition "geometry that is created together with other geometry, and it is also only deleted when the other geometry is deleted".
So... soon internal geometry will meet two conditions:
1. Implicitly constrained into one (complex) geometry.
2. Matching the lifetime of the complex geometry.
Then in FreeCAD we have other compound geometries, which are formed by constraining together simple geometries, such as polygons. In that case:
1. We do not have a complex geometry.
2. Constraints are simple.
3. We use construction geometry that does not match the lifetime of the non-construction geometry (but without it the whole shape falls apart, if the shape is deleted the construction geometry makes no sense).
Here, making the construction geometry follow the compound (multiple elements) geometry would be overly complicated. I think this is the main reason to let it be as they are today.
The Parabola axis is somewhere in the middle. It is not implicitly constrained into one (complex geometry), because it is explicitly constrained to it. Yet, it refers to a complex geometry indirectly, and it does not create a major problem when treated as internal geometry... it is even helpful to constrain the Parabola...
... yet if we make an exception, are we discriminating the other geometries ?
Ok. It did not think it through, but there might be a third option. What if we stop enforcing the axis using normal sketcher constraints, we create a new implicit internal alignment constraint at sketcher level, then at solver level we internally use the solver constraints that would be used today. We could even call it FocalDistance...
... I need to think this through, but at least now you know what is in my mind.