版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 【SEG出品】GH插件界面講解之File1</p><p> 【SEG出品】GH插件講解(二)之Preference8</p><p> 【SEG出品】GH插件講解(三)之Preference15</p><p> 【SEG出品】GH插件講解(四)之Preference22</p><p> 【SEG出品
2、】GH中級篇計算器講解之腳本計算器(一) 25</p><p> 【SEG出品】GH中級篇之腳本計算器講解(二)30</p><p> 【SEG出品】GH中級篇之腳本計算器講解(三)37</p><p> 【SEG出品】GH中級篇之腳本計算器講解(四)44</p><p> 【SEG出品】GH講解之Edit
3、;46</p><p> 【SEG出品】GH插件界面講解之File</p><p> 由于GH是全英文的(據(jù)說要語言本地化,但是工程量太浩大,不知道到何年何月了)。對于很多英文不太好的童鞋,可能連軟件工具欄中的很多功能都還不太清楚。為了游刃有余的使用GH,我們就一起來了解下工具欄吧。我爭取不漏下任何一個細節(jié)。</p><p> 首先標題欄雙擊是折疊以及展開,
4、這個大家都知道 了吧,應(yīng)該--</p><p> 如下圖,首先介紹File菜單欄里面的東西:</p><p><b> 本帖隱藏的內(nèi)容</b></p><p> 1,New Document Ctrl+N創(chuàng)建新的GH文檔</p><p> 文檔與文檔之間可以互相copy gh計算器,即便關(guān)閉犀牛和GH,Copy的
5、計算器仍然能在新打開的GH文檔中粘貼,只要在此期間,你不清空粘貼板,或者copy另外的東西。因為計算器copy到粘貼板中都被序列化成xml的文本了,計算器中iternalise的數(shù)據(jù)也是一樣的道理。</p><p> 既然說到Copy,切記Ctrl+V粘貼到源位置,Ctrl+Shift+V為粘貼到當前視圖中心,這點很有用。</p><p> 2,Open Document... Ctr
6、l+O 打開一個已存在的GH文檔</p><p> 目前只能打開.gh和.ghx這兩種格式。前者是二進制存儲,后者為xml存儲。</p><p> 3,Recent Files 最近文檔,這也比較有用,能直接打開最近使用的gh文檔。</p><p> 4,Save Document Ctrl+S 保存文檔。切記要經(jīng)常Ctrl+S,否則連了一大堆出現(xiàn)個意外就鬧心
7、了。</p><p> 5,Save Document as... Ctrl+Shift+S另存為,可以指定路徑及格式。</p><p> 6,Save Backup Ctrl+Alt+S保存?zhèn)浞菸臋n。gh有一個專門保存?zhèn)浞莸奈募A。</p><p> 7,Export Quick Image....Ctrl+Shift+Q gh自帶的一
8、個快速截圖工具,如下圖</p><p> a,第一個按鈕是裁剪區(qū)域</p><p> b,第二個是可以旋轉(zhuǎn)裁剪區(qū)域</p><p> c,第三個是可以將犀牛文檔中截圖添加到此圖中</p><p> d,第四個是在截圖上添加GH的版本信息</p><p><b> e,清空所有格式</b>
9、</p><p> 另外彈出此圖框大小,跟目前gh窗口大小一致。</p><p> 8,Export Hi-Res Image...導(dǎo)出目前gh窗口的高清大圖,并且可以設(shè)置背景顏色,以及縮放比例。</p><p> 9,Document Properties...文檔屬性,點開后界面如下圖</p><p> 對此gh文檔,你可以設(shè)置更
10、改版權(quán)信息,以及文檔描述。而且還可以增加修訂版本。這樣可以記錄你每次更改的日期,便于文檔管理。</p><p> 10,Creat User Object 創(chuàng)建用戶計算器,選中一個gh計算器或者 一個cluster此菜單會啟用。點擊如下圖</p><p> 這樣我們可以創(chuàng)建一個.ghuser為擴展名的文件包,此包可以直接使用,像正常的.gha一樣可以在菜單里面顯示。如上圖,可以設(shè)置名字
11、,昵稱,描述,設(shè)置Category即所在的欄目,Sub-Category子欄目,Hide Object是隱藏到欄目里面,還是在Limit to dropdown下拉欄目里面,在欄目里面的第幾個格子 Panel Section。以及可以設(shè)置其圖標。</p><p> 這個菜單很強大,讓用戶可以封裝自己的電池,應(yīng)該好好研究研究。</p><p> 11,Ribbon Layout 配置的羅
12、賓界面,點進去如下圖,</p><p> Display as text 意思是將計算器欄目名稱按圖標顯示還是按文字顯示。</p><p> Create layout 創(chuàng)建視圖,點進去如下圖</p><p> 你可以完全改變GH的電池界面組合,配置自己的欄目組合。如上圖,你可以將不經(jīng)常用的計算器拖到垃圾箱,或者將不用的欄目拖入垃圾箱,那么在你的配置中就不會顯
13、示這些計算器或者欄目了,這樣可以讓界面更簡潔。</p><p> 當然,你也可以新建一個欄目(Tab),將常用的計算器放到里面。</p><p> 而且你還可以拖動格欄目來改變他們的次序。</p><p> 左邊方框可以搜搜電池:</p><p> 不用擔(dān)心你會打亂以前的配置。因為我們可以隨時關(guān)掉自己的配置,而且可以開啟多個配置。如下
14、圖(導(dǎo)入配置后,Import layouts)</p><p> 配置的眼睛閉上就是顯示默認配置,開啟是顯示我們自己的配置。這樣我們做不同的東西,可以開啟不同的配置。</p><p> 12.Show In folder 打開此文檔所在文件夾并選中此文檔</p><p> 13,Special Folder這個很有用,點開如下圖</
15、p><p> Components Folder是存放計算器.gha文件的地方,你在food4里面下載的.gha文件可以直接放到這里面。ps有些不能用的,試試右鍵屬性解鎖。</p><p> Settings Folder 配置文件的文件夾</p><p> User Object Folder 是.ghouser用戶計算器所在的位置</p><
16、;p> AutoSave Folder是自動保存文件的文件夾,里面的gh文件以guid命名--濫用guid.</p><p> 14.Preferences... 這個太多了而且很重要,明天單獨列出介紹。</p><p> 15.Close 關(guān)閉當前文檔。</p><p> 【SEG出品】GH插件講解(二)之Preference</p>
17、<p> 首先,感謝各位關(guān)注。新加入的朋友可以查看之前我發(fā)布的主題進行由淺入深的學(xué)習(xí)。教程前會增加分組的小標簽,如【DanielJin原創(chuàng)】,【SEG出品】等,一個標簽對應(yīng)一系列教程。</p><p> 由于用戶基礎(chǔ)不一,我們要由淺入深,先講基礎(chǔ)操作,再講工程實例,再到深入GHA開發(fā),以及各種復(fù)雜算法。期間可能會穿插著來講。</p><p> 本篇為基礎(chǔ)篇插件界面介紹的第二
18、篇。</p><p> 界面工具欄菜單File下的第14個子菜單preferences 插件配置。如下圖。</p><p><b> 1,Author </b></p><p> 點開界面如上,好比一個指紋,配置連線圖作者的名字,公司,版權(quán),地址,網(wǎng)站,郵箱以及電話。</p><p><b>
19、 本帖隱藏的內(nèi)容</b></p><p> 這些都是你創(chuàng)建該文檔后的固有屬性,有些童鞋會問,我在什么地方能查看這些信息。如果你會腳本,如下圖:</p><p><b> 2, 顯示設(shè)置</b></p><p> 既然是顯示設(shè)置,肯定不會影響計算。</p><p> 其實,你將鼠標
20、放在上面就會有提示的。</p><p> a.勾選Special Case integers 意思將0.999999....這種數(shù)字顯示成1.0,切記只是顯示喲,實質(zhì)內(nèi)容還是0.999999...如下圖用腳本測試:</p><p> b.勾選Special case Pi 意思是將輸入的2*pi顯示成2*pi的形式而非6.28...的數(shù)字形式。但本質(zhì)上還是6.28...的數(shù)字如下圖測試
21、:</p><p> 由上面兩個例子我們其實就可以知道panel板這個東西并非簡單一個顯示tostring的文本框。</p><p> C.D-Deciamals設(shè)置顯示小數(shù)的位數(shù),只顯示那么多位,本質(zhì)上還是原來的數(shù)字,比如6.284569我如果設(shè)置顯示3位,那么我們只能看到6.284,但是這個數(shù)字還是6.284569如下圖:</p><p> D.E-Dec
22、iamals設(shè)置顯示科學(xué)計數(shù)法小數(shù)的位數(shù),例如6.284569e10 設(shè)置成3則顯示為6.285e-10</p><p> 6.284569e10就不行了,設(shè)置不起作用了--。</p><p> E.E-Lower設(shè)置多少位后小數(shù)顯示成科學(xué)技術(shù)法。比如我設(shè)置為-5,那么0.000056就會顯示為5.6e-5</p><p> 5.6e-4就會顯示為0.0005
23、6</p><p> F.E-Upper按說這個是和上面的那個是相對的,但是經(jīng)測試無效,怎么設(shè)都不會顯示成科學(xué)計數(shù)法--,如果你測試成功可發(fā)我消息。</p><p> 設(shè)置完注意重新計算才會使用新的配置。</p><p> 看完上面的顯示設(shè)置,你會發(fā)現(xiàn),很多數(shù)值和你看到的是不一樣的,不要讓你的眼睛騙了你。</p><p><b&g
24、t; 3, 字體設(shè)置</b></p><p> Strandard Font 標準字體,沒錯就是計算器名稱,參數(shù)名稱等的字體。</p><p> 設(shè)置成中文的一些字體貌似不好看,盡量都用默認的比較好。</p><p> Script Font 腳本字體。經(jīng)測試并非腳本計算器里面的字體。具體什么地方真不清
25、楚。</p><p> Console Font 控制臺字體,大概就是消息提示一類的字體吧,如下圖:</p><p> 4, 用戶接口如下圖</p><p> a,Content Filter 內(nèi)容過濾 這個功能可謂充分體現(xiàn)了gh插件的專業(yè)性??梢越凶錾閮?nèi)容過濾吧。</p><p> None就是不過濾,想想G
26、eorge Carlin,百科一下這位是美國反正統(tǒng)人物的代表。</p><p> Total完全過濾,應(yīng)該是處女級別的過濾吧。在這種級別下,gh涉及的淫穢詞語及圖片都將被其他內(nèi)容代替,比如這倆計算器的圖標 就別列入色情圖片,過濾后變成了 --</p><p> 此過濾功能在版本0.8.0062加入的(這樣的功能太高大上了)</p><
27、p> Changes and fixes since 0.8.0061:</p><p> ● Added Content Filter section to the Preferences (Interface section).</p><p> 其生死緣由可以查看此鏈接:http://www.grasshopper3d.com/for ... 736&page=2
28、#comments</p><p> b,Context Menus</p><p> 勾選Show Parameter submenus的話的所有計算器的右鍵菜單里面都會出現(xiàn)參數(shù)菜單作為子菜單如下圖勾選與不勾選的區(qū)別:</p><p><b> 不勾選</b></p><p><b> 勾選</
29、b></p><p> c,Overlay Graphics</p><p> 勾選Display obsolete會在舊版本的計算器上顯示一個OLD的標記。</p><p> d,Ribbon菜單設(shè)置</p><p> 勾掉Show component tabs將隱藏掉所有計算器欄,充分發(fā)揮自己的快捷鍵能力把(什么?你不會 用
30、快捷鍵?還是慢慢看基礎(chǔ)內(nèi)容吧)</p><p> Show tab icons 顯示欄目圖標,這個貌似還前面介紹的display as text重復(fù)了。</p><p> Show icon separators 是否顯示計算器欄目中的分隔條。分隔條就是下面這東東 </p><p> Show obscure components 顯示隱藏的計算器,
31、勾上這個,欄目里面的所有計算器都會顯示出來,這樣你都可以在其上面右鍵改快捷鍵了。否則的話,有些只能在下拉菜單中顯示。</p><p> e,下面的快捷鍵在第二篇文章中有詳細介紹,此處說幾個常用的</p><p> Ctrl+E禁用或啟用計算器</p><p> Ctrl+Q隱藏或顯示計算器內(nèi)幾何對象</p><p> Ctrl +G編
32、組,Ctrl+shift +G解除編組</p><p> 雙擊空白區(qū)域,輸入運算器命令即可直接調(diào)出電池。</p><p> 中鍵調(diào)出羅盤控制菜單,羅盤里面大鎖和查找比較好用--</p><p> f,Tooltips 幫助提示</p><p> Wiggle Radius 信息提示的半徑,意思是鼠標在以信息彈出點
33、為圓心,以Radius為半徑的圓內(nèi)信息提示不消失,這個半徑設(shè)置多大,看自己習(xí)慣吧。</p><p> 【SEG出品】GH插件講解(三)之Preference</p><p> 下面開始教程。 </p><p> 首先,感謝各位關(guān)注。新加入的朋友可以查看之前我發(fā)布的主題進行由淺入深的學(xué)習(xí)。教程前會增加分組的小標簽,如【DanielJin原創(chuàng)】,【S
34、EG出品】等,一個標簽對應(yīng)一系列教程。</p><p> 由于用戶基礎(chǔ)不一,我們要由淺入深,先講基礎(chǔ)操作,再講工程實例,再到深入GHA開發(fā),以及各種復(fù)雜算法。期間可能會穿插著來講,用戶可以直接回復(fù)有關(guān)問題,我們一定會盡量去解答。</p><p> 本篇為基礎(chǔ)篇插件界面介紹的第三篇。</p><p><b> 1, 調(diào)色板<
35、/b></p><p> 主要是對不同狀態(tài)下電池的邊界顏色,填充顏色,文字顏色做修改。</p><p> 具體有非選中狀態(tài)(Normal)和選中狀態(tài)(Selected)之分。</p><p> 下面又有禁用電池(Disabled Capsule),錯誤電池(Error Capsule),隱藏顯示電池,隱藏的是電池內(nèi)部的幾何對象(Hidden Capsul
36、e),標準電池(Standard Capsule)警告電池,含警告信息的(Warning Capsule)</p><p> 除了上面的禁用電池,任何類型的電池甚至錯誤電池都可以使用,只要輸出內(nèi)容有意義,不要因為紅彤彤就有心理障礙。</p><p><b> 2, 視口配置</b></p><p> Default
37、Template Materials默認模板的著色配置。如果你沒有設(shè)置模板文件,那么每次新建的gh文件都會以這個顏色來渲染你選中和沒選中的GH幾何對象在犀牛文檔里面的顯示。</p><p> 如果設(shè)置了模板文件,則顯示按照模板文件的Document Materials來顯示顏色</p><p> 本文檔你還可以自己設(shè)置與模板著色不一樣的渲染顏色,即設(shè)置Document Material
38、s</p><p> 注意點到球上面右鍵設(shè)置顏色。</p><p> Preview Display 預(yù)設(shè)顯示(其實這些在Display菜單中也可以設(shè)置)</p><p> Display Gumballs 是否顯示操作軸。所謂操作軸一般是針對點而言的,如果勾選了那么對于點的顯示如下:</p><p> 但是引用物件不會顯示操作軸,也
39、就是Referenced Point不會顯示操作軸如下圖:</p><p> 有同學(xué)可能會問為啥,這個跟引用物件在gh里面存儲的機制有關(guān),這個機制跟單純的儲存幾何對象肯定不一樣,我估計大概都是存儲的Guid(這東西是世界上最不值錢的,不知道是啥可以去百科下)。</p><p> 那么操作軸有什么好處呢?在gh中好處很明顯,就是你可以拖動操作軸對點進行移動(貌似不能輸入具體的移動距離,而
40、且也只能朝世界坐標的X,Y,Z方向拖動)。我們知道gh中的物件在犀牛中是不存在的,而這個東西可以在犀牛中拖動不存在的點來改變gh中的數(shù)據(jù),已經(jīng)很了不起了。</p><p> 剩下的就是對gh顯示顏色渲染質(zhì)量的設(shè)定</p><p> 這里需要注意的是,如果選用低質(zhì)量的渲染有可能看到的點,線會偏離真實位置,所以你電腦配置不錯的還是選擇高質(zhì)量渲染比較好,要不可能會出現(xiàn)很多點亂跑的情況。<
41、;/p><p> 3, 各種小部件,如下圖</p><p> A,Align對齊小部件,如果勾選的話選中多個電池則會顯示對齊選項如下圖:</p><p> 也就是頂端對齊,居中對齊,間距相等陣列等,自己點點試試吧,學(xué)習(xí)gh一定要勤動手。</p><p> B,Copass羅盤</p><p>
42、 Show Compass widget是否顯示羅盤部件</p><p> Draw object bubbles是否在羅盤邊緣顯示電池氣泡</p><p> Only draw selected objects只顯示選中電池的氣泡</p><p><b> 如下圖:</b></p><p> 此羅盤究竟有何意
43、義?本人雖然用gh也好多年了,但是真的還沒有用過這個羅盤。我想大概就是一個位置定位吧,如果你連線圖中電池太多,可以指示你電池在面板里面的分布情況,以便你能快速找到電池。</p><p> C,Marov 建議電池菜單</p><p> 勾選Show Markov widget會在gh某個角落顯示一個長條菜單顯示建議電池,也就是說gh在推測你下一個將用什么電池,給你一個建議。</p
44、><p> Docking corner是設(shè)置這個長條所在的角落位置</p><p> Suggestions設(shè)置顯示建議電池的個數(shù),最多設(shè)置10個。如下圖:</p><p> 而且你還可以拖住箭頭所指的黑色邊界左右拖動來調(diào)節(jié)Suggestions的個數(shù)。</p><p> D,Messages 消息</p><p&g
45、t; GH的SDK里面有錯誤消息,警告消息和空白消息。我們一般看到的都是前兩個</p><p> 如果勾選了Show Messages widget,那么會在每一一個計算器的右上角顯示一個消息,鼠標移到此處會彈出提示。</p><p> 鼠標單擊此處會彈出消息內(nèi)容,鼠標點擊消息內(nèi)容可將消息復(fù)制到粘貼板。</p><p> E,Profiler 分析器<
46、/p><p> 這個是最有意義的一個部件。</p><p><b> 本帖隱藏的內(nèi)容</b></p><p> 顯示它,可以讓你知道每個計算器的運行時間,以及所占總時間的比例。如下圖:</p><p> 這樣,我們就可以知道哪些步驟比較耗時間,來尋找更優(yōu)化的方案。</p><p> Thre
47、shold是用來設(shè)置顯示時間的最小值,小于這個值就不再顯示時間,畢竟顯示也是一種浪費資源的計算。這個是以毫秒為單位的,gh里面電池的運算速度還是非??斓模驗樗械臇|西都是加載到內(nèi)存的。</p><p> F,Zooming widgets 縮放部件</p><p> 這個也是跟性能有關(guān)的,如下圖:</p><p> Gh電池界面采用的是gdi+技術(shù),很多顯示
48、在縮放的時候可以不顯示的,只有當縮放到特別小的時候才顯示,例如上圖箭頭所指的Profiler message以及動態(tài)添加參數(shù)的+號按鈕。這樣當縮放特別大的時候這些顯示了也是沒有什么意義的,就好比,你站的遠了就看不清人的五官了,只知道那是個人就可以了,至于鼻子耳朵什么么必要看清楚。</p><p> 這個值調(diào)到100%的話是全部都顯示,最消耗內(nèi)存的,調(diào)到1000%是最節(jié)省內(nèi)存的。而黑色三角所指示的是當前的縮放比例
49、。</p><p> 【SEG出品】GH插件講解(四)之Preference</p><p> 這是界面教程的最后一期。下一期將會推出腳本電池講解。</p><p> 讓我們快速結(jié)束GH的界面,進入一些對高級用戶有意思的話題。繼續(xù)上一節(jié)內(nèi)容....</p><p><b> 1,文件點擊后如下</b></p
50、><p> AutoSave 是否開啟自動保存。還是建議經(jīng)常Ctrl+S</p><p> 下面是激活自動保存的事件。</p><p> On document unload event 在文檔卸載的時候(應(yīng)該指的是關(guān)閉吧)</p><p> On object added event 在添加電池的時候</p&
51、gt;<p> On object deleted event 從gh文檔刪除電池的時候</p><p> On object changed event 在電池改變的時候(應(yīng)該指電池的輸入改變的時候吧)</p><p> On wire event在線頭接入斷開時</p><p> On data mapping event 在數(shù)據(jù)映射的時候
52、(這個真不清楚是什么東東)</p><p> 下面是自動保存的路徑,點擊show可以在文件瀏覽器中打開。</p><p> Recent Files 這里我們可以設(shè)置File菜單下,recent files子菜單中顯示最近文檔的個數(shù)。</p><p> Remove missing files 點擊會將最近文檔列表中已經(jīng)不存在的文檔從最近文檔列表中刪除。<
53、;/p><p> Remove all files將所有最近文檔從列表中移除。</p><p> Template Files 這里可以設(shè)置自己的gh模板,設(shè)置后每次新建都會新建此模板。</p><p><b> 2, 計算</b></p><p> 上面可以設(shè)置GH里面GHA插件的加載方式。&
54、lt;/p><p> 默認系統(tǒng)會選擇最合適的方式來加載此插件。</p><p> 用GH默認的加載方式來加載插件。(究竟是神馬方式我真不清楚)</p><p><b> 插件將直接被加載。</b></p><p> 插件將先被復(fù)制到內(nèi)存中,優(yōu)先加載。</p><p><b> 后面
55、這把鎖 </b></p><p> 如果鎖上則,加載此插件的時候會提示,讓你手動選擇是否加載。</p><p><b> 最后兩個:</b></p><p><b> 本帖隱藏的內(nèi)容</b></p><p> 勾選Enable Solver會將整個文檔鎖起,不進行任何計
56、算(顯示除外),這個很有用,有些無法打開的文檔比如里面有個死循環(huán),打開即死怎么辦?我們要先新建一個文檔,鎖起(中間也有把大鎖性能一樣)然后再打開我們想要打開的文檔更改其邏輯即可。有的時候計算太慢,我們一般也是先鎖起連線,按F5單次運行的。</p><p> Solver undo意思是Bake到犀牛文檔中的幾何物件的回退。</p><p> OK,今天就講到這里,明天我們將穿插一些計算
57、器的講解。</p><p> 【SEG出品】GH中級篇計算器講解之腳本計算器(一) </p><p> 感謝各位關(guān)注。新加入成員可以查看我之前發(fā)布的帖子,在我發(fā)布的主題下【SEG出品】系列。由于用戶基礎(chǔ)不一,我們要由淺入深,先講基礎(chǔ)操作,再講工程實例,再到深入GHA開發(fā),以及各種復(fù)雜算法。期間可能會穿插著來講,可以直接回復(fù)問題,我們會盡量去解答。</p><
58、;p> 應(yīng)大部分用戶要求,我們今天將穿插一些深入點的東西。就以腳本計算器為例講一些計算器的應(yīng)用。</p><p> GH中腳本計算器一共有三個如下圖:</p><p> 說是腳本,但實際上并非我們理解的VBS,VBA這樣的語言,而是完全面向?qū)ο蟮?net語言。</p><p> C Sharp, VB.net 以及IronPython。其中C#是最為流
59、行的,VB.net簡單易學(xué),使用VB6的同學(xué)可以轉(zhuǎn)到這上面來,Python是非官方發(fā)布的一個插件,是開源的代碼掛在GitHub上鏈接如下:</p><p> https://github.com/mcneel/ghpython感興趣的同學(xué)可以在這上面和作者交流交流。雖然說python這種語言運行速度比較快,經(jīng)過很多測試(學(xué)習(xí)了前面的基礎(chǔ)界面課程,我想你自己也能夠進行測試了)其速度還是比一般的電池速度慢的,我想這
60、可能跟python在gh中的調(diào)用機制有關(guān),而且這個計算器還有很多其他的bug,還不太完善,所以建議初學(xué)的同學(xué)不要使用此計算器(雖然跟目前網(wǎng)絡(luò)上的python熱有悖)。</p><p><b> 本帖隱藏的內(nèi)容</b></p><p> 而實際上,這三種語言基本上都是依賴于.netFrame框架,源碼可以相互轉(zhuǎn)換的。下面兩個連接就是本人經(jīng)常用的轉(zhuǎn)換源碼頁面:<
61、/p><p> http://www.developerfusion.com/tools/convert/csharp-to-vb/</p><p> http://www.dotnetspider.com/convert/vb-to-csharp.aspx</p><p> 所謂.netframe框架是微軟開發(fā)一套類庫,里面有各種類,方法,函數(shù),你可以通過一些語
62、言進行調(diào)用,VB和C#是官方支持的兩種語言,但是其他支持的語言也不下于百種。目前最新的netframe框架是netframe4.5,用戶最多的是netframe3.5,犀牛5使用的是netframe4.0,當然最新的gh也是。這個其實一般用戶沒必要擔(dān)心,因為安裝犀牛5的時候,會自動給你裝上的,或者提示你去下載安裝的。</p><p> 啰啰嗦嗦一大堆,有些童鞋可能急了,不要急,如果你想用代碼寫東西,就必須先了解
63、一些基礎(chǔ)東西才可以,要不然就是半瓶子醋,也摸不著頭緒。</p><p> C# VS VB.net</p><p> 這是一個很糾結(jié)的問題嗎?客觀來講,C#用戶量比較大,網(wǎng)上代碼鋪天蓋地,但VB6用戶量在國內(nèi)要更多,轉(zhuǎn)到VB.net上的潛在量更大。有人嘲笑VB.net是玩具,有人說微軟之所以不放棄VB.net是因為蓋茨喜歡Qbasic....更中肯的說法就是,都是語言,都是工具而已。&
64、lt;/p><p> VB.net的同學(xué)不要因為別人怎么說就覺得拿不出門,實際上GH官方的很多電池都是使用VB.net寫的。兩種語言從編譯到運行都一樣,從語言自身來說各有千秋。所以就別拿這些說事了,功能實現(xiàn)了就好。本人使用VB.net所以說的可能有點偏激,請使用其他語言的朋友多多包涵,勿噴。我們講腳本,主要講VB.net以及python,請C#同學(xué)們多用上述網(wǎng)頁轉(zhuǎn)換一下--</p><p>
65、 很久以前,曾經(jīng)GH有兩個VB計算器,兩個C#計算器。但是隨著Rhino_DotNet.dll的沒落,以及犀牛官方說在犀牛6中要完全移除Rhino_DotNet.dll,最終那兩個調(diào)用Rhino_DotNet.dll的計算器被貼上了OLD,并退出了gh的Tab,隱居后臺。所以現(xiàn)在我們看到的VB,C#計算器使用的是RhinoCommon.dll里面的類庫,當然也可以用Rhino_DotNet.dll,后面講gha開放會講解如何用。<
66、;/p><p> 好了,我們開始說電池。</p><p> 所謂腳本電池就是你可以在這里(雙擊電池打開代碼編輯器)寫代碼,利用輸入輸出端完成你所要的功能。</p><p> 一,點擊上圖中加減號,我們可以增加或移除輸入,輸出端。整個腳本計算器的運算實際上只是一個名為Script_Instance的類,此類繼承自GH_ScriptInstance。這個類中有一個最重
67、要的過程如下:</p><p> Private Sub RunScript(ByVal x As Object, ByVal y As Object, ByRef A As Object)</p><p><b> End Sub</b></p><p> 此過程的參數(shù)即電池的參數(shù),byval的都是傳值參數(shù)均為輸入端參數(shù),byref是傳
68、址參數(shù)或者叫引用參數(shù) 均為輸出端類型。傳值與傳址的區(qū)別自己可以查一下,任何一本編程的基礎(chǔ)篇應(yīng)該都有,這里體現(xiàn)的并不是很明顯。當你動態(tài)的添加或者移除參數(shù),里面代碼也動態(tài)的跟著改變。參數(shù)的名字及類型,以及數(shù)量只能通過電池界面設(shè)定。</p><p><b> 二,參數(shù)類型</b></p><p> 可以說了,是類型支撐了gh魔術(shù)般的功能。我們用gh如果不去深入的去了解其
69、中的數(shù)據(jù)類型也只能做門外漢了。電池的參數(shù)有各種類型(我們將在后面講到),腳本電池的參數(shù)的類型更豐富可以自定義,如下圖:</p><p> 我們姑且叫箭頭所指的圖標為自定義類型。見到此種圖標我們就應(yīng)該能知道此種類型我們可以自己在右鍵菜單里面去定義,設(shè)定(FX,以及Expression計算器除外里面的類型為本電池所支持的類型)。</p><p> 上圖菜單的下面四個字菜單是設(shè)置類型的地方,
70、貌似很多人用了很久腳本都不清楚自己在用什么類型,一切都默認為Object--:</p><p> 第一個 Item為默認的意思此數(shù)據(jù)類型只是一個單一的數(shù)據(jù)</p><p> 第二個List 意思將此數(shù)據(jù)設(shè)置為一個列表,每次運算傳輸?shù)接嬎闫鲀?nèi)部的是一個列表。</p><p> 第三個Tree,這個恐怕是gh的核心類型了,這個太強大了,不了解這個就你無法觸及GH的
71、真諦。它是一種分叉式的類型,不僅記錄了存儲了多個列表,而且記錄了每個列表的形成路徑,暫時就樣說一下吧,后面會深入講解。每次運算傳輸?shù)挠嬎闫鲀?nèi)部的是N個列表。</p><p> 我們寫腳本之前一定要弄清楚,自己傳輸?shù)竭^程中的參量到底是單一數(shù)據(jù),還是列表,還是樹。列表和樹屬于.netFrame框架中泛型(如果不了解,可以去惡補一下)的范疇,只是樹是由GH自己定義的一種強大的數(shù)據(jù)類型。</p><
72、p> OK,第四個就是儲存數(shù)據(jù)的類型了。如下圖:</p><p> A,System.object所有類型之父,我們基本上什么類型都可以用object去替代,但是用object速度可能要慢很多,因為使用了Object屬于一種后期綁定(可以惡補一下裝箱與綁定)。如果我們知道自己使用的類型,我們盡量自己設(shè)置好,避免影響速度以及出錯不必要的錯誤。</p><p> B,Boolean
73、,Integer,Double,Complex,String,DateTime,Color,Guid</p><p> 這些屬于計算數(shù)據(jù)類型,這些類型也是gh自己創(chuàng)建的類型,和我們net編程語言中的同名類型還是有些區(qū)別的,不過區(qū)別不大,我們照常使用即可。舉個列子,如Integer的數(shù)據(jù)范圍跟我們net里面的就不一樣,在這個GH版本中(0.9.0075)Integer參數(shù)計算器有個致命的bug</p>
74、<p> 拖出Integer計算器,然后右鍵設(shè)置數(shù)據(jù)為1e10,你的犀牛將直接崩潰掉。此bug我已經(jīng)向David 反映,下個版本中就不存在了。從這里我們就可以看出這里面的Integer的上限為2^32</p><p> 由32位,4個字節(jié)存儲。因為你輸入1e9就沒問題,1e9.5都沒問題。因為2^32次方是一個9-10位的數(shù)字。有同學(xué)可能會問為啥,因為 log(2^32)=32*log2 =9.
75、63295這就是這個數(shù)的位數(shù)。所以當32位里面都存入1的時候最大為這個9.63位多的數(shù)字。好了不扯了,繼續(xù)。</p><p> 注意里面的Complex為復(fù)數(shù)類型。Guid也和常用,類似句柄一樣的東西,這個你如果不清楚要好好研究一下。</p><p> C,Poing3d,Vector3d,Plane,Interval,UVInterval,Rectangle3d,Box,Transf
76、orm</p><p> 這些屬于幾何類型數(shù)據(jù)的范疇,這些類型模式都是結(jié)構(gòu)體,結(jié)構(gòu)體與類的區(qū)別這地方又需要惡補。可以說這些都必須要掌握,尤其是Transform矩陣類型,GH中幾何變換的核心。如果你對矩陣不了解就惡補一下大學(xué)的高數(shù)吧。最起碼你要掌握移動矩陣,鏡像矩陣,旋轉(zhuǎn)矩陣,以及投影矩陣。這些后面再說。</p><p> D,Line,Circle,Arc,Polyline,Curv
77、e,Surface,Brep,Mesh,GeometryBase幾何線,面,體類型</p><p> 其中Curve是其他線類型的父類,GeometryBase是這里面所有類型(結(jié)構(gòu)體除外)的基類。</p><p> OK,以Point3d為例,我們可以設(shè)置dimx as point3d或者dim x as List(of point3d)或者dim x asDataTree(of p
78、oint3d)</p><p> C#為 Point3dx,List<Point3d>x, DataTree<Point3d> x</p><p> 好了,今天就講到這里,不要著急,我們要充分對電池了解透徹之后才能開始寫代碼,這樣才能真正學(xué)會使用腳本電池,明天繼續(xù)。</p><p> 【SEG出品】GH中級篇之腳本計算器講解(二)<
79、;/p><p> 感謝各位關(guān)注。新加入成員可以查看之前的帖子教程。由于用戶基礎(chǔ)不一,我們要由淺入深,先講基礎(chǔ)操作,再講工程實例,再到深入GHA開發(fā),以及各種復(fù)雜算法。期間可能會穿插著來講,可以直接回復(fù)問題,我們會盡量去解答。</p><p> 今天我們速度結(jié)束腳本計算器的界面,講一些代碼。</p><p> 腳本計算器的右鍵菜單,這里只提下兩個子菜單,剩下的其他菜
80、單功能在基礎(chǔ)操作中講解。如下圖:</p><p> Edit Source....打開代碼編輯器。</p><p> Manage Assemblies....這個很有用,是對其他庫的引用。所謂庫,這里我再啰嗦兩句,就是函數(shù),類等的組件,有叫dll,有叫com組件,有叫api函數(shù),其實差不多都是一個東西。有很多常用的功能,我們不可能每次都寫,那么很多牛逼的人就把這些給我們封裝好,我們只
81、要知道怎么使用就行了,就好比,我們只需要學(xué)會如何開車就能達到方便旅行的效果,而非一定要學(xué)會造車。當然你要會造車那就更牛逼。其實netframe框架也是一個庫,只是稍微大了點而已。簡而言之,就是我們引用這些庫,使用里面的函數(shù),類等實現(xiàn)我們自己需要的功能。</p><p><b> 點擊后如下圖:</b></p><p> 點擊Add就可以瀏覽引用庫文件</p&
82、gt;<p> 如上圖,我們可以引用dll,exe,Rhp,gha.實際上rhp,gha本質(zhì)上也是dll文件,只不過是編譯后改了后綴名而已。只要這些文件中有公開的接口,那么我們就可以在代碼中使用。</p><p> 細心的童鞋可能會問,我們?nèi)绾我瞥梦募?。問的好,這個問題困擾了我很長時間,直到問了David才知道,選中所引用文件,按Delete鍵就可以了--!</p><p
83、> 讓我們迫不及待的進入腳本編輯界面吧:</p><p> 右上角這幾個按鈕是新版本增加的,很久以前的版本木有。</p><p> 運行,這里面按F5是沒用的,按Ctrl+S也非保存,保存必須點擊下面的OK.</p><p> 點擊此按鈕會插入如下代碼:</p><p><b> '''<
84、;/b></p><p> ''' This method will be called once every solution, before any calls to RunScript.'''Public Overrides Sub BeforeRunScript()End Sub''''''
85、This method will be called once every solution, after any calls to RunScript.'''Public Overrides Sub AfterRunScript()End Sub</p><p> 看解釋,如果想在RunScript這個過程的前后發(fā)生點什么事情,這里就是個好地方。</p><p
86、> Overrides是遮蓋,此過程應(yīng)該是遮蓋了原來基類中的BeforeRunscript和AfterRunscript.</p><p> 點擊這個令人發(fā)毛的眼睛,會插入如下代碼:</p><p><b> '''</b></p><p> ''' Return a Boundin
87、gBox that contains all the geometry you are about to draw.'''Public Overrides ReadOnly Property ClippingBox() As BoundingBoxGetReturn BoundingBox.EmptyEnd GetEnd Property</p><p> '
88、;Draw all meshes in this method.Public Overrides Sub DrawViewportMeshes(ByVal args As IGH_PreviewArgs)End Sub</p><p> 'Draw all wires and points in this method.Public Overrides Sub DrawViewportWires(
89、ByVal args As IGH_PreviewArgs)End Sub</p><p> 第一個屬性可以用來返回計算過程中,幾何對象的BoundingBox。任何幾何對象都有一個BoundingBox,那么就注定了,任何操作幾何對象的計算器都離不開BoundingBox這個屬性。</p><p> 第二個是GH強大的顯示,用了那么久GH或許你還不知道里面的顯示均為Mesh顯示。此
90、方法遮蓋了基類的顯示,我們想改變腳本計算器對幾何對象的顯示,可以在此動手腳。如果想讓原來的顯示不改變,那么可以加一句MyBase.DrawViewportMeshes(args)</p><p> 第三個是GH強大的線頭顯示。GH里面所有的連線都是nurbs曲線。</p><p> 實際上對于我們初級學(xué)習(xí)腳本,上述方法是不經(jīng)常用的,等我們用到這個級別,就已經(jīng)不再使用腳本而寫GHA了。&
91、lt;/p><p> 這個,腳本字體調(diào)節(jié),自己看著辦吧。</p><p> 這個比較有意思,也比較有用。選中此按鈕,那么當你點擊別的區(qū)域的時候,腳本編輯器就自動縮小成一個比較可愛的迷你編輯器來方便我們進行其他操作:</p><p> 另外旁邊的行號也很有用,幫助我們查找錯誤所在地方,一般錯誤都會提示錯在哪一行的。</p><p><b
92、> 本帖隱藏的內(nèi)容</b></p><p> 最后Cache按鈕,你點擊一下編輯器會保存此刻的代碼,你可以用旁邊的Recover from cache.來恢復(fù)代碼。當然編輯器也會自動隔段時間保存代碼。如果不小心代碼丟失了,來這里面找找吧。</p><p> 最后介紹幾個鮮為人知的快捷鍵,實際上這個編輯器與VS有著某種關(guān)系,VS里面的快捷鍵基本上在此都可以用。<
93、/p><p> ctrl+e緊接著按 ctrl+c 用來批量注釋所選代碼ctrl+e緊接著按 ctrl+u 用來批量反注釋所選代碼</p><p> 如果一行代碼太長,超出了編輯器的右邊界,你想復(fù)制此行代碼,選擇起來不方便,那么沒關(guān)系,將光標定位到行首,按Ctrl+C即可復(fù)制此行。</p><p> 最后,按住Alt鍵,然
94、后鼠標右鍵選擇會出現(xiàn)一種神奇的隔行矩形選擇:</p><p> 對此矩形區(qū)域可以進行復(fù)制粘貼以及刪除,有時候可以達到很神奇的功效。</p><p> 如果群中潛水的高手還知道一些其他比較方便好使的快捷鍵,歡迎回復(fù)消息。</p><p> 等下,貌似我們的界面還遺漏了什么:</p><p> Ctrl+F,F(xiàn)ind以及替換,這里面有很多
95、選項,其中值得一提的是Use regular expressions,可以使用正則表達式喲。</p><p> 那么此替換和查找就比較強大了。作為一個腳本開發(fā)者,如果你不知道正則表達式就有點太不專業(yè)了,必須惡補</p><p> 【SEG出品】GH中級篇之腳本計算器講解(三)</p><p> 感謝各位關(guān)注。新加入成員可以查看之前的帖子教程。由于用戶基礎(chǔ)不一,
96、我們要由淺入深,先講基礎(chǔ)操作,再講工程實例,再到深入GHA開發(fā),以及各種復(fù)雜算法。期間可能會穿插著來講,可以直接回復(fù)問題,我們會盡量去解答。您覺得有用,請將此微信號分享給能用得著的朋友。</p><p> 今天,我們開始講解GH中的VB腳本代碼。</p><p> 打開GH中的VB編輯器,里面已經(jīng)預(yù)先生成了一些代碼,如下,我們逐行講解:</p><p> Op
97、tion Strict OffOption Explicit On</p><p> 上面兩個是編譯器的對代碼的選項,第一個意思是嚴格定義關(guān)閉,如果開啟嚴格定義即Option Strict On那么我們必須保證我們的代碼正確無誤才能執(zhí)行,甚至連警告錯誤都不能有。還好這里按照的不是嚴格定義。</p><p> 第二個選項是顯示定義,意思 我們定義變量的時候必須顯示定義而不能是隱式的,即
98、dim pt as point3d,而不能直接不定義,把pt當成point3d來用,這樣的話會提示一個錯誤</p><p> “1. Error (BC30451): 'pt' is not declared. It may be inaccessible due to its protection level. (line 87)”</p><p> 以上兩個選項目前
99、版本還不能用戶自己改動。</p><p> 下面是導(dǎo)入的命名空間,不知道命名空間是何物的童鞋,可以惡補一下。導(dǎo)入這些,方便我們寫代碼,例如導(dǎo)入Rhino.Geometry空間后,里面有個Point3d的結(jié)構(gòu)體,那么我們就可以直接使用Point3d這個結(jié)構(gòu)體,Dim pt as Point3d 而不用麻煩滴寫 Dim pt as Rhino.Geometry.Point3d,至于命名空間的其他用途這里就不在贅述。
100、下面介紹一下這些常用的空間。</p><p> Imports RhinoImports Rhino.Geometry</p><p> 幾何類空間,這個里面幾乎每個類都需要知道,如果你想對犀牛里面幾何對象了如指掌的話。Imports Rhino.DocObjects</p><p> 犀牛物件空間,犀牛文檔物件。Imports Rhino.Collec
101、tions</p><p> 犀牛泛型空間,就是很多集合空間,例如圖層表,顏色表等。</p><p> Imports GH_IO</p><p> GH的文件空間。Imports GH_IO.Serialization</p><p> GH文件序列空,這個是GH能保存文檔,初始幾何對象的一個重要的空間。Imports Gras
102、shopperImports Grasshopper.KernelImports Grasshopper.Kernel.Data</p><p> GH的數(shù)據(jù)空間Imports Grasshopper.Kernel.Types</p><p> GH的類型空間,GH里面所有類型都是GH_xxx例如String實際上是GH_String,GH魔術(shù)般的功能都是由這些類型支撐的。<
103、;/p><p> 以下是NetFrame框架的一些常用空間。</p><p> Imports SystemImports System.IO</p><p> 系統(tǒng)文件管理空間。Imports System.Xml</p><p> Xml空間。Imports System.Xml.Linq</p><p>
104、; XML的linq空間。Imports System.Linq</p><p> Linq空間,不知道Linq為何物的童鞋,要惡補以下,這個很久以前沒有引入,后來才引入的,很有用,可以用SQL語句一般的.net語言對各種集合查詢。Imports System.DataImports System.Drawing</p><p> 繪圖空間。Imports System.Re
105、flection</p><p> 反射空間。Imports System.Collections</p><p> 泛型空間,這個要掌握。Imports System.Windows.Forms</p><p> WinForm空間,就是那些界面空間,傳言犀牛6要移除,不過后來Steve好像找到了另外的方法,保留此空間引用。Imports Micros
106、oft.VisualBasic</p><p> 這個空間使用VB6的同學(xué)可能很喜歡。是VB6之前的方法函數(shù)。Imports System.Collections.Generic</p><p> 泛型空間,這個要掌握。</p><p> Imports System.Runtime.InteropServices</p><p>
107、 運行時交互空間。(本人水平有限,對很多空間功能也不甚了解。)</p><p> 目前命名空間的導(dǎo)入,我們只能用默認的不能自己導(dǎo)入。我曾向GH官方建議讓用戶自己導(dǎo)入。他們會在GH2.0里面加入自己導(dǎo)入命名空間的功能,這樣我們的自由讀就更大了。比如我們可以自己導(dǎo)入正則表達式空間等。</p><p> ''' <summary>''
108、39; This class will be instantiated on demand by the Script component.''' </summary></p><p> 下面就是腳本類。Public Class Script_Instance Inherits GH_ScriptInstance</p><p&
109、gt; #Region "Utility functions" ''' <summary>Print a String to the [Out] Parameter of the Script component.</summary> ''' <param name="text&q
110、uot;>String to print.</param> Private Sub Print(ByVal text As String) 'Implementation hidden in Script Edit mode... End Sub ''' <summary>Pr
111、int a formatted String to the [Out] Parameter of the Script component.</summary> ''' <param name="format">String format.</param> ''' <param n
112、ame="args">Formatting parameters.</param> Private Sub Print(ByVal fo</p><p><b> 本帖隱藏的內(nèi)容</b></p><p> 上面四個方法,前兩個是Out輸出端輸出的過程函數(shù),這幾個過程函數(shù)我們都無法修改。但是可以調(diào)用。&l
113、t;/p><p> 例如 我們寫入如下代碼:</p><p> 后面兩個是映射,這兩個方法能幫助我們查看一個類中到底有哪些公共方法。首先我們看到代碼中有me,這個me實際上是對類本身的一個實例調(diào)用,可以去了解一下(me,my,mybase)的區(qū)別。</p><p> 那么我們下面就映射一下看看me下面有哪些方法:</p><p> 細心的
114、同學(xué)會說,咦,怎么沒有RunScript方法?是的,這里只映射公共方法,包括父類的公共方法,上面哪些我們在這個類中沒有看到,是因為它在父類(GH_ScriptInstance)里面。</p><p> 下面我們自己在此類中寫個方法試試:</p><p> 實際上我們編輯腳本的過程是在修改這個類。我們甚至可以在此類中自己創(chuàng)建類,所以整個腳本計算器還是很強大的。</p>&l
115、t;p> #Region "Members" ''' <summary>Gets the current Rhino document.</summary> Private Readonly RhinoDocument As RhinoDoc ''' <summ
116、ary>Gets the Grasshopper document that owns this script.</summary> Private Readonly GrasshopperDocument as GH_Document ''' <summary>Gets the Grasshopper script component
117、 that owns this script.</summary> Private Readonly Component As IGH_Component ''' <summary> ''' Gets the current iteration count. The first call to
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- grasshopper 電池命令翻譯
- grasshopper 電池命令翻譯
- grasshopper運算器名稱總結(jié)
- 出品名稱
- grasshopper學(xué)習(xí)手冊筆記(含英文注解)
- grasshopper運算器逐一注解
- 聯(lián)合出品合同
- 出品管理流程
- 酒店出品理念
- 醫(yī)療文案培訓(xùn)踏歌出品
- 廚房生產(chǎn)、出品流程
- hks出品的渦輪
- grasshopper中文版運算器名稱對照翻譯
- 基于Grasshopper的建筑表皮生態(tài)優(yōu)化設(shè)計研究.pdf
- 基于Grasshopper的參數(shù)化表皮的生成研究.pdf
- 加密插件實現(xiàn)
- solidworks插件詳解
- 聯(lián)合出品協(xié)議書
- seg002施工現(xiàn)場安全檢查指引
- 出品部各部崗位守則
評論
0/150
提交評論