首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择IFC墙体的物理简单量

选择IFC墙体的物理简单量
EN

Stack Overflow用户
提问于 2022-08-07 00:33:47
回答 1查看 76关注 0票数 0

我正在使用XBim国际金融公司的库,以获得一些关于建筑模型元素的信息。特别是IfcWall实体。

我必须获得墙基数量(长、高、宽等)。但我无法从IfcWall类中获得这些属性。

我有一节课:

代码语言:javascript
复制
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期间是可见的。

谁能让我知道会发生什么?提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2022-10-13 10:27:03

这是因为LengthValueIfcQuantityLength的一个属性,但是PhysicalSimpleQuantities是超级类型的IfcPhysicalQuantity。只需选择正确类型的数量即可。

代码语言:javascript
复制
var height = wall.PhysicalSimpleQuantities
    .OfType<IfcQuantityLength>()
    .Where(x=>x.Name=="Height")?
    .LengthValue;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73264156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档