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

[Chia sẻ] Lisp xóa layer Defpoints

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

Bình thường, layer Defpoints không thể xóa được. Tuy nhiên trong một số trường hợp vẫn nảy sinh nhu cầu xóa cái layer này. Hôm trước em phát hiện ra là để xóa layer này, cần phải làm:

 

1. Xóa hết các dimension

2. Purge các block có dạng: *D1, *D2,...

3. Đổi tên layer Defpoints thành tên khác, ví dụ : deletelayer

4. Purge layer deletelayer này là xong

 

Vì phải thực hiện nhiều lần, nên em đã viết lisp sau. Share lên đây cho cả nhà, ai thấy lisp chưa ổn chỗ nào thì mong bớt chút thời gian cho em ý kiến với:

 

;;; Written by pdle
(defun c:bst()
(setq lb (list (cdr (assoc 2 (tblnext "block" T)))))    	; Reset cho tblnext chay tu dau bang block
(while (and(not (member (setq vbl(cdr (assoc 2 (tblnext "block")))) lb)) vbl)
 (setq lb (cons vbl lb))
)                                    	; Lay het ten cac block
(setq sd (ssget "_X" (list (cons 0 "DIMENSION"))))
(if sd
 (foreach ent  (vl-remove-if 'listp (mapcar 'cadr (ssnamex sd)))
  (entdel ent)
 )
)                	; Xoa het dimension
(foreach ent lb
 (if (=(substr ent 1 2) "*D") (command "-purge" "b" ent "y" "y"))
)                	; Purge cac block dang *D
(if (tblsearch "layer" "Defpoints")
 (progn
  (command "-rename" "la" "Defpoints" "deletelayer")
  (command "-purge" "la" "deletelayer" "y" "y")
 )
)                	; Doi ten cho Defpoints va xoa no
)

 

Em có 2 câu hỏi sau:

 

1) Trong trường hợp command của CAD không thực hiện được lệnh, chẳng hạn lệnh purge không purge được block, thì làm thế nào để có thể kiểm soát bằng lisp

 

2) Các block dạng *E1, *E2 là liên quan đến gì trong CAD (chẳng hạn *D1, *D2,... thì liên quan đến Dimension)

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ình thường, layer Defpoints không thể xóa được. Tuy nhiên trong một số trường hợp vẫn nảy sinh nhu cầu xóa cái layer này. Hôm trước em phát hiện ra là để xóa layer này, cần phải làm:

 

1. Xóa hết các dimension

2. Purge các block có dạng: *D1, *D2,...

3. Đổi tên layer Defpoints thành tên khác, ví dụ : deletelayer

4. Purge layer deletelayer này là xong

.......

Chi mà rắc rối rứa bạn?

Laydel hoặc Laymrg xoá được tất (trừ Layer hiện hành)

  • 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

Em có 2 câu hỏi sau:

1) Trong trường hợp command của CAD không thực hiện được lệnh, chẳng hạn lệnh purge không purge được block, thì làm thế nào để có thể kiểm soát bằng lisp

2) Các block dạng *E1, *E2 là liên quan đến gì trong CAD (chẳng hạn *D1, *D2,... thì liên quan đến Dimension)

1). Hàm command luôn trả về nil. Do đó tôi nghĩ e không kiểm soát được command bằng lisp.

2). Bạn đọc link này, bài đầu tiên, xem hình vẽ trong file cad đính kèm nhé!

http://forums.autodesk.com/t5/Visual-LISP-AutoLISP-and-General/E-anonymous-blocks/m-p/2004104/highlight/true#M242006

  • 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

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  

×