如何添加您的知识

将 SDK 示例移植到 Revit 宏 IDE

    Revit SDK 包含两个示例文件夹:

    \Revit SDK <版本>\Software Development Kit\Samples\...

    \Revit SDK <版本>\Software Development Kit\Macro Samples\...

    SDK 的 \Samples\ 文件夹中的程序使用标准 Revit API。本主题将这些示例称为“SDK 示例代码”,以区别于“Revit 宏示例”。

    如果要为宏使用 SDK 示例代码,则需要进行修改。请按照本部分中的步骤执行操作。对于编程语言,将显示 C# 示例。但是,这些说明也同样适用于 SDK 示例的 VB.NET 版本。

    初始步骤

    将标准 API 示例从 SDK 移植到 Revit 宏 IDE 项目中的初始步骤与将宏集成到 Revit IDE部分中的相似。不同的是您不是从 SDK 的 \Macro Samples\<示例名>\... 文件夹复制文件,而是从 SDK 的 \Samples\<示例名>\... 文件夹复制文件。

    要进行复查,步骤是:

    1. 在 IDE 中,添加所需的参照。
    2. 在 IDE 中,为要移植的 SDK 示例创建文件夹。
    3. 在 Windows 资源管理器中,将 SDK 的标准 API 示例文件复制到相应文件系统文件夹中。
    4. 在 IDE 中,将现有文件添加到宏项目中。

    更新 SDK 示例的代码

    在 Revit 宏 IDE 中,IExternalCommand 接口不可用或未使用。在 SDK 的标准 API 示例代码中,必须更新从该接口继承的类:

    • 删除方法参数和 Execute 方法的返回值。
    • 更新与 ExternalCommandData 相关的其他代码。

    编辑前的代码示例

    以下代码段摘自使用标准 Revit API 的程序:

    编辑后的代码示例

    在 Revit 宏 IDE 中,必须按以下方式更新代码。该示例中显示了一个应用程序级宏。RunSampleRooms() 方法是该宏示例的入口。请注意,我们使用了 this 指针代替 commandData.Application

    关于 SDK 标准 API 示例的其他移植注释

    • 默认情况下,SDK 示例命名空间是:Revit.SDK.Samples.<示例名>.CS。在编辑 SDK 标准 API 示例中的示例代码时,请确保为 Revit IDE 更改命名空间。例如,在 ThisApplication.cs 中:

      namespace AppCSharp.csproj

    • Revit IDE 项目中的默认项目引用只包含基本引用,例如 Revit.Proxy。请记住添加其他所需的参照。例如,当运行显示用户界面的示例时,必须添加 System.Windows.FormsSystem.Drawing 引用。
    • 某些示例有必须在 resources.resx 文件中定义的资源。GridCreation 就属于这类示例。如果要将 SDK 标准 API 示例 GridCreation 移植到 Revit IDE,请确保设置 resx 属性。
    • 在 Revit 宏 IDE 中不支持项目版本相关性。如果要使用其他 DLL,则必须在 Revit 宏 IDE 外部编译该相关示例项目。例如,在 SDK 标准 API 示例中,存在几个与 Viewers 相关的示例,例如 AnalyticalViewer 和 RoomViewer,具体取决于对 RevitViewer 的引用。

      但是,由于 Revit IDE 中的限制,我们无法设置项目相关性,并且无法移植 RevitViewer 示例。因此,您需要将 RevitViewer 作为独立的 SDK 示例进行编译,然后在 Revit IDE 项目中将其 DLL 添加为引用:

    • 将 SDK 标准 API 示例移植到 Revit IDE 时,请勿复制任何解决方案文件 (*.sln*) 或现有项目文件(*.csproj 或 *.vbproj)。
    • 与工具栏相关的示例在 Revit IDE 中不可用。