- (defun c:AutoPL ( / *ModSpc *ActDoc *acad ss sslen junk done pnt ep )
- (setq *ModSpc (vlax-get-property (setq *ActDoc (vlax-get-property (setq *acad (vlax-get-acad-object)) 'ActiveDocument)) 'ModelSpace))
- (princ "\nSelect Point Objects:")
- [color=red](if[/color]
- [color=red] (and[/color]
- [color=red] (setq ss (ssget '(( 0 . "POINT"))))[/color]
- [color=red] (setq junk (getpoint "\nClick to Start")))[/color]
- [color=red] (progn[/color]
- (setq sslen (sslength ss))
- (setq drawn nil)
- (setq done nil)
- (while
- (and (= 5 (car (setq pnt (grread T 1 0)))) (= done nil))
- (setq ep (is_nearest ss (nth 1 pnt)))
- (cond
- ((= drawn nil)(progn
- (setq drawn (list (car ep)))
- (drx (vlax-safearray->list (vlax-variant-value (vlax-get-Property (vlax-ename->vla-object (car ep)) 'Coordinates))))))
- ((= (length drawn) 1)(if (not (is_drawn (car ep)))
- (progn
- (setq drawn (cons (car ep) drawn))
- (drx (vlax-safearray->list (vlax-variant-value (vlax-get-Property (vlax-ename->vla-object (car ep)) 'Coordinates)))))))
- ((>= (length drawn) 2)(if (not (is_drawn (car ep)))
- (progn
- (setq drawn (cons (car ep) drawn))
- (drx (vlax-safearray->list (vlax-variant-value (vlax-get-Property (vlax-ename->vla-object (car ep)) 'Coordinates)))))))
- )
- (if (= sslen (length drawn))
- (setq done T)))
- (setq pl-obj (vlax-invoke-method *ModSpc 'Addpolyline (pl->var (drawn->pntlist)))))
- (exit))
- (princ)
- )
丹的腿,好建议!
@比加尔-我想我不知道你的意思。是否考虑为多段线添加宽度选项-添加闭合选项?你能澄清一下吗? |