找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1395|回复: 13

[求助] [求助]:LISP编程,一次性选中几个封闭的线,能分别算出各自的面积吗?

[复制链接]
发表于 2007-8-2 13:37:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
用LISP编程,(输入一个程序命令执行)选中几个封闭的线,能自动算出面积吗?
比如大封闭线里面有个小封闭线,算出大封闭线内面积(所包围的全部,包括小封闭线内的),也算出小封闭线面积。

补充:不是一个一个地去选择封闭线,而是一次性选择,出来的结果分别写出来(排成一排),
比如:9.001
            10.202
            13.789
             16.988

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

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-8-2 14:06:42 | 显示全部楼层
vlax-curve-getArea
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-8-2 14:54:31 | 显示全部楼层
http://www.acad.net.cn/viewthread.php?tid=151&extra=page%3D1
第二楼附件下载
<br>
面积反应器:http://www.acad.net.cn/viewthread.php?tid=157&extra=page%3D3
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-2 17:43:54 | 显示全部楼层
反应器?
感觉好复杂啊,有没有简单的LISP程序?
麻烦高手编写一个让我们来学习啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-8-7 14:07:01 | 显示全部楼层
谢谢啊.那个高手编好了也给我一个啊.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-8-7 15:25:13 | 显示全部楼层
(defun c:QMJ ( / en pt txt)
(IF (tblsearch "STYLE" "CHINA")
(setvar "TEXTSTYLE" "CHINA")
(command "_style" "CHINA" "simplex,china" "" "1" "" "" "" "")
)
(while (setq pt (getpoint "\n选取点: "))
(command "-BOUNDARY" pt "")
(setq en (entlast))
(if (/= en nil)
(progn
(command "area" "o" en)
(command "layer" "m" "tmp" "c" "1" "" "")
(command "chprop" en "" "la" "tmp" "")
(setq txt (strcat (rtos (/ (getvar "area") 10000) 2 3) "㎡")
)
(command "layer" "m" "AREA-㎡" "c" "4" "" "")
(command "text" "j" "MC" pt "30" "0" txt)
)
)
))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-8 08:43:41 | 显示全部楼层
谢谢楼主啊,
看你的程序,好象是一个一个地选择封闭线,
我的意思,不要一个一个地选择,框选或线选,
被选中的封闭线就自动算出各自的封闭面积并写出来。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-8-9 15:48:45 | 显示全部楼层
(defun c:QMJ ( / en pt txt)
        (command "layer" "m" "tmp" "c" "1" "" "")
        (setq ss (ssget) )
            (if ss
             (progn
                (SETQ NUM (sslength ss) i 0)
                (WHILE (< i NUM)
                   (setq ss1 (ssname ss i) PT (CDR (ASSOC 10 (ENTGET SS1))))
                 (IF PT
                   (PROGN
                       (command "area" "o" SS1)
                     (setq txt (strcat (rtos (getvar "area") 2 3) "㎡"))
                     (command "text" "j" "MC" pt "30" "0" txt)
                   )
                 )   
                   (setq i (1+ i))
              )
            )
       )
   )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-8-12 00:16:55 | 显示全部楼层
  1. [FONT=courier new]
  2. ;;; 实体面积标注
  3. (defun c:test517 (/ ss i a s1 b)
  4.   (CMDLASC0)
  5.   (setq        ss (ssget '((0 . "Arc,Circle,Ellipse,*Polyline,Region,Spline")))
  6.         i  -1
  7.         a  0
  8.   )
  9.   (xyp-MkLaCo "面积" 3)
  10.   (while (setq s1 (ssname ss (setq i (1+ i))))
  11.     (setq b (vla-get-Area (xyp-E2O s1))
  12.           a (+ a b)
  13.     )
  14.     (xyp-Text 5 (xyp-get-MinMaxPoint s1 5) (rtos b 2 3))
  15.   )
  16.   (xyp-Text 5 (xyp-get-SSMinMaxPoint ss 5) (strcat "Σ=" (rtos a 2 3)))
  17.   (CMDLA1)
  18. )
  19. [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-8-12 13:09:54 | 显示全部楼层
如果要执行命令再出结果的话很好办,如果想不执行命令而是一选中对象就得出结果就得用反应器.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-8-12 13:35:29 | 显示全部楼层
没必要用到反应器吧...
http://www.cadtutor.net/forum/showthread.php?t=15237
[php]
(defun C:alb (/ acsp adoc ar axss hgt maxp minp obj p1 p2 pc ss txt)

  (vl-load-com)
  (setq        adoc (vla-get-activedocument
               (vlax-get-acad-object)
             )
  )
  (if (and
        (= (getvar "tilemode") 0)
        (= (getvar "cvport") 1)
      )
    (setq acsp (vla-get-paperspace adoc))
    (setq acsp (vla-get-modelspace adoc))
  )
  (vla-startundomark
    (vla-get-activedocument
      (vlax-get-acad-object)
    )
  )
  (initget 7)
  (setq hgt (getreal "\nEnter text height: "))

  (prompt "\nSelect objects on screen to add area label")
  (if (setq ss (ssget))
    (progn

      (setq axss (vla-get-activeselectionset adoc))
      (vlax-for        obj axss
        (if (not
              (vl-catch-all-error-p
                (setq
                  ar (vl-catch-all-apply
                       (function (lambda ()
                                   (vlax-curve-getarea obj)
                                 )
                       )
                     )
                )
              )
            )
          (progn
            (setq txt (strcat "Area = " (rtos ar 2 2)))
            (vla-getboundingbox obj 'minp 'maxp)
            (setq p1 (vlax-safearray->list minp)
                  p2 (vlax-safearray->list maxp)
                  pc (mapcar (function (lambda (a b) (/ (+ a b) 2))) p1 p2)
            )
            (vlax-invoke acsp 'Addtext txt pc hgt)
          )
        )
      )
    )
  )
  (vla-endundomark
    (vla-get-activedocument
      (vlax-get-acad-object)
    )
  )
  (princ)
)
(princ "\nType ALB to label objects with area text")
(princ)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-12 16:19:47 | 显示全部楼层
我没有表达清楚,所以上面补充了一下,
大家的程序,我去学习研究,谢谢大家,
有什么好的想法、程序,尽管发出来,大家共同进步
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-8-22 13:32:37 | 显示全部楼层
学了一招。这儿高手真多啊。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-8-22 21:39:30 | 显示全部楼层
把选择的东东分别赋予名字就可以了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 05:39 , Processed in 0.346509 second(s), 58 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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