Vytisknout stránku | Zavřít okno

chybne kodovanie textu

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=3991
Datum vytištění: 12.kvě.2026 v 22:47


Téma: chybne kodovanie textu
Odeslal: Robo
Předmět: chybne kodovanie textu
Datum odeslání: 14.úno.2007 v 10:02
Dobry den,
dostal som podklady z Microstationu vo formate dwg. Problem je ze obsahuje chybne kodovanie textu. napr. MINIM%%193LNE. nema niekto skusenosti ako tento problem odstranit?
Samozrejme okrem moznosti ze cez find budem nahradzat jednotlive znaky rucne.
Dakujem



Odpovědi:
Odeslal: PepaR
Datum odeslání: 14.úno.2007 v 10:21
Vytvořit si přehled kódu a jemu ekvivalentní znak. Poté aplikovat funkci Najít a nahradit. Dále existovala i nějaká utilitka na změnu kódování DWG výkresů, pravděpodobně bude někde v Downloadu.


-------------
PepaR
https://www.jremes.cz" rel="nofollow - jremes.cz | https://www.stavlab.cz" rel="nofollow - stavlab.cz


Odeslal: Kotlaba
Datum odeslání: 14.úno.2007 v 10:36
Kdysi jsem se tím setkal. Výkres jsem si převedl do DXF co nejnižší verze a napsal jsem si prográmek v BASICu co četl ten soubor znak po znaku, hledal tam znak procento a když jej našel, kouknul se co je dál a pak tu skupinu nahradil správným kódem.


Odeslal: Vladimír Michl
Datum odeslání: 14.úno.2007 v 10:42
Hromadné nahrazení znaků (včetně řídících znaků) řízené definiční převodní tabulkou dělá utilita Xanadu ReCoder - viz:
http://www.cadforum.cz/cadforum/qaID.asp?tip=1741 - http://www.cadforum.cz/cadforum/qaID.asp?tip=1741


-------------
Vladimír Michl (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz helpdesk.arkance-systems.cz)


Odeslal: Mantlík
Datum odeslání: 14.úno.2007 v 10:45
Přesně tak. Jedním kliknutím změníte např. všechny %%193 na Á v celém výkresu (pokud to tak vyberete). A těch písmenek zas není tolik ......
Vezmete-li, co všechno musíte s DWG z DGN udělat, aby to pak fungovalo korektně, tak ta čtvrthodinka se v tom už ztratí
 
A na ty utilitky  (WNEWCP - či jak se to jmenovalo) bych nesázel. Jednak mi to s Microstationem nikdy nezafungovalo a jednak musely být všechny znaky korektně dle jednotlivých codepage, jinak se rozhodily zase jiné znaky


-------------
J. Mantlík



Odeslal: alfred
Datum odeslání: 14.úno.2007 v 19:23
Mam na to vlastni lisp utilitku, ktera zamenuje ceske znaky. Zitra se muzu klidne v praci podivat.



ajaj, vidim, ze jsem odpoved poslal dvakrat.... Embarrassed


Odeslal: alfred
Datum odeslání: 14.úno.2007 v 19:24
Mam na to nekde vlastni lisp utilitku, ktera zamenuje ceske znaky. Zitra se muzu klidne v praci podivat. Jestli ji najdu, muzu Vam ji poslat.


Odeslal: PepaR
Datum odeslání: 14.úno.2007 v 19:56
To Alfred: Nemohl byste utilitu zde vyvěsit prosím? Taky by se mi hodila... Děkuji

-------------
PepaR
https://www.jremes.cz" rel="nofollow - jremes.cz | https://www.stavlab.cz" rel="nofollow - stavlab.cz


Odeslal: Kotlaba
Datum odeslání: 15.úno.2007 v 06:17
Když jsem ještě měl R11 co kódovala češtinu podle DOS a dostal se ke mně občas výkres z LT s kódováním Windows, opatřil jsem si fonty z LT. Editovat to sice moc nešlo ale číst a tisknout se to dalo.


Odeslal: alfred
Datum odeslání: 15.úno.2007 v 07:25
Bohuzel jsem nezjistil, jak se da prilozit soubor, ale protoze je ten lisp kratky, tak ho sem primo nakopiruji.

Funkce se spousit prikazem "ReplUniString". Rovnou projde cely vykres a to vcetne zmrazenych hladin!




;záměna písma napsaných pomocí kódů %%xxx za písmena.
;funguje na TEXT a MTEXT
;prochází databázi výkresu - tedy i zmražené hladiny
;verze 0.1dev ----- funguje :-)
;
;
;
;

(print "Spouští se příkazem: ReplUniString")
(defun c:ReplUniString ( / DestList SrcList i n sel_length ent_sel TextString )
  ;zde se dají dopsat zaměňované páry (cílový string . hledaný_string)
    (setq PatternList
        '(
              ("á" . "%%225")
            ("ď" . "%%239")
            ("č" . "%%232")
            ("ě" . "%%236")
            ("é" . "%%233")
            ("í" . "%%237")
            ("ö" . "%%246")
            ("ó" . "%%243")
            ("ř" . "%%248")
            ("š" . "%%154")
            ("ť" . "%%157")
            ("ú" . "%%250")
            ("ů" . "%%249")
            ("ý" . "%%253")
            ("ž" . "%%158")
            ("Á" . "%%193")
            ("Ď" . "%%207")
            ("Č" . "%%200")
            ("Ě" . "%%204")
            ("É" . "%%201")
            ("Í" . "%%205")
            ("Ö" . "%%214")
            ("Ó" . "%%211")
            ("Ř" . "%%216")
            ("Š" . "%%138")
            ("Ť" . "%%141")
            ("Ú" . "%%218")
            ("Ů" . "%%217")
            ("Ý" . "%%221")
            ("Ž" . "%%142")
            ("ň" . "%%242")
            ("Ň" . "%%210")
            ("ľ" . "%%190")
            ("Ľ" . "%%188")
            ("ä" . "%%228")
            ("Ä" . "%%196")
            ("ü" . "%%252")
            ("Ü" . "%%220")
        )
    )
   
 
;výběr entit k záměně
  (setq ent_sel (ssget "_X" '((-4 . "<OR")(0 . "TEXT")(0 . "MTEXT")(-4 . "OR>"))))

  (setq i 0)
  (if (= ent_sel nil)
       (setq sel_length 0)
       (setq sel_length (SSLENGTH ent_sel))
  )
  (print (strcat (rtos sel_length 2 0) " TEXTů a MTEXTů"))(print)
       
  (while (/= i sel_length) ;cyklus na procházení výběru
     (setq entlist (ENTGET (ssname ent_sel i)))
     (setq TextString (cdr (assoc 1 entlist)))
     (setq n 0)
     (princ TextString)
         (while (/= n  (vl-list-length PatternList)) ;cyklus na záměnu všech znaků
        (setq TextString (AlfredSringReplace (cdr (nth n PatternList )) (car (nth n PatternList )) TextString)) ;záměna textu
        (setq n (+ n 1))
     );while
     (princ " ----> ")(princ TextString)(print)
     
    ;zapsání textu do entity
     (setq EntList (subst (cons 1 TextString) (assoc 1 entlist) entlist))
     (entmod (subst EntList EntList EntList))
          
    (setq i (+ i 1))
  );while
(print)
);konec hlavní funkce




;funkce zamění vyhledaný string za jiný  ve stringu
;syntaxe: (AlfredSringReplace "hledaný_string" "zaměňovaný_string" "měněný string")
(defun AlfredSringReplace (AlfredSrcString AlfredDestString AlfredChangedString / i result)
  (setq i 0)
  (while (/= i nil)
    ;(vl-string-search pattern string [start-pos])
    (setq i (vl-string-search AlfredSrcString AlfredChangedString i))
    (if (/= i nil)
       ;(vl-string-subst new-str pattern string [start-pos])
       (setq AlfredChangedString (vl-string-subst  AlfredDestString AlfredSrcString AlfredChangedString i))
    )
  );while
 
  (setq AlfredChangedString AlfredChangedString) ;!! musí být na konci funkce - návratová hodnota
);konec funkce "AlfredSringReplace"


(print)



Odeslal: alfred
Datum odeslání: 16.úno.2007 v 15:29
Tak, uz muzu poslat i soubor....


http://www.cadforum.cz/forum/uploads/20070216_152906_replace_unicode.LSP - http://www.cadforum.cz/forum/uploads/20070216_152906_replace_unicode.LSP




Odeslal: Robo
Datum odeslání: 22.úno.2007 v 12:03
Funguje ;) super dakujeme



Vytisknout stránku | Zavřít okno