Inventor: Exporter une sheet spécifique d'un .idw en .pdf si et seulement si un des noms de sheet s'appelle "Notice"

Inventor: Exporter une sheet spécifique d'un .idw en .pdf si et seulement si un des noms de sheet s'appelle "Notice"

Anonymous
Non applicable
672 Visites
3 Réponses
Message 1 sur 4

Inventor: Exporter une sheet spécifique d'un .idw en .pdf si et seulement si un des noms de sheet s'appelle "Notice"

Anonymous
Non applicable

Bonjour,

Je possède une macro d'export de mes .idw en .dwg qui exporte toutes les sheets du .idw vers un emplacement ficher.

Le nom & le nombre de ces sheets sont variables.

 

J'aimerais ajouté une condition d'export à cette macro,

Si une de ces sheets s'appelle "Notice" (Ce qui n'est pas toujours le cas) alors :

  1. exporter toutes les sheets en .dwg (comme avant) 
  2. ET en plus exporter uniquement la sheet "Notice" en .pdf

Et si la sheet "Notice" n'existe pas, la macro d'export de .dwg s'exécute quand même.

 

Condition d'export en PDF.jpg

En espérant avoir été clair,

Merci bcps ! 👍👌

0 J'aime
Solutions acceptées (1)
673 Visites
3 Réponses
Replies (3)
Message 2 sur 4

ThomasB44
Mentor
Mentor

Salut @Anonymous 

Où bloques tu et qu'as tu comme code à ce jour ? Est ce du VBA ou du VB.NET (iLogic)

Il suffit d'ajouter une condition avec le nom de la feuille.


Thomas
Mechanical Designer / Inventor Professional 2025
Inventor Professional EESignature

0 J'aime
Message 3 sur 4

gmassart
Advisor
Advisor
Solution acceptée

Bonjour

Vous allez avoir besoin de cette fonction pour exporter

Sub ExportPDF(oPath As String, oFileName As String, oDocument As Document, oOptions As NameValueMap)
    ' Get the PDF translator Add-In.
    Dim PDFAddIn As TranslatorAddIn
    Set PDFAddIn = ThisApplication.ApplicationAddIns.ItemById("{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}")
    Dim oContext As TranslationContext
    Set oContext = ThisApplication.TransientObjects.CreateTranslationContext
    oContext.Type = kFileBrowseIOMechanism
    ' Create a DataMedium object
    Dim oDataMedium As DataMedium
    Set oDataMedium = ThisApplication.TransientObjects.CreateDataMedium
    'Set the destination file name
    oDataMedium.filename = oPath & oFileName
    'Publish document.
    Call PDFAddIn.SaveCopyAs(oDocument, oContext, oOptions, oDataMedium)
End Sub

Et derrière il faut préparer l'export avec diverses fonction (mais à adapter)

Fonction dépendant d'un bouton sur un formulaire VB

Private Sub btnExportPdf_Click()
    ' Create a NameValueMap object
    Dim oOptions As NameValueMap, oDirectory As String, oFileName As String, oFileDialog As Inventor.FileDialog
    Set oOptions = ThisApplication.TransientObjects.CreateNameValueMap
    oOptions.value("All_Color_AS_Black") = cbBW.value
    oOptions.value("Remove_Line_Weights") = cbLineWeights.value
    Dim Vector As Integer
    Vector = TBResolution.value
    oOptions.value("Vector_Resolution") = Vector
    If OptBtnAllSheets.value Then
        oOptions.value("Sheet_Range") = kPrintAllSheets
    End If
    If OptBtnCurrentSheet Then
        oOptions.value("Sheet_Range") = kPrintCurrentSheet
    End If
    If OptBtnSheets Then
        Dim sFrom As Integer
        Dim sTo As Integer
        sFrom = TBSheetFrom.value
        sTo = TBSheetTo.value
        oOptions.value("Sheet_Range") = kPrintSheetRange
        oOptions.value("Custom_Begin_Sheet") = sFrom
        oOptions.value("Custom_End_Sheet") = sTo
    End If
    If OptBtnDirectoryChoice Then
        Set oFileDialog = Nothing
        Call ThisApplication.CreateFileDialog(oFileDialog)
        oFileDialog.Filter = "Adobe Acrobe PDF files (*.pdf)|*.pdf"
        oFileDialog.InitialDirectory = ThisApplication.DesignProjectManager.ActiveDesignProject.WorkspacePath
        oFileDialog.CancelError = True
        If OptBtnCustomFileName Then
            oFileDialog.filename = TBCustomFileName.text
        Else
            oFileDialog.filename = getFileName(ThisApplication.ActiveDocument.FullFileName) & ".pdf"
        End If
        On Error Resume Next
        Call oFileDialog.ShowSave
        
        If err.Number <> 0 Then
            Exit Sub
        ElseIf oFileDialog.filename = "" Then
            MsgBox "Le nom du fichier est vide"
            Exit Sub
        Else
            oFileName = oFileDialog.filename
        End If
    Else
        oDirectory = getPath(ThisApplication.ActiveDocument.FullFileName)
        If OptBtnCustomFileName Then
            oFileName = TBCustomFileName.text & ".pdf"
        Else
            oFileName = getFileName(ThisApplication.ActiveDocument.FullFileName) & ".pdf"
        End If
    End If
    Call ExportPDF(oDirectory, oFileName, ThisApplication.ActiveDocument, oOptions)
End Sub

Vous aurez uniquement besoin " oOptions.value("Sheet_Range") = kPrintCurrentSheet" et il faut penser à activer la feuille avant de faire l'export (mais je suppose que c'est déjà le cas pour vos exports ?)

En gros il faut parcourir les feuilles, comparer le nom de la feuille avec vos conditions, l'activer et faire l'export pdf.

 Fonction pour le getPath

Function getPath(oDocFullPath As String) As String
    getPath = Left(oDocFullPath, InStrRev(oDocFullPath, "\"))
End Function

Fonction pour le getFileName

Function getFileName(oDocFullPath As String) As String
    Dim oDocNameWOExtension As String
    oDocNameWOExtension = Right(oDocFullPath, Len(oDocFullPath) - InStrRev(oDocFullPath, "\"))
    getFileName = Left(oDocNameWOExtension, InStrRev(oDocNameWOExtension, ".") - 1)
End Function

Ces deux fonctions peuvent être mises dans un module à part

 

Guillaume MASSART
AFFIVAL SAS
Inventor Pro 2022
EESignature

Message 4 sur 4

patrick.emin
Alumni
Alumni

Bonjour @Anonymous 

Votre problème a-t-il été résolu? Si oui, pouvez vous nous indiquer de quelle façon pour que cela profite à la communauté, si non, pouvez vous nous dire si vous avez pu essayer les suggestions qui vous ont été faites?

Si une des réponses résout votre problème ou vous a permis de mieux le comprendre, voulez vous avoir l'amabilité de cliquer sur le bouton  APPROUVER LA SOLUTION  en bas de la réponse qui apporte une solution?
Merci de ne pas accepter comme solution le message que vous êtes en train de lire.


Patrick Emin animateur de la communauté francophone


Vous avez trouvé un message utile? Alors donnez un "J'aime" à ce message!
Votre question a eu une réponse satisfaisante? Voulez vous avoir l'amabilité de cliquer sur le bouton
 APPROUVER LA SOLUTION  en bas de la réponse qui apporte une solution?
Signez notre Livre d'Or
0 J'aime