以下是按群进行分类,将每三个文字放到了一起,至于怎么输出到文本,你就自己做吧(提示,一个群里面的三个文本按Y坐标排序就可以了,最小的为分母,最大的为分子,中间的是面积)- (defun c:test( / ss i ent ents n item ent_lst)
- (setq ss (ssget '((0 . "TEXT"))))
- (setq i 0)
- (repeat (sslength ss)
- (setq ent (ssname ss i))
- (setq ents (entget ent))
- (setq n (vl-position (assoc 102 ents) ents))
- (if (assoc (cdr (nth (1+ n) ents)) ent_lst)
- (progn
- (setq item (assoc (cdr (nth (1+ n) ents)) ent_lst))
- (setq item (append item (list ent)))
- (setq ent_lst (subst item (assoc (cdr (nth (1+ n) ents)) ent_lst) ent_lst))
- )
- (setq ent_lst (append ent_lst (list (list (cdr (nth (1+ n) ents)) ent))))
- )
- (setq i (1+ i))
- )
- ;以下是在命令行显示,输出部分就自己做吧
- (mapcar '(lambda(e) (mapcar '(lambda (x) (cdr (assoc 1 (entget x)))) e)) (mapcar 'cdr ent_lst))
- )
|