找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4566|回复: 4

[求助] 求大神 怎么改才能选中一下全部图形各自 算出线段的周长 和 封闭图形的面积

[复制链接]
发表于 2014-7-8 14:34:39 | 显示全部楼层 |阅读模式
悬赏20D豆未解决
1.png

(defun c:LL ();(/ ll i en ss endata)
        (setvar "cmdecho" 1)
        (setq ss (ssget (list '(0 . "spline,arc,line,ellipse,LWPOLYLIN,polyline,lwpolyline"))))
        (ll ss)
         (princ "所选线条总长为:")(princ ll1)
          (princ)
)


(defun ll (ss / i en endata dd)
   (setq i 0)
        (setq ll1 0)
        (repeat (sslength ss)
                  (setq en (ssname ss i))
                  ;(setq endata (entget en))
                  (command "lengthen" en "")
                  (setq dd (getvar "perimeter"))
                (setq ll1 (+ dd ll1))
                  (setq i (1+ i))
        )
  ll1
  )


(defun c:LL1 ();(/ ll i en ss endata)
        (setvar "cmdecho" 1)
        (setq ss (ssget (list '(0 . "spline,arc,line,ellipse,LWPOLYLIN,polyline,lwpolyline"))))
        (setq ll 0)
        (setq ct 0)
        (setq ssl (sslength ss))   (princ ssl)
        (while (< ct ssl)
                (princ ct)
                (setq en (ssname ss ct))
                  ;(setq endata (entget en))        
                  (command "area" "o" en )
                  (setq dd (getvar "area"))
                (setq ll (+ dd ll))
                  (setq ct (1+ ct))
        )
         (princ "所选面积总和为:")(princ (/ ll 1000000) )
          (princ)
)
现在算面积会提示
需要点或上一个(L)
; 错误: 函数被取消

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-7-8 15:05:13 来自手机 | 显示全部楼层
本帖最后由 st788796 于 2014-7-8 15:14 编辑

(apply '+ (mapcar 'car (mapcar 'xdrx_curve_getarea (xdrx_pickset->ents (ssget '((0 . "*line,arc,ellipse")))))))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 10506个

财富等级: 富甲天下

发表于 2014-7-8 20:53:18 | 显示全部楼层
  1. (defun c:L1 ()
  2. (setvar "cmdecho" 1)
  3. (setq ss (ssget (list '(0 . "ARC,CIRCLE,ELLIPSE,*LINE"))))
  4. (setq ll 0 ct 0)
  5. (repeat (sslength ss)
  6.   (setq en (ssname ss ct))
  7.   (command "AREA" "o" en)
  8.   (if (> (getvar "CMDACTIVE") 0)
  9.    (progn (command "") (setq dd 0))
  10.    (setq dd (getvar "AREA"))
  11.   )
  12.   (setq ll (+ dd ll))
  13.   (setq ct (1+ ct))
  14. )
  15. (princ (/ ll 1000000) )
  16. (princ)
  17. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-7-8 21:24:31 来自手机 | 显示全部楼层
(apply 'mapcar (cons '+ (mapcar 'xdrx_curve_getarea (xdrx_pickset->ents (ssget '((0 . "*line,arc,ellipse")))))))
面积和周长都有了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-7-9 11:53:59 | 显示全部楼层
应该是 xdrx_getarea
  1. (defun c:tt (/ ss lst)
  2.   (if (setq ss (ssget '((0 . "*line,ellipse,arc"))))
  3.     (progn
  4.       (setq
  5.         lst (apply
  6.               'mapcar
  7.               (cons '+ (mapcar 'xdrx_getarea (xdrx_pickset->ents ss)))
  8.             )
  9.       )
  10.       (princ "\n Totle Area = ")
  11.       (princ (car lst))
  12.       (princ "\n Totle Length = ")
  13.       (princ (cadr lst))
  14.     )
  15.   )
  16.   (princ)
  17. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-23 05:37 , Processed in 0.413528 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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