将RhinoPython代码修改为GhPython代码的简易教学

本次教学将教大家把RhinoPython代码修改为GhPython代码的基本方法。

我们使用一位同学在Shaper分享的代码来修改,获取源代码请访问:
http://bbs.rhino3d.asia/thread-23768-1-1.html

第一步,把RhinoPython的交互函数去掉

此例中直接把第20行(让用户选取曲线的语句)删除。修改完以后的main函数如下:

[sourcecode language=”python”]
def main():
global t
t = 0
while t <= 1:
dividecurve(curve_id,t)
t += 0.002
[/sourcecode]

那么curve_id这个参数从哪里来呢?
第二步,修改GHpython元件的输入参数
默认情况下,GHpython元件的两个输入参数是x和y,输出参数是a

1.jpg
我们需要的是curve_id,所以删除一个参数,修改剩下一个参数的名称为curve_id,并从外部为curve_id输入一条曲线
修改后的应该是这样:

2.png
第三步,查错,并删除不能在GH中使用的函数
此例中删除第17行line = rs.ObjectColor(line,getcolor(parameter))为直线设置颜色的函数。
GH用自身的颜色显示方式覆盖了Rhino场景中的颜色显示方式,这个函数不能直接使用,之后可以通过GH显示颜色的原件去做。为了方便讲解修改代码的要点,我们直接删除此行和getcolor函数。
第四步,添加输出参数
不论GHpython中添加了多少物件,但只要不在原件的输出端做输出,都不会显示出来。
不同的代码,输出参数的设置方法不同,但只要记住上面这点,就很好设置了。
此例代码中产生了很多直线,我们要输出这些直线,就需要添加一个列表,来记录这些直线。
我们在main()函数中添加一个列表line,while循环每循环一次,line列表中就增加一条直线。
但是dividecurve函数并没有返回值,所以还需要把dividecurve函数中的line返回。
但此时main函数中的line列表同样是局部变量,不能直接用于输出,所以我们返回main函数中的line列表。
在执行main函数后,输出main函数的返回值,所以我们让输出参数a=main()
至此,整个代码修改过程完毕:

[sourcecode language=”python”]
import rhinoscriptsyntax as rs

def dividecurve(curve_id,parameter):
domain = rs.CurveDomain(curve_id)
t_curve = domain[0] + (domain[1] – domain[0])*parameter
point = rs.EvaluateCurve(curve_id,t_curve)
if point:
line = rs.AddLine(point,[0,0,0])
return line

def main():
line=[]
global t
t = 0
while t <= 1:
line.append(dividecurve(curve_id,t))
t += 0.002
return line

a=main()[/sourcecode]

最终效果如图:

4.jpg
为了讲解方法,我们修改中间牺牲了颜色变化的特性,现在大家了解方法以后,可以做一个练习,把颜色也输出出来,做成如下结果:

5.png

提交作业及更多关于此话题的讨论,请访问

http://bbs.rhino3d.asia/thread-23770-1-1.html

此条目发表在Grasshopper, RhinoPython, RhinoScript分类目录,贴了, , , , 标签。将固定链接加入收藏夹。