ycy970837 发表于 2010-7-22 10:57:00

[求助]面积计算LSP

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

Andyhon 发表于 2010-7-22 11:09:00

<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">其内半圆未闭合是常态吗?</font></p>
<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">若其内皆是闭合图形,编程简易多多<br/></font></p>
<p>&nbsp;</p>

ycy970837 发表于 2010-7-22 11:17:00

Andyhon发表于2010-7-22 11:09:00static/image/common/back.gif其内半圆未闭合是常态吗?
若其内皆是闭合图形,编程简易多多
&nbsp;


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

Andyhon 发表于 2010-7-22 12:08:00

<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">;;; by Michael Puckett<br/>(defun cdrs (key lst / pair rtn)<br/>&nbsp;&nbsp; (while (setq pair (assoc key lst))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq lst (cdr (member pair lst))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rtn (cons (cdr pair) rtn)<br/>&nbsp;&nbsp; ) )<br/>&nbsp;&nbsp; ;; (reverse rtn)<br/>&nbsp;&nbsp; RTN<br/>)</font></p>
<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">(defun Oarea (x)<br/>&nbsp;&nbsp; (vla-get-area (vlax-ename-&gt;vla-object x))<br/>)</font></p>
<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">;;; For test only<br/>(vl-load-com)<br/>(defun C:AreaQ ()<br/>&nbsp;&nbsp; (setq ee (entsel "\n请选取外框: ")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ee (car ee)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pts (cdrs 10 (entget ee))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ss (ssget "WP" pts)<br/>&nbsp;&nbsp; )</font></p>
<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">&nbsp;&nbsp; (print<br/>&nbsp;&nbsp;&nbsp;&nbsp; (-<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Oarea ee)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;; (apply '+ (mapcar 'Oarea (sslist ss)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (apply '+ (mapcar 'Oarea (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))))<br/>&nbsp;&nbsp;&nbsp;&nbsp; ) <br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; (princ)<br/>)</font></p>
<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">=================================<br/>;; 依所附文件 删去半圆调试</font></p>
<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">Command: areaq</font></p>
<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">请选取外框:<br/>90300.0</font></p>
<p>&nbsp;</p>
<p>---------------------</p>
<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">请先用 Pedit 处理闭合<br/></font></p>

ycy970837 发表于 2010-7-22 14:02:00

Andyhon发表于2010-7-22 12:08:00static/image/common/back.gif;;; by Michael Puckett(defun cdrs (key lst / pair rtn)&nbsp;&nbsp; (while (setq pair (assoc key lst))&nbsp;&nbsp;&nbsp;&nbsp; (setq lst (cdr (member pair lst))&nbsp;&nbsp;&nbsp;&n


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

Andyhon 发表于 2010-7-22 15:12:00

<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">代码已更新如附件</font></p>
<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">&nbsp;</font></p>
<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">请将所得利益回馈于灾民<br/></font></p>

ycy970837 发表于 2010-7-22 15:56:00

Andyhon发表于2010-7-22 15:12:00static/image/common/back.gif代码已更新如附件
&nbsp;
请将所得利益回馈于灾民



areaq.rar
下载需付 0 个明经币

文件大小:.65 KB,下载次数:2




请使用WinRAR软件打开RAR压缩文件。


<p>衷心的说一句,非常感谢!</p>

Andyhon 发表于 2010-7-28 15:22:00

改这一段

   (setq ss (ssget "WP" pts))
   (ssdel ee ss)
   
   (setq str
   (rtos
       (-
         (Oarea ee)
         ;; (apply '+ (mapcar 'Oarea (sslist ss)))
         (apply '+ (mapcar 'Oarea (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))))
       )
       2
       (getvar "Luprec")
   ) )
   (alert str)
   (dos_clipboard Str)      ; 将结果复制到剪贴板中...
   
   (princ)


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


树点 发表于 2010-9-22 00:31:00

不错,很好

124350440 发表于 2010-9-25 15:23:00

<p>学习了,非常感谢</p>
页: [1] 2
查看完整版本: [求助]面积计算LSP