Đến nội dung


Hình ảnh
- - - - -

[Hỏi]+[Yêu cầu]:Lấy thông tin các entity thành phần của Block


  • Please log in to reply
3 replies to this topic

#1 hochoaivandot

hochoaivandot

    biết dimradius

  • Members
  • PipPipPipPipPip
  • 310 Bài viết
Điểm đánh giá: 107 (tàm tạm)

Đã gửi 18 April 2012 - 01:25 PM

Tôi có Entity1 : là 1 line
Tôi có Entity2 : là 1 text
Tôi có Entity3 : là 1 circle
- Tôi tạo 1 block A từ 3 entity trên.
- Tôi insert block A vào bản vẽ : được entity4

* Đầu vào: Chọn entity4
* Đầu ra : (entget của Entity1, Entity2, Entity3)

Có thể không các bác?
Vì tôi nghĩ khi explode entity4 ra sẽ tạo ra các entity có cùng thuộc tính entity1 2 3
---> Thuộc tính này cad đã lưu ở đâu đó ---> Lấy ra có thể được
  • 0

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#2 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 18 April 2012 - 02:08 PM

Tôi có Entity1 : là 1 line
Tôi có Entity2 : là 1 text
Tôi có Entity3 : là 1 circle
- Tôi tạo 1 block A từ 3 entity trên.
- Tôi insert block A vào bản vẽ : được entity4

* Đầu vào: Chọn entity4
* Đầu ra : (entget của Entity1, Entity2, Entity3)

Có thể không các bác?
Vì tôi nghĩ khi explode entity4 ra sẽ tạo ra các entity có cùng thuộc tính entity1 2 3
---> Thuộc tính này cad đã lưu ở đâu đó ---> Lấy ra có thể được

Được! Bạn dùng hàm entnext.
  • 1

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


#3 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 18 April 2012 - 02:22 PM

Được! Bạn dùng hàm entnext.

Hề hề hề,
Hình như bác DoanVanHa có chút nhầm lẫn chỗ này.
Việc dùng hàm entnext với đối tượng block thường là để tìm các đối tượng con cấu thành block đó. Khi ấy bác phải dùng tới cái block gốc khi tạo ra nó bằng hàm (setq en (cdr (assoc -2 (tblsearch "block" (cdr (assoc 2 (entget (car (entsel))))))))).
Sau đó (entnext) thì nó sẽ lần lượt trả về các đối tượng gốc đã được dùng để cấu thành block đó .
Kết quả này có khác với yêu cầu của bạn hochoaivandot là muốn lấy các đối tượng mới được đưa vào khi insert block lên bản vẽ.

Theo thiển ý của mình bạn Hochoaivandot có thể lấy được các thông số của các đối tượng này như sau:
1/- Tạo biến lưu đối tượng cuối cùng có trên bản vẽ.
2/- Tạo mốc đánh dấu điểm bắt đầu cho hàm undo.
3/- Explode cái block muốn xem xét.
4/- Tạo danh sách các đối tượng có trong tập chọn bao gồm các đối tượng phát sinh ra sau biến đối tượng cuối đã lưu ở trên.
5/- Tạo vòng lặp để lấy các thông số của các đối tượng có trong tập chọn kể trên và lưu trữ nó theo ý bạn để tham khảo sau này.
6/- Tạo mốc kết thức hàm undo/
7/- Thực hiện undo để trả bản vẽ về như cũ (trước khi explode).
Hy vọng bạn có thể giải quyết tốt vấn đề này. Chúc bạn thành công
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#4 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 18 April 2012 - 04:22 PM

Hề hề hề,
Hình như bác DoanVanHa có chút nhầm lẫn chỗ này.
Việc dùng hàm entnext với đối tượng block thường là để tìm các đối tượng con cấu thành block đó. Khi ấy bác phải dùng tới cái block gốc khi tạo ra nó bằng hàm (setq en (cdr (assoc -2 (tblsearch "block" (cdr (assoc 2 (entget (car (entsel))))))))).
Sau đó (entnext) thì nó sẽ lần lượt trả về các đối tượng gốc đã được dùng để cấu thành block đó .
Kết quả này có khác với yêu cầu của bạn hochoaivandot là muốn lấy các đối tượng mới được đưa vào khi insert block lên bản vẽ.

Theo thiển ý của mình bạn Hochoaivandot có thể lấy được các thông số của các đối tượng này như sau:
1/- Tạo biến lưu đối tượng cuối cùng có trên bản vẽ.
2/- Tạo mốc đánh dấu điểm bắt đầu cho hàm undo.
3/- Explode cái block muốn xem xét.
4/- Tạo danh sách các đối tượng có trong tập chọn bao gồm các đối tượng phát sinh ra sau biến đối tượng cuối đã lưu ở trên.
5/- Tạo vòng lặp để lấy các thông số của các đối tượng có trong tập chọn kể trên và lưu trữ nó theo ý bạn để tham khảo sau này.
6/- Tạo mốc kết thức hàm undo/
7/- Thực hiện undo để trả bản vẽ về như cũ (trước khi explode).
Hy vọng bạn có thể giải quyết tốt vấn đề này. Chúc bạn thành công

Tôi đọc đi đọc lại thì vẫn không biết mình nhầm chỗ nào bác Bình ơi! Trong đề bài có chọn block 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.