Navisworks Plugin: 插件教程Hello World
2015-06-19 09:44
1501 查看
这几天玩了一下Navisworks API,给大家分享分享。
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,也就是插件。
添加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),例如
另外,
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
就会看到在工具附加模块菜单下面出现了一个新的菜单
另外的一个位置是%APPDATA%\Autodesk Navisworks Manage 2014\Plugins,该目录是从Navisworks 2014开始支持的。如果这个目录的的插件又引用了其他dll,其他dll可以直接放在该目录下,也就是支持相对路径。详细见这里。
第三种方式是使用Autodesk多数产品插件的统一方式,叫做Bundle,是Naviswork 2015才开始支持的,更多详细看这里。对应的目录有两个地方可供选择:
%APPDATA%\Autodesk\ApplicationPlugins - 针对单个用户
%PROGRAMDATA%\Autodesk\ApplicationPlugins - 针对所有用户
步骤:
在这两个目录下面建立一个文件夹,推荐叫做<CompanyId>.<MyPluginId>.bundle,比如这里我可以叫做ADSK.NavisworksBasic.bundle
在该文件夹下面准备一个PackageContents.xml文件
PackageContents.xml文件内容如下:
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目录里面。
最后根据PackageContents.xml的内容,创建对应的子目录,并把dll拷贝到该目录下,例如本例中,在ADSK.NavisworksBasic.bundle下面创建子目录Contents,Contents下创建子目录v13,然后把所有dll拷贝到v13下。
官方帮助文档
首先是官方的帮助文档,有什么问题可以直接查阅它。不过它不是随着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 - 针对所有用户
步骤:
在这两个目录下面建立一个文件夹,推荐叫做<CompanyId>.<MyPluginId>.bundle,比如这里我可以叫做ADSK.NavisworksBasic.bundle
在该文件夹下面准备一个PackageContents.xml文件
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目录里面。
最后根据PackageContents.xml的内容,创建对应的子目录,并把dll拷贝到该目录下,例如本例中,在ADSK.NavisworksBasic.bundle下面创建子目录Contents,Contents下创建子目录v13,然后把所有dll拷贝到v13下。
相关文章推荐
- VS中程序包管理器控制台的使用
- 如何为ubuntu server版(10版后)安装图形界面
- 基本语法 - PHP手册笔记
- 一种奇妙的感觉
- 最近在研究备份和虚拟磁带库(LEGATO + MHVTL + SCST + LanFree)
- scrollview嵌套Listview
- 《大道至简》阅读笔记一
- DataSet、DataTable、DataRow的数据复制方法
- Linux服务端swap配置和监控
- 【Maven问题】应用Maven构建项目遇到的各种问题总结
- JS 字符/ASCII码转换
- Type类方法的使用-判断某个类是否是某个接口的派生类
- 入门指引 - PHP手册笔记
- Linux CPU使用率的计算
- android 横竖屏切换
- javascript装饰器模式
- IOS中UIScrollView和UIPageControl的联合运用
- 数据结构和算法-009 双向链表
- 最长上升子序列
- 美食