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

Chuyển các đối tượng về 1 layer ngay cả block

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

Trên diễn đàn mình thấy có lisp này ( http://www.cadviet.com/forum/topic/13677-yeu-cau-lisp-chuyen-cac-doi-tuong-ve-1-layer/) rất hay nhưng mình chỉ chuyển được các đối tượng bình thường. Đây là lisp bác Nguyễn Hoành ạ.

Cụ thể:
Chuyển các đối tượng là DIM về layer DIM
Chuyển các đối tượng là HATCH về layer HATCH
Chuyển các đối tượng là TEXT về layer TEXT


Chuyển các đối tượng là BLOCK về layer BLOCK

Còn trong block thì nó vẫn còn nguyên. Mong mấy bác giúp em phần này với. Vì bản vẽ em rất nhiều block nhỏ. Lại được định nét từa lưa. Nên quản lý rất khó. In cũng khó. Cảm ơn các bác nhiều.

  • 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

Bạn xem thử cái này:

http://www.cadviet.com/forum/topic/69598-nho-giup-do-cach-doi-duong-net-trong-block/

Mình đã từng thắc9 mắc giống như bạn.giờ thì mình đã sữ dụng và chỉnh sữa lisp của bác Kangkhung cho

hù hợp với công việc của mình được rồi.

  • 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

●  
     Úp cho các bác giúp em với                                                                                                                        
:camdong:

 

  • Vote tăng 1
  • Vote giảm 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

Lisp đây. Gõ lệnh Test xong toàn bộ đối tượng trên bản vẽ được chuyển về layer cùng tên, kể cả block.

(defun C:test( / layname)
  (vl-load-com)
  (vlax-for for-item (vla-get-blocks(vla-get-activedocument(vlax-get-acad-object)))
    (vlax-for item for-item
      (if (not (tblsearch "LAYER" (setq layname (substr (vla-get-ObjectName item) 5))))
	(vla-add(vla-get-layers(vla-get-ActiveDocument(vlax-get-acad-object))) layname)
	)
      (vla-put-layer item layname)
      )
    )
  )
  • 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

Như thế cũng tốt lắm bác ơi. Nhưng em muốn nó chỉ chuyển hatch sang layer A, dim layer B, leader layer C và text layer D thôi. Em chỉ cần 4 thằng này thôi bác. Như cái lisp kia kìa. Nó cấu cấu trúc thế này bác ơi!

(CHANGE-LAYER "DIMENSION" "KICH THUOC") (CHANGE-LAYER "*TEXT" "TEXT") (CHANGE-LAYER "HATCH" "HATCH") (CHANGE-LAYER "*LEADER" "KIHIEU"))

(defun CHANGE-LAYER (_TYPE LAYER / OBJS)
 (setq OBJS (ssget "X" (list (cons 0 _TYPE))))
 (if (not (tblsearch "layer" LAYER))
  (command ".layer" "m" LAYER "")
 );_ end if
 (command ".chprop" OBJS "" "la" LAYER "")
 (princ)
);_ end defun
(defun C:12 (/ OBJS) (CHANGE-LAYER "DIMENSION" "KICH THUOC") (CHANGE-LAYER "*TEXT" "TEXT") (CHANGE-LAYER "HATCH" "HATCH") (CHANGE-LAYER "*LEADER" "KIHIEU"))
(d
;; free lisp from cadviet.com
(defun CHANGE-LAYER (_TYPE LAYER / OBJS)
 (setq OBJS (ssget "X" (list (cons 0 _TYPE))))
 (if (not (tblsearch "layer" LAYER))
  (command ".layer" "m" LAYER "")
 );_ end if
 (command ".chprop" OBJS "" "la" LAYER "")
 (princ)
);_ end defun
(defun C:12 (/ OBJS) (CHANGE-LAYER "DIMENSION" "KICH THUOC") (CHANGE-LAYER "*TEXT" "TEXT") (CHANGE-LAYER "HATCH" "HATCH") (CHANGE-LAYER "*LEADER" "KIHIEU"))
(d
 
;; free lisp from cadviet.com
(defun CHANGE-LAYER (_TYPE LAYER / OBJS)
 (setq OBJS (ssget "X" (list (cons 0 _TYPE))))
 (if (not (tblsearch "layer" LAYER))
  (command ".layer" "m" LAYER "")
 );_ end if
 (command ".chprop" OBJS "" "la" LAYER "")
 (princ)
);_ end defun
(defun C:12 (/ OBJS) (CHANGE-LAYER "DIMENSION" "KICH THUOC") (CHANGE-LAYER "*TEXT" "TEXT") (CHANGE-LAYER "HATCH" "HATCH") (CHANGE-LAYER "*LEADER" "KIHIEU"))
(d
 
;; free lisp from cadviet.com
(defun CHANGE-LAYER (_TYPE LAYER / OBJS)
 (setq OBJS (ssget "X" (list (cons 0 _TYPE))))
 (if (not (tblsearch "layer" LAYER))
  (command ".layer" "m" LAYER "")
 );_ end if
 (command ".chprop" OBJS "" "la" LAYER "")
 (princ)
);_ end defun
(defun C:12 (/ OBJS) (CHANGE-LAYER "DIMENSION" "KICH THUOC") (CHANGE-LAYER "*TEXT" "TEXT") (CHANGE-LAYER "HATCH" "HATCH") (CHANGE-LAYER "*LEADER" "KIHIEU"))
(d
 
;; free lisp from cadviet.com
(defun CHANGE-LAYER (_TYPE LAYER / OBJS)
 (setq OBJS (ssget "X" (list (cons 0 _TYPE))))
 (if (not (tblsearch "layer" LAYER))
  (command ".layer" "m" LAYER "")
 );_ end if
 (command ".chprop" OBJS "" "la" LAYER "")
 (princ)
);_ end defun
(defun C:12 (/ OBJS) (CHANGE-LAYER "DIMENSION" "KICH THUOC") (CHANGE-LAYER "*TEXT" "TEXT") (CHANGE-LAYER "HATCH" "HATCH") (CHANGE-LAYER "*LEADER" "KIHIEU"))
(d
  • Vote tăng 1
  • Vote giảm 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

Cái lisp của bác nó tạo ra nhiều layer quá. Nên hơi rối bác ạ. Nếu em muốn thêm đối tượng nào ngoài 4 thằng trên thì tự em thêm vào. Còn cái lisp trên của bác nó đổi hết. Nên ngoài ý muốn của em rồi bác ạ. Mong bác sửa lại giúp em hộ tí ạ. Cảm ơn bác nhiều.

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

<pre class="_prettyXprint _lang-sql">

(defun C:test ()

(vl-load-com)

(if (not (tblsearch "LAYER" "A"))

(vla-add (vla-get-layers(vla-get-ActiveDocument (vlax-get-acad-object))) "A"))

(if (not (tblsearch "LAYER" "B"))

(vla-add (vla-get-layers(vla-get-ActiveDocument (vlax-get-acad-object))) "B"))

(if (not (tblsearch "LAYER" "C"))

(vla-add (vla-get-layers(vla-get-ActiveDocument (vlax-get-acad-object))) "C"))

(if (not (tblsearch "LAYER" "D"))

(vla-add (vla-get-layers(vla-get-ActiveDocument (vlax-get-acad-object))) "D"))

(vlax-for for-item(vla-get-blocks(vla-get-activedocument (vlax-get-acad-object)))

(vlax-for item for-item

(if (wcmatch (vla-get-ObjectName item) "*Hatch*")

(vla-put-layer item "A")

)

(if (wcmatch (vla-get-ObjectName item) "*Dim*")

(vla-put-layer item "B")

)

(if (wcmatch (vla-get-ObjectName item) "*Leader*")

(vla-put-layer item "C")

)

(if (wcmatch (vla-get-ObjectName item) "*Text*")

(vla-put-layer item "D")

)

)

)

)

</pre>

<p>Lisp trên chỉ tạo ra 4 layer theo yêu cầu của bạn</p>

  • 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

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  

×