Revit二次開發,如何選點,如何在Revit界面中選點

對於新手第一次做Revit二開來講,有時候搞不清楚怎麼選點。別人是不是這樣我不知道,至少我當時是這樣的。

如上圖所示,這是Revit的選擇器Api,位於Autodesk.Revit.UI.Selection.Selection中,從上面可以看到,不僅是選點,還可以選物選框選盒子。

另外中國程序員通常不太注意的一件事:該選擇器是非託管資源,也就是你不釋放的話,是會使得內存不斷提升的。即所謂的內存洩露。使用Selection選擇器後,要及時釋放。

本文僅以選點來舉例說明,選點是最常用的,相對而言也較簡單。

<code>using Autodesk.Revit.DB; using Autodesk.Revit.DB.Architecture; using Autodesk.Revit.UI; using Autodesk.Revit.UI.Selection; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.CompilerServices; using System.Text; namespace Create3DView { /// /// 創建3d視圖 /// /// marc [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)] [Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)] [Autodesk.Revit.Attributes.Journaling(Autodesk.Revit.Attributes.JournalingMode.NoCommandData)] public class DefaultCommand : IExternalCommand { /// /// 執行指令 /// /// /// /// /// public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { var activeDocument = commandData.Application.ActiveUIDocument; XYZ[] points = new XYZ[2]; using (var selection = activeDocument.Selection) { ObjectSnapTypes snapTypes = ObjectSnapTypes.Endpoints | ObjectSnapTypes.Intersections; for (var i = 0; i < 2; i++) { points[i] = selection.PickPoint(snapTypes, "請選擇一個端點或者交點"); } } string text = $"您選擇的第1個點是 {points[0]},\r\n第2個點是 {points[1]}"; TaskDialog.Show("提示", text); return Result.Succeeded; } } } /<code>

上述代碼運行結果如下:

源碼下載地址:https://download.csdn.net/download/mazhiyuan1981/12881361