The harder you work the more luck you have

导航

统计

Revit二次开发系列教程02-如何在Revit中创建模型过程的理解

目录

01案例

02步骤讲解

03关键类理解

04总结

05源码地址


01案例

创建一个结构墙

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

namespace ExampleBasic
{
    [Transaction(TransactionMode.Manual)]
    [Regeneration(RegenerationOption.Manual)]
    public class CreateModelCommand : IExternalCommand
    {
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            try
            {
                var uiApp = commandData.Application;

                var uiDoc = uiApp.ActiveUIDocument;
                var doc = uiDoc.Document;

                //过滤获取文档中的标高集合
                var levelList = new FilteredElementCollector(doc).OfClass(typeof(Level)).OfType<Level>().ToList();

                //获取名称为标高 1的标高
                var myLevel = levelList.Find(x => x.Name == "标高 1");
                if (myLevel is null)
                {
                    TaskDialog.Show("提示", "未找到名称未标高 1的标高");
                    return Result.Failed;
                }

                //创建事务
                using (var host = new Transaction(doc, "create_model"))
                {
                    //开启事务
                    host.Start();

                    //创建墙体
                    var startPoint = new XYZ(10, 10, 0);

                    var endPoint = new XYZ(110, 110, 0);

                    var line = Line.CreateBound(startPoint, endPoint);

                    Wall.Create(doc, line, myLevel.Id, true);

                    //提交事务
                    host.Commit();
                }

                return Result.Succeeded;
            }
            catch (System.Exception ex)
            {
                TaskDialog.Show("发生异常", ex.Message);
                return Result.Failed;
            }
        }
    }
}

02步骤讲解

a)获取当前文档对象

b)首先通过元素过滤器获取标高集合

c)开启新的事务对象

d)创建一个结构墙

e)提交事务

03关键类理解

UIApplication

1.概念:表示Autodesk Revit用户界面的活动会话
2.作用:提供对UI自定义方法、事件、主窗口和活动文档的访问

UIDocument

1.概念:表示在Revit用户界面中打开的Autodesk Revit项目的对象
2.作用:提供对文档的访问

Document

1.概念:用于在Autodesk Revit项目中创建元素的新实例
2.作用:模型均位于文档中,用户通过文档来操作模型

Transaction

1.概念:事务对象,可以通过文档对象新建一个新的事务
2.作用:大部分在Revit的操作,只有通过事务才能提交到数据库,从而在文档中显示

Wall

1.概念:墙,分为结构墙和建筑墙
2.作用:提供墙实例的操作接口

04总结

  在Revit中创建一个实体的过程,先开启事务,将模型对应的对象创建好,最后提交事务,这样模型就能够通过文档来呈现在用户眼中;如有不正确的地方,欢迎大家的指正

05源码地址

https://gitee.com/jiangyong95/BlogRevit

posted on   jiangyong1995  阅读(72)  评论(0编辑  收藏  举报

点击右上角即可分享
微信分享提示