Đến nội dung


Hình ảnh

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


  • Please log in to reply
15 replies to this topic

#1 namhai

namhai

    biết vẽ rectang

  • Members
  • PipPip
  • 81 Bài viết
Điểm đánh giá: 18 (tàm tạm)

Đã gửi 03 July 2009 - 10:43 AM

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!!!!
  • 1
Hãy làm việc hết mình rồi mọi điều tốt đẹp sẽ đến với bạn.....

#2 gp14

gp14

    DO TUAN GIAP

  • Moderator
  • PipPipPipPipPipPipPip
  • 1860 Bài viết
Điểm đánh giá: 1120 (rất tốt)

Đã gửi 03 July 2009 - 10:48 AM

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.c...owtopic=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:
  • 2

#3 namhai

namhai

    biết vẽ rectang

  • Members
  • PipPip
  • 81 Bài viết
Điểm đánh giá: 18 (tàm tạm)

Đã gửi 04 July 2009 - 04:47 PM

Bạn sử dụng cái lisp ở đây
http://www.cadviet.c...owtopic=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!!
  • 0
Hãy làm việc hết mình rồi mọi điều tốt đẹp sẽ đến với bạn.....

#4 gp14

gp14

    DO TUAN GIAP

  • Moderator
  • PipPipPipPipPipPipPip
  • 1860 Bài viết
Điểm đánh giá: 1120 (rất tốt)

Đã gửi 04 July 2009 - 10:24 PM

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

#5 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3805 (đỉnh cao)

Đã gửi 04 July 2009 - 10:43 PM

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
  • 1

#6 namhai

namhai

    biết vẽ rectang

  • Members
  • PipPip
  • 81 Bài viết
Điểm đánh giá: 18 (tàm tạm)

Đã gửi 05 July 2009 - 08:25 AM

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:
  • 0
Hãy làm việc hết mình rồi mọi điều tốt đẹp sẽ đến với bạn.....

#7 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3805 (đỉnh cao)

Đã gửi 05 July 2009 - 08:44 AM

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:
  • 2

#8 namhai

namhai

    biết vẽ rectang

  • Members
  • PipPip
  • 81 Bài viết
Điểm đánh giá: 18 (tàm tạm)

Đã gửi 05 July 2009 - 09:27 AM

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?
  • 0
Hãy làm việc hết mình rồi mọi điều tốt đẹp sẽ đến với bạn.....

#9 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3805 (đỉnh cao)

Đã gửi 05 July 2009 - 09:38 AM

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.c...owtopic=279&hl=
Chúc thành công :s_big:
  • 1

#10 namhai

namhai

    biết vẽ rectang

  • Members
  • PipPip
  • 81 Bài viết
Điểm đánh giá: 18 (tàm tạm)

Đã gửi 05 July 2009 - 09:43 AM

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:
  • 0
Hãy làm việc hết mình rồi mọi điều tốt đẹp sẽ đến với bạn.....

#11 Tranngoc

Tranngoc

    Chưa sử dụng CAD

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

Đã gửi 05 July 2009 - 09:54 AM

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

#12 dienlicogi17

dienlicogi17

    biết pan

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

Đã gửi 05 July 2009 - 11:01 AM

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.
  • 0
Hồng Diễn - Mobile: 0936.458.268 - Email: Dienlicogi17@gmail.com

#13 hoanganhkiet

hoanganhkiet

    biết zoom

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

Đã gửi 05 July 2009 - 12:46 PM

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

#14 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3805 (đỉnh cao)

Đã gửi 05 July 2009 - 04:34 PM

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:

Bài viết đã được chỉnh sửa nội dung bởi Tue_NV: 05 July 2009 - 04:42 PM

  • 0

#15 hoanganhkiet

hoanganhkiet

    biết zoom

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

Đã gửi 05 July 2009 - 04:56 PM

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

#16 huaductiep

huaductiep

    biết vẽ rectang

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

Đã gửi 31 December 2013 - 01:26 AM

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


  • 0