Autor
|
Thema: Titelblok macro (1271 mal gelesen)
|
Jadwiga7 Mitglied Ing
Beiträge: 17 Registriert: 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: 11780 Registriert: 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: 695 Registriert: 12.04.2003 Win10 x64 CATIA 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: 17 Registriert: 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: 11780 Registriert: 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: 17 Registriert: 31.07.2017
|
erstellt am: 04. Aug. 2017 11:20 <-- editieren / zitieren --> Unities abgeben:
|
Randle Mitglied CAD/PLM Consultant
Beiträge: 695 Registriert: 12.04.2003 Win10 x64 CATIA 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 DocumentSet 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 erforderlich Set 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: 17 Registriert: 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: 695 Registriert: 12.04.2003 Win10 x64 CATIA 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: 17 Registriert: 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: 17 Registriert: 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 DrawingDocument Dim 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 erforderlich Set 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: 695 Registriert: 12.04.2003 Win10 x64 CATIA 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 DrawingDocument Dim 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 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 erforderlich Set 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 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 0 End 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: 17 Registriert: 31.07.2017
|
erstellt am: 07. Aug. 2017 16:54 <-- editieren / zitieren --> Unities abgeben:
|