NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 16631|回复: 9
打印 上一主题 下一主题

[在线求助] 能不能請高手指導一下?

[复制链接]
跳转到指定楼层
1m
发表于 2014-5-14 17:37:54 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 urdiafa 于 2014-5-14 17:42 编辑

我寫下面code,要把Function subdividepolyline(ByRef arrv)計算好的點集合,傳到
strNewPolyline = Rhino.AddPolyline(arrNewVertices)去形成polyline,但出現錯誤訊息
arrNewVertices不是array的形式,我是自我學習,練習寫出類似萬花筒的圖,卡在此點,無法解決請高手指點
.----------------------------------------------------
Option Explicit

Call Main()
Sub Main()
        Dim a
        a = rhino.GetObject("select a polyline") '選取一個封閉polyline

        Dim b
        b = rhino.PolylineVertices(a)

        Dim arrNewVertices
        arrNewVertices = SubDividePolyline(b)

        Dim strNewPolyline
        strNewPolyline = Rhino.AddPolyline(arrNewVertices) '到此行出現錯誤訊息
       
End Sub
'-----------------------------------------
Function subdividepolyline(ByRef arrv)

        ReDim arrsubd(ubound(arrv))
        ReDim allPt(ubound(arrv))
        ReDim vetix(ubound(arrv))

        Dim i,temp,pangle,plength,sp,ep,b
        Dim counter : counter = 0
        For i=0 To ubound(arrv) - 1
       
                sp = (arrv(i))
                ep = (arrv(i + 1))
       
                temp = Rhino.Angle(sp, ep)
                pangle = temp(0)
                plength = Rhino.Distance(sp, ep)
                arrsubd(i) = Rhino.Polar(sp, pangle, (plength / 3))
       
        Next

        subdividepolyline = arrsubd
End Function


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
2m
 楼主| 发表于 2014-5-16 00:02:06 | 显示全部楼层

謝謝ccc159的提示,我多加此行  --->arrsubd(i) = arrsubd(0)
使arrNewverices array 符合 ReDim arrsubd(ubound(arrv)的個數
就可執行,萬分感謝,可以繼續發展下去,修正如下
;--------------------------------------
Option Explicit

Call Main()
Sub Main()
        Dim a
        a = rhino.GetObject("select a polyline") '選取一個封閉polyline

        Dim b
        b = rhino.PolylineVertices(a)

        Dim arrNewVertices
        arrNewVertices = SubDividePolyline(b)

        Dim strNewPolyline
        strNewPolyline = Rhino.AddPolyline(arrNewVertices)
        
End Sub
'-----------------------------------------
Function subdividepolyline(ByRef arrv)

        ReDim arrsubd(ubound(arrv))
        ReDim allPt(ubound(arrv))
        ReDim vetix(ubound(arrv))

        Dim i,temp,pangle,plength,sp,ep,b
        Dim counter : counter = 0
        For i=0 To ubound(arrv) - 1
        
                sp = (arrv(i))
                ep = (arrv(i + 1))
        
                temp = Rhino.Angle(sp, ep)
                pangle = temp(0)
                plength = Rhino.Distance(sp, ep)
                arrsubd(i) = Rhino.Polar(sp, pangle, (plength / 3))
        
        Next
         arrsubd(i) = arrsubd(0)       <---多加此行
        subdividepolyline = arrsubd
End Function

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

GMT+8, 2024-6-11 17:18 , Processed in 0.289204 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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