Files
Shrlalgo.RvKits/ShrlAlgo.RvKits/RvMEP/TerminalConnectToDuctCmd.cs

57 lines
1.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Mechanical;
using Nice3point.Revit.Toolkit.External;
namespace ShrlAlgo.RvKits.RvMEP;
[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.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) { }
}
}