品茗新秀 发表于 2014-2-28 10:55:36

求按承台名称统计承台个数

求按承台名称统计承台个数
测试图

langjs 发表于 2014-2-28 10:55:37

本帖最后由 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)
)

xiaodao520 发表于 2014-2-28 12:05:27


Lisper 发表于 2014-2-28 12:22:11

(setq ss (ssget '((0 . "text") (1 . "CT-*"))))
再逐个对SS进行分类统计!应该很容易吧!

品茗新秀 发表于 2014-2-28 14:20:47

Lisper 发表于 2014-2-28 12:22 static/image/common/back.gif
(setq ss (ssget '((0 . "text") (1 . "CT-*"))))
再逐个对SS进行分类统计!应该很容易吧!

难就难在对应的承台面积统计在后面。

Lisper 发表于 2014-2-28 14:33:36

品茗新秀 发表于 2014-2-28 14:20 static/image/common/back.gif
难就难在对应的承台面积统计在后面。

这有什么难的,通过文字搜索出指引线,再通过指引线来搜索承台!

yuanquan222 发表于 2014-2-28 20:07:22


用老迈的迷你建筑工具中的文字统计工具就好了啊
http://szmaicy.ys168.com

xyp1964 发表于 2014-2-28 20:31:17


品茗新秀 发表于 2014-2-28 21:57:42

xyp1964 发表于 2014-2-28 20:31 static/image/common/back.gif


没代码,二是最好能显示对应承面的面积才有用

品茗新秀 发表于 2014-2-28 22:57:29

品茗新秀 发表于 2014-2-28 21:57 static/image/common/back.gif
没代码,二是最好能显示对应承面的面积才有用

可能有难度了,求哪位大师搞个源码,带相应承台面积
页: [1] 2
查看完整版本: 求按承台名称统计承台个数