Gear Up Cloud

分享 Autodesk Inventor,Fusion,AutoCAD 和Autodesk云技术API开发的资料和经验

调用Inventor命令

通过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"




阅读更多
版权声明:转载请注明原链接,以便看到及时更新 https://blog.csdn.net/autodeskinventorapi/article/details/17138055
个人分类: 综合
上一篇按子装级别统计其零件的个数
下一篇Autodesk 上海办公室招聘启事:API 设计师
想对作者说点什么? 我来说一句

<em>Inventor</em>_2008快速入门

2018年05月09日 0B 下载

autodesk inventor的操作快捷键

2012年05月15日 202KB 下载

没有更多推荐了,返回首页

关闭
关闭