Đến nội dung


Hình ảnh
- - - - -

hỏi vấn đề tạo liên kết LSP và dialog DCL


  • Please log in to reply
51 replies to this topic

#21 phuonganh

phuonganh

    biết pan

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

Đã gửi 04 December 2010 - 09:28 PM

bạn có thể tham khảo đoạn code thô dưới đây.
bạn cần :
- Tên dialog, key trong DCL không nên có chữ hoa vì dễ quên dẫn tới lỗi.
- Trình bày lại DCL cho đẹp và khoa học.
- Định các biến cục bộ trong hàm
- Định việc lưu hay không lưu các biến đã chọn cho lần gọi hàm kế tiếp.
Chúc bạn thành công

(defun c:dagiac (/)


(setq datalist (list 3 5 7 9 11 13 15 17))
(setq numside 5)
(setq L 30)

(setq id (load_dialog "c:/dagiac.dcl"))
(new_dialog "Polygon" id)

(start_list "numside")
(mapcar 'add_list (mapcar 'itoa datalist))
(end_list)

(set_tile "numside" (itoa (vl-position numside datalist)))
(set_tile "L" (rtos L 2 2))

(action_tile "numside" "(setq numside (nth (atoi $value) datalist))")
(action_tile "L" "(setq L (distof $value))")

(setq sta (start_dialog))
(done_dialog)
(unload_dialog id)

(if (> sta 0)
(progn
(setq a (/ pi numside))
(setq R (/ L 2 (sin a)))

(command "polygon" numside (setq p1 (getpoint "Center point")) "" (polar p1 (* pi 0.5) R))
)
)

)

Có anh em nào sửa lại LSP này được không, LSP này không chạy được nè!
  • 0

#22 npham

npham

    biết lệnh rotate

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

Đã gửi 04 December 2010 - 09:35 PM

Có anh em nào sửa lại LSP này được không, LSP này không chạy được nè!

Chạy OK mà.
cái lisp trên cahỵ kèm với tệp DCL bạn đã post lần trước (Copy vào ổ C:\). Nếu vẫn còn lỗi bạn vui lòng post thông báo lỗi lên nhé.
Polygon : dialog {
label = "POLYGON - dhyl - www.cadviet.com";
: column {
: popup_list {
key = "numside";
label = "So canh da giac deu:";
width = 5;
fixed_width = true;
}
: edit_box {
key = "L";
label = "Chieu dai canh:";
edit_width = 5;
}
: button {
key = "accept";
label = " Dong y ";
is_default = true;
}
}
}

  • 0

#23 phuonganh

phuonganh

    biết pan

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

Đã gửi 05 December 2010 - 05:48 PM

Anh em cho mình hỏi cách gọi file HELP?

Giả sử mình đã soạn sẵn một file Help tên là: ABC.chm
Và trong code DCL đã có:
v.v...
: button {
fixed_width=true;
width=13;
key="help";
label= "&Help";
is_help=true;
}
v.v...


Như vậy, phải viết liên kết LSP làm sao? Để khi nhập lệnh gọi, hộp thoại chương trình hiện lên, khi nhấp vào nút Help, sẽ hiển thị file ABC.chm để người dùng tham khảo chương trình! (giá sử rằng các file *.chm; *.dcl & *.lsp đề đã có mặt trong C>ACAD>Support).

Xin cảm ơn!
  • 0

#24 npham

npham

    biết lệnh rotate

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

Đã gửi 05 December 2010 - 07:05 PM

Anh em cho mình hỏi cách gọi file HELP?

Giả sử mình đã soạn sẵn một file Help tên là: ABC.chm
Và trong code DCL đã có:
v.v...
: button {
fixed_width=true;
width=13;
key="help";
label= "&Help";
is_help=true;
}
v.v...


Như vậy, phải viết liên kết LSP làm sao? Để khi nhập lệnh gọi, hộp thoại chương trình hiện lên, khi nhấp vào nút Help, sẽ hiển thị file ABC.chm để người dùng tham khảo chương trình! (giá sử rằng các file *.chm; *.dcl & *.lsp đề đã có mặt trong C>ACAD>Support).

Xin cảm ơn!


DCL để gọi lệnh thôi mà. Còn help bạn gọi trong LSP.
Vi dụ bạn có 1 hàm (myhelp) thì trong DCL bạn định nghĩa

(action_tile "help" "(myhelp)")

và myhelp có chứa lệnh help của autolisp: (defun myhelp (/) (help [helpfile [topic [command]]]))

Chúc bạn thành công.
  • 1

#25 phuonganh

phuonganh

    biết pan

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

Đã gửi 08 December 2010 - 02:26 PM

Rất cảm ơn sự nhiệt tình của anh npham, nhưng xin lỗi, tôi lại không làm được!!!

Bây giờ ví dụ cụ thể như thế này nhé:

Trước tiên download file này: http://s.cadviet.com/kv

1. Có sẵn một file help (trong file download trên!)
2. Sứa DCL Dialog.dcl hôm trước để có thêm nút help như sau:
(có sẵn trong file download trên!!)

===================dialog.dcl======
Polygon : dialog {
label = "POLYGON - dhyl - www.cadviet.com";
: column {
: popup_list {
key = "numside";
label = "So canh da giac deu:";
width = 5;
fixed_width_font = false;
}
: edit_box {
key = "L";
label = "Chieu dai canh:";
edit_width = 30;
value = "";
}
: row {
: button {
fixed_width=true;
width=13;
key="help";
label= "&Help";
is_help=true;
}
: button {
key = "accept";
label = " Dong y ";
is_default = true;
}
}
}
}
===================dialog.dcl======

Anh npham có thể sửa lại cái LISP: dagiac.lsp (hôm trước anh viết) thêm vào nội dung: khi người dùng nhấp vào nút Help --> màn hình ACAD hiển thị file: Dialog.chm em đã cung cấp ở trên.

Chân thành cảm ơn!
  • 0

#26 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 08 December 2010 - 03:56 PM

Rất cảm ơn sự nhiệt tình của anh npham, nhưng xin lỗi, tôi lại không làm được!!!

Bây giờ ví dụ cụ thể như thế này nhé:

Trước tiên download file này: http://s.cadviet.com/kv

1. Có sẵn một file help (trong file download trên!)
2. Sứa DCL Dialog.dcl hôm trước để có thêm nút help như sau:
(có sẵn trong file download trên!!)

===================dialog.dcl======
Polygon : dialog {
label = "POLYGON - dhyl - www.cadviet.com";
: column {
: popup_list {
key = "numside";
label = "So canh da giac deu:";
width = 5;
fixed_width_font = false;
}
: edit_box {
key = "L";
label = "Chieu dai canh:";
edit_width = 30;
value = "";
}
: row {
: button {
fixed_width=true;
width=13;
key="help";
label= "&Help";
is_help=true;
}
: button {
key = "accept";
label = " Dong y ";
is_default = true;
}
}
}
}
===================dialog.dcl======

Anh npham có thể sửa lại cái LISP: dagiac.lsp (hôm trước anh viết) thêm vào nội dung: khi người dùng nhấp vào nút Help --> màn hình ACAD hiển thị file: Dialog.chm em đã cung cấp ở trên.

Chân thành cảm ơn!


Hề hề hề,
Tham vọng của bạn hình như hơi không nhỏ hỉ????
Theo mình biết thì lisp không hỗ trợ việc mở file *.chm bạn ạ. Do vậy nếu bạn muốn sử dụng hộp thoại để mở file này trước hết bạn hãy tìm cách đưa file đó về dạng *.txt, *.cvs thì họa may mới có thể bạn ạ.
Rất không vui vì chẳng thể giúp bạn hơn.
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.

#27 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 08 December 2010 - 04:07 PM

Hề hề hề,
Tham vọng của bạn hình như hơi không nhỏ hỉ????
Theo mình biết thì lisp không hỗ trợ việc mở file *.chm bạn ạ. Do vậy nếu bạn muốn sử dụng hộp thoại để mở file này trước hết bạn hãy tìm cách đưa file đó về dạng *.txt, *.cvs thì họa may mới có thể bạn ạ.
Rất không vui vì chẳng thể giúp bạn hơn.
Hề hề hề....

Bác đã thử mở file *.chm bằng hàm Help chưa?
  • 0

#28 npham

npham

    biết lệnh rotate

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

Đã gửi 08 December 2010 - 04:17 PM

Hề hề hề,
Tham vọng của bạn hình như hơi không nhỏ hỉ????
Theo mình biết thì lisp không hỗ trợ việc mở file *.chm bạn ạ. Do vậy nếu bạn muốn sử dụng hộp thoại để mở file này trước hết bạn hãy tìm cách đưa file đó về dạng *.txt, *.cvs thì họa may mới có thể bạn ạ.
Rất không vui vì chẳng thể giúp bạn hơn.
Hề hề hề....


Sao không đuwọc mấy bác hè. Cái ni tui vọc hoài mà.

thêm cái này vào lisp của bạn coi. Chú ý đường dẫn nhé. Tui test thử rồi đó

(action_tile "help" "(help \"c:/dagiac/dialog.chm\")")

Tất nhiên bác cũng có thể hiển thị luôn đến chi tiết của file help theo cú pháp: (help [helpfile [topic [command]]]))
  • 2

#29 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 08 December 2010 - 06:02 PM

Rất cảm ơn sự nhiệt tình của anh npham, nhưng xin lỗi, tôi lại không làm được!!!

Bây giờ ví dụ cụ thể như thế này nhé:

Trước tiên download file này: http://s.cadviet.com/kv

1. Có sẵn một file help (trong file download trên!)
2. Sứa DCL Dialog.dcl hôm trước để có thêm nút help như sau:
(có sẵn trong file download trên!!)


Anh npham có thể sửa lại cái LISP: dagiac.lsp (hôm trước anh viết) thêm vào nội dung: khi người dùng nhấp vào nút Help --> màn hình ACAD hiển thị file: Dialog.chm em đã cung cấp ở trên.

Chân thành cảm ơn!

Hề hề hề,
Biếu bạn một cái dùng chơi cho biết nhé.
Cái này cho phép bạn xài cái button Help mà bạn đã mất công tạo ra để xem một phần cái file chm của bạn mà mình chơi kiểu củ chuối là chuyển nó thành file *.txt để đọc và hiển thị từng dòng của nó bằng hàm alert.
Đọc xong dòng nào bạn click vào nút OK trên bảng alert nó sẽ hiển thị dòng tiếp theo cho bạn đọc. Tới khi hết văn bản thì thôi.
Cái củ chuối này chỉ để bạn hình dung thôi chứ chưa phải là cái bạn cần đâu nhé, vì nó có những bất tiện nhất định như chỉ đọc từng dòng, phải đọc hết mới thoát hộp thoại,.... Tuy nhiên nó là cái gợi ý để bạn có thể cải thiện nó ngon hơn. Việc khắc phục những nhược điểm trên không phải là không thể mà chỉ là mình chưa kịp nghĩ ra thôi. Hề hề hề.
Trước khi chạy lisp nhớ copy file văn bản mà mình gửi kèm ở đây vào notepad và đặt tên file là dialog.txt . Sau đó lưu nó vào một thư mục bất kỳ trên ổ đĩa của bạn. Khi lisp hiển thị hộp thoại chọn tên file thì bạn hãy dò đến cái thư mục đó nhé.

1/- File lisp:

(defun c:dagiac (/)

(setq datalist (list 3 5 7 9 11 13 15 17))
(setq numside 5)
(setq L 30)

(setq id (load_dialog "dialog.dcl"))
(new_dialog "Polygon" id)

(start_list "numside")
(mapcar 'add_list (mapcar 'itoa datalist))
(end_list)

(set_tile "numside" (itoa (vl-position numside datalist)))
(set_tile "L" (rtos L 2 2))

(action_tile "numside" "(setq numside (nth (atoi $value) datalist))")
(action_tile "L" "(setq L (distof $value))")
(action_tile "help" "(done_dialog 2)")

(setq sta (start_dialog))
(done_dialog)
(unload_dialog id)

(if (= sta 1)
(progn
(setq a (/ pi numside))
(setq R (/ L 2 (sin a)))
(command "polygon" numside (setq p1 (getpoint "Center point")) "" (polar p1 (* pi 0.5) R))
)
)
(if (= sta 2)
(progn
(setq filename (getfiled "Select a File" "dialog" "txt" 0))
(setq txt " ")
(setq f (open filename "r"))
(while (/= txt nil)

(setq txt (read-line f))
(alert (strcat "\n" txt "\n"))
)
)
)
(close f)
)


2/- file txt:]

Thank you for installing the AutoCAD Express Tools!

The AutoCAD Express Tools are a library of productivity tools designed to help you extend the power of AutoCAD. They are easy to use, easily integrated into your menus and toolbars, and cover a wide range of AutoCAD functions, including dimensioning, drawing, object selection, object modification, and much more.

The AutoCAD Express Tools are unsupported. However, if you have questions or comments about an Express Tool, you can visit the AutoCAD Express Tools newsgroup. In general, these utilities are provided as a courtesy to you by Autodesk and Autodesk does not assume any responsibility for their successful operation.

3/- file dcl

Polygon : dialog {
label = "POLYGON - dhyl - www.cadviet.com";
: column {
: popup_list {
key = "numside";
label = "So canh da giac deu:";
width = 5;
fixed_width_font = false;
}
: edit_box {
key = "L";
label = "Chieu dai canh:";
edit_width = 30;
value = "";
}
: row {
: button {
fixed_width=true;
width=13;
key="help";
label= "&Help";
is_help=true;
}
: button {
key = "accept";
label = " Dong y ";
is_default = true;
}
}
}
}


Hề hề hề, hy vọng rằng bạn sẽ không chán cái củ chuối này...
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#30 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 08 December 2010 - 06:15 PM

Bác đã thử mở file *.chm bằng hàm Help chưa?

Hề hề hề,
Dạ, cái hàm Help này mình chưa vọc tới bao giờ bác ạ. Mình cứ ngở lisp chỉ có hàm open để mở file. Hề hề hề.
Cám ơn bác mình sẽ vọc cái hàm này rồi thử coi sao. Bác chờ xem nhé.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#31 phuonganh

phuonganh

    biết pan

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

Đã gửi 09 December 2010 - 08:14 AM

Hề hề hề,
Biếu bạn một cái dùng chơi cho biết nhé.
Cái này cho phép bạn xài cái button Help mà bạn đã mất công tạo ra để xem một phần cái file chm của bạn mà mình chơi kiểu củ chuối là chuyển nó thành file *.txt để đọc và hiển thị từng dòng của nó bằng hàm alert.
Đọc xong dòng nào bạn click vào nút OK trên bảng alert nó sẽ hiển thị dòng tiếp theo cho bạn đọc. Tới khi hết văn bản thì thôi.
Cái củ chuối này chỉ để bạn hình dung thôi chứ chưa phải là cái bạn cần đâu nhé, vì nó có những bất tiện nhất định như chỉ đọc từng dòng, phải đọc hết mới thoát hộp thoại,.... Tuy nhiên nó là cái gợi ý để bạn có thể cải thiện nó ngon hơn. Việc khắc phục những nhược điểm trên không phải là không thể mà chỉ là mình chưa kịp nghĩ ra thôi. Hề hề hề.
Trước khi chạy lisp nhớ copy file văn bản mà mình gửi kèm ở đây vào notepad và đặt tên file là dialog.txt . Sau đó lưu nó vào một thư mục bất kỳ trên ổ đĩa của bạn. Khi lisp hiển thị hộp thoại chọn tên file thì bạn hãy dò đến cái thư mục đó nhé.

Hề hề hề, hy vọng rằng bạn sẽ không chán cái củ chuối này...


Bác phamthanhbinh thân!

Không biết bác suy nghỉ thế nào mà hướng dẫn tôi như vậy!!!

Trong khi sài ACAD có rất nhiều hộp thoại có nút HELP. Có thể là một file Help định dạng *.chm chứa đựng thật nhiều mục. Khi hộp thoại bạn đang sài, liên quan đến vấn đề gì --> sẽ trích xuất cụ thể vấn đề đó lên để Help cho bạn.

Ví dụ cụ thể: trong Express có sẵn: overkill.lsp & overkill.dcl ---> khi sử dụng lệnh overkill hộp thoại có chứa nút HELP. khi nguời dùng nhấp nút này ---> truy xuất trực tiếp đến phần hướng dẫn sử dụng overkill của file: acet.chm (file này bao gồm rất nhiều hướng dẫn khác)

phuonganh có tham khảo phần LISP của overkill rùi, nhưng cách gọi help rất phức tạp + kiến thức bản thân còn kém wá xá. chưa hiểu được! Nên chỉ mong các anh chỉ cho cách gọi trực tiếp file *.chm lên luôn, không cần truy xuất cụ thể đến vấn đề "con" như vậy có lẽ là sẽ đỡ đi phần rắc rối!

Bi giờ bác Phamthanhbinh đã hiểu được vấn đề chưa?! mặc dù vậy, cá nhân tôi cũng rất trân trọng những hướng dẫn của bác! Thanks away!

===============================================================================


Sao không đuwọc mấy bác hè. Cái ni tui vọc hoài mà.

thêm cái này vào lisp của bạn coi. Chú ý đường dẫn nhé. Tui test thử rồi đó

(action_tile "help" "(help \"c:/dagiac/dialog.chm\")")

Tất nhiên bác cũng có thể hiển thị luôn đến chi tiết của file help theo cú pháp: (help [helpfile [topic [command]]]))


Chân thành cám ơn anh npham! Vì tất cả những chỉ dạy tận tình của anh!
  • 1

#32 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 09 December 2010 - 08:36 AM

Trong khi sài ACAD có rất nhiều hộp thoại có nút HELP. Có thể là một file Help định dạng *.chm chứa đựng thật nhiều mục. Khi hộp thoại bạn đang sài, liên quan đến vấn đề gì --> sẽ trích xuất cụ thể vấn đề đó lên để Help cho bạn.

Ví dụ cụ thể: trong Express có sẵn: overkill.lsp & overkill.dcl ---> khi sử dụng lệnh overkill hộp thoại có chứa nút HELP. khi nguời dùng nhấp nút này ---> truy xuất trực tiếp đến phần hướng dẫn sử dụng overkill của file: acet.chm (file này bao gồm rất nhiều hướng dẫn khác)

phuonganh có tham khảo phần LISP của overkill rùi, nhưng cách gọi help rất phức tạp + kiến thức bản thân còn kém wá xá. chưa hiểu được! Nên chỉ mong các anh chỉ cho cách gọi trực tiếp file *.chm lên luôn, không cần truy xuất cụ thể đến vấn đề "con" như vậy có lẽ là sẽ đỡ đi phần rắc rối!
......

Chào Phương Anh
Tue_NV thấy vấn đề nóđơn giản mà bạn
Này nhé : Bạn muốn gọi trực tiếp file *.chm lên khi nhấn Button Help thì bạn phải thiết lập 1 hành động thực thi khi nhấn button help bằng hàm Action_tile
Thiết lập như thế nào thì bác npham đã hướng dẫn
Bạn thêm dòng
(action_tile "help" "(help \"c:/dagiac/dialog.chm\")")

Trong 1 loạt các hành động
(action_tile "numside" "(setq numside (nth (atoi $value) datalist))")
(action_tile "L" "(setq L (distof $value))")
vô trong Lisp là được và chú ý đến đường dẫn nó nhé. Và đương nhiên nếu dialog.chm nằm trong Support file Search Path thì bạn cũng không cần chỉ thêm đường dẫn cho nó làm chi, tự nó sẽ mở lên cho bạn
  • 1

#33 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 09 December 2010 - 11:57 AM

Bác phamthanhbinh thân!

Không biết bác suy nghỉ thế nào mà hướng dẫn tôi như vậy!!!

Trong khi sài ACAD có rất nhiều hộp thoại có nút HELP. Có thể là một file Help định dạng *.chm chứa đựng thật nhiều mục. Khi hộp thoại bạn đang sài, liên quan đến vấn đề gì --> sẽ trích xuất cụ thể vấn đề đó lên để Help cho bạn.

Ví dụ cụ thể: trong Express có sẵn: overkill.lsp & overkill.dcl ---> khi sử dụng lệnh overkill hộp thoại có chứa nút HELP. khi nguời dùng nhấp nút này ---> truy xuất trực tiếp đến phần hướng dẫn sử dụng overkill của file: acet.chm (file này bao gồm rất nhiều hướng dẫn khác)

phuonganh có tham khảo phần LISP của overkill rùi, nhưng cách gọi help rất phức tạp + kiến thức bản thân còn kém wá xá. chưa hiểu được! Nên chỉ mong các anh chỉ cho cách gọi trực tiếp file *.chm lên luôn, không cần truy xuất cụ thể đến vấn đề "con" như vậy có lẽ là sẽ đỡ đi phần rắc rối!

Bi giờ bác Phamthanhbinh đã hiểu được vấn đề chưa?! mặc dù vậy, cá nhân tôi cũng rất trân trọng những hướng dẫn của bác! Thanks away!

===============================================================================
Chân thành cám ơn anh npham! Vì tất cả những chỉ dạy tận tình của anh!

Hề hề hề,
Vì mình là dân đi mót, mà lại chưa mót được cái củ Help nên chưa biết cách làm mới làm kiểu củ chuối như vầy. Sau khi được các bác Tue_NV và npham hướng dẫn mới mót thêm được một tí của cái củ Help nên làm thử cái này, có nhẽ bạn cũng chả cần nữa xong cũng cứ khoe ra đây để bạn hiểu suy nghĩ của mình ra răng hỉ:
File dcl thì dùng cái bạn làm.
File lisp thì nó như thế này:

(defun c:dagiac (/)

(setq datalist (list 3 5 7 9 11 13 15 17))
(setq numside 5)
(setq L 30)

(setq id (load_dialog "dialog.dcl"))
(new_dialog "Polygon" id)

(start_list "numside")
(mapcar 'add_list (mapcar 'itoa datalist))
(end_list)

(set_tile "numside" (itoa (vl-position numside datalist)))
(set_tile "L" (rtos L 2 2))

(action_tile "numside" "(setq numside (nth (atoi $value) datalist))")
(action_tile "L" "(setq L (distof $value))")
(action_tile "help" "(done_dialog 2)")

(setq sta (start_dialog))
(done_dialog)
(unload_dialog id)

(if (= sta 1)
(progn
(setq a (/ pi numside))
(setq R (/ L 2 (sin a)))
(command "polygon" numside (setq p1 (getpoint "Center point")) "" (polar p1 (* pi 0.5) R))
)
)
(if (= sta 2)
(progn

(help "D:\\Autolisp tu hoc\\Samples\\dialog.chm" )

)
)

)


Bạn lưu ý là cái đường dẫn của mình nó hơi khác do mình nhét tất cả mọi thứ về lisp vào cái thư mục autolisp tu hoc của mình bạn ạ. Hy vọn bạn thông cảm với cái sự dốt của mình hỉ....

@Bác Tue_NV và bác nPham: Cám ơn sự chỉ dẫn của các bác. Tuy nhiên có một vấn đề mình chưa rõ là khi đọc trong help thì thấy cái hàm (help ..... ) này ngoài tham số tên file còn có các tham số như topic và command. Cách sử dụng các tham số này mình chưa rõ lắm (mặc dù đã đọc trong help rồi). Rất mong các bác cho thêm mấy cái ví dụ cụ thể và giải thích thêm để mình vỡ ra.
Tỷ dụ khi mình dùng (help "D:\\Autolisp tu hoc\\Samples\\dialog.chm" "Contents")
Hay khi dùng (help "D:\\Autolisp tu hoc\\Samples\\dialog.chm" "Contents" "HH_DISPLAY_TOPIC")
Thì kết quả đều là:
(Rất tiếc không upload được hình do trang upload của diễn đàn có vấn đề, mình sẽ upload ngay khi có thể, mong các bác đừng giận)
http://www.mediafire...fd24m37ejpt9ikb
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#34 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 09 December 2010 - 11:16 PM

Theo mình biết thì lisp không hỗ trợ việc mở file *.chm bạn ạ.

Không những mở được CHM mà lisp còn có thể mở được rất nhiều định dạng file khác mà Hệ điều hành có thể hiểu được bác ạ. Em nhớ có lần tra cứu chức năng các hàm em đã thử dùng 1 hàm để open 1 file jpg và sử dụng chính hàm đó để khởi động 1 phần mềm nghe nhạc trong máy. rất tiếc em không nhớ đã lấy hàm đó ở đâu và bây giờ em không có cad để test. để hôm nào về cty em kiểm tra lại
  • 1

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#35 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1435 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 10 December 2010 - 07:52 AM

Hề hề hề,
...............
Tuy nhiên có một vấn đề mình chưa rõ là khi đọc trong help thì thấy cái hàm (help ..... ) này ngoài tham số tên file còn có các tham số như topic và command. Cách sử dụng các tham số này mình chưa rõ lắm (mặc dù đã đọc trong help rồi). Rất mong các bác cho thêm mấy cái ví dụ cụ thể và giải thích thêm để mình vỡ ra.
Tỷ dụ khi mình dùng (help "D:\\Autolisp tu hoc\\Samples\\dialog.chm" "Contents")
Hay khi dùng (help "D:\\Autolisp tu hoc\\Samples\\dialog.chm" "Contents" "HH_DISPLAY_TOPIC")
Thì kết quả đều là:..........

Chào các bác
Các “topic và command” này liên quan đến cấu trúc của file Help mà bác gọi.
Nó phụ thuộc vào anh "thiết kế" bố trí các liên kết (Link) đến các “topic và command” trong file như thế nào.
Mỗi nguời có 1 "xì-tin" khác nhau, nên thuờng các đuờng link này cũng khác nhau. Mặc dù là có cách để xem các đuờng link này, nhưng thực tế thì ít khi dùng đến (vì đó là việc riêng của anh "thiết kế" file Help đó).
Dĩ nhiên với file của mình tạo ra thì đuơng nhiên mình phải hiểu rõ các đuờng link này.

VD : các bác sửa lại đuờng dẫn file *.chm cho phù hợp.
- với file Help của Express Tools
(help "e:\\ExpressTool.chm" "html\\bscale") sẽ mở file Help của Express Tools với topic Block Scale
(help "e:\\ExpressTool.chm" "html\\blockreplace") → topic : Block Replace

- với file Help của VBA Cad 2010
(help "e:\\acad2010auto.chm" "idh_intersectwith") → topic : intersectwith của file acad2010auto.chm
(help "e:\\acad2010auto.chm" "idh_selectionset_object") → topic : selectionset của file acad2010auto.chm
  • 2

#36 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 10 December 2010 - 08:17 AM

Không những mở được CHM mà lisp còn có thể mở được rất nhiều định dạng file khác mà Hệ điều hành có thể hiểu được bác ạ. Em nhớ có lần tra cứu chức năng các hàm em đã thử dùng 1 hàm để open 1 file jpg và sử dụng chính hàm đó để khởi động 1 phần mềm nghe nhạc trong máy. rất tiếc em không nhớ đã lấy hàm đó ở đâu và bây giờ em không có cad để test. để hôm nào về cty em kiểm tra lại

Bạn hãy thử lệnh ai_editcustfile thử xem nhé.
Nó mở các file lên nếu biết đường dẫn cho nó
  • 2

#37 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 993 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 06 September 2014 - 03:46 PM

Chào các bác! Cho em hỏi ké một chút về liênkeersst DCL

Em đang làm 1 lisp để ghi chú Text lên màn hình với lựa chọn nhập nội dung, cao chữ, Layer, TextStyle, Color

Có một điều sau đây em chưa biết cách làm:

1. Sau mỗi lần chạy thì start_list của em lại nhân đôi lên (em biết nguyên nhân do (mapcar 'add_list  khi chưa kiểm duyệt) )

2. Hộp thoại màu sắc em vẫn chưa biết cách tạo

3. Em vẫn chưa gán được biến ở List layer và list TextStyle vào Text, nếu bỏ kiểu Layer,  TextStyle thì chạy ngon ạ.

 

Đây là Mã Code của em

GHICHU
: dialog
{
label = "Ch\U+01B0\U+01A1ng tr\U+00ECnh ghi ch\U+00FA";
	: boxed_column
	{
		: edit_box
		{
			label = "Nh\U+1EADp t\U+00EAn c\U+1EA7n vi\U+1EBFt ghi ch\U+00FA";
			key = "Text_ghichu";
			edit_width = 30;
			alignment = left;
			edit_limit = 50;
			value = "Vi\U+1EBFt ghi ch\U+00FA v\U+00E0o \U+0111\U+00E2y";

		}
		: edit_box
		{
			label = "Nh\U+1EADp chi\U+1EC1u cao ch\U+1EEF:";
			key = "Height_Text";
			edit_width = 3.0;
			alignment = left;
			edit_limit = 5;
			value = 1;
		}


	}
	: boxed_column
	{
        	: row
		{
		 : column
		 {
		      : popup_list
		      {
		          label       = "L\U+1EF1a ch\U+1ECDn Layer" ;
		          key         = "LTSLAY" ;
		          edit_width  = 50 ;  
		          list        = "" ;
		          alignment = left;
		      }
		      : popup_list
		      {
		          label       = "L\U+1EF1a ch\U+1ECDn TextStyle" ;
		          key         = "LTSTEXTSTYLE" ;
		          edit_width  = 50 ;  
		          list        = "" ;
		          alignment = left;
		      }
		 }
		}
	}	
	: boxed_column
	{
		: button
		{
			label = "Pick >>>";
			key = "Accept";
			is_default = true;
			fixed_width = centered;
		}
		: button
		{
			label = "H\U+1EE7y";
			key = "Cancel";
			is_default = false;
			fixed_width = centered;
		}

	}

}
(defun C:GCD ( / dcl_id  LtsLayer LtsStyle h Text_ghichu )
(setq dcl_id (load_dialog "GHICHU.DCL"))
(if (not (new_dialog "GHICHU" dcl_id))
 (exit)
)

  
(action_tile "Text_ghichu"  "(setq TextGhiChu $value)")
(mode_tile "Text_ghichu" 2)
(action_tile "Height_Text"  "(setq h $value)")
(mode_tile "Height_Text" 2)
(action_tile "Text_ghichu"  "(setq TextGhiChu $value)")

(setq LtsLayer (Getlayer))
(start_list "LTSLAY")
(mapcar 'add_list  LtsLayer)
(end_list)
(if #CurLay
	(set_tile "LTSLAY"  (setq CurLay #CurLay))
	(set_tile "LTSLAY"  (setq CurLay "0"))
)
(action_tile "LTSLAY" "(setq LayerText $value)")


(setq LtsStyle (GetTextStyle))
(start_list "LTSTEXTSTYLE")
(mapcar 'add_list  LtsStyle)
(end_list)
  
(if #CurStyle
	(set_tile "LTSTEXTSTYLE"  (setq CurStyle #CurStyle))
	(set_tile "LTSTEXTSTYLE"  (setq CurStyle "Standard"))
)
(action_tile "LTSTEXTSTYLE" "(setq TextStyle $value)")
  

(action_tile "Accept" "(setq UseButton 1)(done_dialog)")
(action_tile "Cancel" "(setq UseButton 2)(done_dialog)")

(start_dialog)
(unload_dialog dcl_id)
(if (= UseButton 1)
	(progn
		(GCT TextGhiChu h LayerText TextStyle)
	)
)
(if (= UseButton 2)
	(alert (strcat "\nTho\U+00E1t"))
)


(Princ)
)




(defun Getlayer ( / lyr)
(vlax-for lyr
	(vla-get-layers
		(vla-get-activedocument
			(vlax-get-acad-object)
	        )
        )		
(setq LstLayer (cons (vla-get-name lyr) LstLayer))
)
LstLayer
)




(defun GetTextStyle ( / styl_)
(vlax-for styl_
	(vla-get-textstyles
		(vla-get-activedocument
			(vlax-get-acad-object)
	        )
        )		
(setq LstTextStyle (cons (vla-get-name styl_) LstTextStyle))
)
LstTextStyle
)


(defun GCT(TextGhiChu h LayerText TextStyle / i Olmode Gocxoay);;;;GHI CHU TEXT
(setq i 0)
(while
  	(setvar "OSMODE" 0)
	(setq P1 (Getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m ch\U+00E8n TEXT ghi ch\U+00FA: :  "))
	(setq P2 (Getpoint  P1 "\nChon huong ghi chu TEXT:  "))
  	(setq Gocxoay (Angle (trans P1 1 0)
                             (trans P2 1 0)
		      )
	)
	(command "Style" "Times New Roman"  "Times New Roman"  0 1 0 "" "" "" )
	(entmake (list  (cons 0 "TEXT") (cons 10 P1) (cons 8 LayerText) (cons 40 (atof h)) (cons 50 Gocxoay) (cons 7 TextStyle) (cons 1 TextGhiChu)))
  	(setq i (1+ i))
)
)

;;;-------------------------------------------------------------


Nhờ các bác chỉnh sửa giúp

Em cảm ơn nhiều


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#38 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 06 September 2014 - 04:11 PM

Câu 1:

Đặt biến LstLayer là cục bộ trong hàm GetLayer.


  • 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.


#39 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 993 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 06 September 2014 - 04:17 PM

Đặt biến LstLayer là cục bộ trong hàm GetLayer.

Dạ, ok đã thành công ạ.

Em hóng tiếp ạ


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#40 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 06 September 2014 - 04:31 PM

Câu 3: cũng đặt biến cục bộ tương tự cho LstTextStyle trong hàm GetTextStyle.

Câu 2: chưa hiểu.


  • 0

* 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.