请选择 进入手机版 | 继续访问电脑版

[Python] 恳请哪位大神帮忙改代码

[复制链接]
15718 Issac 发表于 2014-2-18 17:08:01 楼主
小弟初学python、是想大概模仿一个如图中的图案、、试了好多次都运行不了、、、哪位大神能帮忙改下、、、感激不尽啊、、、
aaa.png

snow.rar

10.08 KB, 下载次数: 106

关于大陆地区Rhino原厂培训中心
Jorin 发表于 2014-2-19 10:52:45
2
本帖最后由 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:46
3
Jorin 发表于 2014-2-19 10:52
请参考http://bbs.rhino3d.asia/thread-23244-1-1.html
这里再提供一个纯python的方式

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


snow.zip

6.2 KB, 下载次数: 98

 楼主| Issac 发表于 2014-2-19 18:43:22
5
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

评分

参与人数 1技术 +1 收起 理由
Jorin + 1 用向量的方式做,加一分。

查看全部评分

Jorin 发表于 2014-2-19 19:01:12
6
本帖最后由 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:04
7
Jorin 发表于 2014-2-19 19:01
你没发现咱们做出来的图案和你一楼的那个不一样吗?造成这个后果是因为gh前半部分输出的线不对,要做出一 ...

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

我刚刚试了下、、把我这个代码里面的这句的vector改成-vector就可以啦!哈哈
再补个图、、
000000.jpg
999.png
 楼主| Issac 发表于 2014-2-19 19:19:20
9
Jorin 发表于 2014-2-19 19:01
你没发现咱们做出来的图案和你一楼的那个不一样吗?造成这个后果是因为gh前半部分输出的线不对,要做出一 ...

呃、刚改那个好像还是不太对、、、呃、见笑了、、、
*滑动验证:
您需要登录后才可以回帖 登录 | 注册成为会员

本版积分规则