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.
quantvxd

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

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

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

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


(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/lisp/gifs/GrText6.gif

  • Vote tăng 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

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


×