Đến nội dung


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

Giao diện hộp thoại trong AutoLisp


  • Please log in to reply
208 replies to this topic

#61 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 05 June 2008 - 05:43 PM

Chào ssg, mình cũng đã làm như bạn hương dẫn rồi mà khi tạo ra *.txt ---> nhấn OK xong là file *.txt lại biến mất là sao hả bạn, và mình cũng chả thấy file *.slb đâu cả. Nếu tạo ra file *.txt bàng thủ công thi tạo ra *.slb bằng cách nào, mình không rõ lắm về khoản nay.
Khi dùng lệnh SLB2 xong thì máy báo thế này thì là xong rồi hả bạn:
Command: SLB2
shell
OS Command: slidelib D:\1AVUONG\LISP DOWN\Lisp VAL 1.0\symbol\dong
vat\VUONG222.slb < D:\1AVUONG\LISP DOWN\Lisp VAL 1.0\symbol\dong vat\mylist.txt
Command: T
khi xong rồi nó lại có dòng command: T là sao? Bạn chỉ giúp mình với, mình cảm ơn

Bạn thử lại với bài viết mới nhất của mình trong topic này (thời gian: Mar 19 2008, 03:11 PM)
  • 1

#62 nguyenhoangvuong83

nguyenhoangvuong83

    biết vẽ circle

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

Đã gửi 06 June 2008 - 08:29 AM

Bạn thử lại với bài viết mới nhất của mình trong topic này (thời gian: Mar 19 2008, 03:11 PM)

Cảm ơn bạn ssg nhiều, mình đã ngâm cứu mất hơn ....1 buổi và cũng đã làm được rồi. Mình cũng hiểu về lisp sơ sơ thôi, nói chung là cũng như trẻ con tập nói vậy
Phải công nhận là 4rum Cadviet có nhiều cao thủ thật, mình học hỏi được rất nhiều từ diễn đàn này. Cảm ơn tất cả anh em, chúc anh em thành công hơn trong cuộc sống.
  • 0
CHình đã gửiDVietHình đã gửi

#63 ghost8.3

ghost8.3

    biết dimdiameter

  • Members
  • PipPipPipPipPip
  • 335 Bài viết
Điểm đánh giá: 162 (tàm tạm)

Đã gửi 11 June 2008 - 12:52 PM

Bạn thử lại với bài viết mới nhất của mình trong topic này (thời gian: Mar 19 2008, 03:11 PM)

Mình là mem mới của Cadviet, mình có cái này muốn hỏi mà Search hoài không thấy nên mạn phép post vô đây. Lisp tính diện tích hay tính chiều dài đối tượng khi ra kết quả thì phải bật F2 lên mới biết được, kể thì cũng hơi bất tiện thật (vi mình thường không dùng thanh Command). Mình xin hỏi các AE Pro là để kết quả hiển thị lên trong bảng Autocad mes.... thì trong Lisp mình làm cách nào. Mình hơi yếu về Lisp. Cảm ơn trước
Cadviet thật là bổ ích, cảm ơn các admin
  • 0

Hình đã gửi


#64 MANHHUNGXDA

MANHHUNGXDA

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 926 Bài viết
Điểm đánh giá: 458 (tốt)

Đã gửi 11 June 2008 - 12:59 PM

Mình là mem mới của Cadviet, mình có cái này muốn hỏi mà Search hoài không thấy nên mạn phép post vô đây. Lisp tính diện tích hay tính chiều dài đối tượng khi ra kết quả thì phải bật F2 lên mới biết được, kể thì cũng hơi bất tiện thật (vi mình thường không dùng thanh Command). Mình xin hỏi các AE Pro là để kết quả hiển thị lên trong bảng Autocad mes.... thì trong Lisp mình làm cách nào. Mình hơi yếu về Lisp. Cảm ơn trước
Cadviet thật là bổ ích, cảm ơn các admin

Bác thích xuất ra ngoai màn hình à
OK
tặng bác.
http://www.cadviet.c...iles/MHPro2.lsp
  • 1
Hãy ước cho trọn 1 ước mơ!

#65 MANHHUNGXDA

MANHHUNGXDA

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 926 Bài viết
Điểm đánh giá: 458 (tốt)

Đã gửi 11 June 2008 - 01:38 PM

Bác thích xuất ra ngoai màn hình à
OK
tặng bác.
http://www.cadviet.com/upfiles/MHPro2.lsp

à mà bác chỉnh sửa cho nó đúng ý bác!
  • 1
Hãy ước cho trọn 1 ước mơ!

#66 ghost8.3

ghost8.3

    biết dimdiameter

  • Members
  • PipPipPipPipPip
  • 335 Bài viết
Điểm đánh giá: 162 (tàm tạm)

Đã gửi 11 June 2008 - 01:44 PM

Bác thích xuất ra ngoai màn hình à
OK
tặng bác.
http://www.cadviet.com/upfiles/MHPro2.lsp

Cảm ơn bạn MANHHUNG, lisp ban cho cũng gần giống như lisp tính diện tích rồi chèn kết quả váo đó. Ý mình muốn hỏi là: muốn kết quả hiển thị trong bảng Autocad Mesage cho trực quan hơn và khỏi mất công xoá kết quả chèn vào màn hình. (hơi lười)
mình ví dụ nhé: trong Lisp tính tổng chiều dài các đối tượng, sau khi chon xong --> enter sẽ báo trong bảng autocad message là có bao nhiêu đối tượng được chọn, và tổng chiều dài là bao nhiêu. mong các anh chỉ bảo thêm.
cảm ơn sự nhiệt tình của các bạn
  • 0

Hình đã gửi


#67 ghost8.3

ghost8.3

    biết dimdiameter

  • Members
  • PipPipPipPipPip
  • 335 Bài viết
Điểm đánh giá: 162 (tàm tạm)

Đã gửi 11 June 2008 - 02:55 PM

à mà bác chỉnh sửa cho nó đúng ý bác!

Cảm ơn bạn MANHHUNG, qua lisp của bạn mình cũng đã điều chỉnh lisp của mình được rồi.
  • 0

Hình đã gửi


#68 MANHHUNGXDA

MANHHUNGXDA

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 926 Bài viết
Điểm đánh giá: 458 (tốt)

Đã gửi 11 June 2008 - 03:00 PM

Cảm ơn bạn MANHHUNG, qua lisp của bạn mình cũng đã điều chỉnh lisp của mình được rồi.

hình như có phiên bản ghost11.0 rồi mà bạn vẫn còn là ghost8.3, phải chăng đó có 1 ý nghĩa?
  • 0
Hãy ước cho trọn 1 ước mơ!

#69 ghost8.3

ghost8.3

    biết dimdiameter

  • Members
  • PipPipPipPipPip
  • 335 Bài viết
Điểm đánh giá: 162 (tàm tạm)

Đã gửi 11 June 2008 - 04:54 PM

hình như có phiên bản ghost11.0 rồi mà bạn vẫn còn là ghost8.3, phải chăng đó có 1 ý nghĩa?

À, ghost thì bạn biết rồi, mình thích cái tên này và cả chương trình này nữa. nó rất tiện dụng trong giai đoạn máy tính nhiều virus như hiện nay, còn 8.3 chẳng qua là năm sinh của mình thôi. dùng thế cho dễ nhớ và cho giống với phiên bản của ghost ấy mà. chắc anh em diễn đàn lớn tuổi hơn mình nhiều. mong anh em cadviet chỉ bảo cho em vơi :s_big:
  • 0

Hình đã gửi


#70 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 June 2010 - 12:08 PM

Các bác cho Tue_NV hỏi chổ này với :

Tue_NV thử tạo 1 popup_list trong 1 dialog.
-> Kết quả là muốn hiện tên của Phần tử của 1 List ten trong AutoCAD mesage
Ví dụ mình chọn "so 2" trong dialog thì chỉ hiện ra "2" trong AutoCAD mesage (hàm alert)
Tue_NV muốn kết quả là "so 2" trong AutoCAD mesage (chính là phần tử "so 2" trong list ten)

Khi trở lại dialog thì không biết làm sao mà Dialog lại hiện "so 0" trong popup_list.
Tue_NV muốn nó trở lại chính phần tử mà mình đã chọn trước đó (tức chính là "so 2" đã chọn trước đó) nhưng không được.

Đây là file .dcl

(defun c:lb (/ dcl_id ten phepchon)
(vl-load-com)
(while (not (vl-position phepchon '(0 1)))
(setq dcl_id (load_dialog "listbox.dcl"))

(IF (not (new_dialog "LB" dcl_id))
(exit)
)
(setq ten '("so 0" "so 1" "so 2" "so 3" "so 4" "so 5"
"so 6" "so 7" "so 8" "so 9" "so 10" "so 11"
"so 12" "so 13" "so 14"))
(start_list "C")
(mapcar 'add_list ten)
(end_list)
(action_tile "cancel" "(done_dialog 0)")
(action_tile "accept" "(done_dialog 1)" )
(action_tile "C" "(setq a $value) ")
(action_tile "th" "(set_tile \"C\" a) (done_dialog 3)")

(setq phepchon (start_dialog))
(COND
((= phepchon 3) (progn (alert a) (set_tile "C" a)))
)
);while
(unload_dialog DCL_ID)

(princ)
)

Kiến thức về .dcl còn hạn chế nhiều quá. Mong nhận được sự giúp đỡ của các bác.
Tue_NV xin chân thành cảm ơn.
  • 0

#71 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 10 June 2010 - 11:31 AM

Các bác cho Tue_NV hỏi chổ này với :

Tue_NV thử tạo 1 popup_list trong 1 dialog.
-> Kết quả là muốn hiện tên của Phần tử của 1 List ten trong AutoCAD mesage
Ví dụ mình chọn "so 2" trong dialog thì chỉ hiện ra "2" trong AutoCAD mesage (hàm alert)
Tue_NV muốn kết quả là "so 2" trong AutoCAD mesage (chính là phần tử "so 2" trong list ten)

Khi trở lại dialog thì không biết làm sao mà Dialog lại hiện "so 0" trong popup_list.
Tue_NV muốn nó trở lại chính phần tử mà mình đã chọn trước đó (tức chính là "so 2" đã chọn trước đó) nhưng không được.

Đây là file .dcl


(defun c:lb (/ dcl_id ten phepchon)
(vl-load-com)
(while (not (vl-position phepchon '(0 1)))
(setq dcl_id (load_dialog "listbox.dcl"))

(IF (not (new_dialog "LB" dcl_id))
(exit)
)
(setq ten '("so 0" "so 1" "so 2" "so 3" "so 4" "so 5"
"so 6" "so 7" "so 8" "so 9" "so 10" "so 11"
"so 12" "so 13" "so 14"))
(start_list "C")
(mapcar 'add_list ten)
(end_list)
(action_tile "cancel" "(done_dialog 0)")
(action_tile "accept" "(done_dialog 1)" )
(action_tile "C" "(setq a $value) ")
(action_tile "th" "(set_tile \"C\" a) (done_dialog 3)")

(setq phepchon (start_dialog))
(COND
((= phepchon 3) (progn (alert a) (set_tile "C" a)))
)
);while
(unload_dialog DCL_ID)

(princ)
)

Kiến thức về .dcl còn hạn chế nhiều quá. Mong nhận được sự giúp đỡ của các bác.
Tue_NV xin chân thành cảm ơn.

Chào bác Tue_NV,
Trước hết phải nói ngay là mình không dám múa rìu qua mắt thợ đâu. Song theo như mình hiểu một chút về hộp thoại thì:
1/- Vì sao bác phải sử dụng nút (button) th ở đây???
2/- Cái kết quả có trong alert của CAD là giá trị của a mà a theo dịnh nghĩa của bác chỉ là giá trị của hộp thoại tức là giá trị của done_dialog chứ đâu phải giá trị của biến lựa chọn ????
3/- Trong code lisp của bác chưa thấy có hàm lưu biến để lưu lại giá trị của biến được lựa chọn.
4/- Code lisp của bác mình thấy hơi khó hiểu hơn code của ông Jeffy Sander khi sử dụng với hộp thoại popup list.
Bác có thể tham khảo cái cách làm của ông Jeffy Sander ở đây nhé
http://www.cadviet.c...l_language4.doc
Các phần chữ Việt là do mình tự dịch thôi, đúng sai bác bỏ qua nhé, phần gốc tiếng Anh là của ổng. Với trình độ của bác mình tin bác sẽ thấu hiểu nó tốt hơn mình và chắc chắn nó có thể đáp ứng cái yêu cầu mà bác đặt ra.
Riêng về việc khi mở lại hộp thoại thì các giá trị chọn lần trước đó sẽ hiển thị chứ không phải giá trị đầu tiên trong list thì mình cũng không chắc chắn lắm về khả năng giải quyết do chưa hiểu rõ những điều ông ấy viết. Bác thử thay thế cái khoảng trăng ở dòng value bằng tên biến mà bác định đặt cho cái giá trị bác chọn xem nhé.
Chúc bác thành công.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#72 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 10 June 2010 - 03:29 PM

Các bác cho Tue_NV hỏi chổ này với :

Tue_NV thử tạo 1 popup_list trong 1 dialog.
-> Kết quả là muốn hiện tên của Phần tử của 1 List ten trong AutoCAD mesage
Ví dụ mình chọn "so 2" trong dialog thì chỉ hiện ra "2" trong AutoCAD mesage (hàm alert)
Tue_NV muốn kết quả là "so 2" trong AutoCAD mesage (chính là phần tử "so 2" trong list ten)

Khi trở lại dialog thì không biết làm sao mà Dialog lại hiện "so 0" trong popup_list.
Tue_NV muốn nó trở lại chính phần tử mà mình đã chọn trước đó (tức chính là "so 2" đã chọn trước đó) nhưng không được.

Đây là file .dcl


(defun c:lb (/ dcl_id ten phepchon)
(vl-load-com)
(while (not (vl-position phepchon '(0 1)))
(setq dcl_id (load_dialog "listbox.dcl"))

(IF (not (new_dialog "LB" dcl_id))
(exit)
)
(setq ten '("so 0" "so 1" "so 2" "so 3" "so 4" "so 5"
"so 6" "so 7" "so 8" "so 9" "so 10" "so 11"
"so 12" "so 13" "so 14"))
(start_list "C")
(mapcar 'add_list ten)
(end_list)
(action_tile "cancel" "(done_dialog 0)")
(action_tile "accept" "(done_dialog 1)" )
(action_tile "C" "(setq a $value) ")
(action_tile "th" "(set_tile \"C\" a) (done_dialog 3)")

(setq phepchon (start_dialog))
(COND
((= phepchon 3) (progn (alert a) (set_tile "C" a)))
)
);while
(unload_dialog DCL_ID)

(princ)
)

Kiến thức về .dcl còn hạn chế nhiều quá. Mong nhận được sự giúp đỡ của các bác.
Tue_NV xin chân thành cảm ơn.

Lâu lắm ssg mới vào lại diễn đàn thăm anh em!
Trước hết, ssg xin có lời chân thành cám ơn Tue_NV đã rất nhiệt tình để tạo nên "sức sống" cho diễn đàn Lisp suốt thời gian qua. Bản thân ssg, vì hoàn cảnh riêng, không thể tham gia thường xuyên với anh em được. Ssg đã đề nghị anh Hoành "xóa tên" ssg khỏi danh sách Mod, hoặc chí ít cũng đừng đưa nick lên ở đầu box "Điều hành: ssg, ...." nữa. Ghi như vậy mà cả mấy tháng chẳng thấy tăm hơi khó coi lắm! Nhân đây, ssg khẩn thiết mong anh Hoành xem xét lại nguyện vọng trên của ssg một lần nữa.

Về dialog, bạn Tue_NV xem thử code sửa như sau có đúng ý bạn không?

(defun c:lb2 (/ dcl_id ten phepchon a)
(if (not a) (setq a "0"))
(vl-load-com)
(while (not (vl-position phepchon '(0 1)))
(setq dcl_id (load_dialog "listbox.dcl"))
(if (not (new_dialog "LB" dcl_id)) (exit))
(setq ten '("so 0" "so 1" "so 2" "so 3" "so 4" "so 5"
"so 6" "so 7" "so 8" "so 9" "so 10" "so 11"
"so 12" "so 13" "so 14"))
(start_list "C")
(mapcar 'add_list ten)
(end_list)
(action_tile "cancel" "(done_dialog 0)")
(action_tile "accept" "(done_dialog 1)" )
(action_tile "C" "(setq a $value) ")
(action_tile "th" "(done_dialog 3)")
(set_tile "C" a)
(setq phepchon (start_dialog))
(if (= phepchon 3) (alert (nth (atoi a) ten)))
);while
(unload_dialog DCL_ID)
(princ)
)

  • 1

#73 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 11 June 2010 - 01:24 PM

Lâu lắm ssg mới vào lại diễn đàn thăm anh em! :cheers:
................

Về cơ bản Lisp của bác SSG đã giải quyết đuợc vấn đề.

Xin bổ sung vài ý :
1. Kiểu và giá trị trả về của popup_list : (action_tile "C" "(setq a $value) ")
- Kiểu của $valueSTR (string)
- Giá trị trả về $valuethứ tự của danh sách trong popup_list.
Vd : "0" , "1", "2", .... "n"
Do đó để lấy đuợc "Phần tử trong List ten", phải nhờ đến hàm (nth n lst), truớc đó phải đổi kiểu của biến a ra kiểu số nguyên.
(nth (atoi a) lst) -> ph/tử thứ a trong list ten

2. Khi trở lại dialog thì muốn nó trở lại chính phần tử đã chọn trước đó
dùng hàm (set_tile key value) để gán giá trị cho dialog
(set_tile "C" a)
Để tránh lỗi khi lần đầu gọi dialog (lúc này giá trị của biến a=nil), gán cho biến a giá trị "0"
(setq a "0")

3. Trong T/hợp này giá trị của biến ten không thay đổi do đó nên đưa ra ngoài vòng lặp WHILE
tuơng tự với dòng (load_dialog "listbox.dcl")

Gửi Tue_NV code có thay thế nội dung biến ten bằng danh sách các Layer trong bản vẽ.
(defun c:lb3 (/ a dcl_id phepchon ten)
(defun GetLayerLst(/ tbl tbl_lst)
(setq tbl (tblnext "layer" 1) tbl_lst nil)
(while tbl
(setq tbl_lst (cons (cdr (assoc 2 tbl)) tbl_lst))
(setq tbl (tblnext "layer")) )
(vl-sort tbl_lst '<))
;main
(setq dcl_id (load_dialog "listbox.dcl"))
(setq ten (GetLayerLst)
a "0")

(while (not (vl-position phepchon '(0 1)))
(if (not (new_dialog "LB" dcl_id))
(exit))
(start_list "C")
(mapcar 'add_list ten)
(end_list)
(set_tile "C" a)
(action_tile "C" "(setq a $value)")
(action_tile "cancel" "(done_dialog 0)")
(action_tile "accept" "(done_dialog 1)" )
(action_tile "th" "(done_dialog 3)")
(setq phepchon (start_dialog))
(if (= phepchon 3)
(alert (nth (atoi a) ten)))
);while
(unload_dialog DCL_ID)
(if (= phepchon 1) (alert (strcat "Ban da chon Layer : "(nth (atoi a) ten))))
(princ))

  • 1

#74 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 11 June 2010 - 02:25 PM

Cảm ơn anh gia_bach, bác ssg, bác PhamThanhBinh thật nhiều. :cheers:
Tue_NV đã hiểu được bản chất vấn đề rồi. Lời giải thích của anh gia_bach rất cụ thể, chi tiết.
Các bác cho Tue_NV hỏi thêm 1 vấn đề về cách tạo file *chm hoặc *.hlp như thế nào ạ?

Bạn unzip file này, copy vào thư mục gốc của acad:

http://www.cadviet.com/upfiles/mcvhelp.zip

Sau đó gõ biểu thức lisp sau tại dòng nhắc Command sẽ thấy cái "hay hơn nhiều" nói trên:

(help "mcvhelp.chm")

Muốn biết cách tạo *chm hoặc *.hlp, bạn tìm hiểu trình "Microsoft HTML Help Image Editor" hoặc nhiều trình khác có chức năng tương tự. Cái này khá phổ biến, bạn tìm đâu cũng có.

Tue_NV đã lên mạng tìm kiếm trình "Microsoft HTML Help Image Editor" và download về nhưng không biết cách sử dụng.
Giao diện lúc đầu vào thì chương trình có nút open để mở -> Nhưng khi mở thì nó yêu cầu mở file ảnh Bitmap (*.bmp,*.dib) thôi. Đây là giao diện của nó và cách sử dụng thì Tue_NV chưa được biết :
Hình đã gửi

Tue_NV muốn tạo file Help để phục vụ cho việc giúp đỡ (Help) được tốt hơn. Thể hiện như file mcvhelp.chm của bác ssg hay là file help trong bộ ACV của bác NguyenHoanh

Rất mong các bác có kinh nghiệm về vấn đề này chia sẻ 1 chút kinh nghiệm cách tạo file Help
Xin chân thành cảm ơn các bác. :s_big:
  • 0

#75 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 11 June 2010 - 03:21 PM

.......
Các bác cho Tue_NV hỏi thêm 1 vấn đề về cách tạo file *chm hoặc *.hlp như thế nào ạ?
Tue_NV đã lên mạng tìm kiếm trình "Microsoft HTML Help Image Editor"
........

Không phải "Microsoft HTML Help Image Editor" mà là Microsoft HTML Help Workshop trong đó bao gồm : "HTML Help Image Editor" và "HTML Help Workshop", sau khi cài đặt dùng "HTML Help Workshop".

hoặc :
- AM WORD2CHM tham khảo bài của lamtecco2 trên CadViet : http://www.cadviet.c...?showtopic=2337

- WinCHM Pro : http://www.download....winchm-pro.aspx

- PowerCHM : http://www.download....werchm-5-7.aspx
  • 1

#76 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 16 June 2010 - 06:38 AM

..............
Gửi Tue_NV code có thay thế nội dung biến ten bằng danh sách các Layer trong bản vẽ.

(defun c:lb3 (/ a dcl_id phepchon ten)
(defun GetLayerLst(/ tbl tbl_lst)
(setq tbl (tblnext "layer" 1) tbl_lst nil)
(while tbl
(setq tbl_lst (cons (cdr (assoc 2 tbl)) tbl_lst))
(setq tbl (tblnext "layer")) )
(vl-sort tbl_lst '<))
;main
(setq dcl_id (load_dialog "listbox.dcl"))
(setq ten (GetLayerLst)
a "0")

(while (not (vl-position phepchon '(0 1)))
(if (not (new_dialog "LB" dcl_id))
(exit))
(start_list "C")
(mapcar 'add_list ten)
(end_list)
(set_tile "C" a)
(action_tile "C" "(setq a $value)")
(action_tile "cancel" "(done_dialog 0)")
(action_tile "accept" "(done_dialog 1)" )
(action_tile "th" "(done_dialog 3)")
(setq phepchon (start_dialog))
(if (= phepchon 3)
(alert (nth (atoi a) ten)))
);while
(unload_dialog DCL_ID)
(if (= phepchon 1) (alert (strcat "Ban da chon Layer : "(nth (atoi a) ten))))
(princ))

Cảm ơn anh gia_bach thật nhiều.
Tue_NV còn 1 vấn đề này nữa ạ :
Sau khi tạo 1 popup_list trong dialog : đó là danh sách tên các Layer thì phát sinh thêm 1 vấn đề nữa là Tue_NV muốn tạo thêm 1 popup_list nữa. Popup_list này chứa thuộc tính Color và Linetype từ tên Layer mà ta đã chọn ở trên.
Kết quả là trong dialog có 2 Popup_list. Một popup_list thể hiện tên Layer. Sau khi mình chọn tên Layer ở popup_list đầu thì popup_list thứ 2 tự động cập nhật thuộc tính Color và Linetype vào.
Đây là file .dcl
////////file dcl : Listbox.dcl
LB : dialog {
label = "Layer va thuoc tinh Color , Linetype ";
:boxed_row {
label = "Layer va thuoc tinh Color , Linetype ";
width = 50;
: row {
: column {

: popup_list {
label = "Layer_Name ";
key = "LA";
allow_accept = true;
}

: popup_list {
label = "Color and Linetype";
key = "T";
allow_accept = true;
}

}
}
}
ok_cancel; //OK and Cancel Buttons
}
Việc tạo list ten Layer và add vào popup_list thì như anh gia_bach đã hướng dẫn và Tue_NV đã hiểu, nhưng còn việc chọn 1 phần tử trong popup_list 1 để các thuộc tính tự động cập nhật vào popup_list 2 thì Tue_NV chưa biết cách

Minh họa theo hình vẽ cụ thể sau :
Hình đã gửi
2 : chính là số màu của Layer
Continuous : chính là Linetype

Rất mong sự giúp đỡ của anh gia_bach và các bác.
Tue_NV xin chân thành cảm ơn.
  • 0

#77 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 16 June 2010 - 08:08 AM

Cảm ơn anh gia_bach thật nhiều.
Tue_NV còn 1 vấn đề này nữa ạ :
Sau khi tạo 1 popup_list trong dialog : đó là danh sách tên các Layer thì phát sinh thêm 1 vấn đề nữa là Tue_NV muốn tạo thêm 1 popup_list nữa. Popup_list này chứa thuộc tính Color và Linetype từ tên Layer mà ta đã chọn ở trên.
Kết quả là trong dialog có 2 Popup_list. Một popup_list thể hiện tên Layer. Sau khi mình chọn tên Layer ở popup_list đầu thì popup_list thứ 2 tự động cập nhật thuộc tính Color và Linetype vào.
.............

Bạn cần viết hàm đáp ứng với sự kiện USER click vào popup_list tên Layer.
(action_tile "C" "(setq a $value)(GetColorLineType)(UpdatePopup_list2)")

1. từ biến a ta có thể tính đuợc tên Layer (Layer_name).

2. hàm (GetColorLineType) trả về màu và kiểu đuờng nét của Layer tưong ứng.
+ màu : (cdr (assoc 62 (tblsearch "layer" Layer_name)))
+ kiểu đuờng nét : (cdr (assoc 6 (tblsearch "layer" Layer_name)))

3. hàm (UpdatePopup_list2) : có màu (color) và kiểu đuờng nét (linetype), bạn có thể chuyển qua kiểu danh sách và cập nhật trên popup_list thứ 2.
(start_list "Popup_list2")
(mapcar 'add_list (list color linetype))
(end_list)

Vài dòng, hy vọng hữu ích với bạn.
  • 1

#78 dkkx3a

dkkx3a

    biết lệnh trim

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

Đã gửi 21 June 2010 - 09:09 PM

Chào các bác trên diễn đàn, có chút thắc mắc mong giải đáp: Em có tạo được một số tiện ích dùng hộp thoại, nhưng khi sử dụng thì em không hiểu lý do vì sao khi dùng ở máy mình thì hộp thoại khá cân đối, mang sang máy khác hoặc dùgn các CAD khác đời thì đôi khi cái hộp thoại nó bị kéo dài ra trông rất xấu, đôi khi các nút button kích thước cũng khác nhau, mình không hiểu...
Mong các bác trên diễn đàn giải đáp hộ là phải giới hạn bằng cách nào.
@Bonus: nhờ các bác giải thích tí về loại:
+ Spacer_0; Spacer_1;
+ Sự khác nhau giữa đối tượng image và image_button;
Cảm ơn các bác.
  • 0
TỰ SỰ
Biển vào chiều buồn giữa cô liêu
Sóng vỗ bờ bạc đầu con nước
Khi biển động như lòng ta chợt động
Biển ồn ào nhưng thực rất dịu êm.......

#79 dkkx3a

dkkx3a

    biết lệnh trim

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

Đã gửi 22 June 2010 - 05:08 PM

Các bác đâu rùi, giải thích hộ em với, đang bó "bột" cái này mừ !
  • 0
TỰ SỰ
Biển vào chiều buồn giữa cô liêu
Sóng vỗ bờ bạc đầu con nước
Khi biển động như lòng ta chợt động
Biển ồn ào nhưng thực rất dịu êm.......

#80 dkkx3a

dkkx3a

    biết lệnh trim

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

Đã gửi 29 June 2010 - 04:43 PM

Nghỉ xem WC 5 phút giải đáp với các bác ơi, Các cao thủ đau hết rồi ta, bế quan luyện công hết nà tết em gòi...............
  • 0
TỰ SỰ
Biển vào chiều buồn giữa cô liêu
Sóng vỗ bờ bạc đầu con nước
Khi biển động như lòng ta chợt động
Biển ồn ào nhưng thực rất dịu êm.......