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");
        }
    }
}

end

posted @ 2011-04-05 15:41  大气象  阅读(1188)  评论(0编辑  收藏  举报
http://www.tianqiweiqi.com