Communauté
Inventor - Français
Bienvenue sur les forums Inventor d’Autodesk. Partagez vos connaissances, posez des questions, collaborez sur des idées, et explorez les sujets Inventor populaires.
annuler
Affichage des résultats de 
Afficher  uniquement  | Rechercher plutôt 
Vouliez-vous dire : 

Inventor : Numéro de feuille automatique dans la mise en plan

7 RÉPONSES 7
RÉSOLU
Répondre
Message 1 sur 8
modelinEGJXB
192 Visites, 7 Réponses

Inventor : Numéro de feuille automatique dans la mise en plan

Bonjour à tous,

 

Je souhaiterais récupérer le numéro de révision et le numéro de pièce de ma pièce afin de l'inclure dans le numéro de ma feuille de mise en plan

 

Voici mon fonctionnement actuel :

Lorsque je créé une pièce, je remplis un formulaire iLogic dans lequel j'entre (s'il y a) un numéro de révision et un numéro de pièce :

modelinEGJXB_1-1716969756553.png

 

Ceux-ci sont liés avec "Numéro de révision" et "Numéro de pièce" dans les iPropriétés : 

modelinEGJXB_2-1716969775701.png

 

Lorsque j'ouvre ma mise en plan, les numéros sont automatiquement renseignés dans le cartouche :

modelinEGJXB_4-1716970285936.png

 

Par la suite je renomme manuellement mon nom de feuille :

modelinEGJXB_6-1716970630684.png

 

Serait-il possible de faire une règle iLogic pour remplir automatiquement chaque nom de feuille en fonction du numéro de pièce et du numéro de révision de chaque pièces ?

 

Merci d'avance pour vos propositions et bonne jounée,

 

Mathieu

7 RÉPONSES 7
Message 2 sur 8
modelinEGJXB
en réponse à: modelinEGJXB

Dim oDrawDoc As Inventor.DrawingDocument
oDrawDoc = ThisApplication.ActiveDocument Dim oSheet As Sheet oSheet = oDrawdoc.ActiveSheet oSheet.Name = iProperties.Value("Project", "Part Number")

 

Voilà où j'en suis, j'arrive à changer le nom de la feuille avec le numéro de pièce de la mise en plan, mais je n'arrive toujours pas à récupérer le numéro de pièce propre à chaque feuille (Celui qui est inscrit dans mon cartouche...)

 

Message 3 sur 8
gmassart
en réponse à: modelinEGJXB

La stratégie c'est de :

  • boucler sur toutes les feuilles (for each oSheet in ActiveDocument.sheets)
  • Chopper la première vue 
  • Récupérer les informations du modèle lié à la première vue dont ton numéro de pièce et sa révision
  • Renommer la feuille (oSheet.Name = ...)

 

Guillaume MASSART
AFFIVAL SAS
Inventor Pro 2022
EESignature

Message 4 sur 8
modelinEGJXB
en réponse à: gmassart

Voilà après de longues conversation avec ChatGPT, le code permettant de numéroter les feuilles en fonction de leur numéro de pièce et de leur révision :

 

' Obtenez la référence au document actif
Dim oDoc As Document
oDoc = ThisApplication.ActiveDocument

' Vérifiez que le document actif est une mise en plan (DrawingDocument)
If oDoc.DocumentType <> kDrawingDocumentObject Then
    MessageBox.Show("Ce script doit être exécuté sur un document de mise en plan (Drawing).", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
    Exit Sub
End If

' Obtenez la référence au document de mise en plan actif
Dim oDrawingDoc As DrawingDocument
oDrawingDoc = oDoc

' Itérez à travers chaque feuille de la mise en plan
For Each oSheet As Sheet In oDrawingDoc.Sheets
    ' Itérez à travers chaque vue sur la feuille
    Dim sheetRenamed As Boolean
    sheetRenamed = False

    For Each oView As DrawingView In oSheet.DrawingViews
        ' Vérifiez si la vue a un document référencé
        If Not oView.ReferencedDocumentDescriptor Is Nothing Then
            ' Obtenez le modèle de document (part ou assembly) associé à la vue
            Dim oModelDoc As Document
            On Error Resume Next ' Pour éviter les erreurs lors de l'accès au document référencé
            oModelDoc = oView.ReferencedDocumentDescriptor.ReferencedDocument
            On Error GoTo 0

            If Not oModelDoc Is Nothing Then
                ' Obtenez les iProperties du document modèle
                Dim oPropSet As PropertySet
                On Error Resume Next ' Pour éviter les erreurs lors de l'accès aux iProperties
                oPropSet = oModelDoc.PropertySets.Item("Design Tracking Properties")
                On Error GoTo 0

                If Not oPropSet Is Nothing Then
                    ' Récupérez la valeur de la propriété "Numéro de pièce" (Part Number)
                    Dim partNumber As String
                    On Error Resume Next ' Pour éviter les erreurs si la propriété n'existe pas
                    partNumber = oPropSet.Item("Part Number").Value
                    On Error GoTo 0

                    ' Récupérez la valeur de la propriété "Numéro de révision" (Revision Number)
                    Dim revisionNumber As String
                    revisionNumber = ""

                    ' Essayez de récupérer la propriété "Numéro de révision" depuis les propriétés sommaires (Summary Information)
                    Dim oSummaryPropSet As PropertySet
                    On Error Resume Next
                    oSummaryPropSet = oModelDoc.PropertySets.Item("Inventor Summary Information")
                    If Not oSummaryPropSet Is Nothing Then
                        On Error Resume Next
                        revisionNumber = oSummaryPropSet.Item("Revision Number").Value
                        On Error GoTo 0
                    End If

                    ' Si la propriété de révision n'est toujours pas trouvée, utilisez une alternative
                    If revisionNumber = "" Then
                        On Error Resume Next
                        revisionNumber = oPropSet.Item("Revision Number").Value
                        On Error GoTo 0
                    End If

                    ' Récupérez le nom du document modèle
                    Dim modelDocName As String
                    modelDocName = oModelDoc.DisplayName

                    ' Affichez le numéro de pièce, le numéro de révision et le nom du document modèle
    '                MessageBox.Show("Feuille : " & oSheet.Name & vbCrLf & _
     '                               "Vue : " & oView.Name & vbCrLf & _
      '                              "Numéro de pièce : " & partNumber & vbCrLf & _
       '                             "Numéro de révision : " & revisionNumber & vbCrLf & _
        '                            "Nom du document modèle : " & modelDocName, _
         '                           "Informations de la vue", MessageBoxButtons.OK, MessageBoxIcon.Information)

                    ' Renommez la feuille en utilisant le numéro de pièce
                    If Not sheetRenamed And Not String.IsNullOrEmpty(partNumber) Then
    					If String.IsNullOrEmpty(revisionNumber) Then
        					oSheet.Name = partNumber
        					sheetRenamed = True
    					Else
        					oSheet.Name = partNumber & "_" & revisionNumber
        					sheetRenamed = True
    					End If
					End If

                    ' Quittez la boucle si la feuille a été renommée
                    If sheetRenamed Then
                        Exit For
                    End If
                End If
            End If
        End If
    Next
Next
Message 5 sur 8
gmassart
en réponse à: modelinEGJXB

Ca a l'air correct mais à voir à l'exécution ce que ça donne.

 

Guillaume MASSART
AFFIVAL SAS
Inventor Pro 2022
EESignature

Message 6 sur 8
gmassart
en réponse à: modelinEGJXB

Dans le code tu as un "Exit Sub" ça sous entend que tu es dans un Sub (une instruction) qui n'apparaît pas dans le code

Donc rajoute au début un truc du genre : Sub fRenameSheet()

et à la fin  : End Sub

Guillaume MASSART
AFFIVAL SAS
Inventor Pro 2022
EESignature

Message 7 sur 8
ThomasB44
en réponse à: modelinEGJXB

Salut @modelinEGJXB 

Le code retourné par ChatGPT est plutôt propre.

Puisque tu es dans l'environnement iLogic, il suffit de remplacer "Exit Sub" par "Return"

Une règle est déjà considérée comme une sorte de Function, que l'on peut également appeler.

En revanche, on ne peut pas utiliser "Exit Sub" sans "Sub xxx"

Comme ceci par exemple :

ThomasB44_0-1717053345278.png

 


Thomas
Mechanical Designer / Inventor Professionnal 2023
Inventor Professional EESignature

Message 8 sur 8
modelinEGJXB
en réponse à: modelinEGJXB

Merci pour vos retours !

Exit sub a été remplacé par Return, et ça fonctionne,

 

Bonne journée !

Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.

Publier dans les forums  

Autodesk Design & Make Report