Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] viết lisp tính chiều dài trung bình của nhiều đoạn thẳng


  • Please log in to reply
23 replies to this topic

#1 kienartist

kienartist

    biết zoom

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

Đã gửi 07 April 2011 - 09:19 AM

Em có việc này nhờ các cao thủ chút xíu:
- Em biết có lisp tính tổng chiều dài của n đoạn thẳng.
- Vấn đề là em muốn tính chiều dài trung bình của n thằng đó (ví dụ khi muốn có chiều dài trung bình các thanh thép rải trên tường cánh cửa cống hình thang chẳng hạn). Có lẽ chỉ cần viết thêm một đoạn code để chia cái thằng tổng đó cho n thôi. Nhờ các cao thủ giúp cho.
Em cám ơn trước nhé!
  • 0

#2 Detailing

Detailing

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 667 Bài viết
Điểm đánh giá: 278 (khá)

Đã gửi 07 April 2011 - 09:27 AM

Em có việc này nhờ các cao thủ chút xíu:
- Em biết có lisp tính tổng chiều dài của n đoạn thẳng.
- Vấn đề là em muốn tính chiều dài trung bình của n thằng đó (ví dụ khi muốn có chiều dài trung bình các thanh thép rải trên tường cánh cửa cống hình thang chẳng hạn). Có lẽ chỉ cần viết thêm một đoạn code để chia cái thằng tổng đó cho n thôi. Nhờ các cao thủ giúp cho.
Em cám ơn trước nhé!

Bạn phải đưa lisp của bạn lên thì ng khác mới thêm vào dc chứ.
  • 0

Ideas don't matter, execution does!

1908412_308002392716743_8165279281236341


#3 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 07 April 2011 - 10:16 AM

Bạn dùng tạm cái này, lệnh tb :


(defun add_mline ()
(foreach e_record_sub e_record
(cond ((= 10 (car e_record_sub))
(setq pt1 (cdr e_record_sub)
mline_len 0.0
)
)
((= 11 (car e_record_sub))
(setq pt2 (cdr e_record_sub)
mline_len (+ mline_len (distance pt2 pt1))
pt1 pt2
)
)
)
)
(setq tot_len (+ tot_len mline_len))
(ssdel e_name ss)
)

(defun C:tb (/ tot_len ss e_name e_record e_type)
(grtext -1 "Free from cadviet.com @ketxu")
(setq k (getvar "dimlfac"))
(setq tot_len 0.0)
(setq ss (ssget))
(setq len (sslength ss))
(if (null ss)
(exit)
)
(while (> (sslength ss) 0)
(setq e_name (ssname ss 0))
(setq e_record (entget e_name))
(setq e_type (cdr (assoc '0 e_record)))
(cond ((wcmatch e_type "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")
(command "lengthen" e_name "")
(setq tot_len (+ tot_len (getvar "PERIMETER")))
(ssdel e_name ss)
)
((wcmatch e_type "MLINE") (add_mline))
(e_type (ssdel e_name ss))
)
)
(setq tot_len (* k tot_len))
(setq tbinh (/ tot_len len))
(alert (rtos tbinh 2 2))
)

  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#4 kienartist

kienartist

    biết zoom

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

Đã gửi 07 April 2011 - 10:47 AM

Bạn dùng tạm cái này, lệnh tb :


(defun add_mline ()
(foreach e_record_sub e_record
(cond ((= 10 (car e_record_sub))
(setq pt1 (cdr e_record_sub)
mline_len 0.0
)
)
((= 11 (car e_record_sub))
(setq pt2 (cdr e_record_sub)
mline_len (+ mline_len (distance pt2 pt1))
pt1 pt2
)
)
)
)
(setq tot_len (+ tot_len mline_len))
(ssdel e_name ss)
)

(defun C:tb (/ tot_len ss e_name e_record e_type)
(grtext -1 "Free from cadviet.com @ketxu")
(setq k (getvar "dimlfac"))
(setq tot_len 0.0)
(setq ss (ssget))
(setq len (sslength ss))
(if (null ss)
(exit)
)
(while (> (sslength ss) 0)
(setq e_name (ssname ss 0))
(setq e_record (entget e_name))
(setq e_type (cdr (assoc '0 e_record)))
(cond ((wcmatch e_type "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")
(command "lengthen" e_name "")
(setq tot_len (+ tot_len (getvar "PERIMETER")))
(ssdel e_name ss)
)
((wcmatch e_type "MLINE") (add_mline))
(e_type (ssdel e_name ss))
)
)
(setq tot_len (* k tot_len))
(setq tbinh (/ tot_len len))
(alert (rtos tbinh 2 2))
)


XIN ĐA TẠ CAO THỦ NHÉ! ĐÚNG Ý EM RỒI ĐẤY!
  • 0

#5 thanhdatkts

thanhdatkts

    biết vẽ line

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

Đã gửi 25 June 2011 - 09:29 AM

bạn ơi muốn chuyển nó thành đơn vị m...thì sửa list thế nào :rolleyes:

ý mình lúc nó hiện lên thông báo kiểu đại loại là :[ tong trung binh cac doan vua chon la 5.0m] kiểu thế :wacko:
  • 0

#6 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 25 June 2011 - 09:45 AM

bạn ơi muốn chuyển nó thành đơn vị m...thì sửa list thế nào :rolleyes:

ý mình lúc nó hiện lên thông báo kiểu đại loại là :[ tong trung binh cac doan vua chon la 5.0m] kiểu thế :wacko:

Kiểu đại loại thế này :
(defun add_mline ()
(foreach e_record_sub e_record
(cond ((= 10 (car e_record_sub))
(setq pt1 (cdr e_record_sub)
mline_len 0.0
)
)
((= 11 (car e_record_sub))
(setq pt2 (cdr e_record_sub)
mline_len (+ mline_len (distance pt2 pt1))
pt1 pt2
)
)
)
)
(setq tot_len (+ tot_len mline_len))
(ssdel e_name ss)
)

(defun C:tb (/ tot_len ss e_name e_record e_type)
(grtext -1 "Free from cadviet.com @ketxu")
(setq k (getvar "dimlfac"))
(setq tot_len 0.0)
(setq ss (ssget))
(setq len (sslength ss))
(if (null ss)
(exit)
)
(while (> (sslength ss) 0)
(setq e_name (ssname ss 0))
(setq e_record (entget e_name))
(setq e_type (cdr (assoc '0 e_record)))
(cond ((wcmatch e_type "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")
(command "lengthen" e_name "")
(setq tot_len (+ tot_len (getvar "PERIMETER")))
(ssdel e_name ss)
)
((wcmatch e_type "MLINE") (add_mline))
(e_type (ssdel e_name ss))
)
)
(setq tot_len (* k tot_len))
(setq tbinh (/ tot_len len 1000))
(alert (strcat "Chieu dai trung binh cac doan vua chon là : "(rtos tbinh 2 2)))
)

  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#7 thanhdatkts

thanhdatkts

    biết vẽ line

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

Đã gửi 25 June 2011 - 10:03 AM

Kiểu đại loại thế này :

(defun add_mline ()
(foreach e_record_sub e_record
(cond ((= 10 (car e_record_sub))
(setq pt1 (cdr e_record_sub)
mline_len 0.0
)
)
((= 11 (car e_record_sub))
(setq pt2 (cdr e_record_sub)
mline_len (+ mline_len (distance pt2 pt1))
pt1 pt2
)
)
)
)
(setq tot_len (+ tot_len mline_len))
(ssdel e_name ss)
)

(defun C:tb (/ tot_len ss e_name e_record e_type)
(grtext -1 "Free from cadviet.com @ketxu")
(setq k (getvar "dimlfac"))
(setq tot_len 0.0)
(setq ss (ssget))
(setq len (sslength ss))
(if (null ss)
(exit)
)
(while (> (sslength ss) 0)
(setq e_name (ssname ss 0))
(setq e_record (entget e_name))
(setq e_type (cdr (assoc '0 e_record)))
(cond ((wcmatch e_type "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")
(command "lengthen" e_name "")
(setq tot_len (+ tot_len (getvar "PERIMETER")))
(ssdel e_name ss)
)
((wcmatch e_type "MLINE") (add_mline))
(e_type (ssdel e_name ss))
)
)
(setq tot_len (* k tot_len))
(setq tbinh (/ tot_len len 1000))
(alert (strcat "Chieu dai trung binh cac doan vua chon là : "(rtos tbinh 2 2)))
)


bạn ơi muốn thêm đuôi [Chieu dai trung binh cac doan vua chon la : .... "m"]
mà sao mình load list vào đánh lệnh tb thì nó toàn lên cái bảng Insert Table là sao :unsure:
  • 0

#8 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 25 June 2011 - 10:07 AM

Trường hợp đó chỉ xảy ra khi bạn chưa thực sự load cái lisp có lệnh TB
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#9 thanhdatkts

thanhdatkts

    biết vẽ line

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

Đã gửi 25 June 2011 - 10:15 AM

Trường hợp đó chỉ xảy ra khi bạn chưa thực sự load cái lisp có lệnh TB

không phải bạn ạ....mình có load/unload applications/ -> Contens....

có add vào mà....

mà mình có remove list đi thì đánh lệnh tb nó vẫn hiện ra cái bảng đó...chả biết bị gì :unsure:

(trước thì không có giờ tự nhiên bị)

mà xem trong acad.pgp cũng có lệnh này

TB, *TABLE

giờ lại được....??? chả hiểu bị gì :wacko:
  • -1

#10 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 25 June 2011 - 10:21 AM

không phải bạn ạ....mình có load/unload applications/ -> Contens....

có add vào mà....

mà mình có remove list đi thì đánh lệnh tb nó vẫn hiện ra cái bảng đó...chả biết bị gì :unsure:

(trước thì không có giờ tự nhiên bị)

tb là lệnh tắt mặc định CAD đặt cho Insert Table. Nếu load thành công lisp thì lệnh TB sẽ đổi thành function TB lisp quy định, chứ không còn là Insert Table mặc định của CAD nữa. Vì thế đoạn này bạn nói là hơi bị lủng củng :lol:

mà mình có remove list đi thì đánh lệnh tb nó vẫn hiện ra cái bảng đó...chả biết bị gì :unsure:
(trước thì không có giờ tự nhiên bị)


Lưu ý với bạn, 1 lisp add vào contents thì chỉ có tác dụng từ phiên làm việc kế tiếp. Muốn tác dụng với phiên làm việc hiện tại thì phải LOAD
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#11 thanhdatkts

thanhdatkts

    biết vẽ line

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

Đã gửi 25 June 2011 - 10:31 AM

tb là lệnh tắt mặc định CAD đặt cho Insert Table. Nếu load thành công lisp thì lệnh TB sẽ đổi thành function TB lisp quy định, chứ không còn là Insert Table mặc định của CAD nữa. Vì thế đoạn này bạn nói là hơi bị lủng củng :lol:


Lưu ý với bạn, 1 lisp add vào contents thì chỉ có tác dụng từ phiên làm việc kế tiếp. Muốn tác dụng với phiên làm việc hiện tại thì phải LOAD


mình dùng cad 2010 nhé bạn :rolleyes: ....mà vấn đề đã được giải quyết roài :wacko: đổi lệnh là xong :D

dù sao cũng thank bạn :D
  • -1

#12 w1nDream

w1nDream

    biết lệnh ddedit

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

Đã gửi 28 November 2012 - 11:21 AM

Bác Ketxu có thể phát triển thành tính trung bình các đoạn thẳng và cho ghi ra text mới hoặc chép đè lên text đã có sẵn giúp anh em tí được không.Thanks
PS: Nếu thêm được đổi mầu kết quả nữa thì tuyệt
  • 0
__Tâm tựa lưu thủY__
Vi nhân nan

#13 NguyenNgocSon

NguyenNgocSon

    biết dimbaseline

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

Đã gửi 28 November 2012 - 12:18 PM

Sửa cho bạn trường hợp ghi ra text có sẵn và đổi mầu và ghi ra màn hình
Mình sửa các lisp tb ở trên,Bạn chọn C ghi ra Text có sẵn, chọn K ghi ra màn hình
http://www.cadviet.c.../48467_tb_1.lsp
  • 1

#14 w1nDream

w1nDream

    biết lệnh ddedit

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

Đã gửi 28 November 2012 - 01:56 PM

tks bác Ngọc sơn!!
Sau khi sử dụng lisp trên đang xảy ra lỗi này:
-Nếu chọn C(có) thì ghi ra text có sẵn nhưng vẫn xuất hiện Aler báo kết quả(không cần thiết khi đã chọn ghi text)
-Nếu chọn K(không) thì kết quả không được ghi ra
Mong bác check lại và sửa hộ em
  • 0
__Tâm tựa lưu thủY__
Vi nhân nan

#15 NguyenNgocSon

NguyenNgocSon

    biết dimbaseline

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

Đã gửi 28 November 2012 - 02:09 PM

Bạn kiểm tra lại với lisp này nhé !
Mình check ok mà

(defun add_mline ()
(foreach e_record_sub e_record
(cond ((= 10 (car e_record_sub))
(setq pt1 (cdr e_record_sub)
mline_len 0.0
)
)
((= 11 (car e_record_sub))
(setq pt2 (cdr e_record_sub)
mline_len (+ mline_len (distance pt2 pt1))
pt1 pt2
)
)
)
)
(setq tot_len (+ tot_len mline_len))
(ssdel e_name ss)
)
(defun C:tb (/ tot_len ss e_name e_record e_type)
(grtext -1 "Free from cadviet.com @ketxu")
(setq k (getvar "dimlfac"))
(setq tot_len 0.0)
(setq ss (ssget))
(setq len (sslength ss))
(if (null ss)
(exit)
)
(while (> (sslength ss) 0)
(setq e_name (ssname ss 0))
(setq e_record (entget e_name))
(setq e_type (cdr (assoc '0 e_record)))
(cond ((wcmatch e_type "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")
(command "lengthen" e_name "")
(setq tot_len (+ tot_len (getvar "PERIMETER")))
(ssdel e_name ss)
)
((wcmatch e_type "MLINE") (add_mline))
(e_type (ssdel e_name ss))
)
)
(setq tot_len (* k tot_len))
(setq tbinh (/ tot_len len))
;--------------------------------------------
(setq Kieu (strcase (getstring "\nGhi ra Text co san <Co>/Khong: ")))
(Cond
((/= Kieu "K")
(setq elst (entget (car (entsel "\n Thay cho so: "))))
(setq elst (subst (cons 1 (rtos tbinh 2 2)) (assoc 1 elst) elst))
;; doan ma lisp chuyen mau ket qua tinh
(if (assoc 62 elst)
(setq elst (subst (cons 62 80) (assoc 62 elst) elst))
(setq elst (append elst (list (cons 62 80))))
)
(entmod elst)
(princ)
)
((= Kieu "K")
;--------------------------------------------
(setq point (getpoint "\n Chon diem ghi ket qua: "))
(setq th (getvar "textsize"))
(setq th (getstring (strcat "\nChieu cao chu <"(rtos th)"> :")))
(command "TEXT" point th 0 (rtos tbinh 2 2))
(alert (strcat "Chieu dai trung binh cac doan vua chon: "(rtos tbinh 2 2)))
;---------------------------------------------
)
)
(princ)
)
Lệnh: tb nếu chọn ghi ra text có sẵn: bỏ qua là có, nếu không ghi K
  • 0

#16 w1nDream

w1nDream

    biết lệnh ddedit

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

Đã gửi 28 November 2012 - 02:26 PM

Chọn C(có) đã ok
Chọn K(không) chỉ xuất hiện Alert mà không thể hiện được kết quả ra text anh à.

Đồng thời nhờ anh thêm đoạn đổi mầu vào Lisp tính chiều dài sau của em với.Tks

(prompt "command : dai")
(defun c:dai()
(setq tong 0)
(setq th (ssget))
(setq index 0)
(setq dtuong (sslength th))
(while (< index dtuong)
(setq ds (entget (ssname th index)))

(command "lengthen" (ssname th index) "" )
(setq tong (+ tong (getvar "perimeter")))

(setq index (1+ index))
)
(print tong)
(prompt "Ghi text moi <G> hay thay the text (T) :")
(setq luachon (getstring))
(setq luachon (strcase luachon))
(if (= "" luachon) (setq luachon "G"))
(if (= "G" luachon)
(progn
(setq pt1 (getpoint))
(setq h (/ (getvar "viewsize") 20))
(command "text" pt1 h "" tong)
)
)
(if (= "T" luachon)
(progn
(prompt "\n Chon gia tri can thay the")
(SETQ TT (SSGET))
(setq s (entget (SSNAME TT 0)))
(setq otext (assoc 1 s))
(setq ot (cdr otext))
(setq ot (read (substr ot 1 )))
(setq nt (cons 1 (rtos tong 2)))
(setq s (subst nt otext s))
(entmod s)
)
)
)

  • 0
__Tâm tựa lưu thủY__
Vi nhân nan

#17 NguyenNgocSon

NguyenNgocSon

    biết dimbaseline

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

Đã gửi 28 November 2012 - 02:51 PM

Cái chọn K máy bạn không được, mình không rõ lắm vì máy mình ok (Bạn thử kiểm tra lại chế độ bắt điểm)
bạn thử xem

(prompt "command : dai")
(defun c:dai()
(setq tong 0)
(setq th (ssget))
(setq index 0)
(setq dtuong (sslength th))
(while (< index dtuong)
(setq ds (entget (ssname th index)))

(command "lengthen" (ssname th index) "" )
(setq tong (+ tong (getvar "perimeter")))

(setq index (1+ index))
)
(print tong)
(prompt "Ghi text moi <G> hay thay the text (T) :")
(setq luachon (getstring))
(setq luachon (strcase luachon))
(if (= "" luachon) (setq luachon "G"))
(if (= "G" luachon)
(progn
(setq pt1 (getpoint))
(setq h (/ (getvar "viewsize") 20))
(command "text" pt1 h "" tong)
)
)
(if (= "T" luachon)
(progn
(prompt "\n Chon gia tri can thay the")
(SETQ TT (SSGET))
(setq s (entget (SSNAME TT 0)))
(setq otext (assoc 1 s))
(setq ot (cdr otext))
(setq ot (read (substr ot 1 )))
(setq nt (cons 1 (rtos tong 2)))
;(setq s (subst nt otext s))
(setq s (subst (cons 62 80) (assoc 62 s) s))
(setq s (append s (list (cons 62 80))))
(entmod s)
(princ)
)
)
)
Tôi chỉ sửa qua được vậy thôi :D
Cái số 80 là mầu, bạn thích mầu nào thay số 80=màu (1...256)
  • 1

#18 w1nDream

w1nDream

    biết lệnh ddedit

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

Đã gửi 28 November 2012 - 03:00 PM

Rất cảm ơn anh Ngọc Sơn.Như thế là ok roài ^^
  • 1
__Tâm tựa lưu thủY__
Vi nhân nan

#19 w1nDream

w1nDream

    biết lệnh ddedit

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

Đã gửi 29 November 2012 - 10:04 AM

SR mọi người.Hôm nay e kiểm tra lại thì lisp đã đổi màu nhưng lại không ghi đúng kết quả.Bác nào có thể giúp em kiểm tra được không ạ!mong!!!
  • 0
__Tâm tựa lưu thủY__
Vi nhân nan

#20 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 29 November 2012 - 10:49 AM

Cái chọn K máy bạn không được, mình không rõ lắm vì máy mình ok (Bạn thử kiểm tra lại chế độ bắt điểm)
bạn thử xem


(prompt "command : dai")
(defun c:dai()
(setq tong 0)
(setq th (ssget))
(setq index 0)
(setq dtuong (sslength th))
(while (< index dtuong)
(setq ds (entget (ssname th index)))

(command "lengthen" (ssname th index) "" )
(setq tong (+ tong (getvar "perimeter")))

(setq index (1+ index))
)
(print tong)
(prompt "Ghi text moi <G> hay thay the text (T) :")
(setq luachon (getstring))
(setq luachon (strcase luachon))
(if (= "" luachon) (setq luachon "G"))
(if (= "G" luachon)
(progn
(setq pt1 (getpoint))
(setq h (/ (getvar "viewsize") 20))
(command "text" pt1 h "" tong)
)
)
(if (= "T" luachon)
(progn
(prompt "\n Chon gia tri can thay the")
(SETQ TT (SSGET))
(setq s (entget (SSNAME TT 0)))
(setq otext (assoc 1 s))
(setq ot (cdr otext))
(setq ot (read (substr ot 1 )))
(setq nt (cons 1 (rtos tong 2)))
;(setq s (subst nt otext s))
(setq s (subst (cons 62 80) (assoc 62 s) s))
(setq s (append s (list (cons 62 80))))
(entmod s)
(princ)
)
)
)
Tôi chỉ sửa qua được vậy thôi :D
Cái số 80 là mầu, bạn thích mầu nào thay số 80=màu (1...256)

Hề hề hề,
Bác NguyenNgocSon xem lại dòng code này:
(command "text" pt1 h "" tong)
Hình như chỗ "" phải là một giá trị số mới đúng bác ạ.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.