Zobrazit plnou verzi příspěvku: chybne kodovanie textu
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
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.
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.
Vladimír Michl
14.02.2007, 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
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
Mam na to vlastni lisp utilitku, ktera zamenuje ceske znaky. Zitra se muzu klidne v praci podivat.ajaj, vidim, ze jsem odpoved poslal dvakrat....
alfred2007-02-15 07:29:38
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.
To Alfred: Nemohl byste utilitu zde vyvěsit prosím? Taky by se mi hodila... Děkuji
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.
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)
Tak, uz muzu poslat i soubor....http://www.cadforum.cz/forum/uploads/20070216_152906_replace_unicode.LSP
alfred2007-02-16 15:33:30
Funguje ;) super dakujeme