怎样把图形分类统计出来?
<P>各位大哥: 我想把图里的矩形和线条分类统计出来.</P><P> 要求: 1,显示矩形的宽度和高度,分类统计出每种矩形数量,列表显示.</P>
<P> 2,显示线条的长度,分类统计出每种线条数量,列表显示.</P>
<P> 3,显示结果能以文本格式输出.</P> 本帖最后由 作者 于 2005-10-30 16:32:15 编辑 <br /><br /> <P>做一个简单的程序即可达到你的目的,如果需要很乐意为你效劳</P>
<P>(QQ:123300,E-mail:webmaster@hdtc.com.cn)。</P> 楼主问题解决了吗?可否共享用啊。 程序未调试
;分类统计 明经 ZZXXQQ 2013.2.7
(defun c:tj ()
(setq nm (if (= (type nm) 'STR) nm ""))
(if (setq nm (getfiled "输出文件名" nm ".txt" 4)) (progn
(if (setq ss (ssget "X"'((0 . "LWPOLYLINE") (90 . 4)))) (progn
(setq i -1 slst (list) plst (list))
(repeat (sslength ss)
(setq ent (entget(ssname ss (setq i (1+ i)))))
(foreach x ent (if (= (car x) 10) (setq plst (cons (cdr x) plst)))
(setq p1 (car plst) p2 (caddr plst))
(setq slst (cons (mapcar '(lambda (a b) (abs (- a b))) p1 p2) slst))
)
(setq i 0 sslst (list))
(setq sslst (cons (cons (car slst) 1) sslst))
(repeat (length slst)
(setq lw (nth (setq i (1+ i)) slst))
(if (setq lww (assoc lw sslst))
(setq sslst (subst (cons lw (1+ (cdr lww))) lww sslst))
(setq sslst (cons (cons lw 1) sslst))
)
)
(vl-sort sslst '(lambda (a b) (< (caar a) (caar b))))
))
(if (setq ss1 (ssget "X" '((0 . "LINE")))) (progn
(setq i -1 dlst (list))
(repeat (sslength ss1
(setq ent (entget(ssname ss1 (setq i (1+ i))))
dlst (cons (distance (cdr(assoc 10 en)) (cdr(assoc 11 ent))) dlst))
)
(setq i 0 sdlst (list))
(setq sdlst (cons (cons (car dlst) 1) sdlst))
(repeat (length dlst)
(setq d1 (nth (setq i (1+ i)) dlst))
(if (setq dw (assoc d1 sdlst))
(setq sdlst (subst (cons d1 (1+ (cdr dw))) dw sdlst))
(setq sdlst (cons (cons d1 1) sdlst))
)
)
(vl-sort sdlst '(lambda (a b) (< (car a) (car b))))
))
(setq fp (open nm "w"))
(if (> (length sslst) 0) (progn
(princ "矩形统计\n尺寸 数量\n" fp)
(mapcar
'(lambda (x) (princ (car x) fp) (princ (cdr x) fp) (princ "\n"))
sslst
)
))
(if (> (length sdlst) 0) (progn
(princ "\n\n线条统计\n长度 数量\n" fp)
(mapcar
'(lambda (x) (princ (car x) fp) (princ (cdr x) fp) (princ "\n"))
sdlst
)
))
(close fp)
))
(princ)
)
用不了的, 不错,顶顶
楼主问题解决了吗?可否共享用啊。
页:
[1]