功能大概就是检测项目中的元素(包括链接文件中的构件)是否冲突
大致思路:
1、先获取到链接文件中所有构件转换后的solid,转化后的solid就可以直接和项目中的元素做检测了
2、获取要对比的元素所有边、面、solid
3、如果元素有边:用边和solid做检测,如没检测到还需面和边做检测; 如果元素没有边:用面和面做检测
----------------------------------------------------------------------
过滤链接文件内部构件
//key:链接文件id value:内部构件id
Dictionary<ElementId,List<ElementId>> m_dicLinkIns;
//过滤链接文件
FilteredElementCollector fecLinks = new FilteredElementCollector(doc);
List<Element> lstElem = fecLinks.ofClass(typeof(RevitLinkInstance)).ToElements().ToList();
//过滤内部构件
foreach(Element elem in lstElem)
{
RevitLinkInstance rvtLinkIns = elem as RevitLinkInstance;
if(rvtLinkIns == null) continue;
//得到链接文件文档
Document linkDoc = rvtLinkIns.GetLinkDocument();
if(linkDoc == null) continue;
FilteredElementCollector fecLinkElems = new FilteredElementCollector;
ElementClassFilter insFilter = new ElementClassFilter (typeof(F

本文介绍了一种检测Revit项目中链接文件及其内部构件与项目元素之间冲突的方法。通过获取链接文件中构件的solid并转换,进而检测实体间的碰撞。具体步骤包括过滤链接文件及其内部构件、获取solid及面边信息、实现碰撞检测等。
最低0.47元/天 解锁文章
947





