1. 程式人生 > >一、Sketchup用ruby進行二次開發--簡述

一、Sketchup用ruby進行二次開發--簡述

       首先我想說一下進行《Sketchup用ruby進行二次開發》的專欄的原因。
       我的研究生論文是基於GIS的三維地下管線研究與實現,但是經過一段時間的學習,發現使用arcEngine和sketchup進行建模,不是很靠譜,原因是管線的數量有上萬條之多,不可能對每一條進行建模,而且管點的建模也比較複雜,涉及到管線閥門、管線三通、消防栓等,這些在土建領域都有一定的工業標準,所有不能隨意設計,必須要符合規範。sketchup的二次開發給我們提供了用程式碼進行的可能。
      下面我說一下Sketchup軟體,sketchup是非常簡單易用的三維建模軟體,sketchup有如下七個主要功能(http://www.sketchup.com/zh-CN/products/sketchup-pro/features/3D-modeling)。
1、精準測量
有了 SketchUp,您可以隨心所欲地快速完成工作, 但其不只是一支魔幻的電子鉛筆。 由於您在計算機上執行 SketchUp,您在 SketchUp 中建立的每個物體的尺寸都很精密。 準備就緒後,您完全可按照預期的想法精準建模。 要製作精準的模型,只需在繪圖時輸入尺寸。 您也可以使用捲尺工具設定準確的建模準則。
2、邊線和麵
每個 SketchUp 模型都只由兩個要素組成:邊線和麵。 邊線使用直線,而面是多條邊線構成平面閉合圖形而成的二維圖形。 例如,矩形平面是由四條首尾相接的邊線以直角構成的圖形。 要在 SketchUp 中建模,您可使用少量簡單工具繪製邊線和麵,較短時間內即可學會。 就是如此簡單。
3、推導法
SketchUp 在建模空間中呼叫有用點並使用不同顏色且容易理解的工具提示加以突顯,令 3D 空間中的製圖簡單易用。 我們將這種簡單易用的功能稱為“推導法”:其以 SketchUp 根據模型中的幾何圖形推導有用點和位置的準神奇功能命名。 例如線條中點、弧線相切和各種垂直... 您抓住了要點 — SketchUp 也是如此。
4、實體工具
在 SketchUp 中,“實體”是任何完全密封的組或元件;如果該實體是一個裝滿水的有形物體,則在搖晃實體時也不會漏水。 您可以使用 SketchUp Pro 中的“實體工具”在模型中的實體上執行特殊的加減(布林)運算。 在木工專案中,使用“修剪“工具為榫頭開榫眼。 使用“相交”工具在物件的投影頂部和側面檢視之間執行交迭操作。 “並集”工具將多個實體合併為一個實體。 “拆分”工具將相交的實體拆分為各個部分(不論其交迭位置),無需刪除任何東西。 “去除”工具將交迭的兩個實體分開。
5、複製和陣列
SketchUp 的”移動“工具具有雙重功能;它亦可用來複製圖元。 移動某物時,只需按一下鍵盤上的修飾鍵,SketchUp 即可知道您需要進行復制。 需要排列多個副本?這裡有一個簡單的方法。 因為我們熱衷於簡單,複製和陣列操作與“旋轉”工具操作相同。
6、跟隨路徑
SketchUp 的“跟隨路徑”工具富有創新且功能齊全,可沿著預定路徑擠壓 2D 表面來建立 3D 模型。 沿著 L 形線條擠壓圓圈可建立一個彎曲的管道模型。 繪製半個輪廓,然後使用“跟隨路徑”工具沿著圓圈路徑拖動線條來建立一個瓶子。 您甚至可使用“跟隨路徑”工具將欄杆、傢俱和電子產品的邊緣修圓(嵌邊)。
7、推/拉
使用 SketchUp 的專利“推/拉”工具將任何平整表面擠壓成三維形態。 單擊一次即可開始擠壓,然後移動滑鼠,再次單擊即可停止。 可以將矩形推/拉成盒體。 也可以先畫好樓梯的輪廓線,然後推/拉成三維形態。 如果想要做一扇窗戶,那麼可以在牆上推/拉一個洞。 SketchUp 以易用性而聞名,而推/拉工具正是原因所在。

    一塊軟體之所以強大,在於它有非常簡單且規範的擴充套件型,像Eclipse、AutoCad、ArcGIS等等,都提供了非常好用的擴充套件外掛的功能,這能夠滿足使用者對特定環境的需求,今天的主角Sketchup同樣如此,他的擴充套件程式庫也非常強大(http://extensions.sketchup.com/),但是國內介紹如何進行Sketchup二次開發的資料非常稀少,也沒有系統性的教程,如果有人覺得我說的不對,可以把自己手中的資料共享出來,大家共同討論進步。

廢話不多說,下面講一下我使用的軟體,我使用的是Sketchup Pro2014版本,使用的是Ruby code editor,這款編輯器非常好用,我把這款編輯的外掛放到我的部落格中,有需要的可以下載。關於如何學習ruby,我也是小白,我是下載這本說進行學習的,下載地址http://download.csdn.net/download/netHibernate/169339,感謝‘

netHibernate’同學的無私分享。