明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4227|回复: 11

[求助]面积计算LSP

  [复制链接]
发表于 2010-7-22 10:57:00 | 显示全部楼层 |阅读模式

要求框选图形,能自动计算出图示阴影区域面积。请各位大侠出手相助。谢谢。

本帖子中包含更多资源

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

x
发表于 2010-7-22 11:09:00 | 显示全部楼层

其内半圆未闭合是常态吗?

若其内皆是闭合图形,编程简易多多

 

 楼主| 发表于 2010-7-22 11:17:00 | 显示全部楼层
Andyhon发表于2010-7-22 11:09:00其内半圆未闭合是常态吗? 若其内皆是闭合图形,编程简易多多  

内部全部是闭合图形。麻烦您给帮忙编个程序。谢谢啊。

发表于 2010-7-22 12:08:00 | 显示全部楼层

;;; by Michael Puckett
(defun cdrs (key lst / pair rtn)
   (while (setq pair (assoc key lst))
     (setq lst (cdr (member pair lst))
           rtn (cons (cdr pair) rtn)
   ) )
   ;; (reverse rtn)
   RTN
)

(defun Oarea (x)
   (vla-get-area (vlax-ename->vla-object x))
)

;;; For test only
(vl-load-com)
(defun C:AreaQ ()
   (setq ee (entsel "\n请选取外框: ")
         ee (car ee)
        pts (cdrs 10 (entget ee))
         ss (ssget "WP" pts)
   )

   (print
     (-
       (Oarea ee)
       ;; (apply '+ (mapcar 'Oarea (sslist ss)))
       (apply '+ (mapcar 'Oarea (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))))
     )
   )
   (princ)
)

=================================
;; 依所附文件 删去半圆调试

Command: areaq

请选取外框:
90300.0

 

---------------------

请先用 Pedit 处理闭合

 楼主| 发表于 2010-7-22 14:02:00 | 显示全部楼层
Andyhon发表于2010-7-22 12:08:00;;; by Michael Puckett(defun cdrs (key lst / pair rtn)   (while (setq pair (assoc key lst))     (setq lst (cdr (member pair lst))   &n

 

 

按您的程序运行,OK,您非常历害。不过有二个地方看看能不能修改一下,1、如果外框里面没有图形和外框是圆形时,运行程序时就显示参数错误,能不能改成只有一个外框和外框是圆时也能计算出面积?2、计算结果能不能改成对话框窗口弹出?谢谢。

发表于 2010-7-22 15:12:00 | 显示全部楼层

代码已更新如附件

 

请将所得利益回馈于灾民

本帖子中包含更多资源

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

x
 楼主| 发表于 2010-7-22 15:56:00 | 显示全部楼层
Andyhon发表于2010-7-22 15:12:00代码已更新如附件   请将所得利益回馈于灾民 areaq.rar 下载需付 0 个明经币 文件大小:.65 KB,下载次数:2 请使用WinRAR软件打开RAR压缩文件。

衷心的说一句,非常感谢!

发表于 2010-7-28 15:22:00 | 显示全部楼层
改这一段
  1.    (setq ss (ssget "WP" pts))
  2.    (ssdel ee ss)
  3.    
  4.    (setq str
  5.      (rtos
  6.        (-
  7.          (Oarea ee)
  8.          ;; (apply '+ (mapcar 'Oarea (sslist ss)))
  9.          (apply '+ (mapcar 'Oarea (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))))
  10.        )
  11.        2
  12.        (getvar "Luprec")
  13.    ) )
  14.    (alert str)
  15.    (dos_clipboard Str)      ; 将结果复制到剪贴板中...
  16.    
  17.    (princ)

相映的 Doslib 下载
http://www.en.na.mcneel.com/doslib.htm


发表于 2010-9-22 00:31:00 | 显示全部楼层
不错,很好
发表于 2010-9-25 15:23:00 | 显示全部楼层

学习了,非常感谢

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

本版积分规则

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

GMT+8, 2024-11-16 11:20 , Processed in 0.204557 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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