Wanted to continue this discussion as well.
From my perspective working in interior design and architecture, constraints are critical much like they are in manufacturing tolerances.
I don’t get to decide if a railing meets code by being “close enough” or that a door is at least 4" from an adjacent wall, or that studs are 16 or 24" on center, etc. those are numbers that I always have to meet.
Managing drawings and checking for things like this is of course laborious when you find something that is off and need to update it. Sure, there’s gumball, move tool, sub-object selection move, etc. but multiple a single operation across an entire wall assembly like wall stud framing and suddenly moving 1 isn’t so simple where as an EQ/EQ/EQ across 6’ or 24",24",24" collection of constraints is so much better to update.
Revit does part of this quite well but also goes overboard with its over-constraint marshalling and having too much of its constraints logic plane based.
I really like the list I saw in the WIP of things like offset constraints, horz, vert, point on curve, line, etc.
A lot of GREAT use cases in architecture for those kinds of relationships.
Here’s a simple architectural example with a tapered joist diagram with D as a varying depth, we would have a length constraint formula of (D x 3) for the top and (D x .5) for the side or more complexly could be described with a range/domain of (0 to (D x 3)) for the top and ((D x .5) To D) for the side constraint. D would be a “linked constraint variable” (more on that below)
Back to a door example:
I would much rather have a constraint at each door frame that I could simply click into, set the proper distance and move on.
Furthermore if I had multiple “doors” selected all with a constraint coming off the right side of the door let’s say, I would like to have the option to update 1 value and have it update all others that are selected and/or linked to that constraint. I realize that is an additional layer of complexity.
Perhaps constraints could have the ability to be “instanced” from one another, bucketed into groups, named the same or something like that so that it would behave like a block instance where when 1 updates all instanced update.
I would call this feature “chain constraint” or something like that, where you add a constraint to the list of constraints, give the “chain” a name like “DOOR SIDE TYP.” and any linear dimension constraint that has that chain constraint with matching name or key/value would get updated because it is “linked”.
@Joshua_Kennedy curious about your thoughts on “connecting” or “chaining” constraints across objects.
You could do some cool stuff with objects sharing certain constraints but having unique instances of other constraints.
That’s just my wish.
Constraints was one of the features I was most looking forward to in Rhino and was bummed it got pulled from R8.