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下。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值