NCF参数化建筑论坛

标题: script小问题求助 [打印本页]

作者: xerrolol    时间: 2011-7-3 18:20
标题: script小问题求助
想通过joinsurface这个命令把几个面接成polysrf,但是不能成功,也没有弹出错误

截取一段简化的代码如下

Dim objects, sArr1,sArr2,sArr3,sArr4,srf1,srf2,srf3,srf4,arrsrfs

sArr1=array(array(0,0,0),array(5,0,0),array(0.5*5,0,2))

sArr2=array(array(0,5,0),array(5,5,0),array(0.5*5,5,2))  

sArr3=array(array(0,0,0),array(0,5,0),array(0.5*5,5,2),array(0.5*5,0,2))   

sArr4=array(array(5,0,0),array(5,5,0),array(0.5*5,5,2),array(0.5*5,0,2))

srf1=rhino.AddSrfPt(sArr1)

srf2=rhino.AddSrfPt(sArr2)

srf3=rhino.AddSrfPt(sArr3)

srf4=rhino.AddSrfPt(sArr4)

arrsrfs=array(srf1,srf2,srf3,srf4)


objects=rhino.JoinSurfaces(arrsrfs,True)



求高手指点,代码有什么问题或者应该怎样做。
谢谢!
作者: panhao1    时间: 2011-7-3 19:25
好像要输入3维点 而不是数组吧
作者: 1235813    时间: 2011-7-3 20:18
Dim objects, sArr1,sArr2,sArr3,sArr4,srf1,srf2,srf3,srf4,arrsrfs

        sArr1=array(array(0,0,0),array(5,0,0),array(0.5*5,0,2))

        sArr2=array(array(0,5,0),array(5,5,0),array(0.5*5,5,2))  

        sArr3=array(array(0,0,0),array(0,5,0),array(0.5*5,5,2),array(0.5*5,0,2))   

        sArr4=array(array(5,0,0),array(5,5,0),array(0.5*5,5,2),array(0.5*5,0,2))

        srf1=rhino.AddSrfPt(sArr1)

        srf2=rhino.AddSrfPt(sArr2)

        srf3=rhino.AddSrfPt(sArr3)

        srf4=rhino.AddSrfPt(sArr4)

        call rhino.SelectObjects(array(srf1,srf2,srf3,srf4))
        call rhino.Command("join")
        call rhino.UnselectAllObjects
        objects=rhino.LastCreatedObjects
作者: 1235813    时间: 2011-7-3 20:19
本帖最后由 1235813 于 2011-7-3 20:20 编辑

应用join命令来实现
作者: sysjs    时间: 2011-7-4 13:28
还没有到这一步…………
作者: xerrolol    时间: 2011-7-4 16:45
2# panhao1



Rhino.JoinSurfaces (arrObjects [,blnDelete])

提示里是物件组啊。。
作者: xerrolol    时间: 2011-7-4 16:46
3# 1235813

非常感谢!,确实达到了目的

不过不明白joinsurface是有bug还是用法不对。。
作者: 常瑞    时间: 2011-9-15 22:29
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
作者: Tony    时间: 2011-11-5 21:33
不过不明白joinsurface是有bug还是用法不对。。
xerrolol 发表于 2011-7-4 16:46



也有同上的问题。。。望解答
作者: metall    时间: 2012-4-24 10:58
按照rhinoscript函数的介绍joinSurface输入的面组必须是an ordered array of strings即是必须按照可搭接上的顺序排列输入的面,按照你的面的生成,修改为
srf(0)=Rhino.AddSrfPt(sArr1)
srf(2)=Rhino.AddSrfPt(sArr2)
srf(1)=Rhino.AddSrfPt(sArr3)
srf(3)=Rhino.AddSrfPt(sArr4)
就OK了




欢迎光临 NCF参数化建筑论坛 (http://ncf-china.com/) Powered by Discuz! X3.2