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

标题: 新人脚本出问题,求各位大神指导 [打印本页]

作者: kietsuc    时间: 2015-5-19 23:15
标题: 新人脚本出问题,求各位大神指导
各位大神好:
       我在写一个脚本时遇到如下问题,求各位大神指导,拜谢了。
以下是脚本代码:

#coding=utf-8
import rhinoscriptsyntax as rs
import scriptcontext as sc
while True:
    rs.Command("_Circle ")
    Cir = rs.LastCreatedObjects(False)
    rs.SelectObject(Cir)
    if Cir == None:
        break
    rs.Command(" _Offset ")
    rs.Command("_History _R=是 _U=是 _L=否 " + " _Enter", False)
    rs.SelectObject(Cir)
    rs.EnableObjectGrips(Cir)
    rs.UnselectAllObjects()
    while True:
        point = rs.GetObjectGrip("选取要调整的控制点")
        rs.Command("_Move " + str(point[2]))
        if point == None:
            continue
    rs.EnableObjectGrips(Cir,False)
    rs.SelectObject(Cir)
    if sc.escape_test(False):
        break


作者: kietsuc    时间: 2015-5-19 23:19
C:\Users\kietsuc526\Desktop\YKQ`$3IAM$7I1I5AJ7PY2DE.png
由于我不知道怎么在发图的时候上图片,所以我只好在评论里上图片了

我遇到如下两个问题:

第一个问题是,拾取控制点后,在移动的时候,移动起点定位不到控制点上面。
作者: kietsuc    时间: 2015-5-19 23:21
唉,我真不知道怎么上传图片,真的不好意思,看看附件能不能上传了
作者: kietsuc    时间: 2015-5-19 23:29
第二个问题:

while True:
        point = rs.GetObjectGrip("选取要调整的控制点")
        rs.Command("_Move " + str(point[2]))
        if point == None:
            continue
当point我不选择的时候,软件提示:
Message: 'NoneType' object has no attribute 'OwnerId'

我做这个的想法是,如果point==None, 这脚本跳过这次循环,继续从头运行。




帖子很乱,我会回去好好看看论坛公告,打扰各位大神了,谢谢各位大神。
作者: 筑梦NARUTO    时间: 2015-5-20 00:51
先整理下帖子吧。。。发帖的时候有个高级模式啊。。。这样就可以发图片链接啥的了。。。。

还有就是写脚本的时候能用函数解决的问题就少调用rhino的命令了比如(rs.MoveObject函数)。。。。你写的和写宏一样了。。。没有发挥脚本的优势啊。。。


QQ图片20150520004158.png (19.81 KB, 下载次数: 22)

QQ图片20150520004158.png

作者: kietsuc    时间: 2015-5-20 03:10
好的,我重新整理过大神。我对脚本确实还欠缺一种感觉,每次写,总是感觉抓不到要领,不知道为什么。
作者: kietsuc    时间: 2015-5-20 10:32
之前因为浏览器问题,一直找不到图片上传的选项,现在重新整理好帖子。



首先第一个问题:

运行到选取控制点,然后移动时,我将移动的起点设定为控制点所在的3d点,下图是在添加圆的平面上拾取的。



然后,我转到右视图进行移动,就变成了下面这样,移动起点不在控制点上。



转到正视图也是一样。


我的疑问是,rs.GetObjectGrip函数的返回值列表,第三个元素是代表操作点位置的 3-D 点,但是为什么会出现这样的情况?我该从哪个方面去解决?



{E1OS0O70WOPSJE{ZT42}US.png (47.45 KB, 下载次数: 16)

{E1OS0O70WOPSJE{ZT42}US.png

作者: kietsuc    时间: 2015-5-20 10:36
第二个问题是关于循环的问题,我的想法是:整个脚本需要循环直到我停止,然后在整个脚本的循环里面再加入控制点  “选取---移动” 的循环,直到我停止后,继续整个脚本的循环。但是当 “ point = rs.GetObjectGrip("选取要调整的控制点")” 里面面,我不选取控制点后,脚本跳出,并有如下提示:

这个是哪里除了问题?





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