SolidWorks專門論壇 SolidWorks forum

 找回密碼
 註冊
查看: 1135|回復: 8

如何獲取狀態開關,程序結束後再恢復?

[複製鏈接]
發表於 2022/8/18 09:18:29 | 顯示全部樓層 |閱讀模式
程序用於工程圖轉DXF文件,因製作零件時需做邊界框,但文件保存時將其關閉,再次打開文件依然顯示狀態。
請教程序能否做到先獲取“隱藏所有類型”狀態,程序結束後再恢復回來?
  1. Dim swApp As Object
  2. Dim Part As Object
  3. Dim Filename As String
  4. Dim No As Integer
  5. Dim boolstatus As Boolean
  6. Dim longstatus As Long, longwarnings As Long
  7. Dim Title As String
  8. Sub main()
  9. Set swApp = Application.SldWorks
  10. Set Part = swApp.ActiveDoc

  11. '此處獲取“隱藏所有類型”狀態,True 或 False

  12. boolstatus = Part.SetUserPreferenceToggle(swUserPreferenceToggle_e.swViewDisplayHideAllTypes, True)
  13. boolstatus = Part.SetUserPreferenceToggle(swUserPreferenceToggle_e.swViewDisplayHideAllTypes, False) '隱藏所有類型關
  14. boolstatus = Part.SetUserPreferenceToggle(swUserPreferenceToggle_e.swViewDispGlobalBBox, False) '邊界框關
  15. Filename = Part.GetPathName()
  16. No = Len(Filename)
  17. Filename = Left(Filename, No - 7)
  18. Part.SaveAs2 Filename & ".DXF", 0, True, False
  19. X = MsgBox(" 已保存為 DXF文件 ", 0)

  20. '文件保存後恢復之前獲取之“隱藏所有類型”狀態

  21. End Sub
複製代碼




發表於 2022/8/19 19:11:36 | 顯示全部樓層
邊界框是新 版的功能嗎?是否有圖可多做說明
 樓主| 發表於 2022/8/24 10:53:37 | 顯示全部樓層


怎樣取得此按鈕是否打開?
如何在程序結尾再恢復原樣。
發表於 2022/8/24 12:59:53 | 顯示全部樓層
  1. Dim swApp As Object
  2. Dim Part As Object
  3. Dim Filename As String
  4. Dim No As Integer
  5. Dim boolstatus As Boolean
  6. Dim longstatus As Long, longwarnings As Long
  7. Dim Title As String
  8. Sub main()
  9. Set swApp = Application.SldWorks
  10. Set Part = swApp.ActiveDoc

  11. '此處獲取“隱藏所有類型”狀態,True 或 False

  12. boolstatus = Part.SetUserPreferenceToggle(swUserPreferenceToggle_e.swViewDisplayHideAllTypes, True) '隱藏所有類型關
  13. boolstatus = Part.SetUserPreferenceToggle(swUserPreferenceToggle_e.swViewDispGlobalBBox, False) '邊界框關
  14. Filename = Part.GetPathName()
  15. No = Len(Filename)
  16. Filename = Left(Filename, No - 7)
  17. Part.SaveAs2 Filename & ".DXF", 0, True, False

  18. '文件保存後恢復之前獲取之“隱藏所有類型”狀態
  19. boolstatus = Part.SetUserPreferenceToggle(swUserPreferenceToggle_e.swViewDispGlobalBBox, True)
  20. boolstatus = Part.SetUserPreferenceToggle(swUserPreferenceToggle_e.swViewDisplayHideAllTypes, False)
  21. X = MsgBox(" 已保存為 DXF文件 ", 0)
  22. End Sub
複製代碼

用你的程式碼修改 ,看行不行~
 樓主| 發表於 2022/8/24 15:42:14 | 顯示全部樓層
這個變量A返回的是198,如何才能返回True 或者 False

Dim a As String
A = swViewDisplayHideAllTypes
……
……

boolstatus = Part.SetUserPreferenceToggle(swUserPreferenceToggle_e.swViewDisplayHideAllTypes, A) '設為A
 樓主| 發表於 2022/8/24 16:04:37 | 顯示全部樓層
已解決,直接用GetUserPreferenceToggle就行了。
發表於 2022/8/24 16:10:57 | 顯示全部樓層
回傳值的用意是?
 樓主| 發表於 2022/8/25 08:16:13 | 顯示全部樓層
因工程圖有的默認顯示狀態是打開,有的是關閉。
結束之後需返回默認狀態保存。
發表於 2022/8/25 09:01:25 | 顯示全部樓層
可以將常用的狀態也寫進巨集裡 一直都是True

應該就不用再確認了...
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 2024/3/28 17:03 , Processed in 0.251604 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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