明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 路;追逐~

求高手赐一个批量计算面积的LISP程序

  [复制链接]
发表于 2012-5-10 12:40:23 | 显示全部楼层
只是求程序,到交易版,还要上图纸。
 楼主| 发表于 2012-5-10 12:58:27 | 显示全部楼层
VBALISPER 发表于 2012-5-10 11:26
有一个标注在中心的,有一个求和的.两个都有源码,不知你到底是要求啥子

就是不仅要标注在中心,而且还显示求和,而且是要处理整个JMD图层上的封闭图形的。标注在中心和求和我都分别找到了程序,但是证明嫁接到一起去呢??
 楼主| 发表于 2012-5-10 19:56:00 | 显示全部楼层
461045462 发表于 2012-5-10 11:20
要求做到的很全面,有,很理想。
请问是否做房产图所用?

嗯,房产图。。。
哥,你是知道的,要是一个个的去量取去计算的话会很麻烦的,所以才想有个LISP程序来弄一下,我自己又不会。。。
发表于 2012-5-11 07:45:48 | 显示全部楼层
路;追逐~ 发表于 2012-5-10 19:56
嗯,房产图。。。
哥,你是知道的,要是一个个的去量取去计算的话会很麻烦的,所以才想有个LISP程序来弄 ...

有标注在中心和求和的程序,可以组合起来。我目前也只是收集了这样的,因为暂没做房产,就没有组合到一起。
见谅。
发表于 2012-5-11 08:48:57 | 显示全部楼层
  1. (princ "\n统计面积:TA    统计长度并标注:TAT")
  2. (defun c:TA(/ ss tarea obj k l)
  3.   (setvar "cmdecho" 0)
  4.   (if (setq ss (ssget))
  5.     (progn
  6.       (vl-load-com)
  7.       (setq l (sslength ss) k 0 tarea 0 )
  8.       (repeat l
  9.         (setq ename (ssname ss k))
  10.         (setq obj (vlax-ename->vla-object ename))
  11.         (if (vlax-property-available-p obj "area")
  12.           (setq tarea (+ (vlax-get-property obj 'area) tarea))
  13.         )
  14.         (setq k (1+ k))
  15.       )
  16.       (setq tarea (/ tarea 1000000))
  17.       (princ (strcat "\n共选择 " (itoa l) " 个对象 | 总面积: " (rtos tarea 2 2)))
  18.     )
  19.     (princ "\n未选择对象")
  20.   )
  21.   (setvar "cmdecho" 1)
  22.   (prin1)
  23. )

  24. (defun c:TAT(/ ss tarea obj k l)
  25.   (setvar "cmdecho" 0)
  26.   (if (setq ss (ssget))
  27.     (progn
  28.       (vl-load-com)
  29.       (setq l (sslength ss) k 0 tarea 0 )
  30.       (repeat l
  31.         (setq ename (ssname ss k))
  32.         (setq obj (vlax-ename->vla-object ename))
  33.         (if (vlax-property-available-p obj "area")
  34.           (setq tarea (+ (vlax-get-property obj 'area) tarea))
  35.         )
  36.         (setq k (1+ k))
  37.       )
  38.       (setq tarea (/ tarea 1000000))
  39.       (princ (strcat "\n共选择 " (itoa l) " 个对象 | 总面积: " (rtos tarea 2 2)))
  40.       (command "text" (getpoint "\n选取文字插入点") "" "" (rtos tarea 2 2))
  41.     )
  42.     (princ "\n未选择对象")
  43.   )
  44.   (setvar "cmdecho" 1)
  45.   (prin1)
  46. )
TAT注意设置textsize

点评

好用,赞一个!  发表于 2012-10-24 23:20

评分

参与人数 2金钱 +20 收起 理由
kajinfu + 10 谢谢,这个有用,还不需要扣除六位数
半听可乐 + 10

查看全部评分

 楼主| 发表于 2012-5-11 10:09:15 | 显示全部楼层
461045462 发表于 2012-5-11 07:45
有标注在中心和求和的程序,可以组合起来。我目前也只是收集了这样的,因为暂没做房产,就没有组合到一起 ...

呵呵,我的思路也是那样的,正在研究嫁接在一起。。。
我想问问,要是我要一次性选择某图层的全部实体,应该用什么代码呢???您知道不啊………………
 楼主| 发表于 2012-5-11 10:10:20 | 显示全部楼层
hlmdf 发表于 2012-5-11 08:48
TAT注意设置textsize

谢谢,研究研究,争取弄出来我下个要的……
发表于 2012-5-11 10:29:18 | 显示全部楼层
路;追逐~ 发表于 2012-5-11 10:09
呵呵,我的思路也是那样的,正在研究嫁接在一起。。。
我想问问,要是我要一次性选择某图层的全部实体, ...

(command "-layer" "on" "*" "")
;“*” 表示打开所有的
下面有一个不知能用上否。见笑
(defun c:mj06 (/ ss sum obj n)
  ;;显示面积总和
  (vl-load-com)
  (setq ss (ssget))
  (setq        sum 0
        n 0
  )
  (while (< n (sslength ss))
    (setq obj (vlax-ename->vla-object (ssname ss n)))
    (if        (vlax-property-available-p obj "area")
      (setq sum (+ sum (vla-get-area obj)))
    )
    (setq n (1+ n))
  )
  sum
)
 楼主| 发表于 2012-5-11 10:36:26 | 显示全部楼层
461045462 发表于 2012-5-11 10:29
(command "-layer" "on" "*" "")
;“*” 表示打开所有的
下面有一个不知能用上否。见笑

谢谢,研究研究
发表于 2012-5-13 20:13:51 | 显示全部楼层
(defun bz()
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-13 14:21 , Processed in 0.178775 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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