Đến nội dung


Hình ảnh
* * * - - 3 Bình chọn

Hướng dẫn lập trình Lisp


  • Please log in to reply
497 replies to this topic

#41 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 02 February 2009 - 11:42 PM

Bác ssp cho em hỏi đoạn code này có nghĩa như thế nào,các hàm if, not ,tblsearch có nghĩa là như thế nào???
(defun layer_style ()
(if (not (tblsearch "layer" "7TEXT_45" ))
(command "-layer" "new" "7TEXT_45" "color" 45 "7TEXT_45" ""))

Nghĩa cả đoạn lệnh này như sau:
-tblsearch là tìm tất cả các bảng, "layer" là bảng layer, "7TEXT_45" là tên layer -> tức là tìm layer "7TEXT_45" trong tất cả các layer. Nếu thấy thỏa mãn thì kết quả trả về "T" và nếu không tìm thấy thì kết quả trả về "nil"
-not là lấy phủ định lại kết quả vừa ra
- if là lệnh rẽ nhánh nếu đúng thì thực hiện lệnh (command "-layer" "new" "7TEXT_45" "color" 45 "7TEXT_45" "") còn nếu sai thì bỏ qua
=> Túm lại dịch đoạn này theo "văn học" như sau: tìm layer 7TEXT_45 trong số các layer trên bản vẽ, nếu không thấy ( (tblsearch "layer" "7TEXT_45" ) trả về nil và (not nil)=T ) thì thực hiện lệnh tạo mới layer 7TEXT_45 và gán cho nó màu số 45.
(if T ->(command "-layer" "new" "7TEXT_45" "color" 45 "7TEXT_45" "")
nil -> bỏ qua
)

  • 0

#42 vminh_ct

vminh_ct

    biết lệnh stretch

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

Đã gửi 03 February 2009 - 02:57 PM

Nghĩa cả đoạn lệnh này như sau:
-tblsearch là tìm tất cả các bảng, "layer" là bảng layer, "7TEXT_45" là tên layer -> tức là tìm layer "7TEXT_45" trong tất cả các layer. Nếu thấy thỏa mãn thì kết quả trả về "T" và nếu không tìm thấy thì kết quả trả về "nil"
-not là lấy phủ định lại kết quả vừa ra
- if là lệnh rẽ nhánh nếu đúng thì thực hiện lệnh (command "-layer" "new" "7TEXT_45" "color" 45 "7TEXT_45" "") còn nếu sai thì bỏ qua
=> Túm lại dịch đoạn này theo "văn học" như sau: tìm layer 7TEXT_45 trong số các layer trên bản vẽ, nếu không thấy ( (tblsearch "layer" "7TEXT_45" ) trả về nil và (not nil)=T ) thì thực hiện lệnh tạo mới layer 7TEXT_45 và gán cho nó màu số 45.
(if T ->(command "-layer" "new" "7TEXT_45" "color" 45 "7TEXT_45" "")
nil -> bỏ qua
)

hi hi, mình cũng bắt đầu lơ tơ mơ hiểu dần rồi,mong các bro chỉ trỏ nhiều hơn,thanks nataca nhé.
  • 0
" Sống trên đời cần có 1 tấm lòng,để gió mãi cuốn đi"

#43 vminh_ct

vminh_ct

    biết lệnh stretch

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

Đã gửi 03 February 2009 - 04:09 PM

nataca ơi cho mình hỏi mình viết lại đoạn lisp này
(defun layer_style ()
(if (not (tblsearch "layer" "1text_23" ))
(command "-layer" "new" "1text_23" "color" 1 "1text_23" "")))
appload được rồi mà khi bật hộp thoại layer properties manager sao trong hộp thoại không tạo được layer 1text_23 với color là 1 được nhỉ.
  • 0
" Sống trên đời cần có 1 tấm lòng,để gió mãi cuốn đi"

#44 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 03 February 2009 - 04:28 PM

nataca ơi cho mình hỏi mình viết lại đoạn lisp này
(defun layer_style ()
(if (not (tblsearch "layer" "1text_23" ))
(command "-layer" "new" "1text_23" "color" 1 "1text_23" "")))
appload được rồi mà khi bật hộp thoại layer properties manager sao trong hộp thoại không tạo được layer 1text_23 với color là 1 được nhỉ.

- Một là bỏ hàm defun đi, chỉ để :
(if (not (tblsearch "layer" "1text_23" ))
(command "-layer" "new" "1text_23" "color" 1 "1text_23" ""))

- Hai là để nguyên nhưng khi ap xong phải đánh dòng lệnh (layer_style)
- Ba là đổi (defun layer_style () thành (defun C:layer_style () sau đó đánh lệnh layer_style
=> Đoạn lisp bạn làm có ý nghĩa là tạo ra hàm con với tên hàm là layer_style . Nhưng để hàm con này chạy bạn phải thêm C: trước tên hàm để chuyển tên hàm đó thành lệnh đánh trên dòng command. Còn nếu bạn muốn chỉ cần ap lisp trên vào là tự động chạy (tức là tạo ra layer 1text_23 và gán màu 1) thì bạn bỏ dòng (defun layer_style () và bỏ dấu ) cuối cùng đi.
  • 0

#45 vminh_ct

vminh_ct

    biết lệnh stretch

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

Đã gửi 03 February 2009 - 10:09 PM

hi hi, 1 câu hỏi mà có 3 đáp án được đưa ra,đáp án nào cũng đúng,xin phép cho nataca 9,5 nhé,thanks ,có gì lai xin được thỉnh giáo
  • 0
" Sống trên đời cần có 1 tấm lòng,để gió mãi cuốn đi"

#46 nguyenkhoadung98

nguyenkhoadung98

    biết vẽ pline

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

Đã gửi 19 February 2009 - 09:28 AM

Em dow ve rồi pác à! :cheers: để tối nay về em luyện, em cảm ơn pác nhá, em mới nhờ mà đã có người giúp rồi, ôi!sống trên đời quý nhau cái tình người là thế. Bữa nào rảnh em với pác đi làm vài ve nhẩy !!! :cheers:

hic sao em kô down đc vậy bác ơi, nhờ bác nào up lại cho e với :s_big:
  • 0

#47 tuan_thietkedien

tuan_thietkedien

    biết lệnh mirror

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

Đã gửi 28 February 2009 - 11:59 AM

Xin các bác pro chỉ giáo nếu mình sử dụng SSget thì mình sẽ chọn được 1 tập hợp đủ thứ như Line, Text, Circle,... Vậy mình sử dụng vòng lặp thế nào để mình xét từng thằng Line, Text, Circle và tiếp đó là xét từng thằng con của nó như Color Line, Color Text, Color Circle,...
Xin cám ơn rất nhiều.
  • 0

#48 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 28 February 2009 - 02:20 PM

Xin các bác pro chỉ giáo nếu mình sử dụng SSget thì mình sẽ chọn được 1 tập hợp đủ thứ như Line, Text, Circle,... Vậy mình sử dụng vòng lặp thế nào để mình xét từng thằng Line, Text, Circle và tiếp đó là xét từng thằng con của nó như Color Line, Color Text, Color Circle,...
Xin cám ơn rất nhiều.

Chào bạn Tuan_thietkedien,
Chưa rõ ý bạn hỏi lắm.
1/- Nếu bạn muốn chọn tập hợp các line, Text, circle, arc .... riêng rẽ thì bạn sử dụng lệnh (ssget "x" (filter list)) trong đó filter list là một association list trong list các mã dxf của các đối tượng bạn chọn. Ví dụ : hàm (ssget "x" '( 0. "LINE")) sẽ cho bạn tất cả các line có trên bản vẽ.
2/- Nếu bạn muốn tách riêng các line, text, circle, arc,... có trong một tập hợp các đối tượng đã có để xử lý tiếp thì bạn có thể sử dụng các hàm điếu kiện như if, while, ... Ví dụ bạn muốn tách các line trong một tập hợp các đối tượng có sẵn ss chẳng hạn, sử dụng hàm while như sau: (while (= (cdr (assoc 0 (entget (ssname ss i)))) "LINE") (....................) (setq i (1+ i))) trong đó (....) là hàm mà bạn định dùng để xử lý. Và tất nhiên trước khi dùng hàm while bạn phải xác định biến i (setq i 0)
3/- Để xử lý các thuộc tính của các đối tượng này bạn cần biết rõ các mã DXF của chúng. Điều này không hề dễ vì rất hay nhầm lẫn. Cách tốt nhất là bạn nên có một bảng mã DXF của các đối tượng này để tham khảo khi cần xử lý bạn ạ. Mình vẫn phải xài như vậy thôi chứ nhớ thì không xuể được. Ví dụ mã DXF thể hiện màu của line là 62, tuy nhiên nếu line có màu là bylayer thì mã này sẽ không xuất hiện trong list mã dxf của nó.
4/- Bạn nên thực hành dần dần từng bước một , từng nhiệm vụ cụ thể cho từng đối tượng cụ thể để hiểu rõ hơn các bước xử lý, đừng gộp cả lại sẽ rất khó thấy được vấn đề. Sau khi đã giải quyết tốt từng vấn đề hãy tiến hành ghép các nhiệm vụ với nhau bạn ạ.

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

#49 tuan_thietkedien

tuan_thietkedien

    biết lệnh mirror

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

Đã gửi 28 February 2009 - 03:58 PM

Chào bạn Tuan_thietkedien,
Chưa rõ ý bạn hỏi lắm.
1/- Nếu bạn muốn chọn tập hợp các line, Text, circle, arc .... riêng rẽ thì bạn sử dụng lệnh (ssget "x" (filter list)) trong đó filter list là một association list trong list các mã dxf của các đối tượng bạn chọn. Ví dụ : hàm (ssget "x" '( 0. "LINE")) sẽ cho bạn tất cả các line có trên bản vẽ.
2/- Nếu bạn muốn tách riêng các line, text, circle, arc,... có trong một tập hợp các đối tượng đã có để xử lý tiếp thì bạn có thể sử dụng các hàm điếu kiện như if, while, ... Ví dụ bạn muốn tách các line trong một tập hợp các đối tượng có sẵn ss chẳng hạn, sử dụng hàm while như sau: (while (= (cdr (assoc 0 (entget (ssname ss i)))) "line") (....................) (setq i (1+ i))) trong đó (....) là hàm mà bạn định dùng để xử lý. Và tất nhiên trước khi dùng hàm while bạn phải xác định biến i (setq i 0)
3/- Để xử lý các thuộc tính của các đối tượng này bạn cần biết rõ các mã DXF của chúng. Điều này không hề dễ vì rất hay nhầm lẫn. Cách tốt nhất là bạn nên có một bảng mã DXF của các đối tượng này để tham khảo khi cần xử lý bạn ạ. Mình vẫn phải xài như vậy thôi chứ nhớ thì không xuể được. Ví dụ mã DXF thể hiện màu của line là 62, tuy nhiên nếu line có màu là bylayer thì mã này sẽ không xuất hiện trong list mã dxf của nó.
4/- Bạn nên thực hành dần dần từng bước một , từng nhiệm vụ cụ thể cho từng đối tượng cụ thể để hiểu rõ hơn các bước xử lý, đừng gộp cả lại sẽ rất khó thấy được vấn đề. Sau khi đã giải quyết tốt từng vấn đề hãy tiến hành ghép các nhiệm vụ với nhau bạn ạ.

Chúc bạn vui và thành công.


Chào bạn phamthanhbinh
Ý của mình như số 2 và 3 bạn đã nêu đó, số 1 mình đã hiểu cách lọc rồi còn cách lọc rắc rối hơn thì mình chưa làm được nên mới hỏi mọi người. Để mình thử làm theo hướng dẫn của bạn ha, nếu khó quá mình sẽ phải làm từ từ như ý số 4 bạn đã nêu.
Cám ơn thanhbinh nhiều nha.
Chúc bạn cuối tuần vui vẻ.
:undecided:
  • 0

#50 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 28 February 2009 - 04:37 PM

Chào bạn phamthanhbinh
Ý của mình như số 2 và 3 bạn đã nêu đó, số 1 mình đã hiểu cách lọc rồi còn cách lọc rắc rối hơn thì mình chưa làm được nên mới hỏi mọi người. Để mình thử làm theo hướng dẫn của bạn ha, nếu khó quá mình sẽ phải làm từ từ như ý số 4 bạn đã nêu.
Cám ơn thanhbinh nhiều nha.
Chúc bạn cuối tuần vui vẻ.
:undecided:

Bạn Tuan_thietkedien ơi,
Mình sai rồi. Trong hàm While mình đã ví dụ ở trên, bạn phải đổi chuỗi "line" thành chuỗi "LINE" mới đúng vì hàm (= ..... ) so sánh các chuỗi phải giống hệt nhau cả về case của nó. Hàm (cdr (assoc 0 (.......))) sẽ trả về chuỗi toàn ký tự in hoa thôi bạn ạ.
Xin lỗi bạn vì mình cũng mới phát hiện ra lỗi này.
Chúc bạn vui.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#51 tiger99

tiger99

    biết vẽ line

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

Đã gửi 11 March 2009 - 04:47 PM

Tự tay mình lập một chương trình Lisp có gì khác so với nhờ ai đó làm? Chưa cần xét kết quả, điểm khác nhau rất cơ bản là bạn sẽ có được cái cảm giác rất là khoái chí (không thể diễn tả) khi chạy thử chương trình.
Ssg lập topic này không ngoài mục đích tạo điều kiện cho các bạn tự mình tìm hiểu và khám phá cái cảm giác "khoái chí không thể diễn tả" nói trên.
Với tinh thần "Share is Receive", ssg cũng mong các bạn đã thành thạo Lisp quan tâm giúp đỡ các bạn mới để cộng đồng Lisp của CadViet ngày càng đông vui và tạo được nhiều chương trình hữu ích.
Để bắt đầu, ssg post lại một bài viết cũ, nhưng có lẽ vẫn còn mới đối với một số bạn. Hy vọng sẽ giúp được chút gì đó cho các bạn mới tiếp cận với Lisp:

http://www.cadviet.c...les/Relax_1.zip

Download, giải nén rồi đọc file *.doc

trong bài của bác có cái hàn polar em ko hiểu bác có thể giải thích nó được ko??
  • 0

#52 tucdrom

tucdrom

    — T — U — N — A —

  • Members
  • PipPipPipPipPipPip
  • 497 Bài viết
Điểm đánh giá: 642 (tốt)

Đã gửi 11 March 2009 - 06:30 PM

trong bài của bác có cái hàn polar em ko hiểu bác có thể giải thích nó được ko??


*Có 2 phương thức nhập toạ độ điểm trong Cad:

-Nhập toạ độ theo hệ toạ độ Đêcac,nhập theo toạ độ X,Y(trong mặt phẳng),hoặc X,Y,Z (trong không gian)

-Nhập theo toạ độ cực:toạ độ của 1 điểm xác định theo khoảng cách từ điểm đó đến gốc toạ độ (0,0) và góc quay từ điểm đó so với trục X.Và hàm Polar là hàm xác định toạ độ của điểm theo toạ độ cực

Ví dụ :M ( a b ) thì a:khoảng cách từ điểm M đến gốc toạ độ (0,0)
b:góc xoay của điểm M so với trục X
  • 0

Email : anhtu2101@gmail.com



 


#53 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 12 March 2009 - 05:31 PM

trong bài của bác có cái hàn polar em ko hiểu bác có thể giải thích nó được ko??

(setq p2 (polar p1 a r)) -> trả về điểm p2, có:
- Góc định hướng của p1p2 so với phương ngang là a (radian)
- Khoảng cách p1p2 = r
  • 0

#54 tuan_thietkedien

tuan_thietkedien

    biết lệnh mirror

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

Đã gửi 21 March 2009 - 10:33 AM

Các bác pro xin hướng dẫn em làm cái lísp sau
Em muốn số hóa nội dung trong text, cụ thể như A thành 1, B thành 2, C thành 3, D thành 4, E thành 5.
Đầu tiên mình chọn text
Lấy nội dung text
N : lấy số lượng chữ trong text

Vậy làm thế nào để mình xét từng chữ trong N, và cứ gặp ABCDE sẽ chuyển thành 12345.

Ví dụ : Text nội dung là CAD-2008 sau khi chạy lisp chuyển thành 314-2008.

Xin cám ơn nhiều.
  • 0

#55 tucdrom

tucdrom

    — T — U — N — A —

  • Members
  • PipPipPipPipPipPip
  • 497 Bài viết
Điểm đánh giá: 642 (tốt)

Đã gửi 21 March 2009 - 10:51 AM

Các bác pro xin hướng dẫn em làm cái lísp sau
Em muốn số hóa nội dung trong text, cụ thể như A thành 1, B thành 2, C thành 3, D thành 4, E thành 5.
Đầu tiên mình chọn text
Lấy nội dung text
N : lấy số lượng chữ trong text

Vậy làm thế nào để mình xét từng chữ trong N, và cứ gặp ABCDE sẽ chuyển thành 12345.

Ví dụ : Text nội dung là CAD-2008 sau khi chạy lisp chuyển thành 314-2008.

Xin cám ơn nhiều.

Bác thử sài lệnh Find(Find and Replace) của Cad xem sao?
:undecided:
  • 2

Email : anhtu2101@gmail.com



 


#56 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 21 March 2009 - 12:15 PM

Các bác pro xin hướng dẫn em làm cái lísp sau
Em muốn số hóa nội dung trong text, cụ thể như A thành 1, B thành 2, C thành 3, D thành 4, E thành 5.
Đầu tiên mình chọn text
Lấy nội dung text
N : lấy số lượng chữ trong text

Vậy làm thế nào để mình xét từng chữ trong N, và cứ gặp ABCDE sẽ chuyển thành 12345.

Ví dụ : Text nội dung là CAD-2008 sau khi chạy lisp chuyển thành 314-2008.

Xin cám ơn nhiều.

Bạn tìm hiểu function vl-string-translate (lật Help ra xem) sẽ có câu trả lời.
Muốn cho code hay hơn, tìm hiểu thêm functions asciichr

@tucdrom
Bạn Tuấn muốn hỏi về lập trình chứ không phải dùng lệnh CAD, hai việc ấy khác nhau nhiều lắm.
Lệnh CAD: Find và Replace xong rồi thôi
Lisp: Trước và sau khi Find and Replace, chương trình có thể thực hiện tự động nhiều việc khác nữa, tuỳ ý đồ người lập trình...
  • 0

#57 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 21 March 2009 - 01:19 PM

Muốn cho code hay hơn, tìm hiểu thêm functions asciichr

Chào bạn TuanThietkedien
Mình gợi ý thế này, bạn xây dựng chương trình thử xem nhé :
1. Đọc chuỗi (dùng getstring và strcase)
2. Dùng strlen tính số chữ trong chuỗi. (biến n)
3. Khởi tạo biến đếm i=1
3. Dùng vòng lặp while (:undecided:
  • 0

#58 tuan_thietkedien

tuan_thietkedien

    biết lệnh mirror

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

Đã gửi 21 March 2009 - 03:20 PM

Bạn tìm hiểu function vl-string-translate (lật Help ra xem) sẽ có câu trả lời.
Muốn cho code hay hơn, tìm hiểu thêm functions asciichr

@tucdrom
Bạn Tuấn muốn hỏi về lập trình chứ không phải dùng lệnh CAD, hai việc ấy khác nhau nhiều lắm.
Lệnh CAD: Find và Replace xong rồi thôi
Lisp: Trước và sau khi Find and Replace, chương trình có thể thực hiện tự động nhiều việc khác nữa, tuỳ ý đồ người lập trình...


Chào anh SSG
Trước tiên em đã dùng thử vl-string-translate, và viết được 2 cái lisp sau
1. Lisp chuyển ABC thành 123
(defun c:hk ( / e d nd td )
(setq
e (car(entsel))
d (entget e)
nd (cdr(assoc 1 d))
td (vl-string-translate "ABC" "123" nd)
d (subst (cons 1 td) (assoc 1 d) d)
)
(entmod d)
(princ)
)

2. Lisp chuyển ABC tiếng Anh thành ABC tiếng Nhật.
(defun c:hk ( / e d nd td )
(setq
e (car(entsel))
d (entget e)
nd (cdr(assoc 1 d))
td (vl-string-translate "ABC" "ABC" nd)
d (subst (cons 1 td) (assoc 1 d) d)
)
(entmod d)
(princ)
)

Lúc đầu em nghĩ nếu chuyển được ABC thành 123 thì cũng có thể chuyển được ABC tiếng Anh thành ABC tiếng Nhật. Nhưng cái lisp thứ 2 không dùng được. Xin bác cho em thêm ý kiến.
Tham khảo 2 kiểu chữ tiếng Anh và tiếng Nhật
http://www.cadviet.c...Drawing2_12.dwg ( 3 chữ CAD nhỏ là kiểu tiếng Nhật )

@Tue_NV : mình cám ơn bạn đã góp ý nhé.
  • 0

#59 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 21 March 2009 - 05:29 PM

Chào anh SSG
Trước tiên em đã dùng thử vl-string-translate, và viết được 2 cái lisp sau
1. Lisp chuyển ABC thành 123

(defun c:hk ( / e d nd td )
(setq
e (car(entsel))
d (entget e)
nd (cdr(assoc 1 d))
td (vl-string-translate "ABC" "123" nd)
d (subst (cons 1 td) (assoc 1 d) d)
)
(entmod d)
(princ)
)

2. Lisp chuyển ABC tiếng Anh thành ABC tiếng Nhật.
(defun c:hk ( / e d nd td )
(setq
e (car(entsel))
d (entget e)
nd (cdr(assoc 1 d))
td (vl-string-translate "ABC" "ABC" nd)
d (subst (cons 1 td) (assoc 1 d) d)
)
(entmod d)
(princ)
)

Lúc đầu em nghĩ nếu chuyển được ABC thành 123 thì cũng có thể chuyển được ABC tiếng Anh thành ABC tiếng Nhật. Nhưng cái lisp thứ 2 không dùng được. Xin bác cho em thêm ý kiến.
Tham khảo 2 kiểu chữ tiếng Anh và tiếng Nhật
http://www.cadviet.c...Drawing2_12.dwg ( 3 chữ CAD nhỏ là kiểu tiếng Nhật )

@Tue_NV : mình cám ơn bạn đã góp ý nhé.

Bạn tuan_thietkedien ơi,
Bạn suy luận vậy là hơi máy móc rồi. Bạn nhớ rằng hàm vl-string-translate là hàm dịch theo chuỗi ký tự một cách máy móc thôi. Nghĩa là cái gì bạn đã liệt kê trong chuỗi mẫu sẽ được dịch thành chuỗi kết quả tương ứng trong chuỗi đích và chỉ có vậy. Các ký tự khác không được liệt kê ra là nó mù tịt chả hiểu đâu và sẽ giữ nguyên như bản gốc, chả dịch diếc gì sốt.
Mình chả biết cái font tiếng Nhật nó tròn méo ra răng, nhưng chắc hẳn là nó cũng khá củ chuối vì nó thuộc loại chữ tượng hình mà. Có khi một chữ cái của nó lại phải gõ tới dăm ba ký tự ấy chứ, thế thì chắc là cái hàm vl-string-translate nó ngoẻo là đúng thôi bạn ạ. Ấy là cái cách nghĩ hơi cùn của mình có gì bạn đừng giận nha.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#60 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 22 March 2009 - 02:30 PM

Có khi một chữ cái của nó lại phải gõ tới dăm ba ký tự ấy chứ, thế thì chắc là cái hàm vl-string-translate nó ngoẻo là đúng thôi bạn ạ.

Chào bạn Tuanthietkedien.
Chữ cái của nó nhiều hơn dăm ba kí tự nhiều bác Bình à
Đó chính là nguyên nhân dẫn đến Lisp của bạn không chạy được.

Bạn gửi cái file của bạn lên đây có 2 chữ CAD-2008 gồm 2 dòng.
Bạn nói rằng :

Lúc đầu em nghĩ nếu chuyển được ABC thành 123 thì cũng có thể chuyển được ABC tiếng Anh thành ABC tiếng Nhật.

Phải chăng dòng đầu CAD-2008 là chữ tiếng Anh. Dòng thứ 2 : CAD-2008 là chữ Tiếng Nhật.
Và ý của bạn muốn biến chữ CAD tiếng Anh thành chữ CAD tiếng Nhật.
Và đoạn lệnh (vl-string-translate "ABC" "ABC" nd) này phải chăng "ABC" là chữ Tiếng Anh; "ABC" chính là chữ "ABC" tiếng Nhật.
Mong bạn hãy giải thích thật rõ ràng thì mọi người mới có thể giúp bạn được.
Chào bạn.
  • 0