尝试以下操作:
- ;;; Copy Command and return selectionset
- ;;; Requires Express Tools' ACET-SS-Drag-Move subroutine
- ;;; Alan J. Thompson, 11.09.09
- (defun AT:Copy (/ #SS #Pnt1 #Pnt2 #Pnts #SSAdd #Copy)
- (vl-load-com)
- (cond
- ((and (setq #SS (ssget "_:L"))
- (setq #Pnt1 (getpoint "\nSpecify base point: "))
- (setq #Pnt2 (acet-ss-drag-move #SS #Pnt1 "\nSpecify placement point: " T))
- ) ;_ and
- (or *AcadDoc* (setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))))
- (setq #Pnts (mapcar '(lambda (x) (vlax-3d-point (trans x 1 0)))
- (list #Pnt1 #Pnt2)
- ) ;_ mapcar
- ) ;_ setq
- (setq #SSAdd (ssadd))
- (vlax-for x (setq #SS (vla-get-activeselectionset *AcadDoc*))
- (ssadd (vlax-vla-object->ename (setq #Copy (vla-copy x))) #SSAdd)
- (vla-move #Copy (car #Pnts) (cadr #Pnts))
- ) ;_ vlax-for
- (vl-catch-all-apply 'vla-delete (list #SS))
- ) ;_ cond
- ) ;_ cond
- #SSAdd
- ) ;_ defun
它将模拟复制,但返回一个选择集。你可以做一些简单的事情,比如:
- (defun c:Test (/ ss)
- (and (setq ss (AT:Copy))
- (command "_.change" ss "" "_p" "_c" 3 "")
- ) ;_ and
- ) ;_ defun
这不是最好的例子,但我相信你会明白的。 |