Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] Lisp xóa điểm trùng và sắp xếp lại đỉnh của LWPolyline


  • Please log in to reply
21 replies to this topic

#21 thanhlong.hygt

thanhlong.hygt

    biết vẽ pline

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

Đã gửi 22 September 2013 - 11:55 AM

Nếu nhằm mục đích xóa tất cả các điểm trùng nhau của 1 Lwpolyline bất kỳ, không phân biệt có arc hay không, thì dùng lisp này (còn nếu có thêm điều kiện là chỉ xóa các điểm liên tiếp mà trùng nhau thì phải sửa lisp tí):

(defun C:HA( / ent)
(vl-load-com)
(if
  (and
   (setq ent (car (entsel "\nChon Lwpolyline: ")))
   (= "LWPOLYLINE" (cdr (assoc 0 (entget ent)))))
  (entmod (LM:HA:UniqueFuzz (entget ent) 1E-8)))
(princ))
(defun LM:HA:UniqueFuzz (lst fz)
(if lst
  (cons (car lst) (LM:HA:UniqueFuzz (vl-remove-if '(lambda (x) (if (= 10 (car x)) (equal x (car lst) fz))) (cdr lst)) fz))))

Bạn có thể giúp mình bổ sung thêm chức năng nhập khoảng cách min bỏ đỉnh không. Nếu khoảng cách nhỏ hơn khoảng cách min thì bỏ đỉnh nếu khoảng cách lớn hơn thì  giữ nguyên lại đỉnh. thank bạn


  • 0

#22 Trần Kuly

Trần Kuly

    Chưa sử dụng CAD

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

Đã gửi 28 June 2014 - 02:33 PM

Hay nhỉ :mellow:
Mình đã thử với với cad2013. Tuyệt!

 Command: OVERkill
Select objects: 1 found
Select objects:
0 duplicate(s) deleted
5 overlapping object(s) or segment(s) deleted

Lệnh overkill của cad2007 thì chưa có chức năng xóa segment của pline bạn Doan Van Ha.

CAI NAY BAO LOI ; error: no function definition: S  BAC hochoaivandot oi! sua giup em voi! thanks bac!


  • 0