Chuyển đến nội dung
Diễn đàn CADViet
hanam1210

lisp đổi font của text style siêu nhanh !

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

Em hay phải chỉnh sửa bản vẽ cho chuẩn ISO, hay phải chỉnh font của text style. Em đang cần 1 lisp làm nhiệm vụ như sau. Khi e đánh lệnh và tích vào 1 text thuộc 1 style nào đó. Thì font của style đó được chuyển sang font .VNAVANTH (chế độ regular). Mong các bác biết về lisp giúp đỡ em ạ !

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

Nếu các textstyle kia của ban không đánh theo font TCVN thì khi bạn chuyển Font bạn sẽ bị lỗi.Đã có tool chuyển font chữ.Bạn search là có đó

  • 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

Nếu các textstyle kia của ban không đánh theo font TCVN thì khi bạn chuyển Font bạn sẽ bị lỗi.Đã có tool chuyển font chữ.Bạn search là có đó

Vâng. Nhưng đây là trường hợp các text được đánh theo font TCVN.

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

Gửi bạn,hy vọng đúng ý bạn

;free lisp by cadviet,cd2k44
;link bai viet http://www.cadviet.com/forum/index.php?showtopic=53830
(defun c:FTEXT (/ ent tstyle )
(command "undo" "be")
(setq ent (entsel "\n Pick text :"))
(setq TSTYLE (cdr (assoc 7 (entget (car ent)))))
(command "STYLE" TSTYLE ".vnavanth" "0" "1" "0" "N" "N")
(setvar "TEXTSTYLE" Tstyle)
(command "undo" "end")
)

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 bác CD2K44 nhé. Lisp chuẩn theo yêu cầu rồi ạ. Nhưng khi e muốn tự tạo sang 1 code khác để đổi sang loại font .vntimeh.shx thì ko được nhỉ ? hì. bác xem giúp em xem lỗi ở chỗ nào nhé :

(defun c:FH (/ ent tstyle )

(command "undo" "be")

(setq ent (entsel "\n Pick text :"))

(setq TSTYLE (cdr (assoc 7 (entget (car ent)))))

(command "STYLE" TSTYLE ".vntimeh.shx" "0" "1" "0" "N" "N")

(setvar "TEXTSTYLE" Tstyle)

(command "undo" "end")

)

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 bác CD2K44 nhé. Lisp chuẩn theo yêu cầu rồi ạ. Nhưng khi e muốn tự tạo sang 1 code khác để đổi sang loại font .vntimeh.shx thì ko được nhỉ ? hì. bác xem giúp em xem lỗi ở chỗ nào nhé :

 

 

 

(defun c:FH (/ ent tstyle )

(command "undo" "be")

(setq ent (entsel "\n Pick text :"))

(setq TSTYLE (cdr (assoc 7 (entget (car ent)))))

(command "STYLE" TSTYLE ".vntimeh.shx" "0" "1" "0" "N" "N")

(setvar "TEXTSTYLE" Tstyle)

(command "undo" "end")

)

Bạn sửa (command "STYLE" TSTYLE ".vntimeh.shx" "0" "1" "0" "N" "N") thành (command "STYLE" TSTYLE ".vntimeh" "0" "1" "0" "N" "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

Bạn sửa (command "STYLE" TSTYLE ".vntimeh.shx" "0" "1" "0" "N" "N") thành (command "STYLE" TSTYLE ".vntimeh" "0" "1" "0" "N" "N")

hic. Bác Hà hiểu nhầm rồi. Font .vntimeH.SHX 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

hic. Bác Hà hiểu nhầm rồi. Font .vntimeH.SHX cơ ạ !

Thì sửa (command "STYLE" TSTYLE ".vntimeh.shx" "0" "1" "0" "N" "N") thành (command "STYLE" TSTYLE ".vntimeh.shx" "0" "1" "0" "N" "N" "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

Thì sửa (command "STYLE" TSTYLE ".vntimeh.shx" "0" "1" "0" "N" "N") thành (command "STYLE" TSTYLE ".vntimeh.shx" "0" "1" "0" "N" "N" "N")

hic. Nó mà đơn giản thế thì e đã làm được ạ ? E đổi ngay từ đầu thành như thế nhưng nó ko chạy đc ạ ? hic. Nhưng e đã làm đc rùi. Phải sửa thành

(command "STYLE" TSTYLE ""vntimeh.shx,vns.shx"" "0" "1" "0" "N" "N" "N")

Thanks 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

hic. Nó mà đơn giản thế thì e đã làm được ạ ? E đổi ngay từ đầu thành như thế nhưng nó ko chạy đc ạ ? hic. Nhưng e đã làm đc rùi. Phải sửa thành

(command "STYLE" TSTYLE ""vntimeh.shx,vns.shx"" "0" "1" "0" "N" "N" "N")

Thanks bác nhé !

Cả 2 cách trên đều không đúng thì phải, mình đã thử cách này thì ok .

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=53830&pid=167735&st=0entry167735
;free lisp by cadviet,cd2k44
;link bai viet http://www.cadviet.com/forum/index.php?showtopic=53830
(defun c:FT (/ ent tstyle )
(command "undo" "be")
(setq ent (entsel "\n Pick text :"))
(setq TSTYLE (cdr (assoc 7 (entget (car ent)))))
(command "STYLE" TSTYLE "vntimeh.shx,vns.shx" "0" "1" "0" "N" "N" "N")
(setvar "TEXTSTYLE" Tstyle)
(command "undo" "end")
)

bác nào biết thêm tùy chọn tìm và thay thế toàn bộ font trong 1 file cad thành font .vntimeh.shx thì tốt quá

Cảm ơn nhiều !

Chỉnh sửa theo NvThanh

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ả 2 cách trên đều không đúng thì phải, mình đã thử cách này thì ok .

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=53830&pid=167735&st=0entry167735
;free lisp by cadviet,cd2k44
;link bai viet http://www.cadviet.com/forum/index.php?showtopic=53830
(defun c:FT (/ ent tstyle )
(command "undo" "be")
(setq ent (entsel "\n Pick text :"))
(setq TSTYLE (cdr (assoc 7 (entget (car ent)))))
(command "STYLE" TSTYLE "vntimeh.shx,vns.shx" "0" "1" "0" "N" "N" "N")
(setvar "TEXTSTYLE" Tstyle)
(command "undo" "end")
)

bác nào biết thêm tùy chọn tìm và thay thế toàn bộ font trong 1 file cad thành font .vntimeh.shx thì tốt quá

Cảm ơn nhiều !

Hề hề hề,

Bạn thử làm thế này xem sao nhé:

1/- Vô hiệu hóa dòng code (setq ent (entsel "\n Pick text :")) bằng cách thêm một vài dấu ; phía trước nó.

2/- Thêm vào dưới dòng code này đoạn code như sau:

(setq sst (acet-ss-to-list (ssget "x" (cons 0 "TEXT,MTEXT"))))

(foreach ent sst

3/- Thêm một dấu ngoặc đóng hàm foreach vào dưới dòng code: (setvar "TEXTSTYLE" Tstyle)

 

Sau đó load lại lisp và chạy thử xem có được như ý bạn muốn không nhé.

Hề hề hề,.....

Chúc bạn vui.

  • 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

Em hay phải chỉnh sửa bản vẽ cho chuẩn ISO, hay phải chỉnh font của text style. Em đang cần 1 lisp làm nhiệm vụ như sau. Khi e đánh lệnh và tích vào 1 text thuộc 1 style nào đó. Thì font của style đó được chuyển sang font .VNAVANTH (chế độ regular). Mong các bác biết về lisp giúp đỡ em ạ !

 

Nếu bạn còn cần, thì thử cái này xem

 

(defun c:TENLENH (/ text style ename asslst) ;; sua lai ten lenh
 (setq text (entsel "\nPick a text or Mtext"))
 (setq style (cdr (assoc 7 (entget (car text)))))
 (setq ename (tblobjname "style" style))
 (setq asslst (entget ename))
 (entmod (subst (cons 3 "FONT-MOI") (assoc 3 asslst) asslst)) ;; sua lai font
 (command "_.regen")
 (princ)
) ;_ end defun

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

@hanam1210 : nếu lần tới bạn lập topic mới trong box Autolisp về 1 vấn đề ĐÃ CÓKHÔNG TUÂN THEO NỘI QUY thì bài viết sẽ được chuyển vào thùng rác, mong bạn thông cảm và rút kinh nghiệm nhé. Have fun ^^

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 các bác!

Theo em thử thì các lisp trên dùng để thay đổi Textsyle của tất cả các Text có cùng Textstyle với Text mình chọn phải không ạ?

Các bác viết dùm em 1 lisp chỉ thay đổi Textstyle của Text mình chọn với ạ!

Thank các bác 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

Chào các bác!

Theo em thử thì các lisp trên dùng để thay đổi Textsyle của tất cả các Text có cùng Textstyle với Text mình chọn phải không ạ?

Các bác viết dùm em 1 lisp chỉ thay đổi Textstyle của Text mình chọn với ạ!

Thank các bác nhiều!

Chọn text => Ctrl + 1 => Đổi style trong bảng Properties.

Ngoài ra cũng phải nói thêm là lisp bạn hỏi chắc chắc đã 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
Vào lúc 10/9/2011 tại 20:36, master_worse đã nói:

 

Nếu bạn còn cần, thì thử cái này xem

 

 


(defun c:TENLENH (/ text style ename asslst) ;; sua lai ten lenh
 (setq text (entsel "\nPick a text or Mtext"))
 (setq style (cdr (assoc 7 (entget (car text)))))
 (setq ename (tblobjname "style" style))
 (setq asslst (entget ename))
 (entmod (subst (cons 3 "FONT-MOI") (assoc 3 asslst) asslst)) ;; sua lai font
 (command "_.regen")
 (princ)
) ;_ end defun
 

 

Có bác nào mách e sửa chỗ nào cho nhận dang font vni-helve- condense ko ạ, loay hoay mãi chỉnh tùm lum chỗ hỏng được

tenlenh.lsp

  • Vote giảm 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
2 giờ trước, đặng phụng đã nói:

Có bác nào mách e sửa chỗ nào cho nhận dang font vni-helve- condense ko ạ, loay hoay mãi chỉnh tùm lum chỗ hỏng được

tenlenh.lsp

Sửa chỗ "FONT-MOI" thành "VHELVCN.TTF" 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

MÌnh đang nhận bản vẽ từ địa chính trong đó có rất nhiều style có tên bắt đầu bằng dng và có font shx và máy mình ko đủ file shx nên có nhu cầu đổi font của các style này thành .vni. MÌnh làm cái lisp lọc các style có tên bắt đầu bằng dng và đổi font. Đoạn lọc danh sách style thì được rồi riêng đoạn đổi font không chạy được. các bác khám giúp!

Mình kèm file lisp và file cad bên dưới. Còn đây là đoạn lisp để khám trực tiếp.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;Tao list chua bang mo ta
;;;Cu phap su dung (duy:taolist kieu) kieu gom co appid block dimstyle layer ltype style ucs view vport
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun duy:taolist (kieu / kieu nl lkq)
(setq lkq'())
(setq nl (tblnext kieu T))
(while nl
(setq lkq (append lkq (list (cdr (assoc 2 nl)))))
(setq nl (tblnext kieu))
)
(cond
((= kieu "layer") (setq lstthem (list  (getvar "CLAYER"))) (setq lkq (append lstthem lkq)) )
((/= kieu "layer") )
)
lkq)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:chinhst ()
(setq ldgn nil)
(setq dsstyle (duy:taolist "style"))

(foreach tstyle dsstyle
(setq tstyletachdau (substr tstyle 1 3))

(cond
((= "dgn" tstyletachdau)
(setq ldgn (append ldgn (list tstyle)))
)
)

)


(foreach tenstyle ldgn
(entmod (subst (cons 3 "VNARIAL.ttf") (assoc 3 tenstyle) tenstyle))
 )
(command "_.regen")

(princ)
)


 

chinhstyle.lsp

dc14-Default-Mirror.dwg

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 có 1 lisp hay dùng để chuyển style toàn bộ bản vẽ về 1 font mong muốn. 

Ví dụ mình thích dùng arial thì nhập:   arial.ttf

sau đó toàn bộ bản vẽ sẽ chuyển qua arial.

các bạn có thể dựa vào đoạn mã của mình để tuỳ chỉnh. :))

(defun c:cfst (/ doc sty address)
  (vl-load-com)
  (setq	
    doc (vla-get-activedocument (vlax-get-acad-object))
    sty (vla-get-textstyles doc)
    address (strcat "C:\\Windows\\Fonts\\" (getstring "\nName Font:"))
  )
  (vlax-for s sty (vla-put-fontfile s address))
  (vla-regen doc acActiveViewport)
  (princ)
)

 

  • Like 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
Vào lúc 7/3/2023 tại 08:12, tannguyen291 đã nói:

mình có 1 lisp hay dùng để chuyển style toàn bộ bản vẽ về 1 font mong muốn. 

Ví dụ mình thích dùng arial thì nhập:   arial.ttf

sau đó toàn bộ bản vẽ sẽ chuyển qua arial.

các bạn có thể dựa vào đoạn mã của mình để tuỳ chỉnh. :))


(defun c:cfst (/ doc sty address)
  (vl-load-com)
  (setq	
    doc (vla-get-activedocument (vlax-get-acad-object))
    sty (vla-get-textstyles doc)
    address (strcat "C:\\Windows\\Fonts\\" (getstring "\nName Font:"))
  )
  (vlax-for s sty (vla-put-fontfile s address))
  (vla-regen doc acActiveViewport)
  (princ)
)

 

^^. Thêm tí xíu nữa thui là đẹp 

image.png 

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
1 phút trước, ketxu đã nói:

^^
image.png 

Bác cứ đùa em. Bác viết lisp lão làng rồi mà.

cái này do đường dẫn không có font em_khong_co.ttf. 

Hoặc OS của bác không cài tại ổ C. Phải chỉnh lại 1 chú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

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

×