Đế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

#81 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 06 September 2013 - 11:14 AM

Tiện đây mình muốn hỏi: Các bạn có í tưởng hay đề xuất gì để lisp này chạy được với các font shx không? mình sẽ phát triển tiếp.


  • 0

#82 gadibo

gadibo

    biết vẽ line

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

Đã gửi 13 September 2013 - 11:01 AM

Tiện đây mình muốn hỏi: Các bạn có í tưởng hay đề xuất gì để lisp này chạy được với các font shx không? mình sẽ phát triển tiếp.

Hiện tại việc giải quyết cho cad đời thấp là rất hợp lý , vì hầu như các anh em ít ai dùng vượt qua cad 2007 .( nhẹ , dễ cài đặt , đủ đáp ứng nhu cầu )

ứng dụng này của bác có thể phục vụ hầu hết các anh em Bắc-Trung-Nam . vì mỗi vùng có 1 kiểu gõ khác nhau . Bắc(tcvn) - Nam (vni) - riêng bản thân em lại là unicode ( vì nó phổ thông ).

trong nhiều trường hợp có cả 3 loại hình trên .

VD : các nhà thầu tư vấn gồm có B tổng thể - B chính - B phụ

B tổng thể cấp bản vẽ điển hình cho B chính có bộ VNI - ông B chính quen gõ tcvn lại hiệu chỉnh một số text về tcvn rồi lại chuyển bản vẽ cho B phụ - ông B phụ dùng phần mềm thiết kế độc unicode .

rối hết bản vẽ . từ lúc có ứng dụng của bác thì nó đã khắc phục dc phần lớn nhu cầu đó .

nếu ứng dụng dùng dc cho SHX và font hệ thống là hay nhất . đỉnh cao của linh động .

thank ! em nghĩ ứng dụng này là cần thiết và cấp thiết . mong bác dành chút thời gian nghiên cứu hộ anh em .


  • 0

#83 huunhantvxdts

huunhantvxdts

    biết dimbaseline

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

Đã gửi 13 September 2013 - 03:41 PM

@huunhantvxdts: cảm ơn bạn đã phát triển tiếp lisp này. Tuy nhiên bạn thử xem có ý tưởng gì khác không để viết cho cad2008- bởi nếu vẫn sử dụng cách của mình và sửa lại thì chắc chắn gặp nhiều hạn chế, code bạn sửa về cơ bản thì cũng giống cách bạn phamngoctuks đã sửa nên không giải quyết được triệt để.

Lisp mình viết ở trên là kết hợp giữa của bạn và của bạn phamngoctuks thì phải (bỡi mày mò khá lâu mới chạy được) hiện tại mình sử dụng thấy cũng khá ổn rồi. chỉ bị mắc 1 lỗi là phải đánh ed chứ không kíp đúp được. không biết có bạn nào sử dụng chưa mà không có ý kiến???


  • 0

#84 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 14 September 2013 - 10:06 AM

Có thể bạn chưa biết. lisp mình viết còn để sử dụng cho bất kỳ lệnh tạo text mới, cả lệnh gốc của cad (T, MT, DT, Mtext, Text...) hay các lệnh được viết bằng lisp có làm thay đổi biến hệ thống TextEditor. Phamngoctuks khi đọc code của mình đã không nhận ra được điều này, mình nghĩ rằng bạn cũng vậy.

Nếu bạn có sử dụng một trong các bản cad 2009 trở lên, hãy thử tải lisp của mình và sử dụng lệnh T, DT, MT sẽ thấy Unikey cũng được can thiệp giống như lệnh ED.

Lisp của bạn và phamngoctuks khi sửa lại vô tình làm mất chức năng này so với lisp gốc của mình, chỉ còn lại chức năng sửa text (ED). Mình nói giống nhau là vậy.


  • 1

#85 mrhungnb

mrhungnb

    Chưa sử dụng CAD

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

Đã gửi 16 September 2013 - 10:11 PM

Có chỉnh luôn bật chế độ gõ tiếng việt khi sử dụng lệnh .find để replace text không bạn?


  • 0

#86 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 17 September 2013 - 08:04 AM

Không. vì làm sao để biết nội dung bạn định tìm thuộc bảng mã nào.

Ví dụ: bạn gõ vào nội dung tìm kiếm là bảng mã Unicode, nhưng bản vẽ của bạn lại sử dụng TCVN3 hoặc cả 2.


  • 0

#87 gadibo

gadibo

    biết vẽ line

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

Đã gửi 28 September 2013 - 08:41 AM

có tia sáng nào cho cad đời thấp ko bác .

đặt gạch hóng đã lâu mà vẫn chưa thấy.


  • 0

#88 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 30 September 2013 - 08:09 PM

Cảm ơn các bạn đã tin tưởng và ủng hộ ứng dung này.

Mình sẽ viết lại ứng dụng này cho cad đời thấp mà cụ thể là sẽ tối ưu cho Cad2007,2008 (nhưng mình có thể khẳng định nó sẽ không thông minh như bản cho cad 2009+, tuy nhiên sẽ tốt hơn các lisp mà 2 bạn HuuNhan va PhamNgocTu đã làm)

Ngoài ra mình đã nghĩ ra 1 phương án cho shx. mình sẽ bổ sung phần này cho cả 2 bản.

Vấn đề còn lại là hiện tại mình chưa có thời gian để code do bận chuyện gia đình. Vì thế không biết chắc khi nào sẽ hoàn thành. 2 tuần nữa mình sẽ bắt tay vào code.


  • 0

#89 duytmd

duytmd

    Chưa sử dụng CAD

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

Đã gửi 14 November 2013 - 11:02 AM

Bạn ơ, mình muốn thêm bảng mã vietware vao trong lips thì làm như thế nào?Mình dung bảng mã vietware thì gõ tiếng việt không được.


  • 0

#90 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 19 November 2013 - 07:51 AM

Không được bạn ạ, vì unikey chỉ hỗ trợ phím tắt cho 4 bảng mã: Unicode, TCVN3, VNI và VIQR tương ứng với 4 tổ hợp phím Ctrl+Shift+ F1; F2; F3; F4. Nếu bạn dùng bộ gõ nào khác có hỗ trợ phím tắt cho Vietware thì hoàn toàn có thể làm được.


  • 0

#91 whatcholingon

whatcholingon

    biết lệnh break

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

Đã gửi 19 November 2013 - 03:05 PM

Lisp này mình lấy về tự chế lại còn bị lỗi 1 số chổ chưa sữa được (đó là phải nhập lệnh ed) nhưng dùng cũng tạm được. Mình dùng cad2008

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.c...rong-cad/page-2
 
(vl-load-com)
;;; Dinh nghia lai lenh ED de lay ename doi tuong
(defun c:ed (/ textedit font ent n-textedit n-obj n-ent dk code l-obj obj lst)
(SETQ OLDERR *error*
*error* myerror)
(sendkeys "^+")
(and (or (and (setq textedit (ssget "I"))
           	(sssetfirst textedit)
           	(setq obj (ssname textedit 0)))
      	(setq textedit (entsel) obj (car textedit)))
(while obj
;(setq lst (Start-defun nil))
;(setq textedit (car (entsel)))
(setq ent (cdr (assoc 0 (entget obj))))
(cond ((wcmatch ent "*TEXT"); text
(progn
(setq font (cdr (assoc 7 (entget obj))))
;(setq font (vla-get-stylename (vlax-ename->vla-object textedit)))
(call font)
(command "ddedit" textedit "")
))
((= ent "DIMENSION") ;Dimension
(progn
          	(setq font (vla-get-textstyle (vlax-ename->vla-object obj)))
			;(setq font (vla-get-textstyle (vlax-ename->vla-object textedit)))
          	(call font)
			(command "ddedit" textedit "")
))
((= ent "HATCH") ;Hatch
(progn
          	(initdia)
			(call font)
			(command "hatchedit" textedit)
))
((= ent "INSERT") ;Block
          	(and (eq (type textedit) 'LIST)
               	(setq n-textedit (nentselp (cadr textedit)))
               	(setq n-obj (car n-textedit))
               	(setq n-ent (entget n-obj))
               	(setq n-obj (vlax-ename->vla-object n-obj))
               	(cond ((= (cdr (assoc 0 n-ent)) "ATTRIB") ; Attribute
                      	(setq code (check-font-code (cdr (assoc 7 n-ent))))
                      	(if (eq (vla-get-mtextattribute n-obj) :vlax-false)
                       	(progn
                        	;(setq dk nil dk (sendkeys "^+"))
                        	(cond ((= code "TCVN3") (sendkeys "^+{F2}"))
                              	((= code "UNICODE") (sendkeys "^+{F1}"))
                              	((= code "VNI") (sendkeys "^+{F3}")))))
						(vl-cmdf "eattedit" textedit)
                       	(if dk (sendkeys "^+")))
                     	((wcmatch (cdr (assoc 0 n-ent)) "TEXT,MTEXT") ; Text,Mtext in Block
                      	(if (or extract_clone (and (not extract_clone) (load "trexblk.lsp")))
                       	(progn
                        	(extract_clone n-textedit)
                        	(vla-put-visible n-obj :vlax-false)
                        	(entupd obj)
                        	(progn
							(setq l-obj (entlast) font (cdr (assoc 7 n-ent)))
							(call font)
							(vl-cmdf "DDedit" l-obj "")
							)
                        	(vla-put-textstring n-obj (cdr (assoc 1 (entget l-obj))))
                        	(vla-put-visible n-obj :vlax-true)
                        	(entdel l-obj)
                        	(entupd obj))
                       	(princ "Ban chua cai dat goi Express tool cho CAD\n"))))))
); cond	
;(Done-defun lst)		
(setq textedit (entsel) obj (car textedit))
);while
);and
(back)
(command "HIGHLIGHT" 1 "")
(SETQ *error* OLDERR)
(princ))
;;; Ham call dieu khien bo go tieng viet
(defun call (font / code Crfont)
(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}"))
)
)
;;; Ham tra lai English
(defun back ()
(sendkeys "^+")
)
;;; 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))
;;;Ham bay loi
(defun myerror (s)
(if (= s "Function Cancelled") (sendkeys "^+"))
  (setq *error* OLDERR)
  (princ)
)
(defun Start-defun (lst-var)
(defun *error* (msg)
(redraw)
(vl-cmdf "undo" "end")
(vl-cmdf "undo" "")
(princ));end
(vl-cmdf "undo" "begin")
(mapcar '(lambda(x) (list x (getvar x))) lst-var));end
;;;
(defun Done-defun (lst-var / )
(mapcar '(lambda (x) (setvar (car x) (cadr x))) lst-var)
(vl-cmdf "undo" "end")
(princ));end

Bạn kiểm tra lại xem sau khi load lsp lên,khi chỉnh sửa text xong nó lại ko tự tắt unikey đi nhể!

Thanks!


  • 0

#92 huunhantvxdts

huunhantvxdts

    biết dimbaseline

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

Đã gửi 20 November 2013 - 09:41 AM

Lisp này mình lấy về tự chế lại còn bị lỗi 1 số chổ chưa sữa được (đó là phải nhập lệnh ed) nhưng dùng cũng tạm được. Mình dùng cad2008

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.c...rong-cad/page-2
 
(vl-load-com)
;;; Dinh nghia lai lenh ED de lay ename doi tuong
(defun c:ed (/ textedit font ent n-textedit n-obj n-ent dk code l-obj obj lst)
(SETQ OLDERR *error*
*error* myerror)
(sendkeys "^+")
(and (or (and (setq textedit (ssget "I"))
           	(sssetfirst textedit)
           	(setq obj (ssname textedit 0)))
      	(setq textedit (entsel) obj (car textedit)))
(while obj
;(setq lst (Start-defun nil))
;(setq textedit (car (entsel)))
(setq ent (cdr (assoc 0 (entget obj))))
(cond ((wcmatch ent "*TEXT"); text
(progn
(setq font (cdr (assoc 7 (entget obj))))
;(setq font (vla-get-stylename (vlax-ename->vla-object textedit)))
(call font)
(command "ddedit" textedit "")
))
((= ent "DIMENSION") ;Dimension
(progn
          	(setq font (vla-get-textstyle (vlax-ename->vla-object obj)))
			;(setq font (vla-get-textstyle (vlax-ename->vla-object textedit)))
          	(call font)
			(command "ddedit" textedit "")
))
((= ent "HATCH") ;Hatch
(progn
          	(initdia)
			(call font)
			(command "hatchedit" textedit)
))
((= ent "INSERT") ;Block
          	(and (eq (type textedit) 'LIST)
               	(setq n-textedit (nentselp (cadr textedit)))
               	(setq n-obj (car n-textedit))
               	(setq n-ent (entget n-obj))
               	(setq n-obj (vlax-ename->vla-object n-obj))
               	(cond ((= (cdr (assoc 0 n-ent)) "ATTRIB") ; Attribute
                      	(setq code (check-font-code (cdr (assoc 7 n-ent))))
                      	(if (eq (vla-get-mtextattribute n-obj) :vlax-false)
                       	(progn
                        	;(setq dk nil dk (sendkeys "^+"))
                        	(cond ((= code "TCVN3") (sendkeys "^+{F2}"))
                              	((= code "UNICODE") (sendkeys "^+{F1}"))
                              	((= code "VNI") (sendkeys "^+{F3}")))))
						(vl-cmdf "eattedit" textedit)
                       	(if dk (sendkeys "^+")))
                     	((wcmatch (cdr (assoc 0 n-ent)) "TEXT,MTEXT") ; Text,Mtext in Block
                      	(if (or extract_clone (and (not extract_clone) (load "trexblk.lsp")))
                       	(progn
                        	(extract_clone n-textedit)
                        	(vla-put-visible n-obj :vlax-false)
                        	(entupd obj)
                        	(progn
							(setq l-obj (entlast) font (cdr (assoc 7 n-ent)))
							(call font)
							(vl-cmdf "DDedit" l-obj "")
							)
                        	(vla-put-textstring n-obj (cdr (assoc 1 (entget l-obj))))
                        	(vla-put-visible n-obj :vlax-true)
                        	(entdel l-obj)
                        	(entupd obj))
                       	(princ "Ban chua cai dat goi Express tool cho CAD\n"))))))
); cond	
;(Done-defun lst)		
(setq textedit (entsel) obj (car textedit))
);while
);and
(back)
(command "HIGHLIGHT" 1 "")
(SETQ *error* OLDERR)
(princ))
;;; Ham call dieu khien bo go tieng viet
(defun call (font / code Crfont)
(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}"))
)
)
;;; Ham tra lai English
(defun back ()
(sendkeys "^+")
)
;;; 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))
;;;Ham bay loi
(defun myerror (s)
(if (= s "Function Cancelled") (sendkeys "^+"))
  (setq *error* OLDERR)
  (princ)
)
(defun Start-defun (lst-var)
(defun *error* (msg)
(redraw)
(vl-cmdf "undo" "end")
(vl-cmdf "undo" "")
(princ));end
(vl-cmdf "undo" "begin")
(mapcar '(lambda(x) (list x (getvar x))) lst-var));end
;;;
(defun Done-defun (lst-var / )
(mapcar '(lambda (x) (setvar (car x) (cadr x))) lst-var)
(vl-cmdf "undo" "end")
(princ));end

Bạn kiểm tra lại xem sau khi load lsp lên,khi chỉnh sửa text xong nó lại ko tự tắt unikey đi nhể!

Thanks!

Có ai bị như vậy ko nhể chứ của mình vẫn sử dụng bình thường mà ko bị như vậy. chắc bạn chỉnh text xong ấn ESC phải ko??? phải ấn enter để hết lệnh


  • 0

#93 anhthao10

anhthao10

    biết zoom

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

Đã gửi 12 January 2014 - 09:29 AM

Font trong file đính kèm gõ như thế nào Chị THUYLINH ơi ? E mò mãi mà không gõ được tiếng việt với font đó

http://www.cadviet.c...ieng_viet_2.dwg


  • 0

#94 anhtuan505

anhtuan505

    Chưa sử dụng CAD

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

Đã gửi 17 April 2014 - 12:31 PM

@thuylinh313: sao minh tai về mà dùng không được nhỉ?? minh đang sử dụng cad 2009 và 2014 chạy trên win 8 x32 khi load lisp lên và để unikey ở chế độ tiêng anh nhưng đanh lệnh ed hay kick đúp đều ko có gì xảy ra??


  • 0

#95 nvh

nvh

    biết vẽ line

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

Đã gửi 09 June 2014 - 08:30 PM

Lisp rất hay và tiện dụng. Hy vọng các bác có thể chỉnh sửa cho chạy tốt đối với các đời CAD thấp hơn ví dụ như CAD 2007. Thanks !
  • 0