下面是一个相对简单的程序:
- (defun c:copyrel ( / b i l p q s )
- (if
- (and
- (setq s (ssget "_:L"))
- (setq p (getpoint "\nSpecify Base Point: "))
- (setq b (vlax-3D-point (trans p 1 0)))
- )
- (progn
- (repeat (setq i (sslength s))
- (setq l (cons (vlax-ename->vla-object (ssname s (setq i (1- i)))) l))
- )
- (while (setq q (getpoint "\nSpecify Second Point: " p))
- (foreach x l (vla-move (vla-copy x) b (vlax-3D-point (trans q 1 0))))
- (setq p q)
- )
- )
- )
- (princ)
- )
- (vl-load-com)
- (princ)
或者,如果您安装了Express Tools:
- (defun c:copyrel ( / b i l o p q s )
- (if
- (and
- (setq s (ssget "_:L"))
- (setq p (getpoint "\nSpecify Base Point: "))
- (setq b (vlax-3D-point (trans p 1 0)))
- )
- (progn
- (repeat (setq i (sslength s))
- (setq l (cons (vlax-ename->vla-object (ssname s (setq i (1- i)))) l))
- )
- (while (setq q (acet-ss-drag-move s p "\nSpecify Second Point: " 0 0))
- (setq s (ssadd))
- (foreach x l
- (vla-move (setq o (vla-copy x)) b (vlax-3D-point (trans q 1 0)))
- (ssadd (vlax-vla-object->ename o) s)
- )
- (setq p q)
- )
- )
- )
- (princ)
- )
- (vl-load-com)
- (princ)
|