NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 8930|回复: 6
打印 上一主题 下一主题

[工作记录] RS的数组好像有点绕人,清高手指教

[复制链接]
跳转到指定楼层
1m
发表于 2010-8-8 21:01:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Sub yudi()
  Dim i:i=0
  
  Dim arrpt(2)
  Dim r:r=getinteger("number of interger",16,2)
  Dim j:j=getinteger("number of interger",1,1)
  For h=0 To 2
    Dim pi:pi =Rhino.pi
    Dim arrpoints(11)
        For i=0 To 2
    arrpt(0)=(r+h*0.04)*Cos(i*2/3*pi)
    arrpt(1)=(r+h*0.04)*Sin(i*2/3*pi)
    arrpt(2)=h*j
    arrpoints(0+i)=Rhino.addpoint(arrpt)
    arrpt(0)=((r+h*0.04)-((40-h)*0.05))*Cos(i*2/3*pi+1/6*pi)
    arrpt(1)=((r+h*0.04)-((40-h)*0.05))*Sin(i*2/3*pi+1/6*pi)
    arrpt(2)=h*j
    arrpoints(1+i)=Rhino.addpoint(arrpt)   
    arrpt(0)=((r+h*0.04)-(40-h)*0.15)*Cos(i*2/3*pi+1/3*pi)
    arrpt(1)=((r+h*0.04)-(40-h)*0.15)*Sin(i*2/3*pi+1/3*pi)
    arrpt(2)=h*j
    arrpoints(2+i)=Rhino.addpoint(arrpt)
    arrpt(0)=((r+h*0.04)-(40-h)*0.05)*Cos(i*2/3*pi+1/2*pi)
    arrpt(1)=((r+h*0.04)-(40-h)*0.05)*Sin(i*2/3*pi+1/2*pi)
    arrpt(2)=h*j
    arrpoints(3+i)=Rhino.addpoint(arrpt)
    Next
    If IsArray(arrPoints) Then
     
       Rhino.AddInterpCurve arrpoints      
       Else Rhino.print("error")
    End If
  
  Next
End Sub



执行到这行时Rhino.AddInterpCurve arrpoints  ,说类型不匹配,需要数组,但上面一行代码已经判断是否为数组了,为什么下面arrpoints还是通不过。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
2m
发表于 2010-8-8 22:58:15 | 只看该作者
addpoint不是把一个点加到数组里 而是画点
所以你arrpoints里没有东西
这样是你要的么

Option Explicit
'Script written by <insert name>
'Script copyrighted by <insert company name>
'Script version Sunday, 08 August 2010 22:34:25

Call Main()
Sub main()
        Dim arrpt(2)
        Dim r:r=getinteger("number of interger",16,2)
        Dim j:j=getinteger("number of interger",1,1)
        Dim i,h
        Dim k:k=0
        Dim pi:pi =Rhino.pi
        Dim arrpoints(12)
        For h=0 To 2
                For i=0 To 2
                        arrpt(0)=(r+h*0.04)*Cos(i*2/3*pi)
                        arrpt(1)=(r+h*0.04)*Sin(i*2/3*pi)
                        arrpt(2)=h*j
                        arrpoints(k)=arrpt
                        arrpt(0)=((r+h*0.04)-((40-h)*0.05))*Cos(i*2/3*pi+1/6*pi)
                        arrpt(1)=((r+h*0.04)-((40-h)*0.05))*Sin(i*2/3*pi+1/6*pi)
                        arrpt(2)=h*j
                        arrpoints(k+1)=arrpt
                        arrpt(0)=((r+h*0.04)-(40-h)*0.15)*Cos(i*2/3*pi+1/3*pi)
                        arrpt(1)=((r+h*0.04)-(40-h)*0.15)*Sin(i*2/3*pi+1/3*pi)
                        arrpt(2)=h*j
                        arrpoints(k+2)=arrpt
                        arrpt(0)=((r+h*0.04)-(40-h)*0.05)*Cos(i*2/3*pi+1/2*pi)
                        arrpt(1)=((r+h*0.04)-(40-h)*0.05)*Sin(i*2/3*pi+1/2*pi)
                        arrpt(2)=h*j
                        arrpoints(k+3)=arrpt
                        k=k+4
                Next
                If IsArray(arrPoints) Then
                        arrpoints(12)=array(r+h*0.04,0,h*j)
                        Rhino.AddInterpCurve arrpoints
                        rhino.AddPoints arrpoints
                        k=0
                Else Rhino.print("error")
                End If
          Next
End Sub
3m
 楼主| 发表于 2010-8-9 19:40:23 | 只看该作者
知道问题所在了,谢谢楼上的热心,不过你解释的“addpoint不是把一个点加到数组里 而是画点”倒不是很正确,可以同时赋值的,我只是数组的数量出了点问题,可能不知道目的而去揣摩别人的程序的确不易。再次感谢
4m
发表于 2010-8-9 20:24:27 | 只看该作者
本帖最后由 claudemit 于 2010-8-10 04:38 编辑

哦 原来是这样
我也搞不明白数组结构
命令太多环环相扣,看着眼熟用着傻眼

我看着猜测你是想用RS做雨水收集大厦
5m
发表于 2011-11-1 10:41:47 | 只看该作者
大家交流的非常和谐啊
6m
发表于 2013-5-17 11:09:08 | 只看该作者
楼主能不能把改过正确的发上来看看啊
7m
发表于 2013-6-3 14:17:08 | 只看该作者
了解清楚每个函数的参数的类型 和输出非常重要。 不要看单词表面意思,最好的办法是写一段很短的脚本在编译器中运行, 帮助中的下面的那段随时可以拿去测试。 改着改着就懂了。

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

GMT+8, 2024-5-5 02:56 , Processed in 0.129324 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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