明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 742|回复: 4

[讨论] 面积与长度测量函数出错

[复制链接]
发表于 2021-5-26 12:46 | 显示全部楼层 |阅读模式
本帖最后由 nyistjz 于 2021-5-26 12:55 编辑

大神帮忙看一下,我这个面积与长度的测量小程序为什么不能正常运行。
感谢!


  • (defun c:tt(/ ss);长度面积统计
  •   (vl-load-com)
  •   (setq ss (ssget '((0 . "CIRCLE,ELLIPSE,*POLYLINE,SPLINE,ARC,LINE"))))
  •   (setq l (sslength ss) i 0 totalarea 0 totlength 0)
  •   (repeat l
  •     (setq ename (ssname ss i))
  •     (setq obj (vlax-ename->vla-object ename))
  •     (setq totalarea (vla-get-area obj))
  •     (setq totlength (vla-get-length obj))
  •     (princ "\n****默认绘图比例1:1,以mm为单位****")
  •     (setq n (sslength ss))
  •     (princ (strcat "\n>>>>>共统计了" (itoa n) "个"))
  •     (setq totlength (strcat ",总长度=" (rtos (/ totlength 1e3) 2 3) "m"))
  •     (setq totalarea (strcat ",总面积=" (rtos (/ totalarea 1e6) 2 3) "m2"))
  •   )
  •   (princ(strcat totlength totalarea))
  •   (princ)
  • )

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2021-5-26 13:25 | 显示全部楼层
;直线段就没有area属性,圆弧就没有length属性,却有ArcLength属性
(defun c:tt(/ ss);长度面积统计
  (vl-load-com)
  (setq ss (ssget '((0 . "CIRCLE,ELLIPSE,*POLYLINE,SPLINE,ARC,LINE"))))
  (setq n (sslength ss)  i 0  totalarea 0   totlength 0)
  (repeat n
    (setq ename (ssname ss i))
    (setq obj (vlax-ename->vla-object ename))
    (setq dis (vlax-curve-getDistAtParam obj (vlax-curve-getEndParam obj)))
    (setq totlength (+ dis totlength))
    (setq area (vl-catch-all-apply 'vlax-curve-getArea (list obj)))
    (setq i (1+ i))
    (princ (strcat "\n第" (itoa i) "个图元, 长度=" (rtos dis 2 3)  "mm"))
    (if (/= area 0.0)
        (progn
            (setq totalarea (+ area totalarea))
            (princ (strcat ", 面积=" (rtos area 2 3) "mm2"))
        )
        (princ (strcat ", 无面积属性!"))
    )
  )
  (princ "\n****默认绘图比例1:1,以mm为单位****")
  (princ (strcat "\n>>>>>共统计了" (itoa n) "个"
                  ",累计长度=" (rtos (/ totlength 1e3) 2 3) "m"
                   ",累计面积=" (rtos (/ totalarea 1e6) 2 3) "m2"
         )
  )
  (princ)
)
 楼主| 发表于 2021-5-26 13:34 | 显示全部楼层
yshf 发表于 2021-5-26 13:25
;直线段就没有area属性,圆弧就没有length属性,却有ArcLength属性
(defun c:tt(/ ss);长度面积统计
  (v ...

我的天哪,牛逼!
谢谢您!!!
发表于 2022-4-13 22:10 | 显示全部楼层
谢谢楼上的朋友了!收藏学习下!
发表于 2023-5-6 17:34 | 显示全部楼层
yshf 发表于 2021-5-26 13:25
;直线段就没有area属性,圆弧就没有length属性,却有ArcLength属性
(defun c:tt(/ ss);长度面积统计
  (v ...

长度标示和累计标示,在CAD2020上,不能用上?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-2 20:19 , Processed in 0.285939 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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