NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 11269|回复: 4
打印 上一主题 下一主题

[在线求助] rhino.moveobject()遇到数据类型不匹配的问题

[复制链接]
跳转到指定楼层
1m
发表于 2013-4-12 14:05:26 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
你好,请问一下喔在rhinoscript中运行是,第35行报错,代码如下,28行之前都没问题,就是rhino.moveobject的时候出错,请问是什么原因,从rhino.GetPointCoordinates()中得到的数组是否是一维数组,还有我的现在是两个点,怎样改写成100个点

Option Explicit
'Script written by <insert name>
'Script copyrighted by <insert company name>
'Script version 2013年4月12日 10:06:53

Call Main()
Sub Main()
        Dim arrayX(),arrayY(),arrayZ()
        Dim s,i
        s = 10000
        For i = 0 To 1 Step 1
                Randomize
                ReDim Preserve arrayX(i),arrayY(i),arrayZ(i)
                arrayX(i) = rnd()*s + 1
                arrayY(i) = rnd()*s + 1
                arrayZ(i) = rnd()*s + 1        
        Next
        Dim strPt1,strPt2
        strPt1 = rhino.AddPoint(array(arrayX(0),arrayY(0),arrayZ(0)))
        strPt2 = rhino.AddPoint(array(arrayX(1),arrayY(1),arrayZ(1)))
        Dim dblSphere1,dblSphere2
        dblSphere1 = rhino.AddSphere(array(arrayX(0),arrayY(0),arrayZ(0)),1000)
        dblSphere2 = rhino.AddSphere(array(arrayX(1),arrayY(1),arrayZ(1)),1000)
        Do
                Dim dblDistance2Pt
                Dim arrPt1Coordinates,arrPt2Coordinates
                dblDistance2Pt = rhino.Distance(array(arrayX(0),arrayY(0),arrayZ(0)),array(arrayX(1),arrayY(1),arrayZ(1)))
                If  dblDistance2Pt > 5000 Then
                        If IsNull(dblDistance2Pt)Then Exit Do
                        '选择点1,点2,得到点1,点2的坐标
                        Call rhino.SelectObject(strPt1)
                        arrPt1Coordinates = rhino.GetPointCoordinates("strPt1",(rhino.SelectObject(strPt1)))
                        Call rhino.SelectObject(strPt2)
                        arrPt2Coordinates = rhino.GetPointCoordinates("strPt2",(rhino.SelectObject(strPt2)))
                        '移动点1,
                        Call rhino.MoveObject(strPt1,arrPt1Coordinates,arrPt2Coordinates)        
                        Call rhino.MoveObject(dblsphere1,arrPt1Coordinates,arrPt2Coordinates)
                        Call rhino.Sleep(1000)
                ElseIf      dblDistance2Pt < 5000 Then
                        If IsNull(dblDistance2Pt)Then Exit Do
                        '选择点1,点2,得到点1,点2的坐标
                        Call rhino.SelectObject(strPt1)
                        arrPt1Coordinates = rhino.GetPointCoordinates("strPt1",(rhino.SelectObject(strPt1)))
                        Call rhino.SelectObject(strPt2)
                        arrPt2Coordinates = rhino.GetPointCoordinates("strPt2",(rhino.SelectObject(strPt2)))
                        '移动点1,
                        Call rhino.MoveObject(strPt1,arrPt2Coordinates,arrPt1Coordinates)        
                        Call rhino.MoveObject(dblsphere1,arrPt2Coordinates,arrPt1Coordinates)
                        Call rhino.Sleep(1000)
                End If
               
        Loop  While dblDistance2Pt = 2000

End Sub
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
2m
 楼主| 发表于 2013-4-12 22:29:43 | 显示全部楼层

非常感谢,改过之后就对了,最近开始研究rhinoscript,之前没有编程基础,搞不清好多基本概念,所以经常出错。

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

GMT+8, 2024-6-19 18:19 , Processed in 0.078658 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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