Revit API二次开发入门,完整学习流程,附源码
标签:
Revit二次开发入门 Revit二次开发的完整过程完整演示最简单命令Hello World
调试代码
命令类属性用法
输入输出参数含义
用addin文件加载外部命令
外部命令加载工具AddinManager
两种方式来扩展Revit的功能方式一:外部命令(External Command)
功能:添加一个Revit命令
描述:由用户点击按钮来启动命令
使用最频繁
方式二:外部应用(External Application)
功能:可以添加菜单和工具条,或其他初始化命令
描述:在启动和关闭Revit.exe时自动执行
一般会用到,用量不多
演示最简单外部命令功能:运行命令后,弹出消息框,显示Hello World
步骤:使用C#语言创建一个类库
演示
using Autodesk.Revit.DB; using Autodesk.Revit.UI; using Autodesk.Revit.ApplicationServices; using Autodesk.Revit.Attributes; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; namespace RevitDevTV { [Transaction(TransactionMode.Manual)] [Regeneration(RegenerationOption.Manual)] public class DevTVHelloWorld : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { MessageBox.Show("Hello World"); return Result.Succeeded; } } [Transaction(TransactionMode.Manual)] [Regeneration(RegenerationOption.Manual)] public class ArgumentUsage : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { //获取uiapp信息 UIApplication uiApp = commandData.Application; //获取文档级的application信息 Autodesk.Revit.ApplicationServices.Application app = uiApp.Application; //获取当前模型 Document doc = uiApp.ActiveUIDocument.Document; string strAppInfo = app.VersionBuild+";"+app.VersionName+";"+app.VersionNumber; //获取当前选择集 Autodesk.Revit.UI.Selection.Selection sel = uiApp.ActiveUIDocument.Selection; message = "当前选择集中包含如下对象"; //为了显示错误信息框,需要返回Failled return Result.Failed; } } }
跟踪调试Revit程序Revit运行时调试
方法:Tools->attach to process->Attach to Revit.exe
特点:可以随时在VS中Detach调试,此时Revit不退出,灵活方便,可以在Revit不退出的情况下调试多个程序
用Detach中断调试,继续修改代码,再次绑定来调试
演示
演示使用Execute的输入输出参数
获取Application对象,供本命令使用
读取版本信息
获取当前文档
返回提示字符串消息
返回选中对象,供用户
Execute参数解释public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
传入参数
ExternCommandData
由此获取应用程序对象和文档对象
传出参数
ref string:传出提示字符串,提示用户存在的问题
ElementSet:传出一个对象集合,用户可查看其中的对象
外部命令属性命令前面的两个属性:事务和更新属性
[Transaction(TransactionMode.**)]
[Regeneration(RegenerationOption.**)]
两种事务模式
自动事务模式:TransactionMode.Automatic
手工事务模式:TransactionMode.Manual
创建外部应用演示实现的功能
在Revit启动时,弹出对话框
在Revit退出时,弹出一个对话框
实现类:IExternalApplication接口派生
实现OnStartup()和OnShutdown()方法
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/43529.html