如何在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中进行调用编辑,