Constrain references and inferences

The current system of constraint currently works in two ways:

  1. moving the mouse so that an axis (or inferred axis) is highlighted and holding the [shift] so that the point will always follow that line, no matter where the mouse is moved to.

  2. hitting an arrow key to toggle the constraint to one of the ‘mapped’ directions:

  • up/down is blue,
  • right is red and
  • left is green.

The problem with 1) is that you have to move the mouse about until you find the desired inference and then you have to continue to hold [shift] until the correct point is clicked. If you let go of [shift], you loose the inference. This means that to get precise (typed in) dimensions, you have to click in the approximate place, then type in the size (assuming you don’t accidentally move the mouse between clicking and typing)

The problem with 2) is that the red axis might not be to the right of the screen and the green might not be to the left. The axis is also dependent on the context of the geometry; if a group or component has a different axis from the global one, then the blue axis (up) may actually extend to the right of the screen.

Request a: I would like it to remember the constrain or retain the existing position of the cursor when [shift] is released until the mouse is moved.

Request b: If the constrain is used when drawing a rectangle, then typing in one value would be the non-constrained dimension. (or if the constrain is not on one of the primary axis, then it would be the “length”)

Request c: I would like a key to work as a toggle to lock the [shift] constraint (I think [space bar] would work well) - so that you don’t need to hold down [shift]. Once constrained, hitting the same key would release the constrain.

Request d: I would like to be able to make the current vector (from the initial point to the mouse position) an inferred line that could be constrained to.

Request e: I would like a system option to lock the arrow mapping to the axis (as it is just now) or use an inferred axis so that when using the arrow keys if I hit the right arrow, the axis would be constrained to whatever axis runs off the right hand edge of the screen - be it red, blue or green.

Request f: I would like a key to cycle through active constraining/drawing axis (perhaps the down arrow?):

  • 1 (default) the axis of the current group/component that is active. (as it currently is)
  • 2 the axis of the containing group/component of the current one (if nested)
  • 3 the global axis.
    All constraints and push/pull would use the active axis.The axis would revert to the default any time a group/component is entered/exited.

Request g: I would like to see all of the inferred guidelines when positioning the cursor to drop a point:
If you hover over a node until it tells you what it is, there will be an invisible guide created so that your geometry lines up nicely*. These guides track your mouse position so that you see a dotted line following the mouse as you move along the inferred guideline, joining with other inferred points along the way. I would like to see them extend faintly beyond the cursor and any inferred points show faintly so that it’s easier to position the mouse and see when you are snapping to the inference points.
*(most of the time)

For this request to be viable, your cursor position must trigger an inference from something in the model, since otherwise the current cursor position only indicates an infinite ray through the model! But given an inference to fix a 3D point for the cursor, it could be done.

If you clicked where the mouse position was/is, then where will that point lie in 3D space? This is the second point on a vector.

If you hover over a node, then you get the inference point - I was initially thinking that a line from the starting point to the current inference point, but then I thought - “if I click here, it will draw a line to here… the line must follow a vector… why can’t that be constrained to as well?”

What I was trying to say is when you click, SketchUp either projects the 2D click location onto some feature of the model (face, edge, vertex) or onto the 2D plane closest to perpendicular to the current view direction. There is no way to click and get an arbitrary position in 3D space except via inference.

Not disputing that; and if I draw the line first, then I can use that line as a vector and hold [shift] to constrain to it and carry on the line for as long as I want. I’m just lazy and don’t want to draw the line first.

Perpendicular lines and lines through mid/end points could be constrained to that vector without having to add geometry or guidelines first.

a and c would be solved if Shift would constrain inferences instead of us having to keep it pressed down. Something simple like this could be activated at Sketchup Preferences with a tickbox.