明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4501|回复: 16

求助lisp,扣除门窗面积周长后,整个墙面的面积及周长,并写在图上?谢谢!

  [复制链接]
发表于 2012-1-7 19:58:01 | 显示全部楼层 |阅读模式
求助lisp,扣除门窗面积周长后,整个墙面的面积及周长,并写在图上?谢谢!

本帖子中包含更多资源

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

x

点评

楼主是搞墙面粉刷的?  发表于 2012-1-7 20:01
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2012-1-7 22:06:00 | 显示全部楼层
搞排板活的
回复 支持 1 反对 0

使用道具 举报

发表于 2012-1-9 12:52:54 | 显示全部楼层
本帖最后由 完整武器 于 2012-1-9 12:53 编辑

Z版这个程序我试了一下 选择后提示输入文字后 然后手工输后就结束了,感觉没有计算面积 ,不知道是不是我不会用
回复 支持 1 反对 0

使用道具 举报

发表于 2012-1-9 14:20:12 | 显示全部楼层
那应该是笔误!应该是rtos吧!
回复 支持 1 反对 0

使用道具 举报

发表于 2012-1-7 21:48:44 | 显示全部楼层
哇。。。你这是什么单位...
 楼主| 发表于 2012-1-8 21:01:43 | 显示全部楼层
刚在本论坛找到ljpnb 大侠以下程序,基本满足要求。但还请各位斑竹能否再优化一下,1、把所计算的面积写在图上,2、按平方米输出,3、把大面积、及内部小面积分开表示,谢谢!
(defun c:test1 ()
  (princ "\n ****本程序为求封闭的大物体与其包含的多个封闭小物体的面积之差****")
  (princ "\n 请选择封闭物体(圆、多边形)....")
  (setq ss (ssget '((0 . "CIRCLE,LWPOLYLINE"))))
  (setq        i   0
        ES  0
        lis '()
  )
  (repeat (sslength ss)
    (setq ent (ssname ss i))
    (setq obj (vlax-ename->vla-object ent))
    (setq s (list (vla-get-Area obj)))
    (setq lis (append s lis))
    (setq i (1+ i))
  )
  (setq lis (vl-sort lis '>))
  (setq        es (car lis)
        k  1
  )
  (repeat (1- (length lis))
    (setq es (- es (nth k lis)))
    (setq k (1+ k))
  )
  (princ (strcat "所求面积为:" (rtos es)))
  (princ)
)

发表于 2012-1-9 08:57:52 | 显示全部楼层
本帖最后由 ZZXXQQ 于 2012-1-9 22:47 编辑

  1. (defun c:test1 ()
  2. (princ "\n ****本程序为求封闭的大物体与其包含的多个封闭小物体的面积之差****")
  3. (princ "\n 请选择封闭物体(圆、多边形)....")
  4. (setq ss (ssget '((0 . "CIRCLE,LWPOLYLINE"))))
  5. (setq i   0
  6.        lis '()
  7. )
  8. (repeat (sslength ss)
  9.   (setq ent (ssname ss i))
  10.   (setq obj (vlax-ename->vla-object ent))
  11.   (setq s (list (vla-get-Area obj)))
  12.   (setq lis (append s lis))
  13.   (setq i (1+ i))
  14. )
  15. (setq lis (vl-sort lis '>))
  16. (setq es (eval (cons '- lis)))
  17. (command "_.TEXT" PAUSE "" "" (strcat "大面积 = " (rtos (car lis) 2)))
  18. (foreach x (cdr lis) (command "_.TEXT" "" (strcat "内部面积=" (rtos x 2))))
  19. (command "_.TEXT" "" (strcat "面积差 = " (rtos es 2)))
  20. (princ)
  21. )
 楼主| 发表于 2012-1-9 13:52:59 | 显示全部楼层
在CAD08我也是遇到同样的问题?在CAD2012出现 错误: no function definition: ROTS
发表于 2012-1-9 17:43:43 | 显示全部楼层
(defun c:aaa()
  (command "-units" "2" "4" "2" "2" "0" "y" )
  (setq wall (entsel "\n 选择外围线"))
  (prompt "\n 选择内部各岛屿,右键结束")
  (setq ss (ssget))
  (ssdel (car wall) ss)
  (command "area" "a" "e" wall "" "s" "e")
  (setq emax (sslength ss))
  (setq i 0)
  (while (< i emax)
     (command (ssname ss i))
     (setq i (1+ i))
   )
   (setq jmj (getvar "AREA"))
   
    (command "" "")
   (setq txtp (getpoint "\n选择标注位置:"))
   (command "text" "j" "mc" txtp 0.5 "0" (rtos jmj 2 4))
(princ)
)   
发表于 2012-1-9 18:35:58 | 显示全部楼层
针对所有的这类问题,我写了一个普适的程序,名字叫"屏幕计算器",是"坐标计算器的组件之一"。
程序我已经贴到本版块了,就是提前编辑简单的公式对选择的图元提取属性按公式进行计算。
见我的贴子:http://bbs.mjtd.com/thread-87048-1-1.html

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-5-30 02:26 , Processed in 0.183565 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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