Constraints are a surprising addition.
The (folks who make Solidworks )aren’t going to like that. : )
Edit: might have been misread.
Constraints are a surprising addition.
The (folks who make Solidworks )aren’t going to like that. : )
Edit: might have been misread.
Good point on assemblies. Yet, I want to use this for urban design as well. In that case, I would split up sketches by area, subarea (for several juxtaposed design iterations) and eventually by building. In that case, it would be tedious for me to enable/ disable the road lines for each sketch individually. I may have different road designs that determine the shape of the building. So each of the building sketches could have a layer called “Road design” and to present my final design, I would want to toggle them all on/ off simultaneously.
In that case, I would project/ include whatever parts of the existing road network into the design sketches where they would interconnect. So they would be driven by a master layer that is either part of a master sketch or a bunch of sketches — this all depends on how performant the solver is. In Fusion 360, when I tried this, I had to split things up. But it became very difficult to manage as I couldn’t differentiate between building outlines, road outlines and road centrelines (these are essentially construction lines), etc.
Layers, to me, really are more about visibility and presentation than they are about the constraints applied to them. If you limit layers to being object specific, you’ll lose a lot of flexibility. And you’ll lose the workflow I outlined earlier.
Instead, I would advocate for the more open approach, where users are responsible for how they want to manage their layers. In an assembly context, you would probably have a common base layer name and a different, per part/ component suffix attached at the end. But, you would also be working in the layer tree more often with every object being on its own host layer with nested layers for all bodies, annotation, sketches, etc. To ease that work, there could be an autocomplete for creating layer names with sketches (just like Grasshopper makes suggestions based on what you type). There could then be a filter to autocomplete based on layers within the document or based on the parent layer only (the component name).
It might be an interesting developer excercise to intersect Snapshots with Constraints sketches to see what happens in that type of scenario, at least as a sandbox excercise.
Yes, not being able to create constraints between curves of different/separate sketches is how I would expect it to be have.
Global parameters could change constraints referring to that parameter.
The way I use parameters is to drive one or more contraints of the same type (e.g. distance constraint) that should have the same value. Normally I only use parameters linked to constraints for those things that need to be modified either at the component/block level or at an individual instance level (i.e. to override the “default value” that is within the component/block definition) if there are one or two instances that need to be slightly different for a particular purpose but do not really warrant another block definition because it is specific to only that model. Or when in a hurry during prototyping to Include a very very last minute change before presenting for review.
All other constraints are basically “fixed” value or ratio constraints (e.g. if one value has to be the double of another value).
In the case predefined parameter values that have overrides at an instance level it would be nice if there will be a “revert/reset to default”/“clear overrides” or how one would like to name it that would reset all (selected) parameters with an override back to the values as originally defined in the component/block definition.
The reset should preferably also happen when replacing a component/block with a new component/block because the overrides would then usually no longer be relevant. Whether this should be default or optional (e.g. ask during replace if parameter overrides need to be reset or have this done as default, definable in Rhino settings). I haven’t used constraints/parameters a lot yet to have tested for this, so it could be that it is already being considered/implemented. If not then please consider this as a feature request.
Agreed, I too use layers either for visibility of for creating structure within the model, e.g. certain types of objects are on a specific layer, e.g. walls, windows, bolts, areas or whatever the needs are.
In my opinion it would be a very bad implementation if layers could be restricted to a particular/single object only, that defeats the purpose of layers. If such a restriction would be necessary then it should be upon the user to pay attention to use a specific layer for only a specific object.
That’s half of the story. You shouldn’t be able to create constraints between different sketches, however, you should be able to include sketch items from another sketch into the current sketch. This is necessary to simplify subsequent derivative sketches.
Say I have a main sketch that is creates the outlines of a house. I would extrude this sketch and then create a new sketch that serves to create the facade. For that, I would need to reference the edges of the extrusion into the current sketch. This means, that this second derivative sketch references geometry that was based on the first sketch. If I edit sketch 1, the windows that are part of Sketch 2 move according to the new edges of the facade, because the reference to the extrusion edge is updated.
Or more simply, I should be able to reference geometry from sketch 1 in sketch 2 through a dedicated reference (include) command. See:
Thanks for the clarification, I now understand what you want and yes that may be useful to have.
One concern that I have with this is that nesting like this makes the file more computational intensive and may slow down Rhino quite a bit if it is used a lot in a file, but I guess that may also depend on how it may be implemented by McNeel if they do introduce it to Rhino.
It works fine this way in Fusion 360. But, you will need to be cautious. It’s better to reference sketch points than it is to work based-off extrusion edges (as in my example), because it doesn’t require Rhino to compute the extrusion beforehand. Being computational heavy can only become a concern once implemented imo, also note that with Grasshopper, no-one complains about it being computationally heavy. It’s an opportunity.
Hi @Joshua_Kennedy,
I am now testing the Constraints feature in a project and have another few items to add to your list. The project is now starting to become useable to me, which is nice. Actually, the layers are working as I would want them to, so I spoke too soon. It’s actually exactly the way I would hope it to be. I responded based on the videos earlier.
I would only like to see an icon added to a layerspanel to know that it contains sketch items.
One thing immediately strikes me, which is that there is no dedicated in sketch editing environment. I would personally prefer to go ‘into’ a sketch by double clicking one of the sketch elements. Just like with blocks. The reason being is that if I do a lot of drafting, I don’t want to add items to a sketch manually afterwards. I would like to do the sketching and have the curves automatically added to the active sketch.
If you are concerned about snapping to existing geometry outside the sketch, there could be a toggle for that in the constraints panel.
The next step is to add project/ include so you can reference geometry that is outside the sketch inside the sketch. This referenced geometry is always fully constrained. However, it can be moved by moving the original source geometry.
And the third step would be the option to automatically project/ include any points to which you snap and to set the relations according to the snap conditions that apply to both the curve and to the snapped point (e.g. line = tangent, point = coincident OR line = horizontal, point = coincident). When turned off, you can still work as is the way you do now and snap wherever, add constraints later manually. With the automatically project/ include, it makes it easier to create sketch upon sketch and that’s the way Fusion 360 works for its entire parametric sketcher.
Finally, I would like to see an option to anchor an entire curve. I don’t want to do this point by point. Taking in 3. , 4. and 5. , I may want to just copy and past a road outline and then anchor it in place to use it as reference line for other sketch curves without it being driven. This would already be very valuable and high on my wish list for current workflows. If I would then need to modify this line, I would remove one or two of the anchor points (out of a dozen + automatically anchored ones) and save a lot of time.
I would definitely use a DupToSketch command, which would duplicate a curve and add it to the sketch. Then add a macro to lock this curve on all points in a single operation.
As for other things:
Question, how do should I be adding the constraints to make it possible to move the bottom line horizontally?
It appears that I am missing something when I try to apply what I know from Fusion 360.
Hi,
You need to update the anchor point instead of dragging the line.
Is your expectation that the anchor point moves with the curve? We’ve been back and forth internally on how this should behave.
The anchor widget may also be useful here since you can move it with the gumball.
P.S. It’d be very interesting to see your model when you’ve finished working on it
Hi, thanks for the help.
How I expect it to work is that I can anchor a line as well (basically locking it for the sketch solver). That’s what I thought anchoring does initially. But it now works as a fix for points, which is fine. If I were to anchor a line, it should show as being locked in its halo, that is easier to distinguish from the lock icons in my opinion (e.g. a green outline as in Fusion 360).
I demonstrate the expected behaviour here manually (this is how it works in Fusion 360):
I do expect the endpoints to move in this case.
I would actually expect that when I drag a line, it retains it’s direction if there is no constraint applied that would state otherwise. So dragging the line would mean moving it with orthomode on, basically.
I set the lines to the locked layer to indicate they are locked, saves a lot of lock icons. The one at the bottom shouldn’t actually be there either imo.
I would also expect that when I want to lock a line, I activate the constraint, click the line and the entire line is locked, no space to confirm. Clicking a line again unlocks it.
Can offset constraints also show a dimension line? That makes laying out appartments in buildings much easier to do.
yes a specific mid point constraint would be appreciated because it pairs with osnaps.
In general all osnaps could be a constraint.
I added a MidPointConstraint command that should be available in the next WIP. It creates a point along curve constraint with the curve parameter set to 0.5. It removes the extra step of specifying the parameter. That way you can go back and tweak the value later if you want something more general than mid point. The issue is logged here.
Could there be a single click mode for the Anchor constraint? Basically this should omit the second step of setting a position to anchor to and use the current position as anchor point.
If you just hit enter and input nothing at that step it will use the current position.
Good to know, thanks. I do hope you’ll be able to reduce the number of inputs required by the user (either clicks or spacebar taps). It still is quite a laborious thing to anchor geometry. And unfortunately, it has put me off from finishing my model > I went over to Fusion to do it quick and dirty.
E: I will of course try it again when it is a bit more mature, looking forward to the progress
It creates a point along curve constraint with the curve parameter set to 0.5.
Funny, that’s a workaround I use in a different very expensive CAD package right now.
But, it’s important that the MidPointConstraint has its own icon, so it’s easy to correctly read the entire sketch at a glance. Perhaps anytime you set any point along curve constraint to 0.5 it could change symbols?
Looking forward to play around with this one
One more thing, I’m sorry if it’s already mentioned I did not read all replies.
Is it possible to make the constrained model “Immune” to Explode command, thus making a constrained solid that you are unable to modify sub-elements?
If you explode constrained curves the constraints should update so they reference the new exploded geometry. I also made this work so the constraints are updated when the Join command is run. The issue is here.