Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
lenhatanh

[Yêu cầu] viết lisp tắt hộp thọai

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

Nhờ các Bác chỉnh hộ em đoạn lisp sau: Em không biết tắt Menu 01 khi hiển thị menu 02...

Em xin cám ơn trước.

;; free lisp from cadviet.com
;-----------------------------------------------------------
(defun SC_DWG (/ AM)
 (setq AM (ATOF (GET_TILE "scale")))
 (setq AMO AM)
)
;-----------------------------------------------------------
(defun GE_DWG (/ GE)
 (setq GE (GET_TILE "gesd"))
 (setq GEO GE)

 (cond
   ((= GEO "1") (MODE_TILE "ges" 0))
   (T (MODE_TILE "ges" 1))
 )
)
;-----------------------------------------------------------
(defun IS_DWG (/ ARE_STE) 
 (setq ARE_STE "island")
 (setq ARE_STEO ARE_STE)
)
;-----------------------------------------------------------
(defun NO_DWG (/ ARE_STE)
 (setq ARE_STE "nomal")
 (setq ARE_STEO ARE_STE)
)  
;-----------------------------------------------------------
(defun OT_DWG (/ ARE_STE)
 (setq ARE_STE "outer")
 (setq ARE_STEO ARE_STE)
)
;-----------------------------------------------------------
(defun PR_FIL (/ PRI_FIL)
 (setq PRI_FIL (GET_TILE "exp"))
 (setq PRI_FILO PRI_FIL)
 (cond
   ((= PRI_FILO "1") (MODE_TILE "fn" 0) (MODE_TILE "pn" 1))
   (T (MODE_TILE "fn" 1) (MODE_TILE "pn" 0))
 )
)
;-----------------------------------------------------------
(defun SE_FIL ()
 (MODE_TILE "del" 0)
 (setq ITEM (ATOI (GET_TILE "dientich")))
)  
;-----------------------------------------------------------
(defun DE_FIL ()
 (REMOVELIST)
)  
;-----------------------------------------------------------
(defun PR_DWG (/ PRI_STE)
 (setq PRI_STE (GET_TILE "print"))
 (setq PRI_STEO PRI_STE)
 (cond
   ((= PRI_STEO "1")
    (MODE_TILE "sodt" 0)
    (MODE_TILE "xuat" 0))
   (T 
    (MODE_TILE "sodt" 1)
    (MODE_TILE "xuat" 1))
 )
)  
;-----------------------------------------------------------
(defun SO_DWG (/ NUMS) 
 (setq NUMS (ATOF (GET_TILE "sodt")))
 (setq NUMSO NUMS)
 (setq TRUNGNHAU 0)
 (alert (rtos NUMSO))

 (setq DCL_AREA (LOAD_DIALOG (strcat "muare" (rtos NUMSO 2 0) ".dcl")))
 (if (not (new_dialog (strcat "muare" (rtos NUMSO 2 0)) DCL_AREA))
  (progn (Restore) (exit))
 )
 (ACTION_TILE "cancel" "(unload_dialog dcl_area)")
 (START_DIALOG)
 (UNLOAD_DIALOG DCL_AREA)
)
;-----------------------------------------------------------
(defun Restore()
 (setvar "BLIPMODE" Oldblp)
 (setvar "CMDECHO" Oldech)
 (setvar "PICKBOX" Oldpbx)
 (setq *ERROR* Olderr)
)
;-----------------------------------------------------------
(defun C:Do-AS()

 (setq DCL_AREA (LOAD_DIALOG "muare0.dcl"))
 (if (not (new_dialog "muare0" DCL_AREA))
  (progn (Restore) (exit))
 )
 (SET_TILE "nomal" "1")
 (SET_TILE "island" "0")
 (SET_TILE "outer" "0")
 (SET_TILE "scale" "1000")

 (MODE_TILE "pick_bound" 1)
 (MODE_TILE "fn" 1)
 (MODE_TILE "ges" 1)
 (MODE_TILE "sodt" 1)

 (ACTION_TILE "scale" "(SC_DWG)")
 (ACTION_TILE "gesd" "(GE_DWG)")
 (ACTION_TILE "nomal" "(NO_DWG)")
 (ACTION_TILE "island" "(IS_DWG)")
 (ACTION_TILE "outer" "(OT_DWG)")
 (ACTION_TILE "pick_bound" "(PI_DWG)")
 (ACTION_TILE "exp" "(PR_FIL)")
 (ACTION_TILE "fn" "(NA_FIL)")
 (ACTION_TILE "dientich" "(SE_FIL)")
 (ACTION_TILE "del" "(DE_FIL)")
 (ACTION_TILE "print" "(PR_DWG)")
 (ACTION_TILE "sodt" "(SO_DWG)");;;;;;;;;;;;;;;;;;;;;;; (done_dialog)")
 (ACTION_TILE "cancel" "(unload_dialog dcl_area)")
 (START_DIALOG)
 (UNLOAD_DIALOG DCL_AREA)
)

Em gửi lại đường link đến các file Lisp và Menu, nhờ các Bác chỉnh hộ tắt Menu 01 khi hiển thị menu 02...

Tất cả các Files: http://www.mediafire.com/?cyu7umy12fyy1c2

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

 

Em gửi lại đường link đến các file Lisp và Menu, nhờ các Bác chỉnh hộ tắt Menu 01 khi hiển thị menu 02...

Tất cả các Files: http://www.mediafire.com/?cyu7umy12fyy1c2

Hề hề hề,

Bạn hãy chú y cái hàm con này:

(defun Restore()

(setvar "BLIPMODE" Oldblp)

(setvar "CMDECHO" Oldech)

(setvar "PICKBOX" Oldpbx)

(setq *ERROR* Olderr)

)

Trong toàn bộ cái lisp bạn post, không hề thấy có việc đặt các biến Oldblp, Oldech, oldpbx. Do vậy khi chạy thử lisp của bạn , nó báo lỗi và không chạy nữa, Vì thế chả biết nó có lỗi chi mà sửa bạn ạ.

 

Trong toàn bộ cái thư mục bạn gửi, chỉ thấy toàn file DCL (hộp thoại) chứ có thấy file mns nào đâu mà bạn bảo sửa menu????

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

Hề hề hề,

Bạn hãy chú y cái hàm con này:

(defun Restore()

(setvar "BLIPMODE" Oldblp)

(setvar "CMDECHO" Oldech)

(setvar "PICKBOX" Oldpbx)

(setq *ERROR* Olderr)

)

Trong toàn bộ cái lisp bạn post, không hề thấy có việc đặt các biến Oldblp, Oldech, oldpbx. Do vậy khi chạy thử lisp của bạn ,

nó báo lỗi và không chạy nữa, Vì thế chả biết nó có lỗi chi mà sửa bạn ạ.

Trong toàn bộ cái thư mục bạn gửi, chỉ thấy toàn file DCL (hộp thoại) chứ có thấy file mns nào đâu mà bạn bảo sửa menu????

Xin lỗi đã làm mất thời gian của các Bác, em port nhầm thành menu. Đúng ra là bật tắt hộp thoại,

còn cái đoạn "(defun Restore()..." bác có thể bỏ cho em luôn.

Nhờ các Bác chỉnh hộ tắt hộp thoại 01 khi hiển thị hộp thoại 02...

(trình tự thực hiện em nêu trong file word: http://www.mediafire.com/?mh48dbcw7fxjuc7

Link All files: http://www.mediafire...cyu7umy12fyy1c2

Cám ơn các Bác rất nhiều !

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

Xin lỗi đã làm mất thời gian của các Bác, em port nhầm thành menu. Đúng ra là bật tắt hộp thoại,

còn cái đoạn "(defun Restore()..." bác có thể bỏ cho em luôn.

Nhờ các Bác chỉnh hộ tắt hộp thoại 01 khi hiển thị hộp thoại 02...

(trình tự thực hiện em nêu trong file word: http://www.mediafire.com/?mh48dbcw7fxjuc7

Link All files: http://www.mediafire...cyu7umy12fyy1c2

Cám ơn các Bác rất nhiều !

Chào bạn Lenhatanh,

Mình đã bỏ hàm con restore và load lisp, nó đã chạy nhưng xuất hiện các thông báo như sau:

1/- Base.dcl can't find file

2/- Error loading dialog control file

3/- Semantic error(s) in DCL file muare0.dcl

See file acad.dce for detail

Và sau đó là thoát khỏi lisp với dòng báo lỗi

;error : quit/exit abort

 

Như vậy có nhẽ do bạn đã post thiếu cái file base.dcl dùng để điều khiển các hộp thoại chăng??? Và có nhẽ một vài biến hệ thống nào đó bị trãt chìa chăng???

Rất mong bạn bổ sung để có thể test được cái lisp của bạn và may ra mới tìm ra lỗi.....

Hề hề hề, hãy thông cảm cho cái sự mót của mình chưa tốt....

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

Chào bạn Lenhatanh,

Mình đã bỏ hàm con restore và load lisp, nó đã chạy nhưng xuất hiện các thông báo như sau:

1/- Base.dcl can't find file

2/- Error loading dialog control file

3/- Semantic error(s) in DCL file muare0.dcl

See file acad.dce for detail

Và sau đó là thoát khỏi lisp với dòng báo lỗi

;error : quit/exit abort

 

Như vậy có nhẽ do bạn đã post thiếu cái file base.dcl dùng để điều khiển các hộp thoại chăng??? Và có nhẽ một vài biến hệ thống nào đó bị trãt chìa chăng???

Rất mong bạn bổ sung để có thể test được cái lisp của bạn và may ra mới tìm ra lỗi.....

Hề hề hề, hãy thông cảm cho cái sự mót của mình chưa tốt....

Lisp người khác viết mà ngồi dò thì lòi mắt. Bạn Lenhatanh hảy làm như sau:

-Viết lisp gọn gọn gọi mọt hộp thoại trong này thiết kế 1 nút tiếp và 1 nút thoát.

-Chọn nút tiếp thì gọi hộp thoại khác (thiết kế hộp thoại đơn giản khác cho hển thị chơi).

-Chọn thoát thì toát hộp thoại.

Dựa trên đó mọi người dêể góp ý và chỉnh lổi rồi bạn nắm được cách làm thì chỉnh cái lisp nguyên gốc của 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

Em đã test thử lại lisp trên CAD2007-2008 vẫn chạy tốt mà, trình tự và ý muốn

em ghi lại trong file word nhờ các Bác đọc và chỉ giúp nhé. Em cảm ơn !

http://www.mediafire.com/?qm99m8s817s77kl

(defun SC_DWG (/ AM)
 (setq AM (ATOF (GET_TILE "scale")))
 (setq AMO AM)
)
;-----------------------------------------------------------
(defun GE_DWG (/ GE)
 (setq GE (GET_TILE "gesd"))
 (setq GEO GE)

 (cond
   ((= GEO "1") (MODE_TILE "ges" 0))
   (T (MODE_TILE "ges" 1))
 )
)
;-----------------------------------------------------------
(defun IS_DWG (/ ARE_STE) 
 (setq ARE_STE "island")
 (setq ARE_STEO ARE_STE)
)
;-----------------------------------------------------------
(defun NO_DWG (/ ARE_STE)
 (setq ARE_STE "nomal")
 (setq ARE_STEO ARE_STE)
)  
;-----------------------------------------------------------
(defun OT_DWG (/ ARE_STE)
 (setq ARE_STE "outer")
 (setq ARE_STEO ARE_STE)
)
;-----------------------------------------------------------
(defun PR_FIL (/ PRI_FIL)
 (setq PRI_FIL (GET_TILE "exp"))
 (setq PRI_FILO PRI_FIL)
 (cond
   ((= PRI_FILO "1") (MODE_TILE "fn" 0) (MODE_TILE "pn" 1))
   (T (MODE_TILE "fn" 1) (MODE_TILE "pn" 0))
 )
)
;-----------------------------------------------------------
(defun SE_FIL ()
 (MODE_TILE "del" 0)
 (setq ITEM (ATOI (GET_TILE "dientich")))
)  
;-----------------------------------------------------------
(defun DE_FIL ()
 (REMOVELIST)
)  
;-----------------------------------------------------------
(defun PR_DWG (/ PRI_STE)
 (setq PRI_STE (GET_TILE "print"))
 (setq PRI_STEO PRI_STE)
 (cond
   ((= PRI_STEO "1")
    (MODE_TILE "sodt" 0)
    (MODE_TILE "xuat" 0))
   (T 
    (MODE_TILE "sodt" 1)
    (MODE_TILE "xuat" 1))
 )
)  
;-----------------------------------------------------------
(defun SO_DWG (/ NUMS) 
 (setq NUMS (ATOF (GET_TILE "sodt")))
 (setq NUMSO NUMS)
;  (alert (rtos NUMSO))
 (setq DCL_AREA (LOAD_DIALOG (strcat "muare" (rtos NUMSO 2 0) ".dcl")))
 (if (not (new_dialog (strcat "muare" (rtos NUMSO 2 0)) DCL_AREA))
  (progn (Restore) (exit))
 )
 (ACTION_TILE "cancel" "(unload_dialog dcl_area)")
 (START_DIALOG)
 (UNLOAD_DIALOG DCL_AREA)
)
;-----------------------------------------------------------
;-----------------------------------------------------------
(defun Restore()
 (setvar "BLIPMODE" Oldblp)
 (setvar "CMDECHO" Oldech)
 (setvar "PICKBOX" Oldpbx)
 (setq *ERROR* Olderr)
)
;-----------------------------------------------------------
(defun C:Do-AS ()
 (setq Oldblp (getvar "BLIPMODE")
       Oldech (getvar "CMDECHO")
       Oldpbx (getvar "PICKBOX")
       Olderr *ERROR*
 )
 (setq DCL_AREA (LOAD_DIALOG "muare0.dcl"))
 (if (not (new_dialog "muare0" DCL_AREA))
  (progn (Restore) (exit))
 )
 (SET_TILE "nomal" "1")
 (SET_TILE "island" "0")
 (SET_TILE "outer" "0")
 (SET_TILE "scale" "1000")

 (MODE_TILE "pick_bound" 1)
 (MODE_TILE "fn" 1)
 (MODE_TILE "ges" 1)
 (MODE_TILE "sodt" 1)

 (ACTION_TILE "scale" "(SC_DWG)")
 (ACTION_TILE "gesd" "(GE_DWG)")
 (ACTION_TILE "nomal" "(NO_DWG)")
 (ACTION_TILE "island" "(IS_DWG)")
 (ACTION_TILE "outer" "(OT_DWG)")
 (ACTION_TILE "pick_bound" "(PI_DWG)")
 (ACTION_TILE "exp" "(PR_FIL)")
 (ACTION_TILE "fn" "(NA_FIL)")
 (ACTION_TILE "dientich" "(SE_FIL)")
 (ACTION_TILE "del" "(DE_FIL)")
 (ACTION_TILE "print" "(PR_DWG)")
 (ACTION_TILE "sodt" "(SO_DWG)");;;;;;;;;;;;;;;;;;;;;;; (done_dialog)")
 (ACTION_TILE "cancel" "(unload_dialog dcl_area)")
 (START_DIALOG)
 (UNLOAD_DIALOG DCL_AREA)
)

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
Đăng nhập để thực hiện theo  

×