using Autodesk.Revit.Attributes; using Autodesk.Revit.DB.Mechanical; using Nice3point.Revit.Toolkit.External; namespace ShrlAlgoToolkit.RevitAddins.RvMEP; [Transaction(TransactionMode.Manual)] public class TerminalConnectToDuctCmd : ExternalCommand { public override void Execute() { try { #if REVIT2018 || REVIT2020 var terminalId = UiDocument.Selection .PickObject( Autodesk.Revit.UI.Selection.ObjectType.Element, new FuncFilter(e => e.Category.Id.IntegerValue == -2008013), "请选择风管末端" ) .ElementId; #elif REVIT2025 var terminalId = UiDocument.Selection .PickObject( Autodesk.Revit.UI.Selection.ObjectType.Element, new FuncFilter(e => e.Category.Id.Value == -2008013), "请选择风管末端" ) .ElementId; #endif var ductId = UiDocument.Selection .PickObject(Autodesk.Revit.UI.Selection.ObjectType.Element, new GenericFilter(), "请选择连接到的风管") .ElementId; Document.Invoke(_ => { MechanicalUtils.ConnectAirTerminalOnDuct(Document, terminalId, ductId); }); } catch (Autodesk.Revit.Exceptions.OperationCanceledException) { } catch (Exception) { } } }