6.6 KiB
Navisworks NET API 示例指南
示例代码位置总览
所有示例位于:doc/navisworks_api/NET/examples/
基础示例 (Basic Examples)
1. BasicDockPanePlugin
路径: Basic Examples/CSharp/BasicDockPanePlugin/
最简单的停靠面板插件示例。
[Plugin("BasicDockPanePlugin.BasicDockPanePlugin", "ADSK",
DisplayName = "BasicDockPanePlugin",
ToolTip = "Basic Docking Pane Plugin")]
[DockPanePlugin(100, 300)]
public class BasicDockPanePlugin : DockPanePlugin
{
public override Control CreateControlPane()
{
HelloWorldControl control = new HelloWorldControl();
control.Dock = DockStyle.Fill;
control.CreateControl();
return control;
}
public override void DestroyControlPane(Control pane)
{
pane.Dispose();
}
}
2. WPF DockPane
路径: Basic Examples/CSharp/WPF/WpfDockPane/
使用 WPF 控件的停靠面板插件。
public override Control CreateControlPane()
{
// 使用 ElementHost 托管 WPF 控件
ElementHost host = new ElementHost();
host.Child = new WPFHelloWorldControl();
host.Dock = DockStyle.Fill;
host.CreateControl();
return host;
}
3. DatabaseDockPane
路径: Basic Examples/CSharp/WPF/DatabaseDockPane/
展示如何在停靠面板中使用模型数据库。
4. BasicPlugIn
路径: Basic Examples/CSharp/BasicPlugIn/
最简单的 AddIn 插件示例。
5. APICallsCOMPlugin
路径: Basic Examples/CSharp/APICallsCOMPlugin/
展示如何在 NET API 插件中调用 COM API。
6. CustomRibbon
路径: Basic Examples/CSharp/CustomRibbon/
自定义 Ribbon 界面示例,使用 XAML 定义 Ribbon。
插件示例 (PlugIns)
1. Examiner
路径: PlugIns/Examiner/
全面的 LINQ 搜索和模型操作示例。
关键功能:
- 使用 LINQ 查询模型项
- 属性搜索和过滤
- 颜色和透明度覆盖
- Required/Hidden 状态修改
- 导出结果到 NWD
核心代码片段:
// LINQ 搜索示例
IEnumerable<ModelItem> result =
Application.ActiveDocument.Models.RootItemDescendantsAndSelf
.Where(x => x.HasGeometry)
.Where(x => !x.IsHidden)
.Where(x => x.DisplayName.Contains(searchName));
// 颜色覆盖
ModelItemCollection items = new ModelItemCollection();
items.AddRange(result);
Application.ActiveDocument.Models.OverridePermanentColor(items, color);
2. SearchComparisonPlugIn
路径: PlugIns/SearchComparisonPlugIn/
对比不同搜索方法的性能。
3. InputAndRenderHandling
路径: PlugIns/InputAndRenderHandling/
ToolPlugin 和 RenderPlugin 的综合示例。
关键功能:
- 鼠标输入处理
- 自定义渲染
- 3D 拾取
[ToolPlugin("InputAndRenderHandling", "ADSK")]
[RenderPlugin("InputAndRenderHandling", "ADSK")]
public class InputAndRenderHandling : ToolPlugin
{
public override bool MouseDown(MouseButton button, int x, int y)
{
// 处理鼠标点击
return true;
}
public override void Render(View view, RenderContext context)
{
// 自定义渲染
}
}
4. ClashDetective 示例集合
路径: PlugIns/ClashDetective/
包含多个碰撞检测相关示例:
| 示例 | 说明 |
|---|---|
ClashGrouper/ |
碰撞结果分组 |
ClashMarkers/ |
碰撞标记显示 |
EventLog/ |
事件日志监听 |
GenerateMatrix/ |
生成碰撞矩阵 |
SimpleUI/ |
简单 UI 界面 |
碰撞测试基础代码:
// 创建碰撞测试
ClashTest clashTest = new ClashTest();
clashTest.Name = "Test Name";
clashTest.TestType = ClashTestType.Hard;
// 设置选择
clashTest.SelectionA = new ClashSelection(itemsA, document);
clashTest.SelectionB = new ClashSelection(itemsB, document);
// 添加到文档
document.ClashTestsData.Tests.Add(clashTest);
5. Timeliner 示例
路径: PlugIns/Timeliner/
TimeLiner 集成示例,展示 4D 模拟功能。
// 获取 Timeliner 数据
var timeliner = document.Timeliner;
// 创建任务
TimelinerTask task = new TimelinerTask();
task.Name = "Construction Task";
task.StartDate = DateTime.Now;
task.EndDate = DateTime.Now.AddDays(7);
task.SimulationStatus = SimulationStatus.Active;
// 关联模型
task.Selection.CopyFrom(modelItems);
// 添加任务
timeliner.Tasks.Add(task);
6. Takeoff 示例
路径: PlugIns/Takeoff/
工程量计算 (Quantification) 示例。
自动化示例 (Automation)
1. CallExaminer
路径: Automation/CallExaminer/
展示如何通过自动化接口调用 Examiner 插件。
// 启动 Navisworks 自动化
NavisworksApplication app = new NavisworksApplication();
app.OpenFile(filePath);
// 执行插件
app.ExecutePlugin("Examiner.Examiner", parameters);
2. MessageClientServer
路径: Automation/MessageClientServer/
展示插件间通信机制。
3. MessageSenderReceiver
路径: Automation/MessageSenderReceiver/
消息发送和接收示例。
控件示例 (Controls)
1. Viewers
路径: Controls/Viewers/
独立的 Navisworks 查看器控件示例。
| 示例 | 说明 |
|---|---|
SDIViewer/ |
单文档界面查看器 |
MDIViewer/ |
多文档界面查看器 |
// 使用 DocumentControl
DocumentControl docControl = new DocumentControl();
docControl.Dock = DockStyle.Fill;
this.Controls.Add(docControl);
// 打开文件
docControl.Document.OpenFile(filePath);
2. PublishFile
路径: Controls/PublishFile/
文件发布选项示例。
工具示例 (Tools)
1. AppInfo
路径: Tools/AppInfo/
展示应用程序信息和事件监听。
2. CodeRun
路径: Tools/CodeRun/
动态代码执行工具,支持 C# 和 IronPython。
按功能查找示例
| 功能需求 | 推荐示例 |
|---|---|
| 创建停靠面板 | BasicDockPanePlugin/, WpfDockPane/ |
| 使用 WPF | WpfDockPane/, DatabaseDockPane/ |
| 模型搜索 | Examiner/, SearchComparisonPlugIn/ |
| 鼠标交互 | InputAndRenderHandling/ |
| 自定义渲染 | InputAndRenderHandling/ |
| 碰撞检测 | ClashDetective/ 下的各个示例 |
| TimeLiner | Timeliner/ |
| 独立查看器 | Controls/Viewers/ |
| 插件通信 | MessageClientServer/ |
项目文件参考
每个示例包含的项目文件:
.csproj- C# 项目文件Properties/AssemblyInfo.cs- 程序集信息- 源代码文件 (.cs)
构建和部署
-
打开
doc/navisworks_api/NET/examples/Examples.sln -
选择项目并构建
-
插件输出到 Navisworks 插件目录:
C:\ProgramData\Autodesk\Navisworks Manage 2026\plugins\