Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
CUONG20051982

[Yêu cầu] Lisp chuyển Font12 (font xuyệc (/)) sang UNICODE hay TCVN-3

Các bài được khuyến nghị

Lisp chuyển Font12(font xuyệc (/)) có đuôi .SHX Sang UNICODE hay TCVN-3 với bảng mã tương ứng như sau:

http://www.cadviet.c...ont_xuyêc_1.doc

Và đây là file có chứa font kèm theo: http://www.cadviet.c...t12.rar&w=65875

 

P/S: - Em viết lại bài này muốn nhờ các bác viết giúp em cái lisp chuyển đổi, em xin cảm ơn! Có gì các bác góp ý đừng cho nó vào thùng rác nhé!

  • Nếu bác nào có cái lisp chuyển đổi tất cả các Font về UNICODE hay TCVN-3 thì cho em xin nhé! Thanks!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Doan Van Ha    2.676

Lisp chuyển qua lại giữa các kiểu font:TCVN, Unicode, VNI và font "Xuyệc".

Gồm 6 kiểu chuyển. Còn 6 kiểu nữa sẽ bổ sung sau.

;Cßn thiÕu 6 kiÓu chuyÓn (dï ®· ®ñ c¬ së d÷ liÖu).
;Doan Van Ha - CADViet.com - Ngay 20/8/2012
;Muc dich: Chuyen Text xu«i/ng­îc trªn b¶n vÏ gi÷a 4 Font: TCVN <=> UNICODE <=> VNI <=> XUYEC.
;Font Name theo Style Name duoc chon lam mau.
; "µ Ì ß ï ¸ Ð ã ó ¶ Î á ñ · Ï â ò ¹ Ñ ä ô © ª « ­ Ç Ò å õ Ê Õ è ø È Ó æ ö É Ô ç ÷ Ë Ö é ù ¨ × ¬ ú » Ý ê ý ¾ Ø í û ¼ Ü ë ü ½ Þ ì þ ¨ ® î ¦ ¢ § ¤ ¥ ¡ £"
;----- ChuyÓn tõ VNI => TCVN
(defun C:V2T( / entlst sty)
(princ "\nChon cac Text VNI can chuyen sang TCVN...")
(setq entlst (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "TEXT")))))))
(setq sty (cdr (assoc 7 (entget (car (entsel "\nChon Text de lay Font TCVN mau: "))))))
(foreach ent entlst
 (entmod (subst (cons 1 (VNI-TCVN (cdr (assoc 1 (entget ent))))) (assoc 1 (entget ent)) (entget ent)))
 (entmod (subst (cons 7 sty) (assoc 7 (entget ent)) (entget ent))))
(princ))
;----- ChuyÓn tõ VNI-->TCVN.
(defun VNI-TCVN (stsua / i stdich chuht chusua)
(TAO_TAPSUA)
(foreach n tapsuan3
 (setq stsua (acet-str-replace (car n) (cdr n) stsua)))
stsua)
;----- ChuyÓn tõ TCVN => VNI
(defun C:T2V( / entlst sty)
(princ "\nChon cac Text TCVN can chuyen sang VNI...")
(setq entlst (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "TEXT")))))))
(setq sty (cdr (assoc 7 (entget (car (entsel "\nChon Text de lay Font VNI mau: "))))))
(foreach ent entlst
 (entmod (subst (cons 1 (TCVN-VNI (cdr (assoc 1 (entget ent))))) (assoc 1 (entget ent)) (entget ent)))
 (entmod (subst (cons 7 sty) (assoc 7 (entget ent)) (entget ent))))
(princ))
;----- ChuyÓn tõ TCVN --> VNI.
(defun TCVN-VNI (stsua / i stdich chuht chusua)
(TAO_TAPSUA)
(setq i 1 stdich "")
(repeat (strlen stsua)
 (setq chuht (substr stsua i 1)
   	i (1+ i)
   	chusua (cond ((assoc chuht tapsuax3) (cdr (assoc chuht tapsuax3))) (t chuht))
   	stdich (strcat stdich chusua)))
stdich)
;----- ChuyÓn tõ TCVN => XUYEC
(defun C:T2X( / entlst sty)
(princ "\nChon cac Text TCVN can chuyen sang XUYEC...")
(setq entlst (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "TEXT")))))))
(setq sty (cdr (assoc 7 (entget (car (entsel "\nChon Text de lay Font Xuyec mau: "))))))
(foreach ent entlst
 (entmod (subst (cons 1 (TCVN-Xuyec (cdr (assoc 1 (entget ent))))) (assoc 1 (entget ent)) (entget ent)))
 (entmod (subst (cons 7 sty) (assoc 7 (entget ent)) (entget ent))))
(princ))
;----- ChuyÓn tõ TCVN --> Xuyec.
(defun TCVN-Xuyec (stsua / i stdich chuht chusua)
(TAO_TAPSUA)
(setq i 1 stdich "")
(repeat (strlen stsua)
 (setq chuht (substr stsua i 1)
   	i (1+ i)
   	chusua (cond ((assoc chuht tapsuax2) (cdr (assoc chuht tapsuax2))) (t chuht))
   	stdich (strcat stdich chusua)))
stdich)
;----- ChuyÓn tõ XUYEC => TCVN
(defun C:X2T( / entlst sty)
(princ "\nChon cac Text XUYEC can chuyen sang TCVN...")
(setq entlst (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "TEXT")))))))
(setq sty (cdr (assoc 7 (entget (car (entsel "\nChon Text de lay Font TCVN mau: "))))))
(foreach ent entlst
 (entmod (subst (cons 1 (Xuyec-TCVN (cdr (assoc 1 (entget ent))))) (assoc 1 (entget ent)) (entget ent)))
 (entmod (subst (cons 7 sty) (assoc 7 (entget ent)) (entget ent))))
(princ))
;----- ChuyÓn tõ Xuyec-->TCVN.
(defun Xuyec-TCVN (stsua / i stdich chuht chusua)
(TAO_TAPSUA)
(foreach n tapsuan2
 (setq stsua (acet-str-replace (car n) (cdr n) stsua)))
stsua)
;----- ChuyÓn tõ TCVN => UNICODE
(defun C:T2U( / entlst sty)
(princ "\nChon cac Text TCVN can chuyen sang UNICODE...")
(setq entlst (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "TEXT")))))))
(setq sty (cdr (assoc 7 (entget (car (entsel "\nChon Text de lay Font Unicode mau: "))))))
(foreach ent entlst
 (entmod (subst (cons 1 (TCVN-Unicode (cdr (assoc 1 (entget ent))))) (assoc 1 (entget ent)) (entget ent)))
 (entmod (subst (cons 7 sty) (assoc 7 (entget ent)) (entget ent))))
(princ))
;----- ChuyÓn tõ UNICODE => TCNN3
(defun C:U2T( / entlst sty)
(princ "\nChon cac Text UNICODE can chuyen sang TCVN...")
(setq entlst (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "TEXT")))))))
(setq sty (cdr (assoc 7 (entget (car (entsel "\nChon Text de lay Font TCVN mau: "))))))
(foreach ent entlst
 (entmod (subst (cons 1 (Unicode-TCVN (HEXA3 (HEXA2 (HEXA1 (cdr (assoc 1 (entget ent)))))))) (assoc 1 (entget ent)) (entget ent)))
 (entmod (subst (cons 7 sty) (assoc 7 (entget ent)) (entget ent))))
(princ))
;----- Hµm bá ký tù ®· thªm "\" tr­íc khi chuyÓn sang TCVN.
(defun HEXA3(str)
(setq x 1)
(repeat (strlen str)
 (cond ((= "\U+005C" (substr str x 7)) (setq str (vl-string-subst "\\" "\U+005C" str))))
 (setq x (1+ x)))
str)
;----- Hµm chuyÓn 20 ký tù (µ, ó,...) tõ Unicode sang Hexa.
(defun HEXA2(str)
(setq x 1)
(repeat (strlen str)
 (cond ((= (chr 194) (substr str x 1)) (setq str (vl-string-subst "\U+00C2" (substr str x 1) str) x (+ x 6)))
   	((= (chr 202) (substr str x 1)) (setq str (vl-string-subst "\U+00CA" (substr str x 1) str) x (+ x 6)))
   	((= (chr 208) (substr str x 1)) (setq str (vl-string-subst "\U+0110" (substr str x 1) str) x (+ x 6)))
   	((= (chr 212) (substr str x 1)) (setq str (vl-string-subst "\U+00D4" (substr str x 1) str) x (+ x 6)))
   	((= (chr 224) (substr str x 1)) (setq str (vl-string-subst "\U+00E0" (substr str x 1) str) x (+ x 6)))
   	((= (chr 225) (substr str x 1)) (setq str (vl-string-subst "\U+00E1" (substr str x 1) str) x (+ x 6)))
   	((= (chr 226) (substr str x 1)) (setq str (vl-string-subst "\U+00E2" (substr str x 1) str) x (+ x 6)))
   	((= (chr 227) (substr str x 1)) (setq str (vl-string-subst "\U+00E3" (substr str x 1) str) x (+ x 6)))
   	((= (chr 232) (substr str x 1)) (setq str (vl-string-subst "\U+00E8" (substr str x 1) str) x (+ x 6)))
   	((= (chr 233) (substr str x 1)) (setq str (vl-string-subst "\U+00E9" (substr str x 1) str) x (+ x 6)))
   	((= (chr 234) (substr str x 1)) (setq str (vl-string-subst "\U+00EA" (substr str x 1) str) x (+ x 6)))
   	((= (chr 236) (substr str x 1)) (setq str (vl-string-subst "\U+00EC" (substr str x 1) str) x (+ x 6)))
   	((= (chr 237) (substr str x 1)) (setq str (vl-string-subst "\U+00ED" (substr str x 1) str) x (+ x 6)))
   	((= (chr 242) (substr str x 1)) (setq str (vl-string-subst "\U+00F2" (substr str x 1) str) x (+ x 6)))
   	((= (chr 243) (substr str x 1)) (setq str (vl-string-subst "\U+00F3" (substr str x 1) str) x (+ x 6)))
   	((= (chr 244) (substr str x 1)) (setq str (vl-string-subst "\U+00F4" (substr str x 1) str) x (+ x 6)))
   	((= (chr 245) (substr str x 1)) (setq str (vl-string-subst "\U+00F5" (substr str x 1) str) x (+ x 6)))
   	((= (chr 249) (substr str x 1)) (setq str (vl-string-subst "\U+00F9" (substr str x 1) str) x (+ x 6)))
   	((= (chr 250) (substr str x 1)) (setq str (vl-string-subst "\U+00FA" (substr str x 1) str) x (+ x 6)))
   	((= (chr 253) (substr str x 1)) (setq str (vl-string-subst "\U+00FD" (substr str x 1) str) x (+ x 6))))
 (setq x (1+ x)))
str)
;----- Hµm gi÷ nguyªn m· Hexa (kh«ng cho chuyÓn qua Unicode).
(defun HEXA1(str)
(setq x 1 moi "")
(repeat (strlen str)
 (setq kytu7 (substr str x 7))
 (setq x (+ x 1))
 (if (= (substr kytu7 1 3) "\\U+")
  (setq moi (strcat moi (strcat "\U+005C" (substr kytu7 2 7))) x (+ x 6))
  (setq moi (strcat moi (substr kytu7 1 1))))))
;----- ChuyÓn thuËn tõ TCVN --> Unicode.
(defun TCVN-Unicode (stsua / i stdich chuht chusua)
(TAO_TAPSUA)
(setq i 1 stdich "")
(repeat (strlen stsua)
 (setq chuht (substr stsua i 1)
   	i (1+ i)
   	chusua (cond ((assoc chuht tapsuax1) (cdr (assoc chuht tapsuax1))) (t chuht))
   	stdich (strcat stdich chusua)))
stdich)
;----- ChuyÓn ng­îc tõ Unicode --> TCVN.
(defun Unicode-TCVN (stsua / i stdich chuht)
(TAO_TAPSUA)
(setq i 1)
(repeat (- (strlen stsua) 6)
 (setq chuht (substr stsua i 7)
   	i (1+ i))
 (cond ((assoc chuht tapsuan1)
    	(setq stsua (THAY_CONV stsua (car (assoc chuht tapsuan1)) (cdr (assoc chuht tapsuan1)))))))
(setq stdich stsua))
;----- Hµm con cña chuyÓn ng­îc.
(defun THAY_CONV(str old new / n strpp strtt)
(while (setq n (vl-string-search old str))
 (setq strpp (substr str (+ 1 n (strlen old))))
 (setq strtt (substr str 1 (- (strlen str) (strlen old) (strlen strpp))))
 (setq str (strcat strtt new strpp))))
;----- T¹o 2 danh s¸ch c¬ së ®Ó chuyÓn thuËn vµ ng­îc.
(defun TAO_TAPSUA()
(setq tapsuan1 '() tapsuax1
 (list       	(cons "µ" "\U+00E0") (cons "Ì" "\U+00E8") (cons "ß" "\U+00F2") (cons "ï" "\U+00F9")
(cons "¸" "\U+00E1") (cons "Ð" "\U+00E9") (cons "ã" "\U+00F3") (cons "ó" "\U+00FA")
(cons "¶" "\U+1EA3") (cons "Î" "\U+1EBB") (cons "á" "\U+1ECF") (cons "ñ" "\U+1EE7")
(cons "·" "\U+00E3") (cons "Ï" "\U+1EBD") (cons "â" "\U+00F5") (cons "ò" "\U+0169")
(cons "¹" "\U+1EA1") (cons "Ñ" "\U+1EB9") (cons "ä" "\U+1ECD") (cons "ô" "\U+1EE5")
(cons "©" "\U+00E2") (cons "ª" "\U+00EA") (cons "«" "\U+00F4") (cons "­" "\U+01B0")
(cons "Ç" "\U+1EA7") (cons "Ò" "\U+1EC1") (cons "å" "\U+1ED3") (cons "õ" "\U+1EEB")
(cons "Ê" "\U+1EA5") (cons "Õ" "\U+1EBF") (cons "è" "\U+1ED1") (cons "ø" "\U+1EE9")
(cons "È" "\U+1EA9") (cons "Ó" "\U+1EC3") (cons "æ" "\U+1ED5") (cons "ö" "\U+1EED")
(cons "É" "\U+1EAB") (cons "Ô" "\U+1EC5") (cons "ç" "\U+1ED7") (cons "÷" "\U+1EEF")
(cons "Ë" "\U+1EAD") (cons "Ö" "\U+1EC7") (cons "é" "\U+1ED9") (cons "ù" "\U+1EF1")
(cons "¨" "\U+0103") (cons "×" "\U+00EC") (cons "¬" "\U+01A1") (cons "ú" "\U+1EF3")
(cons "»" "\U+1EB1") (cons "Ý" "\U+00ED") (cons "ê" "\U+1EDD") (cons "ý" "\U+00FD")
(cons "¾" "\U+1EAF") (cons "Ø" "\U+1EC9") (cons "í" "\U+1EDB") (cons "û" "\U+1EF7")
(cons "¼" "\U+1EB3") (cons "Ü" "\U+0129") (cons "ë" "\U+1EDF") (cons "ü" "\U+1EF9")
(cons "½" "\U+1EB5") (cons "Þ" "\U+1ECB") (cons "ì" "\U+1EE1") (cons "þ" "\U+1EF5")
(cons "Æ" "\U+1EB7") (cons "®" "\U+0111") (cons "î" "\U+1EE3") (cons "¦" "\U+01AF")
(cons "¢" "\U+00C2") (cons "§" "\U+0110") (cons "¤" "\U+00D4") (cons "¥" "\U+01A0")
(cons "¡" "\U+0102") (cons "£" "\U+00CA")))
(foreach n tapsuax1 (setq tapsuan1 (reverse (cons (cons (cdr n) (car n)) (reverse tapsuan1)))))
(setq tapsuan2 '() tapsuax2
 (list       	(cons "µ" "a/f") (cons "Ì" "e/f") (cons "ß" "o/f") (cons "ï" "u/f")
(cons "¸" "a/s") (cons "Ð" "e/s") (cons "ã" "o/s") (cons "ó" "u/s")
(cons "¶" "a/r") (cons "Î" "e/r") (cons "á" "o/r") (cons "ñ" "u/r")
(cons "·" "a/x") (cons "Ï" "e/x") (cons "â" "o/x") (cons "ò" "u/x")
(cons "¹" "a/j") (cons "Ñ" "e/j") (cons "ä" "o/j") (cons "ô" "u/j")
(cons "©" "a/m") (cons "ª" "e/m") (cons "«" "o/m") (cons "­" "/]")
(cons "Ç" "a/m/f") (cons "Ò" "e/m/f") (cons "å" "o/m/f") (cons "õ" "/]/f")
(cons "Ê" "a/m/s") (cons "Õ" "e/m/s") (cons "è" "o/m/s") (cons "ø" "/]/s")
(cons "È" "a/m/r") (cons "Ó" "e/m/r") (cons "æ" "o/m/r") (cons "ö" "/]/r")
(cons "É" "a/m/x") (cons "Ô" "e/m/x") (cons "ç" "o/m/x") (cons "÷" "/]/x")
(cons "Ë" "a/m/j") (cons "Ö" "e/m/j") (cons "é" "o/m/j") (cons "ù" "/]/j")
(cons "¨" "a/w") (cons "×" "i/f") (cons "¬" "/[") (cons "ú" "y/f")
(cons "»" "a/w/f") (cons "Ý" "i/s") (cons "ê" "/[/f") (cons "ý" "y/s")
(cons "¾" "a/w/s") (cons "Ø" "i/r") (cons "í" "/[/s") (cons "û" "y/r")
(cons "¼" "a/w/r") (cons "Ü" "i/x") (cons "ë" "/[/r") (cons "ü" "y/x")
(cons "½" "a/w/x") (cons "Þ" "i/j") (cons "ì" "/[/x") (cons "þ" "y/j")
(cons "Æ" "a/w/j") (cons "®" "/d") (cons "î" "/[/j") (cons "¦" "/}")
(cons "¢" "A/M") (cons "§" "/D") (cons "¤" "O/M") (cons "¥" "/{")
(cons "¡" "A/W") (cons "£" "E/M")))
(foreach n tapsuax2 (setq tapsuan2 (reverse (cons (cons (cdr n) (car n)) (reverse tapsuan2)))))
(setq tapsuan3 '() tapsuax3
 (list      	(cons "®" "ñ") (cons "§" "Ñ") (cons "µ" "aø") (cons "¸" "aù")
              	(cons "¶" "aû") (cons "·" "aõ") (cons "¹" "aï")	 (cons "©" "aâ")
              	(cons "¢" "AÂ") (cons "Ç" "aà") (cons "Ê" "aá") (cons "È" "aå")
              	(cons "É" "aã") (cons "Ë" "aä") (cons "¨" "aê")	 (cons "¡" "AÊ")
              	(cons "»" "aè") (cons "¾" "aé") (cons "¼" "aú")	 (cons "½" "aü")
              	(cons "Æ" "aë") (cons "Ì" "eø") (cons "Ð" "eù")	 (cons "Î" "eû")
              	(cons "Ï" "eõ") (cons "Ñ" "eï") (cons "ª" "eâ")	 (cons "£" "EÂ")
              	(cons "Ò" "eà") (cons "Õ" "eá") (cons "Ó" "eå")	 (cons "Ô" "eã")
              	(cons "Ö" "eä") (cons "×" "ì") (cons "Ý" "í") (cons "Ø" "æ")
              	(cons "Ü" "ó") (cons "Þ" "ò") (cons "ß" "oø") (cons "ã" "où")
              	(cons "á" "oû") (cons "â" "oõ") (cons "ä" "oï") (cons "«" "oâ")
              	(cons "¤" "OÂ") (cons "å" "oà") (cons "è" "oá") (cons "æ" "oå")
              	(cons "ç" "oã") (cons "é" "oä") (cons "¬" "ô") (cons "¥" "Ô")
              	(cons "ê" "ôø") (cons "í" "ôù") (cons "ë" "ôû") (cons "ì" "ôõ")
              	(cons "î" "ôï") (cons "ï" "uø") (cons "ó" "uù") (cons "ñ" "uû")
              	(cons "ò" "uõ") (cons "ô" "uï") (cons "­" "ö") (cons "¦" "Ö")
              	(cons "õ" "öø") (cons "ø" "öù") (cons "ö" "öû") (cons "÷" "öõ")
              	(cons "ù" "öï") (cons "ú" "yø") (cons "ý" "yù") (cons "û" "yû")
              	(cons "ü" "yõ") (cons "þ" "î")
;|               	(cons "%%174" "ñ") (cons "%%167" "Ñ") (cons "%%181" "aø") (cons "%%184" "aù")
              	(cons "%%182" "aû") (cons "%%183" "aõ") (cons "%%185" "aï") (cons "%%169" "aâ")
              	(cons "%%162" "AÂ") (cons "%%199" "aà") (cons "%%202" "aá") (cons "%%200" "aå")
              	(cons "%%201" "aã") (cons "%%203" "aä") (cons "%%168" "aê") (cons "%%161" "AÊ")
              	(cons "%%187" "aè") (cons "%%190" "aé") (cons "%%188" "aú") (cons "%%189" "aü")
              	(cons "%%198" "aë") (cons "%%204" "eø") (cons "%%208" "eù") (cons "%%206" "eû")
              	(cons "%%207" "eõ") (cons "%%209" "eï") (cons "%%170" "eâ") (cons "%%163" "EÂ")
              	(cons "%%210" "eà") (cons "%%213" "eá") (cons "%%211" "eå") (cons "%%212" "eã")
              	(cons "%%214" "eä") (cons "%%215" "ì") (cons "%%221" "í") (cons "%%216" "æ")
              	(cons "%%220" "ó") (cons "%%222" "ò") (cons "%%223" "oø") (cons "%%227" "où")
              	(cons "%%225" "oû") (cons "%%226" "oõ") (cons "%%228" "oï") (cons "%%171" "oâ")
              	(cons "%%164" "OÂ") (cons "%%229" "oà") (cons "%%232" "oá") (cons "%%230" "oå")
              	(cons "%%231" "oã") (cons "%%233" "oä") (cons "%%172" "ô") (cons "%%165" "Ô")
              	(cons "%%234" "ôø") (cons "%%237" "ôù") (cons "%%235" "ôû") (cons "%%236" "ôõ")
              	(cons "%%238" "ôï") (cons "%%239" "uø") (cons "%%243" "uù") (cons "%%241" "uû")
              	(cons "%%242" "uõ") (cons "%%244" "uï") (cons "%%173" "ö") (cons "%%166" "Ö")
              	(cons "%%245" "öø") (cons "%%248" "öù") (cons "%%246" "öû") (cons "%%247" "öõ")
              	(cons "%%249" "öï") (cons "%%250" "yø") (cons "%%253" "yù") (cons "%%251" "yû")
              	(cons "%%252" "yõ") (cons "%%254" "î")|;
))
(foreach n tapsuax3 (setq tapsuan3 (reverse (cons (cons (cdr n) (car n)) (reverse tapsuan3)))))
)
(prompt "\nL\U+1EC7nh ConVert TCVN to UNICODE: T2U")	;OK
(prompt "\nL\U+1EC7nh ConVert UNICODE to TCVN: U2T")	;OK
(prompt "\nL\U+1EC7nh ConVert XUYEC to TCVN: X2T")	;OK
(prompt "\nL\U+1EC7nh ConVert TCVN to XUYEC: T2X")	;OK
(prompt "\nL\U+1EC7nh ConVert TCVN to VNI: T2V")		;OK
(prompt "\nL\U+1EC7nh ConVert VNI to TCVN: V2T")		;OK

  • Vote tăng 3

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
ketxu    2.649

Hơi dài bác ạ. Bác có thể chỉ dùng 1 list cho tất cả các loại bảng mã, sau đó dùng 1 hàm con với 2 đối số là vị trí đích và nguồn

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Cảm ơn Doan Van Ha !

Mình đã test thử với việc chuyển qua lại giữa font Xuyêc và TCVN-3 nhưng vẫn chưa được. Đây là file CAD có font xuyêc của mình, xem giúp mình với.

http://www.upfile.me...download&q=3830

 

P/s: Lisp này mình thấy chỉ chọn được Dtext thì phải, nếu dùng được cho cả Mtext thì tốt.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Doan Van Ha    2.676

@Ketxu: đã nghĩ phương án Ket đề xuất, nhưng vì lấy lisp cũ thêm font "/" vào nên nó lê thê là vậy. Bữa nào rảnh thì gom vào 1 list thôi.

@Cuongdola: test trên bản vẽ của tôi thì OK, test trên bản vẽ bạn thì ERR. Hôm nay tội bận đi công tác, ít bữa về sẽ kiểm tra và viết lại.

Hoặc bạn nào đang rảnh thì giúp giùm với.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Doan Van Ha    2.676

Lisp này tôi đang viết để chuyển qua lại giữa 4 font chữ: Unicode, TCVN3, VNI, và "Xuyệc", nhưng chưa hoàn chỉnh. Tuy nhiên chủ topic có thể dùng để chuyển từ font "Xuyệc" qua TCVN3, Unicode, VNI. Riêng với TCVN3 thì bạn cần tạo trước 2 kiểu font mẫu: TCVN3 chữ thường và TCVN3 chữ hoa để chọn font mẫu cho phù hợp.

; Lisp ch­a hoµn thiÖn. Míi chØ chuyÓn ®­îc 9/12 kiÓu ch÷ th­êng. Cßn 3/12 kiÓu ch÷ th­êng vµ 12 kiÓu ch÷ hoa.
; "µ Ì ß ï ¸ Ð ã ó ¶ Î á ñ · Ï â ò ¹ Ñ ä ô © ª « ­ Ç Ò å õ Ê Õ è ø È Ó æ ö É Ô ç ÷ Ë Ö é ù ¨ × ¬ ú » Ý ê ý ¾ Ø í û ¼ Ü ë ü ½ Þ ì þ ¨ ® î ¦ ¢ § ¤ ¥ ¡ £"
;----- 	'(TCVN  UNI  XUYEC  VNI) =  '("Ç" "\U+1EA7" "a/m/f" "aà")
(defun C:HA( / entlst sty kieu)
(initget "V2T V2U V2X T2X  T2V T2U U2T U2X U2V X2V X2T X2U")
(setq kieu (getkword "\nChon 1 trong 12 kieu chuyen [V2T/V2U/V2X/T2X/T2V/T2U/U2T/U2X/U2V/X2V/X2T/X2U]: "))
(cond
 ((= kieu "V2T") (setq from "VNI" to "TCVN"))
 ((= kieu "V2U") (setq from "VNI" to "UNICODE"))
 ((= kieu "V2X") (setq from "VNI" to "XUYEC"))
 ((= kieu "T2X") (setq from "TCVN" to "XUYEC"))
 ((= kieu "T2V") (setq from "TCVN" to "VNI"))
 ((= kieu "T2U") (setq from "TCVN" to "UNICODE"))
 ((= kieu "U2T") (setq from "UNICODE" to "TCVN"))
 ((= kieu "U2X") (setq from "UNICODE" to "XUYEC"))
 ((= kieu "U2V") (setq from "UNICODE" to "VNI"))
 ((= kieu "X2V") (setq from "XUYEC" to "VNI"))
 ((= kieu "X2T") (setq from "XUYEC" to "TCVN"))
 ((= kieu "X2U") (setq from "XUYEC" to "UNICODE")))
(princ (strcat "\nChon cac Text " from " can chuyen sang " to "..."))
(setq entlst (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "*TEXT")))))))
(setq sty (cdr (assoc 7 (entget (car (entsel (strcat "\nChon 1 Text de lay Font " to " mau: ")))))))
(foreach ent entlst
 (if (or (= kieu "T2U") (= kieu "T2V") (= kieu "T2X"))
  (entmod (subst (cons 1 (HA2 (cdr (assoc 1 (entget ent))))) (assoc 1 (entget ent)) (entget ent)))
  (entmod (subst (cons 1 (HA1 (cdr (assoc 1 (entget ent))))) (assoc 1 (entget ent)) (entget ent))))
 (entmod (subst (cons 7 sty) (assoc 7 (entget ent)) (entget ent))))
(princ))
;-----
(defun HA1 (stsua / hoa)
(if (= (strcase stsua) stsua) (setq stsua (strcase stsua T) hoa T))
(foreach n lst
 (cond
  ((= kieu "X2T") (setq stsua (acet-str-replace (caddr n) (car n) stsua)))	;OK100%; Chó ý: nÕu ch÷ Hoa th× chän TCVN Hoa, nÕu ch÷ th­êng th× chän TCVN th­êng.
  ((= kieu "X2U") (setq stsua (acet-str-replace (caddr n) (cadr n) stsua)))	;OK100%
  ((= kieu "X2V") (setq stsua (acet-str-replace (caddr n) (cadddr n) stsua)))	;OK100%
  ((= kieu "V2T") (setq stsua (acet-str-replace (cadddr n) (car n) stsua)))	;OK
  ((= kieu "V2X") (setq stsua (acet-str-replace (cadddr n) (caddr n) stsua)))	;OK
  ((= kieu "V2U") (setq stsua (acet-str-replace (cadddr n) (cadr n) stsua)))		;NO
  ((= kieu "U2T") (setq stsua (acet-str-replace (cadr n) (car n) stsua)))		;NO
  ((= kieu "U2X") (setq stsua (acet-str-replace (cadr n) (caddr n) stsua)))	;OK
  ((= kieu "U2V") (setq stsua (acet-str-replace (cadr n) (cadddr n) stsua)))		;NO
))
(if (and (or (= kieu "X2V") (= kieu "X2U")) (= hoa T)) (setq stsua (xstrcase stsua)))
stsua)
;-----
(defun HA2 (stsua / i stdich chuht chusua)
(setq i 0 stdich "")
(repeat (strlen stsua)
 (setq chuht (substr stsua (setq i (1+ i)) 1) chusua chuht)
 (foreach n lst
  (if (member chuht n)
(setq chusua
(cond
 	((= kieu "T2X") (caddr n))					;OK
 	((= kieu "T2V") (cadddr n))					;OK
 	((= kieu "T2U") (cadr n))))))					;OK
 (setq stdich (strcat stdich chusua)))
stdich)
;------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
;Trang web nay co .net cua Gia_bach chuyen nhieu kieu hon: http://www.cadviet.com/forum/index.php?showtopic=22767&st=0
;----- ChuyÓn tõ UNICODE => TCNN3
(defun C:U2T( / entlst sty)
(princ "\nChon cac Text UNICODE can chuyen sang TCVN...")
(setq entlst (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "TEXT")))))))
(setq sty (cdr (assoc 7 (entget (car (entsel "\nChon Text de lay Font TCVN mau: "))))))
(foreach ent entlst
 (entmod (subst (cons 1 (Unicode-TCVN (HEXA3 (HEXA2 (HEXA1 (cdr (assoc 1 (entget ent)))))))) (assoc 1 (entget ent)) (entget ent)))
 (entmod (subst (cons 7 sty) (assoc 7 (entget ent)) (entget ent))))
(princ))
;----- Hµm bá ký tù ®· thªm "\" tr­íc khi chuyÓn sang TCVN.
(defun HEXA3(str)
(setq x 1)
(repeat (strlen str)
 (cond ((= "\U+005C" (substr str x 7)) (setq str (vl-string-subst "\\" "\U+005C" str))))
 (setq x (1+ x)))
str)
;----- Hµm chuyÓn 20 ký tù (µ, ó,...) tõ Unicode sang Hexa.
(defun HEXA2(str)
(setq x 1)
(repeat (strlen str)
 (cond ((= (chr 194) (substr str x 1)) (setq str (vl-string-subst "\U+00C2" (substr str x 1) str) x (+ x 6)))
   	((= (chr 202) (substr str x 1)) (setq str (vl-string-subst "\U+00CA" (substr str x 1) str) x (+ x 6)))
   	((= (chr 208) (substr str x 1)) (setq str (vl-string-subst "\U+0110" (substr str x 1) str) x (+ x 6)))
   	((= (chr 212) (substr str x 1)) (setq str (vl-string-subst "\U+00D4" (substr str x 1) str) x (+ x 6)))
   	((= (chr 224) (substr str x 1)) (setq str (vl-string-subst "\U+00E0" (substr str x 1) str) x (+ x 6)))
   	((= (chr 225) (substr str x 1)) (setq str (vl-string-subst "\U+00E1" (substr str x 1) str) x (+ x 6)))
   	((= (chr 226) (substr str x 1)) (setq str (vl-string-subst "\U+00E2" (substr str x 1) str) x (+ x 6)))
   	((= (chr 227) (substr str x 1)) (setq str (vl-string-subst "\U+00E3" (substr str x 1) str) x (+ x 6)))
   	((= (chr 232) (substr str x 1)) (setq str (vl-string-subst "\U+00E8" (substr str x 1) str) x (+ x 6)))
   	((= (chr 233) (substr str x 1)) (setq str (vl-string-subst "\U+00E9" (substr str x 1) str) x (+ x 6)))
   	((= (chr 234) (substr str x 1)) (setq str (vl-string-subst "\U+00EA" (substr str x 1) str) x (+ x 6)))
   	((= (chr 236) (substr str x 1)) (setq str (vl-string-subst "\U+00EC" (substr str x 1) str) x (+ x 6)))
   	((= (chr 237) (substr str x 1)) (setq str (vl-string-subst "\U+00ED" (substr str x 1) str) x (+ x 6)))
   	((= (chr 242) (substr str x 1)) (setq str (vl-string-subst "\U+00F2" (substr str x 1) str) x (+ x 6)))
   	((= (chr 243) (substr str x 1)) (setq str (vl-string-subst "\U+00F3" (substr str x 1) str) x (+ x 6)))
   	((= (chr 244) (substr str x 1)) (setq str (vl-string-subst "\U+00F4" (substr str x 1) str) x (+ x 6)))
   	((= (chr 245) (substr str x 1)) (setq str (vl-string-subst "\U+00F5" (substr str x 1) str) x (+ x 6)))
   	((= (chr 249) (substr str x 1)) (setq str (vl-string-subst "\U+00F9" (substr str x 1) str) x (+ x 6)))
   	((= (chr 250) (substr str x 1)) (setq str (vl-string-subst "\U+00FA" (substr str x 1) str) x (+ x 6)))
   	((= (chr 253) (substr str x 1)) (setq str (vl-string-subst "\U+00FD" (substr str x 1) str) x (+ x 6))))
 (setq x (1+ x)))
str)
;----- Hµm gi÷ nguyªn m· Hexa (kh«ng cho chuyÓn qua Unicode).
(defun HEXA1(str)
(setq x 1 moi "")
(repeat (strlen str)
 (setq kytu7 (substr str x 7))
 (setq x (+ x 1))
 (if (= (substr kytu7 1 3) "\\U+")
  (setq moi (strcat moi (strcat "\U+005C" (substr kytu7 2 7))) x (+ x 6))
  (setq moi (strcat moi (substr kytu7 1 1))))))
;----- ChuyÓn ng­îc tõ Unicode --> TCVN.
(defun Unicode-TCVN (stsua / i stdich chuht)
(TAO_TAPSUA)
(setq i 1)
(repeat (- (strlen stsua) 6)
 (setq chuht (substr stsua i 7)
   	i (1+ i))
 (cond ((assoc chuht tapsuan1)
		(setq stsua (THAY_CONV stsua (car (assoc chuht tapsuan1)) (cdr (assoc chuht tapsuan1)))))))
(setq stdich stsua))
;----- Hµm con cña chuyÓn ng­îc.
(defun THAY_CONV(str old new / n strpp strtt)
(while (setq n (vl-string-search old str))
 (setq strpp (substr str (+ 1 n (strlen old))))
 (setq strtt (substr str 1 (- (strlen str) (strlen old) (strlen strpp))))
 (setq str (strcat strtt new strpp))))
;----- T¹o danh s¸ch c¬ së ®Ó chuyÓn thuËn vµ ng­îc gi÷a 4 kiÓu (tæ hîp thµnh 12 kiÓu chuyÓn).
(setq lst		; 74 ký tù (c¸c ký tù IN HOA cã dÊu kh«ng viÕt ®­îc b»ng TCVN3 trong Notepad)
(list		     
 '("Ç" "\U+1EA7" "a/m/f" "aà")	'("å" "\U+1ED3" "o/m/f" "oà")	'("Ò" "\U+1EC1" "e/m/f" "eà")	'("õ" "\U+1EEB" "/]/f" "öø")
 '("Ê" "\U+1EA5" "a/m/s" "aá") 	'("è" "\U+1ED1" "o/m/s" "oá")	'("Õ" "\U+1EBF" "e/m/s" "eá") 	'("ø" "\U+1EE9" "/]/s" "öù")
 '("Ë" "\U+1EAD" "a/m/j" "aä") 	'("é" "\U+1ED9" "o/m/j" "oä")	'("Ö" "\U+1EC7" "e/m/j" "eä") 	'("ù" "\U+1EF1" "/]/j" "öï")
 '("È" "\U+1EA9" "a/m/r" "aå") 	'("æ" "\U+1ED5" "o/m/r" "oå")	'("Ó" "\U+1EC3" "e/m/r" "eå") 	'("ö" "\U+1EED" "/]/r" "öû")
 '("É" "\U+1EAB" "a/m/x" "aã") 	'("ç" "\U+1ED7" "o/m/x" "oã")	'("Ô" "\U+1EC5" "e/m/x" "eã") 	'("÷" "\U+1EEF" "/]/x" "öõ")
 '("»" "\U+1EB1" "a/w/f" "aè") 	'("ê" "\U+1EDD" "/[/f" "ôø")    
 '("¾" "\U+1EAF" "a/w/s" "aé") 	'("í" "\U+1EDB" "/[/s" "ôù")    
 '("Æ" "\U+1EB7" "a/w/j" "aë") 	'("î" "\U+1EE3" "/[/j" "ôï")    
 '("¼" "\U+1EB3" "a/w/r" "aú") 	'("ë" "\U+1EDF" "/[/r" "ôû")    
 '("½" "\U+1EB5" "a/w/x" "aü") 	'("ì" "\U+1EE1" "/[/x" "ôõ")    
 '("µ" "\U+00E0" "a/f" "aø") 	'("ß" "\U+00F2" "o/f" "oø") 	'("Ì" "\U+00E8" "e/f" "eø") 	'("ï" "\U+00F9" "u/f" "uø")
 '("¸" "\U+00E1" "a/s" "aù") 	'("ã" "\U+00F3" "o/s" "où")	'("Ð" "\U+00E9" "e/s" "eù") 	'("ó" "\U+00FA" "u/s" "uù")
 '("¹" "\U+1EA1" "a/j" "aï") 	'("ä" "\U+1ECD" "o/j" "oï")	'("Ñ" "\U+1EB9" "e/j" "eï") 	'("ô" "\U+1EE5" "u/j" "uï")
 '("¶" "\U+1EA3" "a/r" "aû") 	'("á" "\U+1ECF" "o/r" "oû")	'("Î" "\U+1EBB" "e/r" "eû") 	'("ñ" "\U+1EE7" "u/r" "uû")
 '("·" "\U+00E3" "a/x" "aõ") 	'("â" "\U+00F5" "o/x" "oõ")	'("Ï" "\U+1EBD" "e/x" "eõ") 	'("ò" "\U+0169" "u/x" "uõ")
 '("©" "\U+00E2" "a/m" "aâ") 	'("«" "\U+00F4" "o/m" "oâ")	'("ª" "\U+00EA" "e/m" "eâ") 	'("­" "\U+01B0" "/]" "ö")
 '("¨" "\U+0103" "a/w" "aê") 	'("¬" "\U+01A1" "/[" "ô")  
 '("¡" "\U+0102" "A/W" "AÊ") 	'("¥" "\U+01A0" "/{" "Ô")	'("£" "\U+00CA" "E/M" "EÂ")	'("¦" "\U+01AF" "/}" "Ö")
 '("¢" "\U+00C2" "A/M" "AÂ") 	'("¤" "\U+00D4" "O/M" "OÂ")
 '("ý" "\U+00FD" "y/s" "yù") 	'("û" "\U+1EF7" "y/r" "yû")	'("ü" "\U+1EF9" "y/x" "yõ")	'("þ" "\U+1EF5" "y/j" "î")	'("ú" "\U+1EF3" "y/f" "yø")
 '("Ý" "\U+00ED" "i/s" "í") 	'("Ø" "\U+1EC9" "i/r" "æ")	'("Ü" "\U+0129" "i/x" "ó") 	'("Þ" "\U+1ECB" "i/j" "ò") 	'("×" "\U+00EC" "i/f" "ì")
 '("®" "\U+0111" "/d" "ñ") 	'("§" "\U+0110" "/D" "Ñ")))
;-----
;           		(cons "%%174" "ñ") (cons "%%167" "Ñ") (cons "%%181" "aø") (cons "%%184" "aù")
;           		(cons "%%182" "aû") (cons "%%183" "aõ") (cons "%%185" "aï") (cons "%%169" "aâ")
;           		(cons "%%162" "AÂ") (cons "%%199" "aà") (cons "%%202" "aá") (cons "%%200" "aå")
;           		(cons "%%201" "aã") (cons "%%203" "aä") (cons "%%168" "aê") (cons "%%161" "AÊ")
;           		(cons "%%187" "aè") (cons "%%190" "aé") (cons "%%188" "aú") (cons "%%189" "aü")
;           		(cons "%%198" "aë") (cons "%%204" "eø") (cons "%%208" "eù") (cons "%%206" "eû")
;           		(cons "%%207" "eõ") (cons "%%209" "eï") (cons "%%170" "eâ") (cons "%%163" "EÂ")
;           		(cons "%%210" "eà") (cons "%%213" "eá") (cons "%%211" "eå") (cons "%%212" "eã")
;           		(cons "%%214" "eä") (cons "%%215" "ì") (cons "%%221" "í") (cons "%%216" "æ")
;           		(cons "%%220" "ó") (cons "%%222" "ò") (cons "%%223" "oø") (cons "%%227" "où")
;           		(cons "%%225" "oû") (cons "%%226" "oõ") (cons "%%228" "oï") (cons "%%171" "oâ")
;           		(cons "%%164" "OÂ") (cons "%%229" "oà") (cons "%%232" "oá") (cons "%%230" "oå")
;           		(cons "%%231" "oã") (cons "%%233" "oä") (cons "%%172" "ô") (cons "%%165" "Ô")
;           		(cons "%%234" "ôø") (cons "%%237" "ôù") (cons "%%235" "ôû") (cons "%%236" "ôõ")
;           		(cons "%%238" "ôï") (cons "%%239" "uø") (cons "%%243" "uù") (cons "%%241" "uû")
;           		(cons "%%242" "uõ") (cons "%%244" "uï") (cons "%%173" "ö") (cons "%%166" "Ö")
;           		(cons "%%245" "öø") (cons "%%248" "öù") (cons "%%246" "öû") (cons "%%247" "öõ")
;           		(cons "%%249" "öï") (cons "%%250" "yø") (cons "%%253" "yù") (cons "%%251" "yû")
;           		(cons "%%252" "yõ") (cons "%%254" "î")
;-----

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Lisp này tôi đang viết để chuyển qua lại giữa 4 font chữ: Unicode, TCVN3, VNI, và "Xuyệc", nhưng chưa hoàn chỉnh. Tuy nhiên chủ topic có thể dùng để chuyển từ font "Xuyệc" qua TCVN3, Unicode, VNI. Riêng với TCVN3 thì bạn cần tạo trước 2 kiểu font mẫu: TCVN3 chữ thường và TCVN3 chữ hoa để chọn font mẫu cho phù hợp.

; Lisp ch­a hoµn thiÖn. Míi chØ chuyÓn ®­îc 9/12 kiÓu ch÷ th­êng. Cßn 3/12 kiÓu ch÷ th­êng vµ 12 kiÓu ch÷ hoa.
; "µ Ì ß ï ¸ Ð ã ó ¶ Î á ñ · Ï â ò ¹ Ñ ä ô © ª « ­ Ç Ò å õ Ê Õ è ø È Ó æ ö É Ô ç ÷ Ë Ö é ù ¨ × ¬ ú » Ý ê ý ¾ Ø í û ¼ Ü ë ü ½ Þ ì þ ¨ ® î ¦ ¢ § ¤ ¥ ¡ £"
;----- 	'(TCVN  UNI  XUYEC  VNI) =  '("Ç" "\U+1EA7" "a/m/f" "aà")
(defun C:HA( / entlst sty kieu)
(initget "V2T V2U V2X T2X  T2V T2U U2T U2X U2V X2V X2T X2U")
(setq kieu (getkword "\nChon 1 trong 12 kieu chuyen [V2T/V2U/V2X/T2X/T2V/T2U/U2T/U2X/U2V/X2V/X2T/X2U]: "))
(cond
 ((= kieu "V2T") (setq from "VNI" to "TCVN"))
 ((= kieu "V2U") (setq from "VNI" to "UNICODE"))
 ((= kieu "V2X") (setq from "VNI" to "XUYEC"))
 ((= kieu "T2X") (setq from "TCVN" to "XUYEC"))
 ((= kieu "T2V") (setq from "TCVN" to "VNI"))
 ((= kieu "T2U") (setq from "TCVN" to "UNICODE"))
 ((= kieu "U2T") (setq from "UNICODE" to "TCVN"))
 ((= kieu "U2X") (setq from "UNICODE" to "XUYEC"))
 ((= kieu "U2V") (setq from "UNICODE" to "VNI"))
 ((= kieu "X2V") (setq from "XUYEC" to "VNI"))
 ((= kieu "X2T") (setq from "XUYEC" to "TCVN"))
 ((= kieu "X2U") (setq from "XUYEC" to "UNICODE")))
(princ (strcat "\nChon cac Text " from " can chuyen sang " to "..."))
(setq entlst (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "*TEXT")))))))
(setq sty (cdr (assoc 7 (entget (car (entsel (strcat "\nChon 1 Text de lay Font " to " mau: ")))))))
(foreach ent entlst
 (if (or (= kieu "T2U") (= kieu "T2V") (= kieu "T2X"))
  (entmod (subst (cons 1 (HA2 (cdr (assoc 1 (entget ent))))) (assoc 1 (entget ent)) (entget ent)))
  (entmod (subst (cons 1 (HA1 (cdr (assoc 1 (entget ent))))) (assoc 1 (entget ent)) (entget ent))))
 (entmod (subst (cons 7 sty) (assoc 7 (entget ent)) (entget ent))))
(princ))
;-----
(defun HA1 (stsua / hoa)
(if (= (strcase stsua) stsua) (setq stsua (strcase stsua T) hoa T))
(foreach n lst
 (cond
  ((= kieu "X2T") (setq stsua (acet-str-replace (caddr n) (car n) stsua)))	;OK100%; Chó ý: nÕu ch÷ Hoa th× chän TCVN Hoa, nÕu ch÷ th­êng th× chän TCVN th­êng.
  ((= kieu "X2U") (setq stsua (acet-str-replace (caddr n) (cadr n) stsua)))	;OK100%
  ((= kieu "X2V") (setq stsua (acet-str-replace (caddr n) (cadddr n) stsua)))	;OK100%
  ((= kieu "V2T") (setq stsua (acet-str-replace (cadddr n) (car n) stsua)))	;OK
  ((= kieu "V2X") (setq stsua (acet-str-replace (cadddr n) (caddr n) stsua)))	;OK
  ((= kieu "V2U") (setq stsua (acet-str-replace (cadddr n) (cadr n) stsua)))		;NO
  ((= kieu "U2T") (setq stsua (acet-str-replace (cadr n) (car n) stsua)))		;NO
  ((= kieu "U2X") (setq stsua (acet-str-replace (cadr n) (caddr n) stsua)))	;OK
  ((= kieu "U2V") (setq stsua (acet-str-replace (cadr n) (cadddr n) stsua)))		;NO
))
(if (and (or (= kieu "X2V") (= kieu "X2U")) (= hoa T)) (setq stsua (xstrcase stsua)))
stsua)
;-----
(defun HA2 (stsua / i stdich chuht chusua)
(setq i 0 stdich "")
(repeat (strlen stsua)
 (setq chuht (substr stsua (setq i (1+ i)) 1) chusua chuht)
 (foreach n lst
  (if (member chuht n)
(setq chusua
(cond
 	((= kieu "T2X") (caddr n))					;OK
 	((= kieu "T2V") (cadddr n))					;OK
 	((= kieu "T2U") (cadr n))))))					;OK
 (setq stdich (strcat stdich chusua)))
stdich)
;------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
;Trang web nay co .net cua Gia_bach chuyen nhieu kieu hon: http://www.cadviet.com/forum/index.php?showtopic=22767&st=0
;----- ChuyÓn tõ UNICODE => TCNN3
(defun C:U2T( / entlst sty)
(princ "\nChon cac Text UNICODE can chuyen sang TCVN...")
(setq entlst (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "TEXT")))))))
(setq sty (cdr (assoc 7 (entget (car (entsel "\nChon Text de lay Font TCVN mau: "))))))
(foreach ent entlst
 (entmod (subst (cons 1 (Unicode-TCVN (HEXA3 (HEXA2 (HEXA1 (cdr (assoc 1 (entget ent)))))))) (assoc 1 (entget ent)) (entget ent)))
 (entmod (subst (cons 7 sty) (assoc 7 (entget ent)) (entget ent))))
(princ))
;----- Hµm bá ký tù ®· thªm "\" tr­íc khi chuyÓn sang TCVN.
(defun HEXA3(str)
(setq x 1)
(repeat (strlen str)
 (cond ((= "\U+005C" (substr str x 7)) (setq str (vl-string-subst "\\" "\U+005C" str))))
 (setq x (1+ x)))
str)
;----- Hµm chuyÓn 20 ký tù (µ, ó,...) tõ Unicode sang Hexa.
(defun HEXA2(str)
(setq x 1)
(repeat (strlen str)
 (cond ((= (chr 194) (substr str x 1)) (setq str (vl-string-subst "\U+00C2" (substr str x 1) str) x (+ x 6)))
   	((= (chr 202) (substr str x 1)) (setq str (vl-string-subst "\U+00CA" (substr str x 1) str) x (+ x 6)))
   	((= (chr 208) (substr str x 1)) (setq str (vl-string-subst "\U+0110" (substr str x 1) str) x (+ x 6)))
   	((= (chr 212) (substr str x 1)) (setq str (vl-string-subst "\U+00D4" (substr str x 1) str) x (+ x 6)))
   	((= (chr 224) (substr str x 1)) (setq str (vl-string-subst "\U+00E0" (substr str x 1) str) x (+ x 6)))
   	((= (chr 225) (substr str x 1)) (setq str (vl-string-subst "\U+00E1" (substr str x 1) str) x (+ x 6)))
   	((= (chr 226) (substr str x 1)) (setq str (vl-string-subst "\U+00E2" (substr str x 1) str) x (+ x 6)))
   	((= (chr 227) (substr str x 1)) (setq str (vl-string-subst "\U+00E3" (substr str x 1) str) x (+ x 6)))
   	((= (chr 232) (substr str x 1)) (setq str (vl-string-subst "\U+00E8" (substr str x 1) str) x (+ x 6)))
   	((= (chr 233) (substr str x 1)) (setq str (vl-string-subst "\U+00E9" (substr str x 1) str) x (+ x 6)))
   	((= (chr 234) (substr str x 1)) (setq str (vl-string-subst "\U+00EA" (substr str x 1) str) x (+ x 6)))
   	((= (chr 236) (substr str x 1)) (setq str (vl-string-subst "\U+00EC" (substr str x 1) str) x (+ x 6)))
   	((= (chr 237) (substr str x 1)) (setq str (vl-string-subst "\U+00ED" (substr str x 1) str) x (+ x 6)))
   	((= (chr 242) (substr str x 1)) (setq str (vl-string-subst "\U+00F2" (substr str x 1) str) x (+ x 6)))
   	((= (chr 243) (substr str x 1)) (setq str (vl-string-subst "\U+00F3" (substr str x 1) str) x (+ x 6)))
   	((= (chr 244) (substr str x 1)) (setq str (vl-string-subst "\U+00F4" (substr str x 1) str) x (+ x 6)))
   	((= (chr 245) (substr str x 1)) (setq str (vl-string-subst "\U+00F5" (substr str x 1) str) x (+ x 6)))
   	((= (chr 249) (substr str x 1)) (setq str (vl-string-subst "\U+00F9" (substr str x 1) str) x (+ x 6)))
   	((= (chr 250) (substr str x 1)) (setq str (vl-string-subst "\U+00FA" (substr str x 1) str) x (+ x 6)))
   	((= (chr 253) (substr str x 1)) (setq str (vl-string-subst "\U+00FD" (substr str x 1) str) x (+ x 6))))
 (setq x (1+ x)))
str)
;----- Hµm gi÷ nguyªn m· Hexa (kh«ng cho chuyÓn qua Unicode).
(defun HEXA1(str)
(setq x 1 moi "")
(repeat (strlen str)
 (setq kytu7 (substr str x 7))
 (setq x (+ x 1))
 (if (= (substr kytu7 1 3) "\\U+")
  (setq moi (strcat moi (strcat "\U+005C" (substr kytu7 2 7))) x (+ x 6))
  (setq moi (strcat moi (substr kytu7 1 1))))))
;----- ChuyÓn ng­îc tõ Unicode --> TCVN.
(defun Unicode-TCVN (stsua / i stdich chuht)
(TAO_TAPSUA)
(setq i 1)
(repeat (- (strlen stsua) 6)
 (setq chuht (substr stsua i 7)
   	i (1+ i))
 (cond ((assoc chuht tapsuan1)
	(setq stsua (THAY_CONV stsua (car (assoc chuht tapsuan1)) (cdr (assoc chuht tapsuan1)))))))
(setq stdich stsua))
;----- Hµm con cña chuyÓn ng­îc.
(defun THAY_CONV(str old new / n strpp strtt)
(while (setq n (vl-string-search old str))
 (setq strpp (substr str (+ 1 n (strlen old))))
 (setq strtt (substr str 1 (- (strlen str) (strlen old) (strlen strpp))))
 (setq str (strcat strtt new strpp))))
;----- T¹o danh s¸ch c¬ së ®Ó chuyÓn thuËn vµ ng­îc gi÷a 4 kiÓu (tæ hîp thµnh 12 kiÓu chuyÓn).
(setq lst		; 74 ký tù (c¸c ký tù IN HOA cã dÊu kh«ng viÕt ®­îc b»ng TCVN3 trong Notepad)
(list            
 '("Ç" "\U+1EA7" "a/m/f" "aà")	'("å" "\U+1ED3" "o/m/f" "oà")	'("Ò" "\U+1EC1" "e/m/f" "eà")	'("õ" "\U+1EEB" "/]/f" "öø")
 '("Ê" "\U+1EA5" "a/m/s" "aá") 	'("è" "\U+1ED1" "o/m/s" "oá")	'("Õ" "\U+1EBF" "e/m/s" "eá") 	'("ø" "\U+1EE9" "/]/s" "öù")
 '("Ë" "\U+1EAD" "a/m/j" "aä") 	'("é" "\U+1ED9" "o/m/j" "oä")	'("Ö" "\U+1EC7" "e/m/j" "eä") 	'("ù" "\U+1EF1" "/]/j" "öï")
 '("È" "\U+1EA9" "a/m/r" "aå") 	'("æ" "\U+1ED5" "o/m/r" "oå")	'("Ó" "\U+1EC3" "e/m/r" "eå") 	'("ö" "\U+1EED" "/]/r" "öû")
 '("É" "\U+1EAB" "a/m/x" "aã") 	'("ç" "\U+1ED7" "o/m/x" "oã")	'("Ô" "\U+1EC5" "e/m/x" "eã") 	'("÷" "\U+1EEF" "/]/x" "öõ")
 '("»" "\U+1EB1" "a/w/f" "aè") 	'("ê" "\U+1EDD" "/[/f" "ôø")    
 '("¾" "\U+1EAF" "a/w/s" "aé") 	'("í" "\U+1EDB" "/[/s" "ôù")    
 '("Æ" "\U+1EB7" "a/w/j" "aë") 	'("î" "\U+1EE3" "/[/j" "ôï")    
 '("¼" "\U+1EB3" "a/w/r" "aú") 	'("ë" "\U+1EDF" "/[/r" "ôû")    
 '("½" "\U+1EB5" "a/w/x" "aü") 	'("ì" "\U+1EE1" "/[/x" "ôõ")    
 '("µ" "\U+00E0" "a/f" "aø") 	'("ß" "\U+00F2" "o/f" "oø") 	'("Ì" "\U+00E8" "e/f" "eø") 	'("ï" "\U+00F9" "u/f" "uø")
 '("¸" "\U+00E1" "a/s" "aù") 	'("ã" "\U+00F3" "o/s" "où")	'("Ð" "\U+00E9" "e/s" "eù") 	'("ó" "\U+00FA" "u/s" "uù")
 '("¹" "\U+1EA1" "a/j" "aï") 	'("ä" "\U+1ECD" "o/j" "oï")	'("Ñ" "\U+1EB9" "e/j" "eï") 	'("ô" "\U+1EE5" "u/j" "uï")
 '("¶" "\U+1EA3" "a/r" "aû") 	'("á" "\U+1ECF" "o/r" "oû")	'("Î" "\U+1EBB" "e/r" "eû") 	'("ñ" "\U+1EE7" "u/r" "uû")
 '("·" "\U+00E3" "a/x" "aõ") 	'("â" "\U+00F5" "o/x" "oõ")	'("Ï" "\U+1EBD" "e/x" "eõ") 	'("ò" "\U+0169" "u/x" "uõ")
 '("©" "\U+00E2" "a/m" "aâ") 	'("«" "\U+00F4" "o/m" "oâ")	'("ª" "\U+00EA" "e/m" "eâ") 	'("­" "\U+01B0" "/]" "ö")
 '("¨" "\U+0103" "a/w" "aê") 	'("¬" "\U+01A1" "/[" "ô")  
 '("¡" "\U+0102" "A/W" "AÊ") 	'("¥" "\U+01A0" "/{" "Ô")	'("£" "\U+00CA" "E/M" "EÂ")	'("¦" "\U+01AF" "/}" "Ö")
 '("¢" "\U+00C2" "A/M" "AÂ") 	'("¤" "\U+00D4" "O/M" "OÂ")
 '("ý" "\U+00FD" "y/s" "yù") 	'("û" "\U+1EF7" "y/r" "yû")	'("ü" "\U+1EF9" "y/x" "yõ")	'("þ" "\U+1EF5" "y/j" "î")	'("ú" "\U+1EF3" "y/f" "yø")
 '("Ý" "\U+00ED" "i/s" "í") 	'("Ø" "\U+1EC9" "i/r" "æ")	'("Ü" "\U+0129" "i/x" "ó") 	'("Þ" "\U+1ECB" "i/j" "ò") 	'("×" "\U+00EC" "i/f" "ì")
 '("®" "\U+0111" "/d" "ñ") 	'("§" "\U+0110" "/D" "Ñ")))
;-----
;   				(cons "%%174" "ñ") (cons "%%167" "Ñ") (cons "%%181" "aø") (cons "%%184" "aù")
;   				(cons "%%182" "aû") (cons "%%183" "aõ") (cons "%%185" "aï") (cons "%%169" "aâ")
;   				(cons "%%162" "AÂ") (cons "%%199" "aà") (cons "%%202" "aá") (cons "%%200" "aå")
;   				(cons "%%201" "aã") (cons "%%203" "aä") (cons "%%168" "aê") (cons "%%161" "AÊ")
;   				(cons "%%187" "aè") (cons "%%190" "aé") (cons "%%188" "aú") (cons "%%189" "aü")
;   				(cons "%%198" "aë") (cons "%%204" "eø") (cons "%%208" "eù") (cons "%%206" "eû")
;   				(cons "%%207" "eõ") (cons "%%209" "eï") (cons "%%170" "eâ") (cons "%%163" "EÂ")
;   				(cons "%%210" "eà") (cons "%%213" "eá") (cons "%%211" "eå") (cons "%%212" "eã")
;   				(cons "%%214" "eä") (cons "%%215" "ì") (cons "%%221" "í") (cons "%%216" "æ")
;   				(cons "%%220" "ó") (cons "%%222" "ò") (cons "%%223" "oø") (cons "%%227" "où")
;   				(cons "%%225" "oû") (cons "%%226" "oõ") (cons "%%228" "oï") (cons "%%171" "oâ")
;   				(cons "%%164" "OÂ") (cons "%%229" "oà") (cons "%%232" "oá") (cons "%%230" "oå")
;   				(cons "%%231" "oã") (cons "%%233" "oä") (cons "%%172" "ô") (cons "%%165" "Ô")
;   				(cons "%%234" "ôø") (cons "%%237" "ôù") (cons "%%235" "ôû") (cons "%%236" "ôõ")
;   				(cons "%%238" "ôï") (cons "%%239" "uø") (cons "%%243" "uù") (cons "%%241" "uû")
;   				(cons "%%242" "uõ") (cons "%%244" "uï") (cons "%%173" "ö") (cons "%%166" "Ö")
;   				(cons "%%245" "öø") (cons "%%248" "öù") (cons "%%246" "öû") (cons "%%247" "öõ")
;   				(cons "%%249" "öï") (cons "%%250" "yø") (cons "%%253" "yù") (cons "%%251" "yû")
;   				(cons "%%252" "yõ") (cons "%%254" "î")
;-----

 

Cảm ơn Doan Van Ha mình đã test thử lisp trên bản vẽ của mình. Thấy chuyển từ font xuyêc sang unicode thì được nhưng từ font xuyêc hay Unicode sang font TCVN-3; VNI và ngược lại thì không được thấy font bị chuyển thành kí tự không đọc được.

Đây là file CAD có font xuyêc xem lại giúp mình nhé:http://www.cadviet.c...khoa_locker.dwg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Doan Van Ha    2.676

Tôi đã test trên bản vẽ của bạn. Kết quả OK. Lưu ý rằng: để chuyển tới 1 kiểu font nào (VNI, UNI, TCVNt, TCVNH) thì bạn phải tạo các style tương ứng rồi viết các text mẫu lên bản vẽ. Khi lisp y/c chọn font mẫu thì bạn phải chọn đúng font đó.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Doan Van Ha    2.676

Tôi test trên bản vẽ bạn vừa gởi vẫn OK. Cách làm của tôi như sau:

Command: HA

Chon 1 trong 12 kieu chuyen [V2T/V2U/V2X/T2X/T2V/T2U/U2T/U2X/U2V/X2V/X2T/X2U]: x2t

Chon cac Text XUYEC can chuyen sang TCVN...

Select objects: Specify opposite corner: 19 found (chọn các font xuyec)

Select objects: enter

Chon 1 Text de lay Font TCVN mau: (bấm chọn 1 text mẫu font TCVN hoa hoặc thường)

Nếu bạn làm đúng vậy mà vẫn ERR thì tôi chưa tìm ra nguyên nhân.

Đây là file tôi chuyển thành công (hình màu đỏ):

http://www.cadviet.com/upfiles/3/67029_26898_tai_khoa_locker.dwg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Polyline    18

"Chon 1 trong 12 kieu chuyen [V2T/V2U/V2X/T2X/T2V/T2U/U2T/U2X/U2V/X2V/X2T/X2U]:"
...hic, lựa chọn không đơn giản chút nào, bác HA có thể nâng cấp nó lên hộp thoại cho đỡ đau đầu được không? :)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Doan Van Ha    2.676

@Viettien_03: bạn có thể gởi bản vẽ đó lên để mình kiểm tra xem?

@Polyme: dialog thì tốt hơn nhưng vì lisp này đôi khi còn lỗi nên chưa hoàn thiện được. Cách nhớ 12 loại này rất đơn giản, bởi quy tắc của nó là:

1). Gồm 3 chữ cái, ví dụ U2T.

2). Chữ thứ nhất là ký tự đầu của bảng mã nguồn, ví dụ mã nguồn là Unicode thì nó là U.

3). Chữ thứ 2 là số 2.

4). Chữ thứ ba là ký tự đầu của bảng mã đích, ví dụ mã đích là Tcvn3 thì nó là T.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

Đăng nhập để thực hiện theo  

×