Đến nội dung


Hình ảnh

Hỏi cách đổi màu đối tượng trong CAD?


  • Please log in to reply
14 replies to this topic

#1 jacsonchuong

jacsonchuong

    biết zoom

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

Đã gửi 19 October 2009 - 08:39 AM

Chào các bạn! Cho mình hỏi một chút về vấn đề sau:
Mình đã tạo 2 số và 2 vòng tròn bao quanh 2 số đó và đều có màu vàng (1 số tạo trước và 1 số tạo sau). Bây giờ mình muốn đổi màu của cả 2 số sang màu đỏ nhưng chỉ đổi được màu của số 311 còn số 312 thì không đổi được - File ví dụ tải tại đây - file định dạng CAD 2004
Mấy anh, mấy chị làm ơn chỉ các đổi màu bên số 312 dùm em với, em muốn điên với vụ này lun. :bigsmile:
  • 0

#2 khue_architect_1990

khue_architect_1990

    biết zoom

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

Đã gửi 19 October 2009 - 09:16 AM

file của bạn mình tải về nhưung ko đọc đựoc!bạn up ảnh lên nhé !mình cũng chưa hiểu vấn đề bạn hỏi!
  • 0

#3 master_worse

master_worse

    biết lệnh offset

  • Advance Member
  • PipPipPip
  • 170 Bài viết
Điểm đánh giá: 87 (tàm tạm)

Đã gửi 19 October 2009 - 10:54 AM

Chào các bạn! Cho mình hỏi một chút về vấn đề sau:
Mình đã tạo 2 số và 2 vòng tròn bao quanh 2 số đó và đều có màu vàng (1 số tạo trước và 1 số tạo sau). Bây giờ mình muốn đổi màu của cả 2 số sang màu đỏ nhưng chỉ đổi được màu của số 311 còn số 312 thì không đổi được - File ví dụ tải tại đây
Mấy anh, mấy chị làm ơn chỉ các đổi màu bên số 312 dùm em với, em muốn điên với vụ này lun. :bigsmile:


Bạn nhấp đúp vào text 312 rối bôi đen nó - chuyển màu sang ByLayer - thoát ra
bây giờ có thể đổi sang màu khác rồi đó
  • 0

Ngu dốt không đáng thẹn bằng thiếu ý chí học hỏi


Tri thức làm người ta khiêm tốn, ngu si làm người ta kiêu ngạo (Ngạn ngữ Anh)


#4 jacsonchuong

jacsonchuong

    biết zoom

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

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

Bạn nhấp đúp vào text 312 rối bôi đen nó - chuyển màu sang ByLayer - thoát ra
bây giờ có thể đổi sang màu khác rồi đó


Bạn ơi nó nhiều lắm (khoản 1000 số như vậy đó), mình đã thử làm được rồi nhưng nếu làm hết chắc mình chặt tay mình mất :bigsmile: . Có cách này chuyển tất cả (số lượng nhiều) 1 lần được không bạn
  • 0

#5 master_worse

master_worse

    biết lệnh offset

  • Advance Member
  • PipPipPip
  • 170 Bài viết
Điểm đánh giá: 87 (tàm tạm)

Đã gửi 19 October 2009 - 03:29 PM

Bạn ơi nó nhiều lắm (khoản 1000 số như vậy đó), mình đã thử làm được rồi nhưng nếu làm hết chắc mình chặt tay mình mất :bigsmile: . Có cách này chuyển tất cả (số lượng nhiều) 1 lần được không bạn


còn cách dùng lệnh EXPLODE chuyển mtext --> text (nếu không cần phải sử dụng mtext):bigsmile:
  • 1

Ngu dốt không đáng thẹn bằng thiếu ý chí học hỏi


Tri thức làm người ta khiêm tốn, ngu si làm người ta kiêu ngạo (Ngạn ngữ Anh)


#6 tucdrom

tucdrom

    — T — U — N — A —

  • Members
  • PipPipPipPipPipPip
  • 497 Bài viết
Điểm đánh giá: 642 (tốt)

Đã gửi 19 October 2009 - 04:38 PM

Bạn ơi nó nhiều lắm (khoản 1000 số như vậy đó), mình đã thử làm được rồi nhưng nếu làm hết chắc mình chặt tay mình mất :bigsmile: . Có cách này chuyển tất cả (số lượng nhiều) 1 lần được không bạn


Cách 1:Bạn dùng lệnh Fi lọc riêng các text đó ra,sau đó đổi màu đồng loạt cho các text đó
Cách 2:Nếu các text đó nằm trên cùng 1 layer,bạn Layiso layer đó,sau đó thay đổi màu.

  • 0

Email : anhtu2101@gmail.com



 


#7 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 19 October 2009 - 05:05 PM


Cách 1:Bạn dùng lệnh Fi lọc riêng các text đó ra,sau đó đổi màu đồng loạt cho các text đó
Cách 2:Nếu các text đó nằm trên cùng 1 layer,bạn Layiso layer đó,sau đó thay đổi màu.

Nói thực tình : làm như cách tucdrom và master_worse là không nên vì đối tượng là Mtext bị nổ tung ra mất rồi -> mất đi định dạng ban đầu. 2 bạn thử nghĩ lại xem : Tại sao số Mtext 311 lại thay đổi màu được trong khi đó Mtext 312 không đổi màu được????

Tue_NV đang suy nghĩ vấn đề này. Hy vọng là nghĩ ra để giúp cho bạn jacsonchuong :bigsmile:
  • 0

#8 tucdrom

tucdrom

    — T — U — N — A —

  • Members
  • PipPipPipPipPipPip
  • 497 Bài viết
Điểm đánh giá: 642 (tốt)

Đã gửi 19 October 2009 - 05:12 PM

Nói thực tình : làm như cách tucdrom và master_worse là không nên vì đối tượng là Mtext bị nổ tung ra mất rồi -> mất đi định dạng ban đầu. 2 bạn thử nghĩ lại xem : Tại sao số Mtext 311 lại thay đổi màu được trong khi đó Mtext 312 không đổi màu được????

Tue_NV đang suy nghĩ vấn đề này. Hy vọng là nghĩ ra để giúp cho bạn jacsonchuong :bigsmile:

Nguyên nhân là do khi ghi 312 = lệnh Mtext thì màu của số 312 lại để là ByLayer bác ạ.
  • 0

Email : anhtu2101@gmail.com



 


#9 tucdrom

tucdrom

    — T — U — N — A —

  • Members
  • PipPipPipPipPipPip
  • 497 Bài viết
Điểm đánh giá: 642 (tốt)

Đã gửi 19 October 2009 - 05:16 PM

Em nhầm:đúng như bác Tue_NV nói.Tại sao mtext 311 đổi đc màu còn mtext 312 thì ko?Lạ nhỉ? :bigsmile:
  • 0

Email : anhtu2101@gmail.com



 


#10 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 19 October 2009 - 05:17 PM

Nguyên nhân là do khi ghi 312 = lệnh Mtext thì màu của số 312 lại để là ByLayer bác ạ.

Không phải-> bạn kiểm tra lại xem : số 311 và 312 đều ở màu Yellow
  • 0

#11 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 20 October 2009 - 06:53 AM

Chào các bạn! Cho mình hỏi một chút về vấn đề sau:
Mình đã tạo 2 số và 2 vòng tròn bao quanh 2 số đó và đều có màu vàng (1 số tạo trước và 1 số tạo sau). Bây giờ mình muốn đổi màu của cả 2 số sang màu đỏ nhưng chỉ đổi được màu của số 311 còn số 312 thì không đổi được - File ví dụ tải tại đây - file định dạng CAD 2004
Mấy anh, mấy chị làm ơn chỉ các đổi màu bên số 312 dùm em với, em muốn điên với vụ này lun. :bigsmile:

Chào bạn jacsonchuong, tucdrom, master_worse
Tue_Nv vẫn bảo lưu phương án là không nổ MTEXT vì sẽ làm mất đii định dạng ban đầu ngay. Trường hợp MTEXT sử dụng font Symbol để viết -> nếu như nổ ra thì sẽ tan tành ngay.

Tue_NV đã tìm hiểu nguyên nhân mà vấn đề bạn jacsonchuong đưa ra : các MTEXT như số 312 thì ta không thể thay màu được, cũng không thể MA thay đổi nó.
Mình có viết 1 đoạn Code có tác dụng -> đổi các số 312 từ số không đổi màu được, không MA được trở thành số 312 đổi màu được, không MA được
Lisp đó đây. Các bạn sử dụng thử xem sao.

(defun c:cmtext(/ ss ans vitri skt i n e chuoicu tachdau tachcuoi chunoi)
(command "undo" "be")
(command "cmdecho" 0)
(setq ss (ssget "X" '((0 . "MTEXT"))) n (sslength ss) i 0)
(setq skt 4)
(while (< i n)
(setq e (entget(ssname ss i)))
(setq chuoicu (cdr(assoc 1 e)))
(setq st "\\C2")
(if (setq vitri (pos st chuoicu))
(progn
(setq tachdau (substr chuoicu 1 (- vitri 1)))
(setq tachcuoi (substr chuoicu (+ vitri skt) (+ (- (strlen chuoicu) vitri skt) 1)))
(setq chunoi (strcat tachdau tachcuoi))
(setq e (subst (cons 1 chunoi) (assoc 1 e) e))
(entmod e)
)
)
(setq i (1+ i))
)
(princ)
)
;
(defun pos (sub st / l1 l2 index)
(setq index 1
l1 (strlen sub)
l2 (strlen st)
)
(while
(and (<= (+ index l1 -1) l2) (/= sub (substr st index l1)))
(setq index (1+ index))
)
(if (= sub (substr st index l1))
index
nil
)
)

  • 1

#12 jacsonchuong

jacsonchuong

    biết zoom

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

Đã gửi 20 October 2009 - 07:53 AM

Cám ơn các bạn rất nhiều! Mình đã đổi được nhờ cách của bạn master_worse do text của mình không dùng font symbol mà dùng font ABC nên khi chuyển sang không bị gì cả. Dù sau cũng cám ơn các bạn rất nhiều, khỏe quá :bigsmile: :cry: :cry: :bigsmile: :cry:
  • 0

#13 master_worse

master_worse

    biết lệnh offset

  • Advance Member
  • PipPipPip
  • 170 Bài viết
Điểm đánh giá: 87 (tàm tạm)

Đã gửi 20 October 2009 - 08:12 AM

Chào bạn jacsonchuong, tucdrom, master_worse
Tue_Nv vẫn bảo lưu phương án là không nổ MTEXT vì sẽ làm mất đii định dạng ban đầu ngay. Trường hợp MTEXT sử dụng font Symbol để viết -> nếu như nổ ra thì sẽ tan tành ngay.

Tue_NV đã tìm hiểu nguyên nhân mà vấn đề bạn jacsonchuong đưa ra : các MTEXT như số 312 thì ta không thể thay màu được, cũng không thể MA thay đổi nó.
Mình có viết 1 đoạn Code có tác dụng -> đổi các số 312 từ số không đổi màu được, không MA được trở thành số 312 đổi màu được, không MA được
Lisp đó đây. Các bạn sử dụng thử xem sao.

[b][color="#0000FF"](defun c:cmtext(/ ss ans vitri skt i n e chuoicu tachdau tachcuoi chunoi)
........................
(setq st "\\C2")
-------------------

Tue_VN có thể xem lại không nếu vậy chỉ đổi được màu vàng thôi
Tue_VN có thể bỏ chuổi "\\C*;" bằng một hàm thay thế nào đó ra khỏi chuỗi giá trị của mtext thì áp dụng được cho nhiều màu hơn.
  • 0

Ngu dốt không đáng thẹn bằng thiếu ý chí học hỏi


Tri thức làm người ta khiêm tốn, ngu si làm người ta kiêu ngạo (Ngạn ngữ Anh)


#14 elleHCSC

elleHCSC

    biết lệnh copy

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

Đã gửi 20 October 2009 - 09:06 AM

Các bạn test cái elleHCSC viết xem nhé, mình chạy thấy nó ổn:
;;---------------------------------------------------------------------------------Test func
(defun C:CC ( / ss1 col)
(vl-load-com)
(prompt "\n<< Change color for TEXT, MTEXT only >>")
(initget (+ 1 2 4))
(setq col (getint "\n - Color (from 1 to 255, 256 for ByLayer)?: "))
(setq ss1 (ssget (list(cons 0 "*TEXT"))))
(DoiMau1 ss1 col)
(princ)
)
;;---------------------------------------------------------------------------------Test func
(defun DoiMau1 (ss mau / ent i j Vla-obj mt mc tmp tf bef aff ret)
(setq i 0)
(setq tmp (strcat "C" (itoa mau)))
(while (< i (sslength ss))
(setq ent (ssname ss i))
(setq Vla-obj (vlax-ename->vla-object ent))
(if (= (cdr (assoc 0 (entget ent))) "MTEXT")
(progn
(setq mt (vlax-get-property Vla-obj 'TextString))
;find color def
(setq j (vl-string-search (strcase "\\c") mt))
(if (/= j nil)
(progn
(setq bef (SubStr mt 1 j))
(setq ret (vl-string-left-trim bef mt))
(setq tf (LeftStr ";" ret))
(setq aff (vl-string-left-trim tf ret))
(setq mc (strcat bef "\\" tmp aff))
(vlax-put-property Vla-obj 'TextString mc)
)
(vlax-put-property Vla-obj 'Color mau)
);if
);
(vlax-put-property Vla-obj 'Color mau) ;for TEXT obj
);if
(setq i (1+ i))
)
)
;;---------------------------------------------------------------------------------Test func
(Defun LeftStr (Key Str / S i n)
(if (or Str Key)
(Progn
(Setq i 1 n(Strlen Str))
(While (and (<= i n) (/= Key (SubStr Str i 1)))
(Setq i (+ 1 i))
);while
(Setq S (SubStr Str 1 (- i 1)))
);progn
);if
S
)
;;---------------------------------------------------------------------------------Test func

  • 0
Share for all, all will share !

--------------------
HTTP://WWW.HCSC.VN
HTTP://WWW.HCSC.COM.VN

#15 Khangrm

Khangrm

    Chưa sử dụng CAD

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

Đã gửi 20 November 2014 - 10:02 AM

Các bạn test cái elleHCSC viết xem nhé, mình chạy thấy nó ổn:

;;---------------------------------------------------------------------------------Test func(defun C:CC ( / ss1 col)  (vl-load-com)  (prompt "\n<< Change color for TEXT, MTEXT only >>")  (initget (+ 1 2 4))  (setq col (getint "\n - Color (from 1 to 255, 256 for ByLayer)?: "))  (setq ss1 (ssget (list(cons 0 "*TEXT"))))  (DoiMau1 ss1 col)  (princ));;---------------------------------------------------------------------------------Test func(defun DoiMau1 (ss mau / ent i j Vla-obj mt mc tmp tf bef aff ret)  (setq i 0)  (setq tmp (strcat "C" (itoa mau)))    (while (< i (sslength ss))    (setq ent (ssname ss i))    (setq Vla-obj (vlax-ename->vla-object ent))    (if (= (cdr (assoc 0 (entget ent))) "MTEXT")      (progn	(setq mt (vlax-get-property Vla-obj 'TextString))		;find color def	(setq j (vl-string-search (strcase "\\c") mt))	(if (/= j nil)	  (progn	    (setq bef (SubStr mt 1 j))	    (setq ret (vl-string-left-trim bef mt))	    (setq tf (LeftStr ";" ret))	    (setq aff (vl-string-left-trim tf ret))	    (setq mc (strcat bef "\\" tmp aff))    	    (vlax-put-property Vla-obj 'TextString mc)	    	  )	  (vlax-put-property Vla-obj 'Color mau)	);if      );      (vlax-put-property Vla-obj 'Color mau) ;for TEXT obj    );if    (setq i (1+ i))  ));;---------------------------------------------------------------------------------Test func(Defun LeftStr (Key Str / S i n)  (if (or Str Key)    (Progn      (Setq i 1 n(Strlen Str))      (While (and (<= i n) (/= Key (SubStr Str i 1)))	(Setq i (+ 1 i))      );while      (Setq S (SubStr Str 1 (- i 1)))    );progn  );if  S);;---------------------------------------------------------------------------------Test func

Thanks bạn

elleHCSC. Lisp chạy tốt bạn nhé
  • 0