Imprimante transparente sur 1 calque SW

Bonjour
Pour les fort en MYCAD intégration comment réactiver une l’imprimante pour un des calque
J’ai fait la fonction activer du calque format
j’ai fait activer *
mais rien n’y fait
calque Image 001

Pour afficher cacher un calque:


Par contre pour imprimer ou ne pas imprimer pas de fonction visiblement.

Le problème c’est que ça j’ai déjà réalisé
cela affiche l’œil mais pas l’imprimante => en format PDF du coup aucune ligne n’apparait puisque non imprimé.
dans l’image en PJ c’est format qui ne s’imprime pas
Je pense que « affiche » tiens + de montrer le calque mais pas l’imprimé

Oui c’est ce que je te disais pour afficher cacher c’est possible mais pas d’option pour l’impression ou pas d’impression.
Par contre tu peux lancer une macro via intégration:


Tu commence par créer ta macro:
Outil macro, nouvelle tu la nommes comme tu le veux.
Puis tu colles ce code dedans:

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

Attention à lancer uniquement sur des MEP qui ont le calque de créé sans quoi il y aura sûrement une erreur, puisque je n’ai pas intégré dans la code la gestion d’erreur.

1 « J'aime »

hum je ne me souvenais pas du lanceur de macro …
si on place une condition de calque dans intégration cela peux aider a ne pas avoir de gestion d’erreur

1 « J'aime »

Oui mais arrivé là, autant la mettre dans la macro:

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 « J'aime »