笔记代码如下:
/// <summary>
/// 获得管道连接器和弯头的信息
/// </summary>
public void GetConnector()
{
//获得管道
Reference reference = uIDocument.Selection.PickObject(Autodesk.Revit.UI.Selection.ObjectType.Element, new MEPCurveFilter());
MEPCurve pipe = document.GetElement(reference) as MEPCurve;
//获得管道连接器
ConnectorManager connectorManager = pipe.ConnectorManager;
ConnectorSet connector = connectorManager.Connectors;
StringBuilder stringBuilder = new StringBuilder();
foreach (Connector item in connector)
{
XYZ direction = item.CoordinateSystem.BasisZ;
stringBuilder.Append("Id:" + item.Id + "\t" + "是否连接:" + item.IsConnected + "\t" + "类型:" + item.Domain + "\t" + "owner的Id" + item.Owner.Id
+ "\t" + "朝向" + direction + "\n");
//返回管的所有连接器
ConnectorSet connectorSet = item.AllRefs;
foreach (Connector item1 in connectorSet)
{
if (item1.Owner is FamilyInstance)
{
FamilyInstance familyInstance = item1.Owner as FamilyInstance;
stringBuilder.Append($"连接的元素Id是{familyInstance.Id},名称:{familyInstance.Name}");
//获取弯头的所有连接器
ConnectorSet connectorSet1 = familyInstance.MEPModel.ConnectorManager.Connectors;
//遍历
foreach (Connector item3 in connectorSet1)
{
//弯头是否连接
if (item3.IsConnected)
{
//获取弯头断点连接器连接的
foreach (Connector item5 in item3.AllRefs)
{
stringBuilder.Append($"连接弯头的名字:{item5.Owner.Name},Id:{item5.Owner.Id}");
}
}
}
break;
}
}
}
TaskDialog.Show("提示", stringBuilder + "");
}
/// <summary>
/// MEPCurve过滤器
/// </summary>
public class MEPCurveFilter : ISelectionFilter
{
public bool AllowElement(Element elem)
{
if (elem is MEPCurve)
{
return true;
}
return false;
}
public bool AllowReference(Reference reference, XYZ position)
{
return true;
}
}