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

7o7

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

    214
  • Đã tham gia

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

  • Ngày trúng

    26

Bài đăng được đăng bởi 7o7


  1. 2 giờ trước, Anh Phan đã nói:

    Mình có một bản vẽ về xây dựng khi sử dụng app CADreader trên điện thoại thì có thể xem bình thường nhưng khi sử dụng Autocad16 để thao tác thì không thể hiện Dim kích thước và cả Text thuyết minh toàn bộ bản vẽ, xin mọi người hỗ trợ tư vấn và giúp đỡ! Xin cảm ơn!

    BY2202连铸基础图(李宏权发中昊20220429).dwg

    Bản vẽ này có >2k đtg loại acad_proxy không nhìn thấy được, bạn thử saveas file gốc sang dxf xem sao.


  2. Bạn mới học lisp mà đã viết kiểu đệ qui rồi. Đệ qui nếu làm không khéo dễ tạo vòng lặp dài vô tận, đó là lỗi bạn gặp phải.

    Tôi có cách viết đơn giản hơn dùng repeat.

    (defun tdd (x / S KQ) 
    	(setq s x
    				kq 0)
    	(repeat s
    		 (setq kq (if (= (rem x 2) 0) (+ kq x) (- kq x))
    					 x (1- x))
    	) kq
    )

     


  3. 16 giờ trước, quocmanh04tt đã nói:

    Mình đi theo hướng như đã nói ở trên.

    
    (defun c:tt  (/ blc cen ent llp mid obj ss1 ss2 urp)
      (if (setq ss1 (ssget '((0 . "INSERT") (2 . "N_THUA_*"))))
        (while (and (setq ent (ssname ss1 0)) (ssdel ent ss1))
          (vla-getboundingbox (setq obj (vlax-ename->vla-object ent)) 'llp 'urp)
          (setq llp (vlax-safearray->list llp)
                urp (vlax-safearray->list urp)
                mid (mapcar '(lambda (m n) (* (+ m n) 0.5)) llp urp)
                cen nil)
          (cond ((setq ss2 (ssget "C" llp urp '((0 . "INSERT") (2 . "CENTRD_1"))))
                 (while (and (setq blc (ssname ss2 0)) (ssdel blc ss2))
                   (setq cen (cons (cdr (assoc 10 (entget blc))) cen)))
                 (setq cen (vl-sort cen '(lambda (x y) (< (distance mid x) (distance mid y)))))
                 (vlax-invoke obj 'scaleentity (car cen) 0.01)))))
      (princ))

     

    Tâm boundingbox với điểm chèn block Center cũng có kc chứ chưa hẳn đã trùng, do đó nếu có 2 bl N-Thua cách nhau nhỏ hơn kc đó thì kết quả không còn đúng.


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

    Thứ này có nhiều.

    
    
    (defun c:SCT(/ ci tl n i)
     (prompt "\n Moi ban chon CIRCLE/DONUT/BLOCK")
     (setq ci (ssget '((0 . "CIRCLE,LWPOLYLINE,INSERT"))))
     (setq tl (getreal "\n Nhap ti le scale :") n (sslength ci) i 0)
     (while (< i n)
      (setq ent (ssname ci i))
      (if (= (cdr (assoc 0 (entget ent))) "LWPOLYLINE")
       (command "scale" ent "" (centre ent) tl)
       (command "scale" ent "" (cdr (assoc 10 (entget ent))) tl))
      (setq i (1+ i)))
     (princ))
    
    

     

    Không chạy đúng bác @Doan Van Ha ơi! Điểm chèn của block N_THUA_* nằm tận đâu đâu không scale về đúng chỗ được.


  5. 2 giờ trước, Dang D Khanh đã nói:

    Thông tin trong bản vẽ của bạn khá đặc biệt nên không mất công sức để scale.

    Chỉ cần chọn điểm gốc thu phóng block phù hợp.

    Chỉ số thu phóng cũng chỉ định luôn =0.01 mà không cần tính toán.

    Video Block_scale

    Hàng free nhưng yêu cầu CAD22. Cần liên hệ mình.

    Xem video thì thấy rất ok,  nhưng yêu cầu cad22 thì bị dội ngay, không lẽ phải cài cad mới chỉ để chạy cái prog này? Chắc bác Khanh viết bằng ngôn ngữ không phải lisp, vì lisp cad nào cũng chạy tốt, trừ cad quá cũ < 2004.


  6.   Thớt có vẻ giả nai hơi bị lâu đó. Rõ ràng thớt biết xoá chỗ cần xoá để lisp bị lỗi, td xoá số 0 hay h# 200, hoặc thêm cái cần thêm như getvar ‘textsize .. rồi giờ lại hỏi chiều cao từ 2 điểm!!. Chắc muốn thử tài các đại cao thủ CV thôi chứ gì.

      Nhân tiện cũng xin đề nghị với admin về việc tạo nick mới. Tôi thấy nó quá dễ dãi, ai muốn tạo bao nhiêu cái cũng được, không có số đt hay email kiểm. Việc đó khiến số lượng thành viên tăng nhưng chất lượng giảm khá nhiều, mong admin xét lại cách tạo nick hiện nay.


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

    Nhưng mà mọi người cho em hỏi thêm chút là VD 9344,0405 mm^2 =0,00994m^2.  Đổi ra ha thì sao ạ. Tại em đang làm đồ án mà không hiểu lắm

    Trước hết bạn phải xác định tỷ lệ bản vẽ là bao nhiêu rồi mới tính tiếp diện tích. Giả sử 1/1000 tức là 1mm trong bản vẽ = 1000mm = 1m ngoài thực địa. Khi đó nếu đo được 9344 sẽ là 9344m^2 rồi mới đổi thành hecta.

×