我正在使用XBim国际金融公司的库,以获得一些关于建筑模型元素的信息。特别是IfcWall实体。
我必须获得墙基数量(长、高、宽等)。但我无法从IfcWall类中获得这些属性。
我有一节课:
using Dapper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xbim.Ifc;
using Xbim.Ifc4.ActorResource;
using Xbim.Ifc4.DateTimeResource;
using Xbim.Ifc4.ExternalReferenceResource;
using Xbim.Ifc4.PresentationOrganizationResource;
using Xbim.Ifc4.GeometricConstraintResource;
using Xbim.Ifc4.GeometricModelResource;
using Xbim.Ifc4.GeometryResource;
using Xbim.Ifc4.Interfaces;
using Xbim.Ifc4.Kernel;
using Xbim.Ifc4.MaterialResource;
using Xbim.Ifc4.MeasureResource;
using Xbim.Ifc4.ProductExtension;
using Xbim.Ifc4.ProfileResource;
using Xbim.Ifc4.PropertyResource;
using Xbim.Ifc4.QuantityResource;
using Xbim.Ifc4.RepresentationResource;
using Xbim.Ifc4.SharedBldgElements;
namespace ProcesadorPremoldeado.IFC
{
public class IFCCalculos
{
public void CalculoPlacas(string fileName, XbimEditorCredentials editor)
{
using (var model = IfcStore.Open(fileName, editor))
{
using (var transaction = model.BeginTransaction("Quick start transaction"))
{
//get all Walls in the model
var ifcWallsList = model.Instances.OfType<IfcWall>();
foreach (var wall in ifcWallsList)
{
var prop = wall.PhysicalSimpleQuantities.Where(x=>x.Name=="Height");
}
transaction.Commit();
}
}
}
}
}该lambda表达式返回一行,并根据Name参数正确筛选,因为此属性是可访问的。但是我无法访问属性调用"LengthValue",奇怪的是,如果我在foreach循环中放置一个断点,在"prop“列表下,该属性在debbugin期间是可见的。
谁能让我知道会发生什么?提前感谢!
发布于 2022-10-13 10:27:03
这是因为LengthValue是IfcQuantityLength的一个属性,但是PhysicalSimpleQuantities是超级类型的IfcPhysicalQuantity。只需选择正确类型的数量即可。
var height = wall.PhysicalSimpleQuantities
.OfType<IfcQuantityLength>()
.Where(x=>x.Name=="Height")?
.LengthValue;https://stackoverflow.com/questions/73264156
复制相似问题