Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
5 replies to this topic

#1 lenhatanh

lenhatanh

    biết vẽ polygon

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

Đã gửi 13 June 2011 - 10:23 AM

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

#2 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 13 June 2011 - 03:45 PM

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...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????
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#3 lenhatanh

lenhatanh

    biết vẽ polygon

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

Đã gửi 14 June 2011 - 09:17 AM

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...mh48dbcw7fxjuc7
Link All files: http://www.mediafire...cyu7umy12fyy1c2
Cám ơn các Bác rất nhiều !
  • 0

#4 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 14 June 2011 - 02:41 PM

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...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....
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#5 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 14 June 2011 - 03:43 PM

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

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#6 lenhatanh

lenhatanh

    biết vẽ polygon

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

Đã gửi 15 June 2011 - 09:30 AM

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

  • 0