本文主要参考以下博客
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Selection;
using Autodesk.Revit.Attributes;
using System.Linq;
using System.Collections.Generic;
using Autodesk.Revit.DB.Mechanical;
using System;
using System.Windows;
using Autodesk.Revit.DB.Plumbing;
namespace WPF_srqc
{
[Transaction(TransactionMode.Manual)]
class NewTeeFitting : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIApplication uiApp = commandData.Application;
Document doc = uiApp.ActiveUIDocument.Document;
Selection sel = uiApp.ActiveUIDocument.Selection;
//选取管道,管道必须相交,否则intersectPoint为空
var reference1 = sel.PickObject(ObjectType.Element, "请选择第1个管");
MEPCurve duct1 = doc.GetElement(reference1) as MEPCurve;
var reference2 = sel.PickObject(ObjectType.Element, "请选择第2个管");
MEPCurve duct2 = doc.GetElement(reference2) as MEPCurve;
var reference3 = sel.PickObject(ObjectType.Element, "请选择第3个管");
MEPCurve duct3 = doc.GetElement(reference3) as MEPCurve;
Curve curve1 = (doc.GetElement(reference1).Location as LocationCurve).Curve;
Curve curve2 = (doc.GetElement(reference2).Location as LocationCurve).Curve;
Curve curve3 = (doc.GetElement(reference3).Location as LocationCurve).Curve;
var ductList = GetMainDuct(duct1, duct2);
MEPCurve MainDuct = ductList[