在XYZ坐标系下提取文本数据
大家好,附件:测试图纸。图纸
我想检索文本的内容,文本在Autocad中放置在某个XYZ坐标处(相同的坐标,始终适用于所有图形)。
[参考附件]:“表面积”和“重量”下面的文字,大多是我试图获取的文字。
这些文本有时以单行文本、多行文字或块内文本的形式出现。。
但它们总是出现在同一个坐标系中。
有人能帮我吗? 我认为本文应该是标题栏的一部分,并作为属性值驻留在其中。。。所以我强烈建议你保持标题栏的原样——不要将其分解(爆裂)。。。通过这种方式,您将能够根据其标记名轻松获取属性值。。。您发布的图形不足以满足您的特定要求-即使文本的位置相同也无关紧要-具有标题栏的图形可以独立于UCS原点放置,但如果它们准备用于批量打印或发布,我还建议它们不要更改位置。。。因此,请修改所有DWG,使其具有标题栏,您可以轻松操作提取数据或更改文本/字段的值。。。 感谢马科的回复,
这些图纸是由大规模发布图纸的管道软件创建的,
它不会将值创建为块属性。。。
另外,之前附上的图纸是一个代表性的图纸,很抱歉,我不能给你的图纸,因为它是我办公室的机密图纸。。。
有没有办法从坐标处的图形中获取文本值
PS:
我的想法是检索数据;要将图形转换为dxf,请使用文本查找程序使用正则表达式查找dxf代码中的文本。
(AcDbText)
10
205.6000061
20
11.89999962
30
0
40
2.
1.
0.787719
7.
) 试试这个未经测试的
(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))) 谢谢你的代码BIGAL。
我试图从那里修改代码,但AutoCAD说“找到了对象;错误:参数太多”。。。
(defun c:test5 ()
(setq
point1 '(496.344 -32.5268 0.0)
point2 '(514.247 -41.9455 0.0)
)
(setq ss (ssget "C" point1 point2))
(if (/= ss nil)(princ "Object found")(exit)) ; note exits if nothing found
(if (> (sslength ss) 1 )(exit)) ; to many objects
(setq obj (vlax-ename->vla-object (ssname ss 0)))
(setq isname (vla-get-Objectname obj))
(if (= isname "AcDbText")(alert "Text String found " (vla-get-textstring obj)))
(if (= isname "AcDbMText")(alert "MText String found " (vla-get-textstring obj)))
)
像这样的?
(defun c:Test(/ ss i lst)
;; Tharwat - 12.Jul.2016 ;;
(if (setq ss (ssget "_C"
'(496.344 -32.5268 0.0)
'(514.247 -41.9455 0.0)
'((0 . "*TEXT"))))
(progn
(repeat (setq i (sslength ss))
(setq lst
(cons
(cdr (assoc 1 (entget (ssname ss (setq i (1- i))))))
lst))
)
(if (and lst (< (length lst) 11))
(alert
(strcat "Text string(s) :\n"
(apply 'strcat
(mapcar '(lambda (o) (strcat o "\n"))
(reverse lst)))))
(progn
(princ "\nText string(s) :\n")
(mapcar '(lambda (o) (princ (strcat o "\n")))
(reverse lst))
(textscr)
)
)
)
(princ "\nNo text(s) found !")
)
(princ)
)
啊,
就是我要找的那个。。。
谢谢塔瓦特,
我会在我的循环文件代码中包含你的代码。。(这样可以检索文件夹中所有文件的数据) 很好,不客气。
页:
[1]