调用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 这在某些情...

C#_Inventor插件中调用WPF实例

  • 2009年10月21日 11:48
  • 23KB
  • 下载

APP Inventor网络微数据库tinywebdb的增删查改

【APPInventor教程】 网络微数据库tinywebdb的增删查改   教程中使用的网络微数据库地址是: http://tinywebdb.appinventor.space/webdb...
  • crxis
  • crxis
  • 2016年04月03日 12:11
  • 2547

Inventor 2014 API 新功能 (3) 控制点创建样条曲线

2014草图方面有几项重要的增强。 首先是全面支持2D或3D样条曲线的控制点。可以通过控制点创建样条,并可修改控制点。以往我们是通过拟合点来创建样条:SketchSplines.Add。如今新的集合...

Inventor中工作点导出到excel

一位顾客在零件中创建了许多工作点,然后客户需要一个Excel文件,包含这些工作点的坐标。下面的一个VBA宏,将创建一个CSV文件,其中包含了零件中工作点的坐标。如果您在运行宏之前选择了一部分工作点,那...

App Inventor (4-1) 透過藍牙傳送訊號給 Arduino

由於智慧型手機的普及,幾乎人人都各自擁有一台,所以我將發一系列教導大家如何將手機與Arduino做結合。 若沒學過java的控制手機怎辦?別擔心,本系列所用的程式語言為appinventor...
  • zgc261
  • zgc261
  • 2014年04月05日 22:59
  • 2408

Open Inventor练习-SoEventCallback,SoKeyboardEvent键盘事件(红绿灯)

SoEventCallback是Open Inventor用来管理事件的,SoKeyboardEvent是键盘事件,SO_KEY_PRESS_EVENT宏可以获得是键盘上哪个键被操作了,SoSwitc...
  • Augusdi
  • Augusdi
  • 2011年10月10日 16:10
  • 1540

Open Inventor_分隔符节点

在上一篇文章http://blog.csdn.net/pursue16/article/details/71453750的例子中,存在着很多不方便的地方。...

初识App Inventor 2(AI2)

先搬一下百度的概念吧:App Inventor 原是Google实验室(Google Lab)的一个子计划,由一群Google工程师和勇于挑战的Google使用者共同参与设计完成。Google A...

Open Inventor练习-SoWinExaminerViewer的继承演示

Open Inventor遵循C++的语言机制,具有面向对象编程的性质,下面演示了SoWinExaminerViewer得继承,代码如下。 // TestCoin.cpp : Defines the...
  • Augusdi
  • Augusdi
  • 2011年10月13日 18:04
  • 1973
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:调用Inventor命令
举报原因:
原因补充:

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