关于对选择集图元排列的问题
对选择集图元进行距离排列问题,不知道怎么弄,大侠们出出手 原图: 选择外框输入排列距离 变为:版主们出处手 怎么没人呀!! 自己顶起来!! 求 版主 出手!! 我帮你顶了!!!!!!!!!!
(defun c:tt (/ OS CMDECHO SS D BOXLST PT SSL BOX *error*)
(defun *error* (s)
(setvar 'cmdecho cmdecho)
(setvar 'osmode os)
(princ s)
(princ)
)
(setq os (getvar 'osmode)
cmdecho (getvar 'cmdecho)
)
(setvar 'cmdecho 0)
(setvar 'osmode 0)
(setq ss (ssget '((0 . "lwpolyline"))))
(if ss
(progn
(setq d (getreal "\n间距<5.0>:"))
(if (null d)
(setq d 5.0)
)
(setq ss (GXL-SEL-SS->LIST ss))
(setq boxlst (mapcar '(lambda (x) (GXL-GETBOX x)) ss))
(setq
boxlst (vl-sort boxlst '(lambda (a b) (< (caar a) (caar b))))
)
(setq pt (caar boxlst))
(setq ssl
(mapcar
'(lambda (lw / box)
(list
(apply 'ssget (cons "c" (setq box (GXL-GETBOX lw))))
box
)
)
ss
)
)
(foreach s ssl
(command "_move" (car s) "" (caadr s) pt)
(setq pt (polar pt 0 (+ d (- (car (cadadr s)) (caaadr s)))))
)
)
)
(setvar 'cmdecho cmdecho)
(setvar 'osmode os)
)
(defun gxl-Sel-SS->List (ss / i s )
(if ss
(repeat (setq i (sslength ss))
(setq s (cons (ssname ss (setq i (1- i))) s))
)
)
)
(defun gxl-getbox (e1 / obj minpoint maxpoint)
(if (= 'ENAME (type e1))
(setq obj (vlax-ename->vla-object e1)) ;转换图元名
(setq obj e1)
)
(vla-GetBoundingBox obj 'minpoint 'maxpoint)
(setq minpoint (vlax-safearray->list minpoint)) ;把变体数据转化为表
(setq maxpoint (vlax-safearray->list maxpoint)) ;把变体数据转化为表
(list minpoint maxpoint)
)
Gu_xl 发表于 2012-4-4 10:27 static/image/common/back.gif
感谢G版出手! 不过 就是有点小问题, 我上传个附件,麻烦G版看看! shang_123 发表于 2012-4-4 20:42 static/image/common/back.gif
感谢G版出手! 不过 就是有点小问题, 我上传个附件,麻烦G版看看!
额。。。G版 这个难度有点高!! 我不会!!! shang_123 发表于 2012-4-4 20:42 static/image/common/back.gif
感谢G版出手! 不过 就是有点小问题, 我上传个附件,麻烦G版看看!
恳请G版 再次出手!! 谢谢!!!! 找了半天,终于找到了, 太好了,好东西呀,我自动排列时,如果能根据大小来排列就更好了
页:
[1]
2