Navisworks 提供了.NET, COM和NwCreate 三種API。而通常我們說Navisworks API其實指的只是COM或.NET,因為NwCreate的功能比較特殊。待我一一道來: COM API: 這是很早很早以前就提供的介面。COM有多老基本它就有多老了。它能完成大部分產品里有 ...
Navisworks 提供了.NET, COM和NwCreate 三種API。而通常我們說Navisworks API其實指的只是COM或.NET,因為NwCreate的功能比較特殊。待我一一道來:
- COM API: 這是很早很早以前就提供的介面。COM有多老基本它就有多老了。它能完成大部分產品里有的功能。
- .NET API: 這是2011版本開始提供的。用來逐漸取代COM API。但並不是簡單的把COM 功能搬過來,而是從底層寫起,並且,增加了很多COM沒有的功能。
.NET API誕生後,我們只在.NET里增加新功能,COM API只做維護。還有零星的一點COM功能.NET暫時沒有暴露,但可以通過COM Interop去訪問之。換句話講,您可以 在.NET API里調用到COM的能力。下麵這個表格是兩種API的大致對比,以作參考。.
API 能力 |
COM |
.NET |
模型聚合 |
√ |
√ |
模型基本信息訪問 |
√ |
√ |
模型結構樹 |
√ |
√ |
對象屬性訪問 |
√ 但API結構繁瑣 |
√ API結構清晰 |
對象查找 |
√ 但API結構繁瑣 |
√ API結構清晰 |
LINQ查找 |
× |
√ |
對象用戶自定義屬性添加和修改 |
√ |
×, 但可以通過COM Interop使用 |
自動化API |
√ |
√ |
材質和渲染 |
× 2015之前有Presenter API,2015後去除 |
× |
工程進度管理和操作 |
× |
√ |
導入外部工程進度 |
× |
√ |
碰撞檢測 |
√ 功能有限 |
√ 功能完備 |
瀏覽模式 |
√ |
√ |
註釋 |
× |
√ |
算量 |
× |
√ |
文檔資料庫 |
× |
√ |
控制項 |
√ ActiveX控制項 |
√ .NET 控制項 |
訪問和添加超鏈接 |
√ |
×, 但可以通過COM Interop使用 |
訪問和添加快速屬性 |
√ |
×, 但可以通過COM Interop使用 |
剖面 |
√ 功能很有限 |
×, 但可以通過COM Interop使用 |
全局選項 |
× 部分可通過註冊表操作 |
× 部分可通過註冊表操作 |
用戶交互 |
× |
√ 目前僅插件支持 |
臨時圖形 |
× |
√ |
支持WPF |
× |
√ |
Ribbon |
× |
√ |
面板 |
× |
√ |
視點操作 |
√ |
√ |
相機操作 |
√ 功能有限 |
√ 功能完備 |
屬性集操作 |
√ |
√ |
× 可部分利用保存視點 |
||
對象動畫 |
× 可部分利用對象位置變換 |
|
對象顏色 |
√ |
√ |
對象透明度 |
√ |
√ |
對象位置變換 |
√ |
√ |
添加自定義模型* |
× |
|
載入自定義文件* |
× |
× |
- NwCreate: 用來創建模型的 --- 或許您會問,前面不是提到,Navisworks不是設計軟體?嗯,是的,Navisworks本身不能創建模型,只是聚合已有的模型。而通常的API能力如上面的表格,都是對模型的審閱和管理。NwCreate是一個C++庫,讓開發者能
- 自行從零開始,創建模型場景,生成模型,並存為nwd文件。類似於一個OpenGL程式,在自己的畫布里繪製出自己的模型。
- 或者,能做一種插件,解釋特定的文件格式。Navisworks能打開60多種文件格式,但要是有些格式很特別,而您又知道怎麼解釋其中的數據,那可以利用NwCreate寫個插件,當打開特定格式文件時,插件獲取文件數據,按照要求繪製相應的模型。也就是說讓您能做自己的文件解釋器。
總之,NwCreate是為開發者而生,創建模型所用。但它也不能在現有的模型上再添加模型,只是從零開始構建一個新模型文檔。
所以,我們說普通意義上的Navisworks API指的是COM或.NET。有時,您的程式也會和 NwCreate結合。例如:不能在現有的模型上再添加模型,那用NwCreate創建出模型,再聚合到主模型也是一個思路。