SolidWorks專門論壇 SolidWorks forum

 找回密碼
 註冊
查看: 3071|回復: 9

關閉圖層可以用巨集控制嗎?

[複製鏈接]
發表於 2018/4/16 20:24:51 | 顯示全部樓層 |閱讀模式
今天試著錄製關閉圖層的巨集,結果什麼都沒有.....,所以...圖層是不能用巨集控制的嗎?
發表於 2018/4/17 22:25:56 | 顯示全部樓層
api help 裡面就有範例了

點評

謝謝丹大,原來 API HELP裡面有這麼多的語法範例,可惜小弟一來語言基礎不好,二來英文也不好,看來還得花一些時間,好好研究了,我會努力的,謝謝!  詳情 回復 發表於 2018/4/17 22:59
 樓主| 發表於 2018/4/17 22:59:58 | 顯示全部樓層
gt.adan 發表於 2018/4/17 22:25
api help 裡面就有範例了

謝謝丹大,原來 API HELP裡面有這麼多的語法範例,可惜小弟一來語言基礎不好,二來英文也不好,看來還得花一些時間,好好研究了,我會努力的,謝謝!
發表於 2018/4/17 23:08:25 | 顯示全部樓層
我也是,一起努力吧~~
發表於 2018/4/22 01:02:25 | 顯示全部樓層
    Dim swApp                       As SldWorks.SldWorks
    Dim part                        As SldWorks.ModelDoc2
    Dim swLayerMgr                  As SldWorks.LayerMgr
    Dim swLayer                     As SldWorks.Layer
Sub main()
    Set swApp = Application.SldWorks
    Set part = swApp.ActiveDoc
    contr ("圖層1")
    contr ("圖層2")
    contr ("圖層3")
End Sub
Sub contr(x As String)
    Set swApp = Application.SldWorks
    Set part = swApp.ActiveDoc
    Set swLayerMgr = part.GetLayerManager
    Set swLayer = swLayerMgr.GetLayer(x)
    If swLayer.Visible = False Then
        swLayer.Visible = True
    Else
        swLayer.Visible = False
    End If
End Sub
-----參考API我做了一些修改,我建立了三個圖層,執行時可以同時控制3個圖層的開關。

點評

謝謝分享!  詳情 回復 發表於 2018/4/22 18:37
 樓主| 發表於 2018/4/22 18:37:17 | 顯示全部樓層
kkovgto 發表於 2018/4/22 01:02
Dim swApp                       As SldWorks.SldWorks
    Dim part                        As SldW ...

謝謝分享!
 樓主| 發表於 2018/4/22 21:22:41 | 顯示全部樓層
感謝樓上幾位大大的指導,我的目的只是為了要關閉某個圖層,方便將審核圖變成正式出圖
經過一番研究,得出下列的VBA,請大家指導,是否正確,還是有更精進作法!?(註解是我自己理解的,不曉得正不正確!?)
Dim swApp As Object
Sub main()
    Dim swApp                       As SldWorks.SldWorks
    Dim swModel                     As SldWorks.ModelDoc2
    Dim swLayerMgr                  As SldWorks.LayerMgr
    Dim swLayer                     As SldWorks.Layer
     Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swLayerMgr = swModel.GetLayerManager
'    選擇"圖框"這個圖層
    Set swLayer = swLayerMgr.GetLayer("圖框")
'    設定圖層為不可視
     swLayer.Visible = False
End Sub

點評

這樣是可以隱藏圖層的 最上面 Dim swApp As Object 可省略 因為在程式內已有宣告了, Dim swApp As Sldworks.sldworks←這種的方式寫會比較好,因為有時比較方便找子程序。  詳情 回復 發表於 2018/4/22 21:41
發表於 2018/4/22 21:41:07 | 顯示全部樓層
rock6098 發表於 2018/4/22 21:22
感謝樓上幾位大大的指導,我的目的只是為了要關閉某個圖層,方便將審核圖變成正式出圖
經過一番研究,得出 ...

這樣是可以隱藏圖層的
最上面 Dim swApp As Object 可省略 因為在程式內已有宣告了,
Dim swApp As Sldworks.sldworks←這種的方式寫會比較好,因為有時比較方便找子程序。

點評

謝謝,我對宣告的語法還不太熟,正在努力學習中!現在才覺得年輕時候的計算機概論沒認真學,實在太對不起老師!到了現在45歲了,才開始重新學習....,不過,相信只要肯學,都不會太晚的!!  詳情 回復 發表於 2018/4/22 23:00
 樓主| 發表於 2018/4/22 23:00:00 | 顯示全部樓層
kkovgto 發表於 2018/4/22 21:41
這樣是可以隱藏圖層的
最上面 Dim swApp As Object 可省略 因為在程式內已有宣告了,
Dim swApp As Sldwo ...

謝謝,我對宣告的語法還不太熟,正在努力學習中!現在才覺得年輕時候的計算機概論沒認真學,實在太對不起老師!到了現在45歲了,才開始重新學習....,不過,相信只要肯學,都不會太晚的!!
發表於 2018/4/23 18:38:09 | 顯示全部樓層
你可以從vb相關的書籍查詢,宣告的目的在於告訴編譯器關於函式的名稱、傳回值的資料型態,像 Dim swapp as sldworks.sldworks 就是把swapp 這個函數名稱告訴電腦他的資料型態是什麼,這樣他才能進行 Set swapp=Application.Sldworks,然後再進行下一步 Dim part AS Sldworks.ModelDoc2 , Set part=swapp.ActiveDoc ,這些東西都是一層一層的樹狀圖,一般錄製巨集 他都會 Dim swapp As Object ,Dim part As Object這種的方式比較不好,因為如果要查詢 swapp 底下還有什麼子件的話,用 Object 的話他不會有提示。
當然上面說的東西都要自己慢慢體會,當你想要有什麼目的使用的時候,你就會有一種求知慾,多看看論壇內的東西,或是看看外國人寫的東西,或是看API上的範例,學到了就會是你的,不分年紀,學歷,什麼時候學都不重要,重要的是「為何而學」,「學了是否能對自己有幫助」。
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 2024/3/28 18:53 , Processed in 0.115980 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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