Hallo Zusammen,
ich bin neu hier im Forum und blutiger Anfänger in Sachen Makro-Programmierung.
Die Suchfunktion habe ich ausgiebig genutzt doch keine Lösung für mein Problem gefunden. Ich hoffe ich habe nichts dergleichen übersehen.
Zu meinem Problem:
Ich muss bei einer Drawing einen bestimmten String innerhalb eines bereits vorhandenen Textes auslesen bzw. überprüfen ob dieser vorhanden ist und je nach Ergebnis diesen einfärben bzw. hinzufügen. (siehe „Bild_Vorher“ und „Bild_Nachher“ im Anhang)
Da ich nicht an den Text herankomme scheitert es aktuell sowohl an der Überprüfung (If-Abfrage) und am Einfärben. Das Hinzufügen klappt und sollte keine Schwierigkeiten bereiten.
Ich habe hierfür mal einen Beispielcode gebastelt und die Stellen an denen ich nicht weiterkomme fett markiert:
Code:
Public CheckBox(4) As CheckBox
Public Test(4) As String
Sub CATMain()
Dim Doc As Document
Dim Sheets As DrawingSheets
Dim HauptSheet As DrawingSheet
Dim Views As DrawingViews
Dim Background As DrawingView
Dim Tabelle As DrawingText
Dim TextGesamt As String
Set Doc = CATIA.ActiveDocument
Set Sheets = Doc.Sheets
Set HauptSheet = Sheets.Item(1)
Set Views = HauptSheet.Views
Set Background = Views.Item(2)
Set Tabelle = Background.Texts.GetItem(„Test_Tabelle“)
TextGesamt = Tabelle.Text
Set CheckBox(1) = UserForm1.CheckBox1
Set CheckBox(2) = UserForm1.CheckBox2
Set CheckBox(3) = UserForm1.CheckBox3
Set CheckBox(4) = UserForm1.CheckBox4
Set Test(1) = „Test1“
Set Test(2) = „Test2“
Set Test(3) = „Test3“
Set Test(4) = „Test4“
FarbeRot = -16776961
For Z = 1 to 4
If CheckBox(Z).Value = True Then `Haken gesetzt
`Überprüfen ob String Test(Z) in TextGesamt vorhanden
If … `Wenn der Text nicht vorhanden ist, soll er hinzugefügt werden
TextGesamt = TextGesamt & Chr(10) & Test(Z)
End If
Else
`Überprüfen ob String Test(Z) in TextGesamt vorhanden
If … `Wenn der Text vorhanden ist, soll er rot eingefärbt werden
Text(Z).Color = FarbeRot
End If
End If
Next
Doc.Update
End Sub
Folgende Funktionen sind mir noch bekannt:
Mit Hilfe von
TextGesamt = Replace(TextGesamt, Text(Z), „“)
kann ich den String zwar ansprechen und löschen allerdings nicht einfärben
Und mit
Tabelle.TextProperties.Color = FarbeRot
kann ich den kompletten Text rot färben, aber die Farbe nicht einer einzelnen Zeichenkette zuweisen.
Ich hatte gehofft über selection.search den String zu finden und daraufhin über sel.VisProperties.SetRealColor die jeweiligen Texte zu überarbeiten.
Doch ich komme nicht an die Texte heran. Noch nicht mal in der normalen Catia-Umgebung über Edit->Search kann ich die entsprechende Zeichenkette finden.
Ich hoffe ich habe es geschafft mein Problem verständlich zu machen und bin für jeden Tipp dankbar.
Mfg Andale
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP