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

Nút button trong Dialog

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

Mình tạo một nút button trong dialog và khi mình gán action cho key của nút gặp một số vấn đề mong các bạn giải đáp.

- Mình muốn khi ấn vào nút, Cad cho mình chọn một điểm trên bản vẽ và quay lại hộp hội thoại.

Mình mới chỉ bắt được điểm nhưng không quay lại được hội thoại mong các bạn chỉ giáo.

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
Mình tạo một nút button trong dialog và khi mình gán action cho key của nút gặp một số vấn đề mong các bạn giải đáp.

- Mình muốn khi ấn vào nút, Cad cho mình chọn một điểm trên bản vẽ và quay lại hộp hội thoại.

Mình mới chỉ bắt được điểm nhưng không quay lại được hội thoại mong các bạn chỉ giáo.

Chào bạn 18011985,

Bạn hãy sử dụng vòng lặp while trong file lisp trước khi gọi hộp thoại. Điều kiện của vòng lặp này chính là giá tri của biến hộp thoại sẽ nhận khi bạn chọn cái nút bạn cần. Như vậy trước khi vào vòng lặp While bạn phải đặt biến hộp thoại về giá trị này.

Chúc bạn thành cô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
Mình tạo một nút button trong dialog và khi mình gán action cho key của nút gặp một số vấn đề mong các bạn giải đáp.

- Mình muốn khi ấn vào nút, Cad cho mình chọn một điểm trên bản vẽ và quay lại hộp hội thoại.

Mình mới chỉ bắt được điểm nhưng không quay lại được hội thoại mong các bạn chỉ giáo.

Bạn chú ý hàm (start_dialog)

Tham khảo :

(defun C:ex(/  dcflag dcTag pt)
 (setq dcTag (load_dialog "toado.DCL"))
 (while (not (vl-position dcFlag '(1 0)))
   (if (not (new_dialog "ToaDo" dcTag))
     (progn
(alert "\nKhong tim duoc file dcl")
(exit)))
   (if pt
     (progn
(set_tile "X" (rtos (car pt )))
(set_tile "Y" (rtos (cadr pt)))))
   (action_tile "PickPt" "(done_dialog 2)")
   (setq dcflag (start_dialog))
   (if (= dcflag 2) (setq pt (getpoint "Chon diem :")) )
   );while
 (setq dcTag (unload_dialog dcTag))
 )

 

File toado.DCL

ToaDo : dialog { label = "Toa do diem.";

: edit_box { label = "Toa do X"; edit_width = 15; key = "X"; }

: edit_box { label = "Toa do Y"; edit_width = 15; key = "Y"; }

: button { label = "Pick point"; key = "PickPt"; }

:spacer {height=1;}

ok_cancel;

}

  • 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
Bạn chú ý hàm (start_dialog)

Tham khảo :

(defun C:ex(/  dcflag dcTag pt)
 (setq dcTag (load_dialog "toado.DCL"))
 (while (not (vl-position dcFlag '(1 0)))
   (if (not (new_dialog "ToaDo" dcTag))
     (progn
(alert "\nKhong tim duoc file dcl")
(exit)))
   (if pt
     (progn
(set_tile "X" (rtos (car pt )))
(set_tile "Y" (rtos (cadr pt)))))
   (action_tile "PickPt" "(done_dialog 2)")
   (setq dcflag (start_dialog))
   (if (= dcflag 2) (setq pt (getpoint "Chon diem :")) )
   );while
 (setq dcTag (unload_dialog dcTag))
 )

 

File toado.DCL

ToaDo : dialog { label = "Toa do diem.";

: edit_box { label = "Toa do X"; edit_width = 15; key = "X"; }

: edit_box { label = "Toa do Y"; edit_width = 15; key = "Y"; }

: button { label = "Pick point"; key = "PickPt"; }

:spacer {height=1;}

ok_cancel;

}

Cảm ơn gia_bach cuối cùng thì mình đã hiểu việc quay lại dialog kiểu gì. Chân thành cảm ơn bạ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

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


×