tonyhuangg 发表于 2004-10-20 16:19:00

取dwg 文字信息

<DIV><FONT size=2>我这程序读有些图框里特定文字内容时,可以读出tagstring,但tagstring上的文字内容总读为空(textstring),帮忙看看,提取的属性对吗(vb6.0,用object库2004)</FONT></DIV>
<DIV><FONT size=2></FONT>        </DIV>
<DIV><FONT size=2></FONT>        </DIV>
<DIV><FONT size=2>Dim acadapp As AcadApplication<BR>Dim acaddoc As AcadDocument<BR>'初始化CAD<BR>On Error Resume Next<BR>Set acadapp = GetObject(, "autocad.application.16")<BR>If Err Then<BR>               Err.Clear<BR>               Set acadapp = CreateObject("autocad.application.16")<BR>               If Err Then<BR>                               MsgBox Err.Description<BR>                               Exit Sub<BR>               End If<BR>End If<BR>cd1.DefaultExt = ".dwg"<BR>cd1.Filter = "dwg dwg(*.dwg)"<BR>cd1.ShowOpen<BR>Dim getfilepath As String<BR>getfilepath = Trim(cd1.FileName)<BR>acadapp.Documents.Open (getfilepath)<BR>Set acaddoc = acadapp.ActiveDocument<BR>acadapp.Visible = False<BR>Dim s As String<BR>Dim i, j, k As Integer<BR>Dim blk As AcadBlock<BR>i = acaddoc.Blocks.Count</FONT></DIV>
<DIV>        </DIV>
<DIV><FONT size=2>For k = 1 To i<BR>               s = acaddoc.Blocks.Item(k - 1).Name<BR>               s = UCase(Trim(s))<BR>               MsgBox (s)<BR>               If s = "TBZ00" Then<BR>                                               Set blk = acaddoc.Blocks.Item(k - 1)<BR>                                       Exit For<BR>               Else<BR>                                       s = ""<BR>               End If<BR>Next<BR>MsgBox (s)<BR>s = ""<BR>Dim tag, prompt, value As String<BR>        For i = 0 To blk.Count - 1<BR>                                                       Dim obj As AcadObject<BR>                                                       Set obj = blk.Item(i)<BR>                                                       s = obj.ObjectName<BR>                                                       If s = "AcDbAttributeDefinition" Then<BR>                                                                                       Dim attrObj As AcadAttribute<BR>                                                                                       Set attrObj = obj<BR>                                                                                       tag = ""<BR>                                                                                       tag = attrObj.TagString<BR>                                                                                       If UCase(tag) = "STAGE" Then<BR>                                                                                                                               prompt = attrObj.PromptString<BR>                                                                                                                               value = attrObj.TextString<BR>                                                                                                                               MsgBox (value)<BR>                                                                                                                               MsgBox "Tag: " &amp; tag &amp; vbCr &amp; "Value: " &amp; value &amp; vbCr &amp; "Value: " &amp; value &amp; vbCr<BR>                                                                                                                               Exit For<BR>                                                                                       End If<BR>                                                       <BR>                                                       End If<BR>       Next</FONT></DIV>
<DIV>        </DIV><FONT size=2>
<DIV><BR>        rtb1.Text = ""</DIV>
<DIV>        </DIV>
<DIV>        rtb1.Text = value<BR>                                                               <BR>        </DIV>
<DIV>        </DIV>
<DIV>        </DIV>
<DIV>        </DIV>
<DIV>acaddoc.Close<BR>'acadapp.Quit</FONT></DIV>

雪山飞狐_lzh 发表于 2004-10-20 20:48:00

你应该处理BlockRef对象而不是Block对象

aaa000999 发表于 2004-11-20 21:07:00

挺好的

cad-dragon 发表于 2004-11-27 22:09:00

2搂说得对!
页: [1]
查看完整版本: 取dwg 文字信息