乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 19|回复: 19

[编程交流] 文本到excel工作表

[复制链接]

6

主题

26

帖子

20

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 06:32:50 | 显示全部楼层 |阅读模式
在某种情况下,我的一位同事拥有一个。lsp例程,该例程将从某个文件夹中的每个图形中收集所有文本元素,并将它们全部放在excel表中(每行一个文本元素)。
 
有人知道有什么常规可以做到这一点吗?
 
她有autocad 2008 LT(但有LT extender,因此她能够使用lisp例程)
 
这些图纸是存在的,因为有几百张,所以一次只绘制一张图纸的惯例是没有帮助的。
 
我会很惊讶,如果周围会有这样的东西(而且是免费的),但是嘿。。。询问是无妨的。
 
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 06:38:26 | 显示全部楼层
我相信这可以用LISP实现-我的CAD现在把我弄得一团糟,但当我把它整理好后,我很高兴看到我能为你写些什么
 
确实要提取每个文本元素吗?不仅仅是某一层上的一些?
回复

使用道具 举报

6

主题

26

帖子

20

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 06:41:37 | 显示全部楼层
 
需要每个文本元素的原因是,如果文本元素位于“正确”层,那么每个文本元素都不依赖于这个事实。
一旦一切都在Excel中,她就可以把它们整理出来,并很容易地将其减少到必须打印出来的几百个实体。更重要的是,在Excel中有所有可供选择的内容,然后是有一个预筛选列表,因为后者可能会或可能不会遗漏一系列元素。
 
除此之外,还有一个事实,那就是您必须建立检查特定图层的可能性,即使只是通过在例程中编辑,而不是通过循环来检查图形中的所有图层。
 
提前感谢您的调查。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 06:45:04 | 显示全部楼层
 
我明白你的意思了-在例程中检查LISP层并不太困难,但是当文本实体被放置在错误的层上时,总是有人为错误的可能性。
 
关于写入Excel,我可能会将数据写入CSV文件,这是一种更容易写入的Excel文件,并且需要更少的编码。从这里,您可以将信息复制粘贴到另一个Excel文件,或者在提取完成后将CSV文件保存为XLS
 
回复

使用道具 举报

12

主题

395

帖子

384

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 06:46:56 | 显示全部楼层
我只是好奇,当你说每个文本元素的时候,你的意思是如果一段文本说“你好,世界”(我知道是通用的),你是想在一行上说“你好”,还是在一行上说“你好”,在另一行上说“世界”?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 06:49:04 | 显示全部楼层
 
我把它理解为每一个文本实体在一个新的行上——但这是一个好问题。
回复

使用道具 举报

12

主题

395

帖子

384

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 06:52:21 | 显示全部楼层
这应该可以完成工作。
 
  1. (defun c:ttx ( / xlCells xlSheet xlSheets xlBook xlBooks xlApp column row drac ss ent expo x)
  2.          
  3. (vl-load-com)
  4. (setq    xlApp       (vlax-get-or-create-object "Excel.Application")
  5.    xlBooks  (vlax-get-property xlApp "Workbooks")
  6.    xlBook       (vlax-invoke-method xlBooks "Add")
  7.    xlSheets (vlax-get-property xlBook "Sheets")
  8.    xlSheet       (vlax-get-property xlSheets "Item" 1)
  9.    xlCells       (vlax-get-property xlSheet "Cells"))
  10. (vla-put-visible xlApp :vlax-true)
  11. (setq column 1
  12.    row    1
  13.    drac   -1
  14.    ss     (ssget "_X" (list (cons 0 "*TEXT"))))
  15. (repeat (sslength ss)
  16.    (setq ent  (ssname ss (setq drac (1+ drac)))
  17.          expo (vla-get-textstring (vlax-ename->vla-object ent)))
  18.    (if (<= row 65536)
  19.      (vlax-put-property xlCells "Item" row column expo)
  20.      (progn
  21.    (setq row    1
  22.          column (1+ column))
  23.    (vlax-put-property xlCells "Item" row column expo)
  24.    ); /else progn
  25.      ); /if
  26.    (setq row (1+ row))
  27.    ); /repeat
  28. (mapcar (function (lambda(x)
  29.              (vl-catch-all-apply
  30.            (function (lambda()
  31.                    (progn
  32.                      (vlax-release-object x)
  33.                      (setq x nil)))))))
  34.      (list xlCells xlSheet xlSheets xlBook xlBooks xlApp))
  35. (alert "Close Excel file manually")
  36. (gc)(gc)
  37. (princ)
  38. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 06:57:46 | 显示全部楼层
 
我一定没有读到他想在多个图纸上使用它,当然我可以让freerefill发布他的批处理程序,然后他们可以使用其中两个,这样他就不需要先打开所有的图纸。。。
 
不管怎样,你的代码都没有比我期望的少,李,除了你使用了(cdr(assoc 1(entget x)),而不是像李一样的vla-get文本字符串
回复

使用道具 举报

12

主题

395

帖子

384

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 07:00:48 | 显示全部楼层
 
好吧,我只是觉得DXF’ing稍微容易一点——仍然只有一行,而且比为了它而将所有对象转换为vla对象要快
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:02:39 | 显示全部楼层
这个想法是,如果一个有“hello world”和“goodmorning sunshine”,那么它将被放入一个单元格(.csv或.xls)中,作为“hello world”和另一个单元格,在下一行,“goodmorning sunshine”
 
谢谢你们的快速回复
 
Commandobill,你的代码正是我们所需要的,除了它只做一个绘图。这意味着,也许我可以通过在excel中使用宏或其他方式来解决这个问题,将所有数据附加到每个单独的表中。xls文件到一个大的。xls文件。
 
如果绘图位于桌面上,它确实会两次提到每个文本项。解决方案很简单,即不将图形放在桌面上,甚至不放在桌面上的文件夹中。换句话说,PEBCAK。
一旦我把测试图直接放在C上:它只复制了文本元素一次。
 
它确实将从每个后续图形中提取的数据附加到测试中。在其他图形中手动运行例程时的csv文件。
(仅供参考,我用直接位于C:路径上的一个文件夹中的两个图形进行了尝试)
 
当我有更多的时间时,我会对它进行更多的测试。
 
再次衷心感谢你们。非常感谢。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-10 15:07 , Processed in 1.017265 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表