首页 > 其他分享 >Revit二次开发系列教程01-如何在Revit中创建模型过程的理解

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

时间:2023-05-31 22:24:50浏览次数:48  
标签:事务 01 Autodesk 标高 var 文档 二次开发 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

标签:事务,01,Autodesk,标高,var,文档,二次开发,Revit
From: https://www.cnblogs.com/looufly/p/17447488.html

相关文章

  • qt5.15.9 静态编译 msvc 2017
    软件准备:VisualStudio2017ActivePerlPythonopenssl1.1以上版本QT5.15.9源码: https://download.qt.io/archive/qt/5.15/5.15.9/single/ 第一步命令:D:\qt-everywhere-src-5.15.9>configure.bat-prefixD:\Qt\Qt5.15.9-static-static-static-runtime-confirm-li......
  • Day 01
    hyperparameters超参数GradientDescent  梯度下降算法先选一个初始的参数,W、b,计算θ0对你的lossfunction的Gradient,也就是计算每一个network里面的参数,w1、w2、b1、b2......等等。对你的L(θ0)的偏微分,计算出这个东西之后,这个gradient其实是一个vector(向量),......
  • atcoder mujin_pc_2017_d
    link。我们注意到这个条件其实不是十分好dp,通常而言的另一个方向就是尝试寻找条件的等价形式。我们先考虑较简介的情况:直径\(L\)上边数为偶。显然\(D=\frac{L}{2}\)。在\(u\rightarrowv\)路径上,我们注意到两种边的和一定,比较自然的想法是知道它们的差,然后\(\max(x,y)=s......
  • 解决方案 | Windows 验证账号出现 0x80190001错误解决
    一、问题描述点击windows开始→账户→更改账户设置→验证,出现下面的错误。 二、解决方法网上流行的是这个方法,https://blog.csdn.net/qq_36393978/article/details/107413791 ,但是这个其实是恢复网络刷新dns的方法,大家可试一试。 如果不行,试试下面的方法,在任务栏搜索框......
  • ltp(六) IRQ之irqbalance01.c源码分析
    前言      本篇文章主要是为了对ltp内irq模块的测试用例之一的irqbalance进行源码分析,作为对内核中断子系统测试项之一,其蕴含的技术知识,还是很值得学习一下的。     irqbalance是什么?项目主页上有以下描述:Irqbalanceisadaemontohelpbalancethecpuload......
  • CODE FESTIVAL 2016 qual C
    你说的对,但是我觉得应该先把qualC写完再去学什么东西。CFcodeforces.#include<cstdio>#include<algorithm>#include<cstring>#include<queue>#include<iostream>usingnamespacestd;intn;chars[110];intmain(){scanf("%s",s+1)......
  • HDU1016(DFS)
    题目:PrimeRingProblem #include<stdio.h>#include<string.h>#defineN105intn;inta[25];boolvisited[25];boolprime[N];voidisprime(){inti,j;memset(prime,true,sizeof(prime));for(i=2;i<N;i++){for(j=i+......
  • 01背包问题
    问题描述: 给定n种物品和一背包的容量m,物品i的重量是c[i],其价值是w[i],问如何选择装入背包中的物品总价值最大?每种物品一件,可以选择放或不放。  分析:dp[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:  这个方程非常重要,基本上所有跟背包......
  • Snap算法学习01-02关于net节点、边、权值、标签的读写操作——netinf中cascades层级信
      Model可选值—— 0:exponential,  1:powerlaw,  2:rayleigh"                                      ......
  • git 使用ssh连接Github:017
    1.首先打开GitBash终端,生成私钥和公钥:ssh-kengen第一步提示:生成的密钥你要放在哪里?这里有给出默认地址,当然你也可以自己设置一个地址,如果不设置,直接回车就行 第二步提示:你要不要给你当前的密钥去设置一个密码?其实这一步没必要去设置,回车就行 第三步提示:提示你输入确认......