| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. | | |  | KISTERS 3DViewStation: Multitalent für Branchen und Nischenmärkte, eine Pressemitteilung
|
Autor
|
Thema: Linienfarbe von Tabelle ändern (143 / mal gelesen)
|
PatrickV5 Mitglied
 Beiträge: 6 Registriert: 16.08.2016 Windows 11 Enterprise; Intel Core i7-10850H 2,70GHz; 32GB RAM; NVIDIA Quadro T2000; CATIA V5R2022 SP3
|
erstellt am: 22. Aug. 2025 07:47 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen, ich würde gerne auf einer Drawing per VBA die Linienfarbe einer Tabelle ändern. Da ich nichts gefunden habe wie ich direkt die Eigenschaften der Linien ändern kann gehe ich folgenden Weg: - komplette Tabelle plus Inhalt umfärben - Inhalt von jeder Zelle wieder auf Ursprungs-Farbe ändern Funktioniert grundsätzlich auch ABER wenn ein Text einen Rahmen hat wird dieser danach nicht mehr dargestellt! Im Texteditor der Zelle sehe ich aber, dass der Rahmen noch vorhanden ist. Im Beispiel-Code sind zwei Varianten enthalten. Beide führen zum gleichen Ergebnis. Hat jemand eine Idee wie ich das Problem lösen kann? Vielen Dank im Voraus Hier der Code:
Code: Sub CATMain()Dim CATIA As Object Dim myTable Dim mySel Dim myCel Dim i Dim j Set CATIA = GetObject(, "CATIA.Application") Set myTable = CATIA.ActiveDocument.Sheets.Item(1).Views.Item(1).Tables.Item(1) Set mySel = CATIA.ActiveDocument.Selection 'Farbe von Tabelle und Inhalt weiß ändern mySel.Clear mySel.Add myTable mySel.VisProperties.SetRealColor 255, 255, 255, 0 mySel.Clear 'Text wieder zurück auf schwarz ändern For i = 1 To myTable.NumberOfRows For j = 1 To myTable.NumberOfColumns Set myCel = myTable.GetCellObject(i, j) 'Variante 1 myCel.TextProperties.color = 0 myCel.TextProperties.update 'Variante 2 'myCel.SetParameterOnSubString catColor, 1, Len(myCel.Text), 0 Next Next End Sub
Start:
 Ergebnis_soll:
 Ergebnis_ist:
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12104 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 22. Aug. 2025 10:47 <-- editieren / zitieren --> Unities abgeben:          Nur für PatrickV5
Servus Patrick Keine Lösung aber ein Hinweis zu Tabellen: AFAIK hatte mal das Problem dass weiße Rahmen einer Tabelle im PDF (je nach dem wie diese erzeugt werden) schwarz erschienen. Teste dies mal vorab, nicht dass du viel Aufwand in ein Makro steckst und später feststellst dass du auf die gleichen Probleme stößt. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PatrickV5 Mitglied
 Beiträge: 6 Registriert: 16.08.2016 Windows 11 Enterprise; Intel Core i7-10850H 2,70GHz; 32GB RAM; NVIDIA Quadro T2000; CATIA V5R2022 SP3
|
erstellt am: 22. Aug. 2025 11:22 <-- editieren / zitieren --> Unities abgeben:         
Hallo, danke für den Hinweis aber dieses Problem war mir schon bekannt. Workaround dafür ist statt weiß (RGB 255,255,255) die Farbe "fast-weiß" (RGB 254,255,255) zu verwenden... Hat immer recht gut funktioniert. Ich habe mittlerweile eine bessere Lösung gefunden die ich euch nicht vorenthalten will. Ich habe in der Doku "GetCellBorderType" und "SetCellBorderType" entdeckt. Damit kann man den Rahmentyp einer Zelle ändern. Rahmentyp 0 ist "kein Rahmen". Somit kann ich die Rahmenlinien ganz entfernen und muss sich nicht umfärben. Komisch finde ich nur, dass ich das manuell garnicht machen kann sondern nur per Makro. Liegt möglicherweise an meinen CATIA-Settings, Lizenz oder einfach an Dassault... Lösung:
Code: Sub CATMain()Dim CATIA As Object Dim myTable Dim i Dim j Set CATIA = GetObject(, "CATIA.Application") Set myTable = CATIA.ActiveDocument.Sheets.Item(1).Views.Item(1).Tables.Item(1) 'Rahmen jeder Zelle ausschalten For i = 1 To myTable.NumberOfRows For j = 1 To myTable.NumberOfColumns myTable.SetCellBorderType i, j, 0 Next Next End Sub
Schöne Grüße Patrick Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |