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

Lisp đổi màu text sau khi sửa

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

nhiều lúc cần sửa 1 bảng dữ liệu trong cad, thi thoảng lại nhầm hay quên là mình đã sửa đến đâu, đã sửa những gì rồi.

các bác giúp em cái lisp, text sau khi sửa nội dung sẽ tự chuyển sang màu khác được không ạh.

 

xin đa tạ các bác nhiều 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
nhiều lúc cần sửa 1 bảng dữ liệu trong cad, thi thoảng lại nhầm hay quên là mình đã sửa đến đâu, đã sửa những gì rồi.

các bác giúp em cái lisp, text sau khi sửa nội dung sẽ tự chuyển sang màu khác được không ạh.

 

xin đa tạ các bác nhiều nhiều.

Đôi lúc tìm lại các bài viết thật sự là khó khăn.

Nó ở đây : Bài viết số 911 - Viết Lisp theo yêu cầu Phần 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

có vấn đề xảy ra là :

- khi gõ lệnh CTE và gõ 2 lần dấu cách (không sửa text) thì báo lỗi là "Unknown Command"

- mình muốn tạo vòng lặp, để có thể chỉ gõ lệnh 1 lần mà sửa xong text này có thể chọn lại text khác để sửa mà ko cần fải gõ lại lệnh lần nữa.

 

Thanks!!

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ó vấn đề xảy ra là :

- khi gõ lệnh CTE và gõ 2 lần dấu cách (không sửa text) thì báo lỗi là "Unknown Command"

- mình muốn tạo vòng lặp, để có thể chỉ gõ lệnh 1 lần mà sửa xong text này có thể chọn lại text khác để sửa mà ko cần fải gõ lại lệnh lần nữa.

 

Thanks!!

Bạn sử dụng lại Code này Tue_NV viết lại thử xem :

(defun c:CTE()
(setq dt (entsel "\n Vao doi tuong text can sua: "))
(while (null dt) (setq dt (entsel "\n Vao doi tuong text can sua: ")))
(while dt
(setq ent (car dt))
(if (= (cdr(assoc 0 (entget ent))) "TEXT")
   (progn
(setq cont (cdr(assoc 1 (entget ent))))
(command ".ddedit" ent "")
  (if (/= (setq contt (cdr(assoc 1 (entget ent)))) cont)
	(command ".chprop" ent "" "c" "1" "")
  )
   )
 )
(setq dt (entsel "\n Vao doi tuong text can sua: "))	
)

(princ)
)

Chỉnh sửa theo Tue_NV

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ó vấn đề trong Lisp của bạn :

 

- không sửa text thì ấn dấu cách ko thoát lệnh

- không sửa được MTEXT mặc dù đã thêm lựa chọn MTEXT bên cạnh TEXT :bigsmile:

 

đó là vấn đề khi mình dúng lisp trên, bạn check lại xem nhé.

 

THANKS!!

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ó vấn đề trong Lisp của bạn :

 

- không sửa text thì ấn dấu cách ko thoát lệnh

- không sửa được MTEXT mặc dù đã thêm lựa chọn MTEXT bên cạnh TEXT :bigsmile:

 

đó là vấn đề khi mình dúng lisp trên, bạn check lại xem nhé.

 

THANKS!!

Cảm ơn Nataca. Tue_NV đã ứng dụng thành công hàm grread trong đoạn Code này

@ hdg2318

Hãy chạy lại thử đoạn Code này. Hy vọng bạn hài lòng :

 

(defun c:CTE ()

(setq mouse nil)

(prompt "\n Chon doi tuong :")

(while (/= (car mouse) 2)

(setq mouse (grread 0 15 2))

(if (= (car mouse) 3)

(if (and (setq ent (car (nentselp (cadr mouse))))

(wcmatch (cdr(assoc 0 (entget ent))) "*TEXT")

)

(progn

(setq cont (cdr(assoc 1 (entget ent))))

(princ "\n doi tuong duoc pick chon/ENTER ke ket thuc chon")

(command ".ddedit" ent "")

(if (/= (setq contt (cdr(assoc 1 (entget ent)))) cont)

(command ".chprop" ent "" "c" "1" "")

 

)

 

(princ "\nChon doi tuong")

)

)

)

)

(princ)

)

:bigsmile:

Chỉnh sửa theo Tue_NV
  • 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ảm ơn Nataca. Tue_NV đã ứng dụng thành công hàm grread trong đoạn Code này

@ hdg2318

Hãy chạy lại thử đoạn Code này. Hy vọng bạn hài lòng :

 

(defun c:CTE ()

(setq mouse nil)

(prompt "\n Chon doi tuong :")

(while (/= (car mouse) 2)

(setq mouse (grread 0 15 2))

(if (= (car mouse) 3)

(if (and (setq ent (car (nentselp (cadr mouse))))

(wcmatch (cdr(assoc 0 (entget ent))) "*TEXT")

)

(progn

(setq cont (cdr(assoc 1 (entget ent))))

(princ "\n doi tuong duoc pick chon/ENTER ke ket thuc chon")

(command ".ddedit" ent "")

(if (/= (setq contt (cdr(assoc 1 (entget ent)))) cont)

(command ".chprop" ent "" "c" "1" "")

 

)

 

(princ "\nChon doi tuong")

)

)

)

)

(princ)

)

:bigsmile:

Chào bác Tue_NV,

Có một vài thắc mắc nhờ bác giải đáp giùm trong đoạn code trên đây của bác.

1/- Về hàm GRREAD: thực tình mình có đọc thấy cái hàm grread này trong Help của Cad nhưng hoàn toàn chưa hiểu rõ về nó. Một phần do tiếng Anh còn kém, một phần do không thấy có ví dụ minh họa. Bác có thể giải thích đơn giản hơn về chức năng cũng như cú pháp của hàm này được không ạ??? Cụ thể là cái hàm (setq mouse (grread 0 15 2)) nhằm mục đích gì bác nhỉ???

2/- Trong đoạn code trên , hàm (if (/= (setq contt (cdr(assoc 1 (entget ent)))) cont) (command ".chprop" ent "" "c" "1" "") ) Có thể thay bằng (if (/= (cdr(assoc 1 (entget ent))) cont) (command ".chprop" ent "" "c" "1" "") ) cho đơn giản hơn được không??? Bởi vì thực tế cái biến contt của bác chẳng hề được dùng thêm vào chỗ nào nữa cả.

 

Rất mong bác không chê cười vì những thắc mắc dở hơi này bác nhé.

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
Chào bác Tue_NV,

Có một vài thắc mắc nhờ bác giải đáp giùm trong đoạn code trên đây của bác.

1/- Về hàm GRREAD: thực tình mình có đọc thấy cái hàm grread này trong Help của Cad nhưng hoàn toàn chưa hiểu rõ về nó. Một phần do tiếng Anh còn kém, một phần do không thấy có ví dụ minh họa. Bác có thể giải thích đơn giản hơn về chức năng cũng như cú pháp của hàm này được không ạ??? Cụ thể là cái hàm (setq mouse (grread 0 15 2)) nhằm mục đích gì bác nhỉ???

2/- Trong đoạn code trên , hàm (if (/= (setq contt (cdr(assoc 1 (entget ent)))) cont) (command ".chprop" ent "" "c" "1" "") ) Có thể thay bằng (if (/= (cdr(assoc 1 (entget ent))) cont) (command ".chprop" ent "" "c" "1" "") ) cho đơn giản hơn được không??? Bởi vì thực tế cái biến contt của bác chẳng hề được dùng thêm vào chỗ nào nữa cả.

 

Rất mong bác không chê cười vì những thắc mắc dở hơi này bác nhé.

Bác Tuệ viết lisp chưa triệt để, ở đây lúc nào cũng đổi sang màu 1, như vậy nếu các đối tượng đang ở màu 1 rùi thì thế nào đây ? Em đề nghị là thêm dòng if vào để cho triệt để, để khi đối tượng ở màu 1 thì nó đổi sang màu khá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

để khắc phục, có thể chọn màu mà mình ko dùng tới để chọn làm màu cho chữ sau khi được sửa.

vi thông thường ta chỉ hay dùng 5 đến 7 màu trong 1 bản vẽ. (Mình thường dùng không quá 5 mà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

BạnTue_NV chỉnh thêm cho mình dòng lệnh dể chọn đối tượng dim với. Thanks bạn trước nha! 

Bạn sử dụng code này:

 

(defun c:CTE (/ mausac mouse cont contt ent)
(setq mausac "1") ; thay doi mau o day
(setq mouse nil)
(prompt "\n Chon doi tuong :")
(while (/= (car mouse) 2)
(setq mouse (grread 0 15 2))
(if (= (car mouse) 3)
(if (and (setq ent (nentselp (cadr mouse)))
         (or (wcmatch (cdr(assoc 0 (entget (car ent)))) "*TEXT")
    (eq (type (last ent)) 'ENAME)
)
     )
   (progn
(if (and (wcmatch (cdr(assoc 0 (entget (car ent)))) "*TEXT") (null (eq (type (car (last ent))) 'ENAME)))
   (setq cont (cdr(assoc 1 (entget ent))))
)
(princ "\n doi tuong duoc pick chon/ENTER ke ket thuc chon")
(command ".ddedit" ent "")
(if (and (wcmatch (cdr(assoc 0 (entget (car ent)))) "*TEXT") (null (eq (type (car (last ent))) 'ENAME)))
      (if (/= (setq contt (cdr(assoc 1 (entget ent)))) cont)
       (command ".chprop" ent "" "c" mausac "")
      )
)
(if (eq (type (car (last ent))) 'ENAME)
 (if (= (cdr(assoc 0 (entget (setq ent (car (last ent)))))) "DIMENSION")
   (command ".ddedit" ent "" ".DIMOVERRIDE" "dimclrt" mausac "" ent "") )
)
(princ "\nChon doi tuong")
)
)
)
)
(princ)
)

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

Sao khi mình appload xong và gõ lệnh cte thì lisp không hiểu bạn Tue_NV ơi! 

 

Ở dòng command báo gì bạn?

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

 Sau khi go lệnh thi cad báo lỗi: cte Unknown command "CTE".  Press F1 for help.

Xui xẻo cho bạn là lisp bị lỗi do lỗi của forum. Tôi sửa lại giùm đây:

 

(defun c:CTE (/ mausac mouse cont contt ent)
 (setq mausac "1") ; thay doi mau o day
 (setq mouse nil)
 (prompt "\n Chon doi tuong :")
 (while (/= (car mouse) 2)
  (setq mouse (grread 0 15 2))
  (if (= (car mouse) 3)
   (if
    (and 
(setq ent (nentselp (cadr mouse)))
(or 
      (wcmatch (cdr (assoc 0 (entget (car ent)))) "*TEXT")
   (eq (type (last ent)) 'ENAME)))
 (progn
     (if
 (and 
  (wcmatch (cdr (assoc 0 (entget (car ent)))) "*TEXT")
  (null (eq (type (car (last ent))) 'ENAME)))
   (setq cont (cdr (assoc 1 (entget ent)))))
     (princ "\n doi tuong duoc pick chon/ENTER ke ket thuc chon")
     (command ".ddedit" ent "")
     (if
 (and
  (wcmatch (cdr (assoc 0 (entget (car ent)))) "*TEXT")
  (null (eq (type (car (last ent))) 'ENAME)))
 (if (/= (setq contt (cdr (assoc 1 (entget ent)))) cont)
  (command ".chprop" ent "" "c" mausac "")))
    (if (eq (type (car (last ent))) 'ENAME)
     (if (= (cdr (assoc 0 (entget (setq ent (car (last ent)))))) "DIMENSION")
      (command ".ddedit" ent "" ".DIMOVERRIDE" "dimclrt" mausac "" ent "")))
     (princ "\nChon doi tuong")))))
 (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

File bị sao mà mình down về không được bạn ơi! 

Mình sợ bị lỗi code trên diễn đàn nên mới up file lên CADVIET

Bạn dùng link này thử nhé: http://www.mediafire.com/download/7i7ttx233l84s4f/cte+%282%29.lsp

  • 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

File bị sao mà mình down về không được bạn ơi! 

Mình down  về được rồi, tuy nhiên ở phần chọn dim nhưng chưa sữa dim vẫn đổi màu. Cảm ơn bạn Tue_NV nhiều lắm nha! Dù up lên nhiều lần, nhưng diễn dàn bị lỗi không down  về được nhưng bạn vẫn nhiệt tình chia sẽ cho anh,em. Cuối cùng thì mình cũng down về được rồi, lisp rất hữu ích cho mình trong công việc. Chúc bạn được nhiều sức khoẻ và thành cô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

 

 

(defun c:CTE (/ mausac mouse cont contt ent)
(setq mausac "1") ; thay doi mau o day
(setq mouse nil)
(prompt "\n Chon doi tuong :")
(while (/= (car mouse) 2)
(setq mouse (grread 0 15 2))
(if (= (car mouse) 3)
(if (and (setq ent (nentselp (cadr mouse)))
         (or (wcmatch (cdr(assoc 0 (entget (car ent)))) "*TEXT")
          (eq (type (last ent)) 'ENAME)
)
     )
   (progn
(if (and (wcmatch (cdr(assoc 0 (entget (car ent)))) "*TEXT") (null (eq (type (car (last ent))) 'ENAME)))
   (setq cont (cdr(assoc 1 (entget (car ent)))))
)
(princ "\n doi tuong duoc pick chon/ENTER ke ket thuc chon")
(command ".ddedit" ent "")
(if (and (wcmatch (cdr(assoc 0 (entget (car ent)))) "*TEXT") (null (eq (type (car (last ent))) 'ENAME)))
      (if (/= (setq contt (cdr(assoc 1 (entget (car ent))))) cont)
       (command ".chprop" ent "" "c" mausac "")
      )
)
(if (eq (type (car (last ent))) 'ENAME)
 (if (= (cdr(assoc 0 (entget (setq ent (car (last ent)))))) "DIMENSION")
   (command ".ddedit" ent "" ".DIMOVERRIDE" "dimclrt" mausac "" ent "") )
)
(princ "\nChon doi tuong")
)
)
)
)
(princ)
)

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  

×