Đến nội dung


Hình ảnh

Cách sử a ký tự thép trong ATT block


  • Please log in to reply
5 replies to this topic

#1 TokyoNhat

TokyoNhat

    biết vẽ spline

  • Members
  • PipPip
  • 94 Bài viết
Điểm đánh giá: 16 (tàm tạm)

Đã gửi 29 April 2011 - 11:58 AM

Các anh cho e hỏi với . Em đang gia công hàng loạt bản vẽ , em có khoảng 300 block ATT , ghi ký hiệu thép , sau khi chuyển sang font của bọn em thì ký hiệu thép trong ATT bị thay đổi thành 1 loạt các dấu ' bọn em phải chuyển thành %%c , nhưng nếu cứ hiệu chỉnh từng block thì mất thời gian cả text nữa , em dùng lệnh find để thay ký tự nhưng máy báo ko tìm đc . Vậỵ các anh cho e hỏi có giải pháp nào thay 1 loạt ký tự cũ của m = ký tự mới trong text và ATT ko ạ ? Nếu có lisp dùng thì cho e xin .Cám ơn các anh nhiều ạ .
  • 0
  • Quá khứ là lịch sử, tương lai là màu nhiệm, còn hiện tại là món quà của cuộc sống...
  • Cuộc sống vốn không công bằng - Hãy tập quen dần với điều đó

#2 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 29 April 2011 - 12:06 PM

Các anh cho e hỏi với . Em đang gia công hàng loạt bản vẽ , em có khoảng 300 block ATT , ghi ký hiệu thép , sau khi chuyển sang font của bọn em thì ký hiệu thép trong ATT bị thay đổi thành 1 loạt các dấu ' bọn em phải chuyển thành %%c , nhưng nếu cứ hiệu chỉnh từng block thì mất thời gian cả text nữa , em dùng lệnh find để thay ký tự nhưng máy báo ko tìm đc . Vậỵ các anh cho e hỏi có giải pháp nào thay 1 loạt ký tự cũ của m = ký tự mới trong text và ATT ko ạ ? Nếu có lisp dùng thì cho e xin .Cám ơn các anh nhiều ạ .

Bạn up thử cái block ATT đó lên xem mặt mũi nó thế nào.
  • 0
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#3 TokyoNhat

TokyoNhat

    biết vẽ spline

  • Members
  • PipPip
  • 94 Bài viết
Điểm đánh giá: 16 (tàm tạm)

Đã gửi 29 April 2011 - 12:30 PM

Hiện tại e không để cái block đó trong máy ở nhà . Nó là ATT trong block động là chính xác hơn ạ . Vì khi e bedit nó các ATT là những ghi chú trong block động . em chỉ có thể chỉnh đc font của ghi chú thành font mới . Sau đó muốn chỉnh lại kí hiệu thép thì phải ed từng block . Nêu đc mai e sẽ gửi a cái block này ạ . Cám ơn a vì đã quan tâm tới câu hỏi của e .
  • 0
  • Quá khứ là lịch sử, tương lai là màu nhiệm, còn hiện tại là món quà của cuộc sống...
  • Cuộc sống vốn không công bằng - Hãy tập quen dần với điều đó

#4 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 29 April 2011 - 01:49 PM

Hiện tại e không để cái block đó trong máy ở nhà . Nó là ATT trong block động là chính xác hơn ạ . Vì khi e bedit nó các ATT là những ghi chú trong block động . em chỉ có thể chỉnh đc font của ghi chú thành font mới . Sau đó muốn chỉnh lại kí hiệu thép thì phải ed từng block . Nêu đc mai e sẽ gửi a cái block này ạ . Cám ơn a vì đã quan tâm tới câu hỏi của e .

Bạn dùng tạm hàng ngoại nhập nhé :
(defun C:FAT (/ *error* adoc atts cnt layer locked newvalue oldvalue)
(grtext -1 "Free Lisp from CADVIET.com @ketxu")
(defun *error* (msg)
(if (and msg (vl-position msg '("console break" "Function cancelled" "quit / exit abort")))
(princ (strcat "Error >>> " (princ msg)))
(princ msg)
)
(vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
)
(setq adoc (vla-get-activedocument(vlax-get-acad-object)))
(vla-startundomark adoc)
(setq cnt 0)
(setq old (getstring T "\nText c\U+1EA7n thay th\U+1EBF :")
new (getstring T "\nText m\U+1EDBi :"))

(vlax-for layout (vla-get-layouts adoc)
(vlax-for obj (vla-get-block layout)
(if (and (eq "AcDbBlockReference" (vla-get-objectname obj))
(eq :vlax-true (vla-get-hasattributes obj)))
(progn
(setq layer (vla-item (vla-get-layers adoc) (vla-get-layer obj)))
(if (eq :vlax-true (vla-get-lock layer))
(progn
(setq locked (cons (vla-get-layer obj) locked))
(vla-put-lock layer :vlax-false))
)
(setq atts (vlax-invoke obj 'GetAttributes))
(foreach att atts
(setq oldvalue (vla-get-textstring att))
(if (wcmatch oldvalue (strcat "*" old "*"))
(progn
(setq cnt (1+ cnt))
(setq newvalue (vl-string-subst new old oldvalue))
(vla-put-textstring att newvalue)
(vla-update att)
(princ (strcat "\n\t\t\t\t\>> Text : "
(vl-princ-to-string oldvalue)
" \U+0111\U+00E3 \U+0111\U+1ED5i th\U+00E0nh "
(vl-princ-to-string newvalue)))
)
)
)
(vla-update obj)
)
)
)
)

(if locked
(foreach layer locked
(vla-put-lock
(vla-item (vla-get-layers adoc) layer)
:vlax-true))
)
(setq locked nil)
(alert (strcat "\n\U+0110\U+00E3 thay \U+0111\U+1ED5i "
(itoa cnt)
" attributes trong t\U+1EA5t c\U+1EA3 c\U+00E1c Layouts"))
(*error* nil)
(princ)
)
(prompt "\n\t\t\t\tThay \U+0111\U+1ED5i ATTs. L\U+1EC7nh FAT")
(princ)
(vl-load-com)

  • 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


#5 victor85

victor85

    biết lệnh stretch

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

Đã gửi 19 May 2011 - 05:55 PM

bạn dùng lệnh battman đi. Chỉnh sửa block att tiện lợi lắm đó.
  • 0

#6 mtacd

mtacd

    biết pan

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

Đã gửi 08 November 2012 - 03:58 PM

Cho mình hỏi chút,nếu phá khối Bockl của att rồi,sau đó dùng lệnh gì để đưa att đấy về block cũ.Bạn nào có lisp không,giúp t với,t đang rất cần nó để chỉnh sửa bản vẽ.Mục đích mình muốn làm là chuyển hàng loạt các ATT đấy về Bock của nó ban đầu,sau đó chuyển toàn bộ Block về text,rồi chuyển toàn bộ text về Mtext để chỉnh điền ký hiệu và chỉnh sửa trong MText.Mình không biết chuyển att về text,bạn nào biết hướng dẫn mình cách chuyển với.Cám ơn mọi người trước nhé!
  • 0