| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Texte in Tabellen (777 mal gelesen)
|
Ejesb Mitglied
Beiträge: 65 Registriert: 28.01.2008 Autocad 2020 Specifi Abracad<P>Win10 64bit
|
erstellt am: 02. Dez. 2009 14:30 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe eine recht große Tabelle von einem Büro bekommen und habe diese in meine Zeichnung eingefügt. Ich möchte nun die Texte in den Zellen ändern (Farbe und Textstil). Muß ich wirklich jede Zelle einzeln bearbeiten, oder geht dies auch global für eine ganze Tabelle? Hilfe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Mitglied Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 02. Dez. 2009 18:22 <-- editieren / zitieren --> Unities abgeben: Nur für Ejesb
Hallo, über Tabelle anwählen und RMT 'Alle Eigenschaftenüberschreibungen entfernen' setzt du zumindest auf den Urstil zurück. Oder gleich einen neuen Stil anlegen. Du kannst ja auch mal mit untigem probieren, ist zwar nicht sehr performant, da wirklich jede 'Zelle' einzeln angefasst wird. Das Nonplusultra wirds nicht sein, aber besser als zu Fuß. [trekkedi: code s. eins weiter u.] HTH Nancy - und vielleicht kommen ja noch bessere Lösungen [Diese Nachricht wurde von startrek am 02. Dez. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Mitglied Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 02. Dez. 2009 20:15 <-- editieren / zitieren --> Unities abgeben: Nur für Ejesb
Sorry - totalen Käse verfasst ... mit formatierten Tabellentexten nützt das natürlich niente, nada Ist dann in etwa dasselbe, wie bei Mtexten, über gettext() bekomm' ich dann in etwa sowas:
Code:
{\fArial Black|b0|i0|c0|p34;ddddddddd} {\fArial|b1|i0|c0|p34;\Lbbbbbbbbb}
Bei MTexten hilft ja, einfach mal in einen Texteditor kopieren und zurück, bei Tabellen grade keinen Plan.Ich habs mal versucht, aber mit Vorsicht zu geniessen und nur für einzeilige Texte, die je Text einheitlich formatiert sind, wie s.o. Hab' nicht alle Fonts durchprobiert, weiss nicht ob man alle so erschlagen kann, egal wirklich nur als Versuch, just for fun: Code: Sub testen() tablechange "Romans", 100, 100, 100 End SubFunction tablechange(txtstyle As String, Rot&, Gelb&, Blau&) Dim objO As Object, pp As Variant Dim s$, r&, c& Dim color As AcadAcCmColor Set color = AcadApplication.GetInterfaceObject("AutoCAD.AcCmColor.16") Dim re As Object Set re = CreateObject("vbscript.regexp") re.Global = 1 re.pattern = "^\{\\f\w+\s?\w+.*;\\?L?(.*)\}$" ThisDrawing.Utility.GetEntity objO, pp, "Tabelle wählen:" If TypeOf objO Is IAcadTable Then Call color.SetRGB(Rot, Gelb, Blau) With objO For r = 1 To .Rows For c = 1 To .Columns s = .GetText(r - 1, c - 1) .SetText r - 1, c - 1, re.Replace(s, "$1") .SetCellTextStyle r - 1, c - 1, txtstyle .SetCellContentColor r - 1, c - 1, color Next Next End With End If End Function
Erstlingscode lösch ich raus, ist auch hier noch mit drinnen. CU Nancy
[Diese Nachricht wurde von startrek am 02. Dez. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ejesb Mitglied
Beiträge: 65 Registriert: 28.01.2008 Autocad 2020 Specifi Abracad<P>Win10 64bit
|
erstellt am: 03. Dez. 2009 08:12 <-- editieren / zitieren --> Unities abgeben:
|
startrek Mitglied Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 03. Dez. 2009 16:15 <-- editieren / zitieren --> Unities abgeben: Nur für Ejesb
Hallo nochmal, drücke mal bitte Alt+F11 im Acad > es erscheint der VBE. Dort oben im Menue Einfügen > Modul In das leere Modul1-Fenster kopierst du den Code (leicht geändert zu gestern): Code:
Option ExplicitSub testen() tablechange "Romans", 100, 100, 100 End Sub Function tablechange(txtstyle As String, Rot&, Gelb&, Blau&) Dim objO As Object, pp As Variant Dim s$, r&, c& Dim color As AcadAcCmColor Set color = AcadApplication.GetInterfaceObject("AutoCAD.AcCmColor.16") Dim re As Object Set re = CreateObject("vbscript.regexp") re.Global = 1 're.pattern = "^\{\\f\w+\s?\w+.*;\\?L?(.*)\}$" re.pattern = "\{\\f?.*[pc]\d{1,2};\\?C?\d?;?\\?L?(.*)\}" ThisDrawing.Utility.GetEntity objO, pp, "Tabelle wählen:" If TypeOf objO Is IAcadTable Then Call color.SetRGB(Rot, Gelb, Blau) With objO .Visible = 0 For r = 1 To .Rows For c = 1 To .Columns s = .GetText(r - 1, c - 1) 'Debug.Print s .SetText r - 1, c - 1, re.Replace(s, "$1") .SetCellTextStyle r - 1, c - 1, txtstyle .SetCellContentColor r - 1, c - 1, color 'Debug.Print re.Replace(s, "$1") Next Next .Visible = 1 'thx to Alfred;-) End With End If End Function
Dann kannste den VBE schliessen. Jetzt bitte mal eine Testtabelle bzw. Duplikat deiner Tabellen machen, bitte NEVEREVER im Original! Warum? Dafür bin ich mich viel zu unsicher, was denne bei dir da wirklich so pro Zelle drinnensteht, soll heissen > der Code kann auch Mist fabrizieren ... deswegen halt nicht im Original testen. Ansonstem keine Angst vorm Ausführen, dein Rechner wird nicht mit nem lauten Knall rauchend Servus sagen Jetzt drückst du Alt+F8 im Acad und führst das Makro 'testen' in Modul1 aus (sollte eh' das Einzige sein). Tja und dann ... entweder HTH oder Satz mit x ... lg Nancy [Diese Nachricht wurde von startrek am 04. Dez. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ejesb Mitglied
Beiträge: 65 Registriert: 28.01.2008 Autocad 2020 Specifi Abracad<P>Win10 64bit
|
erstellt am: 10. Dez. 2009 15:41 <-- editieren / zitieren --> Unities abgeben:
Hallo Nancy, ich habe nun alles nach deiner Anleitung ausgeführt, aber irgendwie... Beim Ausführen des Markros folgt: "Fehler beim Kompilieren: Außerhalb einer Prozedur ungültig". Ich hatte dann die Tabelle gesprengt. Nun habe ich die nächste Tabelle zu bearbeiten. Hast Du noch eine Idee? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|