SolidWorks机械工程师网——最大的SolidWorks学习平台

标题: 求大佬修改宏,急用!!!! [打印本页]

作者: iawifj    时间: 2022-7-31 18:12
标题: 求大佬修改宏,急用!!!!
  1. Dim swApp As SldWorks.SldWorks
  2. Dim Part As SldWorks.ModelDoc2
  3. Dim thisFeat As SldWorks.Feature
  4. Dim thisSubFeat As SldWorks.Feature
  5. Dim cutFolder As Object
  6. Dim BodyCount As Integer
  7. Dim custPropMgr As SldWorks.CustomPropertyManager
  8. Dim propNames As Variant
  9. Dim vName As Variant
  10. Dim propName As String
  11. Dim Value As String
  12. Dim resolvedValue As String
  13. Dim bjkcd As Double
  14. Dim bjkkd As Double
  15. Dim zw As Double
  16. Dim qgcdwb As Double
  17. Dim qgcdnb As Double
  18. Dim qg As Double




  19. Sub main()
  20. Set swApp = Application.SldWorks
  21. Set Part = swApp.ActiveDoc
  22. Set thisFeat = Part.FirstFeature
  23. Do While Not thisFeat Is Nothing '遍历设计树
  24. If thisFeat.GetTypeName = "SolidBodyFolder" Then
  25. thisFeat.GetSpecificFeature2.UpdateCutList
  26. End If
  27. Set thisSubFeat = thisFeat.GetFirstSubFeature
  28. Do While Not thisSubFeat Is Nothing
  29. If thisSubFeat.GetTypeName = "CutListFolder" Then '查找切割清单
  30. Set cutFolder = thisSubFeat.GetSpecificFeature2
  31. End If
  32. If Not cutFolder Is Nothing Then
  33. BodyCount = cutFolder.GetBodyCount
  34. If BodyCount > 0 Then
  35. Set custPropMgr = thisSubFeat.CustomPropertyManager
  36. If Not custPropMgr Is Nothing Then
  37. propNames = custPropMgr.GetNames '获取切割清单属性的数据全部名称并放入数组
  38. If Not IsEmpty(propNames) Then
  39. For Each vName In propNames
  40. propName = vName
  41. custPropMgr.Get2 propName, Value, resolvedValue '获取全部属性名称 ,数值和评估的值
  42. If propName = "边界框长度" Then bjkcd = resolvedValue '判断是否是自己所需要的数据,如果是就获取
  43. If propName = "边界框宽度" Then bjkkd = resolvedValue
  44. If propName = "切割长度-外部" Then qgcdwb = resolvedValue
  45. If propName = "切割长度-内部" Then qgcdnb = resolvedValue
  46. If propName = "切除" Then qg = resolvedValue
  47. If propName = "折弯" Then zw = resolvedValue
  48. If propName = "钣金厚度" Then bjhd = resolvedValue
  49. Next vName
  50. End If
  51. End If
  52. End If
  53. End If
  54. Set thisSubFeat = thisSubFeat.GetNextSubFeature
  55. Loop
  56. Set thisFeat = thisFeat.GetNextFeature
  57. Loop
  58. blnretval = Part.DeleteCustomInfo2("", "展开长度") '删除属性栏上摘要信息的数据
  59. blnretval = Part.DeleteCustomInfo2("", "展开宽度")
  60. blnretval = Part.DeleteCustomInfo2("", "切割长度-外部")
  61. blnretval = Part.DeleteCustomInfo2("", "切割长度-内部")
  62. blnretval = Part.DeleteCustomInfo2("", "穿孔数")
  63. blnretval = Part.DeleteCustomInfo2("", "折弯")
  64. blnretval = Part.DeleteCustomInfo2("", "板厚")
  65. blnretval = Part.AddCustomInfo3("", "展开长度", swCustomInfoText, bjkcd) '添加数据到摘要信息
  66. blnretval = Part.AddCustomInfo3("", "展开宽度", swCustomInfoText, bjkkd)
  67. blnretval = Part.AddCustomInfo3("", "切割长度-外部", swCustomInfoText, qgcdwb)
  68. blnretval = Part.AddCustomInfo3("", "切割长度-内部", swCustomInfoText, qgcdnb)
  69. blnretval = Part.AddCustomInfo3("", "穿孔数", swCustomInfoText, qg)
  70. blnretval = Part.AddCustomInfo3("", "折弯", swCustomInfoText, zw)
  71. blnretval = Part.AddCustomInfo3("", "板厚", swCustomInfoText, bjhd)
  72. End Sub
复制代码
把宏修成钣金下料尺寸数据放在一起显示,重谢!!!

111.png

作者: zhanganhua998    时间: 2022-8-1 09:32
顶一下,坐等高手!
作者: xinzq123    时间: 2022-8-1 09:35
SolidWorks机械工程师网,顶一下。
作者: 刘茂机械    时间: 2022-8-1 14:20
blnretval = Part.DeleteCustomInfo2("", "展开长度") '删除属性栏上摘要信息的数据
blnretval = Part.DeleteCustomInfo2("", "展开宽度")
blnretval = Part.DeleteCustomInfo2("", "切割长度-外部")
blnretval = Part.DeleteCustomInfo2("", "切割长度-内部")
blnretval = Part.DeleteCustomInfo2("", "穿孔数")
blnretval = Part.DeleteCustomInfo2("", "折弯")
blnretval = Part.DeleteCustomInfo2("", "板厚")
blnretval = Part.DeleteCustomInfo2("", "开料尺寸")
blnretval = Part.AddCustomInfo3("", "展开长度", swCustomInfoText, bjkcd) '添加数据到摘要信息
blnretval = Part.AddCustomInfo3("", "展开宽度", swCustomInfoText, bjkkd)
blnretval = Part.AddCustomInfo3("", "切割长度-外部", swCustomInfoText, qgcdwb)
blnretval = Part.AddCustomInfo3("", "切割长度-内部", swCustomInfoText, qgcdnb)
blnretval = Part.AddCustomInfo3("", "穿孔数", swCustomInfoText, qg)
blnretval = Part.AddCustomInfo3("", "折弯", swCustomInfoText, zw)
blnretval = Part.AddCustomInfo3("", "板厚", swCustomInfoText, bjhd)
blnretval = Part.AddCustomInfo3("", "开料尺寸", swCustomInfoText, bjkcd&”x“&bjkkd&”x“&bjhd)
End Sub

作者: chenzhg    时间: 2022-8-1 16:57
顶一下,坐等高手!
作者: jugege    时间: 2022-8-1 20:14
在"end sub“前加上一句:”blnretval = Part.AddCustomInfo3("", "展开尺寸", swCustomInfoText, bjkcd & "x" & bjkkd & "x" & bjhd)
作者: igxoqve    时间: 2022-8-2 08:41
,这个宏呵呵
作者: Alex_Wang    时间: 2022-8-2 09:07
顶一下,坐等沙发
作者: nbxhynbxhy    时间: 2022-8-2 09:17
宏,有点啰嗦了,可以更简洁一点,支持5五楼的
作者: MJATM01    时间: 2022-8-6 08:55
感谢楼主分享,很不错!
作者: iawifj    时间: 2022-8-7 16:33
能不能做成在装配体一键批量所有钣金零部件写入到自定义属性里
作者: iawifj    时间: 2022-8-12 00:13
刘茂机械 发表于 2022-8-1 14:20
blnretval = Part.DeleteCustomInfo2("", "展开长度") '删除属性栏上摘要信息的数据
blnretval = Part.Del ...

按照修改内容更正之后,运行还是出错呢

123.png

作者: 刘茂机械    时间: 2022-8-12 20:54
iawifj 发表于 2022-8-12 00:13
按照修改内容更正之后,运行还是出错呢

字符不对  直接复制不行吗
作者: iawifj    时间: 2022-8-13 09:25
刘茂机械 发表于 2022-8-12 20:54
字符不对  直接复制不行吗

其实我就是想在钣金切割清单生成多一项,(边界框长度×边界框宽度×钣金厚度)属性名称为“长度”!不用写入自定义属性里,能做到吗??

88888.jpg

作者: 470548400    时间: 2022-8-19 10:05
牛牛牛牛牛牛牛牛牛
作者: 懒懒的高贵    时间: 2022-8-23 17:26
很不错,顶一下!




欢迎光临 SolidWorks机械工程师网——最大的SolidWorks学习平台 (https://www.swbbsc.com/) Powered by Discuz! X3.2