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