|   |   | 
  | CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48 | 
|   |   | 
  | KISTERS 3DViewStation: Schnelligkeit und Präzision in dem neuen JT-Importer, eine Pressemitteilung
  | 
| 
Autor
 | 
Thema:  Zeichnung \ Textfeld automatisch ausfüllen  (3465 mal gelesen)
 | 
 
                        NT24 Mitglied Technischer Zeichner
  
  
        Beiträge: 61 Registriert: 08.11.2004 
                         | 
                        
                         
                                                 
                        erstellt am: 12. Nov. 2006 23:22       <-- editieren / zitieren -->           Unities abgeben:           
                        
  Hallo Forum Ich habe im Forum einen Beitrag gefunden wie man einen Text einliest.   http://ww3.cad.de/foren/ubb/Forum137/HTML/001111.shtml#000001  Code: sLine = “Text”  Set DrawingText = DrwView.Texts.Add(sLine, 0, i)     DrawingText.SetFontSize 0, 0, 5     DrawingText.anchorPosition = catBottomLeft 
   Dieses Script setzt ein Textfeld mit einem bestimten Text in eine bestimmte Position auf der Zeichnung.
 Weis jemand wie das Scrpt ausschauen müsste wenn ich den Text in eine Vordefiniertes Textfeld (zb. Namen „Feld1“   auf der Zeichnung einfügen möchten. Mit freundlichen Grüßen NT24
  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        Tstone Mitglied Werkzeugkonstrukteur
   
  
        Beiträge: 163 Registriert: 04.06.2003 Dell Precision 470 Intel Xeon CPU 3,00GHz 2GB Ram  Microsoft Windows XP Catia V5 R18 SP6 VB2005 
                         | 
                        
                         
                                                 
                        erstellt am: 13. Nov. 2006 12:40       <-- editieren / zitieren -->           Unities abgeben:            Nur für NT24  
                        
  Hallo NT24 Wenn das Textfeld auf der Zeichnung vorhanden ist und du den Namen kennst geht es folgendermaßen: ... Dim drawingTexts1 As DrawingTexts Set drawingTexts1 = drawingView1.Texts Dim drawingText1 As DrawingText Dim n As Integer N=0 Do  n = n + 1  If drawingTexts1.Item(n).Name = oName Then    Set drawingText1 = drawingTexts1.Item(n)    drawingText1.Text = "MeinText"    Exit Do  End If Loop Until n = drawingTexts1.Count ... Bis denn ------------------ Grüße TStone       "Respektiere die Macht der Worte, wähle sie mit Bedacht!" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        Tstone Mitglied Werkzeugkonstrukteur
   
  
        Beiträge: 163 Registriert: 04.06.2003 Dell Precision 470 Intel Xeon CPU 3,00GHz 2GB Ram  Microsoft Windows XP Catia V5 R18 SP6 VB2005 
                         | 
                        
                         
                                                 
                        erstellt am: 13. Nov. 2006 12:44       <-- editieren / zitieren -->           Unities abgeben:            Nur für NT24  
                         | 
                        
                        NT24 Mitglied Technischer Zeichner
  
  
        Beiträge: 61 Registriert: 08.11.2004 
                         | 
                        
                         
                                                 
                        erstellt am: 14. Nov. 2006 09:55       <-- editieren / zitieren -->           Unities abgeben:           
                        
  Vielen dank für ihre Antwort! Ich habe das Script Probiert! leider funktioniert das nicht wirklich und mir ist es nicht gelungen es zum laufen zu bringen!! es bleibt immer auf dieser Stelle stehen 
 
 Code: Set drawingTexts1 = drawingView1.Texts
  ??? mfg NT24 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        Tstone Mitglied Werkzeugkonstrukteur
   
  
        Beiträge: 163 Registriert: 04.06.2003 Dell Precision 470 Intel Xeon CPU 3,00GHz 2GB Ram  Microsoft Windows XP Catia V5 R18 SP6 VB2005 
                         | 
                        
                         
                                                 
                        erstellt am: 14. Nov. 2006 12:32       <-- editieren / zitieren -->           Unities abgeben:            Nur für NT24  
                         | 
                        
                        NT24 Mitglied Technischer Zeichner
  
  
        Beiträge: 61 Registriert: 08.11.2004 
                         | 
                        
                         
                                                 
                        erstellt am: 16. Nov. 2006 09:19       <-- editieren / zitieren -->           Unities abgeben:           
                         | 
                        
                        Lusilnie Mitglied
 
     
  
        Beiträge: 1486 Registriert: 13.07.2005 
                         | 
                        
                         
                                                 
                        erstellt am: 16. Nov. 2006 21:10       <-- editieren / zitieren -->           Unities abgeben:            Nur für NT24  
                        
  Hallo NT24, ich will ja nicht vorwitzig sein (   ), aber wenn ich mir die Code-Schnipsel in den Beiträgen anschaue, so sollte die Zeile vielleicht so lauten: Code: Set drawingTexts1 = DrwView.Texts
   Hilft das? mfg, Lusilnie
 
 ------------------
  Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        Tstone Mitglied Werkzeugkonstrukteur
   
  
        Beiträge: 163 Registriert: 04.06.2003 Dell Precision 470 Intel Xeon CPU 3,00GHz 2GB Ram  Microsoft Windows XP Catia V5 R18 SP6 VB2005 
                         | 
                        
                         
                                                 
                        erstellt am: 17. Nov. 2006 09:07       <-- editieren / zitieren -->           Unities abgeben:            Nur für NT24  
                         | 
                        
                        NT24 Mitglied Technischer Zeichner
  
  
        Beiträge: 61 Registriert: 08.11.2004 
                         | 
                        
                         
                                                 
                        erstellt am: 20. Nov. 2006 08:51       <-- editieren / zitieren -->           Unities abgeben:           
                        
  Guten Morgen Forum Ich habe leider immer noch das Problem das das Script noch nicht Funktioniert!  In der Zeile „Set drawingTexts1 = DrwView.Texts“ Kommt die Fehlermeldung „(424) Objekt erforderlich“ 
 
 
 Code: Private Sub CommandButton1_Click() oName = "TEST"Dim drawingTexts1 As DrawingTexts 'Set drawingTexts1 = drawingView1.Texts Set drawingTexts1 = DrwView.Texts Dim drawingText1 As DrawingText Dim n As Integer n = 0 Do n = n + 1 If drawingTexts1.Item(n).Name = oName Then   Set drawingText1 = drawingTexts1.Item(n)   drawingText1.text = "MeinText"   Exit Do End If Loop Until n = drawingTexts1.Count End Sub 
  Ich würde mich freuen über einen Antwort!mfg NT24
  [Diese Nachricht wurde von NT24 am 20. Nov. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        MarkusK Mitglied
 
   
  
        Beiträge: 131 Registriert: 09.08.2002 Dell Precision T5500 Intel Xenon X5560 4x 2,8 GHz 12 GB Ram NVIDIA Quadro FX 3800 Win XP Catia V5R19 SP3 
                         | 
                        
                         
                                                 
                        erstellt am: 20. Nov. 2006 12:51       <-- editieren / zitieren -->           Unities abgeben:            Nur für NT24  
                        
  Hallo NT24, ich vermute dein Code weiß einfach nicht, in welcher Datei, in welchem Blatt und in welcher View es arbeiten soll. Als erstes fehlt dir eigentlich "Options Explicit", und zwar ganz oben in deinem Modul. Das bewirkt nämlich, dass alle Variablen definiert sein müssen. Somit dürft in deinem Code erst mal bei DrwView eine Fehlermeldung kommen.  Denn das ist eine (Objekt)Variable, die aber nie mit einem Objekt  verbunden wird. Somit kann ja auch auf kein Textfeld darin zugegriffen werden. Habe mal von mir einen Code rauskopiert. Hoffe nur er läuft, bzw. dass nix fehlt, da er halt rauskopiert wurde. Ich trage in zwei Textfeldern das Datum und mein Name ein. Die Textfelder sitzen auf dem Blatt "Vorlagen (Detail )", darauf in der View "Engl. ZG-Kopf_text". Das Makro durchläft dann, wie es die Kollegen auch schon beschrieben haben, alle Textfelder in dieser View (nur dieser View, andere Views haben ihre eigene Textfelder, die auch gleich heißen können) Option Explicit Private Const Datumsfeld = 65 Private Const Namensfeld = 66 Sub CATMain() If CATIA.Documents.Count Then     If TypeName(CATIA.ActiveDocument) = "DrawingDocument" Then         Freigabe Format(Date, "dd.mm")     End If End If      End Sub  Public Sub Freigabe(Datum As String)
     Dim drawingDocument1 As DrawingDocument     Set drawingDocument1 = CATIA.ActiveDocument          Dim drawingSheets1 As DrawingSheets     Set drawingSheets1 = drawingDocument1.Sheets          Dim drawingSheet1 As DrawingSheet     If drawingSheets1.Item("Vorlagen (Detail )") Is Nothing Then MsgBox "Zeichnungköpfe nicht gefunden": Exit Sub     Set drawingSheet1 = drawingSheets1.Item("Vorlagen (Detail )")          Dim drawingViews1 As DrawingViews     Set drawingViews1 = drawingSheet1.Views          Dim drawingView1 As DrawingView     If drawingViews1.Item("Engl. ZG-Kopf_text") Is Nothing Then MsgBox "Zeichnungköpfe nicht gefunden": Exit Sub     Set drawingView1 = drawingViews1.Item("Engl. ZG-Kopf_text")          Dim text1 As DrawingText     Dim text2 As DrawingText          'Datumsfeld ermitteln     For Each text1 In drawingView1.Texts         If text1.Name = "Text." & Datumsfeld Then Exit For     Next text1     If text1 Is Nothing Then         MsgBox "Textfeld " & Datumsfeld & " für Datum nicht gefunden"         Exit Sub     Else         text1.Text = Datum     End If          'Namensfeld ermitteln     For Each text2 In drawingView1.Texts         If text2.Name = "Text." & Namensfeld Then Exit For     Next text2     If text2 Is Nothing Then         MsgBox "Textfeld " & Namensfeld & " für Datum nicht gefunden"         Exit Sub     Else         text2.Text = "Hans Mustermann"     End If End Sub
  ------------------ Gruss Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        Tstone Mitglied Werkzeugkonstrukteur
   
  
        Beiträge: 163 Registriert: 04.06.2003 Dell Precision 470 Intel Xeon CPU 3,00GHz 2GB Ram  Microsoft Windows XP Catia V5 R18 SP6 VB2005 
                         | 
                        
                         
                                                 
                        erstellt am: 20. Nov. 2006 12:57       <-- editieren / zitieren -->           Unities abgeben:            Nur für NT24  
                        
  Hallo NT24 Deiner Variable DrwView wird gar kein Wert/Objekt zugewiesen. So sollte es gehen:  Code: -------------------------------------------------------------------------------- Private Sub CommandButton1_Click() oName = "TEST" Dim DrwDocument As DrawingDocument Set DrwDocument = CATIA.ActiveDocument Dim DrwSheets As DrawingSheets Set DrwSheets = DrwDocument.Sheets Dim DrwSheet As DrawingSheet Set DrwSheet = DrwSheets.ActiveSheet Dim DrwView As DrawingView Set DrwView = DrwSheet.Views.ActiveView Dim drawingTexts1 As DrawingTexts Set drawingTexts1 = DrwView.Texts Dim drawingText1 As DrawingText Dim n As Integer n = 0 Do n = n + 1 If drawingTexts1.Item(n).Name = oName Then   Set drawingText1 = drawingTexts1.Item(n)   drawingText1.text = "MeinText"   Exit Do End If Loop Until n = drawingTexts1.Count End Sub -------------------------------------------------------------------------------- Bitte nicht falsch verstehen: Ich kann dir nur empfehlen dich in die "Infrastructure Automation Objects" der V5Automation.chm  einzuarbeiten. Die Forumsmitglieder können nur Lösungenvorschläge für Probleme machen, nicht ganze Programme zusammenbasteln. Grundkenntnisse der VB-Programmierung sind,auch für die Macros, erforderlich. Ein großer Vorteil ist es, wenn man weiß, ob ein Gegenüber Anfänger oder Profi ist. Entsprechend kann geantwortet werden.  Schlußendlich hätte ich aber auch detailierter antworten müssen. Ich hoffe dein Programm funktioniert nun.
  ------------------ Grüße TStone       "Respektiere die Macht der Worte, wähle sie mit Bedacht!" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        NT24 Mitglied Technischer Zeichner
  
  
        Beiträge: 61 Registriert: 08.11.2004 
                         | 
                        
                         
                                                 
                        erstellt am: 20. Nov. 2006 14:05       <-- editieren / zitieren -->           Unities abgeben:           
                        
  Hallo Zusammen Ich  möchte mich noch Mals bei euch allen bedanke für die interessanten und hilfreichen Beiträge!  Ich hätte nur noch einen bitte! Wie müsste das Script ausschauen wenn das Text Feld in der Hintergrundansicht positioniert ist? Ich bedanke mich nochmals für eure Hilfe  mfg NT24
  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                       
 
                        Lusilnie Mitglied
 
     
  
        Beiträge: 1486 Registriert: 13.07.2005 
                         | 
                        
                         
                                                 
                        erstellt am: 20. Nov. 2006 21:24       <-- editieren / zitieren -->           Unities abgeben:            Nur für NT24  
                        
  Hallo NT24, dann müßte die Zeile aus dem Script von Tstone nicht Code: Set DrwView = DrwSheet.Views.ActiveView
 
  sondernCode: Set DrwView = DrwSheet.Views.Item(2)
  lauten. Das sollte immer die BackgroundView (Hintergrundansicht) sein, ".Item(1)" immer die MainView (Sheet)! mfg, Lusilnie
 
 
 ------------------
  Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  |