明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 7514|回复: 27

线长分类统计数量及长度和总数量及总长(源)

  [复制链接]
发表于 2009-8-2 20:15 | 显示全部楼层 |阅读模式

需要统计图中各种线长有用, 如图

 

 

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

  • · 工具|主题: 71, 订阅: 4
发表于 2022-9-13 23:26 | 显示全部楼层
zgssd 发表于 2009-9-23 13:49
本帖最后由 作者 于 2009-9-23 15:37:36 编辑  用了5楼的源码,为何不能统计多段线长度?我做了如下修改, ...

怎样加上面域的线呢   论坛找了很多线长与面积的,但就没有面域的。
发表于 2018-5-9 11:27 | 显示全部楼层
谢谢分享
程序不错
发表于 2018-4-24 15:47 | 显示全部楼层
这个好用 学习下
发表于 2009-9-9 11:28 | 显示全部楼层
 错误: no function definition: NBTF_DXF----请问版主什么原因?
发表于 2009-9-9 12:53 | 显示全部楼层

楼主,请教如何在程序中过滤掉同心圆,只选取最大直径的圆呢?

发表于 2009-9-9 16:04 | 显示全部楼层
  1. (DEFUN nbtf_dxf (I EN)
  2.   (CDR (ASSOC I (ENTGET EN)))
  3. )
复制代码
发表于 2009-9-9 16:50 | 显示全部楼层

学习1楼代码,修改后

  1. (vl-load-com)
  2. (defun C:SUMLEN (/)
  3.     (setq LST '(("LINE" "直线")
  4.   ("ARC" "圆弧")
  5.   ("CIRCLE" "圆")
  6.   ("LPOLYLINE" "多段线")
  7.   ("ELLIPSE" "椭圆")
  8.   ("SPLINE" "样条线")
  9.         )
  10.     )
  11.     (if (setq SS (ssget '((0 . "LINE,ARC,CIRCLE,LPOLYLINE,ELLIPSE,SPLINE"))
  12.    )
  13. )
  14. (progn
  15.      ;;1.逐个统计
  16.      (setq I 0)
  17.      (repeat (sslength SS)
  18.   (setq EN  (ssname SS I)
  19.         ENT (entget EN)
  20.         STR (cdr (assoc 0 ENT))
  21.   )
  22.   (if (setq TMP (assoc STR LST))
  23.       (setq LEN (vlax-curve-getdistatparam
  24.       EN
  25.       (vlax-curve-getendparam EN)
  26.          )
  27.      LST (subst (append TMP (list LEN)) TMP LST)
  28.       )
  29.   )
  30.   (setq I (1+ I))
  31.      )
  32.      ;;2.显示
  33.      (setq PRTXT
  34.        "线条长度分类统计\n\n类型\t根数\t长度\n----------------------"
  35.      )
  36.      (foreach N LST
  37.   (if (> (length N) 2)
  38.       (setq LEN (apply '+ (cddr N))
  39.      PRTXT (strcat PRTXT
  40.      "\n"
  41.      (cadr N)
  42.      "\t"
  43.      (itoa (- (length N) 2))
  44.      "\t"
  45.      (rtos LEN 2 3)
  46.     )
  47.       )
  48.   )
  49.      )
  50.      (setq
  51.   PRTXT
  52.      (strcat
  53.          PRTXT
  54.          "\n\n总数:"
  55.          (itoa (- (length (apply 'append LST))
  56.     (* 2 (length LST))
  57.         )
  58.          )
  59.          "  总长度:"
  60.          (rtos (apply '+
  61.         (apply 'append (mapcar 'cddr LST))
  62.         )
  63.         2
  64.         3
  65.          )
  66.      )
  67.      )
  68.      (princ PRTXT)
  69.      (alert PRTXT)
  70. )
  71.     )
  72.     (princ)
  73. )
发表于 2009-9-11 17:33 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2009-9-23 13:49 | 显示全部楼层
本帖最后由 作者 于 2009-9-23 15:37:36 编辑

用了5楼的源码,为何不能统计多段线长度?我做了如下修改,不知对否

(vl-load-com)
(defun C:SUMLEN (/)
     (setq LST '(("LINE" "直线")
   ("ARC" "圆弧")
   ("CIRCLE" "圆")
   ("LWPOLYLINE" "多段线")
   ("ELLIPSE" "椭圆")
   ("SPLINE" "样条线")
         )
     )
     (if (setq SS (ssget '((0 . "LINE,ARC,CIRCLE,LWPOLYLINE,ELLIPSE,SPLINE"))
    )
  )
  (progn
      ;;1.逐个统计
      (setq I 0)
      (repeat (sslength SS)
   (setq EN  (ssname SS I)
         ENT (entget EN)
         STR (cdr (assoc 0 ENT))
   )
   (if (setq TMP (assoc STR LST))
       (setq LEN (vlax-curve-getdistatparam
       EN
       (vlax-curve-getendparam EN)
          )
      LST (subst (append TMP (list LEN)) TMP LST)
       )
   )
   (setq I (1+ I))
      )
      ;;2.显示
      (setq PRTXT
        "线条长度分类统计\n\n类型\t根数\t长度\n----------------------"
      )
      (foreach N LST
   (if (> (length N) 2)
       (setq LEN (apply '+ (cddr N))
      PRTXT (strcat PRTXT
      "\n"
      (cadr N)
      "\t"
      (itoa (- (length N) 2))
      "\t"
      (rtos LEN 2 3)
     )
       )
   )
      )
      (setq
   PRTXT
      (strcat
          PRTXT
          "\n\n总数:"
          (itoa (- (length (apply 'append LST))
     (* 2 (length LST))
         )
          )
          "  总长度:"
          (rtos (apply '+
         (apply 'append (mapcar 'cddr LST))
         )
         2
         3
          )
      )
      )
      (princ PRTXT)
      (alert PRTXT)
  )
     )
     (princ)
)

发表于 2010-1-27 12:20 | 显示全部楼层
好东东,下载了,谢谢分享!
发表于 2010-2-8 16:08 | 显示全部楼层
很受用啊,谢谢了
发表于 2011-2-26 17:17 | 显示全部楼层
留名备用
程序不错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-18 19:27 , Processed in 0.239810 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表