Annonces
La communauté Autodesk sera en lecture seule du 26 avril au 27 avril, le temps de réaliser une maintenance essentielle. Nous retirerons cette bannière une fois l’opération terminée. Merci pour votre compréhension.

Inventor : Macro enregistrement IDW & PDF

Anonymous
809 Visites
3 Réponses
Message 1 sur 4

Inventor : Macro enregistrement IDW & PDF

Anonymous
Non applicable

Bonjour à tous,

 

Je cherche à réaliser une macro d'enregistrement normalisé des plans sous le format idw et pdf.

L'idée est d'enregistrer le plan dans le dossier du projet (en allant le chercher sur le path du modèle associé) et de nommer automatiquement le fichier selon la norme de mon entreprise ( n°plan, indice et nom de la pièce) à l'aide des iPropriétés. (+ analyse si le fichier existe déjà et propose donc l'écrasement ou l'abandon)

J'ai réussi à réaliser une macro identique sur CATIA et Solidworks mais je n'arrive à rien dans Inventor. Les seules aides que je trouve donnent des erreurs dans l'exécution de la macro. Même en faisant un copier-coller d'une macro existante. J'ai souvent des erreurs dans l'attribution d'une valeur à un paramètre de la macro.

 

Quelqu'un peut-il m'aider ?

 

D'avance merci,

 

Martin

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

ThomasB44
Mentor
Mentor

Salut @Anonymous 

Le code de base (en VBA) pour enregistrer en PDF est le suivant, à disposition dans l'aide de l'API :

 

Public Sub PublishPDF()
    ' Get the PDF translator Add-In.
    Dim PDFAddIn As TranslatorAddIn
    Set PDFAddIn = ThisApplication.ApplicationAddIns.ItemById("{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}")

    'Set a reference to the active document (the document to be published).
    Dim oDocument As Document
    Set oDocument = ThisApplication.ActiveDocument

    Dim oContext As TranslationContext
    Set oContext = ThisApplication.TransientObjects.CreateTranslationContext
    oContext.Type = kFileBrowseIOMechanism

    ' Create a NameValueMap object
    Dim oOptions As NameValueMap
    Set oOptions = ThisApplication.TransientObjects.CreateNameValueMap

    ' Create a DataMedium object
    Dim oDataMedium As DataMedium
    Set oDataMedium = ThisApplication.TransientObjects.CreateDataMedium

    ' Check whether the translator has 'SaveCopyAs' options
    If PDFAddIn.HasSaveCopyAsOptions(oDocument, oContext, oOptions) Then

        ' Options for drawings...

        oOptions.Value("All_Color_AS_Black") = 0

        'oOptions.Value("Remove_Line_Weights") = 0
        'oOptions.Value("Vector_Resolution") = 400
        'oOptions.Value("Sheet_Range") = kPrintAllSheets
        'oOptions.Value("Custom_Begin_Sheet") = 2
        'oOptions.Value("Custom_End_Sheet") = 4
    End If

    'Set the destination file name
    oDataMedium.FileName = "c:\temp\test.pdf"

    'Publish document.
    Call PDFAddIn.SaveCopyAs(oDocument, oContext, oOptions, oDataMedium)
End Sub

 

Pour les iPropriétés du document actif, en iLogic c'est :

iProperties.Value("Project", "Part number")

En VBA :

oDoc.PropertySets.Item("Design Tracking Properties").Item("Part Number").Value

 

Pour tester si un fichier existe déjà :

If System.IO.File.Exists("Chemin complet") Then

 

Si tu as déjà un code similaire, il faudrait en savoir davantage pour t'aider en le partageant ici.


Thomas
Mechanical Designer / Inventor Professional 2025
Inventor Professional EESignature

0 J'aime
Message 3 sur 4

Anonymous
Non applicable

Bonjour @ThomasB44,

Déjà un tout grand merci pour ces informations !

J'ai cependant encore des soucis pour chercher une simple valeur et la faire s'afficher dans une MsgBox (test rapide pour vérifier ce que je fais). Par exemple, lui demander de récupérer la valeur "Part Number".

 

Tu trouveras en attaché, des versions txt des macros CATIA et SLW fonctionnelles et un projet de macro pour inventor. Il s'agit vraiment, pour moi, de comprendre le fonctionnement du codage vba dans Inventor et de connaitre les bonnes fonctions. Il existe peu d'aide disponible à ce sujet, du moins avec des codes expoitables.

0 J'aime
Message 4 sur 4

ThomasB44
Mentor
Mentor
Solution acceptée

Tu as de bons codes, et la structure ressemble beaucoup à Inventor, c'est juste que tu ne trouves pas les déclarations, le chemin, et donc la variable.

Tu trouveras toute l'aide nécessaire ici, "Programmation/API Help" :

ThomasB44_0-1638366682253.png

Et plein d'exemples de programmes ici :

https://forums.autodesk.com/t5/inventor-ilogic-api-vba-forum/bd-p/120

 

 


Thomas
Mechanical Designer / Inventor Professional 2025
Inventor Professional EESignature

0 J'aime