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

[Đã xong] - Lệnh Bật/Tắt wipeout thay cho lệnh của cad

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

Bức xúc với việc fải lòng vòng để bật tắt wipeout bằng lệnh wipeout của cad và việc nó cứ tự động thêm 1 bước regen bản vẽ khi thực hiện thao tác bật hoặc tắt, bản vẽ nhẹ thì không sao chứ bản vẽ nặng thì cứ việc ngồi chờ dài cổ. Thế nên mình viết lại lệnh này cho dễ dùng hơn. Tặng các bạn dùng chơi.

;;; Copyright 2012 Thaistreetz from Cadviet.com
(defun c:wr (/ entmod-en ss->list en)
(defun entmod-en (code value en / elist) (entmod (subst (cons code value) (assoc code (setq elist (entget en '("*")))) elist)))
(defun ss->list (ss / i lst) (if ss (repeat (setq i (sslength ss)) (setq lst (cons (ssname ss (setq i (1- i))) lst)))))
(if (not (setq en (dictsearch (namedobjdict) "ACAD_WIPEOUT_VARS")))
(prompt "<< Khong co doi tuong Wipeout nao trong ban ve >>")
(progn
 (if (= (cdr (assoc 70 en)) 0)
  (progn (entmod-en 70 1 (cdr (assoc -1 en))) (prompt ": << Bat Wipeout >>"))
  (progn (entmod-en 70 0 (cdr (assoc -1 en))) (prompt ": << Tat Wipeout >>")))
 (foreach en (ss->list (ssget "x" '((0 . "WIPEOUT,INSERT")))) (entupd en))))
(princ))

 

Bật và tắt đều dùng 1 lệnh duy nhất WR. không phải regen bản vẽ nên em nó nuột hơn hàng của Cad nhiều :D

  • Vote tăng 5

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

Trong các bản cad2013+ thì wipeout đã được tích hợp vào cad như 1 đối tượng chính thức của cad chứ không fải được tải vào thông qua 1 arx ngoài nữa. đối tượng wipeout cũng được thêm 1 trạng thái chỉ hiện chứ không in ra: "Display but not plot" so với các bản cad trước chỉ có 2 trạng thái OnOff

 

Việc điều khiển trạng thái của đối tương wipeout từ fiên bản này được chuyển cho 1 biến hệ thống là WIPEOUTFRAME chứ không dùng từ điển đối tượng nữa. các giá trị tương ứng:

- Off <0>

- On <1>

- Display but not plot <2>

 

Lisp trên được viết lại để tương thích cho cả các bản cad 2013+ như sau:

(defun c:wr (/ en)
(if (< (atof (getvar "acadver")) 19)
 (if (not (setq en (dictsearch (namedobjdict) "ACAD_WIPEOUT_VARS")))
  (prompt "<< Khong co doi tuong wipeout nao trong ban ve>>")
  (progn
(if (= (cdr (assoc 70 en)) 0)
(progn (entmod-en 70 1 (cdr (assoc -1 en))) (prompt  ": << Bat Wipeout >>"))
(progn (entmod-en 70 0 (cdr (assoc -1 en))) (prompt ": << Tat Wipeout >>")))
(foreach en (ss->list (ssget "x" '((0 . "WIPEOUT,INSERT")))) (entupd en))))
 (if (= (getvar "wipeoutframe") 0)
  (progn (setvar "wipeoutframe" 1) (prompt ": << Bat Wipeout >>"))
  (progn (setvar "wipeoutframe" 0) (prompt ": << Tat Wipeout >>"))))
(princ))

  • Vote tăng 2

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ức xúc với việc fải lòng vòng để bật tắt wipeout bằng lệnh wipeout của cad và việc nó cứ tự động thêm 1 bước regen bản vẽ khi thực hiện thao tác bật hoặc tắt, bản vẽ nhẹ thì không sao chứ bản vẽ nặng thì cứ việc ngồi chờ dài cổ. Thế nên mình viết lại lệnh này cho dễ dùng hơn. Tặng các bạn dùng chơi.

Bật và tắt đều dùng 1 lệnh duy nhất WR. không phải regen bản vẽ nên em nó nuột hơn hàng của Cad nhiều :D

 

lisp hay lắm thanks chủ thớ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

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  

×