[求助]如何获得选择集的最大,最小x和y坐标
各位,如果选择一堆图元后,怎么取得它的最大,最小x和y坐标值,谢谢(defun C:wx()
(vl-load-com)
(command "undo" "be")
(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))
(command ".rectang" "non" pmin "non" pmax)
(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))
)
程序对SPLINE线有误差。
ZZXXQQ 发表于 2008-3-2 23:02
程序对SPLINE线有误差。
感谢分享,用这个子程序成功解决了快速建块默认捕捉点问题。 求每个图元的最大最小坐标,通过比较得到整个选择集的最大最小坐标。需要用到AX方法。 我也很想知道,楼上的能不能说得明白点!多义线的最大最小坐标如何求得?当有圆弧的时候!42组码的凸度始终不明白是如何算的?还望指教. 管理员,你大慈大悲帮帮俺吧,俺还是菜鸟,你说的ax得太深奥了,俺不明白,请多多指教呀 试试这个 ET 内的acet函数<br/>(acet-geom-ss-extents 一堆图元集 T) 谢谢zzxxqq斑竹,我先调试下,不懂再来问您 我的本意是要做一个简单的阵列程序,因为工作中经常用到,所以想简化,直接选择对象(可以选择单个图元,也可多选),再输入物体间的间距,(比如说输入2,则行和列都为2),这样的话对排版方便多了 <p>这个函数似乎也行</p><p>(vl-sort '((1 3) (2 2) (3 1)) <br/> (function (lambda (e1 e2) <br/> (< (cadr e1) (cadr e2)) ) ) )</p>
页:
[1]
2