Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
kslethanh

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

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

kslethanh    36

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 ạ!

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
KangKung    229

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)
  )
  • Vote tăng 2

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
kslethanh    36

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 ạ ^^

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
KangKung    229

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)
      )
    )
  • 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
kslethanh    36

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

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
KangKung    229

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)
  )
  • Vote tăng 3

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
kslethanh    36

À 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 ạ! ^^

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
tbinhvn    1

 

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!

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
KangKung    229

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)
  )
  • Vote tăng 4

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
sgcq    701

: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

  • Vote tăng 2

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

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
sgcq    701

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

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


×