phpmysql网站开发全程实例 第2版,椒江网站制作,东莞市广建建设工程有限公司,wordpress 平台系列目录 【已更新最新开发文章#xff0c;点击查看详细】 本篇介绍如何从文件中检索空间结构。IFC中的空间结构表示层次结构的嵌套结构#xff0c;表示项目#xff0c;站点#xff0c;建筑物#xff0c;楼层和空间。如果您查看IFC文档#xff0c; 您会发现建筑物可以…系列目录 【已更新最新开发文章点击查看详细】 本篇介绍如何从文件中检索空间结构。IFC中的空间结构表示层次结构的嵌套结构表示项目站点建筑物楼层和空间。如果您查看IFC文档 您会发现建筑物可以包含楼层以及其他建筑物楼层可以包含空间以及其他楼层等。此类关系也使用IfcRelAggregates建模 但如果要查找特定空间结构中包含的元素则将其建模为 IfcRelContainedInSpatialStructure 因此它取决于您要查找的内容。下面的示例演示如何使用上述两种关系搜索和遍历数据以获得完整的层次结构。 using System;
using System.Linq;
using Xbim.Ifc;
using Xbim.Ifc4.Interfaces;namespace BasicExamples
{class SpatialStructureExample{public static void Show(){const string file SampleHouse.ifc;using (var model IfcStore.Open(file)){var project model.Instances.FirstOrDefaultIIfcProject();PrintHierarchy(project, 0);}}private static void PrintHierarchy(IIfcObjectDefinition o, int level){Console.WriteLine(string.Format({0}{1} [{2}], GetIndent(level), o.Name, o.GetType().Name));// 只有空间元素可以包含建筑元素var spatialElement o as IIfcSpatialStructureElement;if (spatialElement ! null){// 使用 IfcRelContainedInSpatialElement 获取包含的元素var containedElements spatialElement.ContainsElements.SelectMany(rel rel.RelatedElements);foreach (var element in containedElements)Console.WriteLine(string.Format({0} -{1} [{2}], GetIndent(level), element.Name, element.GetType().Name));}// 使用 IfcRelAggregares 获取空间结构元素的空间分解foreach (var item in o.IsDecomposedBy.SelectMany(r r.RelatedObjects))PrintHierarchy(item, level 1);}private static string GetIndent(int level){var indent ;for (int i 0; i level; i)indent ;return indent;}}
} 输出结果如下 Project Number [IfcProject]Default [IfcSite][IfcBuilding]Ground Floor [IfcBuildingStorey]-Basic Wall:Wall-Ext_102Bwk-75Ins-100LBlk-12P:285330 [IfcWall]-Basic Wall:Wall-Ext_102Bwk-75Ins-100LBlk-12P:285395 [IfcWall]-Basic Wall:Wall-Ext_102Bwk-75Ins-100LBlk-12P:285459 [IfcWall]-Curtain Wall:Curtain_Wall-Exterior_Glazing:285582 [IfcCurtainWall]-Curtain Wall:Curtain_Wall-Exterior_Glazing:285684 [IfcCurtainWall]-Basic Wall:Wall-Partn_12P-70MStd-12P:285792 [IfcWallStandardCase]-Basic Wall:Wall-Partn_12P-70MStd-12P:285846 [IfcWallStandardCase]-Doors_ExtDbl_Flush:1810x2110mm:285860 [IfcDoor]-Doors_IntSgl:810x2110mm:285959 [IfcDoor]-Doors_IntSgl:810x2110mm:285996 [IfcDoor]-Windows_Sgl_Plain:1810x1210mm:286105 [IfcWindow]-Windows_Sgl_Plain:1810x1210mm:286188 [IfcWindow]-Windows_Sgl_Plain:1810x1210mm:286238 [IfcWindow]-Compound Ceiling:Plain:286319 [IfcCovering]-Compound Ceiling:Plain:286329 [IfcCovering]-Compound Ceiling:Plain:286337 [IfcCovering]-Floor:Floor-Grnd-Susp_65Scr-80Ins-100Blk-75PC:286349 [IfcSlab]-Windows_Sgl_Plain:1810x1210mm:287567 [IfcWindow]1 - Living room [IfcSpace]-Furniture_Table_Dining_w-Chairs_Rectangular:2000x1000x750mm_w-6_Seats:289768 [IfcFurniture]-Chair - Dining:Chair - Dining:289769 [IfcFurniture]-Chair - Dining:Chair - Dining:289770 [IfcFurniture]-Chair - Dining:Chair - Dining:289771 [IfcFurniture]-Chair - Dining:Chair - Dining:289772 [IfcFurniture]-Chair - Dining:Chair - Dining:290097 [IfcFurniture]-Chair - Dining:Chair - Dining:290098 [IfcFurniture]-Furniture_Couch_Viper:2290x950x340mm:290852 [IfcFurniture]-Furniture_Chair_Viper:1120x940x350mm:291916 [IfcFurniture]-Furniture_Chair_Viper:1120x940x350mm:292127 [IfcFurniture]-Furniture_Table_Coffee_1:1200x550x450mm:293046 [IfcFurniture]-Furniture_Piano:1370x600x1170mm:293961 [IfcFurniture]2 - Bedroom [IfcSpace]-Furniture_Desk:1525x762mm:287689 [IfcFurniture]-Furniture_Bed_1:1525x2007x355mm-Queen:295878 [IfcFurniture]3 - Entrance hall [IfcSpace]Roof [IfcBuildingStorey]-Basic Roof:Roof_Flat-4Felt-150Ins-50Scr-150Conc-12Plr:286419 [IfcRoof]-Floor:Simple floor:295048 [IfcSlab]4 - Roof [IfcSpace] 系列目录 【已更新最新开发文章点击查看详细】 转载于:https://www.cnblogs.com/SavionZhang/p/10983394.html