SolidWorks專門論壇 SolidWorks forum

 找回密碼
 註冊
查看: 2391|回復: 7

如何切換當前選擇零組件的封包/不封包狀態??

[複製鏈接]
發表於 2023/5/10 18:05:02 | 顯示全部樓層 |閱讀模式
SW202有內建此功能嗎? 不然每次都要跳到屬性頁裡做勾選很麻煩...

如果是巨集要如何寫出切換當前選擇零組件的封包/不封包狀態??isPackaged = Part.GetPackAndGoStatus  這段出現黃標
  1. Dim swApp As Object
  2. Dim Part As Object
  3. Dim boolstatus As Boolean
  4. Dim longstatus As Long, longwarnings As Long



  5. Sub main()

  6. Set swApp = Application.SldWorks

  7. Set Part = swApp.ActiveDoc

  8. Dim selectedComponentID As String

  9. '獲取當前選中的零件ID
  10. selectedComponentID = Part.SelectionManager.GetSelectedObject6(1, -1).Name

  11. '使用當前選中的零件ID來選擇零件
  12. boolstatus = Part.Extension.SelectByID2(selectedComponentID, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)

  13. '判斷當前是否為封包狀態
  14. Dim isPackaged As Boolean
  15. isPackaged = Part.GetPackAndGoStatus

  16. '根據封包狀態執行不同的操作
  17. If isPackaged Then

  18. boolstatus = Part.CompConfigProperties6(2, 0, True, True, "預設", False, False, 0) ' 不封包

  19. Else

  20. boolstatus = Part.CompConfigProperties6(2, 0, True, True, "預設", False, True, 0) ' 封包

  21. End If

  22. boolstatus = Part.EditRebuild3()
  23. End Sub
複製代碼


發表於 2023/5/11 17:51:12 | 顯示全部樓層
改寫了一點 試試

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x

點評

我測試了一下不行欸... If comp.IsEnvelope Then 這行黃標  詳情 回復 發表於 2023/5/12 13:30
 樓主| 發表於 2023/5/12 13:30:17 | 顯示全部樓層
kkovgto 發表於 2023/5/11 17:51
改寫了一點 試試

我測試了一下不行欸...

If comp.IsEnvelope Then 這行黃標

而且我發現我原本的內容好像也沒關係多選零件後執行封包
多選後執行只有第一個會變更封包狀態而已...
發表於 2023/5/12 13:39:05 來自手機 | 顯示全部樓層
整個記事本的文字都有複製上去嗎

點評

可以了 現在可以做切換 但多選後執行只有第一個會變更封包狀態而已... 大大有辦法改嗎??  詳情 回復 發表於 2023/5/12 13:48
 樓主| 發表於 2023/5/12 13:48:17 | 顯示全部樓層
kkovgto 發表於 2023/5/12 13:39
整個記事本的文字都有複製上去嗎

可以了  現在可以做切換

但多選後執行只有第一個會變更封包狀態而已...

大大有辦法改嗎??
發表於 2023/5/12 18:17:20 | 顯示全部樓層
'使用當前選中的零件ID來選擇零件
boolstatus = Part.Extension.SelectByID2(selectedComponentID, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
↑這一行刪掉

點評

OK了!! 感謝大大~ 但似乎是沒辦法同時選取有封包跟沒封包的狀態一起變更 因為好像SW本身就無法這樣變更了~  詳情 回復 發表於 2023/5/19 13:10
 樓主| 發表於 2023/5/19 13:10:08 | 顯示全部樓層
kkovgto 發表於 2023/5/12 18:17
'使用當前選中的零件ID來選擇零件
boolstatus = Part.Extension.SelectByID2(selectedComponentID, "COMPON ...

OK了!!  感謝大大~

但似乎是沒辦法同時選取有封包跟沒封包的狀態一起變更

因為好像SW本身就無法這樣變更了~

點評

可以同时选取多个和多种状态的  詳情 回復 發表於 2023/7/6 15:06
發表於 2023/7/6 15:06:24 | 顯示全部樓層
ㄚ水 發表於 2023/5/19 13:10
OK了!!  感謝大大~

但似乎是沒辦法同時選取有封包跟沒封包的狀態一起變更
  1.     Dim swApp                   As SldWorks.SldWorks
  2.     Dim swModel                 As SldWorks.ModelDoc2
  3.     Dim swAssembly              As SldWorks.AssemblyDoc
  4.     Dim swSelMgr                As SldWorks.SelectionMgr
  5.     Dim swSelComp               As SldWorks.Component2
  6.     Dim SelCount                As Long
  7.     Dim n                       As Long
  8.     Dim ArrSelectedObjects()    As Variant
  9.     Dim swSelData               As SldWorks.SelectData
  10.     Dim RefCfgN                 As String

  11. Sub main()
  12.     Set swApp = Application.SldWorks
  13.     Set swModel = swApp.ActiveDoc
  14.     Set swSelMgr = swModel.SelectionManager
  15.     SelCount = swSelMgr.GetSelectedObjectCount
  16.     If SelCount <> 0 Then
  17.         ReDim ArrSelectedObjects(1 To SelCount)
  18.         For n = 1 To SelCount
  19.             Set ArrSelectedObjects(n) = swSelMgr.GetSelectedObjectsComponent2(n)
  20.         Next n
  21.         swModel.ClearSelection
  22.         For n = 1 To SelCount
  23.             Set swSelComp = ArrSelectedObjects(n)
  24.             Set swSelData = swSelMgr.CreateSelectData
  25.             swSelComp.Select4 False, swSelData, False
  26.             Set swAssembly = swModel
  27.             RefCfgN = swSelComp.ReferencedConfiguration
  28.             If swSelComp.IsEnvelope Then
  29.                 swAssembly.CompConfigProperties5 2, 0, True, True, RefCfgN, False, False
  30.             Else
  31.                 swAssembly.CompConfigProperties5 2, 0, True, True, RefCfgN, False, True
  32.             End If
  33.         Next
  34.     End If
  35. End Sub
複製代碼


您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

論壇統計|手機版上論壇|論壇來自幾何科技 論壇架構版次 20240312

GMT+8, 2024/4/24 04:52 , Processed in 0.243572 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回復 返回頂部 返回列表