明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5428|回复: 14

一个很简单的统计各种实体长度之和的小程序

[复制链接]
发表于 2015-8-31 13:25:33 | 显示全部楼层 |阅读模式
编了一个很简单的统计各种实体长度之和的小程序,支持*POLYLINE,SPLINE,ARC,CIRCLE,LINE和ELLIPSE,统计完毕后在提示行给出统计数据,自动累加到以 M 为单位,适合做预算之类的需要统计长度之和。

(defun c:lc ( / aa asum bs bz_error i num_i old_cmd olderr per psum s sel_num)
(defun bz_start ( / )
        (setq old_cmd (getvar "cmdecho"))
        (setvar "cmdecho" 0)
        (eval "(command \"_.undo\" \"_group\)")
        (setq olderr *error* *error* bz_error)
)

(defun bz_end ( / )
        (setq *error* olderr)
        (command "_.undo" "end")
        (setvar "cmdecho" old_cmd)
        (princ)
)

(defun bz_error (/)
        (if (not (member s '("console break" "Function cancelled" "quit / exit abort")))
                (princ (strcat "\nError: " s))
        )
        (bz_end)
)


;;-------------------------------------Main START
        (bz_start)
        (setq         psum 0.00
                i 0
        )
            (princ "\n选取需计算长度之和的直线、多义线、曲线或圆实体:")
            (SETQ bs (SSGET '((-4 . "<OR" )
                                    (0 . "*POLYLINE")
                                    (0 . "SPLINE") (0 . "ARC")
                                    (0 . "CIRCLE")
                                (0 . "LINE")
                                    (0 . "ELLIPSE")
                            (-4 . "OR>"))
                            )
            )
            (SETQ SEL_Num (sslength bs))
           
        (repeat SEL_Num
                (setq Num_i (ssname bs i))
                (command "lengthen" Num_i  "" )
                (setq per (/ (getvar "perimeter") 1000.0)
                      psum (+ per psum)
                        i  (+ 1 i)
                )
               
        )
        (princ (strcat "\n共统计了 "
                           (itoa i)
                           " 个线、多义线、曲线或圆实体,长度累加为:"
                           (rtos psum 2 2)"M!"
                           )
                )
        (bz_end)
)
(princ "\n命令:LC , 长度之和自动统计程序!!! Design by Ahill ! Copyright@2007")


评分

参与人数 1明经币 +1 收起 理由
donghuidong2003 + 1 很给力!

查看全部评分

发表于 2018-10-9 16:46:20 | 显示全部楼层
选择易+统计,好用好好用!

本帖子中包含更多资源

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

x
发表于 2018-9-22 13:24:39 | 显示全部楼层

谢谢楼主分享,下载收藏学习下!
发表于 2017-11-24 22:55:49 来自手机 | 显示全部楼层
确实给力,下载收藏学习下!
 楼主| 发表于 2015-8-31 13:29:52 | 显示全部楼层
如果不想累加到米为单位,可以把这一句
(setq per (/ (getvar "perimeter") 1000.0)
中的1000.0改为1.0就变回以毫米为单位了。
发表于 2015-9-4 21:58:00 | 显示全部楼层
楼主无私奉献精神值得学习!
发表于 2015-11-15 22:21:02 | 显示全部楼层
能不能以公式的或者列的形式写入cad
发表于 2015-12-23 15:50:33 | 显示全部楼层
好用,一直在找
发表于 2015-12-23 16:09:15 | 显示全部楼层
谢谢,学习一下………………
发表于 2016-1-21 19:14:15 | 显示全部楼层
确实给力,下载收藏学习下!
发表于 2016-1-23 09:41:07 | 显示全部楼层
谢谢………………
发表于 2016-3-14 23:32:49 | 显示全部楼层
发表于 2017-11-21 14:45:00 | 显示全部楼层
谢谢楼主分享!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 15:58 , Processed in 0.201892 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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