Revit 二次开发之“通过连接器找到所属元素”
通过连接器找到所属元素。
[Transaction(TransactionMode.Automatic)]
[Regeneration(RegenerationOption.Automatic)]
public class GetElementByConnector : 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;
Reference refelem = sel.PickObject(ObjectType.Element, "请选择一个风管");
Duct duct = refelem.Element as Duct;//这里也可以是风道末端之类MEPSystem
ConnectorSetIterator csi = duct.ConnectorManager.Connectors.ForwardIterator();
Connector conn = null;
while (csi.MoveNext())
{
conn = csi.Current as Connector;
}
GetElementAtConnector(conn);
return Result.Succeeded;
}
public void GetElementAtConnector(Connector connector)
{
MEPSystem mepSystem = connector.MEPSystem;
//if (null != mepSystem)//加上这个判断风管不属于
if (true)
{
string message = "Connector is owned by:" + connector.Owner.Name;
if (connector.IsConnected == true)//是否连接其他,比如弯头
{
ConnectorSet connectorSet = connector.AllRefs;
ConnectorSetIterator csi = connectorSet.ForwardIterator();
while (csi.MoveNext())
{
Connector connected = csi.Current as Connector;
if (null != connected)
{
if (connected.ConnectorType == ConnectorType.EndConn ||
connected.ConnectorType == ConnectorType.CurveConn ||
connected.ConnectorType == ConnectorType.PhysicalConn)
{
message += "\nConnecotr is connected to:" + connected.Owner.Name;
message += "\nConnection type is:" + connected.ConnectorType;
}
}
}
}
else
{
message += "\nConnector is not connected to anything.";
}
MessageBox.Show(message, "Revit");
}
}
}
[Regeneration(RegenerationOption.Automatic)]
public class GetElementByConnector : 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;
Reference refelem = sel.PickObject(ObjectType.Element, "请选择一个风管");
Duct duct = refelem.Element as Duct;//这里也可以是风道末端之类MEPSystem
ConnectorSetIterator csi = duct.ConnectorManager.Connectors.ForwardIterator();
Connector conn = null;
while (csi.MoveNext())
{
conn = csi.Current as Connector;
}
GetElementAtConnector(conn);
return Result.Succeeded;
}
public void GetElementAtConnector(Connector connector)
{
MEPSystem mepSystem = connector.MEPSystem;
//if (null != mepSystem)//加上这个判断风管不属于
if (true)
{
string message = "Connector is owned by:" + connector.Owner.Name;
if (connector.IsConnected == true)//是否连接其他,比如弯头
{
ConnectorSet connectorSet = connector.AllRefs;
ConnectorSetIterator csi = connectorSet.ForwardIterator();
while (csi.MoveNext())
{
Connector connected = csi.Current as Connector;
if (null != connected)
{
if (connected.ConnectorType == ConnectorType.EndConn ||
connected.ConnectorType == ConnectorType.CurveConn ||
connected.ConnectorType == ConnectorType.PhysicalConn)
{
message += "\nConnecotr is connected to:" + connected.Owner.Name;
message += "\nConnection type is:" + connected.ConnectorType;
}
}
}
}
else
{
message += "\nConnector is not connected to anything.";
}
MessageBox.Show(message, "Revit");
}
}
}
end
我这个博客废弃不用了,今天想寻找外链的时候,突然想到这个博客权重很高。
有需要免费外链的,留言即可,我准备把这个博客变成免费的友情链接站点。