本帖最后由 Gu_xl 于 2011-9-26 18:55 编辑
 - (defun c:pladdpt (/ CMDECHO EN PT ENDEN SS osmode d l pts)
- (setq cmdecho (getvar 'cmdecho))
- (setq osmode (getvar 'osmode))
- (setvar 'cmdecho 0)
- (setvar 'osmode 0)
- (and
- (setq en (car (entsel "\n选择多段线:")))
- (WCMATCH (cdr (assoc 0 (entget en))) "*POLYLINE")
- (setq d (getreal "\n分割间距:"))
- (progn
- (setq l (vlax-curve-getDistAtParam en (vlax-curve-getEndParam en))
- dd 0)
- (while (and (< (setq dd (+ dd d)) l)
- (setq pt (vlax-curve-getPointAtDist en dd))
- )
- (setq pts (cons pt pts))
- )
- (foreach pt pts
- (setq enden (entlast))
- (command "_break" en (vlax-curve-getclosestpointto en pt) pt)
- (setq ss (ssadd))
- (while (setq enden (entnext enden))
- (if (not (member (cdr (assoc 0 (entget enden)))
- '("ATTRIB" "VERTEX" "SEQEND")))
- (ssadd enden ss)
- )
- )
- (VL-CATCH-ALL-APPLY 'vl-cmdf (list "pedit" en "j" ss "" ""))
- )
- )
- )
- (setvar 'cmdecho cmdecho)
- (setvar 'osmode osmode)
- (princ)
- )
|