试试这段代码,让我知道你的情况。
- (defun c:Test (/ *error* ss i sn st le di lst e)
- ;;; Tharwat 31. jan. 2013 ;;;
- ;;; Wipeout circles ;;;
- (vl-load-com)
- (defun *error* (x)
- (if cm
- (setvar 'cmdecho cm)
- )
- (princ "\n *Cancel*")
- )
- (or Doc (setq Doc (vla-get-ActiveDocument (vlax-get-acad-object))))
- (if (progn (print "Select Circles to Wipeout ...")
- (setq ss (ssget "_:L" '((0 . "CIRCLE")))))
- (progn (setq cm (getvar 'cmdecho))
- (setvar 'cmdecho 0)
- (vla-StartUndoMark Doc)
- (repeat (setq i (sslength ss))
- (setq sn (ssname ss (setq i (1- i)))
- st (vlax-curve-getstartpoint sn)
- le (/ (* pi (* (cdr (assoc 40 (entget sn))) 2.)) 50.)
- di le
- lst nil
- )
- (repeat 50 (setq lst (cons (vlax-curve-getpointatdist sn di) lst)) (setq di (+ di le)))
- (setq e (entmakex (append (list '(0 . "LWPOLYLINE")
- '(100 . "AcDbEntity")
- '(100 . "AcDbPolyline")
- (cons 90 (length lst))
- '(70 . 1)
- )
- (mapcar '(lambda (p) (cons 10 (list (car p) (cadr p)))) lst)
- )
- )
- )
- (command "_.wipeout" "_p" e "y")
- (entdel sn)
- )
- (setvar 'cmdecho cm)
- (vla-EndUndomark Doc)
- )
- )
- (princ "\n Written by Tharwat Al Shoufi")
- (princ)
- )
|