| 会员登录 立即注册
设为首页 加入收藏 关注我们: 关注公众号

关注公众号拿干货

CATIA论坛
加入联盟

扫微信(sakula)入联盟

CATIA软件
风格切换

catia论坛

搜索

CATIA联盟

[CATIA参数化设计] catia vba二次开辟工具|批量导出鸿沟盒尺寸

[复制链接]
lgy_103 发表于 2019-2-12 11:03:06 | 显示全部楼层 |阅读模式
lgy_103
2019-2-12 11:03:06 505 0 看全部
  前言:本文首要探讨若何基于catia vba实现键导出批量导出装配件的鸿沟盒尺寸到excel的功用。此外,还将探讨若何停止startcommand号令挪用的号令对话框的方式。

  0视频演示
  

  一、目录

  1. 视频演示

  2. 编程思绪

  3. 批量获得鸿沟盒尺寸的思绪

  4. 若何获得鸿沟盒尺寸

  5. 若何中断startcommand挪用的号令对话框

  6. vba中若何延时

  7. 若何设备号令提醒栏的消息

  8. 代码详解-批量导出装配件的鸿沟盒尺寸openinnewwindow

  9. 代码详解-批量导出装配件的鸿沟盒尺寸sendkeys

  10. 附录代码-挑选装配件在新窗口翻开后显现鸿沟盒尺寸

  11. sendkeys的利用方式

  12. 参考材料

  二、编程思绪

  先在excel中设计好我们想要导出的模板,然后间接录制宏,完成excel部分的代码。设计的款式以下图,究竟上,我们可以导出measure inertia测得的一切参数。
   catia vba二次开辟工具|批量导出鸿沟盒尺寸95

  大致的编程思绪以下:

  1)批量获得xxx的思绪有哪些?

  2)若何获得到鸿沟盒的尺寸?

  3)假如经过丈量获得,若何挪用“measure inertia”号令。

  4)利用startcommand “号令”方式挪用。

  5)若何用代码获得到鸿沟盒尺寸值?

  6)若何封闭“measure inertia”号令对话框,以便停止下一次丈量。

  7)若何将成果导出到excel中?

  8)若何新建excel,设备格式等?

  9)测试,修复bug,提早躲避error。

 三、批量获得鸿沟盒尺寸的思绪

  批量获得鸿沟盒尺寸的思绪有以下几种:

  1)遍历文件夹中的零部件,翻开后获得,再封闭。

  下面的法式实现的功用是:运转法式,然后挑选文件夹,法式会自动翻开文件夹中的一切零件和装配。接下来,我们按照需要在这个代码根本上加上丈量鸿沟盒的尺寸便可以了。剩下的代码大师可以脱手写写,这里就不外多说了。
   catia vba二次开辟工具|批量导出鸿沟盒尺寸55

  2)在翻开的装配文档中,遍历结构树中的一级部品,在新窗口中翻开后丈量。

  这部分代码大师可以参考文末的以下部分:(有视频演示)

  >>>9.附录代码-挑选装配件在新窗口翻开后显现鸿沟盒尺寸

  代码实现的功用是,在翻开的装配件中,运转剧本,先选摘要丈量的一级部品,然后法式自动在新的窗口中翻开该一级部品,挪用“丈量惯量“,最初显现鸿沟盒尺寸。

  3)在翻开的装配文档中,遍历结构树中的一级部品,间接丈量。

  这类方式要处理一个题目,就是若何封闭“measure inertia”号令的对话框,前面的内容会具体先容,先简要说明思绪:

  a.利用sendkeys+延时来封闭“measure inertia”号令的对话框。这类方式时灵时不了的,测得的成果不太稳定。

  b.经过挪用“open in new window”号令,恰好可以封闭“measure inertia”号令的对话框,而且不会真真翻开一个新的窗口。这类方式测试后,获得的成果还是比力稳定的。

  c.经过翻开新的窗口,在新的窗口里挪用“measure inertia”号令的对话框,然后经过save文档来封闭“measure inertia”号令的对话框。

  测试的时辰还会发现两个题目:

  a.设备高速缓存,翻开显现化形式,批量丈量时成果不稳定,设计形式稳定。

  b.手动丈量报错,自动丈量时也会报错。

  四、若何获得鸿沟盒尺寸

  利用丈量惯量号令,该号令弹出的号令对话框中是找不到鸿沟盒尺寸bblx/bbly/bblz的。

  可是结构树里我们可以看到参数中是有这个值的。
   catia vba二次开辟工具|批量导出鸿沟盒尺寸79

  而且公式里也是找的到的。
   catia vba二次开辟工具|批量导出鸿沟盒尺寸58

  由此,我们不难猜出,经过参数索引的方式是可以获得到鸿沟盒尺寸的。

  参数索引有两种方式:

  1)。经过称号搜索.parameters.getitem("bblx").value

  2)  经过数字搜索.parameters.getitem(数字).value

  我在装配结构树中遍历一级部品,先挪用丈量惯量的号令,然后经过catia.activedocument.parameters.getitem("bblx").value方式获得每个一级部品的鸿沟盒尺寸时,碰到了一个很难处置的err,一切的一级部品获得的鸿沟盒的值都是一样的。

  接下来,经过catia.activedocument.parameters.getitem("bblx").name查找缘由。发现,当前激活的文档中包括了一切一级部品的参数,所以当前

  catia.activedocument.parameters.getitem("bblx").value只会获得到挪用的第一个丈量惯量里的鸿沟盒的尺寸值。也就是说,我们能对每个一级部品挪用丈量惯量停止丈量,虽然结构树上显现的丈量惯量的值也是正确的,可是我却没有法子获得到正确的丈量惯量下面的鸿沟盒尺寸。大师应当有好的法子,假如能分享给我就更好了。

  后来想了一个替换的法子。思绪分享给大师。

  catia.activedocument.parameters这里面包括了一切一级部品的鸿沟盒尺寸,我们晓得每次挪用丈量惯量号令,新增加的丈量惯量里的值都是加到catia.activedocument.parameters参数顺序里的最初的。

  那末,我们用“catia.activedocument.parameters.count-鸿沟盒参数的倒数位数”就能获得正确的鸿沟盒的索引值,然后catia.activedocument.parameters.item(索引值)。value就能获得我们想要的成果。

  至于鸿沟盒参数的倒数位数怎样计较,我们可以用for next 循环显现出一切的参数称号和值,大概间接在结构树上的丈量惯量下面数参数顺序,这两种都可以获得我们想要的成果。

  五、若何中断startcommand挪用的号令对话框

  按照今朝查过的材料,startcommand挪用的号令对话框是没有法子间接end的。可是有其他替换的法子。今朝找到的两种法子分享给大师。

  1)  保存文档时,号令的对话框可以干掉。

  该方式利用以下语句:catia.activedocument.save

  2)  用sendkeys发送enter键点击号令的对话框中简直定大概取消按钮

  对于丈量惯量,我们发现一个纪律,当“measure inertia”号令对话框激活时,光标会自动显现在ok按钮上,这个时辰假如我们按一个“enter”键,那末对话框便可以干掉了。
   catia vba二次开辟工具|批量导出鸿沟盒尺寸14

  接下来我们用代码来模拟上述进程,代码以下:

  privatedeclare sub sleep lib "kernel32" (byval dwmilliseconds as long)

  'conectto wscript

  dimwshshell

  setwshshell = createobject("wscript.shell")

  catia.refreshdisplay= true 'refresh to delay

  callsleep(3000) 'delay 3s

  callwshshell.appactivate("measure inertia", true) 'active frame

  'callwshshell.sendkeys("%{tab}", true) '% is alt

  callwshshell.sendkeys("{enter}", true) 'enter

  3)经过挪用“open in new window”号令,恰好可以封闭“measure inertia”号令的对话框,而且不会真真翻开一个新的窗口。

  第三种方式测试后,获得的成果还是比力稳定的。

  六、vba中若何延时

  今朝查到的有两种法子,固然必定还有其他种方式。

  1)履行doevents事务停止循环

  for =1 to 20000

  doevents ’无意义事务

  next

  2)挪用windows apl sleep提早

  privatedeclare sub sleep lib "kernel32" (byval dwmilliseconds as long)

  call sleep(3000) 'delay 3s

  七、若何设备号令提醒栏的消息

  catia.statusbar = "macrofinished"’提醒消息
   catia vba二次开辟工具|批量导出鸿沟盒尺寸21

  八、代码详解-批量导出装配件的鸿沟盒尺寸openinnewwindow

  经过挪用“open in new window”号令,恰好可以封闭“measure inertia”号令的对话框,而且不会真真翻开一个新的窗口。这类方式测试后,获得的成果还是比力稳定的。

  >>>具体代码以下
   catia vba二次开辟工具|批量导出鸿沟盒尺寸36 catia vba二次开辟工具|批量导出鸿沟盒尺寸69 catia vba二次开辟工具|批量导出鸿沟盒尺寸62 catia vba二次开辟工具|批量导出鸿沟盒尺寸20

  九、代码详解-批量导出装配件的鸿沟盒尺寸sendkeys

  利用sendkeys+延时来封闭“measure inertia”号令的对话框。这类方式时灵时不了的,测得的成果不太稳定。

  >>>具体代码以下
   catia vba二次开辟工具|批量导出鸿沟盒尺寸23 catia vba二次开辟工具|批量导出鸿沟盒尺寸66 catia vba二次开辟工具|批量导出鸿沟盒尺寸28 catia vba二次开辟工具|批量导出鸿沟盒尺寸65

  10、附录代码-挑选装配件在新窗口翻开后显现鸿沟盒尺寸

  经过翻开新的窗口,在新的窗口里挪用“measure inertia”号令的对话框,然后经过save文档来封闭“measure inertia”号令的对话框。

  >>>视频演示
  

  >>>显现成果以下图
   catia vba二次开辟工具|批量导出鸿沟盒尺寸27

  >>>具体代码以下
   catia vba二次开辟工具|批量导出鸿沟盒尺寸62 catia vba二次开辟工具|批量导出鸿沟盒尺寸100 catia vba二次开辟工具|批量导出鸿沟盒尺寸41

  十一、sendkeys的利用方式
catia vba二次开辟工具|批量导出鸿沟盒尺寸30 catia vba二次开辟工具|批量导出鸿沟盒尺寸59 catia vba二次开辟工具|批量导出鸿沟盒尺寸0 catia vba二次开辟工具|批量导出鸿沟盒尺寸11 catia vba二次开辟工具|批量导出鸿沟盒尺寸50

  >>>具体代码以下

catia vba二次开辟工具|批量导出鸿沟盒尺寸67 catia vba二次开辟工具|批量导出鸿沟盒尺寸31 catia vba二次开辟工具|批量导出鸿沟盒尺寸27

  • 您可能感兴趣
您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则 返回列表

lgy_103
限制会员给TA私信

查看:505 | 回复:0

CATIA培训| CATIA教程| CATIA下载| CATIA命令| 小黑屋| CATIA论坛
联系电话:18982019507 地址:成都市青羊区二环路西一段155号天祥广场4栋1801
版权所有 ©软易达 •( 蜀ICP备14018086号 )Copyright © 2001-2013 Comsenz Inc. All Rights Reserved.   Powered by Discuz! X3.4
折叠

Sakula小海浪


千人CATIA技术群

加入我们,一起进步

咨询热线
18982019507
微信关注"catia联盟"