eric0307a兄,你没看清楚吧 鼠标划一下屏幕上的黑色页面就能看到里面的内容
以下这部分内容转于载于 尼爾 林 的部落格 http://blog.yam.com/neilarchi
落格新開張的序言
近年來,有關於數位建築的討論早已經滲透到各個建築領域之中,在這波幾乎無國界的數位浪潮中,台灣當然不會置身於外。從1997年畢爾包美術館的問世之後,數位建築的發展逐漸走向了兩個大的趨勢:一部份,主要致力於電腦輔助設計與電腦輔助製造的整合,也就是所謂的CAD/CAM;而另一方面,則有群人開始研究如何將程式編寫(programming)納入建築設計的一環,甚至是企圖由此尋找新的空間形式的可能性。有關這方面的討論,無論面向或內容都很龐大,且留待日後再討論,本文在此不做說明。
台灣建築界對於所謂數位建築的追隨,其實也算是亦步亦趨。這幾年,從日本建築師伊東豐雄接連拿下高雄世大運主場館以及台中大都會歌劇院的競圖案以及其他的國際競圖獲選案(像是阿里山景觀橋、衛武營案)看來,幾乎都是以所謂的自由形體為主要的表現主軸。有鑑於此,其實台灣社會對於這些流動的建築形體與空間的接受度是算高的,無論這算是一種追逐流行或是盲目崇拜,總是說明了台灣終究無法也不需要拒絕這股世界建築趨勢的脈動。在教學領域中,有關電腦輔助建築設計的教學與討論更是沸沸揚揚,至於真實情況為何或應該如何去檢視這類發展,在此就不多做評論。只是,截至目前為止,國內依舊尚未出現專門作為數位建築設計討論的網路場所,或者,多以報導性與評論性居多,少有願意認真深入分享實際設計經驗與潛研方法與技術的地方。因此,這次部落格的新開張,也算是一個小小的發願,期待這裡可以成為日後有志於電腦輔助建築設計的戰友們的經驗、思想交流場所,某種程度上,這也算是身為一位知識份子的基本責任吧!
犀牛(Rhinoceros)是個開發來專門在Windows中製作NURBS幾何物件的3-D軟體,而RhinoScript則是架構在VB程式語言之上專屬Rhino的程式語言。近幾年來,Rhino在西方建築中被廣泛地應用,無論是業界或是學校裡頭,許多年輕建築師與建築團體正致力於將Rhino發展為從事NURBS空間形式的重要工具。其中,關於RhinoScript的發展態勢更是讓人感到驚豔,由於VB語言的入門門檻較低,對於不具電腦程式編寫背景的建築設計者與學生而言,RhinoScript可以說是一個相當友善的語言。另一方面,來自世界各地的Rhino使用者皆十分慷慨地將數量可觀的外掛程式(plug-in)放在網路上分享,這也使得Rhino這個軟體有著不斷更新進化的未來可能性。有鑑於此,這個部落格日後將設定為專門討論Rhino的平台,希望可以引介Rhino在國際上發展的最新消息以及版主個人技術經驗的分享。
本部落格的更新再出發,首要感謝淡江大學建築系的陳珍誠教授。陳珍誠教授乃是版主的碩士論文指導教授,同時也是目前博士論文的指導教授。陳珍誠教授畢業於瑞士聯邦理工學院,早在80年代末期即開始接觸電腦輔助設計,在台灣來說,陳教授算是少數真正具有程式編寫能力的建築教授。十分感謝陳教授願意撥冗於每週博士生會面時間教導VB以及RhinoScript,版主即是在這樣的情況下開啟了對於RhinoScript的認識與興趣。另一方面,也感謝一起學習的一群博士班同學與碩士班學弟妹們,有各位的一同學習,讓學程式這件事情變得沒有想像中的枯燥。最後,由於陳教授不斷地鞭策與耳提面命,使得版主有了重新開啟這個部落格的念頭,日後版主必會努力充實這個版裡頭的內容,還望各界有志之士,大夥一起討論及參與,也算是一起為台灣建築做件事吧!少點風花雪月,多點真功夫,台灣建築還是會有希望的。
01=Introduction to RhinoScript (Marcos and Scripts)
An short introduction to RhinoScript
假使從字面上來直譯,RhinoScript可以翻譯為「犀牛腳本」。RhinoScript是架構在VB(Visual Basic)語言之上的Rhino專屬程式語言,大致上又可分做Marco與Script兩大部分。以下簡單地說明Marco與Script兩者之間的差別。
--------------------------------------------------------------------------------
Marcos = Static (fixed, linear sequence)
Scripts = Dynamic (non-linear)
?flow control (skipping and repeating lines)
?variable control (logical and mathematical operations)
?input and output (user interaction)
--------------------------------------------------------------------------------
簡單地說,在Rhino中的 Marcos (可以稱做巨集)就像是一個口令一個動作的叫Rhino幫我們執行「動作」(actions)。Marco 的命令列是線性、靜態的,意思就是說,如果我們下了一百條指令,Rhino就會從第一條、第二條、第三條、、、這樣一路執行到第一百條命令,無法跳躍也無法重複執行某個命令。相對而言,Scripts 則是動態且非線性的。首先,透過 Flow Control 我們可以跳過或者重複某些命令列,而Variable Control 則可以讓我們創造出邏輯與數學的運算,Input and Output (I/O)則是使用者與Rhino之間的互動,使用者可以送進許多種類型的資料 (data),再經過運算之後以許多種資料形態輸出。
本文的主要目的在於說明 Marcos 與 Scripts 之間的差別,之後將進一步對 Scripts 的語法、功能與運用方式做進一步的說明與提供範例。
02=Introduction to RhinoScript
An Short Intorduction to RhinoSricpt
在瞭解 Marcos 與 Scripts 之間的差別之後,我們首先開始來介紹一點簡單的「語法」(syntax)。在電腦程式語言中的語法,其實就跟我們學英文或其他外國語言一般,我們需要背單字也需要學文法,而在此的語法就有點像是文法。因此,語法就是一種「成套」(a set)的規則組合。於是乎,當然也就會有所謂合法與不合法的語法,只不過,一般日常生活中,如果我們說出不合文法的語句,人基本上還可以透過上下文來猜懂。但是,電腦就沒這麼聰明了,如果我們寫出不合語法的命令列,電腦不但不會去猜,根本就不理會,只會告訴我們:「描述方式有誤」、「語法不合規定」等警告句,告訴我們必須回頭去檢查到底是哪句命令列說錯了。
RhinoScript 所使用的VB語言的語法基本上算是簡單的,已經非常接近日常的口語,這算是非資訊背景使用者的一大福音(版主也是這兩個月才真的開始學程式)。所以,以下我們就來簡單說明一下在Rhino中會用到的幾種基本語法。
如果我們要畫一條線,我們大概會這麼說:「畫一條線,起點在座標(0,0,0)的位置,端點在(10,0,0)的位置。」同樣地,在Rhino的Marco命令列我們可以這麼下指令(請開啟Tools\Commands\Marco Editor):
--------------------------------------------------------------------------------
_Line 0,0,0 10,0,0
--------------------------------------------------------------------------------
然而,如果我們不是在Marco中,而是在Script的環境下(請開啟Tools\RhinoScript\Edit),會有兩種說法。一種就像是直接在Rhino工作介面中的Command列下指令一般,可以這樣講:
--------------------------------------------------------------------------------
Rhino.Command "_Line 0,0,0 10,0,0"
--------------------------------------------------------------------------------
另一種講法,則是呼叫RhinoScript中內部建構的許多Methods(超過200種),所以我們應該寫成:
--------------------------------------------------------------------------------
Call Rhino.AddLine(Array(0,0,0), Array(10,0,0))
--------------------------------------------------------------------------------
基本上,本文的目的不在於將所有指令或者Rhino內建的Methods解說完畢,用意只在於很簡單地說明在電腦語言中的語法與日常用語中文法的關係。差別只在於,「電腦還挺很忠心的,我們叫他做啥,他就會做啥」(這是陳教授的名言之一)。所以,如果指令下了,Rhino卻沒反應,決不是Rhino有錯,趕緊回頭檢查自己的命令列是否下錯了。
此外,如果要詳細瞭解VB的語法可以參考網路上的Microsoft教學手冊,可以免費下載並且有中文版。如果想詳細瞭解RhinoScript中所有Methods的語法,請開啟 Help\Plug-ins\RhinoScript,這裡頭詳細記載了每個Mehods的用途、語法以及回傳 (return)值等說明,當然,如果各位不心急的話,之後我們也會一一提到。 |