OSNAPZ-like projected snapping defeated by UCS orientation
Following elegant resolution by Roy Gebbinck in
https://forum.bricsys.com/discussion/comment/42194/#Comment_42194
of my question (challenge?) about "Moving a face by distance measured not perp to the face",
here, below, is another case.
I've been trying to use the same magic property of Temporary Tracking to solve this one too, but looks like it can't be applied to this one.
Both these are just sample cases of a general question, for which I proposed an all-purpose solution:
that the direction of Move, Extrude, PushPull, dmMove, Navigator etc operations,
needs to be optionally separated from the dimensional framework that will define the direction/plane/normal of the distance or alignment that will define the Move.Something like an optional subsidiary UCS that can be defined, that works only to set the plane/normal (incl SHIFT to lock snap tracking) of
- the distance of the Move,
- or the Move's snap-intersection with plane, edge or point, or with a projection of plane or edge,
- or the Move's perp-to-ref-plane projected alignment using 'ignore entity snap elevation' and 'entity snap to negative Z'.
And/or something like setDirection>2Points/Xaxis/Yaxis/Zaxis, as in dmExtrude, to set the dimensional framework.
AI/ML could make this all predictively easy, like never before on the drawing board on in CAD 2D.
Or, summed up in Michael Mayer's words:
to separate Extrusion Vector from Dimension Vector and do the math for you.
Short of that, all suggested methods so far are mere workarounds, to an unaddressed general problem - incl Roy's use of Temporary Tracking, however elegant in that particular case.
Temporary tracking doesn't seem to work (please prove me wrong!) in the case below (which was previously asked in
https://forum.bricsys.com/discussion/34057/projecting-plan-to-sloping-plane#latest).
See attached dwg.
A 2D roof-timbering Plan (a Block) lies in the horizontal plane above the 3D 'flat' roof sloping at 10o, that is being constructed by snapping to points of the Plan.
Two sample timbers are shown already placed on the decking plane.
Red lines show how their endpoints were projected vertically from points of the Plan i.e. projected perp to the Plan but therefore not perp to the sloping roof plane.
The timbers are created as Linear Polysolids, which means that UCS has to be oriented with its XY plane on the roof plane.
The two sample timbers were done by creating 'helper elements', later deleted - prob many ways of doing that.
But I want Brics to place start and end of the Linear Polysolid simply by snapping to points of the Plan, with the aid of snap settings such as OSNAPZ.
If the roof plane was horizontal, same as the Plan, then no problem - with DUCS off, Elevation = 0, Snap 'Ignore entity snap elevation' (OSNAPZ) would do it easily - clicking on a point of the Plan would place a snappable point on the XY plane of the UCS i.e. on the roof plane, as start or end of the Linear Polysolid.
But when the roof plane and therefore the UCS is sloped 10o, the UCS's Z-direction along which the clicked point is projected is no longer perp to (straight down from) the Plan and so lands on the roof plane in quite the wrong place.
So - how can Temporary Tracking help here, or any other way of direct snapping without resorting to 'helper elements'?
Comments
-
This is a difficult one. One of the issues is that the projection plane for the 2D geometry lies on the top of the spacers. This plane therefore does not exist until you create the first spacer.
It is however possible to create a temporary tracking line parallel to an existing line using _Parallel snap. Combined with the _ZIntersection snap it is then possible to project points in the direction of the WCS Z axis (assuming there is at least one line or edge parallel to that axis in the model) onto a sloping face even if the UCS is aligned with that face. But I have not been able to do the same on an extended plane.
In this specific case I would go for the most efficient option and rely on temporary geometry: _Explode + _ProjectGeometry.
0 -
Thanks Roy.
First, I agree your first para - ways and means to get round that, no problem - it's not part of the 'case' that I'm presenting. So let's deem that there is already a bit of face in that plane, to set the UCS to.
Then, your second para - I'm not sure if it's addressing the first para? Working hard to visualise! so would help to know that.
0 -
Does BricsCAD have the transparent 'cal command, it would be a fairly simple macro (well 2 macro's one to setup the plane for the top of the timbers) using the 'ilp' method Intersection Line Plane, which you setup to project plan geometry down to a working plane at any angle/orientation.
0 -
Boys, are you on a wild goose chase? Establishing the plane of the Linear Polysolid spacer timbers is no problem, not what I'm asking about.
0 -
I think I have understood the problem.
In my previous post I have tried to explain that the required projection is possible provided there is an actual plane to project onto. Projecting onto an extended plane, or the 'virtual' XY plane of the current UCS for that matter, does not seem possible with default BricsCAD tools.BricsCAD does not have a _Cal command like AutoCAD.
0 -
@Roy Klein Gebbinck said:
... possible to create a temporary tracking line parallel to an existing line using _Parallel snap. Combined with the _ZIntersection snap it is then possible to project points in the direction of the WCS Z axis ... onto a sloping face even if the UCS is aligned with that face.Yes, once more brilliant. Uses TT rather than TK.
What's so elegant is that the direction of the Temporary Tracking line can be independent of the UCS, or indeed independent of the WCS Z axis.It would work also where the sloping 'receiver' plane (and UCS thereon) was doubly canted i.e. sloping both lengthwise and widthwise relative to the Plan. I have that on another scheme.
So this method does still require 'helper' elements, later deleted;
a) a vertical line or edge i.e. perp to the Plan, to parallel the temporary tracking line to (have that already in the full model), and
b) an actual plane (Manipulator>Copy Face) to intersect the temporary tracking lines with, becauseProjecting onto an extended plane, or the 'virtual' XY plane of the current UCS for that matter, does not seem possible with default BricsCAD tools.
True, it seems - a pity. Then we cd do without 'helper' b). Would be so neat, to instead just swing the UCS into reqd plane.
This has been a massive education in the finer points of snapping, tracking lines etc. Thanks v much.
0 -
@Roy Klein Gebbinck said:
In this specific case I would go for the most efficient option and rely on temporary geometry: _Explode + _ProjectGeometry.That was suggested in https://forum.bricsys.com/discussion/34057/projecting-plan-to-sloping-plane#latest .
Trouble is cleanup/deletion - the projected geometry draws itself as numerous lines, top bottom and sides of everything it touches.0 -
The _ProjectGeometry command uses the current layer for the new entities. By creating and activating a dedicated temporary layer before invoking the command, all projected entities will be easily identifiable. Cleanup is then relatively simple: With Quick Select you can select the entities for deletion by filtering for the layer property, or you can choose to delete the layer.
Projecting onto a region will result in fewer entities. I don't know why the command will not project onto a single face of a solid.
0 -
That's gd - thanks
0 -
@Roy Klein Gebbinck said:
Projecting onto an extended plane, or the 'virtual' XY plane of the current UCS for that matter, does not seem possible with default BricsCAD tools.I've made a Feature Request.
0