马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
可以用C++来二次开发Revit吗
许多朋友原来用C++开发AutoCAD,或对C++很熟悉,但是没有发现RevitSDK 提供C++的例子工程,因此很想了解是否可以用C++来开发Revit。
特写此文来回答大家的疑问。
Revit提供的应用程序开发接口(API)是.NET 类型的,只要支持.NET Framework 的语言都是可以的。 显然C#, VB.NET 是支持的,托管C++ 是支持.NET framework, 所以也是可以用来开发Revit。
在Revit API的帮助文档中,对每一个接口方法或属性,都会列出托管C++的签名。如下所示:
[csharp] view plaincopy
Syntax
C#
public static ViewSchedule CreateKeySchedule(
Document document,
ElementId categoryId
)
Visual Basic
Public Shared Function CreateKeySchedule ( _
document As Document, _
categoryId As ElementId _
) As ViewSchedule
[csharp] view plaincopy
Visual C++
public:
static ViewSchedule^ CreateKeySchedule(
Document^ document,
ElementId^ categoryId
)
一个托管C++开发的代码片段:
下面是头文件中的Revit命令类的声明
[cpp] view plaincopy
//
public ref class Command : public Revit::IExternalCommand {
public:
virtual Revit::IExternalCommand::Result Execute(Revit::ExternalCommandData^ commandData, String^% message, Revit::ElementSet^ elementSet);
};
下面是该类实现代码
[cpp] view plaincopy
#include "stdafx.h"
#include "DistribApp2.h"
Revit::IExternalCommand::Result DistribApp2::Command::Execute(Revit::ExternalCommandData^ commandData, String^% message, Revit::ElementSet^ elementSet) {
// 栠傝抣
Revit::IExternalCommand::Result retCommand = Revit::IExternalCommand::Result::Succeeded;
// CompA
DistribApp2::CompA^ objCompA = gcnew DistribApp2::CompA();
objCompA->ShowMsg();
return retCommand;
}
但是纯C++的模式没有,也就是没有提供头文件(*.h)和库文件(*.lib) 这种方式来开发Revit。
所以看看托管C++ 的一些资料后,就可以继续利用你的C++语言的长处来开发Revit。
不同语言所具有的Revit二次开发能力是一样的,没有区别。
C#是一种用起来非常方便的语言,掌握C++的程序员很快可以掌握。
|