connect获取

来源:互联网 发布:usb打印机端口不打印 编辑:程序博客网 时间:2024/05/22 17:47

Revit二次开发之获取构件Connector

(2017-06-08 15:50:09)
标签:

365

分类: Revit二次开发
1.Revit二次开发公用专业中的管道,风管,桥架,导线等系统族 要想获取它的连接件 需要将其转化为MEPCurve

      如:  UIApplication uiapp = commandData.Application;
            UIDocument uidoc = uiapp.ActiveUIDocument;
            Document doc = uiapp.ActiveUIDocument.Document;
            Reference refer = uidoc.Selection.PickObject(ObjectType.Element);
            Element elem = doc.GetElement(refer);
            //管道
            Pipe pipe = elem as Pipe;
            //风管
            Duct duct = elem as Duct;
            //桥架
            CableTray cabletray = elem as CableTray;
            //导线
            Wire wire = elem as Wire;

再转化为MEPCurve,然后就可以获取和设置目标连接件(Connector),也可直接由Element直接转换
       转换过程如下:

            //MEPCurve mep = pipe as MEPCurve;
            MEPCurve mep = elem as MEPCurve ;            
            ConnectorSetIteratorSetIterator=mep.ConnectorManager.Connectors.ForwardIterator ();           
            while (SetIterator.MoveNext ())     
           
  
               Connector connector = SetIterator.Current as Connector;    
           

2.要想获取公用专业标准族实例(如管件,设备等),需要将标准族实例转化为MEPModel
      
 
       如: UIApplication uiapp = commandData.Application;
            UIDocument uidoc = uiapp.ActiveUIDocument;
            Document doc = uiapp.ActiveUIDocument.Document;
            Reference refer = uidoc.Selection.PickObject(ObjectType.Element);
            Element elem = doc.GetElement(refer);
            //必须将Element 转化到FamilyInstance级别
            FamilyInstance instance = elem as FamilyInstance;
            MEPModel model = instance.MEPModel as MEPModel;
            ConnectorSetIterator set = model.ConnectorManager.Connectors.ForwardIterator();
            while (set.MoveNext())
            {

                Connector co = set.Current as Connector;

            }  
3.获取连接件上连接的所有连接件

        如:ConnectorSetIterator connectorSetIterator = connector.AllRefs.ForwardIterator();            
            while (connectorSetIterator.MoveNext())  
           
              Connector connref = connectorSetIterator.Current as Connector;  
           }    
4.连接件几个重要的属性方法
              Connector.Owner获得宿主,Connector.Origin获得坐标 , ConnectTo()方法连接两个connectors