Supprimer une image dans un cartouche Catia Drawing via VBA

Comment détecter et supprimer une image (ex: signature JPEG) présente dans le cartouche d’un Catia Drawing à l’aide d’une macro VBA ?

Pour détecter et supprimer une image (comme une signature JPEG) dans le cartouche d’un Catia Drawing via une macro VBA, il est crucial de cibler le bon type d’objet et la bonne vue. Votre code initial utilisait Shape, qui est un type générique et ne s’applique pas directement aux images dans un Drawing.

Les images dans un Catia Drawing sont des objets de type DrawingPicture et se trouvent dans la collection Pictures d’une vue spécifique. De plus, les cartouches sont généralement situés dans la ‹ Background View › (Vue de fond de plan).

Voici la procédure et le code VBA corrigé :

  1. Cibler la Vue de Fond de Plan (Background View)
    Le cartouche de votre dessin est presque toujours situé dans la vue de fond de plan. Il est donc nécessaire d’activer cette vue pour y rechercher l’image.

  2. Itérer sur la Collection d’Images (DrawingPictures)
    Au lieu de Myview.Shape, vous devez parcourir la collection Myview.Pictures. Chaque élément de cette collection est un objet DrawingPicture.

  3. Vérifier le Nom de l’Image et Supprimer
    Une fois l’objet DrawingPicture identifié par son nom (par exemple, « image.1 »), vous pouvez utiliser la méthode Delete pour le supprimer.

Code VBA corrigé :

Sub SupprimerSignatureCartouche()

    Dim oDrwDoc As Document
    Dim oDrwSheet As Sheet
    Dim oBackgroundView As View
    Dim oDrawingPicture As DrawingPicture
    Dim sImageName As String
    
    ' Nom de l'image à rechercher (à adapter si nécessaire)
    sImageName = "image.1" ' Ou "Signature.jpeg" si c'est le nom Catia de l'objet

    Set oDrwDoc = CATIA.ActiveDocument
    If Not TypeOf oDrwDoc Is DrawingDocument Then
        MsgBox "Le document actif n'est pas un Catia Drawing.", vbCritical
        Exit Sub
    End If

    Set oDrwSheet = oDrwDoc.Sheets.ActiveSheet
    
    ' Activer la vue de fond de plan où se trouve le cartouche
    ' Important : Le nom de la vue de fond est généralement "Background View"
    ' mais peut varier si l'utilisateur l'a renommé.
    On Error Resume Next ' Gérer l'erreur si la vue n'existe pas ou n'est pas nommée ainsi
    Set oBackgroundView = oDrwSheet.Views.Item("Background View")
    On Error GoTo 0
    
    If oBackgroundView Is Nothing Then
        MsgBox "La vue 'Background View' n'a pas été trouvée. Vérifiez son nom.", vbExclamation
        Exit Sub
    End If
    
    oBackgroundView.Activate ' Activer la vue pour y travailler

    ' Parcourir toutes les images (DrawingPicture) dans la vue de fond
    For Each oDrawingPicture In oBackgroundView.Pictures
        If oDrawingPicture.Name = sImageName Then
            oDrawingPicture.Delete
            MsgBox "L'image '" & sImageName & "' a été supprimée du cartouche.", vbInformation
            Exit For ' Sortir de la boucle une fois l'image trouvée et supprimée
        End If
    Next oDrawingPicture
    
    ' Réactiver la vue principale si nécessaire (optionnel)
    ' Set oMainView = oDrwSheet.Views.Item("Main View")
    ' If Not oMainView Is Nothing Then oMainView.Activate

End Sub

Explications et Bonnes Pratiques :

  • DrawingPicture vs Shape: DrawingPicture est le type d’objet spécifique pour les images bitmap insérées dans un Catia Drawing. Shape est une classe parente plus générique qui ne contient pas directement les propriétés ou méthodes nécessaires pour manipuler une image de cette manière.
  • oBackgroundView.Pictures: C’est la collection correcte à parcourir pour trouver les images dans une vue.
  • Nom de l’image: Le nom de l’image dans Catia (oDrawingPicture.Name) n’est pas toujours le nom du fichier original (ex: « image.1 », « image.2 », etc., ou un nom donné par l’utilisateur). Vérifiez ce nom dans l’arbre de spécification de Catia si vous avez des doutes.
  • Gestion des erreurs: L’ajout de On Error Resume Next et On Error GoTo 0 permet de gérer le cas où la « Background View » n’aurait pas le nom attendu ou n’existerait pas, rendant le code plus robuste.
  • Activation de la vue: Il est recommandé d’activer la vue sur laquelle vous travaillez pour s’assurer que les opérations s’appliquent au bon contexte.

Cette approche garantit une détection et une suppression précises de l’image ciblée dans votre cartouche Catia.