Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] lisp lọc tất cả các đối tượng theo màu


  • Please log in to reply
22 replies to this topic

#1 tulamquan

tulamquan

    biết vẽ line

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

Đã gửi 20 May 2011 - 11:19 AM

em đang cần 1 lisp lọc tất cả đối tượng theo mầu (không phân biệt bylayer và mầu), nếu có thể thì trước khi chọn mầu có lựa chọn là có chọn mầu theo lớp hay không, hoặc chọn tất cả đối tượng có cùng 1 mầu không phân biệt có cùng 1 lớp hay không. và giữ lại các đối tượng đó trên bản vẽ các đối tượng không cùng mầu ẩn hết đi. móng các pác giúp đỡ, thankssssssssss :D
  • 0

#2 hoàngbìnhan

hoàngbìnhan

    biết lệnh move

  • Members
  • PipPipPip
  • 128 Bài viết
Điểm đánh giá: 24 (tàm tạm)

Đã gửi 20 May 2011 - 11:22 AM

Cái này bạn có thể dùng lệnh Quick select cũng đc, không cần dùng lisp.
  • 0

#3 xuandao0708

xuandao0708

    biết lệnh scale

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

Đã gửi 20 May 2011 - 01:42 PM

Bạn xem thử lisp này có đúng ý bạn không?
http://www.cadviet.c...p_loc_layer.lsp
  • 1

#4 tulamquan

tulamquan

    biết vẽ line

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

Đã gửi 25 May 2011 - 02:03 PM

Bạn xem thử lisp này có đúng ý bạn không?
http://www.cadviet.c...p_loc_layer.lsp

cảm ơn ban đã trả lời . nhưng mình download về không dùng được lips. Mình thấy bạn tổng hợp nhiều lips trong cùng 1 file quá bạn có thể bỏ bớp đi và up lại lips được ko? thanksssss
  • 0

#5 xuandao0708

xuandao0708

    biết lệnh scale

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

Đã gửi 25 May 2011 - 03:17 PM

Mình dow về bình thường mà bạn. Còn trong đó là do co nhieu hàm chung thôi. Lệnh chính là: loc, tai, chu_so, chu_coso
1- Loc: dùng để lọc các đối tượng theo đối tượng mẫu ( kiểu , lớp, đường, màu)
2- Tai:thực hiện lệnh cad theo 1 số tiêu chuẩn lọc ( Move, Rotate, Copy, Scale, CHange, Mirror, Erase)
3- Chu_so: tách chữ và số ra các lớp riêng biệt
4- Chu_coso: tách lấy chữ có số bắt đầu.
  • 1

#6 ponaparte2003

ponaparte2003

    biết vẽ rectang

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

Đã gửi 25 May 2011 - 04:37 PM

Cần gì phải Lisp hả bạn. bạn gõ lệnh Filter, chọn Color và add to list sau đó apply và bấm P. Thế là bạn chọn được toàn bộ đối tượng có màu mong muốn rồi!
  • 0
Y=acosh(x/a)

#7 hung_bq

hung_bq

    biết pan

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

Đã gửi 20 June 2011 - 02:54 PM

Dùng được bạn à, nhưng mà không lạ lắm!
  • 0

#8 LoveLisp

LoveLisp

    biết lệnh extend

  • Members
  • PipPipPip
  • 195 Bài viết
Điểm đánh giá: 20 (tàm tạm)

Đã gửi 19 March 2013 - 08:45 AM

em đang cần 1 lisp lọc tất cả đối tượng theo mầu (không phân biệt bylayer và mầu), nếu có thể thì trước khi chọn mầu có lựa chọn là có chọn mầu theo lớp hay không, hoặc chọn tất cả đối tượng có cùng 1 mầu không phân biệt có cùng 1 lớp hay không. và giữ lại các đối tượng đó trên bản vẽ các đối tượng không cùng mầu ẩn hết đi. móng các pác giúp đỡ, thankssssssssss biggrin.gif

Theo mình, Quick Select và Filter hoàn toàn không đáp ứng được nhu cầu. Mình xin diễn giải nhu cầu của chủ thớt như sau:

- Tự động tìm kiếm xem trên bản vẽ có bao nhiêu màu (bao gồm cả màu đối tượng và màu của layer). Giả sử có 2 màu là 1 và 2.

- Tạo lớp Color001 và lọc tất cả các đối tượng có màu số 1, bao gồm

     + Tất cả đối tượng có màu 1.

     + Tất cả đối tượng có màu bylayer nằm trên layer có màu 1.

     + Tất cả đối tượng con trong Block đáp ứng 2 điều kiện trên.

        -> sau đó chuyển về tất cả về lớp Color001.

- Tiếp tục cho lớp Color002.

- Kết quả: Sau khi thực hiện xong Lisp, màu của bản vẽ không có gì thay đổi, trong bản vẽ có bao nhiêu màu thì sẽ có bấy nhiêu layer được tạo ra và chứa đúng đối tượng có màu đó. Riêng với đối tượng Dimension mình chưa biết phải làm thế nào, vì nó là đối tượng phức và bản thân nó có thể có nhiều màu khác nhau (cho mũi tên, text và đường gióng nữa).

 

Đây là yêu cầu, còn thực hiện nó không hề đơn giản chỉ một câu lệnh.


  • 0

#9 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 19 March 2013 - 10:08 AM

Ll đào sâu quá ^^ Cái bạn diễn giải mình thấy chả giống ý chủ 2pic tẹo nào :)) Người ta muốn isolate object thôi, tạo với chuyển layer j đâu :) xét các đối tượng đơn thì hiện tại quá đơn giản, xét các đối tượng phức (mline, mtext, dim, leader ...) thì mình k nhầm là chưa làm đc. Theo chiều ngược lại, việc tách đối tượng đơn ra khỏi đối tượng phức cũng k ý nghĩa trong thao tác, vì thao tác select sau đó k thể chọn mỗi nested object được => chủ third chắc chỉ đề cập đối tượng mức một ^^
p/s : lisp đổi layer theo màu ket nhớ k nhầm thì bác giabach mần rồi
  • 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


#10 LoveLisp

LoveLisp

    biết lệnh extend

  • Members
  • PipPipPip
  • 195 Bài viết
Điểm đánh giá: 20 (tàm tạm)

Đã gửi 19 March 2013 - 11:16 AM

hihi.. Hơi suy diễn chủ quan một tý! :P

Tại vì mình cũng đang có nhu cầu như vậy nên ... suy đoán mà! Các đối tượng phức (mline, mtext, dim, leader ...) chưa bàn, nhưng với block, giả sử đang xét màu đỏ, mà block nào đó chứa vài đối tượng màu đỏ, mình muốn đưa các đối tượng con đó (nằm bên trong block) vào lớp Color001 liệu có được không nhỉ?!


  • 0

#11 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 19 March 2013 - 11:41 AM

Được!

http://www.cadviet.c...440#entry224440


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#12 LoveLisp

LoveLisp

    biết lệnh extend

  • Members
  • PipPipPip
  • 195 Bài viết
Điểm đánh giá: 20 (tàm tạm)

Đã gửi 19 March 2013 - 11:45 AM

Mình đã xem lisp của bác GiaBach rồi

Link: http://www.cadviet.c...eu-cau/page-126, bài #2511.

Nó chưa xét đến Block, bác Doan Van Ha có thể cải tiến nó lại được không?

Hóng! :D


  • 0

#13 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 19 March 2013 - 11:52 AM

Bạn xem link tôi vừa edit ở bài viết trên rồi biến tấu thôi.


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#14 LoveLisp

LoveLisp

    biết lệnh extend

  • Members
  • PipPipPip
  • 195 Bài viết
Điểm đánh giá: 20 (tàm tạm)

Đã gửi 19 March 2013 - 12:15 PM

hehe cám ơn bác. Xong thì mình sẽ upload lại ở đây để mọi người dùng.


  • 0

#15 LoveLisp

LoveLisp

    biết lệnh extend

  • Members
  • PipPipPip
  • 195 Bài viết
Điểm đánh giá: 20 (tàm tạm)

Đã gửi 19 March 2013 - 02:12 PM

hic.. đúng là lực bất tòng tâm, kiến thức mình nông cạn quá, không đủ sức để làm việc này rồi. Các hàm (vla- với mình vẫn còn là điều bí ẩn, thấy thì rất hay và mạnh mẽ nhưng chưa biết làm thế nào để dùng được! :(


  • 0

#16 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 19 March 2013 - 05:53 PM

Lạ hầy, k có tjan viết n mình nghĩ thế này, Bạn cứ viết một hàm con duyệt list ename và trả về kết quả (( 1 (e1 e2 e3...))(2 (e1 e2 e3 ...))...). Trong đó 1,2 là màu, e1 e2 .. là list ename hoặc vlaobject mang màu đó.
Áp dụng hàm này với các đối tượng trong block (2 vòng vlax-for lồng nhau - tham khảo ở các bài viết chuyển màu đối tượng trong block hoặc lisp c:clear ketxu viết lâu r k nhớ rõ ) và với các đối tượng bên ngoài.
Sau đó là làm 2 phát mapcar lồng nhau với list kết quả (tại layer theo car item và mapcar vla-put-layer cho sub list tương ứng) -> sẽ thấy nhàn vô cùng ^^
Còn với ý định thay đổi layer các thành phần của dimension thì mình thấy chả lợi gì cả, đừng lao vào nó chi cho mệt. có vào thì phải vào table của dimensionstyle cơ :))
  • 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


#17 KangKung

KangKung

    biết lệnh array

  • Members
  • PipPipPip
  • 189 Bài viết
Điểm đánh giá: 227 (khá)

Đã gửi 24 March 2013 - 03:21 PM

Theo mình, Quick Select và Filter hoàn toàn không đáp ứng được nhu cầu. Mình xin diễn giải nhu cầu của chủ thớt như sau:

- Tự động tìm kiếm xem trên bản vẽ có bao nhiêu màu (bao gồm cả màu đối tượng và màu của layer). Giả sử có 2 màu là 1 và 2.

- Tạo lớp Color001 và lọc tất cả các đối tượng có màu số 1, bao gồm

     + Tất cả đối tượng có màu 1.

     + Tất cả đối tượng có màu bylayer nằm trên layer có màu 1.

     + Tất cả đối tượng con trong Block đáp ứng 2 điều kiện trên.

        -> sau đó chuyển về tất cả về lớp Color001.

- Tiếp tục cho lớp Color002.

- Kết quả: Sau khi thực hiện xong Lisp, màu của bản vẽ không có gì thay đổi, trong bản vẽ có bao nhiêu màu thì sẽ có bấy nhiêu layer được tạo ra và chứa đúng đối tượng có màu đó. Riêng với đối tượng Dimension mình chưa biết phải làm thế nào, vì nó là đối tượng phức và bản thân nó có thể có nhiều màu khác nhau (cho mũi tên, text và đường gióng nữa).

 

Đây là yêu cầu, còn thực hiện nó không hề đơn giản chỉ một câu lệnh.

 

Lisp đây lisp đây.....

Lisp này chuyển tất tần tật các loại đối tượng trên bản vẽ (Model hay Layout đều chơi tất) có màu giống nhau về layer tương ứng với màu đó. (chả biết có chuyển được hết tất  cả các đối tượng không nhưng mà test thử nhiều loại đối tượng như Text, Qleader, Xline, Mline, Hatch v.v... thì OK rồi, Dimension và các đối tượng con trong block của bác LoveLisp cũng chuyển ngon lành luôn).

Các bác dùng xem có vấn đề gì không rồi cho ý kiến và nhớ đừng quên Like em đấy nhé.

http://www.cadviet.c..._cung_layer.lsp

;========LISP CHUYEN DOI TUONG CUNG MAU VE CUNG LAYER==========
;=================KANGKUNG 24/03/2013==========================
(defun C:KK()
  (vl-load-com)
  (command "UNDO" "BE")
  (vlax-for for-item (vla-get-modelspace(vla-get-activedocument (vlax-get-acad-object)))
    (progn
      (if (= (vla-get-color for-item) 256)
	(setq color(cdr (assoc 62 (entget (TBLOBJNAME "LAYER" (vla-get-layer for-item))))))
	(setq color(vla-get-color for-item))
	)
      (if (= (tblsearch "Layer" (strcat "Color_" (rtos color 2 0))) nil)
	(progn
	  (command "LAYER" "N" (strcat "Color_" (rtos color 2 0)) "C" color (strcat "Color_" (rtos color 2 0)) "")
	  (vla-put-layer for-item (strcat "Color_" (rtos color 2 0)))
	  )
	(vla-put-layer for-item (strcat "Color_" (rtos color 2 0)))
	)
      )
    )
  (vlax-for for-item (vla-get-blocks(vla-get-activedocument(vlax-get-acad-object)))
    (vlax-for item (vla-item (vla-get-blocks(vla-get-activedocument(vlax-get-acad-object))) (vla-get-name for-item))
      (if (= (vlax-get-property item 'Color) 256)
	(setq color (cdr (assoc 62 (entget (TBLOBJNAME "LAYER" (vlax-get-property item 'Layer))))))
	(setq color (vlax-get-property item 'Color))
	)
      (if (= 0 color) (setq color 7))
      (if (= (tblsearch "Layer" (strcat "Color_" (rtos color 2 0))) nil)
	(progn
	  (command "LAYER" "N" (strcat "Color_" (rtos color 2 0)) "C" color (strcat "Color_" (rtos color 2 0)) "")
	  (vlax-put-property item 'Layer (strcat "Color_" (rtos color 2 0)))
	  )
	(vlax-put-property item 'Layer (strcat "Color_" (rtos color 2 0)))
	)
      )
    )
  (command "UNDO" "END")
  (princ)
  (alert "Well done!")
  )
(princ "\n                Written By KangKung\n")
(princ "\n           Nhap KK de chay chuong trinh\n")

  • 2

#18 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 24 March 2013 - 04:51 PM

Đúng hay sai cứ Like cái đã. Bạn nhiệt tình quá, có nhiều mem thế này bảo sao CV k mạnh ^^


  • 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


#19 vannguyenvinh

vannguyenvinh

    biết pan

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

Đã gửi 24 March 2013 - 04:53 PM

Nó vẫn dùng được bạn ạ . Nhưng không được tối ưu hóa cho lắm , theo mình bạn nên dùng Filter thì sẽ tốt hơn nhiều 


  • 0

www.cadviet.com

 
 
 
 
 

#20 KangKung

KangKung

    biết lệnh array

  • Members
  • PipPipPip
  • 189 Bài viết
Điểm đánh giá: 227 (khá)

Đã gửi 24 March 2013 - 05:41 PM

Đúng hay sai cứ Like cái đã. Bạn nhiệt tình quá, có nhiều mem thế này bảo sao CV k mạnh ^^

Chuẩn rồi đấy. Két bấm like cho mỏi tay vào nhé.  :D  :D  :D

Đang lúc rỗi rải nên tranh thủ góp vui với anh em CV tí. Tỉ phú thời gian mà.


  • 0