Hi there,
I have the following model…
Now maybe I completely misunderstand the concept of rs.XformChangeBasis(), because when I try this:
obj = rs.ObjectsByName("test")[0]
x = rs.WorldXYPlane()[1]
y = rs.WorldXYPlane()[2]
z = rs.WorldXYPlane()[3]
pt = [0,0,0]
pln1 = rs.PlaneFromFrame(pt, y, z)
pln2 = rs.PlaneFromFrame(pt, x, y)
plane_transform = rs.XformChangeBasis(pln2, pln1)
transformed = rs.TransformObject(obj, plane_transform, copy=False)
the output is the following:
So far this is what I wanna achieve.
But when I try to transform it ot another plane like that:
obj = rs.ObjectsByName("test")[0]
x = rs.WorldXYPlane()[1]
y = rs.WorldXYPlane()[2]
z = rs.WorldXYPlane()[3]
pt = [0,0,0]
pln1 = rs.PlaneFromFrame(pt, y, z)
pln2 = rs.PlaneFromFrame(pt, x, z)
plane_transform = rs.XformChangeBasis(pln2, pln1)
transformed = rs.TransformObject(obj, plane_transform, copy=False)
It seems to orient it to a completely other plane (y/reverse x).
What am I missing or what do I understand the wrong way?
Thanks in advance,
T.
Here’s an update:
I made it work this way:
obj = rs.ObjectsByName("test")[0]
x = rs.WorldXYPlane()[1]
y = rs.WorldXYPlane()[2]
z = rs.WorldXYPlane()[3]
pt = [0,0,0]
pln0 = rs.PlaneFromFrame(pt, x, y)
pln1 = rs.PlaneFromFrame(pt, y, z)
pln2 = rs.PlaneFromFrame(pt, x, z)
plane_transform = rs.XformChangeBasis(pln0, pln1)
transformed = rs.TransformObject(obj, plane_transform, copy=False)
plane_transform = rs.XformChangeBasis(pln2, pln0)
transformed = rs.TransformObject(transformed, plane_transform, copy=False)
So maybe I really have a totally wrong understanding of the transform methodology?
Is this the right way to do it?
@dale
perfect, yes.
I did not search for the solution in rhinocommon.
import Rhino.Geometry as rg
transformed = rg.Transform.PlaneToPlane(pln1, frm)
result = rs.TransformObject(obj, transformed, copy=True)
May I ask though if my thougts are correct here:
When using Transform.ChangeBasis I always have to go that way:
source to XY. XY to target.
Is that correct?
dale
(Dale Fugier)
September 9, 2020, 3:16am
5
x = Transform.ChangeBasis(plane_to_transform_form, plane_to_transform_to);
1 Like