48 lines
1.4 KiB
C#
48 lines
1.4 KiB
C#
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<Duct>(), "请选择连接到的风管")
|
|
.ElementId;
|
|
Document.Invoke(_ =>
|
|
{
|
|
MechanicalUtils.ConnectAirTerminalOnDuct(Document, terminalId, ductId);
|
|
});
|
|
}
|
|
catch (Autodesk.Revit.Exceptions.OperationCanceledException)
|
|
{
|
|
|
|
}
|
|
catch (Exception) { }
|
|
}
|
|
}
|