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

Thắc mắc về Layoff, layiso?

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

Mong CADVIET giúp e cách sử dụng Layoff, Layiso trong 1 vùng ?nếu mà chỉ xoá thì e có thể dùng quick seleck nhưng trong trường hợp chỉ muốn làm việc với các đối tượng trong 1 vùng nào đấy thì làm thế nào ạ?mong CADVIET chỉ giáo, thanks các bác nha!!!!

  • 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
Mong CADVIET giúp e cách sử dụng Layoff, Layiso trong 1 vùng ?nếu mà chỉ xoá thì e có thể dùng quick seleck nhưng trong trường hợp chỉ muốn làm việc với các đối tượng trong 1 vùng nào đấy thì làm thế nào ạ?mong CADVIET chỉ giáo, thanks các bác nha!!!!

Bạn sử dụng cái lisp ở đây

http://www.cadviet.com/forum/index.php?showtopic=279&hl=

Nó có tác dụng ẩn đi các đối tượng mình không muốn làm việc.

Chú ý là khi cho các đối tượng ẩn đi thì bạn phải nhớ không đến lúc vẽ đè các đối tượng khác lên vùng ẩn đó là hơi bị mệt đấy :s_big:

  • 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ạn sử dụng cái lisp ở đây

http://www.cadviet.com/forum/index.php?showtopic=279&hl=

Nó có tác dụng ẩn đi các đối tượng mình không muốn làm việc.

Chú ý là khi cho các đối tượng ẩn đi thì bạn phải nhớ không đến lúc vẽ đè các đối tượng khác lên vùng ẩn đó là hơi bị mệt đấy :s_big:

Lisp này e đã down từ CADVIET, nhưng đây là lisp ẩn, hiện đối tượng mà, muốn ẩn hiện đối tượng nào thì mình select đối tượng ấy. cái e cần là ẩn hiện 1 hoặc nhiều layer trong 1 vùng cơ, mong sự hồi âm của các bá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
cái e cần là ẩn hiện 1 hoặc nhiều layer trong 1 vùng cơ!!

Cái này chẳng phải dùng layoff, layiso sao?

Bạn nói rõ ràng, cụ thể hơn được chứ

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 e đã down từ CADVIET, nhưng đây là lisp ẩn, hiện đối tượng mà, muốn ẩn hiện đối tượng nào thì mình select đối tượng ấy. cái e cần là ẩn hiện 1 hoặc nhiều layer trong 1 vùng cơ, mong sự hồi âm của các bác!!

Mạn phép bác Bemove, Tue_NV sửa lại code của bác cho phù hợp với yêu cầu của bạn NamHai

(defun c:InVis (/ SSet Count Elem dt lay entt) 
 (defun Dxf (Id Obj)
(cdr (assoc Id (entget Obj)))
 );end Dxf
(setq dt (entsel "\n Pick chon Layer an di :"))
(setq entt (car dt))
(setq lay (cdr(assoc 8 (entget entt))))
  (prompt "\n Chon vung can an di :")
 (cond
((setq SSet (ssget (list(cons 8 lay))))
 (repeat (setq Count (sslength SSet))
   (setq Count (1- COunt)
	 Elem (ssname SSet Count))
   (if (/= 4 (logand 4 (Dxf 70 (tblobjname "layer" (Dxf 8 Elem)))))
 (if (Dxf 60 Elem)
   (entmod (subst '(60 . 1) (assoc 60 (entget Elem)) (entget Elem)))
   (entmod (append (entget Elem) (list '(60 . 1))))
 )
 (prompt "\nEntity on a locked layer. Cannot hide this entity. ")
   );end if
 );end repeat
)	 	
 );end cond

 (princ)
);end c:InVis

@gp14 : Ý của NamHai là ẩn các đối tượng thuộc về 1 layer nào đó trong vùng mà ta chọn

  • 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
Mạn phép bác Bemove, Tue_NV sửa lại code của bác cho phù hợp với yêu cầu của bạn NamHai

(defun c:InVis (/ SSet Count Elem dt lay entt) 
 (defun Dxf (Id Obj)
(cdr (assoc Id (entget Obj)))
 );end Dxf
(setq dt (entsel "\n Pick chon Layer an di :"))
(setq entt (car dt))
(setq lay (cdr(assoc 8 (entget entt))))
  (prompt "\n Chon vung can an di :")
 (cond
((setq SSet (ssget (list(cons 8 lay))))
 (repeat (setq Count (sslength SSet))
   (setq Count (1- COunt)
	 Elem (ssname SSet Count))
   (if (/= 4 (logand 4 (Dxf 70 (tblobjname "layer" (Dxf 8 Elem)))))
 (if (Dxf 60 Elem)
   (entmod (subst '(60 . 1) (assoc 60 (entget Elem)) (entget Elem)))
   (entmod (append (entget Elem) (list '(60 . 1))))
 )
 (prompt "\nEntity on a locked layer. Cannot hide this entity. ")
   );end if
 );end repeat
)	 	
 );end cond

 (princ)
);end c:InVis

@gp14 : Ý của NamHai là ẩn các đối tượng thuộc về 1 layer nào đó trong vùng mà ta chọn

Thanks bác Tue_NV nhiều nha!đây đúng là điều mà e cần, chúc bác ngày cuối tuần vui vẻ!!! :s_big:

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
Thanks bác Tue_NV nhiều nha!đây đúng là điều mà e cần, chúc bác ngày cuối tuần vui vẻ!!! :blink:

Lisp trên chỉ ẩn được 1 Layer trong vùng chọn

Với Lisp này thì bạn cần hơn nè :

Đây là Lisp ANLAY. Sự kết hợp Lisp của Tue_NV và bác Bemove có tính năng ẩn các Layer được user chọn nằm trong vùng chọn. Bạn chạy thử xem :

;copyright by Tue_NV and Bemove
(defun c:anlay(/ vung lstlay n dt ent enti ss ss1 i)
(setq lstlay nil)
(prompt "\n chon vung :")
(setq vung (ssget) n (sslength vung) ss (ssadd) i 0)
(setq dt (entsel"\n Pick chon Layer :"))
(if dt
(progn
(while dt 
(setq ent (car dt))

(setq lay (cdr(assoc 8 (entget ent))))
(if (= (member lay lstlay) nil)
(setq lstlay (append lstlay (list lay)))
(ALERT "Da chon layer nay roi. Moi ban chon doi tuong thuoc Layer khac :")
)
(setq dt (entsel"\n Pick chon Layer :"))
)
)
)

(while (< i n)
(setq enti (ssname vung i))
(setq elay (cdr(assoc 8 (entget enti))))
(if (/= (member elay lstlay) nil)
(setq ss (ssadd enti ss))
)
(setq i (1+ i))
)
(INVIS ss)
(princ)
)
;
;
(defun InVis (SSet / Count Elem)

 (defun Dxf (Id Obj)
   (cdr (assoc Id (entget Obj)))
 );end Dxf


 (cond
(
    (repeat (setq Count (sslength SSet))
      (setq Count (1- COunt)
     Elem (ssname SSet Count))
      (if (/= 4 (logand 4 (Dxf 70 (tblobjname "layer" (Dxf 8 Elem)))))
 (if (Dxf 60 Elem)
   (entmod (subst '(60 . 1) (assoc 60 (entget Elem)) (entget Elem)))
   (entmod (append (entget Elem) (list '(60 . 1))))
 )
 (prompt "\nEntity on a locked layer. Cannot hide this entity. ")
      );end if
    );end repeat
   )	 	
 );end cond
 (princ)
);end c:InVis

:s_big:

  • 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
Lisp trên chỉ ẩn được 1 Layer trong vùng chọn

Với Lisp này thì bạn cần hơn nè :

Đây là Lisp ANLAY. Sự kết hợp Lisp của Tue_NV và bác Bemove có tính năng ẩn các Layer được user chọn nằm trong vùng chọn. Bạn chạy thử xem :

;copyright by Tue_NV and Bemove
(defun c:anlay(/ vung lstlay n dt ent enti ss ss1 i)
(setq lstlay nil)
(prompt "\n chon vung :")
(setq vung (ssget) n (sslength vung) ss (ssadd) i 0)
(setq dt (entsel"\n Pick chon Layer :"))
(if dt
(progn
(while dt 
(setq ent (car dt))

(setq lay (cdr(assoc 8 (entget ent))))
(if (= (member lay lstlay) nil)
(setq lstlay (append lstlay (list lay)))
(ALERT "Da chon layer nay roi. Moi ban chon doi tuong thuoc Layer khac :")
)
(setq dt (entsel"\n Pick chon Layer :"))
)
)
)

(while (< i n)
(setq enti (ssname vung i))
(setq elay (cdr(assoc 8 (entget enti))))
(if (/= (member elay lstlay) nil)
(setq ss (ssadd enti ss))
)
(setq i (1+ i))
)
(INVIS ss)
(princ)
)
;
;
(defun InVis (SSet / Count Elem)

 (defun Dxf (Id Obj)
   (cdr (assoc Id (entget Obj)))
 );end Dxf


 (cond
(
    (repeat (setq Count (sslength SSet))
      (setq Count (1- COunt)
     Elem (ssname SSet Count))
      (if (/= 4 (logand 4 (Dxf 70 (tblobjname "layer" (Dxf 8 Elem)))))
 (if (Dxf 60 Elem)
   (entmod (subst '(60 . 1) (assoc 60 (entget Elem)) (entget Elem)))
   (entmod (append (entget Elem) (list '(60 . 1))))
 )
 (prompt "\nEntity on a locked layer. Cannot hide this entity. ")
      );end if
    );end repeat
   )	 	
 );end cond
 (princ)
);end c:InVis

:s_big:

Bác Tue_NV ơi!có phải đây là lisp xoá các layer trong 1 vùng không?vì lúc e ẩn layer đi thì khi layon không thây hiện lên các layer mà mình đã ẩ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
Bác Tue_NV ơi!có phải đây là lisp xoá các layer trong 1 vùng không?vì lúc e ẩn layer đi thì khi layon không thây hiện lên các layer mà mình đã ẩn?

Không phải xoá mà là ẩn layer do user chọn nằm trong vùng chọn. Muốn hiện lên các layer đã ẩn thì dùng Lisp VIS của bác Bemove

Lisp đó nằm ở đây :

http://www.cadviet.com/forum/index.php?showtopic=279&hl=

Chúc thành công :s_big:

  • 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
Không phải xoá mà là ẩn layer do user chọn nằm trong vùng chọn. Muốn hiện lên các layer đã ẩn thì dùng Lisp VIS của bác Bemove

ok! thanks bác Tue_NV nhiều nha!lúc trước e đã down lisp INVIS và VIS của bác Bemove rùi mà quên mất,có thêm phần mở rộng của bác giờ thì ổn rùi.Happy weekend!!!press Thanks bác cái :s_big:

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

Cũng có thể dùng cách khác, đây chỉ là mẹo sử dụng thui. Bạn cho vào khung Layout sau đó chọn lớp bạn muốn ẩn đi và chọn Freeze là có thể ẩn đi trong khung layout mà bạn chọ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
ok! thanks bác Tue_NV nhiều nha!lúc trước e đã down lisp INVIS và VIS của bác Bemove rùi mà quên mất,có thêm phần mở rộng của bác giờ thì ổn rùi.Happy weekend!!!press Thanks bác cái :s_big:

Hoặc bật bộ cài Auto CAD lên chọn Install, chọn step5-chọn AutoCAD Express Tools. Là bạn sẽ có thanh công cụ có lệnh layoff, layiso,... về layer.

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

Mình sử dụng layiso trong cad2008 nhưng không hiểu sao nó chỉ mờ đi các layer khác thôi. Sau đó dùng layon thì không thể hiện lên tất cả các layer được. Nếu muốn hiên tất cả layer lên thì phải vào unlock tất cả layer. Trước đây cad 2007 đâu có vấn đề j đâu, chẳng hiểu sao nữa?????? :s_big:

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
Hoặc bật bộ cài Auto CAD lên chọn Install, chọn step5-chọn AutoCAD Express Tools. Là bạn sẽ có thanh công cụ có lệnh layoff, layiso,... về layer.

Bạn có đọc kỹ yêu cầu của bài này không?

Lệnh Layoff : tắt layer trên toàn bộ bản vẽ

Còn đây là lisp mà Tue_NV viết để tắt Layer trên 1 vùng chọn của bản vẽ? Bạn hiểu không?

Lisp này kết hợp Lisp của bác Bemove và của Tue_NV có tính năng ẩn các Layer được user chọn và lần này Tue_NV bổ sung thêm tính năng ẩn Layer trên toàn bộ bản vẽ (tính năng này tương đương với lệnh Layoff của Express). Các bạn chạy thử xem và để hiện lại layer thì dùng Lisp VIS của bác Bemove

;copyright by Tue_NV and Bemove
(defun c:anlay(/ vung lstlay n dt ent enti ss ss1 i ans)
(setq lstlay nil)
(prompt "\n chon vung :")
(initget "V A")
(setq ans (getstring "\n Ban muon an Layer theo Vung chon hay an Layer tren toAn ban ve <V/A> :"))
(if (or (= ans "V") (= ans "v"))
(setq vung (ssget))
(setq vung (ssget "A"))
)
(setq n (sslength vung) ss (ssadd) i 0)
(setq dt (entsel"\n Pick chon Layer :"))
(if dt
(progn
(while dt 
(setq ent (car dt))

(setq lay (cdr(assoc 8 (entget ent))))
(if (= (member lay lstlay) nil)
(setq lstlay (append lstlay (list lay)))
(ALERT "Da chon layer nay roi. Moi ban chon doi tuong thuoc Layer khac :")
)
(setq dt (entsel"\n Pick chon Layer :"))
)
)
)

(while (< i n)
(setq enti (ssname vung i))
(setq elay (cdr(assoc 8 (entget enti))))
(if (/= (member elay lstlay) nil)
(setq ss (ssadd enti ss))
)
(setq i (1+ i))
)
(INVIS ss)
(princ)
)
;
;
(defun InVis (SSet / Count Elem)

(defun Dxf (Id Obj)
(cdr (assoc Id (entget Obj)))
);end Dxf


(cond
(
(repeat (setq Count (sslength SSet))
(setq Count (1- COunt)
Elem (ssname SSet Count))
(if (/= 4 (logand 4 (Dxf 70 (tblobjname "layer" (Dxf 8 Elem)))))
(if (Dxf 60 Elem)
(entmod (subst '(60 . 1) (assoc 60 (entget Elem)) (entget Elem)))
(entmod (append (entget Elem) (list '(60 . 1))))
)
(prompt "\nEntity on a locked layer. Cannot hide this entity. ")
);end if
);end repeat
) 
);end cond
(princ)
);end c:InVis

 

Mình sử dụng layiso trong cad2008 nhưng không hiểu sao nó chỉ mờ đi các layer khác thôi. Sau đó dùng layon thì không thể hiện lên tất cả các layer được. Nếu muốn hiên tất cả layer lên thì phải vào unlock tất cả layer. Trước đây cad 2007 đâu có vấn đề j đâu, chẳng hiểu sao nữa??????

Bạn sử dụng Lisp của Tue_NV xem :

Ban muon an Layer theo Vung chon hay an Layer tren toAn ban ve <V/A> :

Ở dòng này nếu bạn chọn V : thì ẩn Lâyer theo vùng chọn

Còn nếu bạn chọn là : A thì chức năng này tương đương với lệnh Layoff

-> để hiện lại layer thì dùng Lisp VIS của bác Bemove

:s_big:

Chỉnh sửa theo Tue_NV

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ạn có đọc kỹ yêu cầu của bài này không?

Mình chưa xem kĩ chủ đề này nữa. Ý mình hỏi là lệnh trong autocad thôi ah. Không biết tại sao lại bị trường hợp như vậy. Ở công ty mình cũng xài 2008 thì không bị nhưng xài cad ở nhà thì lại bị trường hợp trên. cao thủ nào biết nguyên nhân thì chỉ mình với.

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

sao em dùng thì lisp ko chạy? toàn báo là Unknown Load Lísp. Bác sửa giúp em với nha

 

Bạn có đọc kỹ yêu cầu của bài này không?
Lệnh Layoff : tắt layer trên toàn bộ bản vẽ
Còn đây là lisp mà Tue_NV viết để tắt Layer trên 1 vùng chọn của bản vẽ? Bạn hiểu không?
Lisp này kết hợp Lisp của bác Bemove và của Tue_NV có tính năng ẩn các Layer được user chọn và lần này Tue_NV bổ sung thêm tính năng ẩn Layer trên toàn bộ bản vẽ (tính năng này tương đương với lệnh Layoff của Express). Các bạn chạy thử xem và để hiện lại layer thì dùng Lisp VIS của bác Bemove


;copyright by Tue_NV and Bemove(defun c:anlay(/ vung lstlay n dt ent enti ss ss1 i ans)(setq lstlay nil)(prompt "\n chon vung :")(initget "V A")(setq ans (getstring "\n Ban muon an Layer theo Vung chon hay an Layer tren toAn ban ve <V/A> :"))(if (or (= ans "V") (= ans "v"))(setq vung (ssget))(setq vung (ssget "A")))(setq n (sslength vung) ss (ssadd) i 0)(setq dt (entsel"\n Pick chon Layer :"))(if dt(progn(while dt (setq ent (car dt))(setq lay (cdr(assoc 8 (entget ent))))(if (= (member lay lstlay) nil)(setq lstlay (append lstlay (list lay)))(ALERT "Da chon layer nay roi. Moi ban chon doi tuong thuoc Layer khac :"))(setq dt (entsel"\n Pick chon Layer :")))))(while (< i n)(setq enti (ssname vung i))(setq elay (cdr(assoc 8 (entget enti))))(if (/= (member elay lstlay) nil)(setq ss (ssadd enti ss)))(setq i (1+ i)))(INVIS ss)(princ));;(defun InVis (SSet / Count Elem)(defun Dxf (Id Obj)(cdr (assoc Id (entget Obj))));end Dxf(cond((repeat (setq Count (sslength SSet))(setq Count (1- COunt)Elem (ssname SSet Count))(if (/= 4 (logand 4 (Dxf 70 (tblobjname "layer" (Dxf 8 Elem)))))(if (Dxf 60 Elem)(entmod (subst '(60 . 1) (assoc 60 (entget Elem)) (entget Elem)))(entmod (append (entget Elem) (list '(60 . 1)))))(prompt "\nEntity on a locked layer. Cannot hide this entity. "));end if);end repeat) );end cond(princ));end c:InVis

Bạn sử dụng Lisp của Tue_NV xem :
Ban muon an Layer theo Vung chon hay an Layer tren toAn ban ve <V/A> :
Ở dòng này nếu bạn chọn V : thì ẩn Lâyer theo vùng chọn
Còn nếu bạn chọn là : A thì chức năng này tương đương với lệnh Layoff
-> để hiện lại layer thì dùng Lisp VIS của bác Bemove
s_big.gif

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  

×