Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] viết giúp Lisp copy có Array như Cad đời cao cho Cad 2007


  • Please log in to reply
4 replies to this topic

#1 quantvxd

quantvxd

    biết zoom

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

Đã gửi 17 March 2015 - 03:09 PM

Như yêu cầu: Em muốn nhờ các bác viết giúp em lisp Copy đem lại kết quả giống như lệnh Copy trong Cad đời cao (ví dụ Cad 2012)dành cho khi sử dụng Cad 2007
Cụ thể:
Với cad 2012 khi sử dụng lệnh Copy/ chọn đối tượng + Enter/ chọn điểm đầu tiên p1
thì máy có hỏi chọn điểm thứ 2 hoặc lựa chọn Array (array chính là cái em cần)

Nếu nhập "a" enter thì cad cho phép lựa chọn array đối tượng bằng cách chọn số lượng đối tượng, chọn khoảng cách hoặc Fit

hay nói cách khác cad 2012 đã bổ sung tính năng của lệnh array vào lệnh copy, cái này ở phiên bản 2007 không có
nhờ các bác viết giúp em tính năng này cho cad 2007
Cảm ơn mọi người
  • 0

#2 quansla

quansla

    biết lệnh xclip

  • Members
  • PipPipPipPipPipPipPip
  • 643 Bài viết
Điểm đánh giá: 224 (khá)

Đã gửi 18 March 2015 - 09:37 AM


(defun c:c (/ ss p1 p2 flag Num delta ang *error* )
(defun *error* (msg)
(if msg (progn (setq flag nil) (princ msg)))
(princ))
(princ "\nSelect objects:")
(if (setq ss (ssget))
(progn
(setq p1 (getpoint "\nSpecify base point:"))
(setq flag T)
(while flag
(initget "Array")
(setq p2 (getpoint p1 "\nSpecify second point or [Array] <use first point as displacement>:"))
(cond
((= p2 "Array")
(setq Num (getint "\nEnter number of items to array:"))
(initget "Fit")
(setq p2 (getpoint p1 "\nSpecify second point or [Fit]:"))
(cond
((= (type p2) 'LIST)
(setq delta (distance p1 p2)
ang (angle p1 p2))
)
((= p2 "Fit")
(setq p2 (getpoint p1 "\nSpecify second point or [Exit]:"))
(cond
((= (type p2) 'LIST)
(setq delta (/ (distance p1 p2) (- Num 1))
ang (angle p1 p2)))
(T (exit)))
)
(T (setq flag nil)))
(setq k 0)
(repeat (- Num 1) (command ".copy" ss "" p1 (polar p1 ang (* (setq k (1+ k)) delta))))
)
((= (type p2) 'LIST)
(command ".copy" ss "" p1 p2))
(T (setq flag nil))
)
);end while
))
(princ)
)

Đáp ứng được 70% yêu cầu đề bài.
Bác nào giúp em hoàn thiện nốt lisp hộ cái.
Ví như làm cho nó có chức năng hiển thị trước đối tượng trước khi copy (đối tượng hiển thị này thay đổi theo vị trí chuột khi di chuyển đó, kiểu như vẽ trước đối tượng khi dùng lệnh Scale, nhấp chuột chọn điểm ban đầu rồi khi di chuột (đồng nghĩa thay đổi tỷ lệ Sacale) thì hình thay đổi thay đổi ý
Kiểu như thế này
http://lee-mac.com/l...ifs/GrText6.gif
  • 1

#3 conghoa

conghoa

    biết lệnh attdef

  • Members
  • PipPipPipPipPipPip
  • 412 Bài viết
Điểm đánh giá: 88 (tàm tạm)

Đã gửi 18 March 2015 - 10:03 AM

có phải bạn muốn cái như này

 

http://www.cadviet.c...dynamic-larray/


  • 1

#4 quansla

quansla

    biết lệnh xclip

  • Members
  • PipPipPipPipPipPipPip
  • 643 Bài viết
Điểm đánh giá: 224 (khá)

Đã gửi 18 March 2015 - 01:42 PM

có phải bạn muốn cái như này
 
http://www.cadviet.c...dynamic-larray/

Cảm ơn bác, cảm ơn bác ket để mình tham khảo thêm
  • 0

#5 quantvxd

quantvxd

    biết zoom

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

Đã gửi 19 March 2015 - 08:28 AM

Đáp ứng được 70% yêu cầu đề bài.
Bác nào giúp em hoàn thiện nốt lisp hộ cái.

Cảm ơn bác nhé
  • 0