Đến nội dung


Hình ảnh

Làm sao để chuyển line weight trong block thành bylayer?


  • Please log in to reply
14 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 27 June 2013 - 11:55 PM

Như tiêu đề ạ. Các bác cho em hỏi Làm sao để chuyển line weight trong block thành bylayer ở tất cả các block. Chứ em kích  bedit từng block thì lâu lắm ạ. Tại nhiều khi em xuất từ revit sang cad nó rất có nhiều block con. Mà block nhiều khi nét nó mặc định là nét 0.2 hay 0.3 chẳng hạn. Em muốn nó thành bylayer hết ạ. Thank's các bác nhiều ạ!


  • 0
905921755

#2 KangKung

KangKung

    biết lệnh array

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

Đã gửi 28 June 2013 - 08:25 AM

Bạn thử Lisp này xem:

(defun C:TEST( / i taphop lst blocklist)
  (vl-load-com)
  (command "UNDO" "BE")
  (princ "\n Chon Block can chuyen: ")
  (setq taphop(ssget '((0 . "INSERT"))))
  (setq i 0 lst(list))
  (while (< i (sslength taphop))
    (setq lst(append lst (list (cdr(assoc 2 (entget(ssname taphop i)))))))
    (setq i (1+ i)))
  (setq blocklist (list))
  (vlax-for for-item (vla-get-blocks(vla-get-activedocument(vlax-get-acad-object)))
    (if (/= (vl-position (vla-get-name for-item) lst) nil)
      (setq blocklist (append blocklist (list for-item)))
      )
    )
  (foreach block blocklist
    (vlax-for aa block
      (vla-put-Lineweight aa -1)
      )
    )
  (command "REGEN")
  (command "UNDO" "END")
  (princ)
  )

  • 2

#3 kslethanh

kslethanh

    biết vẽ arc

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

Đã gửi 28 June 2013 - 11:46 AM

ui. Được rồi bác ạ. Cảm ơn bác nhiều. Chỉ còn 1 tí xíu nữa là nó trọn vẹn. Bác có thể sửa thêm. Vì trong block có block thì nó vẫn còn nguyên bác ạ ^^


  • 0
905921755

#4 KangKung

KangKung

    biết lệnh array

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

Đã gửi 28 June 2013 - 01:19 PM

Vậy thì bạn copy/paste dòng này vào command line của Cad thì toàn bộ đối tượng trong bản vẽ có lineweight sẽ chuyển về ByLayer hết.

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

  • 1

#5 kslethanh

kslethanh

    biết vẽ arc

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

Đã gửi 28 June 2013 - 02:52 PM

Dạ được rồi bác ạ. Nhưng Cái này sài sao bác. Chẳng lẽ em phải nhớ đoạn code này hoặc lưu ở đâu đó. Mỗi lần dùng là copy ra à bác ^^


  • 0
905921755

#6 KangKung

KangKung

    biết lệnh array

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

Đã gửi 28 June 2013 - 04:21 PM

Thì sài như hướng dẫn ở trên. Cứ copy/paste vào command line thôi. Nếu muốn thành file Lisp thì dùng cái này:

(defun C:DLW()
  (vl-load-com)
  (command "UNDO" "BE")
  (vlax-for for-item (vla-get-blocks(vla-get-activedocument(vlax-get-acad-object)))
    (vlax-for item for-item
      (vla-put-Lineweight item -1)
      )
    )
  (command "UNDO" "END")
  (princ)
  )

  • 3

#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 28 June 2013 - 06:20 PM

Cảm ơn bác nhiều ạ!


  • 0
905921755

#8 kslethanh

kslethanh

    biết vẽ arc

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

Đã gửi 28 June 2013 - 06:38 PM

À bác ơi cho em hỏi. Trong autocad có lệnh gộp layer nhưng phải vẽ ra rồi kích từng layer rất lâu ạ. Có lisp nào mình đánh lệnh và chọn tên layer gộp là xong không ạ! ^^


  • 0
905921755

#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 28 June 2013 - 06:39 PM

Ui. Xong rồi ạ. vẫn lệnh đó. Bấm name là xong ^^


  • 0
905921755

#10 tbinhvn

tbinhvn

    biết pan

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

Đã gửi 15 October 2013 - 10:15 AM

Thì sài như hướng dẫn ở trên. Cứ copy/paste vào command line thôi. Nếu muốn thành file Lisp thì dùng cái này:

(defun C:DLW()
  (vl-load-com)
  (command "UNDO" "BE")
  (vlax-for for-item (vla-get-blocks(vla-get-activedocument(vlax-get-acad-object)))
    (vlax-for item for-item
      (vla-put-Lineweight item -1)
      )
    )
  (command "UNDO" "END")
  (princ)
  )

Bác KangKung làm ơn bổ xung tính năng thay đổi Color thành Bylayer nữa ạ. Lisp của bác rất hay! Cảm ơn bác nhiều!


  • 0

#11 KangKung

KangKung

    biết lệnh array

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

Đã gửi 15 October 2013 - 12:24 PM

Lisp chuyển màu, linetype, lineweight tất cả các đối tượng trong bản vẽ về ByLayer.

(defun C:ByLayer()
  (vl-load-com)
  (vla-startundomark (vla-get-activedocument(vlax-get-acad-object)))
  (vlax-for for-item (vla-get-blocks(vla-get-activedocument(vlax-get-acad-object)))
    (vlax-for item for-item
      (vla-put-Lineweight item -1)
      (vla-put-color item 256)
      (vla-put-linetype item "ByLayer")
      )
    )
  (vla-endundomark (vla-get-activedocument(vlax-get-acad-object)))
  (princ)
  )

  • 4

#12 sgcq

sgcq

    Hội Hai Lúa

  • Members
  • PipPipPipPipPipPipPip
  • 1880 Bài viết
Điểm đánh giá: 692 (tốt)

Đã gửi 15 October 2013 - 12:32 PM

:D :D :D

Có người ngứa mắt khi bắt gặp 2 lúa lụi. Dù vậy cũng phải nói ths.

:D :D :D


  • 2

12728974_230210507314169_718723558582070 HỘI HAI LÚA

           fanpage: https://www.facebook.com/HoiHaiLua/

 

 

 

 

 

 


#13 tbinhvn

tbinhvn

    biết pan

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

Đã gửi 15 October 2013 - 02:09 PM

Em là nông dân chính hiệu, bác sgcq chém nhẹ tay thôi ạ!

Thanks các bác!!!!


  • 0

#14 nguyenbinbin

nguyenbinbin

    biết zoom

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

Đã gửi 15 October 2013 - 02:42 PM

Các bác giúp em với, tình hình là em đang sài cad 2007 jo chuyển sang dùng cad 2012, hiện giờ có cái list chạy cắt ngang nó chạy trên cad 2007 em k biết cách chỉnh thế nào để cho list đó chạy trên cad 2012 các pro giúp em vởi, em cám ơn nhiều


  • 0

#15 sgcq

sgcq

    Hội Hai Lúa

  • Members
  • PipPipPipPipPipPipPip
  • 1880 Bài viết
Điểm đánh giá: 692 (tốt)

Đã gửi 15 October 2013 - 02:44 PM

Em là nông dân chính hiệu, bác sgcq chém nhẹ tay thôi ạ!

Thanks các bác!!!!

:D :D :D

Bác cũng là nông dân à! 

- 2 lúa thì ở đây cũng nhiều người biết. (Vào trước nên gọi là anh 2)

- Vậy bác là anh 3 nhé.

:D :D :D


  • 0

12728974_230210507314169_718723558582070 HỘI HAI LÚA

           fanpage: https://www.facebook.com/HoiHaiLua/