Erstellen von Zeichnungsvorlagen und . Mit CATPart verbunden

Hallo

Ich möchte eine Vorlage für einen Plan in CATIA erstellen, die mit verknüpft werden kann. CATPart, sodass die Teileeigenschaften automatisch abgerufen und direkt in den Zeichnungsblock geschrieben werden. Mein Hauptproblem im Moment ist es, die beiden Dateien für die gemeinsame Nutzung von Einstellungen zu verknüpfen.

Ich plane auch, eine Schnittstelle auf der . CATPart, das den Zeichner vor dem Entwerfen des Teils nach den grundlegenden Informationen seines Projekts (Kunde, Name, Referenz usw.) fragt. Ich habe nur einige Programmierkenntnisse, daher sind alle Informationen über die zu verwendende Sprache oder andere Ideen willkommen.

Ich habe als Anhänge den Plan und die 3D-Modelle beigefügt, die ich verbessern möchte. 

Vielen Dank im Voraus.


modeles_plan_et_piece.zip

Hallo

Beigefügt sind zwei Codes, die das Gleiche tun, ihr Unterschied liegt in der Einhaltung bestimmter Programmierbeschränkungen, die manchmal auferlegt werden  (kein "bei Fehler, gehe zu renvoi_ligne_de_traitement") 

In 3D und 2D müssen die Parameter genau den gleichen Namen haben, was derzeit nicht der Fall ist: "RAL" in 3D und "RAL CODE" in 2D

Die Codes sind nicht optimiert, bevor Sie das Makro starten, müssen Sie sicherstellen, dass es eine Ansicht des 3D in Ihrer Catdrawing gibt, und um zu vermeiden, dass es von irgendwo aus gestartet wird, fügen Sie am Anfang des Codes einen Test hinzu, um zu überprüfen, ob Sie das Makro aus einer Catdrawing starten und ob eine Ansicht vorhanden ist.

Sub PremiereVue()
    Dim Err As Boolean
    Err = False
    
    '''''''''''''''''''''''''''''''''''''
    ' Récupération du nom du fichier 3D '
    '''''''''''''''''''''''''''''''''''''
    Set ParentVue = CATIA.ActiveDocument.Sheets.ActiveSheet.Views.Item(3).GenerativeLinks.FirstLink
    Do
        Set ParentVue = ParentVue.Parent
    Loop Until ParentVue.Parent.Name = "CNEXT"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    
    ''''''''''''''''''''''''''''''''
    ' Récuperations des paramètres '
    ''''''''''''''''''''''''''''''''
    For Each para In Array("MATIERE", "TRAITEMENT", "REVETEMENT", "TOLERANCES", "RUGOSITE", "RAL", "REFERENCE", "PROJET", "MASSE", "DENOMINATION", "CLIENT")
        Err = False
        On Error GoTo ErrParam3D
        TestErr = ParentVue.Product.Parameters.Item(para).Value
        On Error GoTo ErrParam2D
        TestErr = CATIA.ActiveDocument.Parameters.Item(para).Value
        If Err = False Then
            'MsgBox para & Chr(10) & ParentVue.Product.Parameters.Item(para).Value & Chr(10) & CATIA.ActiveDocument.Parameters.Item(para).Value
            CATIA.ActiveDocument.Parameters.Item(para).Value = ParentVue.Product.Parameters.Item(para).Value
        End If
    Next
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Exit Sub


ErrParam3D:
MsgBox para & " n'existe pas dans le 3D"
Err = True
Resume Next

ErrParam2D:
MsgBox para & " n'existe pas dans le 2D"
Err = True
Resume Next
End Sub

 

Andere Ausführung

Sub PremiereVue_V1()
    Dim Existe3D As Boolean
    Dim Existe2D As Boolean
    Dim Para3D()
    Dim Para2D()
    
    '''''''''''''''''''''''''''''''''''''
    ' Récupération du nom du fichier 3D '
    '''''''''''''''''''''''''''''''''''''
    Set ParentVue = CATIA.ActiveDocument.Sheets.ActiveSheet.Views.Item(3).GenerativeLinks.FirstLink
    Do
        Set ParentVue = ParentVue.Parent
    Loop Until ParentVue.Parent.Name = "CNEXT"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    ''''''''''''''''''''''''''''''''''''''
    ' Récuperations des paramètres du 3D '
    ''''''''''''''''''''''''''''''''''''''
    ReDim Para3D(1 To 2, 1 To ParentVue.Product.Parameters.Count)
    For i = 1 To UBound(Para3D, 2)
        Para3D(1, i) = ParentVue.Product.Parameters.Item(i).Name
        On Error Resume Next
        Para3D(2, i) = ParentVue.Product.Parameters.Item(i).Value
        On Error GoTo 0
    Next
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    ''''''''''''''''''''''''''''''''''''''
    ' Récuperations des paramètres du 2D '
    ''''''''''''''''''''''''''''''''''''''
    ReDim Para2D(1 To 2, 1 To CATIA.ActiveDocument.Parameters.Count)
    For i = 1 To UBound(Para2D, 2)
        Para2D(1, i) = CATIA.ActiveDocument.Parameters.Item(i).Name
        On Error Resume Next
        Para2D(2, i) = CATIA.ActiveDocument.Parameters.Item(i).Value
        On Error GoTo 0
    Next
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    For Each para In Array("MATIERE", "TRAITEMENT", "REVETEMENT", "TOLERANCES", "RUGOSITE", "RAL", "REFERENCE", "PROJET", "MASSE", "DENOMINATION", "CLIENT")
        For i = 1 To UBound(Para3D, 2)
            If Para3D(1, i) = para Then
                Existe3D = True
                Exit For
            Else
                Existe3D = False
            End If
        Next
        For j = 1 To UBound(Para2D, 2)
            If Para2D(1, j) = para Then
                Existe2D = True
                Exit For
            Else
                Existe2D = False
            End If
        Next
        
        If Existe3D = False Then
            MsgBox para & " n'existe pas dans le 3D"
        End If
        If Existe2D = False Then
            MsgBox para & " n'existe pas dans le 2D"
        End If
        If Existe3D = True And Existe2D = True Then
            'MsgBox para & Chr(10) & Para3D(2, i) & Chr(10) & Para2D(2, j)
            CATIA.ActiveDocument.Parameters.Item(para).Value = Para3D(2, i)
        End If
    Next
End Sub

 

Herzliche Grüße

Vince.roullier, 

Ich möchte mich bei Ihnen für Ihre Antwort bedanken, Ihre Code-Vorschläge haben mir bei meinem Projekt (das ich erst jetzt wieder aufnehmen konnte ) enorm geholfen. 

Vielen Dank!