[Revit二次开发] 计算几何实体的面积和体积

项目完整代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.Attributes;

namespace SolidPractise
{
    [TransactionAttribute(TransactionMode.Manual)]
    [RegenerationAttribute(RegenerationOption.Manual)]
    public class Class1 : IExternalCommand
    {
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            UIDocument uidoc = commandData.Application.ActiveUIDocument;//UIDocument:代表在Revit用户界面中打开的Autodesk Revit项目的对象。
            Autodesk.Revit.DB.Document revitDoc = uidoc.Document;//Document:表示打开的Autodesk Revit项目的对象
            ICollection<ElementId> ids = uidoc.Selection.GetElementIds();//ICollection:元素Id收集器
            Element selElem = uidoc.Document.GetElement(ids.First());//获取第一个元素
            GeometryElement ge = selElem.get_Geometry(new Options());

            double area = 0;//定义几何面积
            double volume = 0;//定义几何体积
            int triangleCount = 0; //三角网格数

            foreach(GeometryObject gObj in ge) //遍历集合ge中每一个元素
            {
                if(gObj is Solid) //如果元素gObj是实体
                {
                    Solid sd = gObj as Solid; //将gObj转换成实体
                    foreach(Face face in sd.Faces)  //遍历sd.Faces中每一个面
                    {
                        area += face.Area * 0.3048 * 0.3048;//Revit中的单位是英尺,需进行单位转换
                        Mesh mesh = face.Triangulate(0.5);
                        triangleCount += mesh.NumTriangles; //计算三角网格数
                    }
                    volume += sd.Volume * 0.3048 * 0.3048 * 0.3048;
                }
            }

            TaskDialog.Show("计算", "面积总和为" + area.ToString() + "平方米" + "\n"
                + "体积为" + volume.ToString("0.000") + "立方米" + "\n"
                + "三角网格数为" + triangleCount.ToString());


            return Result.Succeeded;
        }
    }

}

效果:
在Revit中画一道墙,点击选中此道墙,加载应用程序:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值