找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 6189|回复: 25

[已解决] 将CAD断面图中所需数据导入到指定的EXCEL表格

[复制链接]
发表于 2015-1-12 13:19:21 | 显示全部楼层 |阅读模式
悬赏25D豆已解决
本帖最后由 lizhgang.jin 于 2015-1-13 21:17 编辑

已经画了很多很多断面图了,以前将每个断面图的桩号和对应的面积输入到计算表的时候即费时又容易出错。见贵论坛的编程大师真是很多,而且很乐于帮助我,今天又来劳烦各位大师了,希望能解决我的问题。想达到的效果是:运行工具后,根据提示选择第一个断面桩号,再选对应的面积,依次类推,直到选完,然后桩号和面积自动输入到C 盘下我给定样式的表格中。图中的桩号和面积都是我自己量好的,不须要大师再编程量。只需提取对应的桩号及面积到我指定样式的表格中即可。希望大师再次伸出您们友爱的手,让我从几百个断面面积输入中解脱出来,提前感谢了。具体excel样式及CAD图在我发的附件里。(好像有点难度)
样式1.JPG
样式2.JPG

参考文件.rar

93.69 KB, 下载次数: 31, 下载积分: D豆 -1 , 活跃度 1

最佳答案

查看完整内容

用模板文件最好是一次写出,否则中断后再去判断往哪个格写更麻烦 如果是希望点一个写一个就像上面写的,停止后其它的自己在Excel中手动处理
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1268个

财富等级: 财源广进

发表于 2015-1-12 13:19:22 | 显示全部楼层
lizhgang.jin 发表于 2015-1-14 16:19
老师是我的错,我以为您都做了最难的部分,其它的部分应该是举手之劳,我想错了。不过还想请您改一下下, ...

用模板文件最好是一次写出,否则中断后再去判断往哪个格写更麻烦

如果是希望点一个写一个就像上面写的,停止后其它的自己在Excel中手动处理

点评

老师您的程序我已经改动了一下,很完美了,把代码里的引和S=去掉,其它不变,就可以直接去任何断面图了,CAD桩号随便写什么形式之要有+或-分开就行了。已经很好了,谢谢。不用在EXCEL里面处理,你的程序很棒!  详情 回复 发表于 2015-1-14 16:35
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

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

使用道具 举报

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2015-1-12 15:27:50 | 显示全部楼层
直接框选,注意要一一对应
  1. (defun c:tt (/ ss lst)
  2.   (if (setq ss (ssget '((0 . "*Text"))))
  3.     (progn
  4.       (setq
  5.         lst (mapcar
  6.               '(lambda (x)
  7.                  (if (= (xdrx_getpropertyvalue x "IsA") "AcDbText")
  8.                    (xdrx_getpropertyvalue x "Position" "Textstring")
  9.                    (xdrx_getpropertyvalue x "Location" "Textstring")
  10.                  )
  11.                )
  12.               (xdrx_pickset->ents ss)
  13.             )
  14.         lst (xd::list:groupbyindex lst 18.0) ;_根据行距自己调整
  15.         lst (mapcar '(lambda (x)
  16.                        (mapcar '(lambda        (a / i)
  17.                                   (acad_strlsort
  18.                                     (if        (wcmatch a "引*")
  19.                                       (progn
  20.                                         (or (setq
  21.                                               i        (vl-string-search "-" a)
  22.                                             )
  23.                                             (setq
  24.                                               i        (vl-string-search "+" a)
  25.                                             )
  26.                                         )
  27.                                         (substr a (1+ i))
  28.                                       ) ;_0
  29.                                       (car (xdrx_string_regexps
  30.                                              "[0-9]+.[0-9]+"
  31.                                              a
  32.                                            )
  33.                                       )
  34.                                     )
  35.                                   )
  36.                                 )
  37.                                x
  38.                        )
  39.                      )
  40.                     (mapcar 'cdr (cdr lst))
  41.             )
  42.         lst (vl-sort lst '(lambda (x1 x2) (< (car x1) (car x2))))
  43.       )
  44.       (xdex_book_open "c:/桩号面积.xls");_自己做好模板文件放到 C 盘
  45.       (xdex_book_getActiveSheet)
  46.       (xdex_cell_writerange 2 0 t lst)
  47.       (xdex_book_save)
  48.       (xdex_book_close)
  49.     )
  50.   )
  51.   (princ)
  52. )

点评

老师我说的建议能弄吗?  详情 回复 发表于 2015-1-13 21:15
选择对象: ; 错误: no function definition: XD:IST:GROUPBYINDEX 老师我的CAD不知什么问题加载晓东的那个插件总是错误,要是能不需多余加载就能直接导入到我提供的EXCEL中就好了。 有两点进行说明一下: 1  详情 回复 发表于 2015-1-12 17:18
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

 楼主| 发表于 2015-1-12 17:18:18 | 显示全部楼层
本帖最后由 lizhgang.jin 于 2015-1-12 17:32 编辑
st788796 发表于 2015-1-12 15:27
直接框选,注意要一一对应

选择对象:
; 错误: no function definition: XD::LIST:GROUPBYINDEX

老师我的CAD不知什么问题按论坛说的方法加载晓东的那个插件总是错误我是CAD2005,要是能不需多余加载就能直接导入到我提供的EXCEL中就好了。
有两点进行说明一下:
1、还是不要框选取,因为我们测量一个断面图上可能要标好几个面积,那几个面积在断面图上可能不是像我这样放在桩号下面,我只是为了便于查看才标到桩号下面的,而且可能一个桩号既有开挖面积也有回填面积等(如果是大坝填筑量那按填筑料分面积还要多些),所以还是人工对应的选,以方便计算不同的工程量。
2、程序最好是直接的LSP文件。因为虽然晓东工具很强大,但说实话有的CAD 装的软件较多,容易出线不兼容,老出错。比方我们搞测量的就装了CASS/纬地道路、飞时达等很多常用软件。麻烦了。

最后需要的同志和有更好创意的同学们帮顶一下了。

点评

楼主的程序我终于可以试用了,很可惜运行没有结果,EXCEL表格里没任何东西。 我的需求的本质就是提取CAD中的文本到EXCEL特定单元格,要能批量。数字前面的汉字和符号,这些都不要紧我自己可以批处理。不知楼主编的  详情 回复 发表于 2015-1-13 22:39
点选前处理简单,有思路了去找对应api的v/alisp函数替代即可  详情 回复 发表于 2015-1-12 17:51
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2015-1-12 17:51:15 来自手机 | 显示全部楼层
lizhgang.jin 发表于 2015-1-12 17:18
选择对象:
; 错误: no function definition: XD:IST:GROUPBYINDEX


点选前处理简单,有思路了去找对应api的v/alisp函数替代即可

点评

老师我的建议能弄吗  详情 回复 发表于 2015-1-13 21:19
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

 楼主| 发表于 2015-1-12 19:18:21 | 显示全部楼层
xd-lisp-lib.vlx我的级别不够下不了

点评

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

使用道具 举报

 楼主| 发表于 2015-1-13 21:15:14 | 显示全部楼层
st788796 发表于 2015-1-12 15:27
直接框选,注意要一一对应

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

使用道具 举报

 楼主| 发表于 2015-1-13 21:19:09 | 显示全部楼层
csharp 发表于 2015-1-12 17:51
点选前处理简单,有思路了去找对应api的v/alisp函数替代即可

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2015-1-13 21:26:51 | 显示全部楼层
lizhgang.jin 发表于 2015-1-12 19:18
xd-lisp-lib.vlx我的级别不够下不了

你再有3个积分就够了。

点评

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

使用道具 举报

 楼主| 发表于 2015-1-13 21:35:16 | 显示全部楼层
XDSoft 发表于 2015-1-13 21:26
你再有3个积分就够了。

好的能下了,再试试

点评

不知坛主看了我的需求能否帮助一下,我个人认为,提取数据很简单,我的常青藤工具可以批量提取面积到EXECL表格它是一个数据一个单元格,可是我的计算表是合并单元格了的。直接粘帖不行。所以我才提出来,很多人都需  详情 回复 发表于 2015-1-13 21:42
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

 楼主| 发表于 2015-1-13 21:42:22 | 显示全部楼层
本帖最后由 lizhgang.jin 于 2015-1-13 22:02 编辑
lizhgang.jin 发表于 2015-1-13 21:35
好的能下了,再试试

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

使用道具 举报

 楼主| 发表于 2015-1-13 22:39:47 | 显示全部楼层
lizhgang.jin 发表于 2015-1-12 17:18
选择对象:
; 错误: no function definition: XD:IST:GROUPBYINDEX

楼主的程序我终于可以试用了,很可惜运行没有结果,EXCEL表格里没任何东西。
我的需求的本质就是提取CAD中的文本到EXCEL特定单元格,要能批量。数字前面的汉字和符号,这些都不要紧我自己可以批处理。不知楼主编的程序试运行没有,我运行不成功。

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2015-1-14 09:47:11 | 显示全部楼层
lizhgang.jin 发表于 2015-1-13 22:39
楼主的程序我终于可以试用了,很可惜运行没有结果,EXCEL表格里没任何东西。
我的需求的本质就是提取CAD ...

给你用 COM 方式写个例子,只考虑新建文件,不考虑追加
拾取过滤及字符串处理使用 XDAPI
  1. (defun c:tt (/ _putcelltext excel wks sht _range cells zh area e a str1 str2)
  2.   (defun _putcelltext (cells row col str /)
  3.     (vlax-invoke
  4.       (vlax-get-property
  5.         (vlax-get-property _range 'offset row (1- col))
  6.         'Resize
  7.         2
  8.       )
  9.       'Merge
  10.     )
  11.     (vlax-put-property
  12.       (variant-value
  13.         (vlax-get-property
  14.           cells
  15.           'Item
  16.           (cond
  17.             ((zerop row) 1)
  18.             ((= row 1) 3)
  19.             (t (+ 2 row))
  20.           )
  21.           col
  22.         )
  23.       )
  24.       'value2
  25.       str
  26.     )
  27.   )
  28.   (if (setq excel (vlax-create-object "Excel.Application"))
  29.     (progn
  30.       (vlax-put excel "Visible" 1)
  31.       (setq wks (vlax-get excel 'WorkBooks))
  32.       (vlax-invoke wks 'Add)
  33.       (setq sht           (vlax-get excel 'ActiveSheet)
  34.             _range (vlax-get-property sht 'Range "A1")
  35.             cells  (vlax-get sht 'Cells)
  36.       )
  37.       (setq j 0)
  38.       (vlax-put-property
  39.         (vlax-get-property sht 'Columns)
  40.         'HorizontalAlignment
  41.         3
  42.       )
  43.       (_putcelltext cells 0 1 "桩号")
  44.       (_putcelltext cells 0 2 "断面面积")
  45.       (while (and (setq
  46.                     e (car (xdrx_entsel "\n拾取桩号: " '((1 . "引*"))))
  47.                   )
  48.                   (setq str1 (xdrx_getpropertyvalue e "textstring"))
  49.                   (setq
  50.                     a (car (xdrx_entsel "\n拾取面积.:" '((1 . "S=*"))))
  51.                   )
  52.                   (setq str2 (xdrx_getpropertyvalue a "textstring"))
  53.              )
  54.         (or (setq i (vl-string-search "-" str1))
  55.             (setq i (vl-string-search "+" str1))
  56.         )
  57.         (setq zh (substr str1 (1+ i))) ;_0
  58.         (setq area (car        (xdrx_string_regexps
  59.                           "[0-9]+.[0-9]+"
  60.                           str2
  61.                         )
  62.                    )
  63.         )
  64.         (_putcelltext cells (1+ j) 1 zh)
  65.         (_putcelltext cells (1+ j) 2 area)
  66.         (setq j (+ 2 j))
  67.       )
  68.       (vlax-invoke
  69.         (vlax-get excel 'activeworkbook)
  70.         'Saveas
  71.         "c:\\桩号面积.xls"
  72.       )
  73.       (vlax-release-object excel)
  74.     )
  75.   )
  76.   (princ)
  77. )

点评

还有个问题,这个图我能用,别的图就用不了了,比方说桩号不是引了,或者就是0+45或0-45或0+00之类的,我想请您再改改,只认数字和符号。这样所有的图都可以用了。  详情 回复 发表于 2015-1-14 11:57
老师你的此程序试用了,非常好,可用。希望能兴建我发的附件中的表格样式,最后的要求了,希望帮忙老师满足,太谢谢了!  详情 回复 发表于 2015-1-14 11:40
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 15:30 , Processed in 0.491381 second(s), 64 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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