首页 Revit二次开发

Revit二次开发

举报
开通vip

Revit二次开发 Revit 2011 API DevTV 1Copyright © 2010 Autodesk Inc. Revit 2011 API DevTV 2Copyright © 2010 Autodesk Inc. 关于讲师 叶雄进 Joe Ye       Joe.Ye@autodesk.com ƒ Developer Consultant ƒ ADN  DevTech 部门 ƒ 3年软件开发咨询 ƒ 5年工程软件研发 ƒ 支持APIs ƒ Revit Architecture/Structure/...

Revit二次开发
Revit 2011 API DevTV 1Copyright © 2010 Autodesk Inc. Revit 2011 API DevTV 2Copyright © 2010 Autodesk Inc. 关于讲师 叶雄进 Joe Ye       Joe.Ye@autodesk.com ƒ Developer Consultant ƒ ADN  DevTech 部门 ƒ 3年软件开发咨询 ƒ 5年 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 软件研发 ƒ 支持APIs ƒ Revit Architecture/Structure/MEP ƒ AutoCAD Architecture ƒ AutoCAD Revit 2011 API DevTV 3Copyright © 2010 Autodesk Inc. 目标和要求 目标 ƒ 掌握Revit二次开发所需条件 ƒ 掌握开发完整流程。 ƒ 了解Revit二次开发基本技术 需具备知识 ƒ 了解Revit Architecture产品 ƒ 初步了解.NET开发语言(C#/VB.NET) Revit 2011 API DevTV 4Copyright © 2010 Autodesk Inc. 首字母缩写含义对照 ƒ ADN Autodesk Developer Network ƒ AEC Architecture, Engineering, Construction ƒ API Application Programming Interface ƒ BIM Building Information Model ƒ GUI Graphical User Interface ƒ MEP Mechanical, Electrical, Plumbing ƒ RAC Revit Architecture ƒ RME Revit MEP ƒ RST Revit Structure ƒ SDK Software Development Kit ƒ UI User Interface ƒIntroduction Revit 2011 API DevTV 5Copyright © 2010 Autodesk Inc. Revit API 培训提纲 ¾ Revit 二次开发入门 ƒ Revit 二次开发的完整过程 ƒ 遍历Revit内部对象 ƒ 过滤器的使用 ƒ 访问和编辑对象的参数 ƒ 调试工具RevitLookup ƒ 深入学习Revit编程 Revit 2011 API DevTV 6Copyright © 2010 Autodesk Inc. Revit 二次开发所需条件 三个条件: ƒ Revit 产品 ƒ Revit SDK ƒ Visual Studio 2008 二次开发入门 Revit 2011 API DevTV 7Copyright © 2010 Autodesk Inc. Revit 产品情况 Revit三个系列产品 ƒ Revit Architecture , 用于建筑 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 ƒ Revit Structure  , 用来建立结构模型 ƒ Revit MEP(Mechanical, Electrical, Plumbing), 用于建筑设备设计 如何获得软件安装包 ƒ DVD 版本在ADN网站可以获得 ƒ Software & Support > Revit > Downloads ƒ 现可下载中文版Revit 2011 产品 ƒ 在Autodesk网站可以下载 ƒ Products > Revit Architecture, MEP, Structure > Product Download ƒ 下载最新的软件 ƒ 具有独立的Server Pack,在已经安装的软件上更新。 二次开发入门 Revit 2011 API DevTV 8Copyright © 2010 Autodesk Inc. Revit SDK 获取Revit SDK途径 ƒ 产品安装包/安装光盘中有SDK ƒ ..\support\SDK\RevitSDK.zip, 在安装光盘中搜索“SDK”可找到 ƒ ADN网站 ƒ Software & Support > Revit > Downloads ƒ链接 http://adn.autodesk.com/adn/servlet/index?siteID=4814862&id=5017413&linkID=49 01650 ƒ Autodesk网站最新下载 ƒ http://www.autodesk.com/developer ‐‐>Products & Technologies‐‐> Revit ƒ http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=2484975 ƒI二次开发概览 Revit 2011 API DevTV 9Copyright © 2010 Autodesk Inc. Revit API 开发工具和语言 两种开发工具 ƒ Visual Studio ƒ 条件 ƒMicrosoft Visual Studio 2008 ƒMicrosoft .NET Framework 3.5 ƒ语言:C# 、VB.NET、Managed C++ ƒ引用接口组件文件 RevitAPI.DLL, RevitAPIUI.dll 存放 目录 工贸企业有限空间作业目录特种设备作业人员作业种类与目录特种设备作业人员目录1类医疗器械目录高值医用耗材参考目录 :“[Revit XXX ver]\Program\ ƒ三个产品拥有相同的接口定义文件(RevitAPI.DLL,RevitAPIUI.DLL) ƒVSTA (Visual Studio Tools for Application) ƒ使用Revit自带的开发环境 ƒ用C#,VB.Net语法 ƒ生成宏 Revit二次开发概览 Revit 2011 API DevTV 10Copyright © 2010 Autodesk Inc. Revit API 培训提纲 ƒ Revit 二次开发入门 ƒ Revit 二次开发的完整过程 ƒ 完整演示最简单命令Hello World ƒ 调试代码 ƒ 命令类属性用法 ƒ 输入输出参数含义 ƒ 用addin文件加载外部命令 ƒ 外部命令加载工具AddinManager ƒ 访问Revit内部对象 ƒ Revit数据库对象 ƒ 访问和编辑对象的参数 ƒ 调试工具RevitLookup ƒ 深入学习Revit编程 Revit 2011 API DevTV 11Copyright © 2010 Autodesk Inc. 用 Visual Studio 开发Revit 两种方式来扩展Revit的功能 ƒ 方式一:外部命令(External Command) ƒ 功能:添加一个Revit命令 ƒ 描述:    由用户点击按钮来启动命令 ƒ 使用最频繁 ƒ 方式二:外部应用(External Application) ƒ 功能:可以添加菜单和工具条,或其它初始化命令 ƒ 描述:在启动和关闭Revit.exe时自动执行 ƒ 一般会用到,用量不多 Revit 二次开发的完整过程 Revit 2011 API DevTV 12Copyright © 2010 Autodesk Inc. 演示最简单外部命令 功能:运行命令后,弹出消息框,显示Hello World Revit 二次开发的完整过程 Revit 2011 API DevTV 13Copyright © 2010 Autodesk Inc. 创建外部命令步骤 1. 新建一个类库/Class Library 工程 2. 引用Revit接口定义文件RevitAPI.DLL 和 RevitAPIUI.DLL ƒ 将Copy Local 属性设置为False 3. 命名空间引用,如: ƒ using Autodesk.Revit; ƒ using Autodesk.Revit.DB; ƒ using Autodesk.Revit.UI; ƒ … 4. 为命令类加属性 ƒ [Transaction(TransactionMode.Automatic)] ƒ [Regeneration(RegenerationOption.Automatic)] 5. 新建类从IExternalCommand派生 6. 重载Execute() 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 7. 在Execute中添加代码来实现命令功能 Revit 二次开发的完整过程 Revit 2011 API DevTV 14Copyright © 2010 Autodesk Inc. 跟踪调试Revit程序 Revit 运行时调试 ƒ 方法:Tools‐>attach to process‐>Attach to Revit.exe  ƒ 特点:可以随时在VS中Detach调试,此时Revit不退出,灵活方便. 可以在 Revit不退出的情况下调试多个程序 ƒ 用 Detach中断调试,继续修改代码,再次绑定来调试 技巧: ƒ 需要选择托管方式调试 从Visual Studio中启动Revit调试 ƒ 方法: project properties‐>Debug‐>Start external program ƒ 特点: 结束调试时, Revit退出. Revit 二次开发的完整过程 Revit 2011 API DevTV 15Copyright © 2010 Autodesk Inc. Execute 参数应用 演示使用Execute的输入输出参数 ƒ 获取Application对象,供本命令使用 ƒ 读取版本信息 ƒ 获取当前文档 ƒ …… ƒ 返回提示字符串消息 ƒ 返回选中对象,供用户 Revit 2011 API DevTV 16Copyright © 2010 Autodesk Inc. Execute参数解释 public IExternalCommand.Result Execute( ExternalCommandData commandData, ref string message, ElementSet elements ) ƒ 传入参数 ƒ ExternCommandData ƒ 由此获取应用程序对象和文档对象 ƒ 传出参数 ƒ ref string: ƒ 传出提示字符串,提示用户存在的问题 ƒ ElementSet ƒ 传出一个对象集合,用户可查看其中的对象 Revit 二次开发的完整过程 Revit 2011 API DevTV 17Copyright © 2010 Autodesk Inc. 外部命令属性 命令前面的两个属性:事务和更新属性 ƒ [Transaction(TransactionMode.**)] ƒ [Regeneration(RegenerationOption.**)] 两种事务模式 ƒ 自动事务模式:TransactionMode.Automatic ƒ 手工事务模式:TransactionMode.Manual 两种模型更新选项 自动更新模式:RegenerationOption.Automatic 手工事务模式[Regeneration(RegenerationOption.Manual)] Revit 2011 API DevTV 18Copyright © 2010 Autodesk Inc. 方式2:创建外部应用演示 实现的功能 ƒ 在Revit启动时,弹出对话框 ƒ 在Revit退出时,弹出一个对话框 Revit 2011 API DevTV 19Copyright © 2010 Autodesk Inc. 添加外部应用步骤 ƒ步骤与外部命令相似 ƒ不同: ƒ新建类从IExternalApplication接口派生 ƒ实现 OnStartup() and OnShutdown() 方法 public class App : IExternalApplication  { public IExternalApplication.Result OnStartup( ControlledApplication application  { CreateRibbonSamplePanel(application); CreateRibbonInfosPanel(application);     return IExternalApplication.Result.Succeeded; } public IExternalApplication.Result OnShutdown( ControlledApplication application ) {    return IExternalApplication.Result.Succeeded; } } Revit 二次开发的完整过程 Revit 2011 API DevTV 20Copyright © 2010 Autodesk Inc. 命令加载 方式一: 通过addin文件 ƒ *.addin 文件 ƒ可用任意文件名,只要扩展名是addin即可 ƒ只能存放在指定的目录中 ƒ C:\Documents and Settings\All Users\Application  Data\Autodesk\REVIT\Addins\201* ƒ在该文件夹下可有多个*.addin文件并存,Revit依次加载其中设置的加载项目 External Tool C:\SDK\RevitLookup\CS\bin\Debug\RevitLookup.dll 9631d07b‐ade1‐4ea1‐b566‐049161afcc4c RvtMgdDbg.App Revit 2011 API DevTV 21Copyright © 2010 Autodesk Inc. 命令加载 方式二:通过Revit.ini文件 ƒ Revit.ini 文件 ƒ该文件位于产品安装目录的Program子文件夹中 ƒ可以加载外部命令和外部应用 ƒ在2012中,不再支持这个方法 [ExternalApplications] EACount=2 EAClassName1=RvtMgdDbg.App EAAssembly1=C:\a\lib\revit\2011\SDK\RevitLookup\CS\bin\Debug\RevitLookup.dll EAClassName2=RvtSamples.Application EAAssembly2=C:\a\lib\revit\2011\SDK\Samples\RvtSamples\CS\RvtSamples.dll Revit 2011 API DevTV 22Copyright © 2010 Autodesk Inc. 加载工具 AddinManager ƒ 加载和卸载用户的程序 ƒ 加载后, 立即可以运行 ƒ 无需手工编辑addin文件 ƒ 自动保存加载命令 ƒ 修改代码编译后立即再次运行命令 ƒ 包含在SDK中,需预先安装 Revit 2011 API DevTV 23Copyright © 2010 Autodesk Inc. Revit API 培训导航 ƒ Revit 二次开发概览 ƒ Revit 二次开发的完整过程 ƒ Revit 数据库对象 ƒ 访问Revit对象 ƒ 访问和编辑对象的参数 ƒ 调试工具RevitLookup ƒ 深入学习Revit编程 Revit 2011 API DevTV 24Copyright © 2010 Autodesk Inc. Revit对象分类 ƒElements Collection Revit 2011 API DevTV 25Copyright © 2010 Autodesk Inc. Revit数据库对象的基本特点 构件类型,即构件定义 ƒ 存储在数据库中,作为插入到建筑模型中的对象的模板使用。在建筑 模型中不可见。 ƒ 把相同的数据只保存一份 ƒ 一个定义,多次使用。 ƒ 例如: 柱类型 构件实例 ƒ 已经插入到建筑模型中,在视图中可见。 ƒ 是构件定义的引用,如果构件定义改变,实例跟着改变 ƒ 例如:插入到建筑模型中的柱。 Revit 2011 API DevTV 26Copyright © 2010 Autodesk Inc. 常用类继承关系图 API Object Element HostObject HostObject Attributes Insertable Object Family Symbol Group Type Floor Type Cont. Footing Type Wall Type Wall Floor Clg. & Flr Cont. Footing RoofBase Family Base Symbol Family Instance Insertable Instance Family Instance Group ƒElements Collection Revit 2011 API DevTV 27Copyright © 2010 Autodesk Inc. Revit API 培训导航 ƒ Revit 二次开发概览 ƒ Revit 二次开发的完整过程 ƒ Revit数据库对象 ƒ 访问Revit对象 ƒ 对象过滤 ƒ 对象属性读取 ƒ 对象的类型 ƒ 类型和类别过滤 ƒ 访问和编辑对象的参数 ƒ 调试工具RevitLookup ƒ 深入学习Revit编程 Revit 2011 API DevTV 28Copyright © 2010 Autodesk Inc. Revit对象过滤 2011版提供新的对象过滤方法 找出符合条件的对象集合 ƒ 找出模型中窗户的数量 ƒ 找出第一层有多少个窗户 Revit 2011 API DevTV 29Copyright © 2010 Autodesk Inc. FilteredElementCollector用法 直接添加过滤条件 ƒ OfCategory ƒ OfCategoryId ƒ OfClass 过滤器 ƒ 使用单一过滤器 ƒ 多个过滤器的逻辑组合过滤器 使用LINQ ƒ .NET 3.5 提供功能 ƒ 可以做更加具体的对象过滤 Revit 2011 API DevTV 30Copyright © 2010 Autodesk Inc. Revit对象的标识 ƒ Revit 对象的类名称 ƒ 直接可以用类名唯一标识出来: 如: Wall, WallType, Floor, FloorType…. ƒ 不同对象,但是共用一个类. FamilyInstance, FamilySymbol, Family, Element ƒ Revit 对象的Category 名称. ƒ 通过Revit的Category 可以唯一标识对象的类别 ƒ 门实例和门类型具有相同的Category ƒ 其它属性 ƒ 如所在的楼层 ƒ 如某一个参数的值 Revit 2011 API DevTV 31Copyright © 2010 Autodesk Inc. 如何识别Revit中不同对象 ƒ 根据标识来识别区分不同对象 ƒ 只使用类名来判断 ƒ它们的特点: ƒ片状能容纳其它对象或特定用途的类 ƒ 如:Wall、Floor、contFooting、CeilingAndFloor等系统族的实例。 ƒ 如果通过类名无法分别出来,需联合对象的类别(Category)来判断 ƒ门、窗、柱等对象没有专用的类来表示,都是FamilyInstance的实例 ƒ用Category来判断其类别 ƒ 用枚举型的BuiltInCategory,来创建ElementCategoryFilter对象,支持所有 国家语言。 访问Revit内部对象 Revit 2011 API DevTV 32Copyright © 2010 Autodesk Inc. Revit API 培训导航 ƒ Revit 二次开发概览 ƒ Revit 二次开发的完整过程 ƒ Revit数据库对象 ƒ 访问Revit对象 ƒ 访问和编辑对象的参数 ƒ 访问一个对象的所有参数 ƒ 访问一个指定参数的值 ƒ 修改对象的参数 ƒ 调试工具RevitLookup ƒ 深入学习Revit编程 参数 •API类: Parameter •作用:保存对象的属性 •分类:内置参数和共享参数 •优点:扩充共享参数, 没有自定义实 体的读写局限. Revit 2011 API DevTV 34Copyright © 2010 Autodesk Inc. 访问选中对象所有参数 遍历参数集合: ƒ Element.Parameters 演示 Revit 2011 API DevTV 35Copyright © 2010 Autodesk Inc. 访问指定参数 ƒ 四种方法获取参数 ƒ Parameter( parameterId As Parameters.BuiltInParameter ) ƒ Parameter( definition As Parameters.Definition ) ƒ Parameter( guid As System.Guid ) ƒ Parameter(name As String) ƒ 修改参数值 ƒ Parameter.Set() 访问和编辑对象的参数 Revit 2011 API DevTV 36Copyright © 2010 Autodesk Inc. 调试工具之一 RevitLookup SDK的根目录下 读取Revit对象属性和参数 提供源代码和工具类 快速查看对象数据 其它API和调试工具 Revit 2011 API DevTV 37Copyright © 2010 Autodesk Inc. SDK中资源介绍 说明 关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书 性文档 ƒ Read Me First.doc ƒ Getting Started with the Revit API.doc ƒ Revit Platform API Changes and Additions.doc ƒ Revit 2011 API Namespace Remapping.xlsx 开发参考文档 ƒ RevitAPI.chm ƒ Revit 2011 API Developer Guide.pdf 需要时阅读 ƒ RevitAddInUtility.chm –制作安装程序时 ƒ Autodesk Icon Guidelines.pdf –制作用户界面时 ƒ Revit Structure – section definitions and material properties 重要工具 ƒ Add‐In Manager ƒ RevitLookup VSTA Samples ƒIntroduction Revit 2011 API DevTV 38Copyright © 2010 Autodesk Inc. SDK中有用的帮助 VSTA Samples 例程代码 ƒ 都在Samples文件夹中 ƒ 包含110多个例子 ƒ 基本涵盖了Revit的API用法 工具和文档 ƒ RevitAPIDllsPathUpdater.exe ƒ SamplesReadMe.htm ƒ SDKSamples2011.sln Revit 2011 API DevTV 39Copyright © 2010 Autodesk Inc. 深入学习 SDK中的资源 讨论组 ƒ http://discussion.autodesk.com > Revit Architecture > Revit API API 培训课程 ƒ http://www.autodesk.com/apitraining The Building Coder, Jeremy Tammik 的 Revit API 博客 ƒ http://thebuildingcoder.typepad.com Autodesk Developer Network ƒ http://www.autodesk.com/joinadn DevHelp在线帮助 ƒ http://adn.autodesk.com Revit 2011 API DevTV 40Copyright © 2010 Autodesk Inc. Revit 2011 API DevTV �Revit 二次开发入门��叶雄进 Joe Ye �2010.5�DevTech Autodesk 关于讲师 目标和要求 首字母缩写含义对照 Revit API 培训提纲 Revit 二次开发所需条件 Revit 产品情况 Revit SDK Revit API 开发工具和语言 Revit API 培训提纲 用 Visual Studio 开发Revit 演示最简单外部命令 创建外部命令步骤 跟踪调试Revit程序 Execute 参数应用 Execute参数解释 外部命令属性 方式2:创建外部应用演示 添加外部应用步骤 命令加载 命令加载 加载工具 AddinManager Revit API 培训导航 Revit对象分类 Revit数据库对象的基本特点 常用类继承关系图 Revit API 培训导航 Revit对象过滤 FilteredElementCollector 用法 Revit对象的标识 如何识别Revit中不同对象 Revit API 培训导航 参数 访问选中对象所有参数 访问指定参数 调试工具之一 RevitLookup SDK中资源介绍 SDK中有用的帮助 深入学习 Slide Number 40
本文档为【Revit二次开发】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_858832
暂无简介~
格式:pdf
大小:1MB
软件:PDF阅读器
页数:40
分类:
上传时间:2014-03-05
浏览量:310