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

lisp xóa tất cả các đối tượng trong 1 vùng kín

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

~

 

 

Bạn dùng lisp của bác Thiệp dưới đây, sau khi bắt đối tượng xong bạn muốn move, copy hay xóa thì tùy bạn.

 
(defun c:erC (/ sc cur p0 P1 L1 d L n ssgDEL glength)
  (princ "\nFree lisp from www.cadviet.com")
  (command "undo" "be")
  (setvar "osmode" 0)
  (setq sc 2009
cur (car (entsel "\nchon duong: "))
glength (lambda (e) (command ".lengthen" e "") (getvar "perimeter"))
d (/ (glength cur) sc)
l1 0.0
p0 (vlax-curve-getStartPoint cur)
L (list p0)
  )
  (redraw cur 4)
  (repeat sc
    (setq l1 (+ l1 d)
 p1 (vlax-curve-getPointAtDist cur l1)
    )
    (setq L (append L (List p1)))
  )
  (setq ssgDEL (ssget "WP" L))  
  (command "undo" "end")
  (princ  "\nChuc cac ban may man va thanh cong - Thiep 0918841230" )
  (sssetfirst nil ssgDel)
  (princ)
)
(vl-load-com)

mình chạy cái này rồi muốn xóa thì lại xóa mất dường bao. bác nào biết giúp tui vớ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

~

 

mình chạy cái này rồi muốn xóa thì lại xóa mất dường bao. bác nào biết giúp tui với

Hề hề hề,

Bạn thử làm như sau xem có hiệu nghiệm không nhé.

Thêm dòng code sau:

(setq ssgdel (ssdel cur ssgdel))

vào bên dưới dòng code

(setq ssgDEL (ssget "WP" L))

Sau đó lưu lại file và test lại.

 

Hy vọng đúng ý bạ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

chào các anh, em muốn hỏi các anh làm sao để kết hợp với lisp này của em nhỉ, em muốn chọn tất cả các đám mây và xóa toàn bộ các hình bên ngoài còn lại bên ngoài các đám mây đó, file lisp chọn đám mây em có đính kèm ở dưới, mong các anh giúp đỡ, em cám ơn

 

Lisp chọn đám mây

 

(defun c:cdm (/ ss i sn name lst)
  (setq i 0 ssrc (ssadd))
  (if (setq ss(ssget "x" '((0 . "LWPOLYLINE") (410 . "Model")(70 . 1)(-4 . "/=")(42 . 0))))
    (repeat (sslength ss)
      (setq e (ssname ss i))
      (setq elst (vl-remove-if-not '(lambda (x) (= 42 (car x))) (entget e)))
      (if
        (and
          (< 2 (length elst))
          (vl-every '(lambda (x) (not (zerop (cdr x)))) elst)     
        )
        (ssadd e ssrc)
      )
      (setq i (1+ i))
    )
  )
  (sssetfirst nil ssrc)
  (princ)
) ;end
 

  • 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ác bác cho em hỏi, nếu giờ đối tượng xóa của em nằm trong một đối tượng là PolyLine 3d thi làm như thếnào .Em có file minh họa đây

http://www.cadviet.com/upfiles/5/140252_hoi_cad_viet.dwg

 

Cảm ơn các bác

 

P.S Đã giải quyết được rồi, xin lỗi các bác nhé

Chỉnh sửa theo quantvxd

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

mình đã sử dụng qua một số lisp ( xóa đối tượng trong, ngoài đường bao khép kín  có trên diễn đàn nhứ erc.lsp của bạn thiep, ewb.lsp của bạn Gia Bach, xoa.lsp của bạn kangkung  ) 

mình thấy các list đó chỉ mới xét đến yếu tố đối tượng dính or ko dính đường bao, chứ chưa xét đến tọa độ của đối tượng nằm trong hay ngoài đường bao.

giờ mình muốn xóa các text có tọa độ nằm trong or nằm ngoài đường bao khép kin thì làm thế nào ạh?

các bạn giúp mình vấn đề này với.

  • Vote giảm 2

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

mình đã sử dụng qua một số lisp ( xóa đối tượng trong, ngoài đường bao khép kín  có trên diễn đàn nhứ erc.lsp của bạn thiep, ewb.lsp của bạn Gia Bach, xoa.lsp của bạn kangkung  ) 

mình thấy các list đó chỉ mới xét đến yếu tố đối tượng dính or ko dính đường bao, chứ chưa xét đến tọa độ của đối tượng nằm trong hay ngoài đường bao.

giờ mình muốn xóa các text có tọa độ nằm trong or nằm ngoài đường bao khép kin thì làm thế nào ạh?

các bạn giúp mình vấn đề này với.

bạn có lisp erc.lsp của bạn thiep, ewb.lsp của bạn Gia Bach thì cho mình xin với

mình chỉ có lisp của bạn KangKung thôi còn 2 cái kia: cái thì link die, cái thì lỗi nhưng ko khắc phục được

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

Bạn thích code hay là thích thuật toán ?

mình thích tất nhưng mình chưa biết về lisp nhiều chỉ mới biết đến tên lệnh thôi nên chỉ cần code thôi bạn à

nếu có cho mình xin với nhé

thanks bạ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ề thuật tóan thì mình hay áp dụng cách này để kiểm tra 1 điểm d0 có ở trong 1 vùng kín hay không.

Xem xét giao điểm của vùng đó với đường nửa vô tận trong đó 1 đầu là điểm vô cùng và đầu kia là điểm d0

ví dụ đường (list (-1000000000.0 (cadr d0)) d0)

Nếu số giao điểm - lẻ là ở trong và - chẵn là ở ngoà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

Về thuật tóan thì mình hay áp dụng cách này để kiểm tra 1 điểm d0 có ở trong 1 vùng kín hay không.

Xem xét giao điểm của vùng đó với đường nửa vô tận trong đó 1 đầu là điểm vô cùng và đầu kia là điểm d0

ví dụ đường (list (-1000000000.0 (cadr d0)) d0)

Nếu số giao điểm - lẻ là ở trong và - chẵn là ở ngoài.

còn lisp thì sao bạ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

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  

×