IfcFile 中所有不同 IfcEntities 的列表
List of all different IfcEntities in IfcFile
总结
- 我有一个 ifc 文件,其中包含不同的 IfcEntities,例如 IfcWall、IfcBeam、IfcColumn 等
- 我正在努力寻找一种方法来列出此 ifc 文件中的所有不同实体
- 列表应该只包含每个 ifcentity 出现一次 {"IfcWall", "IfcColumn", "IfcBeam", ...}
- 还调试了代码以查看是否有任何 属性 包含我正在搜索的值
我的代码:
- 我已经使用了 xbim Essential 快速入门指南
- 也用谷歌搜索
- 查看了 github
上的问题
using (var model = IfcStore.Open(_FilePath))
{
var allInstances = model.Instances;
var testList = model.Instances.OfType<IIfcBuildingElement>();
var nameList = new List<string>();
var objTypeList = new List<string>();
foreach (var item in testList)
{
var objType = item.IsTypedBy;
var firstObjType = objType.ElementAt(0);
var relType = firstObjType.RelatingType;
var name = item.Name;
nameList.Add(name);
}
}
我的期望:
- 包含所有 IfcEntities 的简单列表
- 喜欢{“IfcWall”、“IfcColumn”、“IfcBeam”、...}
非常感谢任何帮助
感谢@martin1cerny
答案很简单:
var testList = model.Instances.OfType<IIfcBuildingElement>().GroupBy(e => e.GetType());
总结
- 我有一个 ifc 文件,其中包含不同的 IfcEntities,例如 IfcWall、IfcBeam、IfcColumn 等
- 我正在努力寻找一种方法来列出此 ifc 文件中的所有不同实体
- 列表应该只包含每个 ifcentity 出现一次 {"IfcWall", "IfcColumn", "IfcBeam", ...}
- 还调试了代码以查看是否有任何 属性 包含我正在搜索的值
我的代码:
- 我已经使用了 xbim Essential 快速入门指南
- 也用谷歌搜索
- 查看了 github 上的问题
using (var model = IfcStore.Open(_FilePath))
{
var allInstances = model.Instances;
var testList = model.Instances.OfType<IIfcBuildingElement>();
var nameList = new List<string>();
var objTypeList = new List<string>();
foreach (var item in testList)
{
var objType = item.IsTypedBy;
var firstObjType = objType.ElementAt(0);
var relType = firstObjType.RelatingType;
var name = item.Name;
nameList.Add(name);
}
}
我的期望:
- 包含所有 IfcEntities 的简单列表
- 喜欢{“IfcWall”、“IfcColumn”、“IfcBeam”、...}
非常感谢任何帮助
感谢@martin1cerny
答案很简单:
var testList = model.Instances.OfType<IIfcBuildingElement>().GroupBy(e => e.GetType());