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

[ Yêu Cầu ] Lisp lọc text số nguyên và text có số thập phân.

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

Chào mọi người!

Vấn đề của mình như sau:

Trong bản vẽ của mình có 3 đối tượng text

1 là text chữ

2 là text số nguyên

3 là text số có số lẻ đằng sau

 

3 text này giờ đang cùng 1 layer và color giờ mình muốn tách rieng 3 text này thành 3 layer riêng biệt.

Mọi người viết giúp mình lsp sau

Lệnh đầu tiên để tách text chữ là : LTC

Lệnh thứ 2 để tách text số nguyên là: LTN

Lệnh thứ 3 để tách text số có số lẻ là: LTP

 

ây là hình minh họa của mình

96857_h2_convent.jpg

Mong mọi người viết giúp mình, mình đang cần gấp!

Thanks all !

 

 

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 dùng lệnh Find là được, cần chi lisp

- Chọn và Tìm số thực thì chuỗi tìm -> Find -> nhập kí tự "."  -> Select All

- Chọn và Tìm CHỮ thì chuỗi tìm  -> Find -> nhập kí tự "@"  -> Select All

- Chọn và Tìm SỐ NGUYÊN thì chuỗi tìm  -> Find -> nhập kí tự "~@"  -> Select All -> tiếp tục Find -> nhập kí tự "~."  -> Select All

Chú ý : Option trong lệnh find -> Bỏ dấu tick trong Find whole word only

  • 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

Chào mọi người!

Vấn đề của mình như sau:

Trong bản vẽ của mình có 3 đối tượng text

1 là text chữ

2 là text số nguyên

3 là text số có số lẻ đằng sau

 

3 text này giờ đang cùng 1 layer và color giờ mình muốn tách rieng 3 text này thành 3 layer riêng biệt.

Mọi người viết giúp mình lsp sau

Lệnh đầu tiên để tách text chữ là : LTC

Lệnh thứ 2 để tách text số nguyên là: LTN

Lệnh thứ 3 để tách text số có số lẻ là: LTP

 

ây là hình minh họa của mình

96857_h2_convent.jpg

Mong mọi người viết giúp mình, mình đang cần gấp!

Thanks all !

Của bạn đây :

 


;tach rieng chu va so

(defun c:chu_so (/ SS1 LopT LopN Count Eg)

(princ "\nChon cac chu ")

(while (null (setq SS1 (ssget (list (cons 0 "Text"))))) (princ "\nChua chon duoc chu "))

(if (= (setq LopT (getstring "\nNhap ten lop se chua cac chu ")) "")

(progn (if (null (tblsearch "layer" "so nguyen")) (command "layer" "N" "chu" "")) (setq LopT "chu")))

(if (= (setq LopN (getstring "\nNhap ten lop se chua cac so ")) "")

(progn (if (null (tblsearch "layer" "so nguyen")) (command "layer" "N" "so" "")) (setq LopN "so")))

(setq Count 0)

(repeat (sslength SS1)

(setq Eg (entget (ssname SS1 Count)))

(if (numberp (distof (cdr (assoc 1 eg))))

(setq Eg (subst (cons 8 lopN) (assoc 8 Eg) Eg))

(setq Eg (subst (cons 8 LopT) (assoc 8 Eg) Eg)));if

(setq Count (1+ Count))

(entmod Eg));repeat

(princ))

;;---------------------

;;tach lay cac chu mang gia tri la so nguyen

(defun c:songuyen (/ SS1 Lopsn Count Eg)

(princ "\nChon cac chu ")

(while (null (setq SS1 (ssget (list (cons 0 "Text"))))) (princ "\nChua chon duoc chu "))

(if (= (setq Lopsn (getstring "\nNhap ten lop se chua cac so nguyen chon duoc : ")) "")

(progn (if (null (tblsearch "layer" "so nguyen")) (command "layer" "N" "so nguyen" ""))(setq Lopsn "so nguyen")));if

(setq Count 0)

(repeat (sslength SS1)

(setq Eg (entget (ssname SS1 Count)) ndung (cdr (assoc 1 eg)))

(if (and (numberp (distof ndung)) (= (type (read ndung) ) 'INT))

(setq Eg (subst (cons 8 lopsn) (assoc 8 Eg) Eg)));end if

(setq Count (1+ Count))

(entmod Eg));repeat

(princ))

;;---------------------

;;Tach lay chu co so bat dau

(defun c:chu_coso (/ SS1 LopT Count Eg)

(princ "\nChon cac chu ")

(while (null (setq SS1 (ssget (list (cons 0 "Text"))))) (princ "\nChua chon duoc chu "))

(if (= (setq LopT (getstring "\nNhap ten lop se chua cac chu ")) "")

(progn (if (null (tblsearch "layer" "so nguyen")) (command "layer" "N" "Chu co so bat dau" ""))

(setq LopT "Chu co so bat dau")));end if

(setq Count 0)

(repeat (sslength SS1)

(setq Eg (entget (ssname SS1 Count)))

(if (not (numberp (distof (cdr (assoc 1 eg)))))

(if (numberp (distof (substr (cdr (assoc 1 eg)) 1 1)))

(setq Eg (subst (cons 8 lopT) (assoc 8 Eg) Eg))))

(setq Count (1+ Count))(entmod Eg))(princ))

Dùng lệnh chu_so để tách riêng chữ và số.

Dùng lệnh songuyen để lấy số nguyên

 

:( Nếu muốn chọn địa chỉ thửa đất thì dùng lệnh chu_coso để tách lấy những chũ có số bắt đầu

 

P/S : Bạn có thể cứ bấm enter không cần trả lời . chương trình sẽ tự tạo ra các lớp tạm để chứa các chữ tìm đ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

Cám ơn mọi người đã quan tâm và giúp đỡ:

- Mình làm theo Mr Tue chỉ thì chỉ tìm được các đối tượng có dấu "." và chỉ tìm từng đối tượng một chọn tất cả các đối tượng có dấu "." thif không được còn tìm số nguyên và số thực thì mình lại không hiểu lắm nên làm không được.

mình có nhập @ nhưng không chọn được đối tượng nào cả.

- Còn lsp của Mr TaiNguyen79 thì mình chỉ thực hiện được lệnh lọc text chữ đưa về layer riêng (chu_so)

còn lệnh (songuyen) thì báo lỗi sau: ; error: bad argument value: positive 0

lệnh (chu_coso) thì thực hiện xong thì các đối tượng vẫn vậy không có thay đổi gì cả.

Mong bạn kiểm tra lại mình.

- Ý của Mr Ha rất hay nếu có thể đưa về 1 lệnh mà khi thực hiện Lsp hỏi cần chọn đối tượng nào thì quả là tuyệt.

nếu có thể bạn viết luôn cho mình!

Thanks all!

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 mọi người đã quan tâm và giúp đỡ:

- Mình làm theo Mr Tue chỉ thì chỉ tìm được các đối tượng có dấu "." và chỉ tìm từng đối tượng một chọn tất cả các đối tượng có dấu "." thif không được còn tìm số nguyên và số thực thì mình lại không hiểu lắm nên làm không được.

mình có nhập @ nhưng không chọn được đối tượng nào cả.

.......

Thanks all!

 

Bạn đã làm công việc chú ý này chưa?

 

.......

Chú ý : Option trong lệnh find -> Bỏ dấu tick trong Find whole word only

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 nhập @ thì nó hiểu rùi ( lúc trước mình chưa tích vào ô Use wildcards)

nhưng thực hiện được cũng chỉ là tìm từng đối tượng chứ nó không chọn toàn bộ và tách riêng ra thành 1 layer khác cho mình

nhập tìm chữ thì nó tìm từng chữ một trong một text chữ.

nhập tìm số nguyên thì nó tìm cả số thực lẫn số nguyên.

bạn nhìn ở hình ảnh của mình đưa lên đó nó có 3 đối tượng riêng biệt như vậy. trong bản vẽ thì nó có nhiều đối tượng như vậy bây giờ cần phải tách từng text riêng

text: loại đất là text chữ

text: số nguyên là số thứ tự thửa đất

text : số thực là diện tích của thửa đất.

Thanks!

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

Lisp tách 3 đối tượng của layer thửa đất thành 3 layer khác nhau: symbol -> "LOAIDAT" ; integer -> "SOTHUA" ; real -> "DIENTICH".

 

;; Tach 3 doi tuong cua layer thua dat thanh 3 layer khac nhau: symbol, integer, real.
;; Doan Van Ha - CadViet.com - ngay 01/8/2013
(defun C:HA ( / MakeLayer txt)
 (defun MakeLayer (name color)
  (if (not (tblsearch "Layer" name))
   (entmakex (list '(0 . "LAYER") (cons 100 "AcDbSymbolTableRecord") (cons 100 "AcDbLayerTableRecord") (cons 2 name) (cons 70 0) (cons 62 color)))))
 (mapcar '(lambda(x y) (MakeLayer x y)) (list "LOAIDAT" "SOTHUA" "DIENTICH") '(1 2 3))
 (princ "\nChon cac doi tuong Text can phan lop...")
 (ssget '((0 . "TEXT")))
 (vlax-for obj (vla-get-activeselectionset (vla-get-ActiveDocument (vlax-get-acad-object)))
  (if (= (setq txt (type (read (cdr (assoc 1 (entget (vlax-vla-object->ename obj))))))) 'SYM)
   (progn (vla-put-Layer obj "LOAIDAT") (vla-put-Color obj 1))
   (if (= txt 'INT)
    (progn (vla-put-Layer obj "SOTHUA") (vla-put-Color obj 2))
    (progn (vla-put-Layer obj "DIENTICH") (vla-put-Color obj 3))))))
 
  • Vote tăng 3

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 mọi người đã quan tâm và giúp đỡ:

- Mình làm theo Mr Tue chỉ thì chỉ tìm được các đối tượng có dấu "." và chỉ tìm từng đối tượng một chọn tất cả các đối tượng có dấu "." thif không được còn tìm số nguyên và số thực thì mình lại không hiểu lắm nên làm không được.

mình có nhập @ nhưng không chọn được đối tượng nào cả.

- Còn lsp của Mr TaiNguyen79 thì mình chỉ thực hiện được lệnh lọc text chữ đưa về layer riêng (chu_so)

còn lệnh (songuyen) thì báo lỗi sau: ; error: bad argument value: positive 0

lệnh (chu_coso) thì thực hiện xong thì các đối tượng vẫn vậy không có thay đổi gì cả.

Mong bạn kiểm tra lại mình.

- Ý của Mr Ha rất hay nếu có thể đưa về 1 lệnh mà khi thực hiện Lsp hỏi cần chọn đối tượng nào thì quả là tuyệt.

nếu có thể bạn viết luôn cho mình!

Thanks all!

Mình đã sủa lisp lại rồi.Nhưng mình không thích gộp lại để rời còn làm đc việc khá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

Lisp tách 3 đối tượng của layer thửa đất thành 3 layer khác nhau: symbol -> "LOAIDAT" ; integer -> "SOTHUA" ; real -> "DIENTICH".

 

 

;; 
  (if (= (setq txt (type (read (cdr (assoc 1 (entget (vlax-vla-object->ename obj))))))) 'SYM)
   

 

 

Bạn DVH chú ý hàm read 1 chút nếu không những chữ mà bắt đầu bởi 1 số sẽ bị chọn thành số .

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 DVH chú ý hàm read 1 chút nếu không những chữ mà bắt đầu bởi 1 số sẽ bị chọn thành số .

Tôi biết. Tôi cũng hiểu cách ghi kí hiệu thửa đất nữa.

Những chữ dù có số nhưng có chứa ký tự khác số thì nó không phải là số bạ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

Nếu như chẳng may trên bản vẽ, trong đống text có chứa chữ có "." thì lisp bác HA sẽ......

KL: Không nên dùng hàm (read....... trong TH này 

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 như chẳng may trên bản vẽ, trong đống text có chứa chữ có "." thì lisp bác HA sẽ......

KL: Không nên dùng hàm (read....... trong TH này 

Nếu như chẳng may trên bản vẽ có 1 text trời ơi "1234567890" bị chọn mà không phải số thửa?

Nếu như trên bản vẽ có những text trời ơi khác?

Những bài toán như thế này không có lisp tuyệt đối đúng nỗi! User phải tự xử thôi, chứ không read cũng vẫn không giải quyết triệ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ôi biết. Tôi cũng hiểu cách ghi kí hiệu thửa đất nữa.

Những chữ dù có số nhưng có chứa ký tự khác số thì nó không phải là số bạn ạ.

Dòng chứa địa chỉ thửa đất có các chữ bắt đầu bằng số đó bạn.

VD

read "2 Lê Lợi" = 2 (INT)

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). Trích giải thích của chủ topic.


text: loại đất là text chữ


text : số thực là diện tích của thửa đất.


text: số nguyên là số thứ tự thửa đất


2). Dù là "loại đất" hay "số thứ tự thửa" hay "diện tích thửa" thì cũng không thể "2 Lê Lai" được. Bạn kiếm đâu ra trên bản vẽ?


Còn bạn thích giải quyết triệt để thì xin mời! Tôi chỉ có thể giải quyết được y/c của chủ top thôi, chứ bài toán tổng quát thì bó tay.


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

Lý do là không có text "2 abc" và không có text "." nên không cần thay. Còn khi có cả 2 hoặc nhiều hơn nữa thì có thay read cũng không thể giải quyết triệt để những bài toán kiểu này.

Tôi hiểu tất cả những điều mà mọi người đã comment ở trê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ác Hạ thay hàm read bằng distof và dùng thêm hàm if nữa là giải quyết xong bài toán

Anh KangKung hoặc các bác có thể hoàn thiện lisp này được không nhỉ?

Em cũng mày mò chút nữa. :D

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 đã dùng cách này để tách

(defun C:TTD (/ ss ss1 ss2 e1 e2 txt);;;;;TACH THUA DAT
(MakeLayer_ "LOAIDAT" 1)
(MakeLayer_ "SOTHUA" 2)
(MakeLayer_ "DIENTICH" 3)
(setq ss (ssget (list (cons 0 "TEXT"))))
(setq ss2 (ChonTextSo ss))
(setq sstemp (LM:ListDifference (acet-ss-to-list ss) (acet-ss-to-list ss2)))
(setq ss1 (vl-remove nil (mapcar '(lambda(x) (if (or (= (strlen (acet-dxf 1 (entget x))) 2) (= (strlen (acet-dxf 1 (entget x))) 3)) x nil)) sstemp)))
(foreach e1 ss1
	(vla-put-Layer (vlax-ename->vla-object e1) "LOAIDAT")
)

(foreach e2 (acet-ss-to-list ss2)
	(setq txt (type (read (cdr (assoc 1 (entget e2))))))
  	(if (= txt 'INT)
	    (vla-put-Layer (vlax-ename->vla-object e2) "SOTHUA")
	    (vla-put-Layer (vlax-ename->vla-object e2) "DIENTICH")
	 )
)
(princ)  
)

(defun ChonTextSo (ss / i ent str ss1) 
    (progn
      (setq i	0
	    ss1	(ssadd)
      )
      (repeat (sslength ss)
	(setq ent (ssname ss i)
	      str (cdr(assoc 1 (entget ent)))
	      i	  (+ 1 i)
	)
	(if (distof str 2)
	  (ssadd ent ss1)
	)
      )
      (if (> (sslength ss1) 0)
	ss1
      )      
    )
)

(defun MakeLayer_ ( name colour /)
    (if (null (tblsearch "LAYER" name))
        (entmake
            (list
               '(0 . "LAYER")
               '(100 . "AcDbSymbolTableRecord")
               '(100 . "AcDbLayerTableRecord")
               '(70 . 0)
                (cons 2 name)
                (cons 62 colour)
            )
        )
    )
)

(defun LM:ListDifference ( l1 l2 )
  (if l1
    (if (member (car l1) l2)
      (LM:ListDifference (cdr l1) l2)
      (cons (car l1) (LM:ListDifference (cdr l1) l2))
    )
  )
)

Các bác cho em lời nhận xét 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

hihi ko pit anh Thanhduan2407 còn nhớ cái y/c viết lsp của nhoc hồi mới tham gia 4rum ko nhỉ, anh chê nhoc trình bày ko trong sáng đó ^^, nhìn qua y/c của bạn này thấy cũng hao hao giống y/c của nhoc hồi đó. anh Ket với anh HHVD có giúp nhoc hoàn thiện ^^.

- lsp a nhoc thử nếu loai đất có số hình như nó ko hiểu nên ko chuyển được layer

- lsp a Ket với HHVD giúp nhoc nó chuyễn đc lun, nhưng điểm yếu của lsp là phải xác định trước layer cần chuyển trong lsp, nên nhoc có set thêm user nhập tên layer, anh xem thử có thể  kết hợp sao đó để ko cần xác định trước layer chỉ cần quyét phát hết chuyển đc lun tì tốt quá ạ :)

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/topic/67432-yeu-cau-lsp-tach-1-nhom-layer-thanh-nhieu-layer-khac-nhau/page-2
(defun dxf (code e) (cdr (assoc code (entget e))))
(defun PUT-GC (VALUE GROUP ENTITY / PROPERTIES)
(setq PROPERTIES (entget ENTITY))
(setq PROPERTIES (subst (cons GROUP VALUE) (assoc GROUP PROPERTIES) PROPERTIES))
(entmod PROPERTIES)
)
(defun CreatLayer(MyLayer / MyColor)
(if (not (tblsearch "LAYER" MyLayer))
(progn
  (entmakex
   (list
(cons 0 "LAYER")
(cons 100 "AcDbSymbolTableRecord")
(cons 100 "AcDbLayerTableRecord")
(cons 70 0)
(cons 2 MyLayer)
   )
  )
)
)
)
(defun ChangeLayer(kq / i dt type_dt)
(repeat (setq i (sslength kq))
  (setq dt (ssname kq (setq i (1- i))))
  (setq type_dt (type (read (dxf 1 dt))))
  (cond
   ((= type_dt 'INT) (PUT-GC "SOTHUA" 8 dt))
   ((= type_dt 'REAL) (PUT-GC "DIENTICH" 8 dt))
   ((= type_dt 'SYM) (PUT-GC "LOAIRUONGDAT" 8 dt))
  )
)
)
(defun c:tachthua (/ ss el qa kq i as)
(vl-load-com)
(CreatLayer "SOTHUA")
(CreatLayer "DIENTICH")
(CreatLayer "LOAIRUONGDAT")
(setq as (getstring "\nnhap ten layer can tach:"))
(setq ss  (ssget (list (cons 8 as))) kq (ssadd))
(setq qa (getvar 'QAFLAGS))
(setvar 'QAFLAGS 1)
(repeat (setq i (sslength ss))
  (setq e (ssname ss (setq i (1- i))))
  (setq dxf0 (dxf 0 e))
  (cond
   ((= dxf0 "TEXT") (ssadd e kq))
   (
    (= dxf0 "INSERT")
    (progn
	(setq el (entlast))    
	(command "explode" ss "")
    
	(while (setq en (entnext el))
      (if (= (dxf 0 en) "TEXT") (ssadd en kq))
      (setq el en)
	)
    )
   )  
  )
)
(setvar 'QAFLAGS qa)
(ChangeLayer kq)
(princ "\nHochoaivandot - Cadviet.com")
(princ)
)

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

hihi ko pit anh Thanhduan2407 còn nhớ cái y/c viết lsp của nhoc hồi mới tham gia 4rum ko nhỉ, anh chê nhoc trình bày ko trong sáng đó ^^

Không biết ngày xưa mình nói gì để bạn  nhoclangbat giận mình nhỉ? Chắc là làm điều gì mang tính tiêu cực nên mình mới nói là ko trong sáng. ^^ (có thể là bịa số liệu. Hehehehe)

Lisp của mình gửi lên đã làm được rồi mà, không cần chọn layer trước.

Tuy nhiên thì lisp của mình và lisp của nhoclangbat đều không giải thích được vì sao quét với số lượng nhiều lại không thực hiện được.

Gửi Lisp của mình và file test để bạn thử nhé!

(defun C:TTD (/ ss ss1 ss2 e1 e2 txt);;;;;TACH THUA DAT
(MakeLayer_ "LOAIDAT" 1)
(MakeLayer_ "SOTHUA" 2)
(MakeLayer_ "DIENTICH" 3)
(setq ss (ssget (list (cons 0 "TEXT"))))
(setq ss2 (ChonTextSo ss))
(setq sstemp (LM:ListDifference (acet-ss-to-list ss) (acet-ss-to-list ss2)))
(setq ss1 (vl-remove nil (mapcar '(lambda(x) (if (or (= (strlen (acet-dxf 1 (entget x))) 2) (= (strlen (acet-dxf 1 (entget x))) 3)) x nil)) sstemp)))
(foreach e1 ss1
	(vla-put-Layer (vlax-ename->vla-object e1) "LOAIDAT")
)
(foreach e2 (acet-ss-to-list ss2)
	(setq txt (type (read (cdr (assoc 1 (entget e2))))))
  	(cond
	   ((= txt 'INT)
	    (vla-put-Layer (vlax-ename->vla-object e2) "SOTHUA")
	   )
	   ((= txt 'REAL)
	    (vla-put-Layer (vlax-ename->vla-object e2) "DIENTICH")
	   )
	 )
)
(princ)  
)



(defun ChonTextSo (ss / i ent str ss1) 
    (progn
      (setq i	0
	    ss1	(ssadd)
      )
      (repeat (sslength ss)
	(setq ent (ssname ss i)
	      str (cdr(assoc 1 (entget ent)))
	      i	  (+ 1 i)
	)
	(if (distof str 2)
	  (ssadd ent ss1)
	)
      )
      (if (> (sslength ss1) 0)
	ss1
      )      
    )
)

(defun MakeLayer_ ( name colour /)
    (if (null (tblsearch "LAYER" name))
        (entmake
            (list
               '(0 . "LAYER")
               '(100 . "AcDbSymbolTableRecord")
               '(100 . "AcDbLayerTableRecord")
               '(70 . 0)
                (cons 2 name)
                (cons 62 colour)
            )
        )
    )
)

(defun LM:ListDifference ( l1 l2 )
  (if l1
    (if (member (car l1) l2)
      (LM:ListDifference (cdr l1) l2)
      (cons (car l1) (LM:ListDifference (cdr l1) l2))
    )
  )
)

http://www.cadviet.com/upfiles/3/36665_file_test.dwg

  • 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

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

×