API : Modifier le fond de plan et enregistrer sous

Bonjour,

 

Je cherche un moyen de supprimer un élément de mon fond de plan (quelque soit le format) et d'enregistrer la MEP en format PDF et fermer sans enregistrer.

Pour l'ouverture du fichier c'est ok.

Pour enregistrer en format PDF c'est ok : "longstatus = Part.SaveAs3(Path & "\" & sfilename & "EXTERIEUR", 0, 0)"

Pour fermer sans enregistrer je pense savoir : "instance.QuitDoc (Name)"

 

Mais par contre pour supprimer un élément de mon fond de plansur toutes les feuilles et sur tout les formats de papiers je suis perdu. J'ai tenté l'enregistreur de macro. Sans succés. Voici le code qu'il me sort :

 

Set Part = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("Feuille2", "SHEET", 0.189279289501591, 0.128100540827147, 0, False, 0, Nothing, 0)
Part.EditTemplate
Part.EditSketch
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Objet de détail20@Fond de plan2", "NOTE", 0.244213266171792, 4.26476882290562E-02, 0, False, 0, Nothing, 0)
Part.EditDelete
Part.EditSheet
Part.EditSketch

 

 

Est ce quelqu'un à une solution ?

 

Merci,

Gautier.

 

Bonjour,

Quel est cette chose mystérieuse à supprimer du fond de plan ? Une annotation ?

C’est exactement la même sur chaque fond de plan ?

Ca ne serait pas plus simple de recharger un autre fond de plan ?

Pour changer le fond de plan, voir ce lien :

https://forum.solidworks.com/thread/38707?tstart=0

Sinon, les utilitaires MyCAD (payant) sont capables de changer un modèle de document en masse aussi (pour un dossier par exemple).

Ou voir ce lien qui contient plusieurs macro :

https://forum.solidworks.com/thread/59487

Je veux supprimer le nom de notre client.

C'est toujours le même c'est vrai que changer le fond de plan serait plus simple. Je n'y avait pas pensé.

 

Par contre je ne sais pas comment changer le format de mon fond de plan. Et je ne sais pas non plus comment savoir le type de format (A4, A3, A2, A1, A0).

1 « J'aime »
La réponse est probablement ici : https://forum.solidworks.com/thread/60953

Voici la solution que j'ai touvée :

Comme on me l'a conseillé j'ai créé des fonds de plan en enlevant les donnés qui ne m'intéressent pas.

Ensuit j'enregistre en PDF et enfin je ferme le fichier sans enregistrer :

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDrawing = swModel

'Test si fichier ouvert
If swModel Is Nothing Then

    MsgBox ("Ouvrer un document")

Else

    Set swSheet = swDrawing.GetCurrentSheet
    'Récupère le nom sans extension
    nom_Fichier = Strings.Left(swModel.GetPathName, Strings.Len(swModel.GetPathName) - 7)
    nom_Ouvrir = swModel.GetPathName
    'Récupère l'extension
    extension = Strings.Right(swModel.GetPathName, 7)

    'Récupére tous les noms des feuilles
    vSheets = swDrawing.GetSheetNames
    nb_Feuil = swDrawing.GetSheetCount

    If (Not (IsEmpty(vSheets))) Then
    
        nom_Quitter = swModel.GetTitle
        longueur = Len(vSheets(0))
    
        'Pour toutes les feuilles
        For i = 0 To UBound(vSheets)
            'Fonction pour récupérer les formats des feuilles
            swDrawing.ActivateSheet (vSheets(i))
            
            Set swSheet = swDrawing.GetCurrentSheet
            sheetProperties = swSheet.GetProperties
            
            sheetScale = sheetProperties(2) / sheetProperties(3)
            paperSize = swSheet.GetSize(width, height)
        
            'Selon le format changement par un autre format
            Select Case paperSize
        
            Case 7
        
                boolstatus = swModel.SetupSheet5(vSheets(i), 12, 12, sheetProperties(2), sheetProperties(3), True, sheetformatpath(4), width, height, "Par défaut", True)
        
            Case 8
        
                boolstatus = swModel.SetupSheet5(vSheets(i), 12, 12, sheetProperties(2), sheetProperties(3), True, sheetformatpath(3), width, height, "Par défaut", True)
            
            Case 9
        
                boolstatus = swModel.SetupSheet5(vSheets(i), 12, 12, sheetProperties(2), sheetProperties(3), True, sheetformatpath(2), width, height, "Par défaut", True)
        
            Case 10
        
                boolstatus = swModel.SetupSheet5(vSheets(i), 12, 12, sheetProperties(2), sheetProperties(3), True, sheetformatpath(1), width, height, "Par défaut", True)
        
            Case 11
        
                boolstatus = swModel.SetupSheet5(vSheets(i), 12, 12, sheetProperties(2), sheetProperties(3), True, sheetformatpath(0), width, height, "Par défaut", True)
        
            End Select
        
        
    Next i
    
    'Enregistre en format PDF avec l'extension EXT
    longstatus = swModel.SaveAs(nom_Fichier & " EXT.PDF")
    DoEvents
    'Ferme sans enregistrer
    swApp.QuitDoc (nom_Quitter)
    DoEvents
    
End If
End If

 

Voici le code qui me permet de changer toutes les feuilles d'une mise en plan avec un nouveau fond de plan de l'enregistrer en format PDF et de fermer sans enregistrer :

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDrawing = swModel

'Test si fichier ouvert
If swModel Is Nothing Then

    MsgBox ("Ouvrer un document")

Else

    Set swSheet = swDrawing.GetCurrentSheet
    'Récupère le nom sans extension
    nom_Fichier = Strings.Left(swModel.GetPathName, Strings.Len(swModel.GetPathName) - 7)
    nom_Ouvrir = swModel.GetPathName
    'Récupère l'extension
    extension = Strings.Right(swModel.GetPathName, 7)

    'Récupére tous les noms des feuilles
    vSheets = swDrawing.GetSheetNames
    nb_Feuil = swDrawing.GetSheetCount

    If (Not (IsEmpty(vSheets))) Then
    
        nom_Quitter = swModel.GetTitle
        longueur = Len(vSheets(0))
    
        'Pour toutes les feuilles
        For i = 0 To UBound(vSheets)
            'Fonction pour récupérer les formats des feuilles
            swDrawing.ActivateSheet (vSheets(i))
            
            Set swSheet = swDrawing.GetCurrentSheet
            sheetProperties = swSheet.GetProperties
            
            sheetScale = sheetProperties(2) / sheetProperties(3)
            paperSize = swSheet.GetSize(width, height)
        
            'Selon le format changement par un autre format
            Select Case paperSize
        
            Case 7
        
                boolstatus = swModel.SetupSheet5(vSheets(i), 12, 12, sheetProperties(2), sheetProperties(3), True, sheetformatpath(4), width, height, "Par défaut", True)
        
            Case 8
        
                boolstatus = swModel.SetupSheet5(vSheets(i), 12, 12, sheetProperties(2), sheetProperties(3), True, sheetformatpath(3), width, height, "Par défaut", True)
            
            Case 9
        
                boolstatus = swModel.SetupSheet5(vSheets(i), 12, 12, sheetProperties(2), sheetProperties(3), True, sheetformatpath(2), width, height, "Par défaut", True)
        
            Case 10
        
                boolstatus = swModel.SetupSheet5(vSheets(i), 12, 12, sheetProperties(2), sheetProperties(3), True, sheetformatpath(1), width, height, "Par défaut", True)
        
            Case 11
        
                boolstatus = swModel.SetupSheet5(vSheets(i), 12, 12, sheetProperties(2), sheetProperties(3), True, sheetformatpath(0), width, height, "Par défaut", True)
        
            End Select
        
        
    Next i
    
    'Enregistre en format PDF avec l'extension EXT
    longstatus = swModel.SaveAs(nom_Fichier & " EXT.PDF")
    DoEvents
    'Ferme sans enregistrer
    swApp.QuitDoc (nom_Quitter)
    DoEvents
    
End If
End If