我写的一个,看看怎么样?
(defun c:test () (setq ssets (vla-get-selectionsets (vla-get-ActiveDocument (vlax-get-acad-object)) ) gpcode (vlax-make-safearray vlax-vbInteger '(0 . 5)) gpvalue (vlax-make-safearray vlax-vbvariant '(0 . 5)) ) (vlax-safearray-put-element gpcode 0 -4) (vlax-safearray-put-element gpcode 1 0) (vlax-safearray-put-element gpcode 2 0) (vlax-safearray-put-element gpcode 3 0) (vlax-safearray-put-element gpcode 4 0) (vlax-safearray-put-element gpcode 5 -4) (vlax-safearray-put-element gpvalue 0 "<OR") (vlax-safearray-put-element gpvalue 1 "LINE") (vlax-safearray-put-element gpvalue 2 "CIRCLE") (vlax-safearray-put-element gpvalue 3 "LWPOLYLINE") (vlax-safearray-put-element gpvalue 4 "ARC") (vlax-safearray-put-element gpvalue 5 "OR>") (setq sset (vla-add ssets "sset")) (vla-SelectOnScreen sset gpcode gpvalue) (vlax-for obj sset (progn (vla-offset obj dis1) (if (or (eq (vla-get-objectname obj) "AcDbCircle") (eq (vla-get-objectname obj) "AcDbArc") ) (if (> (vla-get-radius obj) dis1) (vla-offset obj dis2) ) (vla-offset obj dis2) ) ) ) (vla-Delete sset) ) |