明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6262|回复: 12

[已解答] LISP如何选择识别CAD表格中的数据?

[复制链接]
发表于 2014-10-7 09:56:44 | 显示全部楼层 |阅读模式
CAD中的表格也有自动累加的功能很好用

但是

当一幅图中有很多表格时,能不能用LISP程序,

选择想各个表格中想要的数据进行自动累加?

请教各位大师,LISP如何选择识别出CAD表格中的数据,以便进行多个表格的累加计算。

谢谢

本帖子中包含更多资源

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

x

点评

哪来的 1750+299.5+587.8=2637.3 ?  发表于 2014-10-10 18:50
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-10-7 13:48:14 | 显示全部楼层
首先建议学会搜索。论坛里面有很多东西。
比如你想了解CAD表格 可以搜索“表格” 会有很多关于表格的介绍。
http://bbs.mjtd.com/thread-109060-1-1.html
这个就是G版关于表格详细介绍。
授人予鱼不如授人予渔。
希望能帮到你,
 楼主| 发表于 2014-10-7 14:37:44 | 显示全部楼层
wangshang323 发表于 2014-10-7 13:48
首先建议学会搜索。论坛里面有很多东西。
比如你想了解CAD表格 可以搜索“表格” 会有很多关于表格的介绍。 ...

说实话
之前就找到并研究了
再你说了以后
又好好研究了
但感觉G版的是写入整理
我想要的只是提出光标选定表格中的数字内容
感觉本质上是不同的
G版的代码太高深
实再找不到用什么方法
只是提出光标选定表格中的数字内容
不知大师可否指点一二

点评

Kye
G版的贴中确实有;;提取表格第2行第1列内容(princ (strcat "第2行第1列文字内容:" (setq str (vla-gettext table 2 1))))  发表于 2014-10-8 10:46
 楼主| 发表于 2014-10-8 11:28:24 | 显示全部楼层
G版的贴中确实有;;提取表格第2行第1列内容(princ (strcat "第2行第1列文字内容:" (setq str (vla-gettext table 2 1))))  
我想知道的是如何用光标选中取出数据内容,可G版的是事先指定行列啊。
请大师在费心指点一下
发表于 2014-10-8 21:51:47 | 显示全部楼层
  1. (defun c:tt () (cdr(assoc 1 (car(nentsel)))))
发表于 2014-10-8 23:01:06 | 显示全部楼层
ynhh 发表于 2014-10-8 11:28
G版的贴中确实有;;提取表格第2行第1列内容(princ (strcat "第2行第1列文字内容:" (setq str (vla-gettext t ...

估计是参数类型不清楚造成的。
比如 (setq str (vla-gettext table 2 1))))  这样获得了相应区域表格的内容
但是不知道变量str是什么类型
可以用(type  str)查看下,就知道提取出来的类型(一般是字符串)类型
如果是表格里面是数字 提出来想要做相应计算 就(atof str)就可以吧字符串转成数了、
之后可能会遇到 小数位数 四舍五入 等等问题。
这个你要自己写处理函数或找现成的的。
希望可以帮到你。

比如表格
 楼主| 发表于 2014-10-9 11:56:28 | 显示全部楼层
ZZXXQQ 发表于 2014-10-8 21:51


感谢超级版主的指点
可能是我太笨
你这程序多次偿试
均无法得不到想选择的 数据文字 的内容
命令行均提示如下

命令: TT
选择对象: ; 错误: 参数类型错误: listp <图元名: 7ef0fcc8>

请版主在百忙之中
有空的时候再指点一下
发表于 2014-10-11 09:40:26 | 显示全部楼层
单元格选择的一些用法,具体可参考VBA的帮助
  1. ;;选定指定范围单元格
  2. ;;语法(vla-SetSubSelection tb rowMin rowMax colMin colMax)
  3. ;;示例
  4. (vla-SetSubSelection tb 0 2 0 3)
  5. ;;获取当前选择单元格范围
  6. ;;语法 (vla-GetSubSelection tb rowMin rowMax colMin colMax)
  7. ;; rowMin rowMax colMin colMax为输出值
  8. ;;示例
  9. (vla-GetSubSelection tb 'rowMin 'rowMax 'colMin 'colMax)
  10. ;;选择光标位置单元格
  11. ;;语法(vla-Select tb wpt wvwVec wvwxvec wxaper wyaper allowOutside resultRowIndex resultColumnIndex)
  12. ;;resultRowIndex resultColumnIndex为当前选定单元格的行和列的值
  13. ;;示例
  14. (vla-Select
  15.   tb
  16.   (vlax-3d-point (getpoint))
  17.   (vlax-3d-point '(0 0 1))
  18.   (vlax-3d-point '(1 0 0))
  19.   1
  20.   1
  21.   :vlax-true
  22.   'r
  23.   'c
  24. )
  25. ;;选择指定位置区域的单元格
  26. ;;语法(vla-SelectSubRegion wpt1 wpt2  wvwVec wvwxVec seltype  bIncludeCurrentSelection  rowMin  rowMax  colMin  colMax)
  27. ;;rowMin  rowMax  colMin  colMax 为输出的行和列的值
  28. ;;示例
  29. (vla-SelectSubRegion
  30.   tb
  31.   (vlax-3d-point (setq p1 (getpoint)))
  32.   (vlax-3d-point (getcorner p1))
  33.   (vlax-3d-point '(0 0 1))
  34.   (vlax-3d-point '(1 0 0))
  35.   4
  36.   :vlax-true
  37.   'rowMin
  38.   'rowMax
  39.   'colMin
  40.   'colMax
  41. )
 楼主| 发表于 2014-10-11 09:46:43 | 显示全部楼层
xyp1964 指出的这些数据是从那里来的?


1750+299.5+587.8=2637.3

这三个数据,1750+299.5+587.8  ,   是分布在不同的CAD表格中的数据(均为各自表格中累加后的答案数据)

最后的答案 2637.3   ,就是这三个表格中的数据之和

这个问题可能有点难吧,连超级版主指点的试了都不行

我想可能是这些表格中的数据与表格混在一起了

无法直接拾取表格中的答案

感谢各位光临到此看见的朋友










本帖子中包含更多资源

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

x
 楼主| 发表于 2014-10-11 09:55:30 | 显示全部楼层
Gu_xl 发表于 2014-10-11 09:40
单元格选择的一些用法,具体可参考VBA的帮助

感谢 G 版主的指点
我把你的这些代码都试了
实再是无法做到用光标直接拾取表格中的内容
都是提示:  ; 错误: 参数类型错误: VLA-OBJECT nil
让你这么费心
我却没能领悟
实再过意不去
如太费费事劳神
就请大师不要费心了
感谢 G 版 和 Z 版
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-21 10:17 , Processed in 0.241198 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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