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


转载请复制以下信息:
原文链接: http://blog.csdn.net/joexiongjin/article/details/7946047

作者:  叶雄进 , Autodesk ADN


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

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


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


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


Syntax
C# 
public static ViewSchedule CreateKeySchedule(
	Document document,
	ElementId categoryId
)
 
Visual Basic 
Public Shared Function CreateKeySchedule ( _
	document As Document, _
	categoryId As ElementId _
) As ViewSchedule

Visual C++ 

public:
static ViewSchedule^ CreateKeySchedule(
	Document^ document, 
	ElementId^ categoryId
)
 


一个托管C++开发的代码片段:


下面是头文件中的Revit命令类的声明

  // 
  public ref class Command : public Revit::IExternalCommand {
    public:
      virtual Revit::IExternalCommand::Result Execute(Revit::ExternalCommandData^ commandData, String^% message, Revit::ElementSet^ elementSet);
  };


下面是该类实现代码

#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++的程序员很快可以掌握。




你可能感兴趣的:(C++,.net,String,command,语言,VB.NET)