Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
8 replies to this topic

#1 kslethanh

kslethanh

    biết vẽ arc

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

Đã gửi 06 August 2013 - 01:03 PM

Trên diễn đàn mình thấy có lisp này ( http://www.cadviet.c...ong-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.


  • 1
905921755

#2 kslethanh

kslethanh

    biết vẽ arc

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

Đã gửi 09 August 2013 - 04:06 PM

Vẫn không có bác nào giúp em à


  • 1
905921755

#3 anhptq

anhptq

    biết zoom

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

Đã gửi 09 August 2013 - 04:57 PM

Bạn xem thử cái này:
http://www.cadviet.c...et-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.
  • 1

#4 kslethanh

kslethanh

    biết vẽ arc

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

Đã gửi 30 August 2013 - 12:36 PM

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

 


  • 0
905921755

#5 KangKung

KangKung

    biết lệnh array

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

Đã gửi 30 August 2013 - 02:17 PM

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)
      )
    )
  )

  • 1

#6 kslethanh

kslethanh

    biết vẽ arc

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

Đã gửi 30 August 2013 - 02:32 PM

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
;;; this lisp was downloaded from http://www.cadviet.c...showtopic=13677
(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
;;; this lisp was downloaded from http://www.cadviet.c...showtopic=13677
(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
;;; this lisp was downloaded from http://www.cadviet.c...showtopic=13677
(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
;;; this lisp was downloaded from http://www.cadviet.c...showtopic=13677
(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

  • 0
905921755

#7 kslethanh

kslethanh

    biết vẽ arc

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

Đã gửi 30 August 2013 - 02:46 PM

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.


  • 0
905921755

#8 KangKung

KangKung

    biết lệnh array

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

Đã gửi 30 August 2013 - 03:02 PM

<pre class="_prettyXprint _lang-sql">
(defun C:test ()
(vl-load-com)
(if (not (tblsearch &quot;LAYER&quot; &quot;A&quot;))
(vla-add (vla-get-layers(vla-get-ActiveDocument (vlax-get-acad-object))) &quot;A&quot;))
(if (not (tblsearch &quot;LAYER&quot; &quot;B&quot;))
(vla-add (vla-get-layers(vla-get-ActiveDocument (vlax-get-acad-object))) &quot;B&quot;))
(if (not (tblsearch &quot;LAYER&quot; &quot;C&quot;))
(vla-add (vla-get-layers(vla-get-ActiveDocument (vlax-get-acad-object))) &quot;C&quot;))
(if (not (tblsearch &quot;LAYER&quot; &quot;D&quot;))
(vla-add (vla-get-layers(vla-get-ActiveDocument (vlax-get-acad-object))) &quot;D&quot;))
(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) &quot;*Hatch*&quot;)
(vla-put-layer item &quot;A&quot;)
)
(if (wcmatch (vla-get-ObjectName item) &quot;*Dim*&quot;)
(vla-put-layer item &quot;B&quot;)
)
(if (wcmatch (vla-get-ObjectName item) &quot;*Leader*&quot;)
(vla-put-layer item &quot;C&quot;)
)
(if (wcmatch (vla-get-ObjectName item) &quot;*Text*&quot;)
(vla-put-layer item &quot;D&quot;)
)
)
)
)
</pre>
<p>Lisp tr&ecirc;n chỉ tạo ra 4 layer theo y&ecirc;u cầu của bạn</p>
  • 1

#9 kslethanh

kslethanh

    biết vẽ arc

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

Đã gửi 30 August 2013 - 03:19 PM

Ui. Cảm ơn bác nhiều. Thành công rồi bác ạ. Đúng như em cần.


  • 0
905921755