 - ;;返回多段线顶点表
- (defun vertexs (ename / plist pp n)
- (setq obj (vlax-ename->vla-object ename))
- (setq plist (vlax-safearray->list
- (vlax-variant-value
- (vla-get-coordinates obj))))
- (setq n 0)
- (repeat (/ (length plist) 2)
- (setq pp (append pp (list (list (nth n plist)(nth (1+ n) plist)))))
- (setq n (+ n 2))
- )
- pp
- )
- (defun MJ:SS->LIST (SS)
- (vl-remove-if-not '(lambda(X)(= (type X) 'ENAME)) (mapcar 'cadr (ssnamex SS)))
- )
- (defun c:tt(/ EN EN_LST MAXPT MINPT N_SS OBJ OBJ_APP PTLST SS SSX X)
- (vl-load-com)
- (if(setq ss (ssget '((0 . "*polyline"))))
- (progn
- (princ"\n开始!")
- (setq en_lst '() obj_app(vla-get-Application (vla-get-ActiveDocument (vlax-get-acad-object))))
- (while (setq en(ssname ss 0))
- (setq ptlst (vertexs en))
- (setq obj (vlax-ename->vla-object en))
- (vla-GetBoundingBox obj 'minpt 'maxpt)
- (vla-zoomwindow obj_app minpt maxpt)
- ;(vl-cmdf "_.zoom" "o" en "")
- (setq ssx(ssget "_wp" ptlst))
- (if ssx
- (progn
- (setq en_lst (append (MJ:SS->LIST ssx) en_lst))
- ))
- (vla-ZoomPrevious obj_app)
- ;(vl-cmdf "_.zoom" "P")
- (setq ss(ssdel en ss))
- )
- (vlax-release-object obj)
- (vlax-release-object obj_app)
- (setq n_ss(ssadd))
- (while (setq n(car en_lst))
- (setq n_ss(ssadd n n_ss))
- (setq en_lst(cdr en_lst))
- )
- (redraw)
- (sssetfirst nil n_ss)
- (redraw)
- (princ"\n完成!")
- )
- )
- (princ)
- )
|