如何在rhino python中调用单轴缩放对物体进行缩放

如何在rhino python中调用单轴缩放对物体进行缩放

使用 ScaleObject 函数,自己计算一下X,Y,Z分别需要缩放多少就行了。
不过如果你是在rhinopython中写,调用犀牛的Scale1D指令也行。

bool = rs.Command("-_Scale1D " + " SelID " + str(obj) + " _Enter " + "_Copy=_No " + str(origin) + " " +  str(pt1) + " " +  str(pt2)+ " _Enter")

scale.3dm (25.5 KB)模型
scale.gh (450 字节)代码(可重命名为scale.py)


我想让box以point-0为基点单轴缩放到point-1,但我写的代码执行完后却为一条直线。scale object好像是三轴缩放的

非常感谢,我是想通过点的坐标差来进行缩放

犀牛的单轴缩放也是需要两个参考点的。如图从第二个点缩放到第一个点。(注意:如果不是正X,Y,Z方向的缩放,就需要分解一下坐标了。)

#coding=utf-8
import rhinoscriptsyntax as rs
import Rhino.RhinoDoc as rr
import Rhino as r
import scriptcontext as sc
sc.doc=rr.ActiveDoc
box1=rs.GetObject('',rs.filter.extrusion)
pts=rs.GetObjects('select points',rs.filter.point)
#rs.AddTextDot('point_0',pts[0])
#rs.AddTextDot('point_1',pts[1])
point_0=rs.PointCoordinates(pts[0])
point_1=rs.PointCoordinates(pts[1])
point_2=rs.PointCoordinates(pts[2])


vector1=(point_1-point_0)
vector2=(point_2-point_0)
#下面表示X缩放,Y,Z都不变都是1
sc = ((vector1.Length)/(vector2.Length),1,1)
box2=rs.ScaleObject(box1,point_0,sc,copy=False)
1 个赞

太感谢了,之前困扰了好久,您有教学课程吗,想跟着学

再请教下,这里的rs.Command返回的是布尔值,没法进一步在gh-py中进行调用编辑,

1:需要你把生成的物体拾取进GH,比如使用 LastCreatedObjects 函数。如果你是在GH中操作,用rs.Command就麻烦了,我个人还是建议直接用GH或者rs.ScaleObject函数。
2:用GH或者rs.ScaleObject函数可以直接把单轴缩放的方向设置成工作平面的X方向。如图

1 个赞