NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 177174|回复: 124

[相关书籍] RhinoScript深入教程

[复制链接]
发表于 2009-9-8 21:07:57 | 显示全部楼层 |阅读模式
本来想继续说理论的,可是想起之前和Skywoolf聊天时说这个东西是不是也像GH那样用实例来讲会更好呢。这次就试试,要是觉得这样不好理解的话,我们就继续理论学习。讲的不对的地方就直接指出来,不明白的命令可以到VBSCRIPT中文速查手册里去查。在这个版块里就有。

开始正题

这是一个关于循环语句用法,通过直线不断的绕着方体运行,这样把那个方体去掉,这些直线就会围合成一个方体。这个例子我们让这条直线绕5000次,这样效果会更明显。
千线块.jpg
Sub Main()
Rhino.AddLayer "black",RGB(0,0,0)

Dim headPt,endPt : endPt = Array (0,0,0)
Dim strLine
Dim r,g,b : r = 0 : g = 0 : b = 0
Dim count : count = 0
Const  EDGELEN = 500
  
Do
  headPt = endPt
  endPt = getPt(EDGELEN)
  strLine =  Rhino.AddLine(headPt,endPt)
  Rhino.ObjectLayer strLine , "black"
  Rhino.ObjectColor strLine , RGB(r,g,b)
  
  r = r + 1
  If r >= 255 Then
   r = 0
  End If
  b = b + 1
  If b >= 255 Then
   b = 0
  End If   
  g = g + 1
  If g >= 255 Then
   g = 0
  End If
  
  count = count+1  
  ' rhino.Print count  
  If count > 5000 Then Exit Do
Loop 'until count > 50

End Sub
Function getPt(EDGELEN)

Dim randomNum : randomNum = Int(Rnd()*6)
   
Select Case randomNum
  Case 0
   getPt = Array(Int(Rnd() * EDGELEN), Int(Rnd() * EDGELEN), 0)
  Case 1
   getPt = Array(0, Int(Rnd() * EDGELEN), Int(Rnd() * EDGELEN))
  Case 2
   getPt = Array(Int(Rnd() * EDGELEN), 0, Int(Rnd() * EDGELEN))
  Case 3
   getPt = Array(Int(Rnd() * EDGELEN), Int(Rnd() * EDGELEN), EDGELEN)
  Case 4
   getPt = Array(Int(Rnd() * EDGELEN), EDGELEN, Int(Rnd() * EDGELEN))
  Case 5
   getPt = Array(EDGELEN, Int(Rnd() * EDGELEN), Int(Rnd()* EDGELEN))
  Case Else
   rhino.Print "else"
End Select

End Function

这里我们可以清楚的看到DO LOOP和SELECT CASE结构的用法,在DO LOOP里有条件句的使用方式。

评分

参与人数 4强度 +6 照度 +15 收起 理由
qq56 + 1 + 3 向提供教程,提供资源,提供帮助的人致敬。
denghua + 1 + 10
skywoolf + 4 好教程!
yanhui314 + 2

查看全部评分

发表于 2009-9-8 22:01:32 | 显示全部楼层
简单易懂的单一法则的重复执行就可以生成人脑无法具体想象甚至无法想象的东西。
不过有个疑问,这个例子是个简单智能的重复执行,如果要使简单智能形成集群,在内部相互影响,是不是RS做起来很难,到了这个层面大多用的是maya的粒子系统,不知道还要不要学maya。
发表于 2009-9-8 23:22:54 | 显示全部楼层
非常感謝你的教學

繼續來上課...

.
 楼主| 发表于 2009-9-9 09:34:25 | 显示全部楼层
2# yanhui314
看到我在这个页面里开的MAYA专区了么,我觉得有必要学,RS在某些方面确实还是不足的.而且我们也知道,参数化设计还是需要很多软件来共同完成的.
发表于 2009-9-20 15:21:31 | 显示全部楼层
呵呵,select case部分实现了在六个面上随机取点
 楼主| 发表于 2009-9-22 11:43:43 | 显示全部楼层
不好意思,我没有做视频的软件,而且这个也确实没有必要做个视频。这个直接贴是没有问题的,因为我就是直接从脚本里复制出来的。
发表于 2009-9-22 20:51:54 | 显示全部楼层
很精彩  谢谢
最近 也想学 maya
不知道  能不能先从  mel开始
 楼主| 发表于 2009-9-22 21:27:55 | 显示全部楼层
不好意思啊,我不会maya啊,正在招募maya的版主呢。
发表于 2009-9-23 18:16:22 | 显示全部楼层
楼主是在中国读的本科么。。?
 楼主| 发表于 2009-9-23 18:25:25 | 显示全部楼层
我在沈阳建筑大学上学,还没毕业呢。。。
发表于 2009-9-23 22:25:38 | 显示全部楼层
刚刚下了个Rhion ,功能上还不太熟。但是有一个疑问,版主的程序是自己编的吗?还有,Rhion这个程序好用吗?我怎么觉得除了比3D快一点没什么特别的?
 楼主| 发表于 2009-9-24 08:22:59 | 显示全部楼层
12# 李薇薇

刚刚下了一个rhino。

这是基于VB语言的脚本,也可以理解为编程。这个实例是我最开始学RS的时候下载的,非常的简单,还有效果,然后我拿来说明一下循环语句。

Rhino本身并不强大,强大的是他的几个参数化插件,GH,RS,TS等。
发表于 2009-9-24 13:40:41 | 显示全部楼层

在中国参数化运用上还是石器时代,楼主在学校自学能学到这个程度真是天才呵~不过像我们工作了能钻研的时间更少,还要面对务实的甲方。。唉,羡慕啊
 楼主| 发表于 2009-9-24 14:17:31 | 显示全部楼层
14# tomee

那中国的天才超多了。
发表于 2009-10-29 18:23:18 | 显示全部楼层
楼主写的不错嘛。哈哈
支持
发表于 2009-11-6 14:54:54 | 显示全部楼层
正好快到周末了   多找点东西 细细研究
以后会准备来报到上课的  嘿嘿
发表于 2009-11-10 14:26:56 | 显示全部楼层
这个实在是太漂亮了。
发表于 2009-11-13 23:45:02 | 显示全部楼层
这个script 很清晰,很好
发表于 2009-11-28 17:21:39 | 显示全部楼层
看着图上的立方体很炫,先复制下来试试看吧……
发表于 2009-12-1 20:15:04 | 显示全部楼层
我是新人,真的很受益

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

GMT+8, 2026-3-13 20:02 , Processed in 0.072718 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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