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

Đảo lệnh space

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

Chào các bác, 

Em muốn so sánh hai block mặt bằng. 2 block này sẽ nằm đè lên nhau.

Cái em mong muốn là chạy lệnh sẽ xóa 1 block chọn, nhấn phím space là undo để khôi phục, ấn phím space lần nữa là lại xóa, ấn space lần nữa là lại undo, cứ liên tục như vậy. Mục đích là phát hiện những chi tiết nhỏ khác nhau giữa hai block.

 

Quan trọng là lệnh này bỏ qua các lăn chuột zoom pan. Mong các bác giú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

Hình như Autocad có lệnh Compare để so sánh 2 bản vẽ đó.

Tôi thì hay dùng cách phá 1 Block ra rồi đổi toàn bộ sang màu xanh, sau đó đặt chồng lên để so sánh. Re một cái là chỗ nào khác nhận ra luôn. Zoom, pan  tới lui rồi move hoặc chọn lại 1 cái xoá đi thôi. Nếu đang Block thì việc chọn đối tượng càng dễ. Nếu không block thì Select rồi chọn "p" để chọn lại đối tượng trước đó 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
1 giờ} trướ}c, vietduc147258 đã nói:

Hình như Autocad có lệnh Compare để so sánh 2 bản vẽ đó.

Tôi thì hay dùng cách phá 1 Block ra rồi đổi toàn bộ sang màu xanh, sau đó đặt chồng lên để so sánh. Re một cái là chỗ nào khác nhận ra luôn. Zoom, pan  tới lui rồi move hoặc chọn lại 1 cái xoá đi thôi. Nếu đang Block thì việc chọn đối tượng càng dễ. Nếu không block thì Select rồi chọn "p" để chọn lại đối tượng trước đó thôi

 

Đúng rồi bạn, chính xác là chồng lên nhau, đổi màu để so sánh. Vì vậy nên tớ mới cần thêm thủ thuật xoá rồi undo để phát hiện những khu vực nhỏ đó 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

Bạn dùng thử cái này xem nhé.
 

(vl-load-com)

(defun oddp (n) (and (numberp n) (= (rem n 2) 1)))

(defun c:DelUndo ( / ent ev key toggles done oldcmdecho)
  (setq oldcmdecho (getvar "CMDECHO"))
  (setvar "CMDECHO" 0)
  (setq toggles 0)

  (defun *error* (msg)
    (if oldcmdecho (setvar "CMDECHO" oldcmdecho))
    (if (and (eq (type ent) 'ENAME) (oddp toggles)) (entdel ent))
    (if (and msg (not (wcmatch (strcase msg) "*CANCEL*,*QUIT*")))
      (princ (strcat "\nLoi: " msg))
    )
    (princ)
  )

  (princ "\nChon block/doi tuong de nhay (ESC huy): ")
  (setq ent (car (entsel)))

  (if ent
    (progn
      (setq done nil)
      (princ "\nSpace/Enter = an/hien luan phien; zoom/pan tu do; ESC = ket thuc.")
      (while (not done)
        (setq ev (grread T 13 0))
        (cond
          ((= (car ev) 2)
           (setq key (cadr ev))
           (cond
             ((= key 27) (setq done T))
             ((or (= key 32) (= key 13))
              (if (eq (type ent) 'ENAME)
                (progn (entdel ent) (setq toggles (1+ toggles)))
              )
             )
           )
          )
        )
      )
      (if (oddp toggles) (entdel ent))
      (princ "\nDa dung. Doi tuong da HIEN lai.")
    )
    (princ "\nKhong chon gi. Ket thuc.")
  )

  (setvar "CMDECHO" oldcmdecho)
  (princ)
)
 

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
5 giờ trước, Tap.Ve.Cad đã nói:

Bạn dùng thử cái này xem nhé.
 

(vl-load-com)

(defun oddp (n) (and (numberp n) (= (rem n 2) 1)))

(defun c:DelUndo ( / ent ev key toggles done oldcmdecho)
  (setq oldcmdecho (getvar "CMDECHO"))
  (setvar "CMDECHO" 0)
  (setq toggles 0)

  (defun *error* (msg)
    (if oldcmdecho (setvar "CMDECHO" oldcmdecho))
    (if (and (eq (type ent) 'ENAME) (oddp toggles)) (entdel ent))
    (if (and msg (not (wcmatch (strcase msg) "*CANCEL*,*QUIT*")))
      (princ (strcat "\nLoi: " msg))
    )
    (princ)
  )

  (princ "\nChon block/doi tuong de nhay (ESC huy): ")
  (setq ent (car (entsel)))

  (if ent
    (progn
      (setq done nil)
      (princ "\nSpace/Enter = an/hien luan phien; zoom/pan tu do; ESC = ket thuc.")
      (while (not done)
        (setq ev (grread T 13 0))
        (cond
          ((= (car ev) 2)
           (setq key (cadr ev))
           (cond
             ((= key 27) (setq done T))
             ((or (= key 32) (= key 13))
              (if (eq (type ent) 'ENAME)
                (progn (entdel ent) (setq toggles (1+ toggles)))
              )
             )
           )
          )
        )
      )
      (if (oddp toggles) (entdel ent))
      (princ "\nDa dung. Doi tuong da HIEN lai.")
    )
    (princ "\nKhong chon gi. Ket thuc.")
  )

  (setvar "CMDECHO" oldcmdecho)
  (princ)
)
 

Hay quá, quá tiện luôn bạn ơi. Cảm ơn bạn 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
2 giờ trước, cuongtk2 đã nói:

Chỉ cần hide object rồi show lại là được thôi mà.

Thì có nhiều cách mà em chỉ quen xoá rồi undo nên bó buộc trong cách làm ấ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

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

×