zzxxqq斑竹你好,谢谢你的程序,我试用了不过不知道什么原因,这个程序在有些图里得出来的最大坐标有时不对,画出来的框会很长,是不是和系统变量有关呀,不知您有遇到没有,请说一下,谢谢,另外借用您的这个程序我把我的阵列程序完成了,对排版方便多了,谢谢,代码如下: (defun C:arr() (vl-load-com) (setvar "cmdecho" 0) (command "ucs" "w") (princ "\n请选择要阵列的物体:") (while(null(setq en (ssget)))) (setq minx0 1e6 miny0 1e6 maxx0 -1e6 maxy0 -1e6) (setq i 0) (repeat (sslength en) (setq end (ssname en i)) (setq end_data (entget end)) (Min_Max) (setq i(1+ i)) ) (setq pmin (list minx0 miny0) pmax (list maxx0 maxy0)) (setq xc(- maxx0 minx0) yc(- maxy0 miny0)) (setq hs (getint "/n请输入行数:") ls(getint "/n请输入列数:")) (setq jj(getdist (strcat "请输入间距:<" (rtos 2) ">")) hj(+ xc jj) lj(+ yc jj)) (if (not jj)(setq jj 2)) (command "undo" "be") (command "array" en "" "r" "" hs ls hj hj "") (command "undo" "e") (princ) ) ;;;子程序,求选集是大外形坐标 (defun Min_Max() (vla-getboundingbox(vlax-ename->vla-object end) 'minp 'maxp) (setq minp (vlax-safearray->list minp) maxp (vlax-safearray->list maxp)) (setq minx (car minp) maxx (car maxp) miny (cadr minp) maxy (cadr maxp)) (if (> minx0 minx) (setq minx0 minx)) (if (> miny0 miny) (setq miny0 miny)) (if (< maxx0 maxx) (setq maxx0 maxx)) (if (< maxy0 maxy) (setq maxy0 maxy)) ) |