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

AutoTay.com

Thành viên
  • Số lượng nội dung

    137
  • Đã tham gia

  • Lần ghé thăm cuối

  • Ngày trúng

    1

Bài đăng được đăng bởi AutoTay.com


  1. Em có chỉnh sửa lisp VK 1 chút cho đúng nhu cầu của em nhưng còn 1 số thứ không biết sửa thế nào. Nhờ các anh sửa giúp em ạ.

    Em cảm ơn các anh nhiều!

    Các thứ em muốn sửa là: Bóp Width factor của text lại thành 0.8 và bật tất cả chế độ Osnap sau khi chạy xong.

    (defun c:VKK( / olmode P1 P2 Tleebd)
    
        (setvar "PLINEWID" 0)
        (command "Layer" "M" "--KHUNG" "C" "7" "" "")
        (command "_Style" "--KHUNG" "txt.shx" "0" "0.8" "0" "" "" "")
    
    (vl-load-com)
    (setq olmode (getvar "OSMODE"))
    (setvar "OSMODE" 1)
    (setq P1 (getpoint "\n Top Left >>> "))
    (setq P2 (getpoint P1 "\n Right Bottom >>> "))
    (or *Tleebd* (setq *Tleebd* 1000))
    (setq Tleebd (getreal (strcat "\n \n Scale 1/...   <"
              (rtos *Tleebd* 2 0)
             "> :"
          )
     )
    )
    (if (not Tleebd) (setq Tleebd *Tleebd*) (setq *Tleebd* Tleebd))
    (TML1 P1 P2 Tleebd)
    (setvar "OSMODE" olmode)
    (princ)
    )
    
    (defun TML1 (P1 P22 tile_tmp /  Ent Height rau tHeight len_per ob ) ;;;; Tao mat luoi
    (vl-load-com)
    
    (setq olmode (getvar "OSMODE"))
    (setvar "Osmode" 1)
    (setq Height (abs (- (cadr P1) (cadr P22))))
    (or #tile (setq #tile 500))
    (if tile_tmp (setq #tile tile_tmp))
    (setq dis (/ #tile 10.0)
            rau (/ #tile 200.0)
            tHeight  (/ (* 1.7 rau) 5) 		; Chieu cao text
            len_per (/ #tile 125.0) 		; Chieu dai rau
    )
    (setq WithLine (* 0.6 (/ rau 5))) 		; Chieu rong Pline
    (setq olmode (getvar "OSMODE"))
    (setvar "Osmode" 0)
    (setq P11 (list (car P1) (cadr P22)))
    (setq
          Gocxoay (angle P11 P22)
          Kc (distance P11 P22)
          P3 (polar P11 (+ (/ pi 2) Gocxoay) Height)
          P4 (polar P3  Gocxoay  Kc)
    )
    (command "Pline" P11 P3 P4 P22 P11 "")
    (setq e (entlast))
    (setq Elast (entlast))
    (vla-getboundingbox (vlax-ename->vla-object e) 'p1 'p2)
    (mapcar  '(lambda (a b ) (* 0.5 (+ a b )))
    (setq p1 (vlax-safearray->list p1)) (setq p2(vlax-safearray->list p2)))
    (setq x1 (car p1) x2 (car p2) y1 (cadr p1) y2 (cadr p2) y1_tmp (round+ y1 dis) x1_tmp (round+ x1 dis))
    ;;; DoX
    (while (< y1_tmp y2)
        (setq objLine (ST:Entmake-Line (list x1 y1_tmp) (list x2 y1_tmp)))
        (setq y1_tmp (+ y1_tmp dis)
            lstInter (ST:Ent-IntersObj (entlast) e)
            lstInter (vl-sort lstInter '(lambda (x y) (< (car x)(car y))))
            1st  (car lstInter)
                2nd  (cadr lstInter)
        )
        ;Trai
        (ST:Entmake-Line 1st (mapcar '- 1st (list (* 2 rau) 0 0)))
          (wtxt (substr (rtos (cadr 1st) 2 0) 1 4) (list (- (+ (car 1st) (* 1.5 WithLine)) (* 2 rau)) (+ (cadr 1st) (/ rau 10))) tHeight 0 "L")
          (wtxt  (substr (rtos (cadr 1st) 2 0) 5) (list (- (car 1st) (/ rau 10)) (- (cadr 1st) (/ rau 10)))  (/ (* 2.1 tHeight) 1.7) 0 "TR")
        ;Phai
        (ST:Entmake-Line 2nd (mapcar '+ 2nd (list (* 2 rau) 0 0)))
          (wtxt (substr (rtos (cadr 2nd) 2 0) 1 4) (list (+ (car 2nd) (/ rau 10)) (+ (cadr 2nd) (/ rau 10))) tHeight 0 "L")
          (wtxt  (substr (rtos (cadr 2nd) 2 0) 5) (list (+ (- (car 2nd) (* 1.5 WithLine)) (* 2 rau)) (-  (cadr 2nd)  (/ rau 10)))  (/ (* 2.1 tHeight) 1.7) 0 "TR")
     
        (ST:GGBP (car lstInter) (cadr lstInter) dis len_per)                
        (entdel objLine)
    )
    (ST:Entmake-Line P11 (list (- (car P11) (* 2 rau)) (cadr P11)))
    (ST:Entmake-Line P11 (list (car P11) (- (cadr P11) (* 2 rau)) ))
    
    (ST:Entmake-Line P22 (list (+ (car P22) (* 2 rau)) (cadr P22)))
    (ST:Entmake-Line P22 (list (car P22) (- (cadr P22) (* 2 rau)) ))
    
    (ST:Entmake-Line P4 (list (+ (car P4) (* 2 rau)) (cadr P4)))
    (ST:Entmake-Line P4 (list (car P4) (+ (cadr P4) (* 2 rau))))
    
    (ST:Entmake-Line P3 (list (- (car P3) (* 2 rau)) (cadr P3)))
    (ST:Entmake-Line P3 (list (car P3) (+ (cadr P3) (* 2 rau)) ))
    
    
    (setvar "CECOLOR" "bylayer")
    (command "rectangle" "w" WithLine (list (- (car P11) (* 2 rau)) (- (cadr P11) (* 2 rau))) (list (+ (car P4) (* 2 rau)) (+ (cadr P4) (* 2 rau))))
    (setvar "CECOLOR" "256")
        ;;DoY
    (while (< x1_tmp x2)
        (setq objLine (ST:Entmake-Line (list x1_tmp y1)(list x1_tmp y2)))
        (setq x1_tmp (+ x1_tmp dis)
            lstInter (ST:Ent-IntersObj (entlast) e)
            lstInter (vl-sort lstInter '(lambda (x y) (< (cadr x)(cadr y))))
            1st (car lstInter) 2nd (cadr lstInter)
            )
        ;Duoi
        (ST:Entmake-Line 1st (mapcar '- 1st (list 0 (* 2 rau) 0)))
        (wtxt  (substr (rtos (car 1st) 2 0) 1 3) (list (- (car 1st) (/ rau 10)) (+  (- (cadr 1st) rau) (/ rau 10))) tHeight 0 "TR")
        (wtxt  (substr (rtos (car 1st) 2 0) 4) (list (+ (car 1st) (/ rau 10)) (+  (- (cadr 1st) rau) (/ rau 10)))  (/ (* 2.1 tHeight) 1.7) 0 "TL")
     
        ;Tren
        (ST:Entmake-Line 2nd (mapcar '+ 2nd (list 0 (* 2 rau) 0 )))
        (wtxt  (substr (rtos (car 2nd) 2 0) 1 3) (list (- (car 2nd) (/ rau 10)) (+  (+ (cadr 2nd) rau) (* 2 (/ rau 10)))) tHeight 0 "TR")
        (wtxt  (substr (rtos (car 2nd) 2 0) 4) (list (+ (car 2nd) (/ rau 10)) (+  (+ (cadr 2nd) rau) (* 2 (/ rau 10))))  (/ (* 2.1 tHeight) 1.7) 0 "TL")
     
        (entdel objLine)
    )
    (princ)
    
       (command "-LAYER" "S" "0" "")
       (command "RECTANG" "W" "0" ^C)
    
    )
    
    
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defun dinhhcn (P Cdai CCao / ) ;Dinh hinh chu nhat
    (setq P2 (Polar P 0 Cdai))
    (setq P4 (Polar P (/ pi 2) CCao))
    (setq P3 (Polar P4 0 Cdai))
    (setq DHV (list P P2 P3 P4 P))
    DHV
    )
    
    (Defun RTD(x) (/ (* x 180) pi) )
    (defun round+ (num prec)
        (if (< 0 prec)
            (* prec
                 (if (minusp (setq num (/ num prec)))
                     (fix num)
                     (if (= num (fix num))
                         num
                         (fix (1+ num))
                     )
                 )
            )
        num
        )
    )
    
    (defun ST:Entmake-Point (pt Len / lstEn)
        (append (list (ST:Entmake-Line (mapcar '- pt (list (/ len 2) 0 0))(mapcar '+ pt (list (/ len 2) 0 0))))
        (list (ST:Entmake-Line (mapcar '- pt (list 0 (/ len 2)  0))(mapcar '+ pt  (list 0 (/ len 2)  0)))))
    )
    (defun ST:Entmake-Line (p1 p2)(entmakex (list (cons 0 "LINE")(cons 10 p1)(cons 11 p2))))
    (defun ST:Ent-IntersObj (e1 e2  / ob1 ob2 g L i kq)
    (setq
        ob1 (vlax-ename->vla-object e1)
        ob2 (vlax-ename->vla-object e2)
    )    
    (setq g (vlax-variant-value (vla-IntersectWith ob1 ob2 acExtendNone)))
    (if (/= (vlax-safearray-get-u-bound g 1) -1) (setq L (vlax-safearray->list g)))
    (setq i 0)
    (repeat (/ (length L) 3)
        (setq kq (append (list (list (nth i L) (nth (+ i 1) L) (nth (+ i 2) L))) kq))
        (setq i (+ i 3))
    )
    kq
    )
    (defun ST:GGBP (p1 p2 dis len_perLine / x1) ;trai -> phai
            (setq x1 (round+ (car p1) dis))
            (while (< x1 (car p2))
                (ST:Entmake-Point  (list  x1 (cadr p1))    len_perLine)
                (setq x1 (+ x1 dis)))
    )
    
    (defun wtxt (string Point Height Ang justify / Lst)
     (setq Lst (list '(0 . "TEXT")
       (cons 8 (if Layer Layer (getvar "Clayer")))
       (cons 62 (if Color Color 256))
       (cons 10 point)
       (cons 40 Height)
       (cons 1 string)
       (if Ang (cons 50 Ang))
       (cons 7 (if Style Style (getvar "Textstyle"))))
      justify (strcase justify))
     (cond ((= justify "C") (setq Lst (append Lst (list (cons 72 1) (cons 11 point)))))
                   ((= justify "L") (setq Lst (append Lst (list (cons 72 0)(cons 73 0) (cons 10 point)))))
                ((= justify "R") (setq Lst (append Lst (list (cons 72 2) (cons 11 point)))))
                ((= justify "M") (setq Lst (append Lst (list (cons 72 4) (cons 11 point)))))
                ((= justify "TL") (setq Lst (append Lst (list (cons 72 0) (cons 11 point) (cons 73 3)))))
                ((= justify "TC") (setq Lst (append Lst (list (cons 72 1) (cons 11 point) (cons 73 3)))))
                ((= justify "TR") (setq Lst (append Lst (list (cons 72 2) (cons 11 point) (cons 73 3)))))   
                ((= justify "ML") (setq Lst (append Lst (list (cons 72 0) (cons 11 point) (cons 73 2)))))
                ((= justify "MC") (setq Lst (append Lst (list (cons 72 1) (cons 11 point) (cons 73 2)))))
                ((= justify "MR") (setq Lst (append Lst (list (cons 72 2) (cons 11 point) (cons 73 2)))))
                ((= justify "BL") (setq Lst (append Lst (list (cons 72 0) (cons 11 point) (cons 73 1)))))
                ((= justify "BC") (setq Lst (append Lst (list (cons 72 1) (cons 11 point) (cons 73 1)))))
                ((= justify "BR") (setq Lst (append Lst (list (cons 72 2) (cons 11 point) (cons 73 1))))))
     (entmake Lst)
    )
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

     


  2. 20 phút trước, Doan Van Ha đã nói:

    Lisp này không viết theo kiểu ssget được đâu (hoặc nếu được cũng xét điều kiện rất khổ).
    Cách đơn giản để không vơ đũa cả nắm là pick từng line/pline.

    Liệu có thể "vơ" 2 thằng '1', '2' cùng với thằng '4' vừa tạo ra để nối với nhau được không ạ?

    Nếu Fastsel mà dùng được trong lisp thì hay quá.


  3. 14 phút trước, alisp đã nói:

    Sửa dùm bạn.

    cadvietlisp.lsp

    Dạ, em cảm ơn anh rất nhiều!

    Lisp này gần như giải quyết được yêu cầu của em. Chỉ còn 1 điều là 1 vài trường hợp nó nối lung tung (như cmt trên em có nói).

    Ví dụ như hình: Em chỉ muốn nối '1' - '4' - '2' nhưng nó kéo theo cả '3' vào do 3 "dính" với '2'

     

    Untitled.png


  4. Về cái lisp em nhờ các anh viết. Em cũng từng cố tự giải quyết, nhưng không được như ý muốn nên mới đành phiền các anh.

    Ví dụ: 

    (defun  c:test ()
    (setq oldcmd (getvar "cmdecho"))
    (setq oldos (getvar "osmode"))
    (setvar "cmdecho" 0)
    
    (setvar "osmode" 3073)
    (setq p1 (getpoint "\nFirst point")
            p2 (getpoint p1"\nSecond point"))
    (setvar "osmode" oldos)
    (command "pline" p1 p2 "")
    
    (command "pedit" pause "join" "all" "" "")
    (setvar "cmdecho" oldcmd)
    (princ)
    )

    Nhược điểm của nó là sau khi vẽ được line cần vẽ thì phải chọn "line nguồn" để nối với các line còn lại.

    Thêm nữa là nó nối tất cả những line (pline) chạm vào line nguồn (chỗ này em cũng không biết diễn đạt thế nào cho đúng, chắc nhìn là các anh hiểu).

    Em cũng nghĩ đến FASTSEL để chọn những line chạm vào line mới tạo để nối 3 line với nhau nhưng FASTSEL không phải lệnh của CAD nên lisp không nhận. Và giả sử có giải quyết được vấn đề này thì vẫn không thể đạt được yêu cầu như #1.

    Nhưng cũng rất mong các anh góp ý.

    Em cảm ơn nhiều ạ!

    PS: Em có nói ở trên, trước em tập tẹ học lisp nhưng do nhu cầu không dùng mấy nên bỏ dở, mong các anh đừng chê cười.


  5. 1 giờ} trướ}c, gia_bach đã nói:

    Tôi bổ sung thêm 2 nguyên nhân :

    - do đã có các lisp tương tự trên diễn đàn này.

    - do người yêu cầu viết ko rõ ràng, cứ phải chạy theo "xin" số liệu, có t/hợp y/cầu thay đổi hoàn toàn so với trước đó.

    (cứ nhắc đi nhắc lại bài "Viết yêu cầu và trả lời như thế nào?" cũng chán)

    Dạ, thực ra nhiều lúc người yêu cầu không hiểu lisp hoạt động như thế nào (nó có thể làm được những gì, trình tự ra sao...) nên yêu cầu khó mà rõ ràng ngay được ạ.

    Như em, khi nhờ các anh viết lisp đều cố diễn đạt thật rõ ràng nhưng các anh vẫn phải hỏi lại.


  6. 51 phút trước, alisp đã nói:

    Nhiều khi tôi cũng nghĩ vui là thu nhập do bán lisp có lẽ không bằng với nghề lượm ve chai đâu bạn!

    Em cũng nghĩ thế. Nhất là chỉ bán được cho 1 người duy nhất. Nếu viết 1 lisp phổ thông rồi đăng lên các diễn đàn, group... để bán thì lại là chuyện khác.


  7. 8 phút trước, DungNguyen685 đã nói:

    Đã cần cho công việc thì cũng để đi kiếm tiền thì bỏ phí ra cho nhanh, còn lên chờ đợi như này thì biết bao giờ. 


    Với mình xin góp ý:
    Bạn biết làm thủ công mất nhiều tgian, thì người viết lisp họ cũng phải mất tgian viết chứ có biến ra được đâu. 
    Họ đã có ý giúp đỡ chỉ “bát bún bò” mà không trả lời cmt là thiếu lịch sự.(nếu bạn không cmt mà ib trực tiếp rồi thì mình xin rút lại cmt này)

    Em cũng chẳng biết nói sao nữa. Em cũng tham gia diễn đàn từ lâu, từ ngày mới đi học.

    Ngày đó, khi mới dùng CAD, em cũng hay vào hỏi linh tinh, nhờ cái nọ, cái kia. Hồi đó các anh trên diễn đàn rất nhiệt tình, giúp đỡ rất vô tư theo kiểu lấy đó làm niềm vui. Em cũng bắt đầu học viết lisp nhưng vì nhu cầu công việc không cần nhiều nên bỏ dở. Giờ chỉ thỉnh thoảng vào hỏi khi cần.

    Em công nhận là em rất bất lịch sự khi không trả lời cmt của anh LuytBui. Nhưng không phải em không biết quý trọng thời gian hay công sức của người khác. Hiện tại em đang dùng khá nhiều phần mềm hoặc công cụ bản quyền dù có rất nhiều lựa chọn free hay crack.

    Có lẽ tại em thấy không quen vì giờ diễn đàn hình như cái gì cũng quy ra... cơm gạo.

    Có thể anh thấy... buồn cười, nhưng thực sự là em cảm thấy thế.

    Có gì sai mong anh chỉ bảo thêm!

    PS: Em cũng định ib anh quocmanh04tt vì chưa hiểu ý anh sao lại đăng đoạn clip lên mà không nói gì thêm. Nhưng anh nói thế này thì ib cũng hơi... ngượng.

    • Vote tăng 2

  8. 16 giờ trước, hungmining đã nói:

    Của anh nghe thì rất dễ, nhưng thực ra lại hơi khó. Hiện nay có lisp nối tương tự như trên. Nhưng yêu cầu của bạn nói không rõ là nối từ đâu. 

    Anh có thể cho em xin lisp đó được không ạ?

    Còn nối từ đâu thì em có nói ở trên rồi mà anh: "Đầu được nối là 2 đầu gần nhau của 2 Pline (Line) được chọn (nếu được thì là 2 đầu nằm trong vùng chọn hoặc đầu gần điểm pick chọn thì tốt ạ)."

    • Vote tăng 1

  9. Cảm ơn các anh vì đã đọc bài ạ!

    Xin nhờ các anh viết giúp em 1 lisp với nội dung là vẽ 1 Pline nối 2 đầu của 2 Pline (hoặc Line) được chọn. Sau khi vẽ được Pline cần vẽ thì nối 3 đối tượng thành 1 Pline.

    Layer của Pline cuối cùng là layer của Pline (Line) đầu tiên được chọn. Cách chọn đối tượng là pick hoặc quét chọn. Đầu được nối là 2 đầu gần nhau của 2 Pline (Line) được chọn (nếu được thì là 2 đầu nằm trong vùng chọn hoặc đầu gần điểm pick chọn thì tốt ạ).

    Em hay phải xử lý bản vẽ chuyển từ định dạng khác sang CAD nên rất hay phải nối kiểu này và mất rất nhiều thời gian.

    Rất mong các anh giúp đỡ ạ.

    Em cảm ơn rất nhiều!


  10. 16 phút trước, Danh Cong đã nói:

     

    + Sao đường dẫn thư mục của bạn này lại dài loằng ngoằng thế  :)))))

    Tôi tưởng nó gọn thế này thôi @@: C:\Windows\Fonts

    +Font .TTF là font dành cho Win. Nên việc copy vào trong font cad thì cũng .... hơi thừa thì phải .

    Font.png

    Dạ, nó vẫn thế thôi ạ. Nhưng tại em tìm trong ô Search box của win10 nó ra thế. Chứ nó vẫn nằm trong folder Font trong ổ C mà anh.

    Capture.PNG


  11. Em đang bị lỗi là không tạo được Text Style khi dùng lệnh -STyle đối với font TCVN3.

    Nếu tạo TextStyle trong bảng Text Style (lệnh ST) thì được. Nhưng tạo bằng lệnh -Style lại không được. CAD báo lỗi font không tồn tại (Font file doesn't exist).
    Hệ quả là một số lisp về text không chạy được.
    Em dùng win10 1809. CAD 2007 và 2015 đều bị. Trước dùng win10 1803 thì không sao (cùng folder font luôn). Word, Excel dùng bình thường.

    Nhờ các anh chỉ giúp ạ. Em cảm ơn nhiều!

    2.PNG

    1.PNG


  12. đã có ai trong lúc vẽ cad mà chẳng may kéo thanh trượt của chuột  và lạc mất bản vẽ của mình chưa

    trong trường hợp đó chúng ta phải tìm lại ntn

    Sao lại vào topic mẹo CAD để thắc mắc vấn đề này thế bạn? Bạn nên search trước rồi hãy hỏi, nếu không muốn ăn gạch.

    Về câu hỏi của bạn: gõ Z >>> enter >>> E >>> enter. (hoặc double click chuột giữa).


  13. bỏ nova đi bạn ơi ! dùng ads civi trial cho đơn giản.

    cai rất nhẹ nhàng, không cần lăn tăn. xp hay win 7 cài rất dễ, next và next

    Mình làm bên thiết kế mỏ. Dùng Nova chỉ để chạy mỗi đường (sao cho ra hình dáng và tính được khối lượng. :) ). Nhưng có lẽ cũng phải tìm 1 phần mềm khác thay thế. Nova bẻ khóa hay lỗi vặt quá.

    Mình vừa lướt 1 vòng Google để tìm hiểu về ADS Civil. Tải và cài ngay lập tức.  :)


  14. Chào các bác!

    Như cái tiêu đề. 2 ngày nay em hì hục với công việc mà trước kia em thấy nó tương đối nhẹ nhàng: cài NOVA cho win7 32bit.

    Những lần trước cài là được, còn lần này thì cài mãi mới được. Nhưng sau khi cài xong thì chỉ chạy được 1 lần. Hoặc là báo lỗi khi đang chạy, hoặc sau tắt đi bật lại thì CAD không load menu của NOVA (bình thường khi khởi động, dòng command thường báo đã load thành công menu của NOVA).

    Em đã gỡ ra cài lại nhiều lần, bung ghost - cài lại NOVA (down lại cả NOVA luôn), và bung ghost có chứa sẵn bản NOVA vẫn dùng từ trước đến nay nhưng vẫn không thành công.

    Không biết do cái gì nữa. Mong các bác chỉ giáo.

    Ah! Trước khi bị tình trạng máy em có dính con acaddoc. Không biết có phải do virus không?

    Ah 2! Thử gỡ CAD 2005 ra cài lại thì sau khi cài xong có thông báo: .NET Runtime Optimization Sevice has Stopped working. Hự! Sao CAD vẫn chạy ngon nhỉ??? Tự thấy mình gà quá! Mong các bác sớm giải đáp!!!


  15. 1-  Xét về phong thủy, giá sách chênh vênh làm bằng gỗ đã gây tâm lý bất an cho người sử dụng rồi >>>Làm bằng thép thì lại càng khủng ...bố hơn.  >>> Trọng lượng của giá gỗ nặng hay nhẹ không ảnh hưởng đến trạng thái cân bằng không bị đổ vỡ của giá sách, anh ạ!

    2- Việc tính toán cân bằng cho bài toán trên rất đơn giản . Nếu không biết vẽ 3D trên AutoCAD có thể tính toán được dựa trên lý thuyết vật lý phổ thông trung học, nếu quên kiến thức phổ thông có thể sử dụng kiến thứcmôn học Cơ học lý thuyết và Sức bền vật liệu...

    3- Làm cho giá sách đứng yên khi xếp sách vào dễ hơn là làm cho nó động đậy, anh hãy đọc kỹ bài Spam số #4 của chị Song Nhi và suy ngẫm xem sao???

     

    - Theo mình thì người làm ra sản phẩm này có lẽ không để ý gì tới phong thủy nên mình nghĩ làm bằng kim loại hay gỗ thì chẳng có gì khác nhau. Tất nhiên với 1 giá sách thì khả năng làm bằng gỗ sẽ cao hơn, hơn nữa với cái giá tính bằng nghìn $ thì khả năng làm bằng kim loại lại càng thấp. Nhưng cũng không thể loại trừ khả năng nó làm bằng kim loại phải không ạ (hay chí ít cũng có 1 vài chỗ có dính dáng đến kim loại)?

    - Đối với mình thì cái giá sách kia cân bằng được là vì trọng tâm của nó luôn "rơi" vào cái mặt tiếp xúc của tầng cuối cùng với mặt đất. Bạn mang nhiều kiến thức vào đây quá, mình sao hấp thụ được.  :)

    - Cái giá sách này độc (và đắt) ở chỗ các tầng được gắn với nhau như hoàn toàn vô tình, hoàn toàn ngầu nhiên, chẳng theo 1 quy luật hay sự sắp xếp có chủ đích nào. Và với cái sự độc này của nó, THÁCH ai có thể làm cho nó đứng yên khi xếp sách vào.  :)

    PS: tranh luận vui.

×