Đến nội dung


Hình ảnh
* * * * - 2 Bình chọn

[Đã xong] - Tự động bật - tắt chế độ gõ tiếng việt trong CAD


  • Please log in to reply
94 replies to this topic

#41 tien2005

tien2005

    biết lệnh properties

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

Đã gửi 22 January 2013 - 03:12 PM

hic, mình chỉ sửa hàm ED và bổ sung thêm gửi phím ALT+Z trong hàm callback-Unikey, còn gọi nó như thế nào thì mình chịu
Mình mới kiểm tra lại thì khi kích đúp chuột thì lisp không còn tự chuyển mã gõ ở cả ver 2.0 của ThuyLinh313
Lisp do mình sửa lại vẫn hoạt động tốt với các text mới
ThuyLinh313 kiểm tra kỹ lại xem , chẵng nhẽ với mỗi máy lại có bệnh khác nhau, nếu vậy thì phiền phức quá
Khi kích đúp chuột thì bộ gõ vẫn chuyển nhưng bộ mã thì không

P/S: Vấn đề nằm ở biến font trong hàm callback-Unikey

Nếu dùng lệnh ED thì biến font = T (có được qua lệnh ssget hoặc entsel) => bảng mã lấy theo đối tượng chọn
Nếu đúp kích chuột thì biến font = nil => bảng mã lấy theo (getvar "textstyle")
  • 0

#42 ThuyLinh313

ThuyLinh313

    biết lệnh mtext

  • Members
  • PipPipPipPip
  • 288 Bài viết
Điểm đánh giá: 142 (tàm tạm)

Đã gửi 22 January 2013 - 04:23 PM

Hihi, Chỉ có lisp của bạn PhamNgocTu bị như vậy. do lúc download 2 lisp của Tien2005 và PhamNgocTu trùng tên nên mình nhầm.
Đúng là ver2.0 của mình vẫn không tự động chuyển mã khi kích đúp. Mình đã có hướng khắc phục rồi. Chiều về mình post để các bạn test ^^
  • 0

#43 ThuyLinh313

ThuyLinh313

    biết lệnh mtext

  • Members
  • PipPipPipPip
  • 288 Bài viết
Điểm đánh giá: 142 (tàm tạm)

Đã gửi 22 January 2013 - 06:01 PM

Version 2.1: Tự động bật/Tắt chế độ gõ tiếng việt, tự động chuyển đổi bảng mã của Unikey khi chỉnh sửa hoặc tạo Text, Mtext, Dimension
- Sửa lệnh Ed để nhận diện các text cần sửa tiếp theo. (Cảm ơn bạn Tien2005 đã hỗ trợ thuật toán ^^)
- Update hỗ trợ thêm thao tác kick đúp để chỉnh sửa text.

;===============================================================;
; A U T O U N I K E Y C O N T R O L R O U T I N E ;
;===============================================================;
; ;
; Version 1.0 - 14/12/2012 ;
; - Support Auto change table code (Unicode, TCVN, VNI) ;
; - Support for Text & Mtext objects ;
; ;
; Version 2.0 - 15/12/2012 ;
; - Added Auto toggle (On/Off) Vietnamese keys ;
; - Added support for Dimension objects ;
; - fixed Check-font-code function ;
; ;
; Version 2.1 - 22/01/2013 ;
; - Added support for Double click to edit *text ;
; - fixed ED command to select continues (thanks Tien2005) ;
; ;
;===============================================================;
; Cadviet.com - Le Thuy Linh 313 - Tri Tue Viet.jsc ;
;===============================================================;
(vl-load-com)
;;; Go bo Reactor Auto-Unikey cu truoc khi load
(foreach x (cdar (vlr-reactors :vlr-sysvar-reactor))
(if (= (vlr-data x) "Auto-Unikey") (vlr-remove x)))
(foreach x (cdar (vlr-reactors :vlr-mouse-reactor))
(if (= (vlr-data x) "Double-Click") (vlr-remove x)))
;;; Tao Reactor Auto-Unikey
(vlr-mouse-reactor "Double-Click" '((:vlr-beginDoubleClick . callback-DoubleClick)))
(vlr-sysvar-reactor "Auto-Unikey" '((:vlr-sysvarchanged . callback-Unikey)))
;;; Dinh nghia lai lenh ED de lay ename doi tuong
(defun c:ed (/ textedit font ent)
(and (or (and (setq textedit (ssget "I" '((0 . "*TEXT,DIMENSION"))))
(sssetfirst textedit)
(setq textedit (ssname textedit 0)))
(setq textedit (car (entsel))))
(while textedit
(setq ent (cdr (assoc 0 (entget textedit))))
(cond ((wcmatch ent "*TEXT")
(setq font (vla-get-stylename (vlax-ename->vla-object textedit))))
((= ent "DIMENSION")
(setq font (vla-get-textstyle (vlax-ename->vla-object textedit)))))
(command "ddedit" textedit "")
(setq textedit (car (entsel)))))
(princ))
;;; Ham callback dieu khien bo go tieng viet
(defun callback-Unikey (reactor sysvar / code Crfont)
(if (= (car sysvar) "TEXTEDITOR") (sendkeys "^+"))
(if (> (getvar "TEXTEDITOR") 0)
(progn
(if font (setq Crfont font) (setq Crfont (getvar "textstyle")))
(setq code (check-font-code Crfont))
(cond ((= code "TCVN3") (sendkeys "^+{F2}"))
((= code "UNICODE") (sendkeys "^+{F1}"))
((= code "VNI") (sendkeys "^+{F3}")))
(setq font nil))))
;;; Ham callback lay textstyle khi Double Click vao text
(defun callback-DoubleClick (reactor point / sset obj ss)
(setq sset (vla-get-selectionsets (vla-get-activedocument (vlax-get-acad-object))))
(setq ss (vla-add sset "ThuyLinh313"))
(vla-selectatpoint ss (vlax-3d-point (car point)))
(if (> (vlax-get ss 'Count) 0)
(progn
(setq obj (vla-item ss 0))
(if (or (eq (vlax-get obj 'ObjectName) "AcDbText")
(eq (vlax-get obj 'ObjectName) "AcDbMText"))
(setq font (vla-get-stylename obj)))
(sssetfirst nil (ssadd (vlax-vla-object->ename obj)))))
(vla-delete ss))
;;; Ham kiem tra bang ma cua textstyle (su dung true type font)
;;; style: String - ten cua textstlye kiem tra
(defun Check-Font-Code (style / ts font Bold Italic charSet PitchandFamily)
(setq ts (vlax-ename->vla-object (tblobjname "style" style)))
(vla-GetFont ts 'font 'Bold 'Italic 'charSet 'PitchandFamily)
(if (= font "") (setq font (vla-get-fontfile ts)))
(cond ((wcmatch (setq font (strcase font)) "ARIAL*,TAHOMA*,TIMES*,COURIER NEW,CAMBRIA,CONSOLAS") "UNICODE")
((wcmatch font ".VN*") "TCVN3")
((wcmatch font "VNI*") "VNI")))
;;; Ham senkeys
(defun SendKeys (keys / wscript)
(vlax-invoke-method (setq wscript (vlax-create-object "WScript.Shell")) 'sendkeys keys)
(vlax-release-object wscript))
(Chú ý: cần thiết lập chế độ gõ tiếng anh mặc định khi sử dụng cad; Ứng dụng này tạm thời chỉ hỗ trợ cad 2009 trở lên)

Từ ý tưởng của bạn Phamngoctukts thì mình nảy sinh ý định viết ứng dụng này để hỗ trợ với tất cả các loại text trong bản vẽ: attribute, text trong khối block, rtext... Hi vọng sẽ làm được trong các version tiếp theo :D

Bài viết đã được chỉnh sửa nội dung bởi ThuyLinh313: 29 January 2013 - 10:15 AM

  • 1

#44 avi612

avi612

    biết lệnh move

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

Đã gửi 23 January 2013 - 02:26 AM

Mình có check thử cái lisp này thì nó hoạt động ko như ý lắm.
Cụ thể là khi load vào và gõ lệnh "ed", chọn 1 text trên bản vẽ thì chỉ thấy nó chuyển Unikey từ gõ TV sang tiếng Anh, cho nên việc bỏ dấu ko thực hiện đc. Mọi người check thử xem sao....
  • 0

#45 ThuyLinh313

ThuyLinh313

    biết lệnh mtext

  • Members
  • PipPipPipPip
  • 288 Bài viết
Điểm đánh giá: 142 (tàm tạm)

Đã gửi 23 January 2013 - 07:52 AM

"Đọc kỹ hướng dẫn sử dụng trước khi dùng" nhé. Bạn cần thiết lập mặc định chế độ gõ tiếng anh khi sử dụng Cad. (thường thì không ai để chế độ gõ tiếng việt nếu vẽ cad cả. gõ lệnh rất khổ)
  • 0

#46 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 23 January 2013 - 08:11 AM

Cách của mình dùng lâu nay thấy vẩn ổn ầm ầm.
1.Ko sử dụng bản vẽ của người khác (tạp nham các thứ kể cả text)
2.Dùng 1 bảng mã ổn định trong bản vẽ.
3.Dùng kiểu gỏ vni và mặc định gỏ tiếng Việt trong bộ gỏ.

Đây là ý khoe cách làm việc của mình mọi người thấy hay ko cần khen, thấy dở ko cần chê, thấy gai mắt ko cần chửi!
  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#47 tien2005

tien2005

    biết lệnh properties

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

Đã gửi 23 January 2013 - 10:49 AM

hihi, có 3 text 3 kiểu font thì double click sửa đến text thứ 2 vẫn ok, đến text thứ 3 bị lổi không chuyển bảng mã
CÒn 1 vuệc nữa hơi mất công là khi ban đã chọn đối tượng xong rồi mới đánh lệnh ED thì khi sửa xong text và enter nó lại chọn text vừa rồi, bạn phải enter lần nữa để có thể chọn text kế tiếp
  • 0

#48 ThuyLinh313

ThuyLinh313

    biết lệnh mtext

  • Members
  • PipPipPipPip
  • 288 Bài viết
Điểm đánh giá: 142 (tàm tạm)

Đã gửi 23 January 2013 - 05:33 PM

Duy782006 gõ theo kiểu VNI thì đúng là không cần dùng đến lisp này, vấn đề là đa số người việt gõ kiểu Telex, mình cũng vậy :D
@tien2005. Đúng là phải có nhiều người test mới ra bệnh được ^^
- bệnh thứ nhất: Chính xác thì ngay từ lần chọn text thứ hai (khi double click để sửa text) lisp đã chạy sai rồi. từ lần thứ 2 trở đi nó mặc định là unicode luôn. Sửa bệnh này mình có thể làm được nhưng hơi phức tạp và can thiệp hơi sâu vào hệ thống lệnh của cad, do thao tác double click gọi thẳng đến lệnh gốc ddedit luôn chứ không phải lệnh ed nữa. sự can thiệp này có thể dẫn đến các lỗi mà mình không thể lường trước cho các lệnh khác của cad nên mình sẽ không sửa nữa. bệnh này cũng không quá nghiêm trọng trong quá trình sử dụng.
- bệnh thứ 2: mình đã fix rồi nhé. bạn có thể down lại lisp ở trên.
  • 0

#49 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 23 January 2013 - 05:46 PM

ED là lệnh tắt mà ^^
  • 0

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


#50 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 27 January 2013 - 06:30 AM

Để viết cho attribute @ThuyLinh cần tìm hiểu thêm về các kiểu đối số của hàm command. Đố làm được đấy!
  • 1

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#51 phamngoctukts

phamngoctukts

    biết lệnh adcenter

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

Đã gửi 27 January 2013 - 12:47 PM

Để viết cho attribute @ThuyLinh cần tìm hiểu thêm về các kiểu đối số của hàm command. Đố làm được đấy!

Cái phần dùng cho BlockAtt và Attribute mình đã làm xong rồi (Cái này chỉ cần thay entsel = nentsel). Cái của mình dùng trên cad đời thấp không có biến EDITTEXT nên còn nhiều hạn chế do vậy mình không up lên.
  • 4
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!

#52 ThuyLinh313

ThuyLinh313

    biết lệnh mtext

  • Members
  • PipPipPipPip
  • 288 Bài viết
Điểm đánh giá: 142 (tàm tạm)

Đã gửi 27 January 2013 - 05:12 PM

Để viết cho attribute @ThuyLinh cần tìm hiểu thêm về các kiểu đối số của hàm command. Đố làm được đấy!

Không phải thách nhà giàu húp tương!

Về đối số của hàm command khi select đối tượng: Có it nhất 3 kiểu (type) đối số, có thể có những lênh chỉ chấp nhận 1 trong 3 kiểu được liệt kê dưới đây nhưng thường thì hầu hết chấp nhận cả 3.
- Kiểu Pickset: là tập chon được tạo ra bởi hàm ssget, ssadd hoặc việc select đối tượng từ trước khi gõ lệnh.
- Kiểu Ename: là ename của đối tượng, kiểu này dùng trong các command chỉ yêu cầu chon 1 đối tượng duy nhất.
- Kiểu List: Kiểu này it người biết (mình cũng mới biết theo gợi ý trên của thaistreets), là danh sách gồm 1 ename và 1 list 3D point giống kết quả trả về của hàm entsel (<ename> point). Việc sử dung kiểu đối số này cho hàm command sẽ khiến command hiểu đối số thực cho nó chính là đối tượng cọn của <ename> được tìm thấy tại điểm point. lệnh Eattedit cần sử dung kiểu đối số này. Các lệnh sử dung kiểu đối số là Ename cũng có thể sử dung kiểu đối số này mà không gặp vấn đề gì. 1 phát hiện khá thú vị!

@Phamngoctukts: bạn cứ post lên đi, nhiều người cần nó mà bạn. nếu còn hạn chế thì mọi người cùng thảo luận khắc phục sẽ ra phương án tối ưu.
  • 2

#53 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 27 January 2013 - 05:20 PM

@TL : entsel = entity select. Command nào chấp nhận việc pick chọn đối tượng thì sẽ chấp nhận entsel. Đặc biệt ứng dụng trong các lisp break, lengthen, trim extend fillet ... (những lệnh mà phía pick lên đối tượng ảnh hưởng đến kết quả), nên nhiều khi thay vì ename thì dùng (list ename p), cái này có kha khá trên 4room rồi

P/s a Thái và TLinh : có nhiều người theo dõi topic
  • 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


#54 ThuyLinh313

ThuyLinh313

    biết lệnh mtext

  • Members
  • PipPipPipPip
  • 288 Bài viết
Điểm đánh giá: 142 (tàm tạm)

Đã gửi 27 January 2013 - 05:35 PM

Việc hỗ trợ attribute thì mình cũng đã có hướng viết rồi, khi nào rảnh sẽ thử xem đến đâu.
Hiện tại mình đang bí phương pháp giải quyết text trong block. loại text này không có cách nào sửa trừ khi sử dụng lệnh blockedit.
Một vấn đề nữa mình cũng đang phân vân. Mình nhớ hồi trước sử dụng cad đời thấp thì việc edit hatch cũng được gọi bởi lệnh ED. Không hiểu vì sao các bản cad sau này lại bỏ nó đi. mình định đưa nó trở lại và nếu có thể thì việc sửa 1 số loại đối tượng khác cũng đưa chung vào ED luôn 1 thể. các bạn nghĩ thế nào về việc này?
  • 0

#55 phamngoctukts

phamngoctukts

    biết lệnh adcenter

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

Đã gửi 27 January 2013 - 07:27 PM

Hiện tại mình đang bí phương pháp giải quyết text trong block. loại text này không có cách nào sửa trừ khi sử dụng lệnh blockedit.

Nếu bạn sử dụng nentsel và một dcl nhập liệu thì hoàn toàn có thể sửa được text trong block (cái này trên diễn đàn cũng có rồi).
  • 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!

#56 ThuyLinh313

ThuyLinh313

    biết lệnh mtext

  • Members
  • PipPipPipPip
  • 288 Bài viết
Điểm đánh giá: 142 (tàm tạm)

Đã gửi 27 January 2013 - 11:13 PM

.@phamngoctukts: Mình có tính đến phương án này, nhưng ngặt 1 lỗi nếu dùng DCL thì bắt buộc phải gõ Unicode khi chỉnh sửa thì mới hiển thị tiếng việt được
  • 0

#57 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 28 January 2013 - 05:29 AM

Cách của mình dùng lâu nay thấy vẩn ổn ầm ầm.
1.Ko sử dụng bản vẽ của người khác (tạp nham các thứ kể cả text)
2.Dùng 1 bảng mã ổn định trong bản vẽ.
3.Dùng kiểu gỏ vni và mặc định gỏ tiếng Việt trong bộ gỏ.

Đây là ý khoe cách làm việc của mình mọi người thấy hay ko cần khen, thấy dở ko cần chê, thấy gai mắt ko cần chửi!

- Dựa theo trên đây nhoc thấy sao ko viết lệnh đơn giản thui nhỉ ^^, gán phím tắt cho bảng mã, 1 uincode, 2 TCVN3, 3 VNi-windowns, vậy đơn giản hơn ko hì :D, mình hay dùng bảng mã nào thì mình pit đổi phím tắt kỉu này tiện chút đỡ phải nhấn kết hợp 3 phim thui, như nhoc trong bản vẽ dùng vni-, ra ngoài lênh mạng dùng unicode ^^, trừ trường hợp đụng bảng vẽ người khác hơi rối xíu ^^
- Mí cái code phức tạp nhoc nghĩ có thể đầu tư cho dự án lớn khác ^^
Ps: tỉu bối spam tí ^^, cái ver 2.0 của chị TL nhoc dùng tới giờ chưa có phàn nàn gì vì nhoc ít sữa block và blockatt :)
  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#58 TRUNGNGAMY

TRUNGNGAMY

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 401 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 28 January 2013 - 08:23 PM

Version 2.1: Tự động bật/Tắt chế độ gõ tiếng việt, tự động chuyển đổi bảng mã của Unikey khi chỉnh sửa hoặc tạo Text, Mtext, Dimension
- Sửa lệnh Ed để nhận diện các text cần sửa tiếp theo. (Cảm ơn bạn Tien2005 đã hỗ trợ thuật toán ^^)
- Update hỗ trợ thêm thao tác kick đúp để chỉnh sửa text.


;===============================================================;
; A U T O U N I K E Y C O N T R O L R O U T I N E ;
;===============================================================;
; ;
; Version 1.0 - 14/12/2012 ;
; - Support Auto change table code (Unicode, TCVN, VNI) ;
; - Support for Text & Mtext objects ;
; ;
; Version 2.0 - 15/12/2012 ;
; - Added Auto toggle (On/Off) Vietnamese keys ;
; - Added support for Dimension objects ;
; - fixed Check-font-code function ;
; ;
; Version 2.1 - 22/01/2013 ;
; - Added support for Double click to edit *text ;
; - fixed ED command to select continues (thanks Tien2005) ;
; ;
;===============================================================;
; Cadviet.com - Le Thuy Linh 313 - Tri Tue Viet.jsc ;
;===============================================================;
(vl-load-com)
;;; Go bo Reactor Auto-Unikey cu truoc khi load
(foreach x (cdar (vlr-reactors :vlr-sysvar-reactor))
(if (= (vlr-data x) "Auto-Unikey") (vlr-remove x)))
(foreach x (cdar (vlr-reactors :vlr-mouse-reactor))
(if (= (vlr-data x) "Double-Click") (vlr-remove x)))
;;; Tao Reactor Auto-Unikey
(vlr-mouse-reactor "Double-Click" '((:vlr-beginDoubleClick . callback-DoubleClick)))
(vlr-sysvar-reactor "Auto-Unikey" '((:vlr-sysvarchanged . callback-Unikey)))
;;; Dinh nghia lai lenh ED de lay ename doi tuong
(defun c:ed (/ textedit font ent)
(and (or (and (setq textedit (ssget "I" '((0 . "*TEXT,DIMENSION"))))
(sssetfirst textedit)
(setq textedit (ssname textedit 0)))
(setq textedit (car (entsel))))
(while textedit
(setq ent (cdr (assoc 0 (entget textedit))))
(cond ((wcmatch ent "*TEXT")
(setq font (vla-get-stylename (vlax-ename->vla-object textedit))))
((= ent "DIMENSION")
(setq font (vla-get-textstyle (vlax-ename->vla-object textedit)))))
(command "ddedit" textedit "")
(setq textedit (car (entsel)))))
(princ))
;;; Ham callback dieu khien bo go tieng viet
(defun callback-Unikey (reactor sysvar / code Crfont)
(if (= (car sysvar) "TEXTEDITOR") (sendkeys "^+"))
(if (> (getvar "TEXTEDITOR") 0)
(progn
(if font (setq Crfont font) (setq Crfont (getvar "textstyle")))
(setq code (check-font-code Crfont))
(cond ((= code "TCVN3") (sendkeys "^+{F2}"))
((= code "UNICODE") (sendkeys "^+{F1}"))
((= code "VNI") (sendkeys "^+{F3}")))
(setq font nil))))
;;; Ham callback lay textstyle khi Double Click vao text
(defun callback-DoubleClick (reactor point / sset obj ss)
(setq sset (vla-get-selectionsets (vla-get-activedocument (vlax-get-acad-object))))
(setq ss (vla-add sset "ThuyLinh313"))
(vla-selectatpoint ss (vlax-3d-point (car point)))
(if (> (vlax-get ss 'Count) 0)
(progn
(setq obj (vla-item ss 0))
(if (or (eq (vlax-get obj 'ObjectName) "AcDbText")
(eq (vlax-get obj 'ObjectName) "AcDbMText"))
(setq font (vla-get-stylename obj)))
(sssetfirst nil (ssadd (vlax-vla-object->ename obj)))))
(vla-delete ss))
;;; Ham kiem tra bang ma cua textstyle (su dung true type font)
;;; style: String - ten cua textstlye kiem tra
(defun Check-Font-Code (style / ts font Bold Italic charSet PitchandFamily)
(setq ts (vlax-ename->vla-object (tblobjname "style" style)))
(vla-GetFont ts 'font 'Bold 'Italic 'charSet 'PitchandFamily)
(if (= font "") (setq font (vla-get-fontfile ts)))
(cond ((wcmatch (setq font (strcase font)) "ARIAL*,TAHOMA*,TIMES*,COURIER NEW,CAMBRIA,CONSOLAS") "UNICODE")
((wcmatch font ".VN*") "TCVN3")
((wcmatch font "VNI*") "VNI")))
;;; Ham senkeys
(defun SendKeys (keys / wscript)
(vlax-invoke-method (setq wscript (vlax-create-object "WScript.Shell")) 'sendkeys keys)
(vlax-release-object wscript))
(Chú ý: cần thiết lập chế độ gõ tiếng anh mặc định khi sử dụng cad)

Từ ý tưởng của bạn Phamngoctukts thì mình nảy sinh ý định viết ứng dụng này để hỗ trợ với tất cả các loại text trong bản vẽ: attribute, text trong khối block, rtext... Hi vọng sẽ làm được trong các version tiếp theo :D

Cám ơn bạn. Thấy ý tưởng viết lisp này hay nhưng down về sd chưa đc, không hiểu cách dùng.
Mình mở cad tạo 3 đối tượng text, 1 là font ABC, 2 là font VNI, 3 là Unicode. Load CT, đánh lệnh ed thấy trình Unikey kg bật tắt đúng kiểu cần thiết. Đánh kiểu vni hay telex đều kg đc. Làm thế nào mới chạy đúng bạn nhỉ
  • 0

#59 tien2005

tien2005

    biết lệnh properties

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

Đã gửi 28 January 2013 - 09:43 PM

@TRUNGNGAMY: bộ gõ unikey của Bạn cần để phím tắt chuyển chế độ gõ Anh/Việt là CTRL+ASHIFT, lisp trên của ThuyLinh313 không có sendkeys ALT+Z. Việc double click để sửa text thì chưa hoàn chỉnh
Trước khi dùng lệnh ED của lisp thì chế độ gõ của unikey phải là tiếng Anh
  • 1

#60 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 29 January 2013 - 07:23 AM

.@phamngoctukts: Mình có tính đến phương án này, nhưng ngặt 1 lỗi nếu dùng DCL thì bắt buộc phải gõ Unicode khi chỉnh sửa thì mới hiển thị tiếng việt được.
.......

Bạn có thể dùng PA là Lấy nội dung Text -> tắt Text đó đi và viết chữ bằng Dtext với nội dung mới ngay vị trí điểm chèn text vừa lấy
Sau đó lấy nội dung text vừa viết -> xóa text vừa viết đi và tiến hành update
Cảm ơn bạn đã cho ra đời ứng dụng hay.

@All: Tue_NV đã xóa các bài viết spam để không làm loãng chủ đề này.
  • 2