Đến nội dung


Hình ảnh
- - - - -

[Nhờ Tạo Lisp] Lisp Ẩn, Đổi Màu Nhiều Layer


  • Please log in to reply
6 replies to this topic

#1 manhti14

manhti14

    biết pan

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

Đã gửi 17 August 2015 - 09:22 AM

Công ty e làm hay có bản vẽ tự động, khi làm việc thì chỉ cần hiện ra một số layer và e muốn đổi màu 1 số layer để cho dễ nhìn.

Em nhờ mọi người viết hộ e cái lisp để đổi màu với ẩn nhiều layer bằng 1 command "chinhlayer", em xin cảm ơn

 

Nội dung cụ thể:

 

Ẩn các layer:   141,   161,   174,   202,   211,  269,   271,   278,   284

Đổi màu các layer:        14 sang màu 5, 160 sang màu 4, 163 sang màu 6, 178 sang màu 6, 185 sang màu 1, 197 sang màu 6, 21 sang màu 40, 22 sang màu 40, 23 sang màu 40

 

 

Tuy nhiên đôi khi có một số layer ko có trong bản vẽ.

 

Em xin cảm ơn.

 

 


  • -1

#2 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 17 August 2015 - 09:55 AM

Ô tranh thủ quick code cho bạn cho đỡ quên. Chưa test nha ^^

(defun c:chinhlayer(/ cl l c n a)
	(vl-load-com)  
	(setq	cl '((14 . 5)(160 . 4)(163 . 6)(178 . 6)(185 . 1)(197 . 6)(21 . 40)(22 . 40)(23 . 40))
			l '("141" "161" "174" "202" "211" "269" "271" "278" "284")
			c (getvar 'clayer)
	)	
	(vlax-map-collection
		(vla-get-Layers	(vla-get-ActiveDocument(vlax-get-acad-object)))
		'(lambda(x)
			(if (and (member (setq n (vla-get-name x)) l)(not (eq n c)))(vla-put-LayerOn x :vlax-false))
			(if (setq a	(assoc (vla-get-color x) cl))(vla-put-color x (cdr a)))
		)
	)
	(princ)
)

  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3 manhti14

manhti14

    biết pan

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

Đã gửi 17 August 2015 - 11:18 AM

Em xin cám ơn.

 

Lisp ở trên đã ẩn được các layer cần ẩn.

Có điều không thấy đổi màu layer

 


  • 0

#4 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 17 August 2015 - 11:29 AM

K đổi thì hơi lạ nhỉ. Ừ. Hay ý bạn là layer có tên "14" thì chuyênr thành màu 5 ? Mình đang viết layer có màu 14 chuyển thành màu 5. Vui lòng confirm để mình chỉnh ngay


  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#5 manhti14

manhti14

    biết pan

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

Đã gửi 17 August 2015 - 11:51 AM

Đúng là ý em là layer có tên "14" chuyển sang màu 5, em xin lỗi vì đã ko nói rõ.

Công ty e toàn đặt tên layer bằng số.

 

Cám ơn bác


  • 0

#6 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 17 August 2015 - 11:54 AM

Thế thì còn ngắn hơn :)

(defun c:1(/ cl l c n a)
	(vl-load-com)  
	(setq	cl '(("14" . 5)("160" . 4)("163" . 6)("178" . 6)("185" . 1)("197" . 6)("21" . 40)("22" . 40)("23" . 40))
			l '("141" "161" "174" "202" "211" "269" "271" "278" "284")
			c (getvar 'clayer)
	)	
	(vlax-map-collection
		(vla-get-Layers	(vla-get-ActiveDocument(vlax-get-acad-object)))
		'(lambda(x)
			(if (and (member (setq n (vla-get-name x)) l)(not (eq n c)))(vla-put-LayerOn x :vlax-false))
			(if (setq a	(assoc n cl))(vla-put-color x (cdr a)))
		)
	)
	(princ)
)

  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#7 manhti14

manhti14

    biết pan

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

Đã gửi 17 August 2015 - 11:58 AM

Chạy nuột lắm bác ạ. Em cám ơn bác nhiều


  • 0