Đến nội dung


Hình ảnh
- - - - -

[Nhờ chỉnh sửa]LISP Cập nhật đối tượng vào layer hiện hành


  • Please log in to reply
6 replies to this topic

#1 only102

only102

    biết vẽ pline

  • Advance Member
  • PipPip
  • 63 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 26 December 2011 - 05:50 PM

Mình có lisp này, khi thực hiện lệnh, sẽ cập nhật đối tượng vào layer hiện hành. Nhưng nó chỉ cho phép chuyển layer, còn màu sắc của đối tượng vẫn không thay đổi. Mình muốn thêm phần tự động chuyển màu về bylayer khi thực hiện lệnh này. Mong các bạn sửa giúp mình!
Cảm ơn rất nhiều!

;;; ================== Cap nhat doi tuong vao layer hien hanh ==================
(Defun LAYCUR (/ SS CNT LAY) (setvar "cmdecho" 0)
(if (not (setq SS (ssget "i")))
(progn (prompt "\nChon doi tuong cap nhat vao layer hien hanh: ")
(setq SS (ssget)) ) )
(if SS (progn
(setq CNT (sslength SS)) (princ (strcat "\n" (itoa CNT) " Doi tuong tim thay.")) (command "_.move" SS "")
(if (> (getvar "cmdactive") 0)
(progn
(command "0,0" "0,0") (setq SS (ssget "p") CNT (- CNT (sslength SS)) ) )
(setq SS nil) ) (if (> CNT 0)
(princ (strcat "\n" (itoa CNT) " Doi tuong tren layer LOCK.")) ) ) )
(if SS (progn
(setq LAY (getvar "CLAYER")) (command "_.chprop" SS "" "_la" LAY "")
(if (= (sslength SS) 1)
(prompt (strcat "\n1 doi tuong da cap nhat vao layer : " LAY " (layer hien hanh)."))
(prompt (strcat "\n" (itoa (sslength SS)) " doi tuong da cap nhat vao layer : " LAY " (layer hien hanh).")) ) )) (princ) );end
(defun c:LAYCUR () (laycur)) (defun c:5 () (laycur))

  • 1
Không sợ việc gì khó! Chỉ sợ việc bất khả thi...

#2 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 26 December 2011 - 06:46 PM

Mình có lisp này, khi thực hiện lệnh, sẽ cập nhật đối tượng vào layer hiện hành. Nhưng nó chỉ cho phép chuyển layer, còn màu sắc của đối tượng vẫn không thay đổi. Mình muốn thêm phần tự động chuyển màu về bylayer khi thực hiện lệnh này. Mong các bạn sửa giúp mình!
Cảm ơn rất nhiều!

Hề hề hề,
Bạn bổ sung thêm các ký tự sau : "c" "bylayer" vào dòng code : (command "_.chprop" SS "" "_la" LAY "") để trở thành: (command "_.chprop" SS "" "_la" LAY "c" "bylayer" "") là OK
Chúc bạn vui.
  • 2
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#3 only102

only102

    biết vẽ pline

  • Advance Member
  • PipPip
  • 63 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 26 December 2011 - 07:57 PM

Hề hề hề,
Bạn bổ sung thêm các ký tự sau : "c" "bylayer" vào dòng code : (command "_.chprop" SS "" "_la" LAY "") để trở thành: (command "_.chprop" SS "" "_la" LAY "c" "bylayer" "") là OK
Chúc bạn vui.

WOW! Đúng như ý mình.
Cảm ơn bạn rất nhiều!!!
  • 0
Không sợ việc gì khó! Chỉ sợ việc bất khả thi...

#4 Chiron

Chiron

    biết dimradius

  • Members
  • PipPipPipPipPip
  • 310 Bài viết
Điểm đánh giá: 90 (tàm tạm)

Đã gửi 26 December 2011 - 08:51 PM

Mình có lisp này, khi thực hiện lệnh, sẽ cập nhật đối tượng vào layer hiện hành. Nhưng nó chỉ cho phép chuyển layer, còn màu sắc của đối tượng vẫn không thay đổi. Mình muốn thêm phần tự động chuyển màu về bylayer khi thực hiện lệnh này. Mong các bạn sửa giúp mình!
Cảm ơn rất nhiều!


;;; ================== Cap nhat doi tuong vao layer hien hanh ==================
(Defun LAYCUR (/ SS CNT LAY) (setvar "cmdecho" 0)
(if (not (setq SS (ssget "i")))
(progn (prompt "\nChon doi tuong cap nhat vao layer hien hanh: ")
(setq SS (ssget)) ) )
(if SS (progn
(setq CNT (sslength SS)) (princ (strcat "\n" (itoa CNT) " Doi tuong tim thay.")) (command "_.move" SS "")
(if (> (getvar "cmdactive") 0)
(progn
(command "0,0" "0,0") (setq SS (ssget "p") CNT (- CNT (sslength SS)) ) )
(setq SS nil) ) (if (> CNT 0)
(princ (strcat "\n" (itoa CNT) " Doi tuong tren layer LOCK.")) ) ) )
(if SS (progn
(setq LAY (getvar "CLAYER")) (command "_.chprop" SS "" "_la" LAY "")
(if (= (sslength SS) 1)
(prompt (strcat "\n1 doi tuong da cap nhat vao layer : " LAY " (layer hien hanh)."))
(prompt (strcat "\n" (itoa (sslength SS)) " doi tuong da cap nhat vao layer : " LAY " (layer hien hanh).")) ) )) (princ) );end
(defun c:LAYCUR () (laycur)) (defun c:5 () (laycur))

Mình nghĩ, không cần dùng tới lisp đâu. Bạn có thể dùng lệnh laycur, đây là lệnh của autocad nên không phải load lisp khác.
  • 0

#5 only102

only102

    biết vẽ pline

  • Advance Member
  • PipPip
  • 63 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 26 December 2011 - 09:17 PM

Mình nghĩ, không cần dùng tới lisp đâu. Bạn có thể dùng lệnh laycur, đây là lệnh của autocad nên không phải load lisp khác.

Cảm ơn bạn đã quan tâm!
Lệnh laycur cũng giống lisp này và cũng ko thay đổi được màu tự động về by layer. Còn đoạn lisp trên, thực ra nó nằm trong bộ lisp bật tắt layer của mình và mình muốn thay đổi một chút như đã nêu ở trên cho hợp với công việc mình đang làm.
  • 0
Không sợ việc gì khó! Chỉ sợ việc bất khả thi...

#6 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 26 December 2011 - 09:24 PM

Code lisp này chính là 1 phần trong layer tool xuất hiện từ thời CAD 2004 :)
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#7 vuloixd

vuloixd

    Chưa sử dụng CAD

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

Đã gửi 28 July 2013 - 02:38 PM

Ôi trời, đang cần cái này mà tìm mãi từ sáng tới giờ. thanks các bạn nhé


  • 0