|   |   |    | CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48 |  |   |   |    | KISTERS 3DViewStation: Geniale 3D-Visualisierung für intuitiven HMI Einsatz, eine Pressemitteilung
  |  
| 
Autor
 | 
Thema:  Prüfen, ob Textfeld in Drawing vorhanden ist (1540 mal gelesen)
 | 
 
 
                        n4426 Mitglied CAx-Administration, Technischer Zeichner (Maschinen- und Anlagentechnik)
  
  
        Beiträge: 65 Registriert: 17.01.2003 
                         | 
                        
                         
                                                 
                        erstellt am: 17. Aug. 2009 10:24       <-- editieren / zitieren -->           Unities abgeben:           
                        
  Hallo Forum, ich bin gerade dabei ein VBA-Makro zu schreiben, welches mir Textfelder auf einer Zeichnugn aufüllt. Die Textfelder liegen im Hintergrund. Meine frage ist jetzt, kann ich prüfen, ob ein Bestimtes Textfeld im Hintergrund vorhanden ist.  Kann mir da eine von euch weiterhelfen?
 ------------------ MfG N4426 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  |  
                        
                        DanielFr. Ehrenmitglied V.I.P. h.c. Manager
       
  
        Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3 
                         | 
                        
                         
                                                 
                        erstellt am: 17. Aug. 2009 10:47       <-- editieren / zitieren -->           Unities abgeben:            Nur für n4426  
                        
  Hallo, um zu prüfen ob ein Textfeld schon vorhanden ist oder nicht brauchst du entweder den Namen des Textfeldes oder den Inhalt (da der Inhalt meistens variabel ist würde ich das erste bevorzugen). Jetzt schreibst du dir eine Funktion (siehe unten) die dir einen True oder False Wert zurückgibt. Hier mal ein Code (ich weiß nicht sicher ob alles hinhaut (vorallem die Deklarationstypen). Hab gerade kein CATIA zur Hand    ) Code:
      Sub CATMain()        Dim oDoc As DrawingDocument         Dim Sheets As DrawingSheets         Dim oSheet As DrawingSheet         Dim oViews As DrawingViews         Dim oView As DrawingView         Dim oTexts As DrawingTexts         Dim oText As DrawingText         Dim NameToCheck As String         On Error Resume Next         Set oDoc = CATIA.ActiveDocument         If Err.Number <> 0 Then             On Error GoTo 0             Box = MsgBox("Das geöffnete Dokument ist KEINE Zeichnung!" + Chr(10) + "Das Makro wird beendet", vbCritical, "Falscher Dateityp")             Exit Sub         End If         Set oSheets = oDoc.Sheets         Set oSheet = oSheets.ActiveSheet         Set oViews = oSheet.Views         Set oView = oViews.Item(2) 'Background View         Set oTexts = oView.Texts         NameToCheck = "xyz"         If CheckTheState(oTexts, oText, NameToCheck) = True Then             MsgBox("Das Textfeld " & NameToCheck & " existiert")         Else             MsgBox("Das Textfeld " & NameToCheck & " existiert nicht")         End If     End Sub     Private Function CheckTheState(ByVal oTexts As DrawingTexts, ByVal oTextBox As DrawingText, ByVal NameToCheck As String) As Boolean         For Each oText In oTexts             If oText.Name = NameToCheck Then                 Return True                 Exit Function             Else                 Return False             End If         Next     End Function
  
  ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin     Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  |  
                        
                        n4426 Mitglied CAx-Administration, Technischer Zeichner (Maschinen- und Anlagentechnik)
  
  
        Beiträge: 65 Registriert: 17.01.2003 
                         | 
                        
                         
                                                 
                        erstellt am: 17. Aug. 2009 11:32       <-- editieren / zitieren -->           Unities abgeben:           
                        
  Hi Daniel, haut leider nicht hin, er sagt immer, dass das Textfeld vorhanden ist (obwoh lich ein Leeres Drawing aufgemacht hab). Hast du da noch eine Idee, an was es liegen kann? Hab das hier noch angepasst. Code:     Private Function CheckTheState(ByVal oTexts As DrawingTexts, ByVal oTextBox As DrawingText, ByVal NameToCheck As String) As Boolean         For Each oText In oTexts             If oText.Name = NameToCheck Then                 CheckTheState = True                 Exit Function             Else                 CheckTheState = False             End If         Next     End Function
  ------------------ MfG N4426 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  |  
                        
                        DanielFr. Ehrenmitglied V.I.P. h.c. Manager
       
  
        Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3 
                         | 
                        
                         
                                                 
                        erstellt am: 17. Aug. 2009 11:48       <-- editieren / zitieren -->           Unities abgeben:            Nur für n4426  
                        
  Hallo, ne sollte eigentlich laufen. Wie gesagt es kann an den Deklarationen liegen da ggf. Variablen leer bleiben. Werd so gegen 4 wieder CATIA haben dann schau ich´s mir nochmal an wenns bis dahin nicht gelöst ist ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin     Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  |  
                        
                        DanielFr. Ehrenmitglied V.I.P. h.c. Manager
       
  
        Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3 
                         | 
                        
                         
                                                 
                        erstellt am: 17. Aug. 2009 16:46       <-- editieren / zitieren -->           Unities abgeben:            Nur für n4426  
                        
  Hallo, also ich habe mir das gerade nochmal angeschaut. Der Quelltext war schon richtig aber ich wusste nicht das du dein Script ausführst obwohl eventuell gar kein Textfeld im Hintergrund ist. Hierzu musst du dann bevor du die Funktion aufrufst noch eine Abfrage machen ob die Texts-Collection der Hintergrundansicht leer ist, ansonsten wirft dir die Funktion immer false zurück...muss sie ja auch den es gibt ja kein Textfeld zum Prüfen und standardmäßig steht ein Bool-Parameter immer auf false     Hier der angepasste Code (jetzt mit R18 und R19 getestet):
  Code:
      Sub CATMain()        Dim oDoc As DrawingDocument         Dim Sheets As DrawingSheets         Dim oSheet As DrawingSheet         Dim oViews As DrawingViews         Dim oView As DrawingView         Dim oTexts As DrawingTexts         Dim oText As DrawingText         Dim NameToCheck As String         On Error Resume Next         Set oDoc = CATIA.ActiveDocument         If Err.Number <> 0 Then             On Error GoTo 0             Box = MsgBox("Das geöffnete Dokument ist KEINE Zeichnung!" + Chr(10) + "Das Makro wird beendet", vbCritical, "Falscher Dateityp")             Exit Sub         End If         Set oSheets = oDoc.Sheets         Set oSheet = oSheets.ActiveSheet         Set oViews = oSheet.Views         Set oView = oViews.Item(2) 'Background View         Set oTexts = oView.Texts         NameToCheck = "xyz"         If oTexts.Count > 0 Then             If CheckTheState(oTexts, oText, NameToCheck) = True Then                 MsgBox ("Das Textfeld " & NameToCheck & " existiert")             Else                 MsgBox ("Das Textfeld " & NameToCheck & " existiert nicht")             End If         Else             MsgBox ("Es wurde gar kein Textfeld im Blatthintergrund gefunden")         End If                  End Sub     Private Function CheckTheState(ByVal oTexts As DrawingTexts, ByVal oTextBox As DrawingText, ByVal NameToCheck As String) As Boolean         For Each oText In oTexts             If oText.Name = NameToCheck Then                 CheckTheState = True                 Exit Function             Else                 CheckTheState = False             End If         Next     End Function 
  
 ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin     Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  |  
                        
                        n4426 Mitglied CAx-Administration, Technischer Zeichner (Maschinen- und Anlagentechnik)
  
  
        Beiträge: 65 Registriert: 17.01.2003 
                         | 
                        
                         
                                                 
                        erstellt am: 17. Aug. 2009 17:08       <-- editieren / zitieren -->           Unities abgeben:           
                         |  
                       
 
                        n4426 Mitglied CAx-Administration, Technischer Zeichner (Maschinen- und Anlagentechnik)
  
  
        Beiträge: 65 Registriert: 17.01.2003 Windows 7 Prof. 64-Bit CATIA V5-6 R2014 SP04 
                         | 
                        
                         
                                                 
                        erstellt am: 18. Aug. 2009 09:09       <-- editieren / zitieren -->           Unities abgeben:           
                         |  
                        
 | Anzeige.:
  Anzeige: (Infos zum Werbeplatz >>)
    |