Rhino 8 Feature: Constraints

I was hoping to get your full SystemInfo from the SystemInfo command in Rhino. If you could paste the result that’d be great.


This does sound like a hardware issue though.

Hi Joshua,
“Solve space” has “SolveSpace - Technology” has a powerful solver. It is freeware and May be Mcneel can have a deal and integrate It’s solver.

1 Like

This is all fine, but what I’d really like to see is a (2D is ok) solver for mechanical assemblies.

I know you guys can do this (see 2D walking strandbeest model ex grasshopper).

I have a 2D solver (www.linkagesimulator.com) which is built by one person as a labour of love – its great, but it has an off-kilter and unique interface and input requirements that are not very helpful.

I also have the solvespace program (www.solvespace.com) which is rather powerful, but strangely arcane, and looks like a dos cad program from way back. Its library is available for licensing though…

Anyway, being able to solve these kind of mechanical assemblies in rhino itself would be a huge help to me.

For example, see these diagrammatic images of motorcycle / bicycle suspension layouts…



1 Like

Why do you think the SolveSpace solver is preferable?

The only thing I know about the SolveSpace solver is that it’s also being integrated in Blender with the addon called CAD Sketcher, but since this addon is still very much a WIP version, I personally can’t tell how well the solver handles more complex cases (e.g. curvature constraints or tangency constraints between splines and arcs). If @direnc thinks it is preferable, could you show a comparison between the current Constraints in the V8 WIP and in SolveSpace?

I do like the idea of using open source tech, because any features and bug patches added to the solver would mean that users from other platforms, such as Blender’s CAD Sketcher would also benefit.

RH-68002 is fixed in the latest WIP

It is light weight and open source software I thought It can be a good starting point (If possible) instead of building from scratch.

Apologies for the delayed response, I had a really busy last few days. Here’s the text from system info.

Rhino 7 SR18 2022-5-4 (Rhino 7, 7.18.22124.03001, Git hash:master @ b2a1120bcb32e1f6da66a421cd7162a18a9f0cd9)
License type: Educational, build 2022-05-04
License details: Cloud Zoo

Windows 10.0.19044 SR0.0 or greater (Physical RAM: 32Gb)

Computer platform: LAPTOP - Plugged in [97% battery remaining]

Hybrid graphics configuration.
Primary display: Intel(R) UHD Graphics (Intel) Memory: 1GB, Driver date: 1-22-2020 (M-D-Y).
> Integrated graphics device with 3 adapter port(s)
- Windows Main Display is laptop’s integrated screen or built-in port
Primary OpenGL: NVIDIA GeForce RTX 3090 (NVidia) Memory: 24GB, Driver date: 5-19-2022 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 512.95
> Integrated accelerated graphics device with 4 adapter port(s)
- Video pass-through to primary display device

Secondary graphics devices.
NVIDIA GeForce RTX 2070 Super with Max-Q Design (NVidia) Memory: 8GB, Driver date: 5-19-2022 (M-D-Y).
> Integrated accelerated graphics device with 4 adapter port(s)
- This device is not being used

Laptop is using the slower, less reliable integrated graphics device and probably needs a configuration change.

  • Any hardware configuration or cabling changes you make will require that you restart Rhino.

OpenGL Settings
Safe mode: Off
Use accelerated hardware modes: On
Redraw scene when viewports are exposed: On
Graphics level being used: OpenGL 4.6 (primary GPU’s maximum)

Anti-alias mode: 4x
Mip Map Filtering: Linear
Anisotropic Filtering Mode: High

Vendor Name: NVIDIA Corporation
Render version: 4.6
Shading Language: 4.60 NVIDIA
Driver Date: 5-19-2022
Driver Version:
Maximum Texture size: 32768 x 32768
Z-Buffer depth: 24 bits
Maximum Viewport size: 32768 x 32768
Total Video Memory: 24 GB

Rhino plugins that do not ship with Rhino
C:\Users\bob7d\AppData\Local\Programs\Enscape\Bin64\Enscape.Rhino7.Plugin.dll “Enscape.Rhino7.Plugin” 0.0.22094.1322
C:\Program Files\Chaos Group\V-Ray\V-Ray for Rhinoceros\V7\VRayForRhino.rhp “V-Ray for Rhino”
C:\Users\bob7d\AppData\Roaming\McNeel\Rhinoceros\packages\7.0\Bullant\\bullant.rhp “bullant”
C:\Users\bob7d\AppData\Roaming\McNeel\Rhinoceros\packages\7.0\ggRhinoIFC\\ggRhinoIFC.rhp “ggRhinoIFC”

Rhino plugins that ship with Rhino
C:\Program Files\Rhino 7\Plug-ins\Commands.rhp “Commands” 7.18.22124.3001
C:\Program Files\Rhino 7\Plug-ins\rdk.rhp “Renderer Development Kit”
C:\Program Files\Rhino 7\Plug-ins\RhinoRenderCycles.rhp “Rhino Render” 7.18.22124.3001
C:\Program Files\Rhino 7\Plug-ins\rdk_etoui.rhp “RDK_EtoUI” 7.18.22124.3001
C:\Program Files\Rhino 7\Plug-ins\rdk_ui.rhp “Renderer Development Kit UI”
C:\Program Files\Rhino 7\Plug-ins\NamedSnapshots.rhp “Snapshots”
C:\Program Files\Rhino 7\Plug-ins\RhinoCycles.rhp “RhinoCycles” 7.18.22124.3001
C:\Program Files\Rhino 7\Plug-ins\Toolbars\Toolbars.rhp “Toolbars” 7.18.22124.3001
C:\Program Files\Rhino 7\Plug-ins\3dxrhino.rhp “3Dconnexion 3D Mouse”
C:\Program Files\Rhino 7\Plug-ins\Displacement.rhp “Displacement”
C:\Users\bob7d\AppData\Roaming\McNeel\Rhinoceros\packages\7.0\PanelingTools\2021.3.2.446\PanelingTools.rhp “PanelingTools”

A ton of great notes in this list

Totally new to this:

Gave this a 5 minute look-see, here is some feedback, although I’m sure I’m missing a ton of stuff:

-my color is super faint when I highlight any constraint to view it, I’d like it to be a bit more prominent

  • I’m not sure, but I’m having difficulty constraining points (especially point on line) and it will not provide the prompt to draw out the line if I highlight the points prior to the command
  • what tells me the sketch is fully defined?
  • am I missing how to link up the dimensions to this sketch? would love to see my dimensions on my sketch and be able to toggle on and off, and of course double click the dimension type to input new value (could this be another icon on constraints panel?) or am I just completely missing it
  • I’d love to see something having to do with the center of your sketch, or possibly to define the center - or just guide lines that are not actually geometry and do not get in the way of the constraint solver
  • i know my sketch is fully defined but I can move around the points… and then weird things happen…
  • i tried to extrude and play with the parameters, but nothing updates…
    -just itching to see this move into powerful drawing update…

Yesterday, I was working (testing) Fusion 360 to create a portion of an urban design parametrically. This led me to a couple of pain points which I hope you could address for Rhino.

For urban design sketches, I would like to differentiate between roads, pavement and building outlines. Would it be possible to use layers within the Sketches just like you would with non-constraint based drafting? That way, I could change linestyles/ colour to help me as guide through the process. Perhaps there could be a button in the Sketch panel that you can check to display the sketch by layer properties or by constraint properties.
Or there needs to be another solution to display whether a line is constrained, unconstrained and whether the sketch is fully constrained or not. This can be difficult if I could change all line properties, so maybe the I should only be able to affect the linetype/ colour and not lineweight, for instance. I think that may work considering the current constraint glow colour? (BTW this looks neat already :+1:).

It may need a predetermined colour scheme for custom layer colours? :thinking:

What I would also love to see is that if I offset a curve in a sketch, that it would automatically constrain the offset line. Fusion doesn’t allow offsetting ofset lines, so if Rhino could, it would be a big workflow improvement.

E: By the way, if I have disabled dragging objects that I have not selected (Rhino options > Mouse > Click and drag > Drag selected objects only), would I be able to still drag sketch curves that I have not selected? That’s the way I would expect the constraints to work, because I may need to test how the sketch flexes and for that I don’t want to select the items first (unlike when I am in the regular viewport doing modeling work).

@Joshua_Kennedy have you seen this:


I’ve made a couple of intro videos recently. The point on line and point along line constraint are covered here.

This is logged as RH-68550

Hopefully this video makes things clearer.

I’ll update the issue about over and under constrained sketches with this.

You’ll wanna use history for that. I also made a video about it.


You mean assigning constraints to layers in a sketch or the objects within a sketch?

I’ll update RH-68550 with this.

This is a bit tricky with the way history works on the offset command. We have talked about this specific issue. I’m trying to find an elegant reasonable solution.

I don’t think having the selection and dragging behave different for curves only if they’re constrained makes sense. That interaction of to see the sketch flex is also probably better done with grips. I have a video on it here.

1 Like

Yep, it’s an interesting project. Is there something in it you think we should take note of?

Here’s another example model with history that a few of you might find interesting. It takes advantage of the history enabled boolean commands available in the WIP.


I have a video explainer here. I’ve also attached the file for experimenting.
Constraints_History_Booleans.3dm (275.0 KB)


Yes in short: ease of use…

What I like a lot about the workflow is that it seems very fast and user friendly to setup and see relations. The following might sound a bit harsh, but I have to mention it: Right now in the WIP setting up constraints is so convoluted that if it stays like this, I will probably never use it because it takes too much time to set up, and I’m quite sure I will not be the only one.

For example what I want to be able to do is:
Draw a rectangle (adds vertical and horizontal constraints automatically), dimension it, fillet the corners (while the dimensions remain in tact), (Fillets will add tangent constraints automatically)
Select all fillets, make them equal in one go.
Add a dimension to the fillet. Add a hole concentric to one or more of the just created fillets (snaps to center and adds concentric constraint automatically)


So I am thinking that what you refer to as “auto points” could be enabled for the entire sketch, so I can move any of these points just by dragging the first time around. In the long run, selecting each element first adds up by a lot. Fusion 360 also let’s you drag sketch elements/ points from the get go.

And I do want to be able to drag any of the curves inside the sketch. That’s also good to establish a design. I think a different behaviour for sketch lines for the dragging options makes sense, since I want to move the geometry of the sketch and if it’s constrained, it won’t move in an unpredictable/ undesirable manner (unlike, for instance a Brep, which causes discrepancies between the building outline sketch and the building volume itself).

So I would still want there to be an option to drag sketch items.

I personally find the inability to select points in a polyline by clicking on them (instead of on the polyline and then the point) a nuisance in Rhino. For sketches, this would be even more of a nuisance to me.

Apart from this dragging option, the video you posted looks neat, I like the red preview as well :+1:

So within a sketch, I want to be able to assign the line geometry to a layer. So let’s say I have a sketch with a small and large rectangle, I would want to assign the small rectangle to the “Small” layer and the large rectangle to the “Large” layer. That way, I can hide a portion of the sketch and project/ include those sketch elements that I need in my next sketch.

For clarity, what could happen is that every sketch becomes a layer of its own, with the parent layer corresponding to the sketch name.
So, with the aforementioned example, you’d get the following layer structure:

Sketch 01


Sketch 02

-Large (< this is the projected geometry of Sketch 01)
-Layer 1
-Layer 2, etc.

Basically, this thus already creates something like a layer tree.
Whether a layer is hidden or not should not influence the parametric solver. What it does is it helps to further clarify the sketch visually, because you can filter what you want to see.

1 Like

How would one transfer a more complex file than this over to a co-worker (or future me a few months later)? There’s now way to visualise which boolean occurs before or after another. I would definitely love to have a history enabled timeline with all the history enabled commands listed. A panel to visualise history would also be one of my top requests for Rhino 8, just below the sketch constraints you are working on now.

Constraint icons
I would definitely like to see constraint icons to help me visualise how the sketch is going to behave. That’s one of the things I like from Fusion 360 and Blender’s CAD Sketcher addon. Freecad also has these icons.

They have another benefit: if offsets automatically add constraints, I sometimes remove the offset constraint so I can create a (poly-) line that already constrains its constituent lines with parallel constraints to the original sketch. Since offsets retain the length of the original line, deleting the offset constraint in Fusion allows me to change the length of the line while retaining all the other relationships.


Really cool Joshua - The college kids will love it.

Just be sure it is easily disabled and hidden for us old-timers.