立即注册 登录
晓东CAD家园-论坛 返回首页

eachy的个人空间 http://bbs.xdcad.net/?14 [收藏] [复制] [分享] [RSS]

日志

将文字按要求排序号

已有 147 次阅读2013-5-6 17:42 |个人分类:Lisp

  
;|
调用格式: (ea:sort_entity entity_list mode key vx)
参数说明:
1 mode 0 按行 1 按列
2 key
(mod = 0) (mod = 1)
1 Y降X升 X升Y降 (左上至右下)
2 Y降X降 X降Y降 (右上至左下)
3 Y升X降 X降Y升 (右下至左上)
4 Y升X升 X升Y升 (左下至右上)
3 vx 行(列)允许误差,为 nil 实取 0
4 entity_list 表, 格式如下
((pt1 ent1) (pt2 ent2) ... (ptn entn))
a pt 为 ent 的特征点, ent 可以为 entity 或 vla-object
比如对文字排序,pt 可以使用文字的插入点

b 当 pt 为实数时,vx 为行列最大及最小值的差值,此时 mode key 为任意值
如一组数 (1 3 56 89 56 45 6 8 45 91 45 69 78 15 12 11) vx 取 10
排序后为 ((1 3 6 8 11) (12 15) (45 45 45) (56 56) (69 78) (89 91))
总表及子表均为由大到小排列

返 回 值: 表,子表为按要求排列的 行/列

说 明: 因为是 lisp 函数,本函数内部并不对数据的合法性进行检查,以提高程序的效率
使用前确保各参数的的正确性
|;
;;********************************************************
;;示例一:将文字按要求排序号
;;使用前确保已经加载 sortobj.fas
;;压缩包内含 sortobj.fas 及 test.dwg (2k DWG)
;;********************************************************
(defun c:t1 (/ ss ssl e elst el n k1 k2 d pre sub)
(if (and (setq ss (ssget '((0 . "text"))))
(progn
(initget "0 1")
(setq k1 (getkword "\n[0 -按行/1 -按列]:"))
)
(progn
(initget "1 2 3 4")
(setq k2
(getkword
"\n[1-左上至右下/2-右上至左下/3-右下至左上/4-左下至右上]:"
)
)
)
(setq d (getdist "\n输入允许误差: "))
)
(progn
(setq ssl (sslength ss))
(while (> ssl 0)
(setq e (ssname ss (setq ssl (1- ssl))))
(setq elst (cons (list (cdr (assoc 10 (entget e))) e) elst))
)
(setq pre "K+" ;_ 前缀
;;sub "A" ;_ 后缀
)
(setq el (mapcar '(lambda (x) (mapcar 'cadr x))
(ea:sort_entity elst (atoi k1) (atoi k2) d)
)
)
(setq n 1) ;_ 起始值,
(mapcar
'(lambda (x)
(mapcar
'(lambda (e1)
(setq el (entget e1))
(entmod (subst (cons 1
(strcat pre;_ 前缀
(if (< n 10)
(strcat "0" (itoa n))
(itoa n)
);_ 可以进行格式化
;; sub;_ 后缀
)
)
(assoc 1 el)
el
)
)
(setq n (1+ n)) ;_ 可以定义步距
)
x
)
)
el
)
)
)
(princ)
)
;;示例二: 对块中某一属性排序号(可以推广到对多个属性分别排序号)

路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-13 16:55 , Processed in 0.238684 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

返回顶部