Navisworks Plugin: 插件教程Hello World


這幾天玩了一下Navisworks API,給大家分享分享。

官方幫助文檔

首先是官方的幫助文檔,有什麼問題可以直接查閱它。不過它不是隨着Navisworks安裝的,而是在SDK裏面,需要另外下載,下載地址:

http://usa.autodesk.com/adsk/servlet/index?id=15024694&siteID=123112

找到Navisworks 2015 SDK下載該exe文件,點擊安裝,默認安裝地址是C:\Program Files\Autodesk\Navisworks Manage 2015\api
安裝完成之後,可以看到裏面有幾個文件夾,分別是COM, NET和nwcreate,代表的是COM API, .NET API和模型創建相關的API。
這些文件夾的子文件夾裏有幫助文檔,二進制文件,和例子(samples)源代碼。


我們知道NavisworksAPI分爲三種,分別是:Plugin(插件),Control(控件)和自動化(Automation)。

  • 插件形式是把我們的程序集成到Navisworks裏,大多表現爲一個Navisworks的自定義菜單
  • 控件形式是把Navisworks集成到我們的程序裏
  • 自動化是指運行一個沒有界面Navisworks,形式也算是吧Navisworks集成到我們的程序裏

下面我們來看怎麼創建一個Plugin,也就是插件。

創建Hello World插件

  • 創建一個Class Library工程
  • 添加Autodesk.Navisworks.Api.dll作爲引用,它位於Naviswork安裝目錄下,例如C:\Program Files\Autodesk\Navisworks Manage 2015
  • 選中該引用,設置它的Copy Local屬性爲false,這樣它就不會被拷貝到編譯結果目錄裏面。
  • 創建一個類,繼承自Autodesk.Navisworks.Api.Plugins.AddInPlugin
  • 給這個類添加一個PlugInAttribute,比如:[PluginAttribute("Name", "DeveloperId", ToolTip = "Tooltip", DisplayName = "DisplayName")]
  • 實現Execute函數:public override int Execute(params string[] parameters),例如
    [PluginAttribute("Basic", "ADSK", ToolTip = "Popups", DisplayName = "Hello Navisworks")]
    [AddInPluginAttribute(AddInLocation.AddIn)]
    public class Class1 : AddInPlugin
    {
      public override int Execute(params string[] parameters)
      {
        System.Windows.Forms.MessageBox.Show("Hello Navisworks!");
        return 0;
      }
    }
        
    注意:這裏調用了MessageBox的函數,所以我們需要添加System.Windows.Forms的引用
    另外,
    • AddInPluginAttribute用來指明插件菜單所在的位置,這裏指定的是AddInLocation.AddIn,所以該插件的按鈕會出現在”工具附加模塊“菜單下。如果沒有這個Attribute,默認也是AddInLocation.Addin
    • PluginAttribute的第一個參數"Basic"是插件的名稱,"ADSK"是開發商名稱,ToolTip是鼠標放在菜單上彈出的提示信息,DisplayName是插件菜單上的文字
  • 編譯
  • 打開Plugins文件夾,一般在這裏C:\Program Files\Autodesk\Navisworks Manage 2015\Plugins,創建一個和生成的dll同名的文件夾,如我的dll名字叫NavisworksBasic.dll,那麼就創建一個名爲NavisworksBasic的文件夾,更多關於插件位置的說明,可以參考後面一節"插件的存放位置"。
  • 把生成的dll拷貝到該文件夾
  • 啓動Navisworks
  • 就會看到在工具附加模塊菜單下面出現了一個新的菜單

插件工程模板

最後,奉送一個簡單的Visual Studio工程模板,可以方便用來創建一個Plugin,點Navisworks2015Plugin.zip下載,下載之後放在目錄%userprofile%\My Documents\Visual Studio 2012\Templates\ProjectTemplates下。



插件的存放位置

  • 前面講過,插件可以放在Navisworks安裝目錄的子目錄Plugins下面的同名目錄裏面,如果該插件又引用了其他的dll,其他dll需要放在Navisworks目錄下的Dependencies子目錄,否則就會出現無法加載引用dll而導致Navisworks崩潰。
  • 另外的一個位置是%APPDATA%\Autodesk Navisworks Manage 2014\Plugins,該目錄是從Navisworks 2014開始支持的。如果這個目錄的的插件又引用了其他dll,其他dll可以直接放在該目錄下,也就是支持相對路徑。詳細見這裏
  • 第三種方式是使用Autodesk多數產品插件的統一方式,叫做Bundle,是Naviswork 2015纔開始支持的,更多詳細看這裏。對應的目錄有兩個地方可供選擇:
    • %APPDATA%\Autodesk\ApplicationPlugins - 針對單個用戶
    • %PROGRAMDATA%\Autodesk\ApplicationPlugins - 針對所有用戶
    步驟:
    1. 在這兩個目錄下面建立一個文件夾,推薦叫做<CompanyId>.<MyPluginId>.bundle,比如這裏我可以叫做ADSK.NavisworksBasic.bundle
    2. 在該文件夾下面準備一個PackageContents.xml文件
    3. PackageContents.xml文件內容如下:
      <?xml version="1.0" encoding="utf-8"?>
      <ApplicationPackage>
      <Components>
      <RuntimeRequirements OS="Win64" Platform="NAVMAN|NAVAIM" Series="Nw13" SeriesMax="Nw13"/>
      <ComponentEntry AppType="ManagedPlugin" ModuleName="Contents\v13\ADSK.MyPlugin.dll"/>
      </Components>
      </ApplicationPackage>
      
      說明:
      • OS="Win64": 只支持64的產品
      • Platform="NAVMAN|NAVSIM" :同時支持Navisworks Manage和Navisworks Simulate.
      • SeriesMin="Nw13" SeriesMax="Nw13" : 該插件支持所有的v13的版本.
      • AppType="ManagedPlugin" : 該插件基於.net的API。
      • ModuleName="Contents\v13\ADSK.NavisworksBasic.dll" : 指明dll的相對路徑,在Contents目錄下的v13目錄裏面。
    4. 最後根據PackageContents.xml的內容,創建對應的子目錄,並把dll拷貝到該目錄下,例如本例中,在ADSK.NavisworksBasic.bundle下面創建子目錄Contents,Contents下創建子目錄v13,然後把所有dll拷貝到v13下。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章