Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
5 replies to this topic

#1 hoanghi

hoanghi

    biết pan

  • Members
  • Pip
  • 7 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 09 June 2014 - 02:27 PM

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 ! 


  • 0

#2 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 09 June 2014 - 06:22 PM

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)
)

  • 4

#3 hoanghi

hoanghi

    biết pan

  • Members
  • Pip
  • 7 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 10 June 2014 - 07:47 AM

Thanh bạn nhiều. Dùng rất chi là tiện luôn. :D


  • 0

#4 toiyeuvietnam

toiyeuvietnam

    biết vẽ polygon

  • Members
  • PipPip
  • 78 Bài viết
Điểm đánh giá: -1 (bình thường)

Đã gửi 13 July 2014 - 03:42 AM

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


  • 0

#5 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 13 July 2014 - 11:11 AM

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)
)
 

  • 2

#6 toiyeuvietnam

toiyeuvietnam

    biết vẽ polygon

  • Members
  • PipPip
  • 78 Bài viết
Điểm đánh giá: -1 (bình thường)

Đã gửi 14 July 2014 - 08:08 AM

oh, cảm ơn Tot77 nhiều nhé, làm rất ổn!


  • 0