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  
aliosa

[Yêu cầu] Group các đối tượng bằng lisp

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

aliosa    4

Xin nhờ các bạn trên diễn đàn group các đối tượng trong lisp.
Mình dùng lisp để tạo ra các đối tượng như line, polyline, text... Sau đó mình muốn các đối tượng này được group lại thành một nhóm cho dễ quản lý. Nhưng mình chưa biết cách group các đối được mới tạo ra này bằng lisp, Mình nhờ các bạn giúp mình với.
Ví dụ lisp của mình. 

(Defun c:4p (/ point_1 point_2 point_3 point_4)
 
  (setq point_1 (getpoint "\nCho diem thu nhat :"))
  (setq point_2 (getpoint "\nCho diem thu 2 :"))
  (setq point_3 (getpoint "\nCho diem thu 2 :"))
  (setq point_4 (getpoint "\nCho diem thu 2 :"))
 
  (command "line" point_1 point_2 "")
  (command "line" point_2 point_3 "")
  (command "line" point_3 point_4 "")
  (command "line" point_1 point_4 "")
  (princ)
 

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
haduythanh    6

Không có N++ code chả quen tí nào ^^

Sửa cho bạn đây :

 

(Defun c:4p (/ point_1 point_2 point_3 point_4 e ss)
(or *i* (setq *i* 1))
(setq e (entlast) ss (ssadd))

  (setq point_1 (getpoint "\nCho diem thu nhat :"))

  (setq point_2 (getpoint point_1 "\nCho diem thu 2 :"))

  (setq point_3 (getpoint point_2 "\nCho diem thu 2 :"))

  (setq point_4 (getpoint point_3 "\nCho diem thu 2 :"))

 

  (command "line" "_non" point_1 "_non" point_2 "")

  (command "line" "_non" point_2 "_non" point_3 "")

  (command "line" "_non" point_3 "_non" point_4 "")

  (command "line" "_non" point_1 "_non"point_4 "")
(while (setq e (entnext e))
	(setq ss (ssadd e ss))
)
(command "-group" "c" (itoa (setq *i* (1+ *i*))) "" ss "")

  (princ)

)



  • 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
aliosa    4

Cảm ơn bạn đã giúp. Xin hỏi bạn dòng dưới có phải nếu có *i* rồi thì thôi còn không thì gán bằng 1 không?

(or *i* (setq *i* 1))

Trong trường hợp tạo thành Block cũng tương tự phải không bạn! Thank 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
hoquangvinh    5

Cái này mình thấy hay à, quản lý đơn giản bằng group rất tiện.

Nhưng các bạn phát triển thêm muôn vẽ nhiều đường hoặc nhiều đối tượng hơn line thì ứng dụng của nó rất là tốt đấy. VD này thì cứ là 1 group 4 đường line thôi

  • 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
ketxu    2.649

Cảm ơn bạn đã giúp. Xin hỏi bạn dòng dưới có phải nếu có *i* rồi thì thôi còn không thì gán bằng 1 không?

(or *i* (setq *i* 1))

Trong trường hợp tạo thành Block cũng tương tự phải không bạn! Thank bạn nhiều!

 

Đúng

  • 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
aliosa    4

Xin hỏi có điểm gì là nguy hiển vậy bạn? Mình không chuyên về lisp nên không rõ lắm. Thank bạn!

Bổ sung thêm ý Ket: nhưng rất nguy hiểm!

 

Xin hỏi thêm: Tập e được đặt trước các hàm tạo line với đặt sau các hàm tạo line có khác gì không vậy? Mình nghĩ thì đặt ngay sau câu lệnh tạo đối tượng ở đây lại đặt trước vậy là sao? 

 

setq e (entlast) ss (ssadd))

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
Doan Van Ha    2.676

 

Xin hỏi có điểm gì là nguy hiển vậy bạn? Mình không chuyên về lisp nên không rõ lắm. Thank bạn!

Bổ sung thêm ý Ket: nhưng rất nguy hiểm!

 

Xin hỏi thêm: Tập e được đặt trước các hàm tạo line với đặt sau các hàm tạo line có khác gì không vậy? Mình nghĩ thì đặt ngay sau câu lệnh tạo đối tượng ở đây lại đặt trước vậy là sao? 

 

setq e (entlast) ss (ssadd))

1). Nguy hiểm là nếu có chương trình lisp khác đang sử dụng và gán *i* là 1.5 chẳng hạn thì sẽ lỗi.

2). Trong trường hợp này thì trước và sau là như nhau.

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  

×