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

标题: 2个宏合并为1个宏出现错误 [打印本页]

作者: nmimi    时间: 2021-6-21 17:11
标题: 2个宏合并为1个宏出现错误
自定义属性宏:
  1. Sub main()
  2. Set swApp = Application.SldWorks
  3. Set swModel = swApp.ActiveDoc
  4. Set cpm = swModel.Extension.CustomPropertyManager("")
  5. vCustInfoNameArr2 = swModel.GetCustomInfoNames
  6.   If Not IsEmpty(vCustInfoNameArr2) Then
  7.      For Each vCustInfoName2 In vCustInfoNameArr2
  8.          bRet = swModel.DeleteCustomInfo(vCustInfoName2)
  9.       Next
  10.     End If

  11. Set swApp = Application.SldWorks
  12. Set Part = swApp.ActiveDoc
  13. CurCFGname = Part.GetConfigurationNames
  14. CurCFGnameCount = Part.GetConfigurationCount
  15. For i = 0 To CurCFGnameCount - 1
  16.     Set CusPropMgr = Part.Extension.CustomPropertyManager(CurCFGname(i))
  17.     Vnamearr = CusPropMgr.GetNames
  18.     If Not IsEmpty(Vnamearr) Then
  19.         For Each Vnamearr2 In Vnamearr
  20.             bRet = Part.DeleteCustomInfo2(CurCFGname(i), Vnamearr2)
  21.         Next
  22.     End If

  23. Dim PartName As String
  24. Set swApp = Application.SldWorks
  25. Set swModel = swApp.ActiveDoc
  26. PartName = swApp.ActiveDoc.GetTitle() '获取零件图名称

  27. blnretval = swModel.DeleteCustomInfo2("", "材料")
  28. blnretval = swModel.DeleteCustomInfo2("", "钣金厚度")
  29. blnretval = swModel.DeleteCustomInfo2("", "质量")
  30. blnretval = swModel.DeleteCustomInfo2("", "体积")
  31. blnretval = swModel.DeleteCustomInfo2("", "表面积")
  32. blnretval = swModel.DeleteCustomInfo2("", "表面处理")
  33. blnretval = swModel.DeleteCustomInfo2("", "数量")
  34. blnretval = swModel.DeleteCustomInfo2("", "工序1")
  35. blnretval = swModel.DeleteCustomInfo2("", "工序2")
  36. blnretval = swModel.DeleteCustomInfo2("", "工序3")
  37. blnretval = swModel.DeleteCustomInfo2("", "工序4")
  38. blnretval = swModel.DeleteCustomInfo2("", "工序5")
  39. blnretval = swModel.DeleteCustomInfo2("", "备注")
  40. blnretval = swModel.DeleteCustomInfo2("", "折弯半径")
  41. blnretval = swModel.DeleteCustomInfo2("", "折弯系数")
  42. blnretval = swModel.DeleteCustomInfo2("", "型材长度")

  43. blnretval = swModel.AddCustomInfo3("", "材料", swCustomInfoText, """SW-Material""")
  44. blnretval = swModel.AddCustomInfo3("", "钣金厚度", swCustomInfoText, "T""厚度@钣金""")
  45. blnretval = swModel.AddCustomInfo3("", "质量", swCustomInfoText, """SW-Mass""")
  46. blnretval = swModel.AddCustomInfo3("", "体积", swCustomInfoText, """SW-Volume""")
  47. blnretval = swModel.AddCustomInfo3("", "表面积", swCustomInfoText, """SW-SurfaceArea""")
  48. blnretval = swModel.AddCustomInfo3("", "表面处理", swCustomInfoText, "")
  49. blnretval = swModel.AddCustomInfo3("", "数量", swCustomInfoText, "1")
  50. blnretval = swModel.AddCustomInfo3("", "工序1", swCustomInfoText, "2D激光")
  51. blnretval = swModel.AddCustomInfo3("", "工序2", swCustomInfoText, "折弯")
  52. blnretval = swModel.AddCustomInfo3("", "工序3", swCustomInfoText, "氩焊")
  53. blnretval = swModel.AddCustomInfo3("", "工序4", swCustomInfoText, "")
  54. blnretval = swModel.AddCustomInfo3("", "工序5", swCustomInfoText, "")
  55. blnretval = swModel.AddCustomInfo3("", "备注", swCustomInfoText, "")
  56. blnretval = swModel.AddCustomInfo3("", "折弯半径", swCustomInfoText, """D1@钣金""")
  57. blnretval = swModel.AddCustomInfo3("", "折弯系数", swCustomInfoText, """D2@钣金""")
  58. blnretval = swModel.AddCustomInfo3("", "型材长度", swCustomInfoText, """LENGTH@@@切割清单项目1@零件""")
  59. Next
  60. End Sub
复制代码
图号分离写入自定义属性宏:
  1. '定义solidwork
  2. Dim swApp As Object
  3. Dim Part As Object
  4. Dim SelMgr As Object
  5. Dim boolstatus As Boolean
  6. Dim longstatus As Long, longwarnings As Long
  7. Dim Feature As Object


  8. Dim a As Integer
  9. Dim b As String
  10. Dim m As String
  11. Dim e As String
  12. Dim k As String
  13. Dim t As String
  14. Dim c As String
  15. Dim j As Integer
  16. Dim strmat As String
  17. Dim tempvalue As String
  18. Sub main()
  19. Set swApp = CreateObject("sldworks.application")
  20. Set Part = swApp.ActiveDoc
  21. swApp.ActiveDoc.ActiveView.FrameState = 1
  22. Set CurCFG = Part.GetActiveConfiguration()
  23. ConfName = CurCFG.Name
  24. Name = swApp.ActiveDoc.GetTitle()
  25.   c = Replace(Name, " ", "")
  26. blnretval = Part.DeleteCustomInfo2("", "代号")
  27. blnretval = Part.DeleteCustomInfo2("", "名称")
  28.    b = Len(c)
  29.    e = Right(c, 7)
  30. If e = ".SLDPRT" Or e = ".SLDASM" Or e = ".sldprt" Or e = ".sldasm" Then
  31.    f = Left(c, b - 7)
  32. Else
  33.    f = c
  34. End If
  35. k = Len(f)
  36. kk = LenB(StrConv(f, vbFromUnicode))
  37. If k = kk Then '纯数字的情况
  38.     s = ""
  39.     t = f
  40. Else
  41.     If kk / k = 2 Then  '纯汉字的情况
  42.         t = ""
  43.         s = f
  44.     Else
  45.         For i = 1 To k
  46.             If Asc(Mid$(f, i, 1)) < 0 Then
  47.                 w = i '确定第一个汉字的位置
  48.         Exit For
  49.             End If
  50.         Next
  51.         If w = 1 Then                '名称+代号的情况
  52.             s = Left(f, kk - k)
  53.             t = Right(f, k - (kk - k))
  54.         Else                         '代号+名称的情况
  55.             s = Right(f, k - w + 1)
  56.             t = Left(f, w - 1)
  57.         End If
  58.     End If
  59. End If
  60. blnretval = Part.AddCustomInfo3("", "代号", swCustomInfoText, t)
  61. blnretval = Part.AddCustomInfo3("", "名称", swCustomInfoText, s)
  62. End Sub
复制代码
合并有错误,求大神指点。

作者: 515109201    时间: 2021-6-22 16:13
对象不一致,前面是swModel,后面是Part

作者: nmimi    时间: 2021-6-23 14:01
515109201 发表于 2021-6-22 16:13
对象不一致,前面是swModel,后面是Part

求合并。。。。。。。。。。。。
作者: redfrog    时间: 2021-6-24 12:10
SolidWorks机械工程师网,顶一下。
作者: YU7630    时间: 2022-5-12 13:47
求合并。。。。。。。。。。。。




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