一、本节课程
C# Revit二次开发基础/核心编程--- Application\Document\Transaction
二、本节要讲解的知识点
Application\Document\Transaction 和其例子
- 具体内容
- Application\Document的概念
Revit和Mcirosoft Office一样,使用多文档模型,在Revit API的类结构中,应用类和文档类处于最顶层的。他们分为Application、UIApplication、Document、UIDocument这几大类。
- 一个Revit应用对象对应一个独立的Revit会话。用户可以通过这个对象访问Revit文档,选项以及其他应用范围的数据和设置。
1) Autodesk.Revit.UI.UIApplication:提供访问UI级别接口的应用类,包括访问用户界面RibbonPanels、获得用户界面活动文档等能力。
2)Autodesk.Revit.ApplicationServices.Application:提供了访问其他应用级别内容接口的应用类。
public Result Execute(ExternalCommandData revit, ref string message, ElementSet elements) { Autodesk.Revit.UI.UIApplication uiApp = revit.Application; Autodesk.Revit.ApplicationServices.Application app = uiApp.Application; Autodesk.Revit.UI.UIDocument uiDoc = uiApp.ActiveUIDocument; Autodesk.Revit.DB.Document doc = uiDoc.Document; |
3) Revit版本及产品信息:Revit的Application对象包括了以下的Revit版本及产品信息,他们可以为插件提供Revit的发布信息。
public string VersionBuild { get; }
public string VersionName { get; }
public string VersionNumber { get; }
public string SubVersionNumber { get; }
public ProductType Product { get; }
public LanguageType Language { get; }
public void GetVersionInfo(Autodesk.Revit.ApplicationServices.Application app) { if(app.VersionNumber=="2018") { TaskDialog.Show("Supported Version", "2018 OK"); } else { TaskDialog dialog = new TaskDialog("Unsupported version."); dialog.MainIcon = TaskDialogIcon.TaskDialogIconWarning; dialog.MainInstruction = "This application is only supported in revit 2018"; dialog.Show(); } } |
4) 共享参数管理:Revit提供了共享参数机制,Application类中的OpenSharedParameterFile()方法可以用来访问共享参数文件。Application类中的SharedParametersFilename属性提供了共享参数文件的名称。
5)插件管理:UIApplication类提供的ActiveAddInId用来获取当前活跃的外部应用或者外部命令的ID。同时UIApplication类也提供了LoadedApplications属性来返回一个成功加载插件的列表。
6)UI扩展:UIApplication提供了创建自定义Ribbon面板和控件的方法。
- 一个Revit文档对象对应一个独立的Revit工程文件。Revit可以同时有多个工程文件打开,每个工程可以同时有多个视图。
Autodesk.Revit.UI.UIDocument:提供访问UI级别接口的文档类,比如提供Selection来表示用户界面的选择集。
Autodesk.Revit.DB.Document:提供访问其他文档基本内容的文档类。
- Document用于表示打开的Autodesk Revit工程。Revit可以同时有多个工程打开,即同时拥有多个Document对象。Document对象用于存储Revit元素、管理视图和数据。Document类主要提供获取管理元素、文件管理等功能。
2)位置和场地:SiteLocation
public class SiteLocation : ElementType { public double Elevation { get; } public string GeoCoordinateSystemDefinition { get; } public string GeoCoordinateSystemId { get; } public double Latitude { get; set; } public double Longitude { get |