 - ;;批量偏移 By Gu_xl 2013.04.01
- (defun c:py (/ CLOCKWISEP OFFSET KD SS N EN kd0)
- (defun CLOCKWISEP (en / lw minp MaxP lst)
- (setq lw (vlax-ename->vla-object en))
- (vla-GetBoundingBox lw 'MinP 'MaxP)
- (setq
- minp (vlax-safearray->list minp)
- MaxP (vlax-safearray->list MaxP)
- lst (mapcar
- (function
- (lambda (x)
- (vlax-curve-getParamAtPoint
- lw
- (vlax-curve-getClosestPointTo lw x)
- )
- )
- )
- (list minp
- (list (car minp) (cadr MaxP))
- MaxP
- (list (car MaxP) (cadr minp))
- )
- )
- )
- (if (or
- (<= (car lst) (cadr lst) (caddr lst) (cadddr lst))
- (<= (cadr lst) (caddr lst) (cadddr lst) (car lst))
- (<= (caddr lst) (cadddr lst) (car lst) (cadr lst))
- (<= (cadddr lst) (car lst) (cadr lst) (caddr lst))
- )
- t
- )
- )
- (initget 7 "W N S ")
- (setq kd0 (getkword "\n[向外偏移W/向内偏移N/双向偏移S]<W>"))
- (if (= "" kd0)
- (setq kd0 "W")
- )
- (initget 6)
- (setq offset (getreal "\n[输入偏移距离]<0.5>"))
- (if (null offset)
- (setq offset 0.5)
- )
- (initget 7 "Y N ")
- (setq kd (getkword "\n[删除源对象<Y>/不删除源对象<N>]<N>:"))
- (if (= kd "")
- (setq kd "N")
- )
- (while (setq ss (ssget '((0 . "*polyline,arc,circle"))))
- (repeat (setq n (sslength ss))
- (setq en (ssname ss (setq n (1- n))))
- (cond
- ((or (= "ARC" (cdr (assoc 0 (entget en))))
- (= "CIRCLE" (cdr (assoc 0 (entget en))))
- )
- (cond ((= kd0 "W")
- (vla-offset (vlax-ename->vla-object en) offset)
- )
- ((= kd0 "N")
- (vla-offset (vlax-ename->vla-object en) (- offset))
- )
- (t
- (vla-offset (vlax-ename->vla-object en) offset)
- (vla-offset (vlax-ename->vla-object en) (- offset))
- )
- )
- )
- (t
- (cond ((= kd0 "W")
- (if (CLOCKWISEP en)
- (vla-offset (vlax-ename->vla-object en) (- offset))
- (vla-offset (vlax-ename->vla-object en) offset)
- )
- )
- ((= kd0 "N")
- (if (CLOCKWISEP en)
- (vla-offset (vlax-ename->vla-object en) offset)
- (vla-offset (vlax-ename->vla-object en) (- offset))
- )
- )
- (t
- (vla-offset (vlax-ename->vla-object en) offset)
- (vla-offset (vlax-ename->vla-object en) (- offset))
- )
- )
- )
- )
- (if (= kd "Y")
- (entdel en)
- )
- )
- )
- (princ)
- )
|