本帖最后由 vectra 于 2015-2-5 22:54 编辑
 - (defun c:tt (/ code ent n obj p pr)
- (princ "\n选择多段线上要移除的顶点:")
- (setq ent (ssget ":S" '((0 . "*POLYLINE"))))
- (if ent
- (progn
- (setq ent (ssname ent 0))
- (redraw ent 3)
- (setq p (getpoint "指定顶点:")
- obj (vlax-ename->vla-object ent)
- p (vlax-curve-getclosestpointto obj (trans p 1 0))
- n (fix (+ 0.5 (vlax-curve-getparamatpoint obj p))) ;_ 所选的顶点序号
- pr (vlax-safearray->list
- (vlax-variant-value (vla-get-coordinate obj n))
- )
- )
- (cond
- ((= "LWPOLYLINE" (cdr (assoc 0 (entget ent))))
- (setq code (entget ent)
- code (vl-remove-if '(lambda (x) (equal pr (cdr x) 0.1)) code)
- )
- (entmod code)
- )
- ((= "POLYLINE" (cdr (assoc 0 (entget ent))))
- (while (and (setq ent (entnext ent))
- (/= "SEQEND" (cdr (assoc 0 (entget ent))))
- )
- (if (and (= "VERTEX" (cdr (assoc 0 (entget ent))))
- (equal (cdr (assoc 10 (entget ent))) pr 0.1)
- )
- (vla-delete (vlax-ename->vla-object ent))
- )
- )
- )
- )
- (redraw ent 4)
- )
- )
- (princ)
- )
|