NCF参数化建筑论坛

标题: 能不能請高手指導一下? [打印本页]

作者: urdiafa    时间: 2014-5-14 17:37
标题: 能不能請高手指導一下?
本帖最后由 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



作者: jasonroc    时间: 2014-5-15 10:53
代码不熟,期待高手解答~
作者: Irene    时间: 2014-5-15 13:05
我也不会。帮顶下,希望有更多人看到集思广益。
作者: ccc159    时间: 2014-5-15 14:20
应为  ReDim arrsubd(ubound(arrv)-1)

因为你是for i =0 to ubound(arry) - 1

否则你的 arrNewVertices  array里面最后一个是 empty
作者: 月之眼    时间: 2014-5-15 22:39
ccc159 发表于 2014-5-15 14:20
应为  ReDim arrsubd(ubound(arrv)-1)

因为你是for i =0 to ubound(arry) - 1

终于又一个懂的人解答啦、、
作者: urdiafa    时间: 2014-5-16 00:02

謝謝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
作者: yyjyzb    时间: 2014-5-23 22:05
[attach]41927[/attach]
您好,很冒昧插楼,因为看到您对VB有一定了解。我现在想要用VB实现这个一个图形,希望输入参数是正方形的边长和个数,不知道怎么样去实现。能否给予指点。不甚感激!

作者: 月之眼    时间: 2014-6-20 12:14
yyjyzb 发表于 2014-5-23 22:05
您好,很冒昧插楼,因为看到您对VB有一定了解。我现在想要用VB实现这个一个图形,希望输入参数是正方形的 ...

循环就能实现

作者: 横穿马路    时间: 2016-7-8 10:32
谢谢分享,辛苦了。
作者: DONNA    时间: 2016-7-10 23:51
我也帮顶下,希望有更多人看到集思广益。




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