Zobrazit plnou verzi příspěvku: chybne kodovanie textu

Robo
14.02.2007, 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

PepaR
14.02.2007, 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.

Kotlaba
14.02.2007, 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.

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

Mantlík
14.02.2007, 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

alfred
14.02.2007, 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....
alfred2007-02-15 07:29:38

alfred
14.02.2007, 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.

PepaR
14.02.2007, 19:56
To Alfred: Nemohl byste utilitu zde vyvěsit prosím? Taky by se mi hodila... Děkuji

Kotlaba
15.02.2007, 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.

alfred
15.02.2007, 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)

alfred
16.02.2007, 15:29

Tak, uz muzu poslat i soubor....http://www.cadforum.cz/forum/uploads/20070216_152906_replace_unicode.LSP
alfred2007-02-16 15:33:30

Robo
22.02.2007, 12:03
Funguje ;) super dakujeme