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

ceddtu

Thành viên
  • Số lượng nội dung

    90
  • Đã tham gia

  • Lần ghé thăm cuối

  • Ngày trúng

    1

Bài đăng được đăng bởi ceddtu


  1. Vào lúc 1/10/2017 tại 17:20, quocmanh04tt đã nói:

    Các cao thủ trở thành "CU THẢO" hết cả rồi...! Hãy tìm kiếm với từ khóa GETPAT.lsp, người ta viết từ năm 2001. Còn chế biến ntn cho phù hợp thì tùy cá nhân.

    
    ;|
    
    GETPAT.LSP (c) 2001 Tee Square Graphics
        Version 1.01b - 1/22/2002
        
    This routine may be used to extract hatch pattern data
    from existing drawings when the .pat file containing
    the original information is not available.
    
    After loading the file in the usual manner, type the
    command GETPAT at the AutoCAD Command: prompt, select
    any (non-SOLID) hatch object, and the pattern information
    will be written to a .pat file having the same name as
    the pattern (e.g., pattern information for the hatch
    pattern WOODS will be written to WOODS.PAT.
    
    Ver. 1.01b includes two small fixex to eliminate "Bad 
    Argument" LISP errors when run with certain installations
    of AutoCAD 2000+.
    
    |;
    
    (defun C:GETPAT (/ cmde hat elst rotn hnam temp xofs yofs what
                       temp outf flin angl tmp1 tmp2 xvec yvec)
      (setq cmde (getvar "cmdecho"))
      (setvar "cmdecho" 0)
      (while (not (setq hat (entsel "\nSelect hatch: "))))
      (setq elst (entget (car hat)))
      (if (= (cdr (assoc 0 elst)) "HATCH")
        (progn
          (setq rotn (* 180 (/ (cdr (assoc 52 elst)) pi))
                hnam (cdr (assoc 2 elst))
                hscl (cdr (assoc 41 elst))
          )
    
    ;; The following nine lines may optionally be omitted.
    ;; Their purpose is to create a temporary "clone" of the
    ;; selected hatch with a 0 deg. rotation angle, in case
    ;; the hatch object specified a rotation angle. If these
    ;; lines are omitted, the current rotation of the selected
    ;; hatch will become the "0" deg. rotation for the extracted
    ;; pattern definition.
          (if (not (zerop rotn))
            (progn
              (setq temp elst)
              (entmake temp)
              (command "_.rotate" (entlast) "" (cdr (assoc 10 temp))(- rotn))
              (setq elst (entget (entlast)))
              (entdel (entlast))
            )
          )
    ;; End of optional code.
    
          (setq xofs (cdr (assoc 43 elst))
                yofs (cdr (assoc 44 elst))
                elst (member (assoc 53 elst) elst)
          )
          (setq outf (strcat hnam ".pat"))
          (if (findfile outf)
            (progn
              (initget "Overwrite Append")
              (setq what (getkword (strcat "\n" outf " already exists; Overwrite/Append? ")))
            )
          )
          (setq outf (open outf (if (= what "Append") "a" "w"))
                flin (strcat "*" hnam)
          )
          (foreach x elst
            (cond
              ((= (car x) 53)
                (write-line flin outf)
                (setq angl (cdr x)
                      flin (trim (angtos angl 0 7))
                )
              )
              ((= (car x) 43)
                (setq flin (strcat flin ", " (trim (rtos (/ (- (cdr x) xofs) hscl) 2 7))))
              )
              ((= (car x) 44)
                (setq flin (strcat flin "," (trim (rtos (/ (- (cdr x) yofs) hscl) 2 7))))
              )
              ((= (car x) 45)
                (setq tmp1 (cdr x))
              )
              ((= (car x) 46)
                (setq tmp2 (cdr x)
                      xvec (/ (+ (* tmp1 (cos angl))(* tmp2 (sin angl))) hscl)
                      yvec (/ (- (* tmp2 (cos angl))(* tmp1 (sin angl))) hscl)
                      flin (strcat flin ", " (trim (rtos xvec 2 7)) "," (trim (rtos yvec 2 7)))
                )
              )
              ((= (car x) 49)
                (setq flin (strcat flin ", " (trim (rtos (/ (cdr x) hscl) 2 7))))
              )
              ((= (car x) 98)
                (write-line flin outf)
              )
              (T nil)
            )
          )
          (write-line "" outf)
          (close outf)
          (alert (strcat hnam " pattern definition written to " hnam ".PAT"))
        )
        (alert "Selected object not a HATCH.")
      )
      (setvar "cmdecho" cmde)
      (princ)
    )
    (defun trim (x / n)
      (setq n (strlen x))
      (while (= (substr x n 1) "0")
        (setq n (1- n)
              x (substr x 1 n)
        )
      )
      (if (= (substr x n 1) ".")
        (setq x (substr x 1 (1- n)))
      )
      x
    )
    (alert
      (strcat "GETPAT.LSP (c) 2003 Tee Square Graphics\n"
              "          Type GETPAT to start"
      )
    )
    (princ)

    Sau khi thực hiện nó báo vậy là nó lưu file pat vào đâu bạn nhỉ

    image.png.6d470156bed83dd18e8f04cd277826d9.png


  2. Vào lúc 8/9/2017 tại 17:14, hoavienquang đã nói:

    vấng đề này mình cũng rất đau đầu vì nó bấy lâu nay. hôm nay lần mò được 1 trang diễn đàn của nước ngoài. và theo mình là đã tìm ra cách khắc phục.

     

    nhập lệnh :   AECDWGSALESETUP  --> XUẤT HIỆN HỘP THOẠI Bạn bỏ chọn dòng  Automatically create Dimscale override.

    bạn có hiểu nguyên tắc hoạt động của style override ko


  3. cậu làm theo cách này là xong luôn !

    A - Nếu cậu sài Win 32 bit

     

    cậu có thể xem ở đây

    http://www.cadviet.com/forum/index.php?sho...c=11697&hl=

     

    bổ xung tý tẹo

     

    Vào thư mục này

    C:\Documents and Settings\USER\Application Data\Autodesk\AutoCAD 2009\R17.2\enu\Support

     

    giữ lại 26 file đầu con` nhũng file sau xoá sạch

     

    khởi động lại máy là xong !

     

    B - Nếu cậu sài win 64 bit

     

    Vào thư mục này

    C:\Users\USER\AppData\Roaming\Autodesk\AutoCAD 2010\R18.0\enu\Support

     

    giữ lại 26 file đầu con` nhũng file sau xoá sạch

     

    USE chính là tên của bạn hoặc Administrator nhé !

     

    Chúc thành công !

    vistawin7.jpg

    Chính xác là chỉ cần xóa file :acadapq" là đc


  4. nếu bạn muốn cắt 1 khoảng nào đó cho

    bạn dùng lệnh lengthen (LEN) enter gõ tiếp delta thì bạn có thể cắt hay kéo dài ra tùy ý

    VD: tôi có 1 đường cong (hoặc thẳng) dài 10000(10m) tôi muốn nó còn 7000(7m) thì tôi gõ LEN enter gõ tiếp de enter gõ thêm -3000(3m) cllick vào phần tử là ok, nếu muốn kéo dài ra thì cứ gõ 3000(3m) , hoặc bạn có thể dùng lệnh này như sau gõ LEN enter gõ thêm T enter đánh số 7000 click vào phần tử là ok. bạn có thể tìm hiểu thêm lệnh này nó có mấy cái thú vị lắm. chúc vui!

     

     

    Vẽ một đường Spl bất kỳ, có chiều dài 673.4505, muốn cắt ngắn bớt đầu hoặc đuôi để đoạn còn lại 500 thì làm như sau:

     

    Command: LEN LENGTHEN

    Select an object or [DElta/Percent/Total/DYnamic]:

    Current length: 673.4505

    Select an object or [DElta/Percent/Total/DYnamic]: t

    Specify total length or [Angle] <100.0000)>: 500

    Select an object to change or [undo]:

    Select an object to change or [undo]:

    Select an object to change or [undo]: *Cancel*

     

    11837_dd_2.png

    cảm ơn 2 bạn nhiều nhé


  5. File của Gia_Bach là EXPORTLAYOUT nên kích thước bị thay đổi hết, file này vẫn giữ nguyên vẹn cho bạn (khuyến mại phá Block giúp bạn luôn)

    http://www.cadviet.com/upfiles/4/1969_3638_pkg3abr1sp20040_2.rar

    xin cảm ơn 2 bác nhiều nhé, sẵn tiện cho mình hỏi cách phá cái block này được không ạ, vì mình còn nhiều file bị như vậy lắm

     

    P/s: gõ tiếng việt trên diễn đàn mình ko hiểu sao con trỏ cứ nhảy lung tung khó gõ quá


  6.  

    (defun laygiatritru (  ds1 ds2  / gt1 gt2 gt) 
    (setq gt1 (cdr (assoc 1 (entget ds1)))
    gt2  (cdr (assoc 1 (entget ds2)))
    gt (rtos (- (read gt1 ) (read gt2)) 2 3)
    )
    )
    (defun laygiatritru (  ds1 ds2  / gt1 gt2 gt) 
    (setq 	gt1 (cdr (assoc 1 (entget ds1)))
    	gt2  (cdr (assoc 1 (entget ds2)))
    	gt	(rtos (- (read gt1 ) (read gt2)) 2 3)
    )
    ) 

     

    - Nếu bạn chỉ mún phép trừ ra 3 số thập phân thì bạn kím cái hàm này (laygiatritru),  sửa dòng gt (rtos (.......) 2 3)

    - số cuối cùng trong hàm (rtos) đó là số quyết định số thập phân mún lấy bao nhiêu, nếu không có để số cuối cùng đó chỉ để mỗi số 2 kia thì mặc định nó sẽ lấy theo units bạn set hiện tại trên bản vẽ là lấy bao nhiêu số thập phân

    - cái trên là nhoc đã sữa cho bạn lệnh trừ ra 3 số thập phân rùi

     một lần nữa cảm ơn bạn rất nhiều.

    Ps diễn đàn hình như gõ tiếng việt bị lỗi thì phải, cứ nhảy lui con trỏ .


  7. ;----------------------------------------------------
    ;--------Nguyen The Anh-Road No2-RECO-TEDI-----------
    ;--------Standard command for edit section-----------
    ;----------------------------------------------------
    (setq #tyle 0.001)
    (setq tle 1)
    (setq #height 0.34)
    (setq #widthfactor 1)
    (setvar "dimzin" 0)
    ;----------------------------------------------------
    (defun c:setup()
            (if (not (and (/= #tyle 0) (/= #tyle nil))) (setq #tyle n1))
        (setq xau (strcat "New Scale (1/<" (rtos (/ 1 #tyle) 2 0) ">): "))
        (setq h1 (getreal xau))
        (if h1 (setq #tyle h1) (setq h1 #tyle))
    (if (null #tyle) (setq #tyle (getreal "\Ty le (1/<1000>) :")))
     (if (null #tyle) (setq #tyle 0.001)) 
        (setq tle (/ 1 #tyle))
        (setq tle (/ tle 1000))
    (setq #height (entsel "\nText lam mau:"))
        (if (null #height) (princ)
         (progn
          (setq ds (entget (car #height)))
          (setq #height (cdr (assoc 40 ds)))
          (setq #widthfactor (/ (distance (cdr (assoc 10 ds)) (cdr (assoc 11 ds)) ) 2)) 
         ) 
        )
    )
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;------------------------==================
    ;=====Area for scale================================
    ;==========================================
    (defun c:Ac ( / po ent dt dtc tle1)  
       (Start)
       (setq osmd1 (getvar "osmode"))
       (setvar "osmode" 0)
        (setq po (getpoint "/Chon 1 diem trong:") 
              dtc 0)
        (setvar "osmode" osmd1)
        (while po
           (command"bpoly" po "")
           (setq ent (entlast))
           (command"area" "e" ent)
           (setq dt (getvar "area")
    	     dtc (+ dtc dt))
           (command "erase" ent "")
           (setvar "osmode" 0)
           (setq po (getpoint "/Diem trong tiep/<Enter> de ket thuc: "))
           (setvar "osmode" osmd1)       
        )
    (setvar "osmode" 0)   
    (setq dc (getpoint "/Diem dat Text:"))
    (setq dt (rtos (* dtc tle tle) 2 2))
    (setq dt1 dt)
    (command ".text" dc #height "0" dt1)
    (setvar "osmode" osmd1)
        (kthuc)
        (princ)
    )
    ;------------------------------------------
    ;--------------==========------------------
    ;-------------Lenght for grow grass -----------
    ;==========================================
    ;-----------------------------------------=
    (defun c:tca ()
     (start)
     (setvar "osmode" 33)
     (setq tco 0)
     (setq poo (getpoint "\<Start Point>:"))
     (setvar "osmode" 0)
    (while poo
      (setq p1 poo)
      (setvar "osmode" 33)
      (setq p2 (getpoint "\<Second Point>:"))
      (setq kca (distance p1 p2))
      (setq tco (+ kca tco))
      (setq poo (getpoint "\<Enter> Stop/<Next Point>:"))
    )
    ;*** End while ***
     (setq tco (* tco tle))
     (setq text1 (rtos tco 2 2))
     (setq dc (getpoint "\<Insert>:"))
     (command ".text" dc #height "0" text1)
     (kthuc)
     (princ)
    )
    ;--------------------------------------
    ;======================================
    ;--------------------------------------
    (defun laygiatri (  ds1  / gt1  gt) 
    (setq 	gt1 (cdr (assoc 1 (entget ds1)))
    	gt	(rtos (read gt1) 2 2)
    )
    )
    ;------------------------------------------------
    (defun laygiatritru (  ds1 ds2  / gt1 gt2 gt) 
    (setq 	gt1 (cdr (assoc 1 (entget ds1)))
    	gt2  (cdr (assoc 1 (entget ds2)))
    	gt	(rtos (- (read gt1 ) (read gt2)) 2 2)
    )
    )
    ;-------------------------------------------------
    (defun laygiatritong (  ds1 ds2  / gt1 gt2 gt) 
    (setq 	gt1 (cdr (assoc 1 (entget ds1)))
    	gt2  (cdr (assoc 1 (entget ds2)))
    	gt	(rtos (+ (read gt1 ) (read gt2)) 2 2)
    )
    )
    ;--------------------------------------------------
    (defun layso ( thongbao / gtri a kq)
    (setq a (entsel thongbao))
    (and
    	(/= a  nil)
    	(= (type (setq gtri (assoc  1 (entget (car a))))) 'STR)
    	(= (type (read gtri)) 'REAL)
    )
     (setq kq gtri)
    )
    ;---------------------------------------------------
    ;---------------------------------------------------
    ;---------------------------------------------------
    ;-------Thay Text cho Text--------------------------
    ;---------------------------------------------------
    ;---------------------------------------------------
    ;(defun c:sa ( / ds1 ds3 gt ds dsach)
    ;(setq
    ;	ds1 (car (entsel "\n Chi Text gia tri: "))
    ;	ds3 (car (entsel "\n Chi Text muon thay: " ))
    ;	ds  (entget ds3)
    ;	gt  (cons 1 (laygiatri ds1 )) 
    ;)
    ;	(entdel ds3)
    ;		(foreach tam 	ds
    ;			(if (/= (car tam)	1)	(setq dsach 	(append dsach (list tam)))
    ;						(setq dsach 	(append dsach (list gt)))
    ;			)
    ;		)
    ;	(entmake dsach)
    ;(princ)
    ;)
    ;------------------------------------------
    (defun c:sa ()
     (setvar "Cmdecho" 0)
     (prompt "\n<<   Select Data             >>")
     (setq sstcong (entsel))
            (setq sdk (entget (car sstcong)))
            (if (= (cdr (assoc 0 sdk)) "TEXT")
                (setq tckl (cdr (assoc 1 sdk)))
                (prompt "\n<< ERROR : Nothing Text Selected. >>")
            )
     (prompt "\n<<   Select Text To Copy.  >>")
     (setq tcong (ssget))
     (setq sslen (sslength tcong))
          (while (> sslen 0)
            (setq stc (entget (ssname tcong (setq sslen (1- sslen)))))
            (if (= (cdr (assoc 0 stc)) "TEXT")
                (entmod (subst (cons 1 tckl) (assoc 1 Stc) Stc))
                (prompt "\n<< ERROR : Nothing Text Selected. >>")
            )
          )
      (setvar "Cmdecho" 1)
    )
    ;------------------------------------------
    ;------------------------------------------
    ;------------------------------------------
    ;--------Tru 2 Text va thay Text-----------
    ;==========================================
    ;==========================================
    ;------------------------------------------
    (defun c:Ta ( / ds1 ds2 ds3 gt ds dsach)
    (setq
    	ds1 (car (entsel "\nGia tri bi tru: "))
    	ds2 (car (entsel "\nLuong can tru: " ))
    	ds3 (car (entsel "\n Thay Text: " ))
    	ds  (entget ds3)
    	gt  (cons 1 (laygiatritru ds1 ds2))
    )
    	(entdel ds3)
    		(foreach tam 	ds
    			(if (/= (car tam)	1)	(setq dsach 	(append dsach (list tam)))
    						(setq dsach 	(append dsach (list gt)))
    			)
    		)
    	(entmake dsach)
    (princ)
    )
    ;----------------------------------------------------------
    ;----------------------------------------------------------
    ;----------------------------------------------------------
    ;--------------Sum value text---------------------------
    ;----------------------------------------------------------
    ;==========================================================
    (defun c:ca ( / ds1 ds2 ds3 gt ds dsach)
    (setq
    	ds1 (car (entsel "\n Gia tri 1: "))
    	ds2 (car (entsel "\n Gia tri 2: " ))
    	ds3 (car (entsel "\n Thay Text/Gia tri: " ))
    	ds  (entget ds3)
    	gt  (cons 1 (laygiatritong ds1 ds2))
    )
    	(entdel ds3)
    		(foreach tam 	ds
    			(if (/= (car tam)	1)	(setq dsach 	(append dsach (list tam)))
    						(setq dsach 	(append dsach (list gt)))
    			)
    		)
    	(entmake dsach)
    (princ)
    )
    ;---------------Ham goc----------------------
    (defun start ()
     (setq osmd (getvar "osmode"))
     (setq tex (getvar "texteval"))
     (setq cmd (getvar "cmdecho"))
     (setq angb (getvar "angbase"))
     (setq angd (getvar "angdir"))
     (setvar "texteval" 1)
    )
    (defun kthuc ()
     (setvar "osmode" osmd)
     (setvar "texteval" tex)
     (setvar "cmdecho" cmd)
     (setvar "angbase" angb)
     (setvar "angdir" angd)
     (princ)
    )
    ;---------------------------------------------
    ;-----Evelation - Edit from "SuaTN.lsp"----
    ;----------------------------------------------
    (defun c:cda ()
       (start)
       (setvar "osmode" 33)
       (setq p111 (getpoint "\nChon diem chuan :"))
       (setq c1 "caodo")
       (while (not (numberp c1))
       (setq c1 (car (entsel "\nChi cho text cao do cua diem chuan:")))
       (if (null c1) (princ)
         (if (/= (assoc 1 (entget c1)) nil)
          (setq c1 (read (cdr (assoc 1 (entget c1)))))
         )
       )
       )
      (setvar "osmode" 33)  
      (setq p211 (getpoint p111 "\nDiem can tinh : "))
       (while p211
        (setq px (* (- (cadr p211) (cadr p111)) tle))  
        (setq tet (+ c1 px))
        (setq tet (rtos tet 2 2))
        (setvar "osmode" 0)
        (setq dc (getpoint p211 "\nDiem chen : "))
        ;(setq dc (mapcar '- dc (list 0.0 #widthfactor)))
        ;(setq dc1 (mapcar '+ dc (list 0.0 (* #widthfactor 2.0)) ))
        (command "text" dc #height 90 tet "" "")
        (setvar "osmode" 33)  
        (setq p211 (getpoint p111 "\nDiem can tinh/<Enter> for End: "))
       );End While
      (setvar "osmode" 0)
     (kthuc)
     (princ)
    )
    ;--------------------------------------------
    ;-----------Khoang cach le------------------
    ;--------------------------------------------
    (defun c:kca ()
     (start)
     (setvar "osmode" 1)
     (setq p3 (getpoint "\nChon diem thu nhat : ")) 
     (while p3
      (setq p4 (getpoint p3 "\nChon diem thu hai : "))
      (setvar "osmode" 0)
      (setq kca (abs (- (car p3) (car p4))))
      (setq kca2 (abs (* kca tle)))
      (setq text (rtos kca2 2 2)) 
      (setq dc (getpoint "\nDiem chen : "))
     (if (>= kca2 1.0) (princ) 
                       (progn 
                       (if (>= kca 2.23)
                                      (setq height 2)
                                      (setq height (* kca 0.78))  
                       )                
                       (setq ddtext1 (list (+ (car dc) (/ height 2)) (- (cadr dc) 2.0)))
                       (setq ddtext2 (list (+ (car dc) (/ height 2)) (+ (cadr dc) 2.0)))
                       (command "text" dc #height 90 text "" "")
                       );end progn
      );end if
      (if (< kca2 1.0) (princ)
            (progn
            (setq ddtext1 (list (- (car dc) (/ kca 2.1)) (- (cadr dc) 1.0))); ***Tu 1m den 1.5m ***
            (setq ddtext2 (list (+ (car dc) (/ kca 2.1)) (- (cadr dc) 1.0)))
            (if (>= kca 7.5) (setq ddtext1 (list (- (car dc) 3.4) (- (cadr dc) 1.0))))
            (if (>= kca 7.5) (setq ddtext2 (list (+ (car dc) 3.4) (- (cadr dc) 1.0))))
            (command "text" dc #height 0 text "" "")
            )
      );end if
      (setvar "osmode" 1)
      (setq p3 (getpoint "\nChon diem thu nhat/<Enter> for End: ")) 
     );end while
     (setvar "osmode" 0)
      (kthuc)
     (princ)
    )
    ;-------------------------------------
    ;--------------Nang Text 3D for SDSK---------------
    ;------------------------------------
    (defun c:movet (/ ss ee e l k cd p)
       (command "UNDO" "begin")
       (setq ss (ssget))
       (if ss (progn
          (setq l (sslength ss))
          (setq k 0)
          (repeat l
             (setq e (ssname  ss k))
             (setq k (+ k 1))
             (setq ee (entget e))
             (if (= (cdr (assoc 0 ee) ) "TEXT")
                 (progn
                    (setq p (cdr (assoc 10 ee) ))
                    (setq cd (cdr (assoc 1 ee)))
                    (setq cd (atof cd))
                    (setq p (list (car p) (cadr p) cd ))
                    (setq ee (subst (cons 10 p) (assoc 10 ee) ee))
                    (entmod ee)
                    (entupd e)
                 ) 
             ) 
          )  
       ))
       (command "UNDO" "end")   
    )
    ;-------------------------------------------
    ;;;;;;;;;;;;;;;;;;;;;;
    ;;;;Tinh cong don;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;
    (defun c:ss()
     (setvar "CMDECHO" 0)
     (setvar "DIMZIN" 0)
     ;(setq pre (getint "\nSo chu so sau dau phay?"))
     (command "luprec" 2)  
     (setq co (getreal "\nGia tri can cong them:"))
     (SETQ TH (SSGET))
     (SETQ QUANT (SSLENGTH TH))
      (SETQ INDEX 0)
      (WHILE (< INDEX QUANT)
      (IF 
    	  (AND(= "TEXT" (CDR (ASSOC 0 (SETQ A (ENTGET (SSNAME TH INDEX)))))))      
         (PROGN
    		 (setq s (entget (SSNAME TH INDEX)))
    		   (setq otext (assoc 1 s))
    		   (setq ot (cdr otext))
    		   (setq ot (read (substr ot 1 )))
    		   (setq nt (cons 1 (rtos (+ ot co) 2 2)))  
    		   (setq s (subst nt otext s))
    		   (entmod s)
         )
      	)
      (setq index (+ index 1))
     )
    )
    

     

    - bạn up code dạng này ko tải để xem đc, nhưng nhoc đoán mò là, bạn xem trong lsp dòng nào có hàm (rtos (.....) 2 2) thì cứ chuyển số 2 cuối thành 3 là đc =>

    (rtos (....) 2 3)

    Cảm ơn bạn nhé, lisp như thế này ạ. vì nó nhiều lệnh quá.


  8. ah nhân đây cho mình hỏi mình có cái lisp này dùng để trừ text (lệnh ta) nhưng cho kết quả là 1 số có 2 chữ số thập phân, vậy mình muốn sửa về 3 số thì sửa chỗ nào, cảm ơn mọi người nhiều ạ. (nếu đc xin chỉ mình tự sửa để lần sau những cái tương tự ko mắc công đi nhờ nữa ạ :) )

    http://www.cadviet.com/upfiles/3/47977_tatru_text_cho_text.lsp

×