本文开发环境为C#,Revit2014
Revit机电二次开发API并没有提供打断管件的方法,只能采用间接的办法实现,思路就是将需要打断的管件就地复制一根,然后将两根管件缩短并放置在合适的位置,同时应当考虑管件与原管路系统的连接问题,以风管Duct为例,C#实现的代码如下:
[TransactionAttribute(TransactionMode.Manual)]
public class Test : IExternalCommand
{
Autodesk.Revit.ApplicationServices.Application application;
Autodesk.Revit.DB.Document document;
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIApplication revit = commandData.Application;
application = revit.Application;
UIDocument uiDocument = revit.ActiveUIDocument;
document = uiDocument.Document;
using (Transaction transaction = new Transaction(document, "风管打断"))
{
transaction.Start();
DuctSelectionFilter ductSelectionFilter=new DuctSelectionFilter();
IList<Duct> ductList=new List<Duct>();
//选取一个风管
Duct duct = PickMEPCurve(uiDocument, ductSelectionFilter, "请选择一个风管") as Duct;
XYZ pointOnDuct = PickPointOnMEPCurve(uiDocument, duct as MEPCurve, "请选择一个打断点");