找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
打印 上一主题 下一主题

[原创] 【遍歷宏】在總裝配內零件的自定義屬性寫入配套數量(開放代碼)最新版本在122樓

  [复制链接]
371
发表于 2017-6-5 09:00:49 | 只看该作者
523491086 发表于 2017-6-3 17:36
那我称呼您丹大好了,我根据您的代码加进去以后,输入订单数量后,在零件属性里面没有相应的评估值,请看 ...

檢查一下代碼有沒有錯誤,我這邊測試是沒有問題的~






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
372
发表于 2017-6-5 10:03:45 | 只看该作者
gt.adan 发表于 2017-6-5 09:00
檢查一下代碼有沒有錯誤,我這邊測試是沒有問題的~

丹大,您好,刚刚又回去仔细的看了一下代码,发现跟您的代码没有出入,找不到问题的所在?麻烦再指点一下,谢谢。。或者可以直接传一个宏文件给我看看吗

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
373
发表于 2017-6-5 10:59:32 | 只看该作者
523491086 发表于 2017-6-5 10:03
丹大,您好,刚刚又回去仔细的看了一下代码,发现跟您的代码没有出入,找不到问题的所在?麻烦再指点一下 ...

指點不敢當,用的都是悶老大和萊大的代碼,我只是加加減減瞎湊和的。
回到主題,看來您並沒有"仔細"檢查代碼內容,所以忽略了其中不同的地方。

  1. Dim TopDocPathOnly As String
  2. Dim PartsCollect() As String '遍歷清單(陣列)
  3. Dim InCollectCount As Double '遍歷清單長度
  4. Dim CustomInfoQTY As String
  5. Dim AssemQTY As String
  6. Dim TotalQTY As String

  7. Sub main()
  8. Set swApp = Application.SldWorks 'SW對像
  9. Set TopDoc = swApp.ActiveDoc '總裝對像
  10. If TopDoc.GetType <> 2 Then Exit Sub '不是裝配=退出
  11. TopDocPathSplit = Split(TopDoc.GetPathName, "") '分割
  12. TopDocName = TopDocPathSplit(UBound(TopDocPathSplit)) '總裝文件名稱
  13. TopDocName = Left(TopDocName, Len(TopDocName) - 7) '總裝文件名稱(排除.SLDASM)
  14. TopDocPathOnly = Mid(TopDoc.GetPathName, 1, InStrRev(TopDoc.GetPathName, "", -1)) '總裝的完整目錄
  15. TopConfString = TopDoc.GetActiveConfiguration.Name '總裝配置名稱
  16. CustomInfoQTY = "單機用量"
  17. AssemQTY = InputBox("請輸入本次訂單數量:", "")
  18. TotalQTY = "本次訂單總用量"
  19. If CustomInfoQTY = "" Then Exit Sub '按下取消離開宏
  20. InCollectCount = 1 '遍歷清單長度基數
  21. ReDim PartsCollect(InCollectCount) '定義陣列項數
  22. SubAsm TopDoc, TopConfString '遍歷
  23. Beep
  24. MsgBox "完成"
  25. End Sub

  26. Function SubAsm(AsmDoc, ConfString)
  27. Set Configuration = AsmDoc.GetConfigurationByName(ConfString)
  28. Set RootComponent = Configuration.GetRootComponent
  29. Components = RootComponent.GetChildren
  30. For Each Child In Components
  31.     Set ChildModel = Child.GetModelDoc
  32.     If Not (ChildModel Is Nothing) Then '排除抑制及輕化
  33.         ChildConfString = Child.ReferencedConfiguration '零件配置名稱
  34.         ChildType = ChildModel.GetType
  35.         ChildPathSplit = Split(Child.GetPathName, "") '分割
  36.         ChildName = ChildPathSplit(UBound(ChildPathSplit)) '零件文件名稱
  37.         
  38.         ChildPathOnly = Mid(Child.GetPathName, 1, InStrRev(Child.GetPathName, "", -1)) '零件的完整目錄
  39.         If ChildPathOnly = Replace(ChildPathOnly, TopDocPathOnly, "") Then SamePath = False Else SamePath = True '零件是否在總裝目錄或往下目錄
  40.         
  41.         If SamePath And (Not Child.ExcludeFromBOM) And (Not Child.IsEnvelope) Then '跳過:不在總裝目錄或其往下目錄 或 不包括在材料明細表中 或 是個封套
  42.             UNIT_OF_MEASURE = ChildModel.CustomInfo2(ChildConfString, "備用倍數")
  43.             If (UNIT_OF_MEASURE = 0) Or (UNIT_OF_MEASURE = "") Then UNIT_OF_MEASURE = 1 '備用量除錯
  44.             inCollect = False '重置判斷變量
  45.             For Each PartinCollect In PartsCollect '判斷是否已在遍歷清單內
  46.                 If ChildConfString & "@" & ChildName = PartinCollect Then inCollect = True
  47.             Next
  48.             If inCollect Then '已在遍歷清單內
  49.                 ht_Qty = ChildModel.CustomInfo2(ChildConfString, CustomInfoQTY) + 1 * UNIT_OF_MEASURE
  50.                 all_Qty = AssemQTY * ht_Qty
  51.                 ChildModel.DeleteCustomInfo2 ChildConfString, CustomInfoQTY
  52.                 ChildModel.AddCustomInfo3 ChildConfString, CustomInfoQTY, 30, ht_Qty
  53.                 ChildModel.DeleteCustomInfo2 ChildConfString, "本次訂單數量"
  54.                 ChildModel.AddCustomInfo3 ChildConfString, "本次訂單數量", 30, AssemQTY
  55.                 ChildModel.DeleteCustomInfo2 ChildConfString, TotalQTY
  56.                 ChildModel.AddCustomInfo3 ChildConfString, TotalQTY, 30, all_Qty
  57.             Else '不在遍歷清單內(首次處理)
  58.                 all_Qty = AssemQTY * UNIT_OF_MEASURE
  59.                 ChildModel.DeleteCustomInfo2 ChildConfString, CustomInfoQTY
  60.                 ChildModel.AddCustomInfo3 ChildConfString, CustomInfoQTY, 30, UNIT_OF_MEASURE
  61.                 ChildModel.DeleteCustomInfo2 ChildConfString, "本次訂單數量"
  62.                 ChildModel.AddCustomInfo3 ChildConfString, "本次訂單數量", 30, AssemQTY
  63.                 ChildModel.DeleteCustomInfo2 ChildConfString, TotalQTY
  64.                 ChildModel.AddCustomInfo3 ChildConfString, TotalQTY, 30, all_Qty
  65.                 InCollectCount = InCollectCount + 1 '遍歷清單長度基數+1
  66.                 ReDim Preserve PartsCollect(InCollectCount) '重新定義陣列項數(保留內含數據)
  67.                 PartsCollect(InCollectCount - 1) = ChildConfString & "@" & ChildName '加入到遍歷清單中
  68.                 ChildModel.SetUserPreferenceIntegerValue swUnitSystem, swUnitSystem_Custom '單位系統=Custom
  69.             End If
  70.             If ChildType = 2 Then
  71.                 SubAsm ChildModel, ChildConfString '如果是裝配則向下遍歷
  72.             End If
  73.             
  74.         End If
  75.     End If
  76. Next
  77. End Function

复制代码


374
发表于 2017-6-5 13:28:58 | 只看该作者
gt.adan 发表于 2017-6-5 10:59
指點不敢當,用的都是悶老大和萊大的代碼,我只是加加減減瞎湊和的。
回到主題,看來您並沒有"仔細"檢查 ...

,丹大威武,问题解决了,真的非常感谢这么多天丹大一直关注我的问题,祝丹大烦恼少少,生活有滋味,另外也祝开思越办越好
PS:不过不知道什么原因我直接把丹大的代码拿过来用是有问题的,这次真的是再仔细的核对与闷大和莱大的代码,然后整合了一下,我最终也成功了。噢耶

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
375
发表于 2017-6-5 14:40:30 | 只看该作者
523491086 发表于 2017-6-5 13:28
,丹大威武,问题解决了,真的非常感谢这么多天丹大一直关注我的问题,祝丹大烦恼少少,生活 ...

我想,錯誤多半是繁體簡體所致。
總之,問題解決了就好~
376
发表于 2017-6-5 14:48:07 | 只看该作者
gt.adan 发表于 2017-6-5 14:40
我想,錯誤多半是繁體簡體所致。
總之,問題解決了就好~

问题解决了就好了
377
发表于 2017-6-6 17:10:31 | 只看该作者
为楼主钻研的精神鼓励
378
发表于 2017-6-6 17:57:37 | 只看该作者
真是帮了大忙!!!!楼主威武!上次对零件连续工作15个小时!
379
发表于 2017-6-6 19:37:39 | 只看该作者
wwggkk 发表于 2014-10-28 19:11
可以了,非常感谢{:soso_e181:}

为什么我的不行啊能不能发个宏文件啊
380
发表于 2017-6-7 13:33:50 | 只看该作者
感谢分享,楼主厉害,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2025-1-10 05:21 , Processed in 0.039820 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2025 www.iCAx.org

快速回复 返回顶部 返回列表