NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 10695|回复: 5
打印 上一主题 下一主题

[在线求助] RS问题求助

[复制链接]
跳转到指定楼层
1m
发表于 2012-5-17 22:19:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
例如,用 myline=rhino.getobjects("get")
我在犀牛里选择了很多根线,那么在下面的语句中怎么调用每一根线?
例如我要求出每跟线的起点:
Call xialiaokuang()
Sub xialiaokuang()
Dim objectall,i
objectall = rhino.GetObjects("select curves",4,True,True)
call rhino.CurveStartPoint(objectall(i))
End Sub

这明显是错误的,但具体怎么调用,求帮助。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
2m
 楼主| 发表于 2012-5-17 23:50:49 | 只看该作者
本帖最后由 wangjunxiong 于 2012-5-17 23:52 编辑

经过努力,已经把前问题解决。
Call xialiaokuang()
Sub xialiaokuang()
        Dim strObject, spt01,ept01,i,h,x,y
        strObject = Rhino.GetObjects("Select curves",4,True,True)
        If isnull(strObject) Then Exit Sub
        For Each i In strObject        
                spt01 = Rhino.CurveStartPoint(strObject(h))
                ept01 = Rhino.CurveEndPoint(strObject(h))
                Rhino.AddPoint spt01
                Rhino.AddPoint ept01
                h=h+1
        Next
End Sub

可是,问题又来了!!
求出了点,那么如何把点的x ,y ,z 单独提取出来呢???
我始终都迷迷糊糊这东西是怎么个排列的!GH内排列是十分直观的,但RS真让我摸不着头脑{:3_52:}
3m
发表于 2012-5-18 04:22:09 | 只看该作者
2# wangjunxiong
在c#里面就是 spt01.x spt01.y spt01.z就可以了,是一个结构体。但不知rs是不是也这样。
4m
发表于 2012-5-18 16:30:44 | 只看该作者
RS里面如果point是一个点的话(如 Rhino.CurveStartPoint(strObject)返回的值),那么(point(0),point(1),point(2))是给点的坐标值
5m
 楼主| 发表于 2012-5-18 17:49:01 | 只看该作者
4# wenchongyun

我想把所有直线的起点和终点做成一个列表,然后把这些点排序,抽出我想要的那一个点 !在GH里可以轻松搞定这个问题。RS实在是麻烦,或者是我还没掌握办法。

用循环得到的都是单数据,那么循环N次,我怎么把这N次的结果做成一个表呀?

例如,每条直线有一个端点,有10条直线,那么就有10个端点,我怎么才能把10个端点放在一个列表中,我的意思是怎么把10个端点的坐标写入 array ,或者我怎么同时比较这10个端点的x轴的值的大小 ?

卡在这里!郁闷呀!搞了一天都没搞懂数组到底怎么使用!唉,真愁!
6m
 楼主| 发表于 2012-5-18 19:12:13 | 只看该作者
终于还是自己解决了。 唉

Call xialiaokuang()
Sub xialiaokuang()
        Dim strObject, spt01,ept01,i,h,j,points,arrPoints,arr,p
        h = 0
        j = 0
        strObject = Rhino.GetObjects("Select curves",4,True,True)
        If isnull(strObject) Then Exit Sub
        Dim array01()
        Dim array02()
        For Each i In strObject               
                spt01 = Rhino.CurveStartPoint(strObject(h))
                ept01 = Rhino.CurveEndPoint(strObject(h))
                h=h+1
                ReDim Preserve array01(j)
                array01(j)= spt01
                ReDim Preserve array02(j)
                array02(j)= ept01
                j=j+1
        Next
        arr = Rhino.SortPoints(array01)
        For Each p in arr
                Rhino.Print Rhino.Pt2Str(p)
        Next
End Sub

小黑屋|手机版|NCF参数化建筑论坛 ( 浙ICP备2020044100号-2 )    辽公网安备21021102000973号

GMT+8, 2024-5-12 10:35 , Processed in 0.056710 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表