Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
Thành5820

Lisp chọn đối tượng nằm trên lớp Wipeout ( nhờ các bác giúp đỡ ạ)

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

image.thumb.png.b690b0bda5efe5e50f1799ac80e5bb74.png

 

Chào mọi người 

Mình có bản  vẽ từ khách hàng như hình 1 ( đường bao màu vàng là đường wipeout, các đối tượng nằm trên lớp wipeout sẽ được nhìn thấy)

ở hình 3 là tất cả các đối tượng cả nằm trên và nằm dưới wipeout 

- Vậy có cách nào move các đối tượng nằm trên lớp wipeout không ạ ( mình đã dùng nhiều cách cả filter hay Draw Order nhưng không select được những đối tượng nằm trên lớp wipeout này, mình quét thì cất cả đối tượng sẽ được chọn như hình 2, 

- Bản vẽ thì rất phức tạp, layer cũng rối rùi và chằn chịt những chi tiết, nếu phải chọn từng đối tượng để move ra thì phải lọc cả buổi

- Xin giải pháp từ các bác ạ, cảm ơn rất nhiều !!!

 

  • Vote giảm 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

Câu hỏi khá phức tạp và mâu thuẫn, tóm lại có phải bạn muốn CHỌN tất các đối tượng NẰM GỌN trong 1 hoặc nhiều wipeout (đại ý để không chọn mấy thằng nằm trùm ra ngoài cả wipeout như hatch, ...), sau đó Draworder hay Move, Delete gì gì đúng không ?

Còn để trả lời câu hỏi của bạn 1 cách máy móc: để move tất cả đối tượng nằm trên lớp wipeout thì 1 là chọn cả bản vẽ trừ wipeout rồi Draworder->Front hoặc chọn tất cả wipeout rồi Draworder->Back (thằng nào đang ở trên rồi mà tiếp tục cho nổi lên trên thì vẫn thế chả sao, tương tự mấy thằng ở dưới cũng vậy)

  • 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
1 giờ trước, Duong Nhat Duy đã nói:

Câu hỏi khá phức tạp và mâu thuẫn, tóm lại có phải bạn muốn CHỌN tất các đối tượng NẰM GỌN trong 1 hoặc nhiều wipeout (đại ý để không chọn mấy thằng nằm trùm ra ngoài cả wipeout như hatch, ...), sau đó Draworder hay Move, Delete gì gì đúng không ?

Còn để trả lời câu hỏi của bạn 1 cách máy móc: để move tất cả đối tượng nằm trên lớp wipeout thì 1 là chọn cả bản vẽ trừ wipeout rồi Draworder->Front hoặc chọn tất cả wipeout rồi Draworder->Back (thằng nào đang ở trên rồi mà tiếp tục cho nổi lên trên thì vẫn thế chả sao, tương tự mấy thằng ở dưới cũng vậy)

Xin lỗi, không biết giải thích vấn đề này ntn cho dễ hiểu nữa, có thể do khả năng chưa hiểu tới, nhưng cũng mạnh dạng giải thích thêm lần nữa 

 - Đại khái là bên khách hàng dùng lớp wipeout để ẩn đi những chi tiết không nhìn thấy, sau đó để những chi tiết nhìn thấy lên trên lớp wipeout ( những đối tượng nằm bên dưới lớp màn che Wipeout  sẽ bị ẩn đi và ngược lại nằm trên sẽ nhìn thấy như hình 1) 

- mục đích mình chỉ muốn move những đối tượng mình nhìn thấy được ra bên ngoài để tiếp tục thiết kế khâu tiếp theo, nhưng khi quét vùng chọn đó thì lại chọn luôn các đối tượng nằm bên dưới lớp màng Wipe luôn( như hình 2 )

- Mình đã thử cho X nổ hình 1 ra thì được như hình 3( rất nhiều đối tượng cần phải xoá để được như hình 1) 

- Xin cảm ơn ạ 

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
Vào lúc 6/4/2024 tại 17:02, Thành5820 đã nói:

image.thumb.png.b690b0bda5efe5e50f1799ac80e5bb74.png

 

Chào mọi người 

Mình có bản  vẽ từ khách hàng như hình 1 ( đường bao màu vàng là đường wipeout, các đối tượng nằm trên lớp wipeout sẽ được nhìn thấy)

ở hình 3 là tất cả các đối tượng cả nằm trên và nằm dưới wipeout 

- Vậy có cách nào move các đối tượng nằm trên lớp wipeout không ạ ( mình đã dùng nhiều cách cả filter hay Draw Order nhưng không select được những đối tượng nằm trên lớp wipeout này, mình quét thì cất cả đối tượng sẽ được chọn như hình 2, 

- Bản vẽ thì rất phức tạp, layer cũng rối rùi và chằn chịt những chi tiết, nếu phải chọn từng đối tượng để move ra thì phải lọc cả buổi

- Xin giải pháp từ các bác ạ, cảm ơn rất nhiều !!!

 

Bạn load lisp dưới.
Thao tác : lệnh SF hoặc SF1
B1 :chọn các đối tượng trong vùng chọn -> B2 Chọn đối tượng cơ sở -> Các đối tượng có order trên đối tượng này sẽ được chọn.
Lệnh Lệnh SF1 thì nhanh hơn nhưng yêu cầu B1 phải quét chọn trong 1 nhịp, k chọn nhay nhay :D

Select Front.zip

  • Like 1
  • 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
1 giờ trước, ketxu đã nói:

Bạn load lisp dưới.
Thao tác : lệnh SF hoặc SF1
B1 :chọn các đối tượng trong vùng chọn -> B2 Chọn đối tượng cơ sở -> Các đối tượng có order trên đối tượng này sẽ được chọn.
Lệnh Lệnh SF1 thì nhanh hơn nhưng yêu cầu B1 phải quét chọn trong 1 nhịp, k chọn nhay nhay :D

Select Front.zip

Lệnh của bác có chi ghê gớm mà đóng gói kỹ vậy bác. 

em nghĩ cũng chỉ đơn giản là:

(defun c:test (/ ss ent p)
  (ssgetfirst)
  (setq 
    ss (acet-ss-to-list (ssget "C" (setq p (getpoint)) (getcorner p)))
    ent (car (entsel))
    ss (cdr (member ent (reverse ss)))
  )
  (sssetfirst nil (acet-list-to-ss ss))
  (princ)
)

ssget "C" thì không chọn nhay nhay được :))

hoặc có thể dùng (ssget "CP" (acet-ui-fence-select)) thì có thể chọn trong vùng k phải chữ nhật.

  • Vote tăng 1
  • Vote giảm 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
2 giờ trước, tannguyen291 đã nói:

Lệnh của bác có chi ghê gớm mà đóng gói kỹ vậy bác. 

Vì tớ k thích th, chứ code cũng là t copy paste th 
 

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

Thì bản chất code cũng là người sau copy người đi trước rồi chỉnh sửa lại thôi mà!

Anh tannguyen291 lấy cái acet-ss-to-list thấy nhanh nhỉ! Em thì dùng (mapcar 'cadr (ssnamex (ssget)))

Lệnh MWW một cách khác để chủ thớt tham khảo!

 

Move on wipeout (MWW).lsp

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
14 phút trước, limfx đã nói:

Thì bản chất code cũng là người sau copy người đi trước rồi chỉnh sửa lại thôi mà!

Anh tannguyen291 lấy cái acet-ss-to-list thấy nhanh nhỉ! Em thì dùng (mapcar 'cadr (ssnamex (ssget)))

 Lệnh MWW một cách khác để chủ thớt tham khảo!

Move on wipeout (MWW).lsp

mấy cái acet của express tool. ông nào cài cad mà bỏ tick cái này thì lisp tịt k chạy. haha. 

được cái tiện phết.

lisp của bạn không viết dấu cách cái getpoint chưa chắc lisp đã chạy đâu kìa. mà sao không để pause pause trong command thao tác người dùng sướng hơn.

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
13 phút trước, tannguyen291 đã nói:

mấy cái acet của express tool. ông nào cài cad mà bỏ tick cái này thì lisp tịt k chạy. haha. 

được cái tiện phết.

lisp của bạn không viết dấu cách cái getpoint chưa chắc lisp đã chạy đâu kìa. mà sao không để pause pause trong command thao tác người dùng sướng hơn.

Đã cập nhật cái pause pause  dùng sướng hơn lại rút  được mấy dòng code. Thanks!

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  

×