Hot News:
   

Mit Unterstützung durch:

  Foren auf CAD.de
  
  Schriftart in Textstil ändern

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

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
[an error occurred while processing this directive]
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Schriftart in Textstil ändern (91 / mal gelesen)
xem
Mitglied
Zeichner


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

Beiträge: 859
Registriert: 07.08.2008

Software:
AutoCAD 2022 - 64bit
Windows 10 Pro - 64bit
PDFCreator 1.0.2 - 32bit
Ghostscript 9.0 - 64bit
PDF-XChange Viewer - 64bit
GIMP 2.6.8 - 64bit
MS Office 2013 - 32bit
Opera 12 - 32bit
MacroX - 32bit
7-zip - 64bit
-----------------------
Hardware:
Intel i5 680 3,6GHz @ 4GHz
8GB RAM 1333MHz
nVidia GTX 460 1024MB
Intel SSD 2.5 80GB X25-M
Samsung SyncMaster 245B+
Iiyama ProLite E1900s
Logitech mx518
Logitech G11
Roccat Sense Glacier Blue

erstellt am: 05. Sep. 2025 08:25    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,

ich versuche mit dem Code die Schriftart im Textstil zu ändern, nur schreibt AutoCAD mit stumpf den Text nur rein und ändert nicht auf die Schriftart.
Es sollen alle Textstile mit ISOCP auf ISOCPEUR geändert werden und der Breitenfaktor auf 0,9 gesetzt werden. Den Breitenfaktor muss ich aber noch rein basteln.

Warum übernimmt AutoCAD nicht die Schriftart wenn die Eingabe doch richtig drin steht?

Code:
(defun c:ISOCPEUR_CHANGE (/ stilobjekt stildaten)
  (princ "\nSuche nach Textstilen, die 'isocp.shx' verwenden, und ändere sie auf 'ISOCPEUR.TTF'...")
 
  ;; Startet die Iteration durch die Textstiltabelle
  (setq stilobjekt (tblnext "STYLE" T))
 
  (while stilobjekt
    ;; Holt die vollständigen DXF-Daten des aktuellen Stils
    (setq stildaten (entget (tblobjname "STYLE" (cdr (assoc 2 stilobjekt)))))
   
    ;; Überprüft, ob der Dateiname der Schriftart "isocp.shx" ist
    (if (= (strcase (cdr (assoc 3 stildaten))) "ISOCP.SHX")
      (progn
        ;; Ersetzt den alten Schriftart-Eintrag durch den neuen ("ISOCPEUR.TTF")
        (setq stildaten (subst (cons 3 "ISOCPEUR.TTF") (assoc 3 stildaten) stildaten))
       
        ;; Aktualisiert den Stil in der AutoCAD-Datenbank
        (entmod stildaten)
       
        (princ (strcat "\nStil '" (cdr (assoc 2 stilobjekt)) "' wurde erfolgreich geändert."))
      )
    )
   
    ;; Geht zum nächsten Stil über
    (setq stilobjekt (tblnext "STYLE"))
  )
 
  (princ "\nAlle Textstile wurden überprüft. Vorgang abgeschlossen.")
  (princ)
)

------------------
Error in Layer 8

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

cadffm
Moderator
良い精神




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

Beiträge: 22659
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 05. Sep. 2025 09:17    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 xem 10 Unities + Antwort hilfreich

AutoCAD übernimmt,
alles läuft wie gewünscht.

Ich nehme an du hast dir noch nicht die Augen gerieben, aber schon Zeit für einen ausgiebigen Forum-Post nehmen können.
Objekte welchen den Font über den Stil beziehen werden die Änderung mit der nächsten Regeneration anzeigen.
Datei speichern,schließen,öffnen; Layoutwechsel&zuück, oder einfach REGEN bzw. REGENALL


Wenn das nicht so ist, es also kein Text oder Attribut ist, dann bezieht dein Objekt den Font wohl nicht über den Stil.

 

BTW: Es gibt ein Lisp-Forum für derartige Programmiersprachen 

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

xem
Mitglied
Zeichner


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

Beiträge: 859
Registriert: 07.08.2008

Software:
AutoCAD 2022 - 64bit
Windows 10 Pro - 64bit
PDFCreator 1.0.2 - 32bit
Ghostscript 9.0 - 64bit
PDF-XChange Viewer - 64bit
GIMP 2.6.8 - 64bit
MS Office 2013 - 32bit
Opera 12 - 32bit
MacroX - 32bit
7-zip - 64bit
-----------------------
Hardware:
Intel i5 680 3,6GHz @ 4GHz
8GB RAM 1333MHz
nVidia GTX 460 1024MB
Intel SSD 2.5 80GB X25-M
Samsung SyncMaster 245B+
Iiyama ProLite E1900s
Logitech mx518
Logitech G11
Roccat Sense Glacier Blue

erstellt am: 05. Sep. 2025 11:11    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


ISOCPEUR.jpg

 
  ja das war noch vor dem ersten Kaffee.

REGENALL hat geholfen, nur ist das nicht die gleiche Schriftart, welche man mit Hand auswählen kann.
Da ist auch ein gelbes Dreieck mit dran und der Text ist kursiver als er sein sollte. 

------------------
Error in Layer 8

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

cadffm
Moderator
良い精神




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

Beiträge: 22659
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 05. Sep. 2025 11:44    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 xem 10 Unities + Antwort hilfreich

Bin gerade nicht am CAD, aber schaue bitte mal selbst nach ob am STYLE xdaten hängen
(Entget(Tblobjname"Style" "MeinStil") "*")

Ich denke ja, da sollte dann der Fontname ohne ".ttf" rein.

Sorry, aus dem effeff bin ich da nicht so fit und mit Smartphone macht die Recherche keinen Spaß.

Bis später dann 

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

xem
Mitglied
Zeichner


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

Beiträge: 859
Registriert: 07.08.2008

Software:
AutoCAD 2022 - 64bit
Windows 10 Pro - 64bit
PDFCreator 1.0.2 - 32bit
Ghostscript 9.0 - 64bit
PDF-XChange Viewer - 64bit
GIMP 2.6.8 - 64bit
MS Office 2013 - 32bit
Opera 12 - 32bit
MacroX - 32bit
7-zip - 64bit
-----------------------
Hardware:
Intel i5 680 3,6GHz @ 4GHz
8GB RAM 1333MHz
nVidia GTX 460 1024MB
Intel SSD 2.5 80GB X25-M
Samsung SyncMaster 245B+
Iiyama ProLite E1900s
Logitech mx518
Logitech G11
Roccat Sense Glacier Blue

erstellt am: 05. Sep. 2025 12:07    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

Schriftart ISOCP eingestellt:
Code:
(entget (tblobjname "STYLE" "ISOCP") '("*"))
((-1 . <Objektname: 1d1cbb32b50>) (0 . "STYLE") (330 . <Objektname: 1d1cf6a3830>) (5 . "2022E65") (100 . "AcDbSymbolTableRecord") (100 . "AcDbTextStyleTableRecord") (2 . "ISOCP") (70 . 0) (40 . 0.0) (41 . 0.75) (50 . 0.261799) (71 . 0) (42 . 100.0) (3 . "isocp.shx") (4 . ""))

Schriftart ISOCPEUR eingestellt:

Code:
(entget (tblobjname "STYLE" "ISOCP") '("*"))
((-1 . <Objektname: 1d1cbb32b50>) (0 . "STYLE") (330 . <Objektname: 1d1cf6a3830>) (5 . "2022E65") (100 . "AcDbSymbolTableRecord") (100 . "AcDbTextStyleTableRecord") (2 . "ISOCP") (70 . 0) (40 . 0.0) (41 . 0.75) (50 . 0.261799) (71 . 0) (42 . 100.0) (3 . "isocpeur.ttf") (4 . "") (-3 ("ACAD" (1000 . "ISOCPEUR") (1071 . 34))))

ISOCPEUR hat da ein paar mehr Daten die bestimmt fehlen beim Wechsel.

------------------
Error in Layer 8

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

cadffm
Moderator
良い精神




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

Beiträge: 22659
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 05. Sep. 2025 13:17    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 xem 10 Unities + Antwort hilfreich

SHX = keine XDs
TTF = XDs

Du sollst dir einen Stil ansehen bei dem ein TTF Font zugewiesen ist!
Bei .SHX gibt es die erweiterten Daten nicht und daher nehme ich an, genau diese fehlen bei dir und lösen das Problem aus.


Befehl: (entget(tblobjname "style" "Stil4") '("ACAD"))

(-1 . <Objektname: 7ff634f1e5d0> )
(0 . "STYLE")
(330 . <Objektname: 7ff634f0b830> )
(5 . "2B5")
(100 . "AcDbSymbolTableRecord")
(100 . "AcDbTextStyleTableRecord")
(2 . "Stil4")
(70 . 0)
(40 . 0.0)
(41 . 1.0)
(50 . 0.0)
(71 . 0)
(42 . 55.9679)
(3 . "isocpeur.ttf")
(4 . "")
(-3 >>>>
  (ACAD
    (1000 . "ISOCPEUR")
    (1071 . 34)
  )
)


vereinfachtes Beispiel, was im Falle von "vorher war .shx" auch so okay wäre:
(entmod(append (entget(tblobjname"STYLE""STIL2")'("*"))'((-3 ("ACAD" (1000 . "ISOCPEUR")(1071 . 34))))))

   

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

xem
Mitglied
Zeichner


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

Beiträge: 859
Registriert: 07.08.2008

Software:
AutoCAD 2022 - 64bit
Windows 10 Pro - 64bit
PDFCreator 1.0.2 - 32bit
Ghostscript 9.0 - 64bit
PDF-XChange Viewer - 64bit
GIMP 2.6.8 - 64bit
MS Office 2013 - 32bit
Opera 12 - 32bit
MacroX - 32bit
7-zip - 64bit
-----------------------
Hardware:
Intel i5 680 3,6GHz @ 4GHz
8GB RAM 1333MHz
nVidia GTX 460 1024MB
Intel SSD 2.5 80GB X25-M
Samsung SyncMaster 245B+
Iiyama ProLite E1900s
Logitech mx518
Logitech G11
Roccat Sense Glacier Blue

erstellt am: 05. Sep. 2025 13:49    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

"(-3 ("ACAD" (1000 . "ISOCPEUR") (1071 . 34))))" bekomme ich jetzt mit rein, was nix ändert.
Schriftart mit gleben Dreieck und kursiv dargestellt.

raugefunden habe ich noch:
(1071 . 34) = Schriftstil Normal
(1071 . 16777250) = Schriftstil Kursiv

Mit dem gelben Dreieck ist das Feld für den Schriftstil auch ausgegraut.
Das scheint noch was zu fehlen, nur finde ich da nix, wo man das angeben kann. 


Code:
(defun c:ISOCPEUR_CHANGE (/ stilobjekt stildaten)
  (princ "\nSuche nach Textstilen, die 'isocp.shx' verwenden, und ändere sie auf 'ISOCPEUR.TTF'...")
 
  ;; Registriert den Anwendungsnamen "ACAD", um XData verwenden zu können
  (regapp "ACAD")
 
  ;; Startet die Iteration durch die Textstiltabelle
  (setq stilobjekt (tblnext "STYLE" T))
 
  (while stilobjekt
    ;; Holt die vollständigen DXF-Daten des aktuellen Stils
    (setq stildaten (entget (tblobjname "STYLE" (cdr (assoc 2 stilobjekt)))))
   
    ;; Überprüft, ob der Dateiname der Schriftart "isocp.shx" ist
    (if (= (strcase (cdr (assoc 3 stildaten))) "ISOCP.SHX")
      (progn
        ;; Ersetzt den alten Schriftart-Eintrag durch den neuen ("ISOCPEUR.TTF")
        (setq stildaten (subst (cons 3 "isocpeur.ttf") (assoc 3 stildaten) stildaten))
       
        ;; Entfernt vorhandene XData, um Duplikate zu vermeiden.
        ;; Dies ist eine gute Praxis, falls der Stil bereits XData hat.
        (setq stildaten (vl-remove-if '(lambda (x) (= (car x) -3)) stildaten))
       
        ;; Fügt die neuen erweiterten Daten (XData) korrekt hinzu.
        ;; Beachten Sie die korrekte Formatierung als Liste.
        (setq stildaten (append stildaten '((-3 ("ACAD" (1000 . "ISOCPEUR") (1071 . 34))))))
       
        ;; Aktualisiert den Stil in der AutoCAD-Datenbank mit den neuen Daten
        (entmod stildaten)
       
        (princ (strcat "\nStil '" (cdr (assoc 2 stilobjekt)) "' wurde erfolgreich geändert."))
      )
    )
   
    ;; Geht zum nächsten Stil über
    (setq stilobjekt (tblnext "STYLE"))
  )
 
  (princ "\nAlle Textstile wurden überprüft. Vorgang abgeschlossen.")
  (princ)
)

------------------
Error in Layer 8

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

xem
Mitglied
Zeichner


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

Beiträge: 859
Registriert: 07.08.2008

Software:
AutoCAD 2022 - 64bit
Windows 10 Pro - 64bit
PDFCreator 1.0.2 - 32bit
Ghostscript 9.0 - 64bit
PDF-XChange Viewer - 64bit
GIMP 2.6.8 - 64bit
MS Office 2013 - 32bit
Opera 12 - 32bit
MacroX - 32bit
7-zip - 64bit
-----------------------
Hardware:
Intel i5 680 3,6GHz @ 4GHz
8GB RAM 1333MHz
nVidia GTX 460 1024MB
Intel SSD 2.5 80GB X25-M
Samsung SyncMaster 245B+
Iiyama ProLite E1900s
Logitech mx518
Logitech G11
Roccat Sense Glacier Blue

erstellt am: 05. Sep. 2025 14:41    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

Habe noch einen anderen Ansatz gefunden und angepasst.
So funktioniert es jetzt.

Danke für die Hilfe. 

Code:
(vl-load-com)

(defun setfont (font-name / selset)
  (if (findfile font-name)
    (progn
      (vlax-for style
        (vla-get-textstyles
          (vla-get-activedocument (vlax-get-acad-object))
        )
        (vl-catch-all-apply
          '(lambda ()
            (if (= (strcase (vla-get-fontfile style)) "ISOCP.SHX")
              (progn
                (vla-put-fontfile style (findfile font-name))
                (vla-put-width style 0.9)
              )
            )
          )
        )
      )
    )
  )
)

(defun C:cisocpf ()
  (setfont "c:\\windows\\fonts\\ISOCPEUR.ttf")
  (redraw)
  (vla-regen (vla-get-activedocument (vlax-get-acad-object)) acactiveviewport)
)


------------------
Error in Layer 8

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