Đến nội dung


Hình ảnh
5 stars - based on 24598 reviews
* * * - - 3 Bình chọn

Hướng dẫn lập trình Lisp


  • Please log in to reply
493 replies to this topic

#401 hienngocloveyou

hienngocloveyou

    biết vẽ line

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

Đã gửi 16 April 2012 - 04:27 PM

Cho em hỏi cái thuộc tính của nội dung text là gì ạ, vd em có 1 chữ A, 1 chữ B, em muốn thay đổi chữ B thành A thì nó là thuộc tính gì
  • 0

#402 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2159 Bài viết
Điểm đánh giá: 1368 (rất tốt)

Đã gửi 16 April 2012 - 04:35 PM

Cho em hỏi cái thuộc tính của nội dung text là gì ạ, vd em có 1 chữ A, 1 chữ B, em muốn thay đổi chữ B thành A thì nó là thuộc tính gì

Mã dxf của nội dung text là 1 bạn ạ. Đoạn dưới là dùng chọn 1 đối tượng TEXT và chỉnh nội dung nó thành noidung

(setq dddsn (entsel "\nChon text chinh noi dung"))
(while
(or
(null dddsn)
(/= "TEXT" (cdr (assoc 0 (entget (car dddsn)))))
)
(princ "\nDoi tuong khong phai la text! Chon lai")
(setq dddsn (entsel "\nChon text chinh noi dung"))
)

(setq DTDTTsn (car dddsn))
(setq DTMs (entget DTDTTsn))
(setq DTMs (subst (cons 1 "noidung") (assoc 1 DTMs) DTMs))
(entmod DTMs)

  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#403 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4319 Bài viết
Điểm đánh giá: 3823 (đỉnh cao)

Đã gửi 16 April 2012 - 04:40 PM

Cho em hỏi cái thuộc tính của nội dung text là gì ạ, vd em có 1 chữ A, 1 chữ B, em muốn thay đổi chữ B thành A thì nó là thuộc tính gì

Bạn đọc thêm file này của bác ssg
Xâm nhập kho cơ sở dữ liệu của AutoCAD
http://www.cadviet.c...?showtopic=1980
  • 1

#404 hienngocloveyou

hienngocloveyou

    biết vẽ line

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

Đã gửi 16 April 2012 - 04:51 PM

thanks all, cái dfx này khá hữu dụng :D
  • 0

#405 hienngocloveyou

hienngocloveyou

    biết vẽ line

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

Đã gửi 16 April 2012 - 05:00 PM


(setq pt2 (getpoint "\n Chon diem chen: "))
(command "._insert" "D:\\Hien\\DWG\\2C30030.dwg" pt2 1 1 0 )
Cho em hỏi nếu bản vẽ đã có thư viện block sẵn, thì chèn block như thế nào mà ko cần link đường dẫn. Nhu trên mình bỏ link D:\\Hien\\DWG\\2C30030.dwg đi thay bằng tên của block là 2C30030, sao nó ko hiểu, và cho hỏi thêm là thư viện block nó nằm ở đâu ạ
  • 0

#406 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4319 Bài viết
Điểm đánh giá: 3823 (đỉnh cao)

Đã gửi 16 April 2012 - 05:10 PM


(setq pt2 (getpoint "\n Chon diem chen: "))
(command "._insert" "D:\\Hien\\DWG\\2C30030.dwg" pt2 1 1 0 )
Cho em hỏi nếu bản vẽ đã có thư viện block sẵn, thì chèn block như thế nào mà ko cần link đường dẫn. Nhu trên mình bỏ link D:\\Hien\\DWG\\2C30030.dwg đi thay bằng tên của block là 2C30030, sao nó ko hiểu, và cho hỏi thêm là thư viện block nó nằm ở đâu ạ

Nằm trong Support Search Path file là được. Hoặc nó nằm trong bản vẽ của bạn
  • 0

#407 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5511 Bài viết
Điểm đánh giá: 2655 (tuyệt vời)

Đã gửi 16 April 2012 - 05:11 PM


(setq pt2 (getpoint "\n Chon diem chen: "))
(command "._insert" "D:\\Hien\\DWG\\2C30030.dwg" pt2 1 1 0 )
Cho em hỏi nếu bản vẽ đã có thư viện block sẵn, thì chèn block như thế nào mà ko cần link đường dẫn. Nhu trên mình bỏ link D:\\Hien\\DWG\\2C30030.dwg đi thay bằng tên của block là 2C30030, sao nó ko hiểu, và cho hỏi thêm là thư viện block nó nằm ở đâu ạ

Muốn chèn block không kèm path thì hoặc:
1). Bạn đưa các file block này vào trong thư mục hiện hành.
2). Bạn add Path của thư mục chứa bolck vào Support File Search Path
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#408 thonggtcc

thonggtcc

    biết zoom

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

Đã gửi 21 April 2012 - 10:33 AM

Hiện mình có 1 bài toán như sau nhưng chưa biết cách giải quyết, mong các cao thủ CadViet giúp đỡ:
Bản vẽ mình có các block. Mỗi block quy định một kiểu dữ liệu đầu vào. Các dữ liệu này được thông kê bằng tay và lập từ bảng excel sau đó cập nhật vào bản vẽ theo lý trình, số hiệu ....
Vấn đề khó khăn ở chỗ: Việc thống kê các số liệu này rất nhiều, nếu nhập thủ công vào bản vẽ sẽ mất rất nhiều thời gian.
Vậy nhờ các cao thủ hướng dẫn cách tự động lấy số liệu trong Excel và vẽ theo mẫu đã định sẵn.
Bản vẽ đính kèm: http://www.cadviet.c..._hoang_dieu.dwg
  • 0

#409 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4319 Bài viết
Điểm đánh giá: 3823 (đỉnh cao)

Đã gửi 21 April 2012 - 10:41 AM

Hiện mình có 1 bài toán như sau nhưng chưa biết cách giải quyết, mong các cao thủ CadViet giúp đỡ:
Bản vẽ mình có các block. Mỗi block quy định một kiểu dữ liệu đầu vào. Các dữ liệu này được thông kê bằng tay và lập từ bảng excel sau đó cập nhật vào bản vẽ theo lý trình, số hiệu ....
Vấn đề khó khăn ở chỗ: Việc thống kê các số liệu này rất nhiều, nếu nhập thủ công vào bản vẽ sẽ mất rất nhiều thời gian.
Vậy nhờ các cao thủ hướng dẫn cách tự động lấy số liệu trong Excel và vẽ theo mẫu đã định sẵn.
Bản vẽ đính kèm: http://www.cadviet.c..._hoang_dieu.dwg

Bạn upload file Excel lên và mô tả kỹ hơn nhé!
Nhìn file dwg không hiểu ý bạn ra sao cả?

P/S: Chắc bạn đang ở Đà Nẵng phải không?
  • 0

#410 thonggtcc

thonggtcc

    biết zoom

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

Đã gửi 23 April 2012 - 12:24 PM

Bản vẽ mình đưa lên là minh hoạ cho bình đồ duỗi thẳng của 1 tuyến đường.
Trong đó bao gồm các dữ liệu sau: Chiều dài của tuyến, các giao cắt, kết cấu vỉa hè trên từng đoạn, biển báo giao thông, sơn kẻ vạch, hệ thống thoát nước, cây xanh, trụ điện, điện chiếu sáng, ....
Mình phải xây dựng cho từng đoạn 100m, 200 và tối đa là 500m cho mỗi tờ A3, mục đích để cập nhật dữ liệu trên bằng tay trên giấy A3 (vì trong quá trình quản lý các dữ liệu trên sẽ liên tục thay đổi). Sau đó mới vẽ lại trên bản vẽ Cad gốc sau mỗi 6 tháng 1 lần.
Với số liệu rất nhiều (vì quản lý rất nhiều tuyến) do đó việc cập nhật thủ công vào Cad rất mất thời gian và công sức.
Đồng thời các dữ liệu này còn phục vụ cho việc trích xuất để thống kê, báo cáo khi cần thiết.
Do đó mình nhờ các anh có phương pháp nào cập nhật các số liệu như: cây xanh, trụ điện, biển báo, hệ thống thoát nước ... từ bảng thống kê trên Excel qua Cad nhanh hơn không? Nếu được thì các bạn hướng dẫn phương pháp trích xuất số liệu ngược lại?
Thanks
File ví dụ: http://www.cadviet.c...05390_vi_du.rar
  • 0

#411 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 23 April 2012 - 02:47 PM

Bản vẽ mình đưa lên là minh hoạ cho bình đồ duỗi thẳng của 1 tuyến đường.
Trong đó bao gồm các dữ liệu sau: Chiều dài của tuyến, các giao cắt, kết cấu vỉa hè trên từng đoạn, biển báo giao thông, sơn kẻ vạch, hệ thống thoát nước, cây xanh, trụ điện, điện chiếu sáng, ....
Mình phải xây dựng cho từng đoạn 100m, 200 và tối đa là 500m cho mỗi tờ A3, mục đích để cập nhật dữ liệu trên bằng tay trên giấy A3 (vì trong quá trình quản lý các dữ liệu trên sẽ liên tục thay đổi). Sau đó mới vẽ lại trên bản vẽ Cad gốc sau mỗi 6 tháng 1 lần.
Với số liệu rất nhiều (vì quản lý rất nhiều tuyến) do đó việc cập nhật thủ công vào Cad rất mất thời gian và công sức.
Đồng thời các dữ liệu này còn phục vụ cho việc trích xuất để thống kê, báo cáo khi cần thiết.
Do đó mình nhờ các anh có phương pháp nào cập nhật các số liệu như: cây xanh, trụ điện, biển báo, hệ thống thoát nước ... từ bảng thống kê trên Excel qua Cad nhanh hơn không? Nếu được thì các bạn hướng dẫn phương pháp trích xuất số liệu ngược lại?
Thanks
File ví dụ: http://www.cadviet.c...05390_vi_du.rar

Hề hề hề,
1/- Bạn gửi bản vẽ cad2010 nên mình không mở được để tham khảo. Bạn có thể gửi lại bản vẽ ở dạng Cad2004 được không???
2/- Việc lấy số liệu từ bản vẽ để nhập sang file Excel và ngược lại là hoàn toàn có thể với điều kiện bạn phải tổ chức bản vẽ cho thật khoa học và thống nhất mới được. bạn ạ. Tỹ như các số liệu trên cùng một cột của Excel thì trên bản vẽ CAd sẽ cùng trên một layer hay cùng một màu săc chẳng hạn....
3/- Việc trích xuất và nhập dữ liệu vào CAd hoàn toàn có thể dùng lisp để giải quyết tuy rằng lisp không phải là biện pháp duy nhất và tối ưu nhất.
Hề hề hề,
Vài thiển ý với bạn, nếu không hài lòng xin đừng giận....
Chúc bạn vui.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#412 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 23 April 2012 - 04:01 PM

@thongtcc : topic hướng dẫn lập trình dành cho mem hỏi về các vấn đề trong code, nên nếu bạn đưa ra 1 project to vậy chắc khó có đáp án :)
Về việc chuyển đối qua lại dữ liệu giữa CAD <-> Excel thì mình khuyên bạn không nên nghĩ tới Lisp, vì công việc lúc đó sẽ khó hơn các ngôn ngữ khác rất nhiều
  • 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


#413 thonggtcc

thonggtcc

    biết zoom

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

Đã gửi 23 April 2012 - 04:51 PM

Vì mình không rành về lisp và lập trình nên mình mới mạo muội đưa bài toán của mình lên đây để các anh em tham khảo và có ý kiến đóng góp giúp. Có thể vấn đề mình đặt ra không phải là bài toán đơn giải quyết 1, 2 vấn đề mà bao gồm rất nhiều vấn đề phức tạp khác mà mình không biết (do không biết tí gì về lập trình mà).
Nếu quá phức tạp thì các cao thủ CadViet có thể chia ra nhiều vấn đề nhỏ và tìm lời giải cho từng cái một thì có thể khả thi hơn.
Xin lỗi vì mình quên Save as về Cad 2004 & Office 2003.
Link mới: http://www.cadviet.c...390_vi_du_1.rar
  • 0

#414 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 23 April 2012 - 05:34 PM

Chí ít cũng phải có quy luật làm việc , quy luật sắp xếp đối tượng... Diễn đàn có nhiều người không theo ngnhf của bạn (vd mình), nhìn vô hoa mắt liền, chưa kể các thứ râu ria k nằm trong quá trình xử lý nữa. Theo mình để dễ hiểu hơn, bạn nên paste cái số liệu Excel thẳng vào CAD, rồi chỉ ra số nào lấy từ đâu, nguyên tắc là gì....
Dù sao cũng phải nói 1 điều là vấn đề của bạn cực khó :)
  • 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


#415 dunguss3581

dunguss3581

    biết lệnh rotate

  • Advance Member
  • PipPipPip
  • 139 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 12 May 2012 - 11:20 AM

các bác cho em hỏi có hàm nào chuyển string thành list không? hoặc các bác xem giúp em code này. em muốn giá trị trả về của đoạn code là biến kq.

(defun str-list (str)
(setq dai(strlen str))
(setq i 0)
(repeat dai
(if (= (substr str i 1) " ")
(progn
(setq i 0)
(setq kq (append kq (list phantu)))
)
(strcat phantu (strcat phantu (substr str i 1)))
)
(1+ i)
)
)

  • 0

#416 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 12 May 2012 - 12:30 PM

các bác cho em hỏi có hàm nào chuyển string thành list không? hoặc các bác xem giúp em code này. em muốn giá trị trả về của đoạn code là biến kq.


(defun str-list (str)
(setq dai(strlen str))
(setq i 0)
(repeat dai
(if (= (substr str i 1) " ")
(progn
(setq i 0)
(setq kq (append kq (list phantu)))
)
(strcat phantu (strcat phantu (substr str i 1)))
)
(1+ i)
)
)

Bạn hỏi tối nghĩa quá. String thành list thì có hàm vl-string->list.
CÒn theo cái lisp của bạn thì mình hiểu là chuyển string thành list các string bằng 1 ký tự phân cách.
=> code :

(defun Str->lst ( str del / pos )
(vl-remove ""
(if (setq pos (vl-string-search del str))
(cons (substr str 1 pos) (Str->lst (substr str (+ pos 1 (strlen del))) del))
(list str)
)
)
)
Sử dụng :
(str->lst string ký_tự_phân_cách)
Ví dụ :
(str->lst "abc 123 456 " " ")
Trả về : ("abc" "123" "456")

-2 : muốn hàm con trả về kết quả biến nào nào thì trước dấu ngoặc cuối cùng ghi tên biến đó ra.
Ví dụ : (defun tong (a b / c)(setq c (+ a B)) c) (tất nhiên tùy trường hợp)
  • 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


#417 dunguss3581

dunguss3581

    biết lệnh rotate

  • Advance Member
  • PipPipPip
  • 139 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 12 May 2012 - 02:55 PM

Bạn hỏi tối nghĩa quá. String thành list thì có hàm vl-string->list.
CÒn theo cái lisp của bạn thì mình hiểu là chuyển string thành list các string bằng 1 ký tự phân cách.
=> code :


(defun Str->lst ( str del / pos )
(vl-remove ""
(if (setq pos (vl-string-search del str))
(cons (substr str 1 pos) (Str->lst (substr str (+ pos 1 (strlen del))) del))
(list str)
)
)
)
Sử dụng :
(str->lst string ký_tự_phân_cách)
Ví dụ :
(str->lst "abc 123 456 " " ")
Trả về : ("abc" "123" "456")

-2 : muốn hàm con trả về kết quả biến nào nào thì trước dấu ngoặc cuối cùng ghi tên biến đó ra.
Ví dụ : (defun tong (a b / c)(setq c (+ a B)) c) (tất nhiên tùy trường hợp)

Bác thông cảm nhé! Tui không biết mới hỏi mà. Bác làm hay lắm nhưng cho tui hỏi thêm nhé:
1. Tui muốn kết quả trả về là: (abc 123 456) (không có dấu nháy trên) có được không?..
2. Tui chưa hiểu đoạn code này: (Str->lst (substr str (+ pos 1 (strlen del))) del) bác giải thích cho tui nhé: có phải bác lặp bằng cách dùng hàm con trong chính hàm con đó không?
Thanks!
  • 0

#418 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 12 May 2012 - 03:46 PM

1. Nó còn phụ thuộc vào yêu cầu của bạn. Tách 1 string ra thành list các string nhỏ thì đương nhiên, là 1 string nó sẽ có dấu "". Nếu bạn muốn nó trả về như trên thì abc sẽ không còn là 1 string, mà là 1 tên biến ABC. Bạn hiểu ý mình không ?
Muốn làm thì bạn thêm đoạn này :
(mapcar 'read
trước dòng (vl-remove ""....) và thêm 1 dấu ) ở cuối hàm.

2. Cấu trúc này gọi là đệ quy, nếu bạn đã từng đọc 1 ngôn ngữ lập trình nào đó thì sẽ thấy khái niệm này :). Nói nôm na gần như bạn nói : gọi hàm trong chính thân hàm
  • 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


#419 hamster2102

hamster2102

    biết lệnh copy

  • Advance Member
  • PipPipPip
  • 111 Bài viết
Điểm đánh giá: 21 (tàm tạm)

Đã gửi 21 July 2012 - 01:52 PM

nhờ anh em kiểm tra dùm lisp BMI em viết và chỉ cho em chỗ sai với, nếu em sai nhiều quá thì cho em hướng và một số bi kíp liên quan để thực hiện. Em mới làm quen với lisp thôi và chưa đọc được nhiều mong các bác đừng cười kẻo em tự kỷ. Xin cám ơn anh em nhiều


;;; kiem tra BMI
;;; hamster2102
(defun c: bmi (/w h chiso )
(princ "\nChuc ban may man")
(setq
H (getreal "\nChieu cao cua ban bao nhieu: h = ")
W (getreal "\nCan nang cua ban bao nhieu: w=")
)
(setq h2 (* h h))
(setq chiso (/ w h2))
(princ "\nChi so BMI cua ban la")
(princ chiso)
(if (< chiso 18) (princ "\nBo xuong kho cua ban can phai cho an uong day du han che tu suong"))
(if (and (>= chiso 18) (< chiso 25)) (princ "\nBan hang chuan khong can chinh sua thi vo tu"))
(if (and (>= chiso 25) (< chiso 30))(princ "\nChuc mung ban beo phi do 1 can an nhieu hon de len do 2"))
(if (and (>= chiso 30) (< chiso 35))(princ "\nChuc mung ban beo phi do 2 can an nhieu hon de len do 3"))
(if (>= chiso 35) (princ "\nOh yeah! Chuc mung ban da dat dinh cao phong do beo khoe beo dep beo nhu heo roi"))
(princ "\nChuc ban mot ngay vui ve")
(princ)
)

  • 0
Nếu biết rằng em đã lấy chồng
Anh mừng biết mấy em biết không
Bao năm quen biết, bao năm mệt
Tính ra cũng khổ mấy năm ròng

#420 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4319 Bài viết
Điểm đánh giá: 3823 (đỉnh cao)

Đã gửi 21 July 2012 - 04:01 PM

nhờ anh em kiểm tra dùm lisp BMI em viết và chỉ cho em chỗ sai với, nếu em sai nhiều quá thì cho em hướng và một số bi kíp liên quan để thực hiện. Em mới làm quen với lisp thôi và chưa đọc được nhiều mong các bác đừng cười kẻo em tự kỷ. Xin cám ơn anh em nhiều


;;; kiem tra BMI
;;; hamster2102
(defun c: bmi (/w h chiso )
(princ "\nChuc ban may man")
(setq
H (getreal "\nChieu cao cua ban bao nhieu: h = ")
W (getreal "\nCan nang cua ban bao nhieu: w=")
)
(setq h2 (* h h))
(setq chiso (/ w h2))
(princ "\nChi so BMI cua ban la")
(princ chiso)
(if (< chiso 18) (princ "\nBo xuong kho cua ban can phai cho an uong day du han che tu suong"))
(if (and (>= chiso 18) (< chiso 25)) (princ "\nBan hang chuan khong can chinh sua thi vo tu"))
(if (and (>= chiso 25) (< chiso 30))(princ "\nChuc mung ban beo phi do 1 can an nhieu hon de len do 2"))
(if (and (>= chiso 30) (< chiso 35))(princ "\nChuc mung ban beo phi do 2 can an nhieu hon de len do 3"))
(if (>= chiso 35) (princ "\nOh yeah! Chuc mung ban da dat dinh cao phong do beo khoe beo dep beo nhu heo roi"))
(princ "\nChuc ban mot ngay vui ve")
(princ)
)

Code trên bị mỗi cái lỗi ở chổ :
(defun c: bmi (/w h chiso )
Chắc bạn tự xử được
  • 1