Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  CATIA V5 Programmierung
  Prüfen, ob Textfeld in Drawing vorhanden ist

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48
  
KISTERS 3DViewStation mit neuer Zerschneidefunktionen und erweitertem PMI-Support, eine Pressemitteilung
Autor Thema:  Prüfen, ob Textfeld in Drawing vorhanden ist (1513 mal gelesen)
n4426
Mitglied
CAx-Administration, Technischer Zeichner (Maschinen- und Anlagentechnik)


Sehen Sie sich das Profil von n4426 an!   Senden Sie eine Private Message an n4426  Schreiben Sie einen Gästebucheintrag für n4426

Beiträge: 65
Registriert: 17.01.2003

erstellt am: 17. Aug. 2009 10:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von DanielFr. an!   Senden Sie eine Private Message an DanielFr.  Schreiben Sie einen Gästebucheintrag für DanielFr.

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für n4426 10 Unities + Antwort hilfreich

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)


Sehen Sie sich das Profil von n4426 an!   Senden Sie eine Private Message an n4426  Schreiben Sie einen Gästebucheintrag für n4426

Beiträge: 65
Registriert: 17.01.2003

erstellt am: 17. Aug. 2009 11:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von DanielFr. an!   Senden Sie eine Private Message an DanielFr.  Schreiben Sie einen Gästebucheintrag für DanielFr.

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für n4426 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von DanielFr. an!   Senden Sie eine Private Message an DanielFr.  Schreiben Sie einen Gästebucheintrag für DanielFr.

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für n4426 10 Unities + Antwort hilfreich

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)


Sehen Sie sich das Profil von n4426 an!   Senden Sie eine Private Message an n4426  Schreiben Sie einen Gästebucheintrag für n4426

Beiträge: 65
Registriert: 17.01.2003

erstellt am: 17. Aug. 2009 17:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Super, werd ich morgen früh gleich testen.

Danke.

------------------
MfG

N4426

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

n4426
Mitglied
CAx-Administration, Technischer Zeichner (Maschinen- und Anlagentechnik)


Sehen Sie sich das Profil von n4426 an!   Senden Sie eine Private Message an n4426  Schreiben Sie einen Gästebucheintrag für n4426

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi Daniel,

hat super funktioniert. Danke für deine Hilfe.

------------------
MfG

N4426

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz