Macro masquer fond de plan, table nomenclature (pas le bullage) et table de révisions

Bonjour,
pour un export de mise en plan seulement avec les vues, je cherche une macro qui:
1 - masque le fond de plan (décocher ‹ Afficher le fond de plan › dans propriété de la feuille)
2-masque la table ‹ Nomenclature1 ›
3-masquer la table ‹ Table de révisions1 ›
puis un enregistrement au format .ai
et enfin réafficher les éléments cacher.

D’avance merci à tous pour votre aide.
Thierry

Bonjour,

Plusieurs questions:

  • Une seule feuille?
  • Une seule nomenclature et une seule table de révision par page?

Masquer les éléments n’est pas bien compliqué en macro mais faut connaître le nombre d’éléments à masquer et si un traitement sur plusieurs feuilles ou non

1 « J'aime »

Bonjour,
oui, une seule feuille ‹ Feuille1 ›
Une seule nomenclature ‹ Nomenclature1 ›
et une seule table de révision ‹ Table de révisions1 ›

Merci
image

Bonjour,

Code ci-dessous à tester:

Dim swSheet         As SldWorks.Sheet
Dim swApp           As SldWorks.SldWorks
Dim swModel         As SldWorks.ModelDoc2
Dim swModelDocExt   As ModelDocExtension
Dim swDraw          As SldWorks.DrawingDoc
Dim swView          As SldWorks.View
Dim swAnn           As SldWorks.Annotation
Dim boolstatus      As Boolean
Dim sPathName       As String
Dim lErrors         As Long
Dim lWarnings       As Long

Sub main()

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
If swModel Is Nothing Then
    MsgBox ("Pas de document ouvert")
    Exit Sub
    Else
        Set swModelDocExt = swModel.Extension
        If swModel.GetType <> 3 Then
            MsgBox ("Il ne s'agît pas d'une mise en plan")
        Else
            Set swDraw = swModel
            Set swSheet = swDraw.GetCurrentSheet
            swSheet.SheetFormatVisible = False ' Masque le fond de plan
            Set swView = swDraw.GetFirstView
            Do While Not Nothing Is swView
                Set swAnn = swView.GetFirstAnnotation3
                Do While Not Nothing Is swAnn
                    If swAnn.GetType = swTableAnnotation Then 'Verifie si c'est un objet de type table (BOM ou révision)
                        swAnn.Visible = swAnnotationHidden ' Cache les tables
                    End If
                Set swAnn = swAnn.GetNext3
                Loop
                Set swView = swView.GetNextView
            Loop
            sPathName = swModel.GetPathName 'Recupere le nom complet du document actif
            sPathName = Left(sPathName, Len(sPathName) - 6) 'Suppression de l'extension
            sPathName = sPathName + "ai" 'Formatage du nom d'enregistrement
            boolstatus = swModelDocExt.SaveAs3(sPathName, swSaveAsCurrentVersion, swSaveAsOptions_Silent, Nothing, Nothing, lErrors, lWarnings)
        End If
        swSheet.SheetFormatVisible = True 'Affiche le fond de plan
        Set swView = swDraw.GetFirstView
            Do While Not Nothing Is swView
                Set swAnn = swView.GetFirstAnnotation3
                Do While Not Nothing Is swAnn
                    If swAnn.GetType = swTableAnnotation Then 'Verifie si c'est un objet de type table (BOM ou révision)
                        swAnn.Visible = swAnnotationVisible ' Affiche les tables
                    End If
                Set swAnn = swAnn.GetNext3
                Loop
                Set swView = swView.GetNextView
            Loop
End If
End Sub

Pas géré le fait que le fichier ai existe ou non (possible d’ajouter)

1 « J'aime »

Merci c’est parfait!!!

1 « J'aime »

Bonjour,

j’ai zappé un sujet.

Si plusieurs feuilles, je souhaite enregistrer que la 1ere feuille en Ai, actuellement la macro enregistre toutes les feuilles
merci pour ton aide.
Thierry