There's been plenty of request for "snap", "alignment" and generally precise relational positioning outside of the sketch environment in Fusion 360. This was also brought up in the Aug 6th 2013 webcast.
I'm coming from the software world, and started to think how similar stuff is handled there (mainly in web development and UI gadget layouts in general). This suggestion tries to bring that to CAD - with a hint of computer game feeling to it. It's intended to be both precise, flexible as well as intuitive to people who haven't used traditional CAD systems.
Implementing this would probably be a huge task, which I'm glad to leave in the hands of Autodesk. You may throw your criticism on this - I'm just trying to pump up creative discussion so that whatever the snap/alignment/precise positioning solution will be, it will be a good one.
That's more prefix than I normally put in my suggestions. Let's see the meat:
Each face would have added properties to it, individually adjustable on both sides:
- "no zone" (red below) which means no other element is allowed to enter that distance from the face
- "sticky zone" (green jelly) which means any element with also a sticky area would get stuck with this one
- "magnet" feature (not depicted), pulling other magnetized faces either apart or towards this one
None, some or all of these features can be applied, for a particular edge. There are ways they can be nicely presented to the user using modern transparent, possibly animated 3d graphics.
For a face, the areas are 3-dimensional space like those produced with the push/pull tool (which I used in the very mock-up pictures).
If the box was to be moved to the right, the red "no zone" would start pushing the cylinder within it when the cylinder touches the "no zone" edge. I.e. no other object can remain in that zone.
The green jelly-like blob (the "stick zone" or "glue zone") has no effect on the cylinder now, since the cylinder is not having a stick face. If it had, however, and the box was moved to the left, the cylinder would follow, as if glued to the jello.
The stick zone can be of zero depth, I.e. there would be only one allowed distance between the stuck objects. Or it can be used as a range, as in this picture.
The magnet option (not depicted here) is required for positioning things in between two walls. Make both the left and the right wall have "magnet +" and they'll push and pull other magnetized objects (s.a. the cylinder's face if it were to made magnetized) to their center. In this case, moving the box would also move the cylinder. Moving the cylinder would either also move the box, or let the cylinder fall back to the center, unless moved completely outside of the box (which would break the magnetic relation).
Similarly, just bringing a stickable object into a stick zone will make it stuck. Moving it fully outside the stick zone (with maybe a nice gummy bridge forming in 3d between the two objects, until it breaks! - like the iPhone gummy scrolling effect) would remove the stuck relationship.
Now, would this cover the actual use cases for relative positioning?
1. Snap two faces
- make them both sticky (with depth 0 or anything you like); no "no zone"
2. Safety margins, i.e. nothing closer than 0.5mm of these edges
- make a "no zone" of 0.5mm
3. Snap in two (or three) directions, with measures
- make a "sticky" relationship in all two/three dimensions. Must have enclosing walls in all these dimensions (if not, one can use Joint Origins).
( There needs to be an option to not have the "no zone" to have this usable. )
4. Center an element
- set both surrounding faces to magnetism "on"
- set center element's face/faces to magnetism "on"
5. Place an element proportionally (i.e. 2:3 towards the right wall)
- set left face's magnetism to 2.0
- set right face's magnetism to 1.0
- set center element's face/faces magnetism "on"
6. Snap multiple objects at different distances
- make the anchor object have certain stickiness distance; vary the stuck distances of the other objects
This brings the options we'd need for a one face, in one direction to:
- distance 1: thickness of the "no zone" (if on) and/or start of the sticky area
- distance 2: thickness of the sticky area
- no zone: on/off
- stickiness: on/off
- magnetism: on/off/numeric (on=1.0, off=0.0)
All of these only have effect within the particular component level (i.e. they don't stick to, prevent the placement or attract another component's elements).
Precise (editable) measurements can be shown alongside the visualizations, if the user so vishes.
The system can be applied also to edges (either single segments or full paths) by providing the normal direction (with faces the normal direction is always implicitly there). "No zone" then becomes a 2d sheet, as does the stick zone (or it's a scaled, offset version of the edge). The logic would be the same.
I'm keen to hear of a case / need you think couldn't be implemented with the above mentioned mechanism.
I am aware that this suggestion is far from traditional CAD world (it is, right?). But it's very close to the "physics simulation" world that people who've played Angry Bird and Amazing Alex are used to. It's intuitive.
The visualizations don't have to be on all the time. They should be shown when in 'move' mode (since that's where they matter). In addition, there can be a switch in the component level to force the visualizations to remain.
The system can be made to work with solid bodies as well as with T-spline bodies. The same logic applies, no matter how complex the surface of the element would be. The necessary offset calculations are already there in Fusion 360's code base.
What do you think of this?
Can't find what you're looking for? Ask the community or share your knowledge.