NavisworksTransport/doc/guide/development.md

112 lines
6.6 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 开发环境:
- 操作系统: 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.AddInPlugin``Autodesk.Navisworks.Api.Plugins.DockPanePlugin`,并添加相应的 `PluginAttribute``AddInPluginAttribute``DockPanePluginAttribute` [3]。
例如一个简单的“Hello World”插件骨架可能看起来像这样
```csharp
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