Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
hoanghi

Lisp copy nhanh đối tượng theo nhiều khoảng cách

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

hoanghi    0

Mình đang vẽ các lỗ bulông trên mặt thép nhưng copy rất lâu. Có bạn nào có cách nào vẽ nhanh hơn không ? Hoặc viết hộ dùm mình cái lisp là chọn đối tượng xong , mỗi lần nhập khoảng cách thì sẽ copy đối tượng đó đến vị trí mới . Các khoảng cách sẽ được tính từ đối tượng vừa mới copy kế nó . Thank 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
Tot77    501

Bạn dùng cái này. Sau khi copy xong nếu bạn dùng lệnh khác mà có select objects thì có thể đánh chữ "P" để lấy các đối tượng cuối cùng.

 

(defun c:cpy(/ ss pt hg os el en)
  (prompt "\nChon cac doi tuong de copy:")
  (setq ss (ssget) 
pt (getpoint "\nDiem goc:")
hg (getangle pt "\nTheo huong:")
os (getvar 'osmode))
  (setvar 'osmode 0)
  (while (setq kc (getreal "\nKhoang cach:"))
    (setq el (entlast))
    (command "copy" ss "" pt (polar pt hg kc))
    (setq ss (ssadd))
    (while (setq en (entnext el))
      (ssadd en ss)
      (setq el en))
  ) 
  (command "select" ss "")
  (setvar 'osmode os) (princ)
)
  • Vote tăng 4

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 cái này. Sau khi copy xong nếu bạn dùng lệnh khác mà có select objects thì có thể đánh chữ "P" để lấy các đối tượng cuối cùng.

 

(defun c:cpy(/ ss pt hg os el en)
  (prompt "\nChon cac doi tuong de copy:")
  (setq ss (ssget) 
pt (getpoint "\nDiem goc:")
hg (getangle pt "\nTheo huong:")
os (getvar 'osmode))
  (setvar 'osmode 0)
  (while (setq kc (getreal "\nKhoang cach:"))
    (setq el (entlast))
    (command "copy" ss "" pt (polar pt hg kc))
    (setq ss (ssadd))
    (while (setq en (entnext el))
      (ssadd en ss)
      (setq el en))
  ) 
  (command "select" ss "")
  (setvar 'osmode os) (princ)
)

Tot77 ơi, cái này bạn có thể thêm chức năng lưu biến khoảng cách được không? cảm ỏ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
Tot77    501

Lưu biến đây, muốn kết thúc thì bấm Z.

 

(defun c:cpy(/ ss pt hg os el en kc)
  (prompt "\nChon cac doi tuong de copy:")
  (setq ss (ssget)
pt (getpoint "\nDiem goc:")
hg (getangle pt "\nTheo huong:")
tt t
os (getvar 'osmode))
  (setvar 'osmode 0)
  
  (while tt    
    (setq kc (getstring (strcat "\nKhoang cach <"
     (rtos (if (not kcach) (setq kcach 1) kcach)) " / nhan Z de ket thuc>:")))
    (cond ((and (/= kc "") (/= (strcase kc) "Z")) (setq kcach (atof kc)))
 ((= (strcase kc) "Z") (setq tt nil)))    
    (if tt
      (progn
(setq el (entlast))
(command "copy" ss "" pt (polar pt hg kcach))
(setq ss (ssadd))
(while (setq en (entnext el))
 (ssadd en ss)
 (setq el en))
     ) )
  )
  (command "select" ss "")
  (setvar 'osmode os) (princ)
)
 
  • Vote tăng 2

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  

×