NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 21673|回复: 18
打印 上一主题 下一主题

[在线求助] 一个关于函数的问题。

[复制链接]
跳转到指定楼层
1m
发表于 2011-12-14 21:08:27 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
小弟最近在看rhinoscript101,看到数组的时候有一些问题,希望高人能给些帮助。

Call main()
Sub main()
Dim i,j
i=array(10,10,20)
Call addvector(i,j)

End Sub

Function addvector(ByVal vecdir,ByVal ptbase)
On Error Resume Next
addvector=Null

If isnull(ptbase) Or Not isarray(ptbase) Then
  ptbase=array(0,0,0)
End If
Dim pttip

pttip=rhino.pointadd(ptbase,vecdir)
If Not(err.number=0) Then Exit Function


addvector=rhino.AddLine(ptbase,pttip)
If Not(err.number=0) Then Exit Function
If isnull(addvector) Then Exit Function


Call rhino.CurveArrows(addvector,2)
End Function

我用上面的代码执行出来的就是从原点画出来的一个箭头,没什么问题。由于没有给ptbase这个点,所以箭头从原点画出来。但是我改了一下,变成下面的之后


Dim i,j
i=array(10,10,20)
Call addvector(i,j)



Function addvector(ByVal vecdir,ByVal ptbase)
On Error Resume Next
addvector=Null

If isnull(ptbase) Or Not isarray(ptbase) Then
  ptbase=array(0,0,0)
End If
Dim pttip

pttip=rhino.pointadd(ptbase,vecdir)
If Not(err.number=0) Then Exit Function


addvector=rhino.AddLine(ptbase,pttip)
If Not(err.number=0) Then Exit Function
If isnull(addvector) Then Exit Function


Call rhino.CurveArrows(addvector,2)
End Function


就是去掉了前面的call main()的过程,为什么箭头就不从原点画出来了呢。而且,在这种情况下,我给了j=array(-10,-10,-10),运行脚本,向量从(-10,-10,-10)画出,然后我删去j=array(-10,-10,-10)之后在运行脚本,向量还是从(-10,-10,-10)画出,不知道这是为什么。我想可能是数据存储的原因吧。希望有高手能解答一下。谢谢了。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
2m
 楼主| 发表于 2011-12-15 12:29:25 | 显示全部楼层
今天来看下,自己顶下,希望有高手能解答下。
3m
 楼主| 发表于 2011-12-15 15:39:01 | 显示全部楼层
有点理解了。就是说我去掉main()之后第一次函数的返回值存储在了内存中。而因为这个sub没有end sub所以以后每次运行程序的时候其实都是这个返回值。是么,ps:代码中的err.number=0是什么意思 7# uuuf8
4m
 楼主| 发表于 2011-12-15 23:48:56 | 显示全部楼层
按照你说的方法,就是先赋予j=(-10,-10,-10)作为向量的起点,然后删掉j,在用call rhino.addpoint(j)的方法把点弄出来,这个点确实就在(-10,-10,-10),我不知道这代表着什么,希望能解释一下。 12# gzblake
5m
 楼主| 发表于 2011-12-15 23:59:20 | 显示全部楼层
又试了一下,把犀牛整个关掉,然后重新打开犀牛,把那段没有sub 的脚本,就是我出问题的脚本运行,因为没有dim j,所以程序默认从原点开始画箭头,然后我又dim j=(-10,-10,-10),箭头就从(-10,-10,-10)开始画,之后删掉dim=j,箭头依旧从(-10,-10,-10),然后call rhino.addpoint(j),就算是删掉j=(-10,-10,-10),点依旧从(-10,-10,-10)。希望能得到解释。希望对大神们有帮助。 12# gzblake

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

GMT+8, 2024-11-1 09:01 , Processed in 0.114076 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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