求按承台名称统计承台个数
求按承台名称统计承台个数测试图
本帖最后由 langjs 于 2014-3-1 13:19 编辑
试编了一下,只能识别多段线的承台,有些承台是线段围成的,识别起来挺有难度,目前程序识别不了面积为0。
另外本人不再改这个程序了,没啥意思。
(defun c:aa (/ ent i lst m2 n pt ss ss1 txt)
(vl-load-com)
(setvar "cmdecho" 0)
(setq lst '())
(if (setq ss (ssget '((0 . "TEXT") (1 . "CT-*"))))
(repeat (setq i (sslength ss))
(setq txt (cdr (assoc 1 (setq ent (entget (ssname ss (setq i (1- i)))))))
pt (cdr (assoc 10 ent))
m2 0.0
)
(if (setq ss1 (ssget "F" (list (list (- (car pt) 200) (- (cadr pt) 200)) (list (+ (car pt) 1500) (- (cadr pt) 200)))
(list '(0 . "LINE") '(8 . "图层1"))
)
)
(if (setq ss1 (ssget "F" (list (cdr (assoc 10 (entget (ssname ss1 0)))) (cdr (assoc 11 (entget (ssname ss1 0)))))
'((0 . "LWPOLYLINE") (90 . 5))
)
)
(progn
(setq ent (entlast))
(command ".region" ss1 "")
(while (setq ent (entnext ent))
(if (= (cdr (assoc 0 (entget ent))) "REGION")
(setq m2 (/ (vla-get-area (vlax-ename->vla-object ent)) 1000000)) ; 面积,平方米
)
)
(command ".undo" "")
)
)
)
(if (setq n (assoc txt lst))
(progn
(setq lst (vl-remove n lst))
(if (= (caddr n) 0.0)
(setq lst (cons (list txt (1+ (cadr n)) m2) lst))
(setq lst (cons (list txt (1+ (cadr n)) (caddr n)) lst))
)
)
(setq lst (cons (list txt 1 m2) lst))
)
)
)
(setq lst (vl-sort lst (function (lambda (i n)
(< (car i) (car n))
)
)
)
)
(foreach n lst
(princ "\n")
(princ n)
)
(princ)
)
(setq ss (ssget '((0 . "text") (1 . "CT-*"))))
再逐个对SS进行分类统计!应该很容易吧! Lisper 发表于 2014-2-28 12:22 static/image/common/back.gif
(setq ss (ssget '((0 . "text") (1 . "CT-*"))))
再逐个对SS进行分类统计!应该很容易吧!
难就难在对应的承台面积统计在后面。 品茗新秀 发表于 2014-2-28 14:20 static/image/common/back.gif
难就难在对应的承台面积统计在后面。
这有什么难的,通过文字搜索出指引线,再通过指引线来搜索承台!
用老迈的迷你建筑工具中的文字统计工具就好了啊
http://szmaicy.ys168.com
xyp1964 发表于 2014-2-28 20:31 static/image/common/back.gif
没代码,二是最好能显示对应承面的面积才有用 品茗新秀 发表于 2014-2-28 21:57 static/image/common/back.gif
没代码,二是最好能显示对应承面的面积才有用
可能有难度了,求哪位大师搞个源码,带相应承台面积
页:
[1]
2