iCAx开思网

标题: 宏——SW删除自定义和所有配置的所有属性 [打印本页]

作者: yh2010    时间: 2020-2-27 13:33
标题: 宏——SW删除自定义和所有配置的所有属性
在网上找到的这二个宏,现在想把他和在一起做成一个删除所有的属性,但一直出错不知哪位知道怎么修改谢谢!
  1. Dim swApp As Object
  2. Sub main() '删除自定义属性
  3. Dim swApp As Object
  4. Dim swModel2 As SldWorks.ModelDoc2
  5. Dim vCustInfoNameArr2 As Variant
  6. Set swApp = _
  7. Application.SldWorks
  8. Set swModel2 = swApp.ActiveDoc
  9. vCustInfoNameArr2 = swModel2.GetCustomInfoNames
  10. If Not IsEmpty(vCustInfoNameArr2) Then
  11. For Each vCustInfoName2 In vCustInfoNameArr2
  12. bRet = swModel2.DeleteCustomInfo(vCustInfoName2)
  13. Next
  14. End If
  15. End Sub


  16. Sub main() '删除所有配置所有属性
  17. Set swApp = Application.SldWorks
  18. Set Part = swApp.ActiveDoc
  19. CurCFGname = Part.GetConfigurationNames
  20. CurCFGnameCount = Part.GetConfigurationCount
  21. For i = 0 To CurCFGnameCount - 1
  22.     Set CusPropMgr = Part.Extension.CustomPropertyManager(CurCFGname(i))
  23.     Vnamearr = CusPropMgr.GetNames
  24.     If Not IsEmpty(Vnamearr) Then
  25.         For Each Vnamearr2 In Vnamearr
  26.             bRet = Part.DeleteCustomInfo2(CurCFGname(i), Vnamearr2)
  27.         Next
  28.     End If
  29. Next
  30. Set swApp = Application.SldWorks
  31. End Sub
复制代码



作者: wenmk    时间: 2020-2-27 21:07
不知楼主所说的删除所有属性是删除单个模型属性还是多个模型批量删除属性
作者: wenmk    时间: 2020-2-27 21:10
wenmk 发表于 2020-2-27 21:07
不知楼主所说的删除所有属性是删除单个模型属性还是多个模型批量删除属性

还有就是删除所有配置,也就是说没有激活的配置属性也要删除是吧。


作者: yh2010    时间: 2020-3-11 16:17
wenmk 发表于 2020-2-27 21:10
还有就是删除所有配置,也就是说没有激活的配置属性也要删除是吧。

是的删除所有属性,不管是自定义的还是配置的

作者: wenmk    时间: 2020-3-11 17:01
可以参考以下代码:
  1. Set swApp = Application.SldWorks
  2. Set Part = swApp.ActiveDoc
  3. CurCFGname = Part.GetConfigurationNames
  4. CurCFGnameCount = Part.GetConfigurationCount
  5. For i = 0 To CurCFGnameCount - 1
  6.     Set CusPropMgr = Part.Extension.CustomPropertyManager(CurCFGname(i))
  7.     Vnamearr = CusPropMgr.GetNames
  8.     If Not IsEmpty(Vnamearr) Then
  9.         For Each Vnamearr2 In Vnamearr
  10.             bRet = Part.DeleteCustomInfo2(CurCFGname(i), Vnamearr2)
  11.         Next
  12.     End If
  13. Next
复制代码

作者: yh2010    时间: 2020-4-2 21:51
wenmk 发表于 2020-3-11 17:01
可以参考以下代码:

感谢回复,这个是可以删除当前配置下的:自定义属性和配置属性。可能之前没有说清楚,如果是零件有多个配置:怎么删除每个配置下的,自定义属性和配置属性。如零件A里面有以下配置如:A\A1\A2\A3这样的零件配置,每个下面都有自定义属性和配置属性,怎么一次性都删除?
作者: wenmk    时间: 2020-4-2 22:31
本帖最后由 wenmk 于 2020-4-2 22:41 编辑
yh2010 发表于 2020-4-2 21:51
感谢回复,这个是可以删除当前配置下的:自定义属性和配置属性。可能之前没有说清楚,如果是零件有多个配 ...

       楼主你好,多配置模型中,自定义是所有配置共用的,只有特定配置才是对应每一个配置,楼主可以查一下API,记得好像是:swApp.GetConfigurationNames(swPathName)  然后遍历激活配置后删除特定配置中的属性即可。

作者: gt.adan    时间: 2020-4-2 23:54
請慢用…

  1. Dim swApp As SldWorks.SldWorks
  2. Dim swModel As SldWorks.ModelDoc2
  3. Dim swCustPropMgr As SldWorks.CustomPropertyManager
  4. Dim vPropNames As Variant
  5. Dim vConfs As Variant
  6. Dim i, j As Integer
  7. Dim conf As String

  8. Sub main()
  9. Set swApp = Application.SldWorks
  10. Set swModel = swApp.ActiveDoc
  11. If swModel Is Nothing Then MsgBox "Open a file first.": Exit Sub
  12.     ClearCustPrps ("")
  13.     vConfs = swModel.GetConfigurationNames
  14.     For i = 0 To UBound(vConfs)
  15.       ClearCustPrps (vConfs(i))
  16.     Next i
  17. MsgBox "Done!"
  18. End Sub
  19.    
  20. Sub ClearCustPrps(conf As String)
  21. Set swCustPropMgr = swModel.Extension.CustomPropertyManager(conf)
  22. If Not swCustPropMgr Is Nothing Then
  23.   swCustPropMgr.GetAll vPropNames, Empty, Empty
  24.     If Not IsEmpty(vPropNames) Then
  25.     For j = 0 To UBound(vPropNames)
  26.       swCustPropMgr.Delete vPropNames(j)
  27.     Next
  28.   End If
  29. End If
  30. End Sub
复制代码



作者: wwwerzhou    时间: 2020-4-7 20:10
gt.adan 发表于 2020-4-2 23:54
請慢用…

丹大你好,这个可以设置成,遍历删除装配体所有零件的配置自定义属性?

作者: yh2010    时间: 2020-4-17 22:19
gt.adan 发表于 2020-4-2 23:54
請慢用…

感谢回复,大老出手,一切无忧!!!
作者: 万里如云    时间: 2020-9-5 13:50
有没有单独删除一条配置属性的代码




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