Chuyển đến nội dung
Diễn đàn CADViet
binbin72088@gmail.com

Xin Hỏi về làm đồng phẳng các grip theo trục 0x và 0y

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

Xin chào mọi người, Cho mình hỏi mình có 1 đường thẳng zigzag xanh lá như vầy, mình muốn đưa 3 điểm bên tay phải về đồng phẳng trên đường thẳng màu đỏ cùng 1 lúc như hình bên dưới, thì có cách nào hay lisp nào làm được không nhỉ ( không sử dụng lệnh strech hay move từng điểm nhé)? tương tự với trường hợp đưa hết cùng giá trị y 

 

Screenshot 2021-07-20 123921.jpg

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
37 phút trước, binbin72088@gmail.com đã nói:

Xin chào mọi người, Cho mình hỏi mình có 1 đường thẳng zigzag xanh lá như vầy, mình muốn đưa 3 điểm bên tay phải về đồng phẳng trên đường thẳng màu đỏ cùng 1 lúc như hình bên dưới, thì có cách nào hay lisp nào làm được không nhỉ ( không sử dụng lệnh strech hay move từng điểm nhé)? tương tự với trường hợp đưa hết cùng giá trị y 

 

Screenshot 2021-07-20 123921.jpg

Có thể dùng lsp 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
9 phút trước, DungNguyen685 đã nói:

Vậy chắc STRETCH các đỉnh nó về đường Xline rồi STRETCH lại. Cảm ơn bác nhé!

Cái kia cũng k phải Xline, cũng k phải Stretch, nhưng theo bạn nói cũng có thể là 1 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
3 phút trước, Doan Nguyen Van đã nói:

Cái kia cũng k phải Xline, cũng k phải Stretch, nhưng theo bạn nói cũng có thể là 1 cách

Bác DungNguyen thấy hay cứ hỏi miết, nó là Gread thôi mà, mang tính biểu diễn thôi, LM rất hay dùng.

  • Like 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
12 phút trước, alisp đã nói:

Bác DungNguyen thấy hay cứ hỏi miết, nó là Gread thôi mà, mang tính biểu diễn thôi, LM rất hay dùng.

Cảm ơn bác! Mình cũng thấy ở một số lisp tạo hiệu ứng mà chưa biết từ khóa để tìm hiểu thử ấy mà )))

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
8 giờ trước, binbin72088@gmail.com đã nói:

Cám ơn bạn @Doan Nguyen Van bạn làm gần ra ý mình rồi đó, sẽ có hai thao tác 1 và 2 như hình và áp dụng cho tất cả các object được chọn.

Screenshot 2021-07-23 161401.jpg

Lisp sẽ gửi tặng bạn sớm nhất trong buổi sáng mai. đợi 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

Cảm ơn anh @cuongtk2 nhiều lắm, lisp đúng ý lun, lần đầu tiên e xài lisp bằng vba luôn. Đồng thời cũng cảm ơn anh @thiep vì rất hào hiệp. E cũng muốn biết bản chất cách làm như nào để tự làm cho trục oy nữa, mấy anh cho em biết nguyên lý được ko? Ban đầu e nghĩ là dùng SSget rồi chọn các vertex, rồi dùng hàm for cho từng điểm, sau đó move lần lượt các điểm về 0, e biết sơ sơ ko biết vậy có đúng ko?

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
6 giờ trước, binbin72088@gmail.com đã nói:

Cảm ơn anh @cuongtk2 nhiều lắm, lisp đúng ý lun, lần đầu tiên e xài lisp bằng vba luôn. Đồng thời cũng cảm ơn anh @thiep vì rất hào hiệp. E cũng muốn biết bản chất cách làm như nào để tự làm cho trục oy nữa, mấy anh cho em biết nguyên lý được ko? Ban đầu e nghĩ là dùng SSget rồi chọn các vertex, rồi dùng hàm for cho từng điểm, sau đó move lần lượt các điểm về 0, e biết sơ sơ ko biết vậy có đúng ko?

"Bản chất làm như nào để tự làm cho trục oy nữa" là dùng hàm vlax-curve-getClosestPointTo để tìm điểm gần nhất của điểm này trên 1 curve nào đó. Như vậy, bất kỳ curve ở hướng nào, nó cũng tìm được điểm getClosestPoinTo (ở đây curve là 1 line // với trục ox hoặc oy)

Bạn thử lisp này với phương Line là // trục Ox hoặc Oy. Nếu bạn muốn phương của Line bất kỳ thì khi lisp yêu cầu "Pick endpoint line:" thì nhấn nút F8.

(defun emLINE (pt1 pt2)
  (entmakex (list (cons 0 "LINE")
                  (cons 100 "AcDbEntity")
                  (cons 100 "AcDbLine")
                  (cons 10 pt1)
                  (cons 11 pt2)
            )
  )
)
(defun PointInside (pt ptlst / l_dis)
    (mapcar '(lambda (x) (setq l_dis (cons (distance pt x) l_dis))) ptlst)
    (acet-geom-point-inside pt ptlst (apply 'max l_dis))
)
;;; Lisp stretch vertexes's lwpolyline inside a window to line
;;; by Trân Thiêp, tel: 0918841230        
(defun c:trev (/ p1       p2       porect   enttemp  ss       entLine
                 enttempLWP        p1       p2       p3       p4       entlst
                 obj      orthomode_o       L1 lstpo vlapt poner
                )
  (setq acadObj (vlax-get-acad-object)
        doc     (vla-get-ActiveDocument acadObj)
        *Model* (vla-get-ModelSpace doc)
  )
  (defun *error* (msg)
    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
        (princ (strcat "\n** Error: " msg " **"))
    )
    (acet-sysvar-restore)
    (vla-EndUndoMark doc)
    (princ)
  )
  (vla-StartUndoMark doc)
  (acet-sysvar-set (list "cmdecho" 0 "osmode" 0))
  (setq orthomode_o (getvar "ORTHOMODE"))
   
  (setq p1 (getpoint "\nPick point1 window: ")
        p2 (getcorner p1 "\nPick point2 corner: ")
  )
  (setq ss (ssget "_C" p1 p2 '((0 . "*POLYLINE"))))
  (setq porect (acet-geom-rect-points p1 p2))
  (setvar "ORTHOMODE" 1)
  (setq p3 (getpoint "\nPick startpoint line: ")
        p4 (getpoint p3 "\nPick endpoint line: ")
  )
  (setq entLine (emLINE p3 p4))
  (setvar "ORTHOMODE" orthomode_o)
  (setq l1 nil)
  (setq vlapt (vlax-make-safearray vlax-vbdouble '(0 . 1)))
  (setq entlst (acet-ss-to-list ss))
  (if entlst
    (progn (foreach ent entlst
             (setq L1 nil)
             (setq obj (vlax-ename->vla-object ent))
             (setq lstpo (acet-geom-vertex-list ent))
             (foreach po lstpo
               (if (PointInside po porect)
                 (progn
                   (setq poner (vlax-curve-getClosestPointTo entLine po T))                   
                   (vlax-safearray-fill vlapt (list (car poner) (cadr poner)))
                   (vla-put-Coordinate obj
                                       (fix (vlax-curve-getParamAtPoint ent po))
                                       vlapt
                   )
                 )

               )
             )

           )
           (acet-sysvar-restore)
           (vla-EndUndoMark doc)
           (princ "\nOk")
    )
  )
  (princ)
)

 

  • Like 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

mô tả cách thực hiện:

- đặt 1 điểm p1 làm nơi xác định giá trị X, lấy giá trị p1.X.

- dùng 2 điểm p2, p3 để xác định 1 crossing window cho selection

- tạo một Extens3d rồi add các điểm p2 p3 vào. Extens này dùng để xác định point_inside cho các vertext của curve

- dùng vòng for để duyệt vertex của cuvre, nếu inside p2 p3 thì thay đổi giá trị X cho point đó (với Polyline)

- tương tự startpoint, entpoint với Line

 

 

myCommands.cs.txt

  • Like 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

Vì mấy anh chia sẻ rồi em cũng thử bằng cách nêu lúc đầu. Chứ không có ý làm ảnh hưởng đến bác @Doan Nguyen Van nhé!

(defun getVert (e / i L) ;;;Return list of all vertex from pline e
(setq i 0 L nil)
(vl-load-com)
(repeat (fix (+ (vlax-curve-getEndParam e) 1))
    (setq L (append L (list (vlax-curve-getPointAtParam e i))))
    (setq i (1+ i))
)
L
)
(defun c:STR(/ ent p1 cmd osm L diem1 diem2 diem3 diem4 diem5 diem6 diem7 kc1 kc2 L1 L2 L3
gt1 gt2 gt3 list1 list2 doan1 doan2 doan3 doan4 doan5 doan6 doan7 doan8 sset k lay1 lay2 lay3 lay4 lay5 lay6 ssetz  )
(prompt "Chon doi tuong muon STRETCH")
(setq ent (car (entsel)))
(setq p1 (getpoint "\nChon diem muon STRETCH den:"))
(command ".undo" "BE") 
(setq cmd (getvar "CMDECHO"))
(setq osm (getvar "OSMODE"))
(setvar "CMDECHO" 0)
(setvar "OSMODE" 0)
(setq L (getvert ent))
(setq L (vl-sort L '(lambda (x y) (> (cadr x)(cadr y)))))
(setq diem1 (car (nth 0 L)))
(setq diem2 (car (nth 1 L)))
(setq diem3 (cadr (nth 0 L)))
(setq diem4 (cadr (nth 1 L)))
(setq diem5 (car p1) )
(setq diem6 (list diem5 diem3 ))
(setq diem7 (list diem5 diem4 ))
(setq kc1 (distance (nth 0 L) diem6))
(setq kc2 (distance (nth 1 L) diem7))
(setq L1 nil ) 
(setq L2 nil ) 
(setq L3 nil ) 
(setq j 0)
(if (< diem1 diem2)
(progn
;(alert "loaij1")
(if (< kc1 kc2)
(progn
;(alert "trai")
(while (< j (length L) )
(setq gt1 (/ (atof (itoa j)) 2))
(setq gt2 (fix gt1))
(setq gt3 (- gt1 gt2))
(if (= gt3 0)
(progn
(setq list1 (nth j L))
(setq L1 (append L1 (list list1)))
)
(progn
(setq list2 (nth j L))
(setq L2 (append L2 (list list2)))
)
)
(setq j (1+ j))
)
)
)
(if (> kc1 kc2)
(progn
;(alert "phai")
(while (< j (length L) )
(setq gt1 (/ (atof (itoa j)) 2))
(setq gt2 (fix gt1))
(setq gt3 (- gt1 gt2))
(if (/= gt3 0)
(progn
(setq list1 (nth j L))
(setq L1 (append L1 (list list1)))
)
(progn
(setq list2 (nth j L))
(setq L2 (append L2 (list list2)))
)
)
(setq j (1+ j))
)
)
)
)
(progn
;(alert "loaij2")
(if (< kc1 kc2)
(progn
;(alert "phai")
(while (< j (length L) )
(setq gt1 (/ (atof (itoa j)) 2))
(setq gt2 (fix gt1))
(setq gt3 (- gt1 gt2))
(if (= gt3 0)
(progn
(setq list1 (nth j L))
(setq L1 (append L1 (list list1)))
)
(progn
(setq list2 (nth j L))
(setq L2 (append L2 (list list2)))
)
)
(setq j (1+ j))
)
)
)
(if (> kc1 kc2)
(progn
;(alert "trai")
(while (< j (length L) )
(setq gt1 (/ (atof (itoa j)) 2))
(setq gt2 (fix gt1))
(setq gt3 (- gt1 gt2))
(if (/= gt3 0)
(progn
(setq list1 (nth j L))
(setq L1 (append L1 (list list1)))
)
(progn
(setq list2 (nth j L))
(setq L2 (append L2 (list list2)))
)
)
(setq j (1+ j))
)
)
)
)
)
(setq k 0)
(while (< k (length L1) )
(setq doan1 (nth k L1))
(setq doan6 (car p1) )
(setq doan7 (cadr (nth k L1)))
(setq doan8 (list doan6 doan7 0.0) )
(setq	doan2 (polar doan1 0 1))
(setq	doan3 (polar doan1 0 -1))
(setq	doan4 (polar doan2 (/ pi 2) 1))
(setq	doan5 (polar doan3 (/ pi 2) -1))
(setq sset (ssget "_C" doan5 doan4 '((0 . "*POLYLINE"))))
(setq kc2 (distance doan1 doan8))
(command "stretch" sset "" doan1 doan8)
(setq k (1+ k))
)
;(setq lay1 (nth 0 L1))
;(setq lay2 (nth (- (length L1) 1) L1))
;(setq	lay3 (polar lay1 (/ pi 2) 10))
;(setq	lay4 (polar lay2 (/ pi 2) -10))
;(setq	lay5 (polar lay3 0 10))
;(setq	lay6 (polar lay4 0 -10))
;(setq ssetz (ssget "_C" lay5 lay6 '((0 . "*POLYLINE"))))
;(command "stretch" ssetz "" lay1  pause)
(setvar "CMDECHO" cmd)
(setvar "OSMODE" osm)	
(command ".undo" "E")
(princ)
)

 

Untitled Project.gif

  • Like 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

Xin cám ơn đóng góp của mọi người, biết lisp làm được nhiều thứ hay vầy em cũng tập tành làm từ sớm rùi, hôm bữa mới đọc cuốn nhập môn lisp mà thích wa. ko biết khi nào mới viết lisp đc như mọi người. người nào viết lisp nhìn cũng pro lắm luô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
14 giờ trước, thiep đã nói:

"Bản chất làm như nào để tự làm cho trục oy nữa" là dùng hàm vlax-curve-getClosestPointTo để tìm điểm gần nhất của điểm này trên 1 curve nào đó. Như vậy, bất kỳ curve ở hướng nào, nó cũng tìm được điểm getClosestPoinTo (ở đây curve là 1 line // với trục ox hoặc oy)

Bạn thử lisp này với phương Line là // trục Ox hoặc Oy. Nếu bạn muốn phương của Line bất kỳ thì khi lisp yêu cầu "Pick endpoint line:" thì nhấn nút F8.


(defun emLINE (pt1 pt2)
  (entmakex (list (cons 0 "LINE")
                  (cons 100 "AcDbEntity")
                  (cons 100 "AcDbLine")
                  (cons 10 pt1)
                  (cons 11 pt2)
            )
  )
)
(defun PointInside (pt ptlst / l_dis)
    (mapcar '(lambda (x) (setq l_dis (cons (distance pt x) l_dis))) ptlst)
    (acet-geom-point-inside pt ptlst (apply 'max l_dis))
)
;;; Lisp stretch vertexes's lwpolyline inside a window to line
;; by Trân Thiêp, tel: 0918841230        
(defun c:trev (/ p1       p2       porect   enttemp  ss       entLine
                 enttempLWP        p1       p2       p3       p4       entlst
                 obj      orthomode_o       L1 lstpo vlapt poner
                )
  (setq acadObj (vlax-get-acad-object)
        doc     (vla-get-ActiveDocument acadObj)
        *Model* (vla-get-ModelSpace doc)
  )
  (defun *error* (msg)
    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
        (princ (strcat "\n** Error: " msg " **"))
    )
    (acet-sysvar-restore)
    (vla-EndUndoMark doc)
    (princ)
  )
  (vla-StartUndoMark doc)
  (acet-sysvar-set (list "cmdecho" 0 "osmode" 0))
  (setq orthomode_o (getvar "ORTHOMODE"))
   
  (setq p1 (getpoint "\nPick point1 window: ")
        p2 (getcorner p1 "\nPick point2 corner: ")
  )
  (setq ss (ssget "_C" p1 p2 '((0 . "*POLYLINE"))))
  (setq porect (acet-geom-rect-points p1 p2))
  (setvar "ORTHOMODE" 1)
  (setq p3 (getpoint "\nPick startpoint line: ")
        p4 (getpoint p3 "\nPick endpoint line: ")
  )
  (setq entLine (emLINE p3 p4))
  (setvar "ORTHOMODE" orthomode_o)
  (setq l1 nil)
  (setq vlapt (vlax-make-safearray vlax-vbdouble '(0 . 1)))
  (setq entlst (acet-ss-to-list ss))
  (if entlst
    (progn (foreach ent entlst
             (setq L1 nil)
             (setq obj (vlax-ename->vla-object ent))
             (setq lstpo (acet-geom-vertex-list ent))
             (foreach po lstpo
               (if (PointInside po porect)
                 (progn
                   (setq poner (vlax-curve-getClosestPointTo entLine po T))                   
                   (vlax-safearray-fill vlapt (list (car poner) (cadr poner)))
                   (vla-put-Coordinate obj
                                       (fix (vlax-curve-getParamAtPoint ent po))
                                       vlapt
                   )
                 )

               )
             )

           )
           (acet-sysvar-restore)
           (vla-EndUndoMark doc)
           (princ "\nOk")
    )
  )
  (princ)
)

 

Quá tuyệt vời, ko những theo phương x, phương y, mà còn cả phương chéo, vượt mong đợi, thanks a Thiệp.

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
Vào lúc 24/7/2021 tại 14:05, DungNguyen685 đã nói:

Vì mấy anh chia sẻ rồi em cũng thử bằng cách nêu lúc đầu. Chứ không có ý làm ảnh hưởng đến bác @Doan Nguyen Van nhé!


(defun getVert (e / i L) ;;;Return list of all vertex from pline e
(setq i 0 L nil)
(vl-load-com)
(repeat (fix (+ (vlax-curve-getEndParam e) 1))
    (setq L (append L (list (vlax-curve-getPointAtParam e i))))
    (setq i (1+ i))
)
L
)
(defun c:STR(/ ent p1 cmd osm L diem1 diem2 diem3 diem4 diem5 diem6 diem7 kc1 kc2 L1 L2 L3
gt1 gt2 gt3 list1 list2 doan1 doan2 doan3 doan4 doan5 doan6 doan7 doan8 sset k lay1 lay2 lay3 lay4 lay5 lay6 ssetz  )
(prompt "Chon doi tuong muon STRETCH")
(setq ent (car (entsel)))
(setq p1 (getpoint "\nChon diem muon STRETCH den:"))
(command ".undo" "BE") 
(setq cmd (getvar "CMDECHO"))
(setq osm (getvar "OSMODE"))
(setvar "CMDECHO" 0)
(setvar "OSMODE" 0)
(setq L (getvert ent))
(setq L (vl-sort L '(lambda (x y) (> (cadr x)(cadr y)))))
(setq diem1 (car (nth 0 L)))
(setq diem2 (car (nth 1 L)))
(setq diem3 (cadr (nth 0 L)))
(setq diem4 (cadr (nth 1 L)))
(setq diem5 (car p1) )
(setq diem6 (list diem5 diem3 ))
(setq diem7 (list diem5 diem4 ))
(setq kc1 (distance (nth 0 L) diem6))
(setq kc2 (distance (nth 1 L) diem7))
(setq L1 nil ) 
(setq L2 nil ) 
(setq L3 nil ) 
(setq j 0)
(if (< diem1 diem2)
(progn
;(alert "loaij1")
(if (< kc1 kc2)
(progn
;(alert "trai")
(while (< j (length L) )
(setq gt1 (/ (atof (itoa j)) 2))
(setq gt2 (fix gt1))
(setq gt3 (- gt1 gt2))
(if (= gt3 0)
(progn
(setq list1 (nth j L))
(setq L1 (append L1 (list list1)))
)
(progn
(setq list2 (nth j L))
(setq L2 (append L2 (list list2)))
)
)
(setq j (1+ j))
)
)
)
(if (> kc1 kc2)
(progn
;(alert "phai")
(while (< j (length L) )
(setq gt1 (/ (atof (itoa j)) 2))
(setq gt2 (fix gt1))
(setq gt3 (- gt1 gt2))
(if (/= gt3 0)
(progn
(setq list1 (nth j L))
(setq L1 (append L1 (list list1)))
)
(progn
(setq list2 (nth j L))
(setq L2 (append L2 (list list2)))
)
)
(setq j (1+ j))
)
)
)
)
(progn
;(alert "loaij2")
(if (< kc1 kc2)
(progn
;(alert "phai")
(while (< j (length L) )
(setq gt1 (/ (atof (itoa j)) 2))
(setq gt2 (fix gt1))
(setq gt3 (- gt1 gt2))
(if (= gt3 0)
(progn
(setq list1 (nth j L))
(setq L1 (append L1 (list list1)))
)
(progn
(setq list2 (nth j L))
(setq L2 (append L2 (list list2)))
)
)
(setq j (1+ j))
)
)
)
(if (> kc1 kc2)
(progn
;(alert "trai")
(while (< j (length L) )
(setq gt1 (/ (atof (itoa j)) 2))
(setq gt2 (fix gt1))
(setq gt3 (- gt1 gt2))
(if (/= gt3 0)
(progn
(setq list1 (nth j L))
(setq L1 (append L1 (list list1)))
)
(progn
(setq list2 (nth j L))
(setq L2 (append L2 (list list2)))
)
)
(setq j (1+ j))
)
)
)
)
)
(setq k 0)
(while (< k (length L1) )
(setq doan1 (nth k L1))
(setq doan6 (car p1) )
(setq doan7 (cadr (nth k L1)))
(setq doan8 (list doan6 doan7 0.0) )
(setq	doan2 (polar doan1 0 1))
(setq	doan3 (polar doan1 0 -1))
(setq	doan4 (polar doan2 (/ pi 2) 1))
(setq	doan5 (polar doan3 (/ pi 2) -1))
(setq sset (ssget "_C" doan5 doan4 '((0 . "*POLYLINE"))))
(setq kc2 (distance doan1 doan8))
(command "stretch" sset "" doan1 doan8)
(setq k (1+ k))
)
;(setq lay1 (nth 0 L1))
;(setq lay2 (nth (- (length L1) 1) L1))
;(setq	lay3 (polar lay1 (/ pi 2) 10))
;(setq	lay4 (polar lay2 (/ pi 2) -10))
;(setq	lay5 (polar lay3 0 10))
;(setq	lay6 (polar lay4 0 -10))
;(setq ssetz (ssget "_C" lay5 lay6 '((0 . "*POLYLINE"))))
;(command "stretch" ssetz "" lay1  pause)
(setvar "CMDECHO" cmd)
(setvar "OSMODE" osm)	
(command ".undo" "E")
(princ)
)

 

Untitled Project.gif

Nay mới đọc thấy cmt này, bạn cứ thoải mái. Bạn chủ topic có nhắn mình rồi, nhưng bạn ấy bảo chỉ hỏi cho biết thôi chứ không biết áp dụng vào trường hợp cụ thể nào. Vậy nên các bạn thảo luận xem dùng nó vào vấn đề gì cho hợp lý thôi

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
15 phút trước, Doan Nguyen Van đã nói:

Nay mới đọc thấy cmt này, bạn cứ thoải mái. Bạn chủ topic có nhắn mình rồi, nhưng bạn ấy bảo chỉ hỏi cho biết thôi chứ không biết áp dụng vào trường hợp cụ thể nào. Vậy nên các bạn thảo luận xem dùng nó vào vấn đề gì cho hợp lý thôi

Theo mình mang tính giải trí... hí hí hí...

  • Like 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
19 phút trước, NTHAHT đã nói:

Theo mình mang tính giải trí... hí hí hí...

Giải trí mà nhiều người tham gia quá nhỉ,  chắc do covid bị cấm cung ở nhà bùn wé viết cho vui thôi chứ chẳng có mục đích gì ráo! 

  • Like 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

×