Rhino(犀牛)中国技术支持与推广中心

标题: 将RhinoPython代码修改为GHpython代码的简易教学 [打印本页]

作者: Jorin    时间: 2014-2-21 18:12
标题: 将RhinoPython代码修改为GHpython代码的简易教学
本帖最后由 Jorin 于 2014-2-22 00:16 编辑

以该同学的的代码为例
http://bbs.rhino3d.asia/thread-23768-1-1.html

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

[mw_shl_code=python,true]def main():
    global t
    t = 0
    while t <= 1:
        dividecurve(curve_id,t)
        t += 0.002[/mw_shl_code]
那么curve_id这个参数从哪里来呢?
第二步,修改GHpython元件的输入参数
默认情况下,GHpython元件的两个输入参数是x和y,输出参数是a


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


第三步,查错,并删除不能在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()
至此,整个代码修改过程完毕:
[mw_shl_code=python,true]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()[/mw_shl_code]
最终效果如图:

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


作者: 470942035    时间: 2014-2-23 13:53
严重不懂,
作者: 筑梦NARUTO    时间: 2015-4-18 13:45
本帖最后由 筑梦NARUTO 于 2015-4-18 14:33 编辑

写了两种方法交个作业。就不发源码了。给别人思考空间

QQ图片20150418132213.jpg (299.44 KB, 下载次数: 34)

QQ图片20150418132213.jpg

QQ图片20150418132239.jpg (636.47 KB, 下载次数: 34)

QQ图片20150418132239.jpg

作者: 806331126    时间: 2015-11-30 20:33
新手想请教一下,怎么写才能直接让颜色与Shader相连不发生错误或者怎么写直接生成gh接受的材质,怎么让IronPython.Runtime.List的原始的列表显示出来

4.jpg (386.02 KB, 下载次数: 36)

4.jpg

3.png (101.81 KB, 下载次数: 22)

3.png

2.jpg (372.36 KB, 下载次数: 39)

2.jpg

1.jpg (333.99 KB, 下载次数: 41)

1.jpg

作者: 筑梦NARUTO    时间: 2015-12-2 10:39
806331126 发表于 2015-11-30 20:33
新手想请教一下,怎么写才能直接让颜色与Shader相连不发生错误或者怎么写直接生成gh接受的材质,怎么让Iron ...

已经解决,http://bbs.rhino3d.asia/forum.php?mod=viewthread&tid=26853




欢迎光临 Rhino(犀牛)中国技术支持与推广中心 (http://bbs.rhino3d.asia/) Powered by Discuz! X3.2