Autor
|
Thema: Prüfen, ob Textfeld in Drawing vorhanden ist (1475 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. Moderator 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. Moderator 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. Moderator 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 >>)
|