Rated 5/5 based on 240179 internet user reviews

Jump to content


Change Photo
* * * * - 2 Phiếu

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

#61 LoveLisp

LoveLisp

    biết lệnh extend

  • Members
  • PipPipPip
  • 195 posts
Danh tiếng: 19 (tm tạm)

Gửi vào 29 January 2013 - 08:17 AM

Bạn ThuyLinh vui lòng hướng dẫn cách sử dụng được không? Mình đã làm theo các bước sau nhưng chẳng thấy điều gì xảy ra cả:

1. Khởi động Unikey 4.0 Beta 2, chuyển về tiếng Anh (đang thiết lập gõ telex).
2. Khởi động AutoCAD, load lisp.
3. Gõ lệnh ED, pick vào text

Kết quả: Unikey vẫn hiện chữ E ở góc dưới bên phải màn hình, không thể gõ được tiếng Việt.
Mình đang sử dụng Win7 64bit, AutoCAD2007.
  • 0

#62 ThuyLinh313

ThuyLinh313

    biết lệnh hatchedit

  • Members
  • PipPipPipPip
  • 269 posts
Danh tiếng: 125 (tm tạm)

Gửi vào 29 January 2013 - 10:06 AM

@Tue_NV: Bạn đề xuất đúng phương án mà mình sẽ thực hiện. Mình đang phải mày mò nghiên cứu code lệnh Ncopy của express để áp dụng vào trường hợp này. ^^

@LoveLisp: Ứng dụng này chỉ chạy với cad 2009 trở lên thôi nhé, mình đã nói điều này ở trang 2 rồi. Với cad đời thấp thì bạn tạm sử dụng code của bạn phamngoctukts ở trang 2 trong khi chờ bạn í update code mới.
  • 0

#63 ThuyLinh313

ThuyLinh313

    biết lệnh hatchedit

  • Members
  • PipPipPipPip
  • 269 posts
Danh tiếng: 125 (tm tạm)

Gửi vào 29 January 2013 - 05:05 PM

Version 3.0: Hỗ trợ tự động bật tắt chế độ gõ tiếng việt và tự động nhận diện bảng mã thích hợp khi chỉnh sửa các loại đối tượng sau:
1. DText, MText (Riêng 2 loại đối tượng này chương trình có hỗ trợ việc kích đúp để sửa đối tượng)
2. Text trong Dimension
3. DText, Mtext trong Block (Việc chỉnh sửa các loại text này giống hệt với các text thường)
4. Các loại text attribute trong block thuộc tính
5. Tích hợp lệnh HatchEdit vào lệnh ED luôn.

Hướng dẫn sử dụng:
- Chương trình chạy với các bản cad 2009 trở lên.
- Hỗ trợ bộ gõ Unikey của tác giả Phạm Kim Long. (Nếu bạn sử dụng bộ gõ khác có hỗ trợ hotkey, bạn có thể điều chỉnh hotkey theo Unikey để tương thích với chương trình này. hoặc nếu bạn có thể viết lisp, hãy sửa chương trình này theo ý của bạn)
- Thích hợp với người gõ tiếng việt theo kiểu Telex. (Nếu bạn gõ theo kiểu VNI thì không cần sử dụng chương trình này, bạn có thể tham khảo phương pháp của Duy782006 ở trang 2)
- đặt hotkey đổi chế độ gõ Anh-Việt là Ctrl+Shift. (nếu bạn đặt là Alt+Z thì làm theo hướng dẫn ở trang 2)
- Với các đối tượng DText, Mtext trong Block, chương trình chỉ hỗ trợ khi cad của bạn đã cài đặt gói Express tool. (Mình ngại viết lại nên lấy luôn 1 hàm của express)
- Tải lisp này vào cad, để chế độ gõ mặc định của Unikey là Tiếng Anh và trải nghiệm thôi ^^

Các bạn Test giúp mình xem còn phải chỉnh sửa gì nữa không nhé, đây sẽ là phiên bản final của ứng dụng này. Cảm ơn ý kiến đóng góp của các bạn đã giúp mình hoàn thiện nó!
;================================================================;
;  	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 objects 	;
;  	- fixed ED vl-cmdf to select continues (thanks Tien2005)  ;
;                                                             	;
;  Version 3.0 - 29/01/2013                                   	;
;  	- Added support All Attribute objects (thanks Thaistreetz);
;  	- Added support Text & Mtext objects in Insert Block   	;
;                                                             	;
;================================================================;
;  	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 n-textedit ent n-ent obj n-obj l-obj font code dk lst *error*)
(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 ent (cdr (assoc 0 (entget obj))))
   	(cond ((wcmatch ent "*TEXT") ;Text,Mtext,Rtext
          	(setq font (cdr (assoc 7 (entget obj))))
          	(vl-cmdf "ddedit" textedit ""))
         	((= ent "DIMENSION") ;Dimension
          	(setq font (vla-get-textstyle (vlax-ename->vla-object obj)))
          	(vl-cmdf "ddedit" textedit ""))
         	((= ent "HATCH") ;Hatch
          	(initdia)
          	(vl-cmdf "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)
                        	(setq l-obj (entlast) font (cdr (assoc 7 n-ent)))
                        	(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))))
(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 objtype)
(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) objtype (vlax-get obj 'ObjectName))
   (if (wcmatch objtype "AcDbText,AcDbMText")
	(progn
 	(setq font (vla-get-stylename obj))
 	(sssetfirst nil (ssadd (vlax-vla-object->ename obj))))
	(if (not (eq objtype "AcDbBlockReference"))
 	(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))
;;; Ham bat loi Esc
(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

  • 9

#64 LoveLisp

LoveLisp

    biết lệnh extend

  • Members
  • PipPipPip
  • 195 posts
Danh tiếng: 19 (tm tạm)

Gửi vào 29 January 2013 - 05:25 PM

Bạn ThuyLinh có thể chỉnh sửa để code của bạn có thể dùng cho các CAD đời thấp hơn không, như cách mà bạn phamngoctukts đã làm?
  • 0

#65 ThuyLinh313

ThuyLinh313

    biết lệnh hatchedit

  • Members
  • PipPipPipPip
  • 269 posts
Danh tiếng: 125 (tm tạm)

Gửi vào 29 January 2013 - 05:31 PM

LoveLisp! Cái nick đã chỉ rõ rằng bạn có thể tự sửa lisp trên được mà. Bạn thử sửa theo hướng mà bạn Phamngoctukts đã làm ở trang 2 xem thế nào.
  • 0

#66 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1,107 posts
Danh tiếng: 687 (tốt)

Gửi vào 29 January 2013 - 08:43 PM

Mình chỉ thắc mắc là tại sao phải định nghĩa lại lệnh "ed" trong khi bạn đã có 2 hàm callback rồi?
  • 0
Tất cả v sự pht triển của diễn đn ...
Cm ơn đừng ni lời sung m hy nhấn Posted Image!

#67 ThuyLinh313

ThuyLinh313

    biết lệnh hatchedit

  • Members
  • PipPipPipPip
  • 269 posts
Danh tiếng: 125 (tm tạm)

Gửi vào 30 January 2013 - 08:00 AM

- Ban đầu (ver1.0) thì mình định nghĩa lại "ED" mục đích chỉ để lấy được ename của đối tượng text được chỉnh sửa. sau đó hàm callback sẽ căn cứ vào ename lấy được để kiểm tra bảng mã tương ứng của nó và truyền lệnh đến Unikey. (Phải làm bước này vì trong hàm callback ta không có cách gì để lấy được ename của đối tượng đang sửa)
- Đến ver 3.0 thì "ED" phải giải quyết rất nhiều công việc rồi, Nó có nhiệm vụ phân loại các kiểu đối tượng sửa, với mỗi loại thì nó đưa ra các ứng xử khác nhau cho phù hợp, mục đích cuối cùng là lấy được textstyle của đối tượng bị sửa rồi truyền cho hàm callback.

Lưu ý là: Mình muốn dùng reactor để viết code cho gọn và tăng khả năng tự động hóa cho toàn bộ hệ thống lệnh cad và lệnh lisp có liên quan. Các bạn có thể thay thế bằng các hàm lisp thông thường, nhưng trong trường hợp đó sẽ có khá nhiều lệnh phải can thiệp chứ không chỉ gói gọn trong 1 lệnh ED nữa. Ví dụ: các lệnh tạo text hay Mtext, hoặc nếu các lisp của bạn có chức năng tạo các đối tượng text bằng command thì cũng sẽ không tự động tích hợp chức năng này vào được. Hơi trừu tượng, nhưng nếu bạn có 1 hệ thống các lệnh tạo text theo chuẩn riêng của cty thì bạn sẽ thấy được ý nghĩa của việc sử dụng reactor trong trong lisp này.
  • 0

#68 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1,107 posts
Danh tiếng: 687 (tốt)

Gửi vào 30 January 2013 - 08:53 AM

Trong lisp của bạn nếu xóa bỏ function của lệnh ed đi thì lisp vẫn chạy bình thường. Với việc dùng ssgetfirst bạn hoàn toàn có thể gói gọn nó vào trong hàm callback.
  • 0
Tất cả v sự pht triển của diễn đn ...
Cm ơn đừng ni lời sung m hy nhấn Posted Image!

#69 ThuyLinh313

ThuyLinh313

    biết lệnh hatchedit

  • Members
  • PipPipPipPip
  • 269 posts
Danh tiếng: 125 (tm tạm)

Gửi vào 30 January 2013 - 10:44 AM

Bạn post code đã sửa nên đi, có thể mình viết chưa tối ưu hoặc có thể ngược lại, bạn chưa hiểu hết ý đồ trong code của mình. Chúng ta cùng thảo luận.
  • 0

#70 VoHoan

VoHoan

    biết lệnh copy

  • Members
  • PipPipPip
  • 113 posts
Danh tiếng: 11 (tm tạm)

Gửi vào 30 January 2013 - 04:41 PM

Version 3.0 vẫn chưa khắc phục được lỗi tự chuyển mã gõ text khi có 3 kiểu text khác nhau! Vì tính hay quên và "mổ cò" nên mong có 1 version dùng ngon lành.
  • 0

#71 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 901 posts
Danh tiếng: 492 (tốt)

Gửi vào 09 February 2013 - 12:52 PM

P/s a Thái và TLinh : có nhiều người theo dõi topic

@Ketxu: có chuyện gì thế hả ketxu?
@TL: không có cad để test nhưng đọc qua code thì anh chắc chắn là code trên của em không thể áp dụng cho Rtext. Lệnh ddedit không có hỗ trợ rtext đâu. Anh nhớ không nhầm thì autodesk phải viết riêng một lệnh để sửa rtext được tích hợp vào express.
bộ gõ Tiếng Việt của tác giả Kỳ Nam giải quyết rất tốt các chế độ gõ cho từng chương trình, từng cửa sổ con trong các chương trình sao em không dùng mà cứ phải là unikey nhi? Kết hợp với lisp này nữa là giải quyết được rất nhiều vấn đề đấy.
  • 0

Posted Image
IN HIM, I TRUST. THE TRUST IN MY GOD


#72 trung ta 1

trung ta 1

    Chưa sử dụng CAD

  • Members
  • Pip
  • 1 posts
Danh tiếng: -1 (bnh thường)

Gửi vào 10 February 2013 - 03:09 PM

cho mình hỏi trong tỷ lệ vẽ cad mình vẽ tye lệ 1/100 nhưng mà nó nhỏ quá nhìn không thấy khi in ra thì nó nhỏ xíu nhìn không đẹp gì hết,

mình vẻ các chi tiết nhỏ nên các đường line ngắn vd như vẽ đoạn thẳng 0,5cm thì mình vẽ theo tỷ lệ 1/10 nhưng cale lên thi kích thước nó bị đổi khác nếu không cale thì không thấy đường


  • -1

#73 ThuyLinh313

ThuyLinh313

    biết lệnh hatchedit

  • Members
  • PipPipPipPip
  • 269 posts
Danh tiếng: 125 (tm tạm)

Gửi vào 17 February 2013 - 10:11 PM

- Mình có viết code trên cho Rtext đâu. Ban đầu thì cũng định viết cho đủ nhưng không dùng nên thôi. (mình dùng field chứ không dùng Rtext). Hướng dẫn sử dung mình ghi rõ từng loại đối tượng hỗ trợ rồi mà.

- Mình không thích và không dùng GoTiengViet vì:

(1) Nó quá nặng nề cho 1 chương trình chạy nền.

(2) không cho phép gõ chữ ư bằng w mà buộc phải gõ uw. không dễ mà thay đổi được thói quen này

(3) quá it người dùng GTV, nếu mình viết tiện ích trên cho bộ gõ này thì topic này lập ra không khác gì việc góp rác vào diễn đàn.

Thanks man!


  • 0

#74 lisp4fun

lisp4fun

    Chưa sử dụng CAD

  • Members
  • Pip
  • 3 posts
Danh tiếng: 0 (bnh thường)

Gửi vào 19 July 2013 - 10:41 AM

LISP hay quá, thanks các bác.

Nhân tiện cho em hỏi, các bác có thể cung cấp cho em các biến môi trường khi đang edit các đối tượng khác được không, ví dụ khi đang edit MTEXT, BLOCK - giống như cái biến TEXTEDITOR trong bài ấy.


  • 0

#75 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 901 posts
Danh tiếng: 492 (tốt)

Gửi vào 22 July 2013 - 07:25 PM

Bạn tìm cái lisp theo dõi sự thay đổi biến hệ thống khi sử dụng cad. Em Linh cũng phải sử dụng lisp đó của mình mới có thể cho ra được cái ứng dụng hay ho này, k thì viết bằng niềm tin :D
  • 1

Posted Image
IN HIM, I TRUST. THE TRUST IN MY GOD


#76 ThuyLinh313

ThuyLinh313

    biết lệnh hatchedit

  • Members
  • PipPipPipPip
  • 269 posts
Danh tiếng: 125 (tm tạm)

Gửi vào 23 July 2013 - 09:59 AM

@lisp4fun: Link này http://www.cadviet.c...g-qua-trinh-ve/


  • 1

#77 lisp4fun

lisp4fun

    Chưa sử dụng CAD

  • Members
  • Pip
  • 3 posts
Danh tiếng: 0 (bnh thường)

Gửi vào 25 July 2013 - 08:16 AM

cảm ơn bác


  • 0

#78 gadibo

gadibo

    biết vẽ line

  • Members
  • PipPip
  • 22 posts
Danh tiếng: 1 (bnh thường)

Gửi vào 30 August 2013 - 10:04 AM

bạn có thể chuyển sang cho cad đời thấp dùng dc ko ?

vì ko phải ai cũng có nhu cầu cad đời cao , đại đa số các pm nhúng vào cad đều dùng cad 2007 .với một cơ số người thì cad 2007 đủ để phục vụ nhu cầu của họi và nhẹ load hơn nhiều.

thank!


  • 0

#79 huunhantvxdts

huunhantvxdts

    biết lệnh break

  • Members
  • PipPipPipPip
  • 227 posts
Danh tiếng: 17 (tm tạm)

Gửi vào 04 September 2013 - 02:33 PM

bạn có thể chuyển sang cho cad đời thấp dùng dc ko ?

vì ko phải ai cũng có nhu cầu cad đời cao , đại đa số các pm nhúng vào cad đều dùng cad 2007 .với một cơ số người thì cad 2007 đủ để phục vụ nhu cầu của họi và nhẹ load hơn nhiều.

thank!

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.com/forum/topic/66851-da-xong-tu-dong-bat-tat-che-do-go-tieng-viet-trong-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


  • 0

#80 ThuyLinh313

ThuyLinh313

    biết lệnh hatchedit

  • Members
  • PipPipPipPip
  • 269 posts
Danh tiếng: 125 (tm tạm)

Gửi vào 06 September 2013 - 11:05 AM

bạn có thể chuyển sang cho cad đời thấp dùng dc ko ?

vì ko phải ai cũng có nhu cầu cad đời cao , đại đa số các pm nhúng vào cad đều dùng cad 2007 .với một cơ số người thì cad 2007 đủ để phục vụ nhu cầu của họi và nhẹ load hơn nhiều.

thank!

Mình rất muốn viết cho cad đời thấp để nhiều bạn có thể sử dụng được. Tuy nhiên vấn đề nằm ở chỗ Cad đời thấp từ 2008 trở xuống không hỗ trợ một số chức năng mà lisp trên sử dụng nên không viết được. Nếu cố viết thì cũng chỉ đáp ứng được một phần chức năng so với bản cho cad 2009 trở lên, những công việc mang tính nửa vời như vậy mình không có hứng thú để làm cho lắm.

Mình sẽ suy nghĩ về đề nghị của bạn, nếu mình tìm được giải pháp mới cho cad đời thấp mình sẽ viết. không hứa chắc chắn nhé :)

 

@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 để.


  • 0