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

[Nhờ chỉnh sửa] Lisp thay đổi màu layer

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

mình tìm đc 1 list thay đổi màu layer nhưng nó thay đổi hết tất cả layer về cùng một màu

 

muốn sửa chọn những đối tượng mình chọn mới thay đổi thành màu khác chứ kg phải thay đổi tất cả layer trong bản vẽ

 

(defun c:dml ()
(command "undo" "be")
(setq ddd (entsel "\nChon doi tuong thuoc lop muon doi mau"))
(while
(null ddd)
(princ "\nChua chon duoc doi tuong! Chon lai")
(setq ddd (entsel "\nChon doi tuong thuoc lop muon doi mau"))
)
 (setq DT (entget (car ddd)))
 (setq LDT (cdr (assoc 8 dt)))
 (princ "\nChon mau muon doi :")(setq m (acad_colordlg 7))
(command "-layer" "c" m LDT "")
(command "undo" "end")
(setvar "MODEMACRO" "**TAILIEUKYTHUAT.COM**")
(princ)
)

  • 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

mình tìm đc 1 list thay đổi màu layer nhưng nó thay đổi hết tất cả layer về cùng một màu

 

muốn sửa chọn những đối tượng mình chọn mới thay đổi thành màu khác chứ kg phải thay đổi tất cả layer trong bản vẽ

 

-Lisp trên chỉ thay đổi màu của layer chứa đối tượng bạn chọn chứ ko phải "hết tất cả layer về cùng một màu".

-Bạn muốn "những đối tượng mình chọn mới thay đổi thành màu khác" nghĩa là thay màu của đối tượng ko còn là bylayer nửa phải ko?

*Nếu vậy thì dùng này:

(defun c:dm (/ m ss)
(command "undo" "be")
 (princ "\nChon doi tuong muon doi mau:")
 (setq ss (ssget))
 (princ "\nChon mau muon doi :")(setq m (acad_colordlg 7))
(command "change" ss "" "P" "c" m "")
(command "undo" "end")
(setvar "MODEMACRO" "**KTS_DUY**")
(princ)
)


 

Tôi đã xoá các bài của kexu và thanhdatkts đề nghị tập trung vào chuyên môn.

@thanhdatkts: đề nghị chồng cho tôi 1 dấu + nếu không tôi chồng cho bạn 1 dấu trừ đấy! :P

  • 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

-Lisp trên chỉ thay đổi màu của layer chứa đối tượng bạn chọn chứ ko phải "hết tất cả layer về cùng một màu".

-Bạn muốn "những đối tượng mình chọn mới thay đổi thành màu khác" nghĩa là thay màu của đối tượng ko còn là bylayer nửa phải ko?

*Nếu vậy thì dùng này:

(defun c:dm (/ m ss)
(command "undo" "be")
 (princ "\nChon doi tuong muon doi mau:")
 (setq ss (ssget))
 (princ "\nChon mau muon doi :")(setq m (acad_colordlg 7))
(command "change" ss "" "P" "c" m "")
(command "undo" "end")
(setvar "MODEMACRO" "**KTS_DUY**")
(princ)
)


 

Tôi đã xoá các bài của kexu và thanhdatkts đề nghị tập trung vào chuyên môn.

@thanhdatkts: đề nghị chồng cho tôi 1 dấu + nếu không tôi chồng cho bạn 1 dấu trừ đấy! tongue.gif

Lisp này dùng rất là hay và tiện dùng.

Bác có thể phát triên lisp này thành một cái tiện hơn nữa. Ví dụ như chỉ cần load lisp này lên sau đó chọn đối tượng=>bấm phím 1, màu đối tượng đó là màu 1...255.

Chắc chắn là bác làm được!

P/S: Sửa lại một chút: sau khi gõ lệnh đổi màu (VD: dm) sau đó chọn đối tượng và bấm phím 1...225 là đối tượng đó đổi màu theo chứ không cần hiện lên cái bảng chọn màu như trong lisp đó nữa.

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 nhớ cái lisp đổi màu mà bạn yêu cầu đã có rồi bạn ah.Hoặc trên cơ sở lisp của bác duy đã viết bạn thay các dòng sau:

"Defun c:1 or 2,3,....225";tên lệnh bạn muốn gán

Xóa dòng sau:(princ "\nChon mau muon doi :")(setq m (acad_colordlg 7))

Và thay đổi dòng này nữa:(command "change" ss "" "P" "c" m "") thành (command "change" ss "" "P" "c" 1 ""); 1 này chính là màu bạn muốn đổi

  • 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

Lisp này dùng rất là hay và tiện dùng.

Bác có thể phát triên lisp này thành một cái tiện hơn nữa. Ví dụ như chỉ cần load lisp này lên sau đó chọn đối tượng=>bấm phím 1, màu đối tượng đó là màu 1...255.

Chắc chắn là bác làm được!

P/S: Sửa lại một chút: sau khi gõ lệnh đổi màu (VD: dm) sau đó chọn đối tượng và bấm phím 1...225 là đối tượng đó đổi màu theo chứ không cần hiện lên cái bảng chọn màu như trong lisp đó nữa.

Sửa 2 dòng: (princ "\nChon mau muon doi :")(setq m (acad_colordlg 7))

Thành 1 dòng: (setq m (getint "\nChon mau muon doi: "))

  • 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

Mình nhớ cái lisp đổi màu mà bạn yêu cầu đã có rồi bạn ah.Hoặc trên cơ sở lisp của bác duy đã viết bạn thay các dòng sau:

"Defun c:1 or 2,3,....225";tên lệnh bạn muốn gán

Xóa dòng sau:(princ "\nChon mau muon doi :")(setq m (acad_colordlg 7))

Và thay đổi dòng này nữa:(command "change" ss "" "P" "c" m "") thành (command "change" ss "" "P" "c" 1 ""); 1 này chính là màu bạn muốn đổi

Cả 2 đều hay! hí

Có lớp nào dạy viết lisp không các 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

Mình nhớ cái lisp đổi màu mà bạn yêu cầu đã có rồi bạn ah.Hoặc trên cơ sở lisp của bác duy đã viết bạn thay các dòng sau:

"Defun c:1 or 2,3,....225";tên lệnh bạn muốn gán

Xóa dòng sau:(princ "\nChon mau muon doi :")(setq m (acad_colordlg 7))

Và thay đổi dòng này nữa:(command "change" ss "" "P" "c" m "") thành (command "change" ss "" "P" "c" 1 ""); 1 này chính là màu bạn muốn đổi

Không được rồi bác ơi, em đã chuyển đổi như hướng dẫn nhưng không được.

Ở dòng Defun c: 1 or 2,3,...225... đấy, bây h em muốn click đối tượng trước sau đó bấm phím 1 thì màu đối tượng đó sẽ là màu 1...tương tự 225 thì màu đối tượng là 225?

Em sửa lisp như trên nhưng không được. Bác xem lại hộ em phát!

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 nhớ cái lisp đổi màu mà bạn yêu cầu đã có rồi bạn ah.Hoặc trên cơ sở lisp của bác duy đã viết bạn thay các dòng sau:

"Defun c:1 or 2,3,....225";tên lệnh bạn muốn gán

Như vậy cần bao nhiêu màu thì phải làm bấy nhiêu defun, mệt chết cd2k44 ơi ^^

http://www.cadviet.com/forum/index.php?showtopic=30733&view=findpost&p=159794

  • 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

-Lisp trên chỉ thay đổi màu của layer chứa đối tượng bạn chọn chứ ko phải "hết tất cả layer về cùng một màu".

-Bạn muốn "những đối tượng mình chọn mới thay đổi thành màu khác" nghĩa là thay màu của đối tượng ko còn là bylayer nửa phải ko?

*Nếu vậy thì dùng này:

(defun c:dm (/ m ss)
(command "undo" "be")
 (princ "\nChon doi tuong muon doi mau:")
 (setq ss (ssget))
 (princ "\nChon mau muon doi :")(setq m (acad_colordlg 7))
(command "change" ss "" "P" "c" m "")
(command "undo" "end")
(setvar "MODEMACRO" "**KTS_DUY**")
(princ)
)


 

Tôi đã xoá các bài của kexu và thanhdatkts đề nghị tập trung vào chuyên môn.

@thanhdatkts: đề nghị chồng cho tôi 1 dấu + nếu không tôi chồng cho bạn 1 dấu trừ đấy! tongue.gif

bác ơi cái lisp của bác là chọn đối tượng nao thì đối tượng đó được chuyển màu chứ không đổi cả màu layer đối tượng đó với lại những đối tượng trong block thì không chuyển được ....bác xem có cai lisp nào khác không cho e xin 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

Đổi màu layer của đối tượng được chọn là lisp trên cùng đó bạn (bài #1).

bác ới cái lisp của bác ấy phải chọn từng đối tương với lại đối tượng trong block thì không chuyển luôn được .... bác có cái lisp nào mà mình chọn nhiều layer đổi cùng đổi màu không kể cả đối tượng trong block...thank 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

Block có thể chứa nhiều layer. Bạn muốn chọn block thì tất cả layer của block đó đều bị đổi màu, đồng thời tất cả các đối tượng bạn chọn thì các layer đều đổi về cùng 1 màu?

Yêu cầu này có vẽ không thực tế lắm.

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

thank bác đã trả lời .....còn cái vấn đề chọn nhiều layer cùng đổi

Block có thể chứa nhiều layer. Bạn muốn chọn block thì tất cả layer của block đó đều bị đổi màu, đồng thời tất cả các đối tượng bạn chọn thì các layer đều đổi về cùng 1 màu?

Yêu cầu này có vẽ không thực tế lắm.

thank bác đã trả lời ... còn vấn để chọn nhiều layer để chuyền màu bác có thể giúp e viết cái lisp đó được 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

 

-Lisp trên chỉ thay đổi màu của layer chứa đối tượng bạn chọn chứ ko phải "hết tất cả layer về cùng một màu".

-Bạn muốn "những đối tượng mình chọn mới thay đổi thành màu khác" nghĩa là thay màu của đối tượng ko còn là bylayer nửa phải ko?

*Nếu vậy thì dùng này:

(defun c:dm (/ m ss)
(command "undo" "be")
  (princ "\nChon doi tuong muon doi mau:")
  (setq ss (ssget))
  (princ "\nChon mau muon doi :")(setq m (acad_colordlg 7))
(command "change" ss "" "P" "c" m "")
(command "undo" "end")
(setvar "MODEMACRO" "**KTS_DUY**")
(princ)
)


Tôi đã xoá các bài của kexu và thanhdatkts đề nghị tập trung vào chuyên môn.

@thanhdatkts: đề nghị chồng cho tôi 1 dấu + nếu không tôi chồng cho bạn 1 dấu trừ đấy! tongue.gif

nhờ các anh sửa giúp em để khi gõ lệnh => Pick chọn đối tượng (theo Layer) => thì tất cả các đối tượng thuộc Layer đó sẽ chuyển thành màu số 4 (Cyan).

cảm ơn các anh!

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

nhờ các anh sửa giúp em để khi gõ lệnh => Pick chọn đối tượng (theo Layer) => thì tất cả các đối tượng thuộc Layer đó sẽ chuyển thành màu số 4 (Cyan).

cảm ơn các anh!

(defun c:dm ( / layy m ss ss1)
(princ "\nChon doi tuong thuoc layer ban muon doi mau:\n")
(setq ss (ssget)) (setq layy (cdr (assoc 8 (entget (ssname ss 0)))))
(setq ss1 (ssget "X" (list (cons 8 layy))))
(setq m (getint "\nChon mau muon doi <4>:\n"))
(if (= m nil) (setq m 4))
(command "_.change" ss1 "" "p" "c" m "")
(princ))

Xài tạm bạn nhé, bẫy lỗi và né lỗi gì gì đó thì bạn tự bổ xung vào nhé!  :D

  • 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

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  

×