| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: verfügbare Schriftnamen (2271 mal gelesen)
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 12. Sep. 2006 09:49 <-- editieren / zitieren --> Unities abgeben:
Hallo, gibt es eine Möglichkeit, sich alle verfügbaren Schriftnamen (die im Dialogfenster "Textstil" im Pulldownmenü "Schriftname" angezeigt werden) auszulesen??? Hintergrund: Ich möchte, wenn ein bestimmter Textstil noch nicht vorhanden ist, diesen neu zu erstellen, aber mit einer bestimmten Schriftart. Dazu muß ich abfragen, ob dieser Schriftname vorhanden ist oder nicht. ------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 12. Sep. 2006 09:58 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 12. Sep. 2006 10:23 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas, danke erstmal, aber so ganz ist damit mein Problem noch nicht behoben: Mit Deiner Funktion werden in meinem Falle 353 Schriftname ausgelesen, im Dialogfenster "Textstil werden aber nur ca. 235 Schriftname angezeigt, und dort sind dann schon die shx'er mit enthalten. Dann vielleicht nochmal anders gefragt, nach welchen Kriterien werden die vorhandenen Schriftnamen in die AutoCAD-Liste aufgenommen??? Ich möchte eine Liste mit genau den Schriftnamen haben, die von AutoCAD im Dialogfenster "Textstil" auch angeboten werden, geht das??? ------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 12. Sep. 2006 10:29 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
na evtl kannst du aus der Windowsfontliste nur die ttf's verwenden und nicht die "fon"... also noch mal ein vl-remove-if not rüber.. ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
astlex Mitglied cad-admin
Beiträge: 40 Registriert: 11.07.2006 acad200x adt200x
|
erstellt am: 12. Sep. 2006 10:32 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
hallo jörn, schau dir mal meine funktion "TextStyleActiveAndProps" an. so erzeuge ich neue textstile mit einer bestimmten schrift. das programm stellt vorübergehend die supportpfade um (bzw. hängt "C:\\Windows\\Fonts\\" an die bestehenden pfade). wird nach programmablauf natürlich wieder zurückgestellt. ich hoffe das tool hilft dir lg alex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 12. Sep. 2006 10:40 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
Zitat: Original erstellt von astlex: hallo jörn,schau dir mal meine funktion "TextStyleActiveAndProps" an. so erzeuge ich neue textstile mit einer bestimmten schrift. das programm stellt vorübergehend die supportpfade um (bzw. hängt "C:\\Windows\\Fonts\\" an die bestehenden pfade). wird nach programmablauf natürlich wieder zurückgestellt. ich hoffe das tool hilft dir lg alex
so ähnlich war auch mein erster Ansatz, aber : Was, wenn Windows in einem anderen Verzeichnis installiert wurde?.. zumindest solltest du das mit (getenv "Windir") überprüfen ..außerdem sind Filezugriffe zur Erstellung einer Fontliste arschlangsam und der Schriftname ist nicht unbedingt der Dateiname! Deshalb ist IMHO der Weg über die Registry der sinnvollere, da ja auch das OS dort seine Infos her bezieht.
Und nochwas.. Warum soviele einzelne Dateien, man kann dch auch zusammengehörende Funktionen in eine lsp packen.. ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 12. Sep. 2006 11:23 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe mich jetzt erstmal an Cadmium's Variante gemacht, und bei einem oberflächlichen Vergleich scheinen genau die Schriftnamen herauszukommen, die sonst auch von AutoCAD angezeigt werden.
Code:
(defun MyTest () (vl-sort (vl-remove-if (function (lambda (A) (not (vl-string-search ".ttf" (cdr A))))) (mapcar '(lambda (X) (cons X (vl-registry-read "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts" X))) (vl-registry-descendents "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts" "")) ) (function (lambda (e1 e2) (< (car e1) (car e2))))))
Aber, nun noch mal zu den SHX-Schriften. Ich weiß das alle SHX-Dateien im ACAD/Fonts Verzeichnis sind, aber wie kann ich herausfinden, welche SHX-Dateien Schriften beinhalten??? z.B. bekomme ich durch AutoCAD den Schriftname ISO8.SHX angeboten, ich habe im Fontverzeichnis aber keine Datei ISO8.SHX gefunden. Da stehe ich zur Zeit ganz schön auf dem Schlauch. ------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 12. Sep. 2006 11:50 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
so vielleicht:? (defun GET-SHXFILES(/ DIRS SHX LISTE STD OLDFONT) (setq DIRS(vl-string-translate "\\" "/" (getenv "ACAD"))) (setq STD(vla-item(vla-get-textstyles(vla-get-activedocument(vlax-get-acad-object)))"STANDARD")) (setq OLDFONT(vla-get-fontfile STD)) (while (setq POS (vl-string-search ";" DIRS)) (foreach SHX (vl-directory-files (vl-string-right-trim "/" (substr DIRS 1 POS)) "*.shx") (if(and(not(vl-catch-all-error-p (vl-catch-all-apply 'vla-put-fontfile (list STD SHX) ) ) ) (not(member(strcase SHX) LISTE)) ) (setq LISTE(cons (strcase SHX) LISTE)) ) ) (setq DIRS(substr DIRS (+ POS 2))) ) (vla-put-fontfile STD OLDFONT) (vl-sort LISTE '< ) ) ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 12. Sep. 2006 11:55 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
@astlex Vielen Dank an dieser Stelle mal für deinen übersichtlichen und gut dokumentierten Code (Jörn und Cadmium lobe ich jetzt mal nicht extra, die werden hier im Forum schon häufig genug - natürlich zu Recht - mit Dank überschüttet). Mir gefällt auch das konsequente Einsetzen der ActiveX Funktionalität von Visual Lisp in deinen Code. Mach bitte weiter so. @Cadmium - man muss auch mal loben - nicht immer nur nörgeln. Kritik ist ja wichtig, gerade bei Programmierung ist Sie ja nicht persönlich gemeint, allerdings kann man seine Kritik aber auch etwas konstruktiver formulieren - so jetzt krieg ich bestimmt auch mein Fett weg. ------------------ Mit freundlichem Gruß Udo Hübner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
astlex Mitglied cad-admin
Beiträge: 40 Registriert: 11.07.2006 acad200x adt200x
|
erstellt am: 12. Sep. 2006 11:58 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
hola CADmium, ein klein wenig stört mich, dass sehr viel zu tode-kritisiert wird. primär ging es darum, zu zeigen, wie man einen textstil ändert bzw. neu erzeugt. es handelt sich hierbei um ein tool, das bei uns eingesetzt wird - und somit kann ich sicherstellen, dass nicht in einem anderen verzeichnis installiert wurde; bzw. fontname = dateiname. von langsam habe ich noch nichts bemerkt. einzelne dateien: ist bei mir aus zwecken der übersicht so, damit ich verschiedene standard-funktionen in anderen funktionen verwenden kann (will nicht immer verschiedenste projekte durchsuchen müssen, um einzelne tools zu finden) - modularer aufbau einzelne dateien werden zu einer *.vlx zusammengefasst. natürlich steht es jedem frei, die von mir ins netz gestellten werkzeuge, zu verändern - ich wollte nur ein beispiel aufzeigen - hab' nie gemeint, dass es die perfekte lösung ist. lg alex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
astlex Mitglied cad-admin
Beiträge: 40 Registriert: 11.07.2006 acad200x adt200x
|
erstellt am: 12. Sep. 2006 12:01 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 12. Sep. 2006 12:20 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
okok ... lob ich auch mal .. kannst aber trotzdem über meine Hinweise nachdenken, du bist nicht verpflichtet sie umzusetzen Wenn du später aus den ganzen files ne vlx machst ist es auch wieder ok. Meinereiner hat sich trotzdem das zusammenfassen in Funktionsbibos angewöhnt, für Single-Tools wird dann separiert. Sonst sind es einfach zu viele Files.. Warum wird jeder Hinweis als nörgeln oder persönlicher Angriff interpretiert? War was unsachlich? Da ich Jörn's Lispkenntnisse denke einschätzen zu können, bin ich auf Textstilerzeugung ect. nicht weiter eingegangen... Für die Allgemeinheit ist dein Code aber sicher ein gutes Bsp. Ach ja, noch ein Hinweis :
Um z.B. Zitat aus deinem Header :"Vorsicht: Nachdem zBsp. keine TrueType-Fonts gefunden werden, verändert das Programm die Supportpfade (temporär) "C:\\Windows\\Fonts\\" ... zu vermeiden , guck dir mal den Konstrukt Code:
(not(vl-catch-all-error-p (vl-catch-all-apply .... ) ) )
und die darin verwendeten Funktionen an. ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 12. Sep. 2006 13:24 <-- editieren / zitieren --> Unities abgeben:
@astlex auch von mir ein Dankeschön, ich habe den Code mal durchgeschaut, aber Cadmium's Code war für mich erstmal überschaubarer. @Cadmium Der zweite Ansatz mit den SHX-Dateien war schon mal toll, aber, es werden auch die SHX-Dateien ausgegeben, die Symbole beinhalten. Wenn ich dann z.B. mit dem Code von astlex einen Textstil erzeuge (CreateTextStyle "alexx" '(("fontFile" . "NORM_B.SHX") ("Height" . 0.0))) erscheint folgenden Meldung: "D:\Programme\AutoCAD 2006\SHX\bfr99_4.shx ist eine Symboldatei, keine Schriftdatei." Desweiteren habe ich mich bei den ttf-Schriften wohl auch zu früh gefreut, ich habe (vl-string-search ".ttf" (cdr A)) gegen (vl-string-search ".TTF" (strcase(cdr(A)))) ausgetauscht. Daraus folgt, das ich doch wieder viel mehr Schriften habe als AutoCAD offiziell anzeigt. Es ist also für mich weiterhin ungeklärt, nach welchen Kriterien AutoCAD die angebotenen Schriftnamen auflistet. Heute werde ich aber aus Zeitgründen mit dem Thema Schluß machen, aber ich hoffe, daß ich zum Ende der Woche noch was sinnvolles zusammengebastelt bekomme. ------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 18. Sep. 2006 07:51 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich wollte dieses Thema nochmal aufwärmen, ich selbst bin nicht weitergekommen. Hat irgendwer vielleicht noch eine Idee, wie ich eine gefundene SHX-Datei prüfen kann, ob es sich bei ihr um eine Symboldatei oder Schriftdatei handelt??? ------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 18. Sep. 2006 08:10 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
naja, du kannst noch testen, ob (vl-catch-all-error-p (vl-catch-all-apply 'vla-loadshapefile(list (vla-get-activedocument(vlax-get-acad-object)) (findfile SHX) ) ) ) einen Fehler auswirft.. wenn ja sollte es eine Schriftdatei sein, wenn nicht, eine Symboldatei... ich dachte ja im Umkehrschluß, das ACAD auch hierbei meckert: (not(vl-catch-all-error-p (vl-catch-all-apply 'vla-put-fontfile (list STD SHX) ) ) ) ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 18. Sep. 2006 09:52 <-- editieren / zitieren --> Unities abgeben:
@Cadmium, es klappt, aber bei der Funktion "vla-loadshapefile" wird leider die ganze Eingabeaufforderung mit den Meldungen, ob Schriftdatei oder Symboldatei zugepflastert, ob es da eine Möglichkeit gibt, das zu unterdrücken??? Der derzeitige Stand:
Code:
defun Fonts ( / ) (vl-sort (GET-SHXFILES (vl-remove-if (function (lambda (A) (not (vl-string-search ".TTF" (strcase(car A)))))) (mapcar '(lambda (X) (cons (vl-registry-read "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts" X)X)) (vl-registry-descendents "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts" "")) )) (function (lambda (e1 e2) (< (car e1)(car e2))))) )(defun GET-SHXFILES(LISTE / DIRS SHX POS) (setq DIRS(vl-string-translate "\\" "/" (getenv "ACAD"))) (while (setq POS (vl-string-search ";" DIRS)) (foreach SHX (vl-directory-files (vl-string-right-trim "/" (substr DIRS 1 POS)) "*.shx") (if(and(vl-catch-all-error-p (vl-catch-all-apply 'vla-loadshapefile(list (vla-get-activedocument(vlax-get-acad-object)) (findfile SHX)) ) ) (not(assoc(strcase SHX) LISTE)) ) (setq LISTE(cons(cons (strcase SHX)"shx") LISTE))) ) (setq DIRS(substr DIRS (+ POS 2))) ) LISTE )
------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |