Chuyển đến nội dung
Diễn đàn CADViet
nghau90

Cần layiso theo màu của layer

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

mình  vẽ cad nội thất. sử dụng layer duy nhất là layer 0 . khi vẽ chỉ thay đổi màu bylayer ,  mình muốn tách lớp theo màu . ví dụ cánh cửa màu xanh (cyan)  làm cách nào để tách nó  theo kiểu layiso để chỉnh sửa. bạn  nào có lisp cho mình xin .

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

Lisp này nhấp vào màu nào thì nó hiện tất cả các đt cùng màu đó. Muốn hiện lên hết thì khi nó hỏi thì enter.

 

(defun c:lm(/ v mau ss ss1 tm)
  (vl-load-com)
  (defun dxf (id v) (cdr (assoc id (entget v))))
  (defun laymau(e / m)  (if (not (setq m (dxf 62 e))) (cdr (assoc 62 (tblsearch "LAYER" (dxf 8 e)))) m))
  
  (setq ss (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget "X")))))
  (mapcar '(lambda(x) (vla-put-Visible (vlax-ename->vla-object x) actrue)) ss)
  
  (if (setq v (car (entsel "\nChon hien mau:")))
    (setq mau (laymau v) 
 ss1 (vl-remove-if-not '(lambda (x) (= mau (laymau x))) ss)
 tm (mapcar '(lambda(x) (vla-put-Visible (vlax-ename->vla-object x) acfalse)) ss)
 tm (mapcar '(lambda(x) (vla-put-Visible (vlax-ename->vla-object x) actrue)) ss1))
  )
  (princ)  
)
  • 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

 

Tot77  t gặp  chút vấn đề. sau khi dùng lệnh đó.  nếu ko thao tác gì thì nhấn dấu cách là hiện lại. nhưng đã thao tác, xóa , copy hay move thì mình ko làm cách nào cho nó hiện lại các bylayer khác

 

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

-ah tiện anh Tot77 cho nhoc hỏi nếu dùng lệnh trên mình lọc ra chỉnh sữa rùi save lại quên mở lại hết rùi tắt copy file đem đi đâu đó mà quen dem lsp theo vậy thì dùng cách nào để lấy lại các đối tượng bị ẩn anh ^^

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

Lisp này chỉ theo màu của đối tượng chính (tức là khi bạn nhấp vào đtg đó rồi nhìn vào bảng màu) chứ không theo các đtg phức như block (màu của các thành phần khác với màu của đối tượng) hoặc dim (trừ phi bạn setting kiểu dim color là byblock) .

Hoặc tốt nhất bạn gửi file lên xem có gì đặc biệt ko, chứ cái lsp trên chẳng thay đổi bất cứ đặc tính nào của đtg. 

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

- vậy nè anh, vd: nhoc vẽ nhiều line layer 0, co 2 đường màu đỏ, nhoc lọc 2 đường màu đỏ ra, giờ nếu ko dùng lsp thì cacch nào để hiện lại tất cả đối tượng vậy a

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

- vậy nè anh, vd: nhoc vẽ nhiều line layer 0, co 2 đường màu đỏ, nhoc lọc 2 đường màu đỏ ra, giờ nếu ko dùng lsp thì cacch nào để hiện lại tất cả đối tượng vậy a

Tôi hiểu ý nhoc mà, cái câu #7 là trả lời bạn nghau90.

Theo tôi biết thì cad chưa có lệnh nào (tính tới cad 2010) cho hiện những cái ẩn. Cad dời sau nghe nói có lệnh hideobjects, isolateobjects  gì đó nhưng chắc là dạng khác chứ không phải dạng visible này.

Cái visible này cũng được nhiều ng dùng để giấu bớt những chi tiết "nhạy cảm" không muốn cho đối tác thấy (dĩ nhiên là đối tác này không biết lisp).

Trg hợp như nhoc noi thì chắc phải dùng lisp thôi, chỉ một câu này thôi cũng dc

(mapcar '(lambda(x) (vla-put-Visible (vlax-ename->vla-object x) actrue)) (acet-ss-to-list (ssget "X")))

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

Trg hợp như nhoc noi thì chắc phải dùng lisp thôi, chỉ một câu này thôi cũng dc

(mapcar '(lambda(x) (vla-put-Visible (vlax-ename->vla-object x) actrue)) (acet-ss-to-list (ssget "X")))

 

Nếu đã dùng ACET thì thế này thôi Tot77 :

 

(acet-ss-visible (ssget "x") 0)
 

 

Link ví dụ

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

×