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

Đánh số thứ tự cho text thuộc tính!

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

Tôi dùng bản vẽ có khung tên là block thuộc tính gồm có các text thuộc tính là số thứ tự bản vẽ. Xin hỏi có cách nào hiệu chỉnh nhanh chóng số thứ tự bản vẽ ko (chỉ cần chọn các block là số thứ tự bản vẽ thay đổi thành 1, 2, 3, 4, ...). Xin cảm ơn rất nhiều!

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

Để đánh số hàng loạt 1 nhát ăn ngay thì fải biết đuợc rõ quy tắc đánh số bản vẽ của bạn như thế nào, định dạng khung tên của bạn nữa ...

vớii yêu cầu thế này thì chỉ có thể giúp bạn đánh số thứ tự từng bản vẽ.

Giữ shift trong khi pick nếu muốn giảm dần số thứ tự

(defun C:STT (/ i Ti DMZLAST GiaSo1 ST1)
 (if (not GiaSo) (setq GiaSo 1))
 (if (not ST) (setq ST 1))
 (setq DMZLAST (getvar "Dimzin"))
 (setvar "Dimzin" 8)
 (setq GiaSo1 (getreal (strcat  "- Nhap gia so <" (rtos GiaSo 2) ">: "))
	ST1 (getreal (strcat"\nGia tri so dau tien <" (rtos ST 2) ">: "))
	i 0)
 (if GiaSo1 (setq GiaSo Giaso1))
 (if ST1 (setq ST ST1))
  (while (setq Ti (nentsel (strcat "\nChon text thu " (rtos (1+ i) 2))))
		(if	(= i 0)
			(thai-entmod-entsel 1 (rtos ST 2) Ti)
			(progn
				(if	(not (acet-sys-shift-down))
					(setq ST (+ ST GiaSo))
					(setq ST (- ST GiaSo))
				);if
				(princ (strcat ": " (rtos ST 2)))
				(thai-entmod-entsel 1 (rtos ST 2) Ti)
				);progn
			);if
			(setq i (1+ i))
		);while
  (setvar "Dimzin" DMZLAST)
 (prompt " - End")
 (princ)
 );end STT
(defun thai-entmod-entsel (code value obj / RES)
(setq RES (entget (car obj)))
(entmod (subst (cons code value) (assoc code RES) RES))
)

  • 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

Phần Lisp của bản chỉ thay đổi cho text thông thường. Còn khung tên của tôi là block có chứa nhiều thuộc tính, trong đó có thuộc tính số bản vẽ là các giá trị: 1, 2, 3, 4, ... Tôi muốn hiệu chỉnh các số này từ 1 cho đến số lớn nhất bằng cách thực hiện giống như lisp đánh chữ theo thứ tự của CADVIET đó.

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 có thể dùng lisp này

 
(defun etype (e);;;Entity Type
;; free lisp from cadviet.com

;;;**********************************************
;;;CHUONG TRINH DANH SO THU TU VA COPY TANG DAN
;;;1. Lenh OD: danh so thu tu, tuy chon so bat dau (begin) va so gia (increment) tuy y
;;;2. Lenh OC: copy tang dan tu mot so thu tu co san
;;;3. Lenh OCA: copy tang dan voi doi tuong Attribute Block
;;;Chuong trinh chap nhan cac dinh dang bang so, chu, so va chu ket hop:
;;;1, 2... A, B..., A1, A2..., AB-01, AB-02..., AB-01-C1, AB-01-C2...
;;;Cac chu gioi han trong khoang tu A den Z. Cac so khong han che
;;;Copyright by ssg - www.cadviet.com - December 2008
;;;**********************************************


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



(cdr (assoc 0 (entget e)))
)
;;;-------------------------------------------------
(defun wtxt (txt p / sty d h);;;Write txt on graphic screen, defaul setting
(setq
sty (getvar "textstyle")
d (tblsearch "style" sty)
h (cdr (assoc 40 d))
)
(if (= h 0) (setq h (cdr (assoc 42 d))))
(entmake
(list (cons 0 "TEXT") (cons 7 sty) (cons 1 txt) (cons 10 p) (cons 40 h) (assoc 41 d))
)
)
;;;-------------------------------------------------
(defun incN (n dn / n2 i n1);;;Increase number n
(setq
n2 (itoa (+ dn (atoi n)))
i (- (strlen n) (strlen n2))
)
(if (> i 0) (setq n1 (substr n 1 i)) (setq n1 ""))
(strcat n1 n2)
)
;;;-------------------------------------------------
(defun incC (c / i c1 c2);;;Increase character c
(setq
i (strlen c)
c1 (substr c 1 (- i 1))
c2 (chr (1+ (ascii (substr c i 1))))
)
(if (or (= c2 "{") (= c2 "["))
(progn (command "erase" (entlast) "") (alert "Over character!") (exit))
(strcat c1 c2)
)
)
;;;============================
(defun C:OD( / cn dn c n p);;;Make OrDinal number with any format
(setq
cn (getstring "\nBegin at <1>: " T)
dn (getint "\nIncrement <1>: ")
)
(if (not dn) (setq dn 1))
(if (= cn "") (setq cn "1"))
(setq c (vl-string-right-trim "0 1 2 3 4 5 6 7 8 9" cn))
(setq n (vl-string-subst "" c cn))
(if (/= n "") (setq mode 1) (setq mode 0))
(while (setq p (getpoint "\nBase point : "))
(wtxt cn p)
(if (= n "") 
	(setq cn (incC cn))
	(setq cn (strcat c (incN (vl-string-subst "" c cn) dn)))		
)
)
(princ)
)
;;;============================
(defun C:OC( / e dn p1 cn c n p2 dat);;;Make Ordinal number. Copy from template
(setq
e (car (entsel "\nSelect template text:"))
dn (getint "\nIncrement <1>: ")
p1 (getpoint "\nBase point:")
cn (cdr (assoc 1 (entget e)))
)
(if (not dn) (setq dn 1))
(if (= cn "") (setq cn "1"))
(setq
c (vl-string-right-trim "0 1 2 3 4 5 6 7 8 9" cn)
n (vl-string-subst "" c cn)
)
(while (setq p2 (getpoint p1 "\nNew point : "))
(command "copy" e "" p1 p2)
(if (= n "") 
	(setq cn (incC cn))
	(setq cn (strcat c (incN (vl-string-subst "" c cn) dn)))		
)
(setq
	dat (entget (entlast))
	dat (subst (cons 1 cn) (assoc 1 dat) dat)
)
(entmod dat)	
)
(princ)
)
;;;============================
(defun C:OCA( / e e0 dn p1 cn c n p2 dat);;;Make Ordinal number. Copy from Atttribute block
(setq
e0 (car (entsel "\nSelect attribute block:"))
e (entnext e0)
)
(if (/= (etype e) "ATTRIB") (progn (alert "Object is not a Attribute Block!") (exit)))
(setq
dn (getint "\nIncrement <1>: ")
p1 (getpoint "\nBase point:")
cn (cdr (assoc 1 (entget e)))
)
(if (not dn) (setq dn 1))
(if (= cn "") (setq cn "1"))
(setq
c (vl-string-right-trim "0 1 2 3 4 5 6 7 8 9" cn)
n (vl-string-subst "" c cn)
)
(while (setq p2 (getpoint p1 "\nNew point : "))
(command "copy" e0 "" p1 p2)
(if (= n "") 
	(setq cn (incC cn))
	(setq cn (strcat c (incN (vl-string-subst "" c cn) dn)))		
)
(setq
	dat (entget (entnext (entlast)))
	dat (subst (cons 1 cn) (assoc 1 dat) dat)
)
(entmod dat)
(command "regen")
)
(princ)
)
;;;============================

  • Vote tăng 2

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
Phần Lisp của bản chỉ thay đổi cho text thông thường. Còn khung tên của tôi là block có chứa nhiều thuộc tính, trong đó có thuộc tính số bản vẽ là các giá trị: 1, 2, 3, 4, ... Tôi muốn hiệu chỉnh các số này từ 1 cho đến số lớn nhất bằng cách thực hiện giống như lisp đánh chữ theo thứ tự của CADVIET đó.

Bạn có chắc chắn điều bạn đang nói không đó. mình khẳng định lisp của mình chạy đc với không chỉ text thuộc tính mà cả text thuờng trong block.

Nếu chắn chắn điều bạn nói là đúng thì bạn có thể up khung tên của bạn để mình xem đc không?

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 có chắc chắn điều bạn đang nói không đó. mình khẳng định lisp của mình chạy đc với không chỉ text thuộc tính mà cả text thuờng trong block.

Nếu chắn chắn điều bạn nói là đúng thì bạn có thể up khung tên của bạn để mình xem đc không?

Mình xin up file khung tên để bạn xem và giúp mình nhé. Thanks!

http://www.cadviet.com/upfiles/3/khung_ten.dwg

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 xin up file khung tên để bạn xem và giúp mình nhé. Thanks!

http://www.cadviet.com/upfiles/3/khung_ten.dwg

lạ thật. mình chạy bản vẽ của bạn có vấn đề gì đâu. stt vẫn nhảy tanh tách mà :(

quên mất, bạn cài express tool chưa?

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 cài rồi. Mà mình dùng cad 2007.

thế thì chịu rồi. chắc máy của bạn bị lỗi. nếu không chạy đc lisp này thì máy của bạn ko thể chạy đc bất kỳ lisp nào tuơng tự đâu

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
thế thì chịu rồi. chắc máy của bạn bị lỗi. nếu không chạy đc lisp này thì máy của bạn ko thể chạy đc bất kỳ lisp nào tuơng tự đâu

Mình làm được rồi nhưng phải dùng lệnh regen thì nó mới thay đổi. Bạn có cách nào chọn nhiều block và nó sẽ tự động thay đổi toàn bộ thuộc tính không.

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 làm được rồi nhưng phải dùng lệnh regen thì nó mới thay đổi. Bạn có cách nào chọn nhiều block và nó sẽ tự động thay đổi toàn bộ thuộc tính không.

Bạn thêm dòng này nữa :

(entupd (car obj))

 

Vị trí thêm :

(defun thai-entmod-entsel (code value obj / RES)

    (setq RES (entget (car obj)))

    (entmod (subst (cons code value) (assoc code RES) RES))

(entupd (car obj))

)

 

Để chọn nhiều block như bạn muốn thì như Thaistreetz đã nói : "Để đánh số hàng loạt 1 nhát ăn ngay thì fải biết đuợc rõ quy tắc đánh số bản vẽ của bạn như thế nào, định dạng khung tên của bạn nữa "

  • Vote tăng 2

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 thêm dòng này nữa :

(entupd (car obj))

 

Vị trí thêm :

(defun thai-entmod-entsel (code value obj / RES)

    (setq RES (entget (car obj)))

    (entmod (subst (cons code value) (assoc code RES) RES))

(entupd (car obj))

)

 

Để chọn nhiều block như bạn muốn thì như Thaistreetz đã nói : "Để đánh số hàng loạt 1 nhát ăn ngay thì fải biết đuợc rõ quy tắc đánh số bản vẽ của bạn như thế nào, định dạng khung tên của bạn nữa "

Khung tên mình có up lên rồi đó, phần số thứ tự bản vẽ chỉ là các số nguyên dương thôi: 01, 02, 03, ... (không kèm theo ký tự gì cả). Bạn xem và giúp mình với.

http://www.cadviet.com/upfiles/3/khung_ten.dwg

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
Giúp mình với các bạn, mình đang cần gấp lắm. Hic hic...

bạn khóc ghê quá!

đánh số thứ tự của khung tên thì đâu cần gấp đến thế nhỉ? hồ sơ của bạn có đến vài trăm bản vẽ thì nếu không có công cụ mình ngồi pick cũng chỉ 1 tẹo là xong.

thêm nữa, bạn nhờ người khác làm nhưng bản thân bạn có lẽ cũng chưa hiểu rõ mình muốn gì. mỗi bản vẽ 1 khung tên, vậy trong cả đám khung tên ấy bạn đánh số thứ tự cho nó theo quy tắc nào? cái nào trước cái nào sau? bạn chỉ có bản vẽ trên model hay cả layout, hồ sơ thiết kế của bạn có để chung tất cả bản vẽ trên 1 file hay để trên nhiều file... v.v phải có đủ các điều kiện đó thì người ta mới có thể giúp bạn đc chứ.

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 khóc ghê quá!

đánh số thứ tự của khung tên thì đâu cần gấp đến thế nhỉ? hồ sơ của bạn có đến vài trăm bản vẽ thì nếu không có công cụ mình ngồi pick cũng chỉ 1 tẹo là xong.

thêm nữa, bạn nhờ người khác làm nhưng bản thân bạn có lẽ cũng chưa hiểu rõ mình muốn gì. mỗi bản vẽ 1 khung tên, vậy trong cả đám khung tên ấy bạn đánh số thứ tự cho nó theo quy tắc nào? cái nào trước cái nào sau? bạn chỉ có bản vẽ trên model hay cả layout, hồ sơ thiết kế của bạn có để chung tất cả bản vẽ trên 1 file hay để trên nhiều file... v.v phải có đủ các điều kiện đó thì người ta mới có thể giúp bạn đc chứ.

Cảm ơn bạn nhiều!

Bản vẽ của mình đều làm trên model, tất cả bản vẽ đều vào chung một file. Mình tính đánh số thứ tự theo quy tắc tăng dần từ trên xuống dưới, và từ trái qua phải. Hoặc có thể theo thứ tự lựa chọn, có nghĩa là khung tên nào chọn trước sẽ đánh stt trước.

Giúp mình với bạn 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
Bạn Thái đâu rồi nhỉ?

Chào bạn thanhphong2002,

Trong lúc chờ bác Thái ra tay, bạn dùng thử cái này xem sao.

Lisp này chỉ xài được cho các block khung tên có cái tên đúng như trên bản vẽ bạn post là "A3-ko khung ten.fv.5x". Nếu bạn muốn xài với các block khung tên khác thì mình không chịu trách nhiệm. Hề hề hề.

Lisp này sẽ đánh số bản vẽ theo thứ tự bạn nhập khung tên vào bộ chọn và bắt đầu đánh từ số bạn nhập vào tăng dần với công sai là 1. Nếu bạn không nhập giá tri bắt dầu đánh số thì lisp sẽ tự đánh số bắt đấu là 1.

Tuy chưa hoàn toàn tối ưu song mình nghĩ có thể giúp bạn phần nào trong lúc bạn chờ các bác khác. Chúc bạn vui.

Lisp đây:

(defun c:chatt (/ ss n i en en1 els1 k bln att)
(command "undo" "be")
(setq ext (getvar "extnames"))
(setvar "extnames" 1)
(setq k (getint "\n Nhap gia tri bat dau danh so: "))
(if (= k nil)
(setq k 1)
)
(setq bln (getstring T "\n Chon ten block khung ten: "))
(setq ss (ssget (list (cons 0 "insert") (cons 2 bln)))
       n (sslength ss)
       i 0)
(setq att (getstring "\n Chon ten thuoc tinh STT: "))
(while (         (setq en (ssname ss i)
                en1 (entnext en)
                els1 (entget en1))

        (while (/= (cdr(assoc 0 els1)) "SEQEND") 

                 (if (= (cdr (assoc 2 els1)) att)
                    (progn
                             (setq els1 (subst (cons 1 (strcat "0" (rtos (+ k i) 2 0))) (assoc 1 els1) els1))
                             (entmod els1)
                             (entupd en1)
                    )
                  )
                 (setq en1 (entnext en1)
                         els1 (entget en1))
        )
        (setq i (1+ i))
)
(setvar "extnames" ext)
(command "undo" "e")
(princ)
)

 

Bài được chỉnh sửa bởi Pham Thanh Binh ngày 22-8-2010 để cho phép người sử dụng nhập tên block khung tên và thuộc tính STT bản vẽ.

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 có thể dùng lisp này

 
(defun etype (e);;;Entity Type
;; free lisp from cadviet.com

;;;**********************************************
;;;CHUONG TRINH DANH SO THU TU VA COPY TANG DAN
;;;1. Lenh OD: danh so thu tu, tuy chon so bat dau (begin) va so gia (increment) tuy y
;;;2. Lenh OC: copy tang dan tu mot so thu tu co san
;;;3. Lenh OCA: copy tang dan voi doi tuong Attribute Block
;;;Chuong trinh chap nhan cac dinh dang bang so, chu, so va chu ket hop:
;;;1, 2... A, B..., A1, A2..., AB-01, AB-02..., AB-01-C1, AB-01-C2...
;;;Cac chu gioi han trong khoang tu A den Z. Cac so khong han che
;;;Copyright by ssg - www.cadviet.com - December 2008
;;;**********************************************
;;;-------------------------------------------------
(cdr (assoc 0 (entget e)))
)
;;;-------------------------------------------------
(defun wtxt (txt p / sty d h);;;Write txt on graphic screen, defaul setting
(setq
sty (getvar "textstyle")
d (tblsearch "style" sty)
h (cdr (assoc 40 d))
)
(if (= h 0) (setq h (cdr (assoc 42 d))))
(entmake
(list (cons 0 "TEXT") (cons 7 sty) (cons 1 txt) (cons 10 p) (cons 40 h) (assoc 41 d))
)
)
;;;-------------------------------------------------
(defun incN (n dn / n2 i n1);;;Increase number n
(setq
n2 (itoa (+ dn (atoi n)))
i (- (strlen n) (strlen n2))
)
(if (> i 0) (setq n1 (substr n 1 i)) (setq n1 ""))
(strcat n1 n2)
)
;;;-------------------------------------------------
(defun incC (c / i c1 c2);;;Increase character c
(setq
i (strlen c)
c1 (substr c 1 (- i 1))
c2 (chr (1+ (ascii (substr c i 1))))
)
(if (or (= c2 "{") (= c2 "["))
(progn (command "erase" (entlast) "") (alert "Over character!") (exit))
(strcat c1 c2)
)
)
;;;============================
(defun C:OD( / cn dn c n p);;;Make OrDinal number with any format
(setq
cn (getstring "\nBegin at <1>: " T)
dn (getint "\nIncrement <1>: ")
)
(if (not dn) (setq dn 1))
(if (= cn "") (setq cn "1"))
(setq c (vl-string-right-trim "0 1 2 3 4 5 6 7 8 9" cn))
(setq n (vl-string-subst "" c cn))
(if (/= n "") (setq mode 1) (setq mode 0))
(while (setq p (getpoint "\nBase point : "))
(wtxt cn p)
(if (= n "") 
	(setq cn (incC cn))
	(setq cn (strcat c (incN (vl-string-subst "" c cn) dn)))		
)
)
(princ)
)
;;;============================
(defun C:OC( / e dn p1 cn c n p2 dat);;;Make Ordinal number. Copy from template
(setq
e (car (entsel "\nSelect template text:"))
dn (getint "\nIncrement <1>: ")
p1 (getpoint "\nBase point:")
cn (cdr (assoc 1 (entget e)))
)
(if (not dn) (setq dn 1))
(if (= cn "") (setq cn "1"))
(setq
c (vl-string-right-trim "0 1 2 3 4 5 6 7 8 9" cn)
n (vl-string-subst "" c cn)
)
(while (setq p2 (getpoint p1 "\nNew point : "))
(command "copy" e "" p1 p2)
(if (= n "") 
	(setq cn (incC cn))
	(setq cn (strcat c (incN (vl-string-subst "" c cn) dn)))		
)
(setq
	dat (entget (entlast))
	dat (subst (cons 1 cn) (assoc 1 dat) dat)
)
(entmod dat)	
)
(princ)
)
;;;============================
(defun C:OCA( / e e0 dn p1 cn c n p2 dat);;;Make Ordinal number. Copy from Atttribute block
(setq
e0 (car (entsel "\nSelect attribute block:"))
e (entnext e0)
)
(if (/= (etype e) "ATTRIB") (progn (alert "Object is not a Attribute Block!") (exit)))
(setq
dn (getint "\nIncrement <1>: ")
p1 (getpoint "\nBase point:")
cn (cdr (assoc 1 (entget e)))
)
(if (not dn) (setq dn 1))
(if (= cn "") (setq cn "1"))
(setq
c (vl-string-right-trim "0 1 2 3 4 5 6 7 8 9" cn)
n (vl-string-subst "" c cn)
)
(while (setq p2 (getpoint p1 "\nNew point : "))
(command "copy" e0 "" p1 p2)
(if (= n "") 
	(setq cn (incC cn))
	(setq cn (strcat c (incN (vl-string-subst "" c cn) dn)))		
)
(setq
	dat (entget (entnext (entlast)))
	dat (subst (cons 1 cn) (assoc 1 dat) dat)
)
(entmod dat)
(command "regen")
)
(princ)
)
;;;============================

 

Chào bạn, đây cũng là một cách hay. Nhưng cách này cũng hơi thủ công quá là các bản vẽ được copy ra đều có đánh số thứ tự hẳn hoi, nhưng ngặc nổi là các tên của bản vẽ ( MB trệt, MB lầu...)và các thông tin khác nữa, cái này trong lúc vẽ mình đã hiệu chỉnh rồi. Cái quan trọng nhất là lúc cuối cùng, Khi tấc cả bản vẽ đã xong công đoạn cuối cùng là đánh số thứ tự cho toàn bộ bản vẽ. Trong Block bản vẽ có các Attribute giả sử mình chọn Attribute "STT" để đánh số thứ tự chẳn hạn thì khi ta chọn lệnh xong, bắt đầu Select các Block khung tên ( cái này thường thấy thì theo từ trái sang phải hoặc sang trái ) Khi mình Select các Block theo một hướng cụ thể , =>> Enter =>> nhập số bắt đầu =>> OK =>> Thì nó sẽ đánh số thứ thư theo các Attribute "STT" ban đầu. Như thế là OK, còn nếu muốn đánh STT theo một chiều khác từ dưới lên trên hoặc ngược lại, để đánh STT cho toàn bộ bản vẽ. Nếu được như thế thì tuyệt quá.

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ái này dừng tại đây ah, sao không ai trả lời dùm mình với

Chào hailuaVNN, bạn tham khảo lisp này xem sao:

http://www.cadviet.com/forum/index.php?s=&...ost&p=75371

nhớ là copy hộp thoại ATTI.dcl nữa bạn 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
Chào hailuaVNN, bạn tham khảo lisp này xem sao:

http://www.cadviet.com/forum/index.php?s=&...ost&p=75371

nhớ là copy hộp thoại ATTI.dcl nữa bạn nhé.

Chào bạn. Cám ơn nhiều nha, bạn cho mình hỏi thăm tí nữa nha, cái ATTI.dcl tải về ở đâu vậy, mình tìm hoài không ra :(

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 anh Thaistreetz và mọi người trong diễn đàn

lisp stt.lsp rất đúng ý em, nhưng em muốn điền thêm tiền tố đằng trước vì dụ như thay vì pick là nó chạy từ 1->2->3->4->5 thì có thể thêm tiền tố Btc.1->Btc.2->Btc.3 mỗi lần pick không

em xin cảm ơn

chúc diễn đàn ngày càng vững mạ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

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


×