调用Inventor命令

原创 2013年12月05日 11:20:45
通过API可以实现大部分Inventor的功能,但偶尔可能API尚未提供对应功能,或者Inventor的对话框比较复杂,你不想自己也写个对话框,用API实现每个按钮功能。那这时可以考虑直接调用Inventor命令。其实,基本所有在用户界面看到的功能都可以找到对应的命令,包括二次开发创建的命令。如果你写过插件,肯定熟悉如何创建一个按钮,其中有个ControlDefinition对象,它就是所谓的命令容器。通过API你可以获取所有命令列表,例如:


Sub dumpCommands()
  
  '准备一个文本文件用来存储命令信息
  Open "c:\temp\inventorcommands.txt" For Output As #1
  
  '遍历每个命令
  Dim oEachCol As ControlDefinition
  For Each oEachCol In ThisApplication.CommandManager.ControlDefinitions
    Write #1, "[命令显示名] " & oEachCol.DisplayName & "[命令内部名] " & oEachCol.InternalName
  Next
  Close #1
  
End Sub

这段代码遍历所有命令,写入一个文本文件。DisplaName是命令在用户界面显示的名字,若中文版则是中文。而InternName是唯一名,任何版本都一样。当你拿到这样的文本文件,通常可以根据显示名,查找哪个命令可能是你需要的,例如,要弹出【另存文件】的对话框,显示名(我是英文版)是Save Copy,则可查到其内部名是: AppFileSaveCopyAsCmd。

接着,你可以直接调用该命令: 


Sub executeCommand()

    Dim oTheCol As ControlDefinition
    Set oTheCol = ThisApplication.CommandManager.ControlDefinitions("AppFileSaveCopyAsCmd")
    
    '异步执行。只在你自己命令结束后才执行
    oTheCol.Execute
    
    '或立即执行
    'oTheCol.Execute2 True
End Sub

注意Execute和Execute2的区别。

但有些命令没有显示名,或者实在无法从内部名获取线索。可先启动UserInputEvents.OnActivateCommand事件,在用户界面里手动调用该命令,看.OnActivateCommand触发时出现的命令内部名是什么。例如,假设我们想考察【驱动约束】对话框




先写段代码,启动UserInputEvents.OnActivateCommand,然后手动执行,OnActivateCommand触发时会显示出命令内部名是:"AssemblyDriveConstraintCtxCmd"




版权声明:转载请注明原链接,以便看到及时更新

调用Inventor命令 - 续

在上次的文章里,我介绍了如何直接调用Inventor命令 http://blog.csdn.net/autodeskinventorapi/article/details/17138055 这在某些情...
  • autodeskinventorapi
  • autodeskinventorapi
  • 2013年12月30日 14:22
  • 1066

【新版】Inventor二次开发学习指南

以前曾写过一篇文章:http://blog.csdn.net/autodeskinventorapi/article/details/8120770。由于Autodesk University 中国已...
  • autodeskinventorapi
  • autodeskinventorapi
  • 2016年05月16日 17:32
  • 3366

android开发资源网站,下载各版本SDK源码、Android Studio、NDK等

android开发资源网站,下载各版本SDK源码、Android Studio、NDK等
  • menglele1314
  • menglele1314
  • 2015年07月17日 16:49
  • 3493

运用Open InventorTM 进行面向对象的3D图形开发

        The Inventor Mentor这本书主要是面向图形编程人员和应用程序开发人员,讲解面向对象的3D开发包-Open Inventor。Open Inventor 是一个用于开发交...
  • Augusdi
  • Augusdi
  • 2010年07月28日 15:58
  • 790

AppInventor中调用百度地图方法

关于在appinventor启用地图的例子,老巫婆的教程中用的是google map,但是,这个在我朝没法用,通用的还是百度地图,没办法,只能想办法找到百度地图的启动方式了,下面是我的做法,留个脚印。...
  • yonyyony
  • yonyyony
  • 2016年09月01日 09:58
  • 1494

用程序启动Inventor失败的原因和解决方法

有时候用 "CreateObject("Inventor.Application")"来启动Inventor会失败,但是随后再执行这个命令时Inventor又会成功启动,这是怎么回事?下面是我们的技术...
  • barbarahan
  • barbarahan
  • 2010年01月14日 17:58
  • 3140

开发者训练营快报

未能有时间参加本次开发者训练营的同学肯定想知道大会的情况,用我们中国区团队经理Joe的话讲:胜利举行!:)参见Joe的博客: http://blog.csdn.net/joexiongjin/art...
  • autodeskinventorapi
  • autodeskinventorapi
  • 2013年06月26日 13:26
  • 779

AutoCAD .NET API二次开发学习指南

作者:杜长宇 – Autodesk开发技术顾问 2012年4月20日 AutoCAD作为Autodesk公司的旗舰产品,已经在各个行业得到了广泛的应用,DWG格式更是成为事实上的工业标准。与其说...
  • barbarahan
  • barbarahan
  • 2012年04月23日 17:38
  • 10863

读取Inventor文件导入/导出选项(NameValueMap)

Inventor提供了与很多文件格式(比如DWF, DWG, DXF, IGES, STEP, SAT等)的导入/导出的功能。我们的二次开发人员可能会遇到需要对其中一些参数进行修改/设置的情况。 对于...
  • barbarahan
  • barbarahan
  • 2009年11月02日 18:35
  • 3417

App Inventor for Android 使用总结

昨日我们报道了Google App Inventor for Android,它是一个基于网页的开发环境,即使是没有开发背景的人也能通过他轻松创建Android应用程序。这个产品已经测试了一年之久了,...
  • zbl1433977388
  • zbl1433977388
  • 2014年05月26日 12:59
  • 243
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:调用Inventor命令
举报原因:
原因补充:

(最多只允许输入30个字)