Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
46 replies to this topic

#1 hdg2318

hdg2318

    biết lệnh mirror

  • Members
  • PipPipPip
  • 158 Bài viết
Điểm đánh giá: 31 (tàm tạm)

Đã gửi 19 October 2009 - 07:01 PM

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.
  • 0

Có 2 cách để nhìn đời:
1 là : coi như chẳng có gì là huyền diệu
2 là : coi như mọi điều đều huyền diệu


Click here


#2 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3805 (đỉnh cao)

Đã gửi 21 October 2009 - 05:45 AM

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

#3 hdg2318

hdg2318

    biết lệnh mirror

  • Members
  • PipPipPip
  • 158 Bài viết
Điểm đánh giá: 31 (tàm tạm)

Đã gửi 21 October 2009 - 08:17 AM

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!!
  • 0

Có 2 cách để nhìn đời:
1 là : coi như chẳng có gì là huyền diệu
2 là : coi như mọi điều đều huyền diệu


Click here


#4 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3805 (đỉnh cao)

Đã gửi 21 October 2009 - 08:37 AM

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

Bài viết đã được chỉnh sửa nội dung bởi Tue_NV: 21 October 2009 - 09:16 AM

  • 0

#5 hdg2318

hdg2318

    biết lệnh mirror

  • Members
  • PipPipPip
  • 158 Bài viết
Điểm đánh giá: 31 (tàm tạm)

Đã gửi 21 October 2009 - 12:55 PM

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!!
  • 0

Có 2 cách để nhìn đời:
1 là : coi như chẳng có gì là huyền diệu
2 là : coi như mọi điều đều huyền diệu


Click here


#6 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3805 (đỉnh cao)

Đã gửi 21 October 2009 - 05:01 PM

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:

Bài viết đã được chỉnh sửa nội dung bởi Tue_NV: 21 October 2009 - 05:07 PM

  • 2

#7 hdg2318

hdg2318

    biết lệnh mirror

  • Members
  • PipPipPip
  • 158 Bài viết
Điểm đánh giá: 31 (tàm tạm)

Đã gửi 21 October 2009 - 07:32 PM

hì, đúng yêu cầu rồi, cảm ơn Tue_NV nhiều nhiều nha. :bigsmile: :cry: :bigsmile:
  • 0

Có 2 cách để nhìn đời:
1 là : coi như chẳng có gì là huyền diệu
2 là : coi như mọi điều đều huyền diệu


Click here


#8 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 22 October 2009 - 11:58 AM

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é.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#9 hhhhgggg

hhhhgggg

    biết dimedit

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

Đã gửi 30 October 2009 - 05:35 AM

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 !
  • 0
Hoàng Giang

#10 hdg2318

hdg2318

    biết lệnh mirror

  • Members
  • PipPipPip
  • 158 Bài viết
Điểm đánh giá: 31 (tàm tạm)

Đã gửi 31 October 2009 - 08:33 PM

để 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)
  • 0

Có 2 cách để nhìn đời:
1 là : coi như chẳng có gì là huyền diệu
2 là : coi như mọi điều đều huyền diệu


Click here


#11 Han Tinh

Han Tinh

    biết vẽ pline

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

Đã gửi 03 May 2015 - 07:34 PM

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! 


  • 0

#12 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3805 (đỉnh cao)

Đã gửi 04 May 2015 - 05:21 AM

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

  • 0

#13 Han Tinh

Han Tinh

    biết vẽ pline

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

Đã gửi 04 May 2015 - 06:07 AM

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


  • 0

#14 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3805 (đỉnh cao)

Đã gửi 04 May 2015 - 06:22 AM

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?


  • 0

#15 Han Tinh

Han Tinh

    biết vẽ pline

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

Đã gửi 04 May 2015 - 06:53 AM

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


  • 0

#16 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 04 May 2015 - 08:49 AM

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

  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#17 nhoclangbac

nhoclangbac

    biết vẽ circle

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

Đã gửi 04 May 2015 - 11:56 AM

 

 

Không biet Bác Mod có Test chưa chứ chỉnh edit cho Dim xong thì phấn edit cho *Text bị lỗi :wub:


  • 0

#18 nhoclangbac

nhoclangbac

    biết vẽ circle

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

Đã gửi 04 May 2015 - 04:48 PM

Nhoc viết tieng Vietnamese, nếu hỏi có ji sai thì Bác Mod cứ trừ điểm để Nhoc rút kinh nghiệm ạ. Please don't delete my comment -_- !


  • 0

#19 Han Tinh

Han Tinh

    biết vẽ pline

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

Đã gửi 04 May 2015 - 06:42 PM

Bạn Tue_NV và bạn Ha giúp mình với, lam ơn thì làm cho trót luôn nha 2 bạn!(bị lỗi ở phần chọn đối tượng tex  rồi)


  • 0

#20 Han Tinh

Han Tinh

    biết vẽ pline

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

Đã gửi 06 May 2015 - 10:15 PM

Các bạn ơi! Ai biết giúp mình với.


  • 0