Revit二次開發之如何選取Revit元素【比目魚原創】
阿新 • • 發佈:2019-02-10
Revit API提供的獲取元素的互動包括以下幾種方式:
方式(1)先選擇元素,再執行外部命令,Revit文件可以獲取選擇元素並做相應處理。
③框選。拉框訪方式選取,所有在框內的且符合過濾條件的元素都將被選取。
方式(1)先選擇元素,再執行外部命令,Revit文件可以獲取選擇元素並做相應處理。
方式(2)先執行命令,再選擇元素或者位置,選擇結束後命令繼續執行。
這種方式的選擇又包含
①單選。只能選取一個元素,選擇後當前選擇操作結束。
②多選。可以選取多個元素,單擊工具條上的“結朿”按鈕來確認選擇操作結束,或者 單擊“取消”或者按ESC鍵來取消選擇。③框選。拉框訪方式選取,所有在框內的且符合過濾條件的元素都將被選取。
④選點。選擇檢視中的一個座標點。
學習的程式碼如下:
using System; using Autodesk.Revit.UI; using Autodesk.Revit.DB; using Autodesk.Revit.UI.Selection; namespace HelloRevit { [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Automatic)] public class Class1 : IExternalCommand { public Autodesk.Revit.UI.Result Execute(ExternalCommandData revit, ref string message, ElementSet elements) { UIDocument uidoc = revit.Application.ActiveUIDocument; Document doc = uidoc.Document; Selection selection = uidoc.Selection; try { //獲取Revit已選中的元素 String info = "所選元素型別為: "; foreach (var elementId in selection.GetElementIds()) { var elem = doc.GetElement(elementId); if (elem != null) { info += "\n\t" + elem.GetType().ToString(); } } TaskDialog.Show("Revit已選中的元素為:", info); //使用者自行選擇元素 var referenceCollection = selection.PickObjects(ObjectType.Element, "請選擇模型構件"); if (0 == referenceCollection.Count) { TaskDialog.Show("Revit", "你沒有選任何元素."); } else { info = "所選元素型別為: "; foreach (var reference in referenceCollection) { var elem = doc.GetElement(reference); if (elem != null) { info += "\n\t" + elem.GetType().ToString(); } } TaskDialog.Show("你所選擇的元素為", info); } } catch (Exception e) { message = e.Message; return Autodesk.Revit.UI.Result.Failed; } return Autodesk.Revit.UI.Result.Succeeded; } } }
其中ObjectType. Element指定選取的是元素整體,Revit API還支援選取面(Face)、 邊(Edge)、點(Point)等。
=========【更多高階應用請關注公眾號】========
===================================