如何提取AutoCAD文件中的文本内容?(200)

  • 主题发起人 主题发起人 japhe
  • 开始时间 开始时间
J

japhe

Unregistered / Unconfirmed
GUEST, unregistred user!
如何提取AutoCAD文件中的文本内容? 目前采用的方法:1、创建Ole对象 obj_ACad := CreateOleObject('AutoCAD.Application');2、打开AutoCAD文件 obj_Doc := obj_ACad.Documents.Open(ACadFile);3、遍历CAD中的对象,提取文本内容 iCnt := obj_ModelSpace.Count; for i := 0 to iCnt - 1 do begin mName := obj_ModelSpace.item(i).ObjectName; if SameText(mName, 'AcDbText') or SameText(mName, 'AcDbMText') then begin mStrings.Add(obj_ModelSpace.item(i).TextString); end; end;由于在实际图片中文本内容占用比例很小,大部分是线条等其他图元对象,因此,采用上述方法存在性能问题。求高效处理方法,谢谢!
 
不知道。
 
Sub Example_Text_Select() On Error Resume Next Dim ssetObj As AcadSelectionSet Set ssetObj = ThisDrawing.SelectionSets.Add("TEST_SSET") 'Set ssetObj = ThisDrawing.SelectionSets.Item("TEST_SSET") ssetObj.Clear ' Add objects to a selection set by prompting user to select on the screen Dim filterType(0) As Integer Dim filterData(0) As Variant filterType(0) = 0 '提示用户在屏幕上选择文字 filterData(0) = "Text" 'filterData(1) = "text" ssetObj.Select acSelectionSetAll, , , filterType, filterData MsgBox ssetObj.Count For i = 0 To ssetObj.Count - 1 Example_ObjectIdToText ssetObj.Item(i).ObjectID 'MsgBox ssetObj.Item(i).ObjectName Next i ThisDrawing.SelectionSets.Item("TEST_SSET").DeleteEnd SubSub Example_ObjectIdToText(ByVal objId As Long) Dim mt As AcadText Set mt = ActiveDocument.ObjectIdToObject(objId) MsgBox mt.TextString mt.TextString = objIdEnd Sub说明:该方法可以快速获取单行文本对象,但是不能处理“块”中的单行文本对象
 
谢谢,方法不错!希望能找到把“块”一起处理的代码。
 
不清楚呢。--------------------www.gimido.com到这看看
 
用ObjectDBX
 
ObjectDBX需要好多钱来买啊。。。还有cadimportvcl也很贵的啊。。。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部