iCAx开思网

标题: 解决遍历宏保存问题 暨 阿丹要求的批量修改体积单位 [打印本页]

作者: 莱虫    时间: 2014-9-18 23:41
标题: 解决遍历宏保存问题 暨 阿丹要求的批量修改体积单位
在遍历宏内加入以下代码:
  1.                 ChildModel.SetUserPreferenceIntegerValue swUnitsMassPropMass, swUnitsMassPropMass_Grams '设质量定单位为克
  2.                 ChildModel.DeleteCustomInfo2 "", "重量" '删除重量自定义属性
  3.                 ChildModel.DeleteCustomInfo2 ChildConfString, "重量" '删除重量配置特定属性
  4.                 ChildModel.AddCustomInfo3 ChildConfString, "重量", 30, Chr(34) & "SW-Mass@@" & ChildConfString & "@*" & ChildName & Chr(34) '加入重量配置特定属性
  5.                 ChildModel.SetUserPreferenceIntegerValue swUnitsMassPropLength, swCM '设定体积单位为厘米
  6.                 ChildModel.SetUserPreferenceIntegerValue swUnitsMassPropVolume, swUnitsMassPropVolume_Centimeters3 '设定单位每立方厘米
  7.                 ChildModel.DeleteCustomInfo2 "", "体积" '删除体积自定义属性
  8.                 ChildModel.DeleteCustomInfo2 ChildConfString, "体积" '删除体积配置特定属性
  9.                 ChildModel.AddCustomInfo3 ChildConfString, "体积", 30, Chr(34) & "SW-Volume@@" & ChildConfString & "@*" & ChildName & Chr(34) '加入体积配置特定属性
  10.                 ChildModel.SetUserPreferenceIntegerValue swUnitsMassPropDecimalPlaces, 8 '质量及体积小数后8位
  11.                 ChildModel.SketchManager.Insert3DSketch True '插入三低草图
  12.                 ChildModel.SketchManager.Insert3DSketch True '离开三低草图
复制代码
加入到下图红框位置:
[attach]1207181[/attach]



作者: gt.adan    时间: 2014-9-18 23:52
本帖最后由 gt.adan 于 2014-9-20 17:05 编辑

謝謝萊大!先行收下!明日好好享用~~
作者: wutong490    时间: 2014-9-19 08:40
闷 菜 大
才知道

作者: ltq59    时间: 2014-9-19 11:30
恭喜大,阿丹中招了
作者: gt.adan    时间: 2014-9-19 17:30
本帖最后由 gt.adan 于 2014-9-20 17:05 编辑

報告萊大!
阿丹已經按您分享的代碼做修改了,也成功生成了裝配需要數目、質量、體積三個屬性…
可是,單位沒有變化…(應該是114.22xxxxxx)

[attach]1207232[/attach]

[attach]1207233[/attach]





作者: 莱虫    时间: 2014-9-19 17:51
gt.adan 发表于 2014-9-18 23:52
謝謝菜大!先行收下!明日好好享用~~

丹婶误会啦,俺乃『莱茵河之虫』也,与【菜】一点关系也无滴。



作者: Francis    时间: 2014-9-19 18:37
本帖最后由 Francis 于 2014-9-19 18:47 编辑

估計蛋大在不同版本試驗時引起"引用"丟失, 導致某些"常數代碼"懸空.

解決方法很簡單, 不用"常數代碼"直接用"值",
亦即是說
swUnitsMassPropMass 改為 259
swUnitsMassPropMass_Grams 改為 2
swUnitsMassPropLength 改為 258
swCM 改為 1
swUnitsMassPropVolume 改為 260
swUnitsMassPropVolume_Centimeters3 改為 5

備註:
swUnitsMassPropMass
(1=毫克, 2=克, 3=公斤, 4=磅)

swUnitsMassPropLength
(0=毫米, 1=厘米, 2=米, 3=英寸, 4=英尺, 5=英尺+寸, 6=埃米, 7=納米, 8=微米, 9=千分一英寸, 10=百萬分一英寸)

swUnitsMassPropVolume
(1=立方埃米, 2=立方納米, 3=立方微米, 4=立方毫米, 5=立方厘米, 6=立方米, 7-10=英制容量)





作者: gt.adan    时间: 2014-9-19 23:58
本帖最后由 gt.adan 于 2014-9-20 00:01 编辑
Francis 发表于 2014-9-19 18:37
估計蛋大在不同版本試驗時引起"引用"丟失, 導致某些"常數代碼"懸空.

解決方法很簡單, 不用"常數代碼"直接 ...

阿丹回覆得晚了,悶大勿怪~
報告悶大,回家試了一下您說的直接用「值」來替換代碼,但還是失敗的。
後來發現,我的零件模板,其單位系統是設定在MMGS,
腦筋一轉把模板的單位系統改成 Custom 再重新建模一次,
按菜大的代碼執行宏文件以後,成功了!但…這是神馬情況呀?

[attach]1207248[/attach]





[attach]1207249[/attach]
作者: Francis    时间: 2014-9-20 00:15
gt.adan 发表于 2014-9-19 23:58
阿丹回覆得晚了,悶大勿怪~
報告悶大,回家試了一下您說的直接用「值」來替換代碼,但還是失敗的。
後來 ...

感謝丹哥孜孜不倦研習, 找出了原因是MMGS封鎖旗下設定, 欽敬! 欽敬!

在設定單位語句前插入以下一句, 應該可以解決了:
  1. ChildModel.SetUserPreferenceIntegerValue swUnitSystem, swUnitSystem_Custom '單系統位=Custom
复制代码
  1. ChildModel.SetUserPreferenceIntegerValue 263, 4 '單系統位=Custom
复制代码

作者: gt.adan    时间: 2014-9-20 00:42
Francis 发表于 2014-9-20 00:15
感謝丹哥孜孜不倦研習, 找出了原因是MMGS封鎖旗下設定, 欽敬! 欽敬!

在設定單位語句前插入以下一句, 應 ...

報告悶老大!!成功了!!

[attach]1207250[/attach]


[attach]1207251[/attach]

可以好好睡覺了…><
作者: zhg.x    时间: 2014-9-20 08:42
gt.adan 发表于 2014-9-20 00:42
報告悶老大!!成功了!!

丹大对于技术的研习孜孜不倦,令俺佩服。
可惜丹兄的“视力”却不敢恭维啊。。。(哈哈哈)
10楼的贴图中又将“莱”打成了“菜”。。。。
PS:丹大是不是要给俺加一分技术啊。。。

作者: Francis    时间: 2014-9-20 15:44
灯具小翔 发表于 2014-9-20 08:42
丹大对于技术的研习孜孜不倦,令俺佩服。
可惜丹兄的“视力”却不敢恭维啊。。。(哈哈哈)
10楼的贴图 ...

請問小翔解決了遍歷宏的問題了嗎?
若知道萊蟲用了什麼方法, 麻煩告知, 謝謝!


作者: wwggkk    时间: 2014-9-22 19:33
本帖最后由 wwggkk 于 2014-9-22 20:57 编辑

为何莱大的代码和闷大提示的不一样,莱大的这条代码是放在第一个END IF下面的,而闷大提示是放在第二个END if下面,到底哪个是正确的?我试了一下,两种都能用,为什么?


作者: wwggkk    时间: 2014-9-22 21:23
本帖最后由 wwggkk 于 2014-9-22 21:37 编辑
Francis 发表于 2014-9-20 15:44
請問小翔解決了遍歷宏的問題了嗎?
若知道萊蟲用了什麼方法, 麻煩告知, 謝謝!

为何那个遍历宏在我这个文档不能用呢?文档目录如图,运行宏以后,电脑运行一段时间,然后打开零件,没有任何改变?是否子装配放在子目录里的原因?我在那个微型电脑锣里面测试都正常,在其他较简单的文档测试也正常,就是这个比较复杂的文档不能用

找到症结了,原来是文档太大,进入了大型装配体模式,所以零件以轻化方式装入,闷大那个宏是排除轻化的

作者: Francis    时间: 2014-9-22 21:39
wwggkk 发表于 2014-9-22 21:23
为何那个遍历宏在我这个文档不能用呢?文档目录如图,运行宏以后,电脑运行一段时间,然后打开零件,没有 ...

請到遍歷宏主題逐一帖子從頭到尾看一次, 自然會明白.


作者: Francis    时间: 2014-9-22 21:42
wwggkk 发表于 2014-9-22 21:23
为何那个遍历宏在我这个文档不能用呢?文档目录如图,运行宏以后,电脑运行一段时间,然后打开零件,没有任何改变?是否子装配放在子目录里的原因?我在那个微型电脑锣里面测试都正常,在其他较简单的文档测试也正常,就是这个比较复杂的文档不能用

找到症结了,原来是文档太大,进入了大型装配体模式,所以零件以轻化方式装入,闷大那个宏是排除轻化的

明白了就好了

作者: wwggkk    时间: 2014-9-22 21:45
本帖最后由 wwggkk 于 2014-9-22 21:46 编辑
Francis 发表于 2014-9-22 21:39
請到遍歷宏主題逐一帖子從頭到尾看一次, 自然會明白.

请问闷大,那个遍历宏为何要排除轻化呢?

If Not (ChildModel Is Nothing) Then '排除抑制及輕化

是有哪些方面的考虑?这样的话在大型装配体模式下就不能使用了

作者: Francis    时间: 2014-9-22 22:19
wwggkk 发表于 2014-9-22 21:45
请问闷大,那个遍历宏为何要排除轻化呢?

If Not (ChildModel Is Nothing) Then '排除抑制及輕化

抑制或輕化的零件, 其檔案是沒讀入到內存的( 亦即是說該零件沒被開啟), 因此沒渠道寫入屬性到這些零件.

比方說, wwggkk兄被邀到一宴會, 而wwggkk兄則以視像方式赴會, 真人並無到場, 宴會過後, 山珍海錯有沒有落到wwggkk兄肚子裡呢? 以現今的科技, 當然不可能, 但不代表未來日子不能實現.
作者: wwggkk    时间: 2014-9-22 22:26
Francis 发表于 2014-9-22 22:19
抑制或輕化的零件, 其檔案是沒讀入到內存的( 亦即是說該零件沒被開啟), 因此沒渠道寫入屬性到這些零件.
...

明白了!谢谢

作者: 楠柠檬、    时间: 2015-5-14 10:20
本帖最后由 楠柠檬、 于 2015-5-14 10:23 编辑

莱大,有个问题,
我按照您的方法改了代码,然后计算出来的数值是
总装配体包含这一零件的所有的数量,也包括子装配体含有这一零件的数量
能不能做成 不包含子装配体这一零件的数量?
————————————————————————————————
诶,不对,我好像搞错了,您弄得体积和质量链接链接成功了,
我问的问题好像是闷大给的代码{:soso_e134:}

作者: machongchong753    时间: 2015-5-31 22:01
学习中……
作者: xiaoxifeng    时间: 2016-9-12 17:08
能不能做个可以把零件文件转换成SWB文件的宏啊
作者: s78763036    时间: 2018-10-9 17:37
请问一下,遍历宏如何剔除指定的零件,我有一些标准件,GB开头的,这些零件我不需要遍历宏进行分离图号名称写入属性,我想知道如何把GB开头的不包含的遍历清单,自己捣鼓没结果,望指教,谢谢!
作者: 风中de沙    时间: 2018-11-25 10:01
谢谢楼主的代码,帮我解决了一大难题,总算可以清除原有的属性值了。
作者: a4778006    时间: 2020-6-19 17:22
莱大,请教一个问题,再遍历宏统计数量的时候,怎么做到如果是轻化状态先还原轻化状态再统计数量啊。因为有宏会跳过轻化的零件。

作者: xiaocake    时间: 2020-6-19 19:03
本帖最后由 xiaocake 于 2020-6-19 19:04 编辑
a4778006 发表于 2020-6-19 17:22
莱大,请教一个问题,再遍历宏统计数量的时候,怎么做到如果是轻化状态先还原轻化状态再统计数量啊。因为有 ...

方法1:执行代码前先手动将装配体还原
方法2:直接在代码里加上还原装配体所有子件的代码:
AssemblyDoc.ResolveAllLightWeightComponents False









欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3