I am looking for a 2D CAD program where I can use variable lengths: All geometrical elements will be given initial numerical values, but the values may change later.
The CAD program shall record all the steps in the geometrical construction (which means it must keep track on the relations of endpoints, centers of circles and their radii, intersection/tangent points, parallelism and so on used in the construction).
The CAD program shall be able to reproduce the whole geometrical construction in the same way, as the original one, but with varied numerical parameters.
Of course, if to many lengths are given with fixed values rather than relations of other lengths, the geometrical construction may break (e.g. if two circles don't intersect any more or such that their intersection points used in further construction steps become undefined, or if two lines which initially had an angle between them don't intersect any more because they become parallel, so that their intersection point used in the further construction does no longer exist). In such cases, the program should point out the "critical conditions". i.e. stop the reconstruction in that step and give a message why the construction can't be completed and give the user a chance to edit the relations (e.g. define lengths in terms of other lengths differently and so on).
Of course the program shall be able to group entities in order to move, mirror, translate them as the whole group.
For this purpose, the parameters of the initial construction must have associated names and also it must be possible to define relations between them (points Px, Lines Lx, Circles Cx, Angles Ax and so on: e.g. length LL5 (of L5 with endpoint PL5a and PL5e) is twice length LL1, radius RC3 of circle C3 (with center CC3) is equal to 1.5 times LL1+LL3, L1 and L3 are parallel, the angle between L3 and L4 is 45° and so on).
Of course, construction of points shall also be memorized like point P8 is the intersection of line L3 and circle C3: and if there are two of them, it is the nextmost to the first endpoint of L3 and so on.
All these relations shall be recorded when the geometrical construction is carried out. A parallel table of those entities and their relations shall become available in tabular form (with the possibility to edit them later for corrections or adaptations).
Such a program might not only be interesting for sketches or drawings of technical things, but to teach geometry.
Is there anything like this? (I know something similar in the Ansys Design Program Language (ADPL), but that was 20 years ago and of course I am looking for some FOSS equivalent solely for the geometrical construction, perhaps with a nicer and more intuitive user interface).