NavisworksTransport/doc/guide/development.md
2025-12-01 11:12:55 +08:00

6.6 KiB
Raw Blame History

开发环境

  • 操作系统: Windows 11 (开发环境)

  • Navisworks 版本: Navisworks 2017 Manage 或 Simulate (需安装以获取 SDK)

  • 集成开发环境 (IDE) Microsoft Visual Studio 2017 或更高版本 (推荐 Visual Studio 2022)

  • .NET Framework 目标.NET Framework 4.6 (或更高兼容版本,如 4.8)

  • 安装程序工具: WiX Toolset

  • 版本控制: Git (可选,但强烈推荐)

  • 确保在 Visual Studio 项目中正确引用 Navisworks 2017 SDK 中的程序集,并将它们的“复制本地”属性设置为 False以避免在插件部署时出现问题 。  

好的,在 Visual Studio 2022 中为 Navisworks 插件创建项目,您需要选择正确的项目模板并进行一些关键配置。

以下是详细的操作步骤:

1. 创建新项目

  1. 打开 Visual Studio 2022。
  2. 在启动界面,选择 “创建新项目”
  3. 在“创建新项目”对话框中:
    • 在顶部的搜索框中输入 "Class Library" (类库)。
    • 在结果列表中,选择 “类库 (.NET Framework)”。请务必选择 .NET Framework 版本,而不是 .NET.NET Standard,因为 Navisworks 2017 插件是基于.NET Framework 的。
    • 点击 “下一步”
  4. 在“配置新项目”对话框中:
    • 项目名称 (Project name): 输入您的插件名称,例如 NavisworksLogisticsPlugin。这个名称很重要,因为它将用于插件的部署文件夹名称 [1]。
    • 位置 (Location): 选择一个您希望保存项目文件的本地文件夹。
    • 解决方案名称 (Solution name): 可以与项目名称相同,或者根据您的偏好设置。
    • 点击 “下一步”
  5. 在“其他信息”对话框中:
    • 框架 (Framework): 在下拉菜单中,选择 “.NET Framework 4.6”。这是 Navisworks 2017 API 所需的最低兼容版本。如果您的 Visual Studio 默认没有 4.6,可以选择 4.8,因为 4.8 兼容 4.6 及更早的 4.x 版本。
    • 点击 “创建”

现在,您已经创建了一个空的 C# 类库项目。

2. 添加 Navisworks API 引用

接下来,您需要将 Navisworks API 的核心 DLL 文件添加到您的项目中。这些文件通常位于 Navisworks 2017 的安装目录下的 api\ 文件夹中 [2, 1]。

  1. 在 Visual Studio 的 “解决方案资源管理器” 中,右键点击您的项目(例如 NavisworksLogisticsPlugin)。
  2. 选择 “添加” > “项目引用...” (Add > Project Reference...)。
  3. 在“引用管理器”对话框中,选择左侧的 “浏览” (Browse)。
  4. 点击右下角的 “浏览...” (Browse...) 按钮。
  5. 导航到您的 Navisworks 2017 安装目录。通常路径是: C:\Program Files\Autodesk\Navisworks Manage 2017\api\net\ (如果您安装的是 Manage 版本) 或 C:\Program Files\Autodesk\Navisworks Simulate 2017\api\net\ (如果您安装的是 Simulate 版本)
  6. 在该目录下,选择以下所有 DLL 文件并点击 “添加”
    • Autodesk.Navisworks.Api.dll [1]
    • Autodesk.Navisworks.ComApi.dll [1]
    • Autodesk.Navisworks.Interop.ComApi.dll [1]
    • Autodesk.Navisworks.Interop.ComApiAutomation.dll [1]
  7. 点击 “确定” 关闭“引用管理器”对话框。

3. 配置引用属性 (重要步骤)

为了确保插件正确加载并避免冲突,您需要修改这些引用的一个属性:

  1. “解决方案资源管理器” 中,展开您的项目下的 “引用” (References) 节点。
  2. 逐个选择您刚刚添加的 Navisworks DLL 引用(例如 Autodesk.Navisworks.Api)。
  3. 在 Visual Studio 右下角的 “属性” (Properties) 窗口中,找到 “复制本地” (Copy Local) 属性。
  4. 将其值设置为 False

这样做是为了告诉 Visual Studio 在编译时不要将这些 Navisworks API DLL 复制到您的插件输出目录,因为 Navisworks 运行时已经提供了它们。

4. 配置生成输出路径 (重要步骤)

Navisworks 插件需要放置在特定的文件夹结构中才能被识别和加载 [3, 1]。

  1. “解决方案资源管理器” 中,右键点击您的项目(例如 NavisworksLogisticsPlugin)。
  2. 选择 “属性” (Properties)。
  3. 在项目属性页中,选择左侧的 “生成” (Build) 选项卡。
  4. 在右侧的“输出”部分,找到 “输出路径” (Output path) 字段。
  5. 您需要将此路径设置为 Navisworks 安装目录下的 Plugins 文件夹内的一个子文件夹,该子文件夹的名称必须与您的项目名称完全一致 [3, 1]。
    • 首先,手动在 Navisworks 安装目录中创建这个文件夹。 例如,如果您的 Navisworks 2017 安装在 C:\Program Files\Autodesk\Navisworks Manage 2017\,并且您的项目名称是 NavisworksLogisticsPlugin,那么您需要创建以下文件夹: C:\Program Files\Autodesk\Navisworks Manage 2017\Plugins\NavisworksLogisticsPlugin\
    • 然后,将“输出路径”设置为这个新创建的文件夹的完整路径。 例如: C:\Program Files\Autodesk\Navisworks Manage 2017\Plugins\NavisworksLogisticsPlugin\ [1]

5. 开始编写插件代码

现在您的项目已经配置完毕,您可以开始编写插件代码了。您的插件类需要继承自 Autodesk.Navisworks.Api.Plugins.AddInPluginAutodesk.Navisworks.Api.Plugins.DockPanePlugin,并添加相应的 PluginAttributeAddInPluginAttributeDockPanePluginAttribute [3]。

例如一个简单的“Hello World”插件骨架可能看起来像这样

using Autodesk.Navisworks.Api;
using Autodesk.Navisworks.Api.Plugins;
using System.Windows.Forms; // 用于MessageBox

namespace NavisworksLogisticsPlugin
{
   
    [AddInPlugin(AddInLocation.AddIn)] // 将插件显示在Navisworks的“附加模块”选项卡中
    public class Main : AddInPlugin
    {
        public override int Execute(params string parameters)
        {
            MessageBox.Show("Hello from Navisworks Logistics Plugin!");
            return 0;
        }
    }
}

重要提示:

  • YOUR_DEVELOPER_ID 替换为您自己的唯一开发者 ID。这通常是您的公司名称缩写或反向域名以确保插件的唯一性。
  • 编译项目后Navisworks 启动时会自动加载位于其 Plugins 文件夹中的插件 [3, 1]。

通过遵循这些步骤,您应该能够成功地在 Visual Studio 2022 中为 Navisworks 2017 插件设置开发环境。

dotnet build NavisworksTransportPlugin.csproj --configuration Debug --verbosity normal

dotnet build NavisworksTransportPlugin.csproj --verbosity normal