Przezroczysta drukarka na 1 warstwie oprogramowania

Witam
Aby uzyskać mocną integrację z MYCAD, jak reaktywować drukarkę dla jednej z warstw
Zrobiłem funkcję aktywacji warstwy formatu
Aktywowałem *
ale nic nie działa
calque Image 001

Aby wyświetlić ukrycie warstwy:


Z drugiej strony, drukować czy nie drukować żadnej funkcji w widoczny sposób.

Problem w tym, że już zdałem sobie z tego sprawę
wyświetla oko, ale nie drukarkę => w formacie PDF, więc nie pojawia się żadna linia, ponieważ nie jest drukowana.
na obrazie w PJ jest to format, który nie jest drukowany
Myślę, że " plakat " to +, aby pokazać kalkę kreślarską, ale nie wydruk

Tak, to jest to, co mówiłem, aby pokazać, ukryć, jest to możliwe, ale nie ma opcji drukowania lub braku drukowania.
Z drugiej strony możesz uruchomić makro poprzez integrację:


Zaczynasz od utworzenia makra:
Narzędzie do makr, nowe, nazwij je, jak chcesz.
Następnie wklejasz ten kod w:

Option Explicit
'Changer ci-dessous le nom du calque à rendre invisible à la place de NomDuCalque
Public Const layerName As String = "NomDuCalque"

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(layerName)
    swLayer.Printable = False 'Pour rendre le calque visible mettre True
End Sub

Bądź ostrożny, aby uruchamiać tylko na MEP, które mają utworzoną warstwę, w przeciwnym razie na pewno wystąpi błąd, ponieważ nie zintegrowałem obsługi błędów z kodem.

1 polubienie

hum nie pamiętam programu uruchamiającego makra ...
Jeśli umieścimy warunek warstwy w Integracji, może to pomóc w uniknięciu obsługi błędów

1 polubienie

Tak, ale w tym momencie równie dobrze możesz umieścić to w makrze:

Option Explicit
'Changer ci-dessous le nom du calque à rendre invisible à la place de NomDuCalque
Public Const layerName As String = "NomDuCalque"

Sub main2()

    Dim swApp                       As SldWorks.SldWorks
    Dim swModel                     As SldWorks.ModelDoc2
    Dim swLayerMgr                  As SldWorks.LayerMgr
    Dim vLayerArr                   As Variant
    Dim vLayer                      As Variant
    Dim swLayer                     As SldWorks.Layer

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    'Vérification si un modèle est chargé
    If swModel Is Nothing Then
        Exit Sub
    End If
    'Vérification si le document chargé est une MEP
    If (swModel.GetType <> swDocDRAWING) Then
        Exit Sub
    End If
    
    Set swLayerMgr = swModel.GetLayerManager
    vLayerArr = swLayerMgr.GetLayerList
    For Each vLayer In vLayerArr
        Set swLayer = swLayerMgr.GetLayer(vLayer)
       'Vérification du nom du calque
        If swLayer.Name = layerName Then
        swvLayer.Printable = False 'Pour rendre le calque visible mettre True
        End If
    Next

End Sub
2 polubienia