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

iCAx开思网

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

[求助] 求教大神两个录制的宏怎么合成一个

[复制链接]
跳转到指定楼层
1
发表于 2016-7-27 16:29:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

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

x
我想为SOLIDWORKS钣金的平板形式定制一个快捷键,分别录制了解压平板形式和压缩平板形式两个宏,两个宏作为两个快捷键,这样钣金展开和折叠要使用两个快捷键,我想一键就实现展开和压缩,但不会合并这两段宏,求大神帮忙。下面是两个宏:
Sub main()

Set swApp = _
Application.SldWorks

Set Part = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("平板型式11", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
Part.EditSuppress2
boolstatus = Part.Extension.SelectByID2("平板型式", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
Part.ClearSelection2 True
End Sub


Sub main()

Set swApp = _
Application.SldWorks

Set Part = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("平板型式", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("平板型式", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("平板型式11", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
Part.EditUnsuppress2
boolstatus = Part.Extension.SelectByID2("平板型式", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
Part.ClearSelection2 True
End Sub

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 赞一下!赞一下!
2
发表于 2016-7-28 00:26:44 | 只看该作者
本帖最后由 pyczt 于 2016-7-28 08:13 编辑

试试这个,如用繁体要改名称
  1. Dim swApp As Object
  2. Dim part As Object
  3. Dim boolstatus As Boolean
  4. Dim swSelMgr  As SldWorks.SelectionMgr
  5. Dim swFeat    As SldWorks.Feature
  6. Dim vConfNameArr  As Variant
  7. Dim vSuppStateArr  As Variant
  8. Dim i As Integer



  9. Sub main()

  10. Set swApp = Application.SldWorks

  11. Set part = swApp.ActiveDoc

  12. boolstatus = part.Extension.SelectByID2("平板型式1", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
  13.   
  14.   Set swSelMgr = part.SelectionManager

  15.   Set swFeat = swSelMgr.GetSelectedObject6(1, -1)

  16.    vConfNameArr = part.GetConfigurationNames

  17.     vSuppStateArr = swFeat.IsSuppressed2(swThisConfiguration, vConfNameArr)

  18.   Debug.Assert 0 = UBound(vSuppStateArr)
  19.    

  20.    vSuppStateArr = swFeat.IsSuppressed2(swAllConfiguration, vConfNameArr)

  21. Debug.Assert UBound(vSuppStateArr) = UBound(vConfNameArr)
  22.    

  23. vSuppStateArr = swFeat.IsSuppressed2(swSpecifyConfiguration, vConfNameArr)
  24. Debug.Assert UBound(vSuppStateArr) = UBound(vConfNameArr)

  25. For i = 0 To UBound(vConfNameArr)

  26.         Debug.Print "    " & vConfNameArr(i) & " ---> " & vSuppStateArr(i)

  27.     If (vSuppStateArr(i) = False) Then

  28.     part.EditSuppress

  29.      ElseIf (vSuppStateArr(i) = True) Then

  30.      part.EditUnsuppress

  31.     End If

  32. Next i

  33. part.ClearSelection2 True

  34. End Sub
复制代码

3
发表于 2016-7-28 09:27:52 | 只看该作者
运行后26行出错
4
发表于 2016-7-28 11:18:11 | 只看该作者
"平板型式"名称不一致造成的

5
发表于 2016-7-28 11:44:57 | 只看该作者
  1. Dim swApp As Object
  2. Dim part As Object
  3. Dim boolstatus As Boolean
  4. Dim swSelMgr  As SldWorks.SelectionMgr
  5. Dim swFeat    As SldWorks.Feature
  6. Dim vConfNameArr  As Variant
  7. Dim vSuppStateArr  As Variant
  8. Dim i As Integer
  9. Dim ii As Integer
  10. Dim nn As Integer

  11. Sub main()
  12. Set swApp = Application.SldWorks
  13. Set part = swApp.ActiveDoc
  14. With part
  15. nn = .FeatureManager.GetFeatureCount(True)
  16. Set swFeat = .FirstFeature
  17. Debug.Print swFeat.GetTypeName
  18. For ii = 1 To nn - 1
  19. Set swFeat = swFeat.GetNextFeature
  20. Debug.Print swFeat.GetTypeName, swFeat.Name
  21. If swFeat.GetTypeName = FlatPattern Then Exit For
  22. Next ii
  23. End With

  24. boolstatus = part.Extension.SelectByID2(swFeat.Name, "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)    '选择平板型式特征
  25.   Set swSelMgr = part.SelectionManager
  26.   Set swFeat = swSelMgr.GetSelectedObject6(1, -1)

  27.    vConfNameArr = part.GetConfigurationNames
  28.    vSuppStateArr = swFeat.IsSuppressed2(swThisConfiguration, vConfNameArr)
  29.   Debug.Assert 0 = UBound(vSuppStateArr)
  30.    
  31.    vSuppStateArr = swFeat.IsSuppressed2(swAllConfiguration, vConfNameArr)
  32.     Debug.Assert UBound(vSuppStateArr) = UBound(vConfNameArr)
  33.    
  34. vSuppStateArr = swFeat.IsSuppressed2(swSpecifyConfiguration, vConfNameArr)
  35. Debug.Assert UBound(vSuppStateArr) = UBound(vConfNameArr)

  36. For i = 0 To UBound(vConfNameArr)

  37.     Debug.Print "    " & vConfNameArr(i) & " ---> " & vSuppStateArr(i)
  38.     If (vSuppStateArr(i) = False) Then
  39.     part.EditSuppress
  40.     ElseIf (vSuppStateArr(i) = True) Then
  41.     part.EditUnsuppress
  42.     End If
  43. Next i

  44. part.ClearSelection2 True
  45. End Sub
复制代码


6
发表于 2016-7-28 15:43:04 | 只看该作者
学习一下
7
发表于 2016-7-28 17:01:05 | 只看该作者

试了一下,展开没问题,但是有些钣金零件折叠不回去,这是为什么?
8
发表于 2016-7-28 17:19:55 | 只看该作者
MJ-Destiny 发表于 2016-7-28 17:01
试了一下,展开没问题,但是有些钣金零件折叠不回去,这是为什么?

上part 看下
9
发表于 2016-8-2 18:16:25 | 只看该作者
做了一个简单的钣金件,试了一下五楼的宏代码,运行没问题。
谢谢pyczt大大共享源代码。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

GMT+8, 2025-2-22 01:42 , Processed in 0.031400 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2025 www.iCAx.org

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