资讯详情

Revit MEP中Connector连接器的问题

在Revit在二次开发中,管道系统模块多于土建模块,每个机电管件与管道之间的连接由Connector控制将整个管道系统串联起来 如果在LookUp可以看到中点管可以分为ConnectorManagement 与 All Refs两个类都存储在里面Connector,刚接触的人可能会觉得很乱

如果我们从喷淋开始依次查询所有的交叉管道,我们可以得到每个管道Connector的All Refs进入Connector之后获取Owner然后进入相应的构件Management从而获得所有构件连接器。 简单来说All Refs存储外部连接器,即与管道相连的管件信息,Management存储本身Connector根据设置的数量而有所不同。

如果是终端关键,点击All Refs将会由两个Connector其中一个方向Piping System筛选中需要排除。

/// <summary>         /// 它将过滤指定喷雾下的管道和第一个三通或弯头         /// <remarks>弯头连接的第二管的向量值作为旋转轴         /// 喷淋系统中只有管道和Instance类型,instance包括管件和喷嘴</remarks>         /// </summary>         public void GetConnectors(Element fit, MepNode node)         {             bool baseIterator = true;             //1.进入Management获得Set             ConnectorSet set = new ConnectorSet();             if (fit is FamilyInstance ins)             {                 //fitting                 set = ins.MEPModel.ConnectorManager.Connectors;             }             else             {                 var pipe = fit as Pipe;                 set = pipe?.ConnectorManager.Connectors;                 var lc = pipe.Location as LocationCurve;                 var dir = (lc.Curve as Line).Direction;                 if (node.Vector is null) node.Vector = dir;                 if (node.Vector.DotProduct(dir) < 0.002)                 {                     _pipe = pipe;                     baseIterator = false;                 }             }              if (baseIterator)             {                 node.Next = new MepNode(fit);                 node.Next.Vector = node.Vector;                 //在这种情况下,除了喷洒,还有两个Connector指向连接的两端                 //如果只有一个入口,另一个指向管道系统                 foreach (var s in set)                 {                     var connector = s as Connector;                     ///排除是管道系统的情况                     //此时查找与喷淋底部Connector连接的Connector                     var allRefs = connector.AllRefs;                     foreach (var allRef in allRefs)                     {                         var rf = allRef as Connector;                         var ele = rf.Owner;                         if (ele.Id != fit.Id && ele.GetType() != typeof(PipingSystem))                         {                             node.Next.Connectors.Add(rf);                             if (node.Instance is null)                             {                                 GetConnectors(ele, node.Next);                             }                             else                             {                                 if (rf.Owner.Id == node.Instance.Id) continue;                                 GetConnectors(ele, node.Next);                             }                         }                     }                  }             }           } 

标签: 管件用连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台