EaBIM一直以来积极响应国家“十二五”推进建筑业信息化的号召,对建筑领域的信息技术开展深入技术交流和探讨!致力于打造“BIM-建筑师-生态技术”三位一体综合资源交流共享平台,希望为BIM与可持续设计理念及技术的普及做出微小的贡献!!!

EaBIM

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 997|回复: 1
打印 上一主题 下一主题

可以用C++来二次开发Revit吗?

[复制链接]

1514

主题

7465

帖子

1万

积分

admin

Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10

积分
12404

社区QQ达人

跳转到指定楼层
楼主
发表于 2014-1-15 12:12:34 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

许多朋友原来用C++开发AutoCAD,或对C++很熟悉,但是没有发现Revit SDK 提供C++的例子工程,因此很想了解是否可以用C++来开发Revit。

特写此文来回答大家的疑问。


Revit提供的应用程序开发接口(API)是.NET 类型的,只要支持.NET Framework 的语言都是可以的。 显然C#, VB.NET 是支持的,托管C++ 是支持.NET framework, 所以也是可以用来开发Revit。


在Revit API的帮助文档中,对每一个接口方法或属性,都会列出托管C++的签名。如下所示:

  1. [csharp] view plaincopy
  2. Syntax  
  3. C#   
  4. public static ViewSchedule CreateKeySchedule(  
  5.     Document document,  
  6.     ElementId categoryId  
  7. )  
  8.    
  9. Visual Basic   
  10. Public Shared Function CreateKeySchedule ( _  
  11.     document As Document, _  
  12.     categoryId As ElementId _  
  13. ) As ViewSchedule  
复制代码
  1. [csharp] view plaincopy
  2. Visual C++   
  3.   
  4. public:  
  5. static ViewSchedule^ CreateKeySchedule(  
  6.     Document^ document,   
  7.     ElementId^ categoryId  
  8. )  
  9.    
复制代码
一个托管C++开发的代码片段:
下面是头文件中的Revit命令类的声明
  1. [cpp] view plaincopy
  2. //   
  3. public ref class Command : public Revit::IExternalCommand {  
  4.   public:  
  5.     virtual Revit::IExternalCommand::Result Execute(Revit::ExternalCommandData^ commandData, String^% message, Revit::ElementSet^ elementSet);  
  6. };  
复制代码
下面是该类实现代码
  1. [cpp] view plaincopy
  2. #include "stdafx.h"  
  3.   
  4. #include "DistribApp2.h"  
  5.   
  6. Revit::IExternalCommand::Result DistribApp2::Command::Execute(Revit::ExternalCommandData^ commandData, String^% message, Revit::ElementSet^ elementSet) {  
  7.   
  8.   // 栠傝抣  
  9.   Revit::IExternalCommand::Result retCommand = Revit::IExternalCommand::Result::Succeeded;  
  10.   
  11.   // CompA  
  12.   DistribApp2::CompA^ objCompA = gcnew DistribApp2::CompA();  
  13.   objCompA->ShowMsg();  
  14.   
  15.   
  16.   return retCommand;  
  17. }  
复制代码
但是纯C++的模式没有,也就是没有提供头文件(*.h)和库文件(*.lib) 这种方式来开发Revit。
所以看看托管C++ 的一些资料后,就可以继续利用你的C++语言的长处来开发Revit。不同语言所具有的Revit二次开发能力是一样的,没有区别。
C#是一种用起来非常方便的语言,掌握C++的程序员很快可以掌握。转载请复制以下信息:
原文链接: http://blog.csdn.net/joexiongjin/article/details/7946047
作者:  叶雄进 , Autodesk ADN


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对

相关帖子

工作时间:工作日的9:00-12:00/13:30-18:00,节假日不在线,请勿留言
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|EaBIM网 ( 苏ICP备2020058923号-1  苏公网安备32011502011255号

GMT+8, 2024-11-16 22:23

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表