Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
8 replies to this topic

#1 aliosa

aliosa

    biết vẽ polygon

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

Đã gửi 26 February 2014 - 04:03 PM

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)
 

  • 0

#2 haduythanh

haduythanh

    Edu level: ai10, ho9, as3, ps10

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

Đã gửi 26 February 2014 - 05:34 PM

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)

)




  • 1

#3 aliosa

aliosa

    biết vẽ polygon

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

Đã gửi 26 February 2014 - 08:50 PM

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!
  • 0

#4 hoquangvinh

hoquangvinh

    biết lệnh mirror

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

Đã gửi 26 February 2014 - 09:45 PM

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


  • 1

#5 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 26 February 2014 - 10:06 PM

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


  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#6 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 26 February 2014 - 10:15 PM

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


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#7 aliosa

aliosa

    biết vẽ polygon

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

Đã gửi 26 February 2014 - 10:21 PM

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

  • 0

#8 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 27 February 2014 - 06:50 AM

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.


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#9 aliosa

aliosa

    biết vẽ polygon

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

Đã gửi 27 February 2014 - 08:33 AM

Vậy trong tình hống tồn tại biến *i* dạng real thì ta dùng hàm rtos có hợp lý hơn không?


  • 0