Đến nội dung


Hình ảnh
- - - - -

[Yêu Cầu] Chuyển text từ số thành chữ


  • Please log in to reply
20 replies to this topic

#1 xuandao0708

xuandao0708

    biết lệnh scale

  • Members
  • PipPipPip
  • 140 Bài viết
Điểm đánh giá: 8 (bình thường)

Đã gửi 05 January 2012 - 10:14 AM

Hiện nay do nhu cầu thường xuyên phải chuyển từ số thành chữ nên nhờ mọi người có thể viết dùm lisp chuyển từ text số thành text chữ như trong hình cad dưới đây.
http://www.cadviet.c...3/37805_mau.dwg
Thank mọi người nhiều!
  • 0

#2 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 05 January 2012 - 10:32 AM

Chuyển sang thao tác ở Excel bạn ạ :) Nhiều add-on chuyển số -> chữ lắm ^^
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3 xuandao0708

xuandao0708

    biết lệnh scale

  • Members
  • PipPipPip
  • 140 Bài viết
Điểm đánh giá: 8 (bình thường)

Đã gửi 05 January 2012 - 10:41 AM

Mình cũng từng dùng bên Excel rồi nhưng mất nhiều công là phải ngồi cắt dán bạn ơi, là ít thì được, làm nhiều thì khó kiểm soát được lắm. Do có khi mình phài làm cả ngần ngàn cái nên dễ bị sai. Mong được sự giúp đỡ của mọi người. Cá mơn mọi người nhiều.
  • 0

#4 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 05 January 2012 - 10:57 AM

Các text bạn tách rời chính là vấn đề gây khó khăn đó :)
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#5 avi612

avi612

    biết lệnh move

  • Members
  • PipPipPip
  • 126 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 05 January 2012 - 11:11 AM

Mình cũng hay dùng Add-in để chuyển từ số --> chữ lắm, mình thấy cách này cũng ổn.
Lúc trước cũng có ý định nhờ các sư huynh trên này viết dùm cho một cái lệnh có tác dụng đại khái như là:
Gõ tên lệnh --> Sau đó chọn đối tượng text (số) --> Kết quả (chữ).
Nhưng mà thấy hình như không khả quan mấy nên cũng không yêu cầu, và còn nữa là khi sử dụng CAD ít ai dùng đến thao tác này lắm, chỉ có những ai chuyên lập Dự Toán thì mới dùng nhìu...
  • 0

#6 xuandao0708

xuandao0708

    biết lệnh scale

  • Members
  • PipPipPip
  • 140 Bài viết
Điểm đánh giá: 8 (bình thường)

Đã gửi 05 January 2012 - 11:55 AM

Nếu vậy thì chuyển từ text số sang text chữ là được phải không bạn? Nếu vậy thì chỉ cần chuyển từ text thành số sang thành text chữ thôi, mấy cái khác thì khỏi quan tâm bạn ơi như: 12,345.8 thành Mười hai ngàn ba trăm bốn mươi lăm phẩy tám là được rồi bạn ơi! Thank bạn nhiều.
  • 0

#7 avi612

avi612

    biết lệnh move

  • Members
  • PipPipPip
  • 126 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 05 January 2012 - 12:00 PM

Chắc bạn hiểu sai ý mình rồi. Mình chỉ nói là dùng Add-in chuyển thì được, chứ không nói là chuyển bằng Lisp của CAD.
Vì lúc trước mình cũng gặp trường hợp như bạn nhưng mà không giải quyết được, nên đành chọn cách làm thủ công là: Dùng Add-in bên Excel chuyển từ số -->chữ rồi sau đó chuyển sang CAD (cái này hơi mất thời gian, nhưng rất ok).
  • 0

#8 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 05 January 2012 - 12:02 PM

Mình cũng từng dùng bên Excel rồi nhưng mất nhiều công là phải ngồi cắt dán bạn ơi, là ít thì được, làm nhiều thì khó kiểm soát được lắm. Do có khi mình phài làm cả ngần ngàn cái nên dễ bị sai. Mong được sự giúp đỡ của mọi người. Cá mơn mọi người nhiều.

Hề hề hề,
Bạn xuandao0708 cũng đã có kinh nghiệm trong việc tham gia diễn đàn và việc làm lisp. Do bạn không nói rõ cái text số của bạn được cấu trúc theo kiểu gì mà chỉ nói chung chung như vầy, hơn nữa việc bắt lisp phải thể hiện tiếng Việt quả là một khó khăn không bé. vậy nên mình chỉ gợi ý bạn cách xử lý rồi tùy bạn lựa chọn giải pháp cho thỏa mãn ý thích của bạn nhé.
1/- Kiểm tra text xem có thuần số hay không.
2/- Kiểm tra vị trí dấu thập phân, lấy đó làm chuẩn tách số đã có thành các nhóm text ba chữ số một về phía trước và sau dấu phẩy.
3/- Đọc lần lượt các nhóm số này rồi tạo chuỗi nối các kết quả lại là Ok.
4/- Gửi bạn một khúc code nhap để đọc nhóm chỉ có 1 chữ số. Với cấu trúc tương tự bạn sẽ có code đọc nhóm có hai chữ số và ba chữ số. Lưu ý cách sử dụng hàm cond nữa là Ok.
hy vọng bạn sẽ làm được.


(defun docnhom ( txt / n t1)
(setq n (strlen txt))
(cond
((= n 1) (setq t1 (atof txt)) (cond
((equal t1 0 0.001) (setq doc "Khong"))
((equal t1 1 0.001) (setq doc "Mot"))
((equal t1 2 0.001) (setq doc "Hai"))
((equal t1 3 0.001) (setq doc "Ba"))
((equal t1 4 0.001) (setq doc "Bon"))
((equal t1 5 0.001) (setq doc "Nam"))
((equal t1 6 0.001) (setq doc "Sau"))
((equal t1 7 0.001) (setq doc "Bay"))
((equal t1 8 0.001) (setq doc "Tam"))
((equal t1 9 0.001) (setq doc "Chin"))
(T nil)
))
(T nil)
)
doc
)

  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#9 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 05 January 2012 - 12:17 PM

Nếu vậy thì chuyển từ text số sang text chữ là được phải không bạn? Nếu vậy thì chỉ cần chuyển từ text thành số sang thành text chữ thôi, mấy cái khác thì khỏi quan tâm bạn ơi như: 12,345.8 thành Mười hai ngàn ba trăm bốn mươi lăm phẩy tám là được rồi bạn ơi! Thank bạn nhiều.

Để chỉn chu thì cũng k phải đơn giản, và nếu có thì chắc cũng k free :D
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#10 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 05 January 2012 - 12:25 PM

Để chỉn chu thì cũng k phải đơn giản, và nếu có thì chắc cũng k free :D

Hề hề hề,
Cái gọi là chỉn chu ấy do người dùng tự quyết thôi, còn mình mới nghĩ tòn teng được đến vậy.
Hề hề hề,...
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#11 avi612

avi612

    biết lệnh move

  • Members
  • PipPipPip
  • 126 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 05 January 2012 - 12:30 PM

Nếu mà nghĩ ra được cái Lisp này chắc cũng bể não :)
  • 0

#12 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 05 January 2012 - 01:51 PM

Không phải đến nỗi bể não, nhưng bể… nồi cơm! Bởi vì nó còn kèm theo mấy thứ lằng nhằng nữa như: “Mươi”, “Lăm”, “Tư”, “Linh”…
Trên CV đã có lisp chuyển số nguyên dương, nhưng vẫn chưa ổn, mọi người tham khảo xem. Rất tiếc tôi quên tác giả, srr tác giả. Tôi cũng chỉ test vài trường hợp.

;; free lisp from cadviet.com
(setq
donvi (list " nghin" " trieu" " ty")
lstso (list
(cons "0" " khong")
(cons "1" " mot")
(cons "2" " hai")
(cons "3" " ba")
(cons "4" " bon")
(cons "5" " nam")
(cons "6" " sau")
(cons "7" " bay")
(cons "8" " tam")
(cons "9" " chin")
(cons "0" " muoi"))
s_tram " tram"
s_muoi " muoi"
s_linh " linh"
s_tu " tu"
s_lam " lam")
(defun c:doctext ()
(setq ent (car (entsel "\nHay pick vao text so can doc: "))
tt (entget ent)
gt (cdr (assoc 1 tt))
ok t
lst (mapcar '(lambda (x)
(if (or (> x 57) (< x 48))
(setq ok nil)))
(vl-string->list gt)))
(if ok
(progn
(setq
p (getpoint "\nPick toa do cua text moi: ")
tt (subst (cons 1 (substr (docso gt) 2)) (cons 1 gt) tt)
tt (subst (cons 10 p) (assoc 10 tt) tt))
(entmake tt))
(alert "\nText vua chon khong phai la so nguyen duong")))
(defun docso (str)
(defun doc1 (so)
(cdr (assoc so lstso)))
(defun doc3 (a b c)
(if (= a "0")
(setq a1 "")
(setq a1 (strcat (doc1 a) s_tram)))
(if (= b "0")
(if (/= a "0")
(setq b1 s_linh)
(setq b1 ""))
(if (= b "1")
(setq b1 s_muoi)
(setq b1 (strcat (doc1 B ) s_muoi))))
(setq c1
(cond
((= c "0") "")
((and (= c "4") (/= b "1")) s_tu)
((and (= c "5") (/= b "0")) s_lam)
(t (doc1 c))))
(strcat a1 b1 c1))
(setq lstchar (reverse (mapcar 'chr (vl-string->list str)))
len (length lstchar)
dvht 0
kq ""
strdonvi "")
(while (>= (length lstchar) 3)
(setq
kqht (strcat
(doc3 (nth 2 lstchar) (nth 1 lstchar) (nth 0 lstchar)))
kq (strcat kqht strdonvi kq)
lstchar (cdddr lstchar)
dvht (if (= dvht 2)
0
(1+ dvht))
strdonvi (nth dvht donvi)))
(if (/= (length lstchar) 0)
(progn
(while (< (length lstchar) 3)
(setq lstchar (append lstchar (list "0"))))
(setq kqht (strcat
(doc3 (nth 2 lstchar) (nth 1 lstchar) (nth 0 lstchar)))
kq (strcat kqht (nth dvht donvi) kq))))
kq)

  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#13 xuandao0708

xuandao0708

    biết lệnh scale

  • Members
  • PipPipPip
  • 140 Bài viết
Điểm đánh giá: 8 (bình thường)

Đã gửi 05 January 2012 - 02:00 PM

Hix, các mơn bác PhamThanhBinh và ketxu nhiều, mình có tham gia diễn dàn cad việt 1 thời gian nhưng mình hoàn toàn không biết chút gì về lisp cả, mong mọi người thông cảm. trong file cad của mình gởi lên thì text đó luôn là số vậy thì không cần kiểm tra nữa. Còn cấu trúc text số của mình luôn là xxx,xxx,xxx.x . Theo mình nghĩ thì những gợi ý như của Bác PhamThanhBinh là ok lắm rồi. Mong mọi người có thể viết dùm mình lisp này. Thank mọi người nhiều!
  • 0

#14 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 05 January 2012 - 02:12 PM

Không phải đến nỗi bể não, nhưng bể… nồi cơm! Bởi vì nó còn kèm theo mấy thứ lằng nhằng nữa như: “Mươi”, “Lăm”, “Tư”, “Linh”…
Trên CV đã có lisp chuyển số nguyên dương, nhưng vẫn chưa ổn, mọi người tham khảo xem. Rất tiếc tôi quên tác giả, srr tác giả. Tôi cũng chỉ test vài trường hợp.

E nhớ k nhầm nó thuộc 1 topic đã bị xóa - bác Hoành viết.
Ngoài ra còn vấn đề format bảng mã text, "mốt"...
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#15 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 05 January 2012 - 02:26 PM

E nhớ k nhầm nó thuộc 1 topic đã bị xóa - bác Hoành viết.
Ngoài ra còn vấn đề format bảng mã text, "mốt"...

Topic đó ở đây :
http://www.cadviet.c...?showtopic=2688
  • 0

#16 xuandao0708

xuandao0708

    biết lệnh scale

  • Members
  • PipPipPip
  • 140 Bài viết
Điểm đánh giá: 8 (bình thường)

Đã gửi 05 January 2012 - 02:26 PM

Lisp của DoanVanHa đưa lên thì không đọc được text có dấu phẩy. Tiện thể mình có thể format bản mã text thành Unicode luôn được không?
  • 0

#17 avi612

avi612

    biết lệnh move

  • Members
  • PipPipPip
  • 126 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 05 January 2012 - 02:29 PM

Em text thử rồi, có vấn đề như sau:
Ví dụ
số 3: kết quả là "ba nghin".
số 153682: kết quả : "mot tram nam muoi trieu sau tram tam muoi hai".
Cái này có thể sửa được không.
Mà còn nữa, có tiếng Việt luôn thì ngon quá...
  • 0

#18 xuandao0708

xuandao0708

    biết lệnh scale

  • Members
  • PipPipPip
  • 140 Bài viết
Điểm đánh giá: 8 (bình thường)

Đã gửi 06 January 2012 - 08:03 AM

Mong được mọi người giúp đỡ! Thank mọi người nhiều.
  • 0

#19 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 06 January 2012 - 08:20 AM

Mong được mọi người giúp đỡ! Thank mọi người nhiều.

Hôm qua, anh gia_bach có post bài này :
http://www.cadviet.c...=0
Bạn xem thử
  • 0

#20 xuandao0708

xuandao0708

    biết lệnh scale

  • Members
  • PipPipPip
  • 140 Bài viết
Điểm đánh giá: 8 (bình thường)

Đã gửi 06 January 2012 - 02:05 PM

Thank Tue_VN nhiều, để dùng thử cái của Bác GiâCch up lên. Thank!
  • 0