Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
nguyenkienAgr

[nhờ viết lisp] Paste đối tượng giữ nguyên tọa độ gốc

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

Chào các bạn, 

Bình thường mình muốn paste 1 đối tượng (line chẳng hạn) từ 1 bản vẽ sang 1 bản vẽ khác mà muốn giữ nguyên tọa độ như file gốc thì mình click phải chuột  -> chọn Clipboard -> chọn Paste to Original Coordinates.

Nhưng mất nhiều thao tác quá, với lại mình không muốn sử dụng menu phải chuột. Vậy nên mình nhờ các bạn thạo lisp viết giúp 1 mã paste từ clipboard giữ nguyên tọa độ gốc.

Cám ơn các bạn ạ.

 

Screenshot 2024-03-21 091824.png

  • Vote giảm 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

Không thích dusncgf chuột phải thì bạn copy tại điểm gốc: 0,0,0 và paste sang bảng vẽ kia tại điểm đó 0,0,0

  • 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

Bạn thử cái này xem:

;Copy voi diem goc 0,0
(defun C:cb ( / OTHO SNAP SS)
  (setvar "CMDECHO" 0)
  (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  (setq ss (ssget))
  (setq snap (getvar "OSMODE"))
  (setq otho (getvar "ORTHOMODE"))
  (setvar "OSMODE" 0)
  (setvar "ORTHOMODE" 0)
  (command "COPYBASE" '(0 0) ss "")
  (setvar "OSMODE" snap)
  (setvar "ORTHOMODE" otho)
  (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
  (princ)
  )

;Paste voi diem goc 0,0
(defun C:vb ( / OTHO SNAP)
  (setvar "CMDECHO" 0)
  (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  (setq snap (getvar "OSMODE"))
  (setq otho (getvar "ORTHOMODE"))
  (setvar "OSMODE" 0)
  (setvar "ORTHOMODE" 0)
  (command "PASTECLIP" '(0 0))
  (setvar "OSMODE" snap)
  (setvar "ORTHOMODE" otho)
  (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
  (princ)
  )

;Paste as block voi diem goc 0,0
(defun C:vbb ( / OTHO SNAP)
  (setvar "CMDECHO" 0)
  (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  (setq snap (getvar "OSMODE"))
  (setq otho (getvar "ORTHOMODE"))
  (setvar "OSMODE" 0)
  (setvar "ORTHOMODE" 0)
  (command "PASTEBLOCK" '(0 0))
  (setvar "OSMODE" snap)
  (setvar "ORTHOMODE" otho)
  (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
  (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
Vào lúc 21/3/2024 tại 10:04, limfx đã nói:

Không thích dusncgf chuột phải thì bạn copy tại điểm gốc: 0,0,0 và paste sang bảng vẽ kia tại điểm đó 0,0,0

Cách này cũng rất hay. Cám ơn bạn nhiều!

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 21/3/2024 tại 11:14, Duong Nhat Duy đã nói:

Bạn thử cái này xem:


;Copy voi diem goc 0,0
(defun C:cb ( / OTHO SNAP SS)
  (setvar "CMDECHO" 0)
  (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  (setq ss (ssget))
  (setq snap (getvar "OSMODE"))
  (setq otho (getvar "ORTHOMODE"))
  (setvar "OSMODE" 0)
  (setvar "ORTHOMODE" 0)
  (command "COPYBASE" '(0 0) ss "")
  (setvar "OSMODE" snap)
  (setvar "ORTHOMODE" otho)
  (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
  (princ)
  )

;Paste voi diem goc 0,0
(defun C:vb ( / OTHO SNAP)
  (setvar "CMDECHO" 0)
  (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  (setq snap (getvar "OSMODE"))
  (setq otho (getvar "ORTHOMODE"))
  (setvar "OSMODE" 0)
  (setvar "ORTHOMODE" 0)
  (command "PASTECLIP" '(0 0))
  (setvar "OSMODE" snap)
  (setvar "ORTHOMODE" otho)
  (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
  (princ)
  )

;Paste as block voi diem goc 0,0
(defun C:vbb ( / OTHO SNAP)
  (setvar "CMDECHO" 0)
  (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  (setq snap (getvar "OSMODE"))
  (setq otho (getvar "ORTHOMODE"))
  (setvar "OSMODE" 0)
  (setvar "ORTHOMODE" 0)
  (command "PASTEBLOCK" '(0 0))
  (setvar "OSMODE" snap)
  (setvar "ORTHOMODE" otho)
  (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
  (princ)
  )

 

Cám ơn bạn đã bỏ thời gian code giúp mì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
Vào lúc 21/3/2024 tại 11:14, Duong Nhat Duy đã nói:

Bạn thử cái này xem:


;Copy voi diem goc 0,0
(defun C:cb ( / OTHO SNAP SS)
  (setvar "CMDECHO" 0)
  (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  (setq ss (ssget))
  (setq snap (getvar "OSMODE"))
  (setq otho (getvar "ORTHOMODE"))
  (setvar "OSMODE" 0)
  (setvar "ORTHOMODE" 0)
  (command "COPYBASE" '(0 0) ss "")
  (setvar "OSMODE" snap)
  (setvar "ORTHOMODE" otho)
  (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
  (princ)
  )

;Paste voi diem goc 0,0
(defun C:vb ( / OTHO SNAP)
  (setvar "CMDECHO" 0)
  (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  (setq snap (getvar "OSMODE"))
  (setq otho (getvar "ORTHOMODE"))
  (setvar "OSMODE" 0)
  (setvar "ORTHOMODE" 0)
  (command "PASTECLIP" '(0 0))
  (setvar "OSMODE" snap)
  (setvar "ORTHOMODE" otho)
  (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
  (princ)
  )

;Paste as block voi diem goc 0,0
(defun C:vbb ( / OTHO SNAP)
  (setvar "CMDECHO" 0)
  (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  (setq snap (getvar "OSMODE"))
  (setq otho (getvar "ORTHOMODE"))
  (setvar "OSMODE" 0)
  (setvar "ORTHOMODE" 0)
  (command "PASTEBLOCK" '(0 0))
  (setvar "OSMODE" snap)
  (setvar "ORTHOMODE" otho)
  (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
  (princ)
  )

 

cho em hỏi nhập lệnh gì vậy anh?

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 giờ trước, phananhtien88 đã nói:

cho em hỏi nhập lệnh gì vậy anh?

Tên lệnh là CB VB VBB, tác dụng thì mình ghi chú trong đó r bạn. CAD10 ngày xưa mình dùng nó cũng hay bị lỗi cái này, tốt nhất dùng cad cao hơn đi b, máy yếu thì dùng 16 18, khỏe hơn thì dùng hẳn 25 30 :))

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 có 2 tuỳ chọn copy Ctrl+C và Ctrl+Shift+C để paste, hãy hiểu để sử dụng hợp lý.

1. Ctrl+Shift+C (copybase): lúc này phải chọn base point trước selection.

2. Ctrl+C (copyclip): base point của copyclip được ngầm định là Lower Left của selection. 

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
Đăng nhập để thực hiện theo  

×