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

Lisp chuyển layer và giữ nguyên màu của block

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

Mình cần một lisp chuyển nhanh tất cả các layer của các đối tượng của block về layer của block và vẫn giữ nguyên màu sắc của các đối tượng cũ. Bác nào biết chỉ giúp mình với. Mình tìm trên diễn đàn thì có lisp chuyển tất cả layer của đối tượng về layer của block nhưng lại thay đổi cả màu của các đối tượng trong block ấy.

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 thử cái này.


(defun c:tmp()
  (vl-load-com)
  (setq v (car (entsel))
lay (cdr (assoc 8 (entget v)))
name (vla-get-effectivename (vlax-ename->vla-object v)))
  (if (tblsearch "BLOCK" name)
    (progn
      (setq en (tblobjname "BLOCK" name))
      (while (setq en (entnext en))
        (entmod (subst (cons 8 lay) (assoc 8 (entget en)) (entget en)))
        (entupd en)
      ))
  )
  (vla-regen (vla-get-ActiveDocument (vlax-get-acad-object))  acAllViewports)
)

  • 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 Tot77 ơi minh dùng lisp này thì thấy có block chuyển được mà vẫn giữ nguyên màu sắc ban đầu nhưng vẫn có block chuyển thì bị thay đổi màu hết. Mình không hiểu lỗi ở đâu. Bạn kiểm tra hộ mình với! thank!

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 có phải màu của entity đó có phải là bylayer

không? nếu đúng thì đương nhiên nó sẽ phải đổi màu, còn không thì bạn gửi file lên tôi test lại.

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

Vậy bạn có biết cách nào để chuyển layer của entify đó để không còn là bylayer rồi dùng tiếp lisp của bạn không? như là kết hợp 2 lisp ấy!

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 đó bạn phải định nghĩa lại block, insert rồi nổ ra, cho từng cái theo màu bạn muốn rồi block nó lại, miễn sao không có cái nào có màu bylayer là được.

Bạn gửi lisp lên (gửi qua mediafire).

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

Mình có một lisp chuyển về layer hiện hành nhưng vẫn giữ nguyên màu sắc...nhưng lại không áp dụng được với block. Nếu bạn hiểu về autolisp thì sửa giúp mình với!http://www.cadviet.com/upfiles/3/81217_kk_chuyen_layer_va_giu_nguyen_mau.lsp

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 dùng thử cái này có tính trường hợp bylayer, còn cái lisp của bạn chưa down được, link cadviet up được mà down không được.


(defun c:tmp()
  (defun dxf(id v) (cdr (assoc id (entget v))))
  
  (vl-load-com)
  (setq v (car (entsel))
lay (dxf 8 v)
name (vla-get-effectivename (vlax-ename->vla-object v)))
  (if (tblsearch "BLOCK" name)
    (progn
      (setq en (tblobjname "BLOCK" name))
      (while (setq en (entnext en))
(if (not (dxf 62 en))
 (entmod (cons (assoc 62 (tblsearch "LAYER" (dxf 8 en))) (entget en))))
        (entmod (subst (cons 8 lay) (assoc 8 (entget en)) (entget en)))
        (entupd en)
      ))
  )
  (vla-regen (vla-get-ActiveDocument (vlax-get-acad-object))  acAllViewports)
)

  • 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  

×