Đến nội dung


Hình ảnh
- - - - -

Nhờ viết lisp thông kê giá trị trong block ATT


  • Please log in to reply
49 replies to this topic

#41 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

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

Đã gửi 10 May 2015 - 10:39 PM

@Bác Tue_NV trong LISP em xử thế này liệu có ổn không?

(setq Kn (/ chieudai 11700))
(if (= Kn 0)
(setq sn 0)
(progn (setq n (fix Kn))
(setq m (/ n Kn))
(cond ((< m 1) (setq sn (* n 30)))
((= m 1) (setq sn (* (- n 1) 60))))))
(setq L_noi (* sn duongkinh)
  • 0

#42 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 11 May 2015 - 01:44 AM

Chào các bác và ACE trên DD, em xin được ké Topic này.
Em cũng có vấn đề với thống kê ATT BLOCK nhờ các bác trợ giúp <Xin cám ơn các bác trước!!!>.
Em đã tìm kiếm trên DD nhưng chưa có lisp nào phù hợp với nhu cầu của em, hoặc là chưa tìm ra... mong các bác thông cảm.
Cụ thể là:
+ Trên bản vẽ của em có 2 loại Att Block.
+ Mỗi Att Block có 2 Tag, 1 Tag là ký hiệu cửa (KYHIEU), 1 Tag là quy cách cửa (QUYCACH).
+ Trong Tag QUYCACH có ghi: 2S-1200-K250 hoặc 4D-1800-K150.
* Trong đó:
- Số đầu tiên là số cánh cửa (2 hay 4)
- Thứ 2 là (S or D) là (S) - cửa sổ, (D) - Cửa đi.
- Tiếp theo: 1200 or 1800 là chiều rộng cửa.
- Cuối cùng: 250 or 150 là 1 chiều của tiết diện khuôn cửa.
+ Block và bảng thống kê trong bản vẽ kèm theo.
Một lần nữa xin cám ơn các bác và ACE trước...!
file: http://www.cadviet.c...736_tkcua_1.dwg

Hề hề hề,

Lần này cho bạn ké, nhưng lần sau bạn không nên ké nữa bởi như vậy vấn đề của bạn sẽ ít được quan tâm hơn bởi mọi người thường chỉ quan tâm tới vấn đề của chủ thớt đặt ra. Bạn nên tạo một topic mới cho vấn đề của bạn thì vấn đề của bạn sẽ được nhiều người quan tâm hơn và sẽ nhanh có kết quả hơn.

Vấn đề của bạn mình đã thử viết cái lisp dưới đây, bạn dùng thử và cho ý kiến.

Lưu ý những điều sau khi sử dụng lisp này.

1/- Trên bản vẽ sử dụng lisp phải có style "KY-THUAT" với font là mscross.ttf như bản vẽ bạn gửi mẫu bởi nếu không có mình không đảm bảo là lisp sẽ chạy đúng.

2/- Bản vẽ sử dụng lisp phải có các block có tên block ,tên các thuộc tính, cũng như cấu tạo của block phải đúng như các block trên bản vẽ bạn đã gửi.

 

(defun c:tkc (/ ssl dlst e en k h kh txt n1 n2 name ltxt i dlst1 dlst2 ct pt p1 p2 p3 p4 p5 p6 p7 p8 )
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(alert "\n Hay chon toan bo cac block cua can thong ke")
(setq ssl (acet-ss-to-list (ssget (list (cons 0 "insert") (cons 66 1) (cons 2 "SH-CUASO,SH-CUADI")))))
(setq dlst (list))
(foreach bl ssl
   (setq e (cdr (assoc -2 (tblsearch "block" (cdr (assoc 2 (entget bl)))))))
   (while e
        (if (= (cdr (assoc 0 (entget e))) "TEXT")
            (setq k (cdr (assoc 1 (entget e))))
        )
        (setq e (entnext e))
   )
   (setq en (entnext bl))
   (while (/= (cdr (assoc 0 (entget en))) "SEQEND")
       (cond 
           ((and (= (cdr (assoc 0 (entget en))) "ATTRIB") (= (cdr (assoc 2 (entget en))) "KYHIEU")) (setq h (cdr (assoc 1 (entget en)))))
           ((and (= (cdr (assoc 0 (entget en))) "ATTRIB") (= (cdr (assoc 2 (entget en))) "QUYCACH")) (setq txt (cdr (assoc 1 (entget en)))))
           (T nil)
      )
      (setq en (entnext en))
   )
   (setq kh (strcat k h))
   (if (= k "S")
       (setq n1 "C\\U+1EECA S\\U+1ED4")
       (setq n1 "C\\U+1EECA ÐI")
   )
   (setq n2 (substr txt 1 1))
   (setq name (strcat n1 " " n2 " CÁNH"))
   (setq ltxt (separate txt "-")
             r (cadr ltxt)
             kc (substr (caddr ltxt) 2 ) 
             dlst (append dlst (list (list kh name r kc))) )
)
(setq dlst1 (list))
(While dlst
     (setq i 1)  
     (setq dlst2 (cdr dlst) )
     (foreach ds dlst2
          (if (equal ds (car dlst))
              (progn
                  (setq i (1+ i))
                  (setq dlst2 (vl-remove ds dlst2))
              )
          )
     )
     (setq dlst1 (append dlst1 (list (cons i (car dlst)))))
     (setq dlst dlst2)
)
dlst1 
(command "undo" "be") 
(while (not ct)
       (alert "\n Ban phai nhap chieu cao text trong bang thong ke")
       (setq  ct (getreal "\n Nhap chieu cao text trong bang thong ke <250> : "))
)
(setq pt (getpoint "\Chon diem dat bang thong ke")
          
          p1 (polar pt (* 1.5 pi) (* 4 ct))
          p2 (polar p1 0 (* 4 ct))
          p3 (polar p2 0 (* 8 ct))
          p4 (polar p3 0 (* 20 ct))
          p5 (polar p4 0 (* 10 ct))
          p6 (polar p5 0 (* 10 ct))
          p7 (polar p6 0 (* 10 ct))
          p8 (polar p7 (* 0.5 pi) (* 4 ct))
)   
(command "pline" pt p1 p7 p8 "c")
(command "pline" p2 (polar p2 (* 0.5 pi) (* 4 ct)) "")
(command "pline" p3 (polar p3 (* 0.5 pi) (* 4 ct)) "")
(command "pline" p4 (polar p4 (* 0.5 pi) (* 4 ct)) "")
(command "pline" p5 (polar p5 (* 0.5 pi) (* 4 ct)) "")
(command "pline" p6 (polar p6 (* 0.5 pi) (* 4 ct)) "")  
(command "style" "KY-THUAT" "micross.ttf" 0 1 0 "n" "n")
(command "text"  "J" "mc" (list (+ (car pt) (* 31 ct)) (+ (cadr pt) (* 3 ct))) (* 1.5 ct) 0 "B\\U+1EA2NG TH\\U+1ED0NG KÊ C\\U+1EECA")
(command "text"  "J" "mc" (list (+ (car p1) (* 2 ct)) (+ (cadr p1) (* 2 ct))) ct 0 "STT")  
(command "text"  "J" "mc" (list (+ (car p2) (* 4 ct)) (+ (cadr p1) (* 2 ct))) ct 0 "KÝ HI\\U+1EC6U") 
(command "text"  "J" "mc" (list (+ (car p3) (* 10 ct)) (+ (cadr p1) (* 2 ct))) ct 0 "QUY CÁCH C\\U+1EECA")
(command "text"  "J" "mc" (list (+ (car p4) (* 5 ct)) (+ (cadr p1) (* 2 ct))) ct 0 "S\\U+1ED0 LU\\U+1EE2NG")
(command "text"  "J" "mc" (list (+ (car p5) (* 5 ct)) (+ (cadr p1) (* 2 ct))) ct 0 "CHI\\U+1EC0U R\\U+1ED8NG") 
(command "text"  "J" "mc" (list (+ (car p6) (* 5 ct)) (+ (cadr p1) (* 2 ct))) ct 0 "KHUÔN C\\U+1EECA")  
(setq i 1)
(foreach dl dlst1
       (setq  p1 (polar p1 (* 1.5 pi) (* 4 ct))
          p2 (polar p1 0 (* 4 ct))
          p3 (polar p2 0 (* 8 ct))
          p4 (polar p3 0 (* 20 ct))
          p5 (polar p4 0 (* 10 ct))
          p6 (polar p5 0 (* 10 ct))
          p7 (polar p6 0 (* 10 ct)) 
      )
      (command "pline" p1 (polar p1 (* 0.5 pi) (* 4 ct)) "")
      (command "pline" p2 (polar p2 (* 0.5 pi) (* 4 ct)) "")
      (command "pline" p3 (polar p3 (* 0.5 pi) (* 4 ct)) "")
      (command "pline" p4 (polar p4 (* 0.5 pi) (* 4 ct)) "")
      (command "pline" p5 (polar p5 (* 0.5 pi) (* 4 ct)) "")
      (command "pline" p6 (polar p6 (* 0.5 pi) (* 4 ct)) "") 
      (command "pline" p7 (polar p7 (* 0.5 pi) (* 4 ct)) "")   
      (command "text"  "J" "mc" (list (+ (car p1) (* 2 ct)) (+ (cadr p1) (* 2 ct))) ct 0 (rtos i 2 ) )  
      (command "text"  "J" "mc" (list (+ (car p2) (* 4 ct)) (+ (cadr p1) (* 2 ct))) ct 0 (nth 1 dl)) 
      (command "text"  "J" "mc" (list (+ (car p3) (* 10 ct)) (+ (cadr p1) (* 2 ct))) ct 0 (nth 2 dl))
      (command "text"  "J" "mc" (list (+ (car p4) (* 5 ct)) (+ (cadr p1) (* 2 ct))) ct 0 (nth 0 dl))
      (command "text"  "J" "mc" (list (+ (car p5) (* 5 ct)) (+ (cadr p1) (* 2 ct))) ct 0 (nth 3 dl)) 
      (command "text"  "J" "mc" (list (+ (car p6) (* 5 ct)) (+ (cadr p1) (* 2 ct))) ct 0 (nth 4 dl))
      (setq i (1+ i))
)
(command "pline" p1 p7 "")     
(command "undo" "e")   
(setvar "osmode" oldos)
(princ)         
)
      
      
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun Separate (S sym / i L ch)
(setq i 0 L nil)
(while (< i (strlen S))
      (setq i (1+ i) ch (substr S i 1))
      (if (= ch sym) (progn
(setq
     L (append L (list (substr S 1 (- i 1))))
     S (substr S (1+ i) (- (strlen S) i))
     i 0
)
      )) 
)
(append L (list S))
)                
 

  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#43 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

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

Đã gửi 11 May 2015 - 09:08 AM

Tuyệt vời...! Cám ơn bác phamthanhbinh đã nhắc nhở và cám ơn bác nhiều vì LISP.
Nhân đây, nhờ bác thêm việc nữa:
+ Sắp xếp thứ tự các loại cửa. Ví dụ: Đ1 ; Đ2; Đ3...; S1; S2; S3... theo thứ tự từ trên xuống (trong bảng thống kê).
+ Có cảnh báo khi nhỡ có nhầm khi cùng ký hiệu cửa nhưng quy cách khác nhau. Ví dụ như cùng S1 nhưng có cái thì 2 cánh, cái thì 3 cánh...
(Cảnh báo bằng thông báo hoặc đổi màu của ký hiệu...)
Một lần nữa xin cám ơn bác!
  • 0

#44 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 11 May 2015 - 03:35 PM

Tuyệt vời...! Cám ơn bác phamthanhbinh đã nhắc nhở và cám ơn bác nhiều vì LISP.
Nhân đây, nhờ bác thêm việc nữa:
+ Sắp xếp thứ tự các loại cửa. Ví dụ: Đ1 ; Đ2; Đ3...; S1; S2; S3... theo thứ tự từ trên xuống (trong bảng thống kê).
+ Có cảnh báo khi nhỡ có nhầm khi cùng ký hiệu cửa nhưng quy cách khác nhau. Ví dụ như cùng S1 nhưng có cái thì 2 cánh, cái thì 3 cánh...
(Cảnh báo bằng thông báo hoặc đổi màu của ký hiệu...)
Một lần nữa xin cám ơn bác!

Hề hề hề,

Bạn down lại lisp dưới đây và test thử nhé.

(defun c:tkc (/ ssl dlst e en k h kh txt n1 n2 name ltxt i dlst1 dlst2 ct pt p1 p2 p3 p4 p5 p6 p7 p8 )
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(alert "\n Hay chon toan bo cac block cua can thong ke")
(setq ssl (acet-ss-to-list (ssget (list (cons 0 "insert") (cons 66 1) (cons 2 "SH-CUASO,SH-CUADI")))))
(setq dlst (list))
(foreach bl ssl
   (setq e (cdr (assoc -2 (tblsearch "block" (cdr (assoc 2 (entget bl)))))))
   (while e
        (if (= (cdr (assoc 0 (entget e))) "TEXT")
            (setq k (cdr (assoc 1 (entget e))))
        )
        (setq e (entnext e))
   )
   (setq en (entnext bl))
   (while (/= (cdr (assoc 0 (entget en))) "SEQEND")
       (cond 
           ((and (= (cdr (assoc 0 (entget en))) "ATTRIB") (= (cdr (assoc 2 (entget en))) "KYHIEU")) (setq h (cdr (assoc 1 (entget en)))))
           ((and (= (cdr (assoc 0 (entget en))) "ATTRIB") (= (cdr (assoc 2 (entget en))) "QUYCACH")) (setq txt (cdr (assoc 1 (entget en)))))
           (T nil)
      )
      (setq en (entnext en))
   )
   (setq kh (strcat k h))
   (if (= k "S")
       (setq n1 "C\\U+1EECA S\\U+1ED4")
       (setq n1 "C\\U+1EECA ÐI")
   )
   (setq n2 (substr txt 1 1))
   (setq name (strcat n1 " " n2 " CÁNH"))
   (setq ltxt (separate txt "-")
             r (cadr ltxt)
             kc (substr (caddr ltxt) 2 ) 
             dlst (append dlst (list (list kh name r kc))) )
)
(setq dlst1 (list))
(While dlst
     (setq i 1)  
     (setq dlst2 (cdr dlst) )
     (foreach ds dlst2
          (if (equal ds (car dlst))
              (progn
                  (setq i (1+ i))
                  (setq dlst2 (vl-remove ds dlst2))
              )
              (if (= (car ds) (caar dlst))
                  (alert (strcat "\n CHU Y !!! " "\n Loai cua " (car ds) " co nhieu quy cach. Hay kiem tra lai"))
              )
          )
     )
     (setq dlst1 (append dlst1 (list (cons i (car dlst)))))
     (setq dlst dlst2)
)
dlst1 
(setq dlst1 (vl-sort dlst1 '(lambda (x y) (< (cadr x) (cadr y))    )))
(setq dlst1 (vl-sort dlst1 '(lambda (x y) (> (substr (cadr x) 1 1) (substr (cadr y) 1 1))    )))
(command "undo" "be") 
(while (not ct)
       (alert "\n Ban phai nhap chieu cao text trong bang thong ke")
       (setq  ct (getreal "\n Nhap chieu cao text trong bang thong ke <250> : "))
)
(setq pt (getpoint "\Chon diem dat bang thong ke")
          
          p1 (polar pt (* 1.5 pi) (* 4 ct))
          p2 (polar p1 0 (* 4 ct))
          p3 (polar p2 0 (* 8 ct))
          p4 (polar p3 0 (* 20 ct))
          p5 (polar p4 0 (* 10 ct))
          p6 (polar p5 0 (* 10 ct))
          p7 (polar p6 0 (* 10 ct))
          p8 (polar p7 (* 0.5 pi) (* 4 ct))
)   
(command "pline" pt p1 p7 p8 "c")
(command "pline" p2 (polar p2 (* 0.5 pi) (* 4 ct)) "")
(command "pline" p3 (polar p3 (* 0.5 pi) (* 4 ct)) "")
(command "pline" p4 (polar p4 (* 0.5 pi) (* 4 ct)) "")
(command "pline" p5 (polar p5 (* 0.5 pi) (* 4 ct)) "")
(command "pline" p6 (polar p6 (* 0.5 pi) (* 4 ct)) "")  
(command "style" "KY-THUAT" "micross.ttf" 0 1 0 "n" "n")
(command "text"  "J" "mc" (list (+ (car pt) (* 31 ct)) (+ (cadr pt) (* 3 ct))) (* 1.5 ct) 0 "B\\U+1EA2NG TH\\U+1ED0NG KÊ C\\U+1EECA")
(command "text"  "J" "mc" (list (+ (car p1) (* 2 ct)) (+ (cadr p1) (* 2 ct))) ct 0 "STT")  
(command "text"  "J" "mc" (list (+ (car p2) (* 4 ct)) (+ (cadr p1) (* 2 ct))) ct 0 "KÝ HI\\U+1EC6U") 
(command "text"  "J" "mc" (list (+ (car p3) (* 10 ct)) (+ (cadr p1) (* 2 ct))) ct 0 "QUY CÁCH C\\U+1EECA")
(command "text"  "J" "mc" (list (+ (car p4) (* 5 ct)) (+ (cadr p1) (* 2 ct))) ct 0 "S\\U+1ED0 LU\\U+1EE2NG")
(command "text"  "J" "mc" (list (+ (car p5) (* 5 ct)) (+ (cadr p1) (* 2 ct))) ct 0 "CHI\\U+1EC0U R\\U+1ED8NG") 
(command "text"  "J" "mc" (list (+ (car p6) (* 5 ct)) (+ (cadr p1) (* 2 ct))) ct 0 "KHUÔN C\\U+1EECA")  
(setq i 1)
(foreach dl dlst1
       (setq  p1 (polar p1 (* 1.5 pi) (* 4 ct))
          p2 (polar p1 0 (* 4 ct))
          p3 (polar p2 0 (* 8 ct))
          p4 (polar p3 0 (* 20 ct))
          p5 (polar p4 0 (* 10 ct))
          p6 (polar p5 0 (* 10 ct))
          p7 (polar p6 0 (* 10 ct)) 
      )
      (command "pline" p1 (polar p1 (* 0.5 pi) (* 4 ct)) "")
      (command "pline" p2 (polar p2 (* 0.5 pi) (* 4 ct)) "")
      (command "pline" p3 (polar p3 (* 0.5 pi) (* 4 ct)) "")
      (command "pline" p4 (polar p4 (* 0.5 pi) (* 4 ct)) "")
      (command "pline" p5 (polar p5 (* 0.5 pi) (* 4 ct)) "")
      (command "pline" p6 (polar p6 (* 0.5 pi) (* 4 ct)) "") 
      (command "pline" p7 (polar p7 (* 0.5 pi) (* 4 ct)) "")   
      (command "text"  "J" "mc" (list (+ (car p1) (* 2 ct)) (+ (cadr p1) (* 2 ct))) ct 0 (rtos i 2 ) )  
      (command "text"  "J" "mc" (list (+ (car p2) (* 4 ct)) (+ (cadr p1) (* 2 ct))) ct 0 (nth 1 dl)) 
      (command "text"  "J" "mc" (list (+ (car p3) (* 10 ct)) (+ (cadr p1) (* 2 ct))) ct 0 (nth 2 dl))
      (command "text"  "J" "mc" (list (+ (car p4) (* 5 ct)) (+ (cadr p1) (* 2 ct))) ct 0 (nth 0 dl))
      (command "text"  "J" "mc" (list (+ (car p5) (* 5 ct)) (+ (cadr p1) (* 2 ct))) ct 0 (nth 3 dl)) 
      (command "text"  "J" "mc" (list (+ (car p6) (* 5 ct)) (+ (cadr p1) (* 2 ct))) ct 0 (nth 4 dl))
      (setq i (1+ i))
)
(command "pline" p1 p7 "")     
(command "undo" "e")   
(setvar "osmode" oldos)
(princ)         
)
      
      
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun Separate (S sym / i L ch)
(setq i 0 L nil)
(while (< i (strlen S))
      (setq i (1+ i) ch (substr S i 1))
      (if (= ch sym) (progn
(setq
     L (append L (list (substr S 1 (- i 1))))
     S (substr S (1+ i) (- (strlen S) i))
     i 0
)
      )) 
)
(append L (list S))
)                

  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#45 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

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

Đã gửi 11 May 2015 - 06:06 PM

1 lần nữa cám ơn sự nhiệt tình của bác phamthanhbinh . LISP chạy rất tốt.
  • 0

#46 pawuta

pawuta

    biết lệnh move

  • Members
  • PipPipPip
  • 126 Bài viết
Điểm đánh giá: -12 (hơi kém)

Đã gửi 11 May 2015 - 06:20 PM

Các bạn dịch mấy chữ ĐƯỜNG KÍNH, CHIỀU DÀI, KHỐI LƯỢNG này giống thế này: "S\\U+1ED0 LU\\U+1EE2NG" = SỐ LƯỢNG giúp mình với. Tại viết kiểu này thì khi chạy lisp sẽ không lỗi font


  • 0

#47 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

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

Đã gửi 11 May 2015 - 09:34 PM

\U+0110\U+01AF\U+1EDCNG K\U+00CDNH = ĐƯỜNG KÍNH.
CHI\U+1EC0U D\U+00C0I = CHIỀU DÀI.
KH\U+1ED0I L\U+01AF\U+1EE2NG = KHỐI LƯỢNG.
  • 0

#48 pawuta

pawuta

    biết lệnh move

  • Members
  • PipPipPip
  • 126 Bài viết
Điểm đánh giá: -12 (hơi kém)

Đã gửi 11 May 2015 - 10:06 PM

Oke, than

 

\U+0110\U+01AF\U+1EDCNG K\U+00CDNH = ĐƯỜNG KÍNH.
CHI\U+1EC0U D\U+00C0I = CHIỀU DÀI.
KH\U+1ED0I L\U+01AF\U+1EE2NG = KHỐI LƯỢNG.

Oke, thanks bạn nhiều nhé! cái này dùng mã Unicode C String rồi sửa lại nữa hả bạn?


  • 0

#49 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 12 May 2015 - 02:07 PM

Oke, than

 

Oke, thanks bạn nhiều nhé! cái này dùng mã Unicode C String rồi sửa lại nữa hả bạn?

Hề hề hề,

Cái ni chỉ dùng cho các loại CAD đời 2007 trở lên thôi , với CAd đời thấp hơn thì còn phụ thuộc loại font nữa. Tỷ như CAD 2004 của mình thì nhiều lúc vẫn bó tay đấy....


  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#50 pawuta

pawuta

    biết lệnh move

  • Members
  • PipPipPip
  • 126 Bài viết
Điểm đánh giá: -12 (hơi kém)

Đã gửi 12 May 2015 - 07:21 PM

Oh, thank bạn, thank mọi người!


  • 0