哈哈,李,真不错。
实际上,我更新了前几天写的一篇旧文章。它只会将一个对象与另一个对象交换(我使用它交换两个块或一个文本对象)。
- (defun c:EW (/ *error* lst f)
- ;; Entity Swap
- ;; Alan J. Thompson, 06.05.08 / 07.10.08 / 05.01.10
- (defun *error* (msg)
- (and f *AcadDoc* (vla-EndUndoMark *AcadDoc*))
- (and msg
- (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*QUIT*"))
- (princ (strcat "\nError: " msg))
- )
- )
- (if (and (car (setq lst (cons (car (entsel "\nSelect first object: ")) lst)))
- (cadr (vl-remove nil (setq lst (cons (car (entsel "\nSelect second object: ")) lst))))
- )
- ((lambda (pts)
- (setq f (not (vla-StartUndoMark
- (cond (*AcadDoc*)
- ((setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))))
- )
- )
- )
- )
- (mapcar (function (lambda (o a b) (vl-catch-all-apply (function vla-move) (list o a b))))
- (mapcar (function vlax-ename->vla-object) lst)
- pts
- (reverse pts)
- )
- )
- (mapcar (function (lambda (x) (vlax-3d-point (cdr (assoc 10 (entget x))))))
- lst
- )
- )
- )
- (*error* nil)
- (princ)
- )
|