Inventor支持打开或保存多种文件格式,例如*.DWG, *.SAT, *.IGS等。其背后是由对应的Translator add-in (格式转换器)所处理。在插件管理器的Translator选项卡下可以看到它们。而普通的插件是在Applications选项卡。
如果你的文件格式Inventor还不支持,可以自己做转换器。API提供了这种能力。其实,我们经常做的插件是常规插件(放在Applications下的那些),Translator也是一种插件。其实这种插件的基本结构和普通插件是类似的:
1.都是一个dll
2. *.X.Manifest与*.dll编译
3. 由 *.addin文件规定其行为
但有些细节是不同的:
1. Translator 插件需要从TranslatorAddInServer继承
2. 必须重载几个方法,例如 Open和SaveCopyAs方法等
3. *.addin文件里的标签内容用来规定是Translator,用于打开保存什么后缀名的文件,是否支持打开的转换,是否支持保存转换等。具体请见我写的英文博客:
http://adndevblog.typepad.com/manufacturing/2014/02/custom-translator-addin-of-inventor-1.html
大家知道,对于常规插件,Inventor 向导是可以帮你创建一个工程。C++的向导,还有选项创建Translator插件。但.NET的还没有提供。既然它和普通插件类似,我就把普通插件的模板拿出来,修改修改,做了个Translator插件模板。我暂时做的是C#的,过几天做VB.NET的。
Download VCSInventorTranslatorAddInTemplate2014
把这个压缩包放到
<Documents>\ Visual Studio ***\Templates\ProjectTemplates\
当打开VS,选择这个模板创建工程
工程建立后是这个样子。它帮助你新建了一个类,把TranslatorAddInServer的必要方法都重载了。
也准备好了一个*.addin文件。默认是处理*.abc文件。你可以根据需要修改成自己的后缀。还有其它行为参数也可修改。
<AddinType="Translator">
<!--Created for Autodesk Inventor Version 18.0-->
<ClassId>{f4c4d6ac-3354-457b-ad49-626583d640d9}</ClassId>
<ClientId>{f4c4d6ac-3354-457b-ad49-626583d640d9}</ClientId>
<DisplayName>MyTranslator</DisplayName>
<Description>MyTranslator</Description>
<Assembly>MyTranslator.dll</Assembly>
<SupportsOpenInto>.ipt;.iam</SupportsOpenInto>
<SupportsImportInto>.ipt</SupportsImportInto>
<SupportsSaveCopyAsFrom>.ipt;.iam</SupportsSaveCopyAsFrom>
<FileExtensions>.abc</FileExtensions>
<FilterTextLanguage="1033">ABC Files (*.abc)</FilterText>
<SupportsOpen>1</SupportsOpen>
<SupportsImport>1</SupportsImport>
<SupportsSaveCopyAs>1</SupportsSaveCopyAs>
<LoadOnStartUp>0</LoadOnStartUp>
<UserUnloadable>1</UserUnloadable>
<Hidden>0</Hidden>
<ExtraInfo>1</ExtraInfo>
</Addin>
下一篇博客我将根据这个工程做一个具体的例子,实现对*.abc的打开和保存。