|  |  | 
|  | CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48 | 
|  |  | 
|  | Erfolgreich unterwegs mit der KISTERS 3DViewStation , ein Whitepaper 
 | 
| Autor | Thema:  Titelblok macro (1508 /  mal gelesen) | 
 | Jadwiga7 Mitglied
 Ing
 
  
 
      Beiträge: 17Registriert: 31.07.2017
 |    erstellt am: 31. Jul. 2017 16:11  <-- editieren / zitieren -->    Unities abgeben:            
  in Zeichnung habe ich Texte positioniert . Die haben Feature Name ( Properties)" Dokumentnumber" Diese Texte möchte ich mit Parameter aus dem Part ersetzen. Alles automatisch mit einen Titelblok macro. kann hier jemend einen Beispiel schreiben ? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | bgrittmann Moderator
 Konstrukteur
 
         
 
      Beiträge: 12117Registriert: 30.11.2006
 CATIA V5R19 |    erstellt am: 31. Jul. 2017 16:21  <-- editieren / zitieren -->    Unities abgeben:           Nur für Jadwiga7   | 
                        | Randle Mitglied
 CAD/PLM Consultant
 
    
 
      Beiträge: 758Registriert: 12.04.2003
 Win10 x64CATIA V5 R18, R19, R21, R27-29
 |    erstellt am: 01. Aug. 2017 09:57  <-- editieren / zitieren -->    Unities abgeben:           Nur für Jadwiga7   | 
                        | Jadwiga7 Mitglied
 Ing
 
  
 
      Beiträge: 17Registriert: 31.07.2017
 |    erstellt am: 03. Aug. 2017 13:00  <-- editieren / zitieren -->    Unities abgeben:            
  Ich habe einen Part mit Prameter erzeugt . Sub CATMain() Set partDocument1 = CATIA.ActiveDocument Set product1 = partDocument1.GetItem(" ") Set product1 = product1.ReferenceProduct Set parameters1 = product1.UserRefProperties Set strParam1 = parameters1.CreateString("Dokumentnummer", "")strParam1.ValuateFromString "123456789"
 Set strParam1 = parameters1.CreateString("Bennennung", "")strParam1.ValuateFromString "Zylinder"
 End Sub Jetzt möchte ich die Wert von dem Parameter in Zeichnungskopf mit Hilfe von einen Macro übetragen . Vorlage für den Zeichnungskopf ist erstellt  und Zeichnung ist mit dem Part verlink.Aktuel plazhalter für  Dokumentnummer  ist ein Text/ Properites "ZK1"
 und für die Bennennung ist ein Text/ Properites "ZK2"
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | bgrittmann Moderator
 Konstrukteur
 
         
 
      Beiträge: 12117Registriert: 30.11.2006
 CATIA V5R19 |    erstellt am: 03. Aug. 2017 13:10  <-- editieren / zitieren -->    Unities abgeben:           Nur für Jadwiga7   
  Servus Du könntest über DrawingViewGenerativeBehavior  einer Bauteilansicht auf das dargestellte Teil/Baugruppe schließen. Und dann daraus den Parameter auslesen (siehe zB hier  und Doku). Den Parameter könntest du dann in Textfeld als Text einfügen (ggf auch über einen Attributlink). GrußBernd
 ------------------Warum einfach, wenn es auch kompliziert geht.
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Jadwiga7 Mitglied
 Ing
 
  
 
      Beiträge: 17Registriert: 31.07.2017
 |    erstellt am: 04. Aug. 2017 11:20  <-- editieren / zitieren -->    Unities abgeben:            | 
                        | Randle Mitglied
 CAD/PLM Consultant
 
    
 
      Beiträge: 758Registriert: 12.04.2003
 Win10 x64CATIA V5 R18, R19, R21, R27-29
 |    erstellt am: 04. Aug. 2017 11:28  <-- editieren / zitieren -->    Unities abgeben:           Nur für Jadwiga7   
  Hallo, an das verknüpfte Dokument einer Ansicht kommst du hiermit Code:
 Dim oDrwDoc As DrawingDocument
 Dim oDrwSheet As DrawingSheet
 Dim oDrwView As DrawingView
 Dim oCatDoc as Document
 Set oDrwDoc = CATIA.ActiveDocument          'prüfen ob ein Zeichnungsdokument geladen/aktiv istIf Err.Number <> 0 Then                     'wenn keine Zeichnung geladen/aktiv ist...
 Exit Sub
 End If
 Set oDrwSheet = oDrwDoc.Sheets.Item(1)      'Blatt 1 ansprechen/zuweisen - ist immer vorhanden, keine Fehlerbehandlung erforderlichSet oDrwView = oDrwSheet.Views.Item(3)      'prüfen ob eine Geometrieansicht vorhanden ist - Item(1) = Arbeitsansicht, Item(2) = Hintergrundansicht
 If Err.Number <> 0 Then                     'wenn keine Geometrieansicht vorhanden ist
 Exit Sub
 End If
 Set oCatDoc = oDrwView.GenerativeBehavior.Document.Parent   'prüfen ob verknüpftes Dokument vorhanden ist
 
 Einen Attributlink erzeugt man so: Code:
 Private Sub sCreateAttribLink(t_oText As DrawingText, t_oParameter As Parameter)
     t_oText.Text = ""t_oText.InsertVariable 0, 0, t_oParameter
 End Sub
 
 Viel Erfolg und GrußRandle
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Jadwiga7 Mitglied
 Ing
 
  
 
      Beiträge: 17Registriert: 31.07.2017
 |    erstellt am: 04. Aug. 2017 14:40  <-- editieren / zitieren -->    Unities abgeben:            
  Hier bekomme ich leider error  "Description: Objekt erforderlich:'t_oText' " Sub sCreateAttribLink(t_oText As DrawingText, t_oParameter As Parameter)
 t_oText.Text = "Benennung"
 t_oText.InsertVariable 0, 0, t_oParameter
 End Sub was ist hier falsch? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Randle Mitglied
 CAD/PLM Consultant
 
    
 
      Beiträge: 758Registriert: 12.04.2003
 Win10 x64CATIA V5 R18, R19, R21, R27-29
 |    erstellt am: 04. Aug. 2017 14:55  <-- editieren / zitieren -->    Unities abgeben:           Nur für Jadwiga7   
  Hallo, du musst beim Aufruf der Routine dieser zwei Objekte (DrawingText, Parameter) mitgeben, in etwa so: sCreateAttribLink MyText, strParam1  Die Objekte musst du natürlich vorher definieren, für den Parameter hast du das ja schon. GrußRandle
 ------------------Wer für nichts steht, fällt für alles!
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Jadwiga7 Mitglied
 Ing
 
  
 
      Beiträge: 17Registriert: 31.07.2017
 |    erstellt am: 04. Aug. 2017 16:03  <-- editieren / zitieren -->    Unities abgeben:            
  das habe ich gemacht. sCreateAttribLink Benennung, Benennung  In Anhang habe ich dargestellt was mochte ich erreichen. Da muss doch möglich sein mit dem Makro, die Parameter aus dem Part in Zeichnung zu Übertragen    Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Jadwiga7 Mitglied
 Ing
 
  
 
      Beiträge: 17Registriert: 31.07.2017
 |    erstellt am: 04. Aug. 2017 16:35  <-- editieren / zitieren -->    Unities abgeben:            
  da feht mir noch die Übergabe  --------------------------------------------- Sub CATMain() Dim oDrwDoc As DrawingDocumentDim oDrwSheet As DrawingSheet
 Dim oDrwView As DrawingView
 Dim oCatDoc as Document
 Dim t_oText As DrawingText
 Dim t_oParameter As Parameter
 Set oDrwDoc = CATIA.ActiveDocument          'prüfen ob ein Zeichnungsdokument geladen/aktiv ist
 If Err.Number <> 0 Then                    'wenn keine Zeichnung geladen/aktiv ist...
 Exit Sub
 End If
 Set oDrwSheet = oDrwDoc.Sheets.Item(1)      'Blatt 1 ansprechen/zuweisen - ist immer vorhanden, keine Fehlerbehandlung erforderlichSet oDrwView = oDrwSheet.Views.Item(3)      'prüfen ob eine Geometrieansicht vorhanden ist - Item(1) = Arbeitsansicht, Item(2) = Hintergrundansicht
 If Err.Number <> 0 Then                    'wenn keine Geometrieansicht vorhanden ist
 Exit Sub
 End If
 Set oCatDoc = oDrwView.GenerativeBehavior.Document.Parent  'prüfen ob verknüpftes Dokument vorhanden ist
 set ProductDocument = ???????
 set oParameter = ProductDocument.Product.Parameters.item("Benennung")MsgBox(oParameter.value)
 End Sub
 --------------------------------------- in Partmodus Set ProductDocument = CATIA.ActiveDocument
 und wie mache ich das in Zeichnzngsmodus mit verlinkung zum Part ?
 set ProductDocument = ???????
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Randle Mitglied
 CAD/PLM Consultant
 
    
 
      Beiträge: 758Registriert: 12.04.2003
 Win10 x64CATIA V5 R18, R19, R21, R27-29
 |    erstellt am: 04. Aug. 2017 19:30  <-- editieren / zitieren -->    Unities abgeben:           Nur für Jadwiga7   
  Hallo, also ich habe den folgenden Code mal eben zusammengezimmert und unter R18 erfolgreich getestet. Code:
 Sub CATMain()
 Dim oDrwDoc As DrawingDocumentDim oDrwSheet As DrawingSheet
 Dim oDrwView As DrawingView
 Dim oCatDoc As Document
 Dim oDrwText As DrawingText
 Dim oProd As Product
 Dim oParam As Parameter
 On Error Resume Next Set oDrwDoc = CATIA.ActiveDocument          'prüfen ob ein Zeichnungsdokument geladen/aktiv istIf Err.Number <> 0 Then                    'wenn keine Zeichnung geladen/aktiv ist...
 Exit Sub
 End If
 Set oDrwSheet = oDrwDoc.Sheets.Item(1)      'Blatt 1 ansprechen/zuweisen - ist immer vorhanden, keine Fehlerbehandlung erforderlichSet oDrwView = oDrwSheet.Views.Item(3)      'prüfen ob eine Geometrieansicht vorhanden ist - Item(1) = Arbeitsansicht, Item(2) = Hintergrundansicht
 If Err.Number <> 0 Then                    'wenn keine Geometrieansicht vorhanden ist
 Exit Sub
 End If
 Set oCatDoc = oDrwView.GenerativeBehavior.Document.Parent  'prüfen ob verknüpftes Dokument vorhanden istSet oProd = oCatDoc.Product
 Set oParam = oProd.UserRefProperties.CreateString("Benennung", "Test")Set oDrwText = oDrwSheet.Views.Item(2).Texts.GetItem("TB_BENENNUNG")
 sCreateAttribLink oDrwText, oParam
 If Err.Number <> 0 Then
 MsgBox "Irgendwas ist schiefgelaufen.", vbInformation, "Fehler"
 End If
 On Error GoTo 0End Sub
 Sub sCreateAttribLink(t_oText As DrawingText, t_oParameter As Parameter)t_oText.Text = ""
 t_oText.InsertVariable 0, 0, t_oParameter
 End Sub
 
 
 Der Code läuft durch wenn du beide Dokumente (Anhang: Beispieldaten.zip) in CATIA geladen sind und die Zeichnung aktiv ist. Ich habe hier allerdings auf eine ausführliche Fehlerbehandlung verzichtet. Auch wird der Parameter im Part IMMER erzeugt (auch wenn der bereits vorhanden ist). Hier würde ich empfehlen noch was einzubauen was prüft ob es den Parameter schon gibt und ihn nur erzeugt wenn der noch nicht vorhanden ist Die im Code hinterlegte Belegung für den 3D Parameters "Benennung" halte ich auch für problematisch, oder heißen bei euch alle Teile gleich? Aber zumindest hast du jetzt Code der in der Basis funktioniert und den du entsprechend deinen Anforderungen anpassen/erweitern kannst. Viel Erfolg und GrußRandle
 ------------------Wer für nichts steht, fällt für alles!
 [Diese Nachricht wurde von Randle am 04. Aug. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                       
 | Jadwiga7 Mitglied
 Ing
 
  
 
      Beiträge: 17Registriert: 31.07.2017
 |    erstellt am: 07. Aug. 2017 16:54  <-- editieren / zitieren -->    Unities abgeben:            |