標籤:

快速創建軸網

軸網創建幾乎可以說是建築設計必需的一環。雖然軸網的創建一般只在項目開始時才有,但仍然是一個簡單但需要細緻且耗時的過程。快速創建軸網能幫助設計師在極短時間內準確完成軸網創建工作,節約勞動時間。本小節案例只介紹直線型網格狀的軸網,弧線型軸網讀者可以作為練習進行嘗試。

網格型的軸網,主要需要確定一個基準點,以及水平和豎直軸網之間依次間隔。對於基準點,我們考慮使用左上角的交點為基準。軸網之間的間隔,比較理想的方法是使用圖形化的方法來編輯處理,但由於這個不是本書的重點,這裡我們採用字元串輸入的方法,通過逗號(,)分隔的一串數字來定義軸網間隔。本小節案例實現功能如下:

  • 通過選點確定軸網左上角的基準點;
  • 通過逗號(,)分隔的一串數字來定義橫、縱軸網間隔;
  • 可設定橫、縱軸網的起始編號;
  • 一鍵創建軸網

案例的窗口界面如下:

解析間隔是C#的常見功能,這裡不再羅列。創建軸網的代碼如下:

private void createGrids(XYZ basePoint, List<double> spaces, string startName, bool isHorizontal)n{n Document doc = _revitApp.ActiveUIDocument.Document;n double gridLength = 30, extLength = 3; // Unit: feetn using (Transaction t = new Transaction(doc, "Create Grids"))n {n t.Start();n XYZ offsetDir = isHorizontal ? XYZ.BasisY.Multiply(-1) : XYZ.BasisX;n XYZ startPoint = isHorizontal ? basePoint.Add(XYZ.BasisX.Multiply(-extLength)) : basePoint.Add(XYZ.BasisY.Multiply(extLength));n XYZ endPoint = isHorizontal ? startPoint.Add(XYZ.BasisX.Multiply(gridLength)) : startPoint.Add(XYZ.BasisY.Multiply(-gridLength));n Autodesk.Revit.DB.Line geoLine = Autodesk.Revit.DB.Line.CreateBound(startPoint, endPoint);n Autodesk.Revit.DB.Grid grid = Autodesk.Revit.DB.Grid.Create(doc, geoLine);n grid.Name = startName;n foreach (double space in spaces)n {n startPoint = startPoint.Add(offsetDir.Multiply(space));n endPoint = endPoint.Add(offsetDir.Multiply(space));n geoLine = Autodesk.Revit.DB.Line.CreateBound(startPoint, endPoint);n Autodesk.Revit.DB.Grid.Create(doc, geoLine);n }n t.Commit();n }n}n

其中,第一個參數是左上角的基準點,spaces參數是各軸線之間的距離,startName是第一根軸線的名稱(後續名稱會自動遞進),最後一個參數是這組軸網是否水平。這裡將軸線的長度固定為30英尺,讀者可以練習將長度也設為輸入項。真正創建軸網主要是確定軸線的起始、終止點坐標,由這兩個點之間的線段來確定軸線的位置。

小知識:Revit平面視圖中的x、y坐標如下圖所示(其中箭頭方向為正方向):

小知識:Revit內部數值存儲單位(也就是當通過RevitAPI獲取未轉換的數值對應的單位)很有意思,除了與長度有關的單位外,其它數值都對應公制單位,只有長度相關單位(例如:長度、面積、體積)是英制單位,以英尺為單位。具體產生這個問題的原因已不可考,讀者在通過RevitAPI進行開發時需要注意這點,否則很容易導致錯誤。從Revit2014版本開始提供了UnitUtils輔助類幫助大家進行單位轉換,有一對ConvertFromInternalUnits/ConvertToInternalUnits函數可以幫助大家不用關心內部數值是什麼單位而進行有效預處理。


推薦閱讀:

「更新公告」全國潮汐預報介面上線
本周熱門開發工具一覽

TAG:AutoDeskRevit | API |