乐筑天下

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

[编程交流] 在XYZ坐标系下提取文本数据

[复制链接]

7

主题

34

帖子

29

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-5 17:30:31 | 显示全部楼层 |阅读模式
大家好,
 
附件:测试图纸。图纸
 
我想检索文本的内容,文本在Autocad中放置在某个XYZ坐标处(相同的坐标,始终适用于所有图形)。
 
[参考附件]:“表面积”和“重量”下面的文字,大多是我试图获取的文字。
 
这些文本有时以单行文本、多行文字或块内文本的形式出现。。
但它们总是出现在同一个坐标系中。
 
有人能帮我吗?
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 17:39:26 | 显示全部楼层
我认为本文应该是标题栏的一部分,并作为属性值驻留在其中。。。所以我强烈建议你保持标题栏的原样——不要将其分解(爆裂)。。。通过这种方式,您将能够根据其标记名轻松获取属性值。。。您发布的图形不足以满足您的特定要求-即使文本的位置相同也无关紧要-具有标题栏的图形可以独立于UCS原点放置,但如果它们准备用于批量打印或发布,我还建议它们不要更改位置。。。因此,请修改所有DWG,使其具有标题栏,您可以轻松操作提取数据或更改文本/字段的值。。。
回复

使用道具 举报

7

主题

34

帖子

29

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-5 17:55:54 | 显示全部楼层
感谢马科的回复,
这些图纸是由大规模发布图纸的管道软件创建的,
它不会将值创建为块属性。。。
另外,之前附上的图纸是一个代表性的图纸,很抱歉,我不能给你的图纸,因为它是我办公室的机密图纸。。。
有没有办法从坐标处的图形中获取文本值
 
PS:
我的想法是检索数据;要将图形转换为dxf,请使用文本查找程序使用正则表达式查找dxf代码中的文本。
(AcDbText)
10
205.6000061
20
11.89999962
30
0
40
2.
1.
0.787719
7.
)
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:04:35 | 显示全部楼层
试试这个未经测试的
 
(setq ss(SSGET“C”'(2 2)'(0 0)))
(如果(/=ss nil)(princ“Object found”)(exit));如果未找到任何内容,则退出注释
(如果(>(sslength ss)1)(退出));对于许多对象
(setq obj(vlax ename->vla对象(ssname ss 0)))
(setq isname(vla get Objectname obj))
(if(=isname“AcDbText”)(警报“Text String found”(vla get textstring obj)))
(if(=isname“AcDbMText”)(警报“MText String found”(vla get textstring obj)))
回复

使用道具 举报

7

主题

34

帖子

29

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-5 18:10:41 | 显示全部楼层
谢谢你的代码BIGAL。
 
我试图从那里修改代码,但AutoCAD说“找到了对象;错误:参数太多”。。。
 
 
  1. (defun c:test5 ()
  2. (setq
  3.    point1 '(496.344 -32.5268 0.0)
  4.    point2 '(514.247 -41.9455 0.0)
  5. )
  6. (setq ss (ssget "C" point1 point2))
  7. (if (/= ss nil)(princ "Object found")(exit)) ; note exits if nothing found
  8. (if (> (sslength ss) 1 )(exit)) ; to many objects
  9. (setq obj (vlax-ename->vla-object (ssname ss 0)))
  10. (setq isname (vla-get-Objectname obj))
  11. (if (= isname "AcDbText")(alert "Text String found " (vla-get-textstring obj)))
  12. (if (= isname "AcDbMText")(alert "MText String found " (vla-get-textstring obj)))
  13. )

 
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 18:19:18 | 显示全部楼层
像这样的?
 
  1. (defun c:Test  (/ ss i lst)
  2. ;; Tharwat - 12.Jul.2016 ;;
  3. (if (setq ss (ssget "_C"
  4.                      '(496.344 -32.5268 0.0)
  5.                      '(514.247 -41.9455 0.0)
  6.                      '((0 . "*TEXT"))))
  7.    (progn
  8.      (repeat (setq i (sslength ss))
  9.        (setq lst
  10.               (cons
  11.                 (cdr (assoc 1 (entget (ssname ss (setq i (1- i))))))
  12.                 lst))
  13.        )
  14.      (if (and lst (< (length lst) 11))
  15.        (alert
  16.          (strcat "Text string(s) :\n"
  17.                  (apply 'strcat
  18.                         (mapcar '(lambda (o) (strcat o "\n"))
  19.                                 (reverse lst)))))
  20.        (progn
  21.          (princ "\nText string(s) :\n")
  22.          (mapcar '(lambda (o) (princ (strcat o "\n")))
  23.                  (reverse lst))
  24.          (textscr)
  25.          )
  26.        )
  27.      )
  28.    (princ "\nNo text(s) found !")
  29.    )
  30. (princ)
  31. )
回复

使用道具 举报

7

主题

34

帖子

29

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-5 18:23:40 | 显示全部楼层
啊,
就是我要找的那个。。。
 
谢谢塔瓦特,
我会在我的循环文件代码中包含你的代码。。(这样可以检索文件夹中所有文件的数据)
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 18:36:19 | 显示全部楼层
很好,不客气。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 05:34 , Processed in 0.606519 second(s), 68 queries .

© 2020-2025 乐筑天下

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