
autocad lisp函数 ssname 框选的对象,怎么设置使的所选的对象依次从左至右的排序
函数ssname(ssn)框选的对象,(比如有一行数据12345。。。)怎么使的所选的对象依次从左至右的顺序输入到excel中(可以输入到excel中,但是不是原(123...
函数 ssname(ss n) 框选的对象,(比如有一行数据 1 2 3 4 5 。。。)怎么使的所选的对象依次从左至右的顺序输入到excel中(可以输入到excel中,但是不是原(1 2 3 4 5。。。)的顺序,怎么办?
展开
1个回答
2014-04-09 · 知道合伙人软件行家
关注

展开全部
;;设置空表ss3
(setq ss3 '())
;;循环提取ss的对象
;;取得数据对象,提取坐标@p1及内容#k;
(setq i 0 ss1 (ssname ss i) ss2 (entget ss1) @p1 (cdr (assoc 10 ss2)) #k (cdr (assoc 1 ss2)) i (+ i 1))
;;设置空表ss3,坐标及内容为一个表加入ss3
(setq ss3 (cons (list @p1 #k)ss3))
;;循环结束得到ss3
;;对表ss3排序
(setq ss3 (vl-sort ss3 (function (lambda (x y)(< (car (car x)) (car (car y)))))));;X排序从左到右
(setq ss3 (vl-sort ss3 (function (lambda (x y)(> (cadr (car x)) (cadr (car y)))))));;Y排序从上到下
(setq ss3 '())
;;循环提取ss的对象
;;取得数据对象,提取坐标@p1及内容#k;
(setq i 0 ss1 (ssname ss i) ss2 (entget ss1) @p1 (cdr (assoc 10 ss2)) #k (cdr (assoc 1 ss2)) i (+ i 1))
;;设置空表ss3,坐标及内容为一个表加入ss3
(setq ss3 (cons (list @p1 #k)ss3))
;;循环结束得到ss3
;;对表ss3排序
(setq ss3 (vl-sort ss3 (function (lambda (x y)(< (car (car x)) (car (car y)))))));;X排序从左到右
(setq ss3 (vl-sort ss3 (function (lambda (x y)(> (cadr (car x)) (cadr (car y)))))));;Y排序从上到下
追问
我的原意是按原来顺序输出,通过选择集选中后,但输出的顺序改变了,怎样保持原样输出?
(setq p1 (getpoint "\nz") p2 (getpoint"\ny") ss (ssget"w" p1 p2 ) ss_s (sslength ss) )
...
追答
提问补充完整。仔细研究函数lambda的功能,把这个功能放在里面。
http://zhidao.baidu.com/question/616365442069963132.html?sort=6&old=1#here
这个是文字排序功能,使其从左到右,从上到下,并写入表格。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |