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源码地址
posted on 2023-05-31 22:09 jiangyong1995 阅读(72) 评论(0) 编辑 收藏 举报
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步