Vytisknout stránku | Zavřít okno

Výměna stylu písma

Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: CAD programování
Popis fóra: Otázky programování - nadstavby a utility pro CAD a GIS aplikace Autodesk (VBA, AutoLISP, ARX/C++, .Net, JavaScript, Python, MEL...)
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=6647
Datum vytištění: 27.čer.2026 v 20:51


Téma: Výměna stylu písma
Odeslal: j.ku
Předmět: Výměna stylu písma
Datum odeslání: 18.čer.2008 v 16:07

Existuje nějaký inteligentní způsob, jak je možné pomocí příkazu, nebo lispovského prográmku změnit styl písma v daném souboru?

 

Hladiny lze převést pomocí příkazu "_laytrans"

 

Označený kótovací styl "k1_10" lze převést na požadovaný styl  "ČEZ-EDU T 2.5-10" s využitím lispu  např.: 

 

(progn
     (prompt "Existuje kótovací styl (k1_10). " )
     (setq vkost (ssget "X" '((3 . "k1_10"))))
     (command "-dimstyle" "Obnov" "ČEZ-EDU T 2.5-10" "")
     (command "-dimstyle" "Použij" "Předchozí" "")
     )

 

Styl písma naposledy  vybrané entity lze změnit např. pomocí:

 

(defun C:Moss ( )

  (setq ed (entget (entlast)))                           ;  (1 . "123") (7 . "ISOCP-BPVL") (210 0.0 0.0 1.0)

  (setq oldtext (assoc 7 ed))                                          ;  (1 . "123")

  (setq newtext (cons 7 "ISOCP-BPVL"))       ;  (1 . "Nový text")

  (setq ed (subst newtext oldtext ed))              ; (Náhrada atomů)

  (entmod ed)                                             ; (Výměna stylů )

  )

 

Hromadná výměna stylů písma ovšem nefunguje.

(defun C:NP-S1 ( )

;  Výměna kótovacích stylů

  (progn    

  (setq vss (ssget "X" '((7 . "STANDARD"))))                 ;  Vybrány entity se stylem písma "STANDARD"

  (prompt "Existuje kótovací styl (STANDARD). " )      

  (setq oldtext (cons 7 "STANDARD"))                         ;  (7 . "STANDARD")

  (setq newtext (cons 7 "ISOCP-BPVL"))                       ;  (7 . "ISOCP-BPVL")

  (setq vss (subst newtext oldtext vss))                           ; (Náhrada atomů)

  (entmod vss)

     )

  )

 

Máte prosím někdo nějaký nápad? Díky.

 



-------------
JKU



Odpovědi:
Odeslal: chlebovsky
Datum odeslání: 19.čer.2008 v 08:22
Ale jo, funguje taky, jen je třeba tu změnu hodit do cyklu.
(setq vss (ssget "X" '((7 . "STANDARD")))) 
tímto vytvoříte pouze seznam entit. z toho pak musíte brát položku po položce a měnit.
 
Mělo by to vypadat nějak takto :
(defun C:NP-S1 (/)
  ;  Hromadná výměna textových stylů
  ;  Nefunguje např. na texty vnořené v blokách
  (setq vss (ssget "X" '((7 . "STANDARD"))))                 ;  Vybrány entity se stylem písma "STANDARD"
  (setq vsl (sslength vss))                                  ;  Zjistí počet entit ve výběrové množině
  (setq i 0)                                                 ;  Počítadlo
  (repeat vsl                                                ;  Začátek cyklu
    (setq ent (entget (ssname vss i)))                         ; Zjistí informace o i-té entitě
    (setq oldtext (assoc 7 ent))                               ;  (7 . "STANDARD")
    (setq newtext (cons 7 "ISOCP-BPVL"))                       ;  (7 . "ISOCP-BPVL")
    (setq ent (subst newtext oldtext ent))                     ;  Náhrada atomů
    (entmod ent)                                               ;  Oorava entity
    (setq i (1+ i))                                            ;  Navýšení počítadla
  )                                                          ;  Konec cyklu
)
 
při náčítání toho oldtext je lepší to přímo vytáhnout z ent než natvrdo přiřadit, je tady menší ryziko selhání velkých a malých písmen protože ten ssget nebere ohled na malá a velká písmena, furt je to jeden  zázev.
A pak v tom (cons 7 "STANDARD") je problém protože toto už zohledňuje velká a malá, proto je lepší to přímo tahat z toho seznamu pomoci (assoc 7 ent)


-------------
Ing. Martin Chlebovský

www.kde-je-auto.cz

GPS monitoring provozu vozidel a osob.

WebDeveloper.

Programátor aplikací pro Autocad a MS Office.

Tvorba WWW aplikací.

Modelování domů a staveb.&l


Odeslal: j.ku
Datum odeslání: 19.čer.2008 v 11:30
  Díky za doplnění cyklu.
  Tušil jsem, že tam asi bude chyba.
  I na fóru se mluvilo o tom, že jediná česky psaná učebnice je z minulého století. Vzhledem ke skutečnosti, že je zde jako autor uveden pan Jiří Hlavenka , který prodáním nakladatelství "Computer press" (podle zdrojů z  internetu) bude asi za vodou.
  .... asi ho už nebude trápit problematika Autolispu .... a případné zdroje informací a tipy bude potřebné hledat někde jinde ....


-------------
JKU



Vytisknout stránku | Zavřít okno