NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 18079|回复: 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-15 10:53:13 | 只看该作者
代码不熟,期待高手解答~
3m
发表于 2014-5-15 13:05:55 | 只看该作者
我也不会。帮顶下,希望有更多人看到集思广益。
4m
发表于 2014-5-15 14:20:16 | 只看该作者
应为  ReDim arrsubd(ubound(arrv)-1)

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

否则你的 arrNewVertices  array里面最后一个是 empty

点评

终于又一个懂的人解答啦、、  详情 回复 发表于 2014-5-15 22:39

评分

参与人数 1强度 +1 照度 +3 收起 理由
月之眼 + 1 + 3 感谢分享!

查看全部评分

5m
发表于 2014-5-15 22:39:12 | 只看该作者
6m
 楼主| 发表于 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
7m
发表于 2014-5-23 22:05:23 | 只看该作者

点评

循环就能实现  详情 回复 发表于 2014-6-20 12:14
8m
发表于 2014-6-20 12:14:55 | 只看该作者
yyjyzb 发表于 2014-5-23 22:05
您好,很冒昧插楼,因为看到您对VB有一定了解。我现在想要用VB实现这个一个图形,希望输入参数是正方形的 ...

循环就能实现
9m
发表于 2016-7-8 10:32:23 | 只看该作者
谢谢分享,辛苦了。
10m
发表于 2016-7-10 23:51:24 | 只看该作者
我也帮顶下,希望有更多人看到集思广益。

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

GMT+8, 2024-12-4 16:47 , Processed in 0.071732 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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