明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4692|回复: 20

关于测算建筑面积的lsp,逛透论坛尚无看到符合要求的,请高手出手!

  [复制链接]
发表于 2011-12-31 04:06:35 | 显示全部楼层 |阅读模式
本帖最后由 zcenc 于 2011-12-31 05:10 编辑

我是搞建筑的,经常要算建筑面积,一般情况下我是用PL线围合一圈,然后用LI。但是碰到阳台比较复杂的就麻烦了,因为阳台面积只能算一半,还有建筑局部有挖空部分的情况;

我的想法是:
1、我先用3种不同颜色(比如红、绿、黄)的PL线分别把待算全部面积(红线)的、一半面积(绿线)的、和减掉面积的区域描点围合起来;(这3种PL线最好在一个图层(如AREA)中,实在不好办的话分3个图层也行,毕竟图层太多不好管理);
2、然后输入程序命令,框选所有PL线,最后得出个数据几+几-几=多少m2;
3、最后把计算结果(几+几-几=多少m2)写入图中指定位置。
希望哪位大侠能帮小弟解决这个工作上的大难题,不胜感激!(因无币,故发这,不然就悬赏了)


































0PL线

 楼主| 发表于 2011-12-31 04:55:56 | 显示全部楼层
本帖最后由 zcenc 于 2011-12-31 05:09 编辑

自顶一下
发表于 2011-12-31 07:52:24 | 显示全部楼层
有想法,应很好解决了
发表于 2011-12-31 08:58:12 | 显示全部楼层
我也顶一下  顶出高手高手来 学习一下
发表于 2011-12-31 10:00:42 | 显示全部楼层
这个不用高手出手,我简单写了一个。楼主可以根据需要调整一下。

  1. (defun c:te (/ ss i ename object a1 a2 a3 a color dzin pt)
  2. (setq ss (ssget '((0 . "LWPOLYLINE") (8 . "AREA") (-4 . "<or") (62 . 1) (62 . 2) (62 . 3) (-4 . "or>") ))
  3.        i  0
  4.     a1 0.0
  5.     a2 0.0
  6.     a3 0.0
  7. )
  8. (if ss
  9.   (progn
  10.    (vl-load-com)
  11.    (repeat (sslength ss)
  12.     (setq ename  (ssname ss i)
  13.        object (vlax-ename->vla-object ename)
  14.        i      (1+ i)
  15.        a      (vla-get-area object)
  16.        color  (cdr (assoc 62 (entget ename)))
  17.     );setq
  18.     (cond ( (= color 1)
  19.       (setq a1 (+ a1 a))
  20.           )
  21.        ( (= color 2)
  22.       (setq a2 (- a2 a))
  23.           )
  24.        ( (= color 3)
  25.       (setq a3 (+ a3 (* 0.5 a)))
  26.           )
  27.     );cond
  28.    );repeat
  29.    (setq a    (+ a1 a2 a3)
  30.                   dzin (getvar "dimzin")
  31.    )
  32.    (setvar "dimzin" 0)
  33.    (setq a (rtos a 2 3))
  34.    (setvar "dimzin" dzin)
  35.    (while (not (setq pt (getpoint "\n选择文字插入点:"))))
  36.    (entmake
  37.     (list
  38.      (cons 0  "TEXT")
  39.      (cons 1  a)
  40.      (cons 7  (getvar "TEXTSTYLE"))
  41.      (cons 8  "AREA")
  42.      (cons 10 '(0 0 0))
  43.      (cons 11 (trans pt 1 0))
  44.      (cons 40 (getvar "TEXTSIZE"))
  45.      (cons 50 0)
  46.      (cons 41 0.7)
  47.      (cons 51 0.0)
  48.      (cons 72 1)
  49.      (cons 73 2)
  50.     );list
  51.    );entmake
  52.   );progn
  53.   (princ "\n没选中任何有效曲线!")
  54. );if
  55. )

 楼主| 发表于 2011-12-31 14:15:12 | 显示全部楼层
谢谢楼上的兄台,这么迅速热心的给出了解决方案!
程序基本达成了我的想法,只是字太小了点,还有单位不是平方米!但还是万分感谢!
发表于 2011-12-31 14:21:16 | 显示全部楼层
zcenc 发表于 2011-12-31 14:15
谢谢楼上的兄台,这么迅速热心的给出了解决方案!
程序基本达成了我的想法,只是字太小了点,还有单 ...

字的大小是根据你当前系统变量textsize确定的,可以根据你自己的需要修改一下(cons 40 (getvar "textsize"))这一句,单位的问题取决于你画图的单位了,可以自己把a a1 a2 a3 这几个数乘上单位换算因子。
 楼主| 发表于 2011-12-31 14:47:52 | 显示全部楼层
本人是菜鸟中的菜鸟,多谢vormittag 兄的解释,我试试看!
还有个小问题,起初没想好。如果是任意的图层,不一定要非要area,只要是这三种颜色的PL线就能进行如上计算,这个程序该怎么改一下,还请赐教!
发表于 2011-12-31 15:00:20 | 显示全部楼层
本帖最后由 vormittag 于 2011-12-31 15:01 编辑
zcenc 发表于 2011-12-31 14:47
本人是菜鸟中的菜鸟,多谢vormittag 兄的解释,我试试看!
还有个小问题,起初没想好。如果是任意的图层, ...


其实上面的代码还是有缺陷的,三种颜色必须是指定颜色,如果图线颜色是随层的红、绿、黄则还需要进行判断了。
至于任意图层的问题,只要在过滤列表里把(8 . "AREA")去掉就行了。
 楼主| 发表于 2011-12-31 15:21:52 | 显示全部楼层

ue

本帖最后由 zcenc 于 2011-12-31 15:26 编辑
vormittag 发表于 2011-12-31 14:21
字的大小是根据你当前系统变量textsize确定的,可以根据你自己的需要修改一下(cons 40 (getvar "textsize ...


再次谢过vormittag 的及时回复,前两个问题我试了半天还是没搞定(字体想300大),还望给出正确的语句,不然俺今晚觉都睡不好

点评

(cons 40 300) 或者在命令行运行textsize, 把字高设为300  发表于 2011-12-31 15:37
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-22 05:31 , Processed in 0.212690 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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