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

标题: 恳请哪位大神帮忙改代码 [打印本页]

作者: Issac    时间: 2014-2-18 17:08
标题: 恳请哪位大神帮忙改代码
小弟初学python、是想大概模仿一个如图中的图案、、试了好多次都运行不了、、、哪位大神能帮忙改下、、、感激不尽啊、、、

aaa.png (63.02 KB, 下载次数: 30)

aaa.png

snow.rar

10.08 KB, 下载次数: 154


作者: Jorin    时间: 2014-2-19 10:52
本帖最后由 Jorin 于 2014-4-10 11:06 编辑

请参考http://bbs.rhino3d.asia/thread-23244-1-1.html
这里再提供一个纯python的方式
[mw_shl_code=python,true]#coding=utf-8
import rhinoscriptsyntax as rs
lines=rs.GetObjects("选择曲线",rs.filter.curve)
level=rs.GetReal("迭代次数(1-6)",5,1,6)
rs.EnableRedraw(False)
def CreatLine(points):
    n=len(points)
    ll=[]
    for i in range(n-1):
        lid=rs.AddLine(points,points[i+1])
        ll.append(lid)
    return ll
def Excute(line):
    points=rs.DivideCurve(line,3)
    pt2=rs.AddPoint(points[2])
    mid=rs.RotateObject(pt2,points[1],-60,copy=True)
    points.insert(2,mid)
    ll=CreatLine(points)
    rs.DeleteObjects([pt2,mid,line])
    return ll
def run(lines,level):
    for line in lines:
        ll=Excute(line)
        if level>1:
            run(ll,level-1)
run(lines,level)[/mw_shl_code]
作者: Issac    时间: 2014-2-19 14:48
Jorin 发表于 2014-2-19 10:52
请参考http://bbs.rhino3d.asia/thread-23244-1-1.html
这里再提供一个纯python的方式

感谢jorin大神的回复啊、我的python就是根据你的视频学的!受益匪浅!刚刚解决了我那个代码的问题、、粗心的错误还是挺多的、、感谢你提供这个方法啊!期待你的新视频!
作者: Jorin    时间: 2014-2-19 17:31
把我那段代码改了改,放到你的GH里面,就是这个样子了。
改的时候用了一个全局变量。



snow.zip

6.2 KB, 下载次数: 143


作者: Issac    时间: 2014-2-19 18:43
Jorin 发表于 2014-2-19 17:31
把我那段代码改了改,放到你的GH里面,就是这个样子了。
改的时候用了一个全局变量。

给Jorin大神交个作业:这是我把原来那个改好了、、嘿嘿
import rhinoscriptsyntax as rs
def main():
    global new_lines
    new_lines = []
    snow(line,0,new_lines)
def snow(line,level,new):
    if level == maxlevel:
        new.append(line)
        return
    start = rs.CurveStartPoint(line)
    end = rs.CurveEndPoint(line)
    pt1 = start*(2/3) + end*(1/3)
    pt2 = start*(1/3) + end*(2/3)
    midv = (start + end)/2
    mid = rs.AddPoint(midv)
    vector = rs.VectorCreate(end,start)
    vector = rs.VectorCrossProduct(vector,[0,0,1])
    vector = rs.VectorUnitize(vector)
    vector = rs.Distance(pt1,pt2)*num*vector
    mid = rs.MoveObject(mid,vector)
    level += 1
    snow(rs.AddLine(start,pt1),level,new)
    snow(rs.AddLine(pt1,mid),level,new)
    snow(rs.AddLine(mid,pt2),level,new)
    snow(rs.AddLine(pt2,end),level,new)
main()

无标题.png (480.22 KB, 下载次数: 29)

无标题.png

作者: Jorin    时间: 2014-2-19 19:01
本帖最后由 Jorin 于 2014-2-19 19:07 编辑
Issac 发表于 2014-2-19 18:43
给Jorin大神交个作业:这是我把原来那个改好了、、嘿嘿
import rhinoscriptsyntax as rs
def main():

你没发现咱们做出来的图案和你一楼的那个不一样吗?造成这个后果是因为gh前半部分输出的线不对,要做出一楼图示中一模一样的效果,得换成三角形做。
作者: Issac    时间: 2014-2-19 19:05
Jorin 发表于 2014-2-19 19:01
你没发现咱们做出来的图案和你一楼的那个不一样吗?造成这个后果是因为gh前半部分输出的线不对,要做出一 ...

哦哦!原来是这样、、Jorin大神看得好仔细啊、、那图我确实还没好好看、这次我只是想模仿一下、、练习一下递归、、嘿嘿、、今天能得到Jorin大神这么悉心的回答我真是荣幸啊!
作者: Issac    时间: 2014-2-19 19:15
本帖最后由 Issac 于 2014-2-19 19:17 编辑
Jorin 发表于 2014-2-19 19:01
你没发现咱们做出来的图案和你一楼的那个不一样吗?造成这个后果是因为gh前半部分输出的线不对,要做出一 ...

我刚刚试了下、、把我这个代码里面的这句的vector改成-vector就可以啦!哈哈
再补个图、、

000000.jpg (199.52 KB, 下载次数: 24)

000000.jpg

999.png (115.43 KB, 下载次数: 24)

999.png

作者: Issac    时间: 2014-2-19 19:19
Jorin 发表于 2014-2-19 19:01
你没发现咱们做出来的图案和你一楼的那个不一样吗?造成这个后果是因为gh前半部分输出的线不对,要做出一 ...

呃、刚改那个好像还是不太对、、、呃、见笑了、、、




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