CAD Like transform

  • Declaring separate pivot point
    Possible using a dedicated special mode so workflows remains as simple as possible

  • More tools
    While possible, it is not a viable option.
    There are basically 2 ways

  1. Write new operators around snap, but we must implement our own special replacement for native blender’s operators - they often are “modals” meaning interaction is not possible from python side when running - or hackish / not always reliable.
  2. Enhance native snap and use it in existing / new operators, the Germano’s way. The only one to actually get required level of access to snap while native operators are running and in the end the larger possible benefits.
  • Support for empties
    You may snap to empty “origin”, there is no other available geometry in empty to snap to.

  • Constraint
    Will take a look at allowing such things.

  • Declaring seperate pivot point
    I’m sorry, I don’t understand what you mean.
    Do you mean it’s available without the add-on or using another add-on?
    Or do you mean it’s available within this add-on? If so, how do you this / activate this special mode?

  • Support for empties
    Ah, okay. I must’ve thought that the empty’s origin would be accessed with the vertex snap mode.

  • Constraint
    Great :smiley:

  • Moving by distance apart from direction
    What about this one?

1 Like


is it possible somehow slide this edge to be match like in screen?

1 Like

Yes, but require 3 steps. Using edge projection to constraint axis of individual vertex.


i’M LOST IT!!!

Hey Stephen, I think you may have read over my reply.
In short:
I don’t get what you mean with: “using a dedicated special mode”. Which special mode?

A new one, triggered by using hot key

Ohh so you mean you’re (maybe) gonna add that in a future update?

Will take a look at ways to handle such things

Ahh okay. Cool! Thanks man :smiley:

I do a lot of modelling from images and need to scale to a specific dimension (ie architects plans). If I drag in an image (ie a plan) and try and use Scale 2D with a dimension (ie 17.4m) I get weird results. I suspect it’s because the image comes in as an empty with an associated image file and CAD transform looks as if it works with meshes. Otherwise great addon and hope you continue working on it. I bought “Snap Utilities” which seemed to stop development soon after.

Rescale expect a base size as reference, so it rescale based on that size. Without any reference, base scale is 1.0 so entering 17.4m simply multiply scale by 17.4

It seems that the add-on snapping features are limited when trying to use it in local view. It will detect globally. I’m wondering if this is a known issue.

1 Like

Hey was not aware of this issue, thank you for reporting.

1 Like

Can’t reproduce such behavior on 2.83.13 ver 0.08
It tooks edge as length, not constraint.
What are exact steps to reach such a result, as displayed in dashed lines?

Once constraint setup, snap on moving vertex and left click to set “snap from”, then snap on opposite edge.

It’s works for me.
After you set up constraints you need grab point again

1 Like

Aw, I got it.
You need

  1. Press G to start grab without further picking anything because next step will be
  2. Press C to make a constraint without hovering mouse on anything (otherwise it will create edge-based constraint)
  3. Set constraint with two clicks
  4. Pick initial vertex again to obtain its starting transformation coordinates (CAD: from)
  5. Using edge snap mode hover over edge to get temporary structures for ending transformation coordinates (CAD: to)
  6. Press LMB to move from coordinates (4) to coordinates (5)

Damn, it was a lot of context to learn and recognize)
It was interesting, but are usually making it simpler operating on edges.

1 Like

There are 2 use cases for perpendicular, perpendicular from and to.
Rotation use case is perpendicular to something. The same goes for curve editing where you have a point far from an edge and want to move another one so it lie on edge perpendicular from first one.

In this case there must be a perpendicular “from” edge at vertex location and we should compute intersection between perpendicular and constraint axis. This behavior is not implemented, but looks like this use case may be relevant and deserve a closer look.