laoxie_198 发表于 2006-11-24 11:02:00

再求高手帮忙!!

<P>下面我的代码怎么总是有错误?</P>
<P>读取不了集合里的图元,不知道问题出在那?请高手指点</P>

<P>Private Sub CommandButton3_Click()<BR>Dim sjk As New ADODB.Connection<BR>Dim dw As New ADODB.Recordset<BR>Dim text As New ADODB.Recordset<BR>Dim ty As New ADODB.Recordset<BR>Dim tylj As New ADODB.Recordset<BR>Dim point As New ADODB.Recordset<BR>Dim pointtext As New ADODB.Recordset<BR>Dim sjklj, dwname As String<BR>Dim x, y As Double<BR>Dim tylx As String<BR>sjklj = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=hbcad"<BR>sjk.Open sjklj '打开库连接<BR>dwname = InputBox("请输入单位名称")<BR>ty.Open "select * from tysx where dwid in (select dwid from tyname where dwname='" &amp; dwname &amp; "')", sjk, adOpenDynamic, adLockBatchOptimistic<BR>If ty.EOF Then<BR>MsgBox ("库中没有此单位")<BR>End<BR>End If</P>
<P>Do While Not ty.EOF<BR>tc = ty.Fields("larer") '图层<BR>&nbsp; tylj.Open "select * from tylj where tyid=" &amp; ty.Fields("cadid") &amp; " order by xh asc", sjk, adOpenDynamic, adLockBatchOptimistic<BR>&nbsp; tylx = ty.Fields("tylx") '图元类型<BR>&nbsp; If tylx = "AcDbMText" Or tylx = "AcDbText" Then<BR>&nbsp; te ty.Fields("cadid"), ty.Fields("larer"), sjk '注记<BR>&nbsp; End If<BR>&nbsp; Do While Not tylj.EOF<BR>&nbsp; point.Open "select *from point where pointid=" &amp; tylj.Fields("pointid") &amp; " ", sjk, adOpenDynamic, adLockBatchOptimistic<BR>&nbsp;&nbsp; Select Case tylx<BR>&nbsp;&nbsp;&nbsp; Case "AcDbPolyline" '是多段线时<BR>&nbsp;&nbsp;&nbsp; ThisDrawing.SendCommand "_pline" &amp; vbCr<BR>&nbsp;&nbsp;&nbsp; x = point.Fields("x")<BR>&nbsp;&nbsp;&nbsp; y = point.Fields("y")<BR>&nbsp;&nbsp;&nbsp; ThisDrawing.SendCommand x &amp; "," &amp; y &amp; vbCr<BR>&nbsp;&nbsp;&nbsp; Case "AcDbLine" '是line线时<BR>&nbsp;&nbsp;&nbsp; ThisDrawing.SendCommand "_line" &amp; vbCr<BR>&nbsp;&nbsp;&nbsp; x = point.Fields("x")<BR>&nbsp;&nbsp;&nbsp; y = point.Fields("y")<BR>&nbsp;&nbsp;&nbsp; ThisDrawing.SendCommand x &amp; "," &amp; y &amp; vbCr<BR>&nbsp; End Select<BR>&nbsp; tylj.MoveNext<BR>&nbsp; point.Close<BR>&nbsp;Loop<BR>&nbsp;If tylx = "AcDbPolyline" Then<BR>&nbsp;ThisDrawing.SendCommand "c" &amp; vbCr<BR>&nbsp;Else<BR>&nbsp; If tylx = "AcDbLine" Then<BR>&nbsp; ThisDrawing.SendCommand "" &amp; vbCr<BR>&nbsp; End If<BR>&nbsp;End If<BR>tjkzsj ty.Fields("cadid"), dwname, tc<BR>&nbsp;tylj.Close<BR>ty.MoveNext<BR>Loop<BR>ty.Close<BR>MsgBox ("数据下载完毕")<BR>End Sub</P>
<P>Private Sub te(cadid, tc, sjk) '下载注记<BR>&nbsp;Dim text As New ADODB.Recordset<BR>&nbsp;Dim pointtext As New ADODB.Recordset<BR>&nbsp;text.Open "select * from tytext where cadid=" &amp; cadid &amp; "", sjk, adOpenDynamic, adLockBatchOptimistic<BR>&nbsp;pointtext.Open "select *from point where pointid in (select pointid from tytext where cadid=" &amp; cadid &amp; ")", sjk, adOpenDynamic, adLockBatchOptimistic<BR>&nbsp;&nbsp;&nbsp; ThisDrawing.SendCommand "_text" &amp; vbCr<BR>&nbsp;&nbsp;&nbsp; ThisDrawing.SendCommand pointtext.Fields("x") &amp; "," &amp; pointtext.Fields("y") &amp; vbCr<BR>&nbsp;&nbsp;&nbsp; ThisDrawing.SendCommand text.Fields("ztdx") &amp; vbCr<BR>&nbsp;&nbsp;&nbsp; ThisDrawing.SendCommand 0 &amp; vbCr<BR>&nbsp;&nbsp;&nbsp; ThisDrawing.SendCommand text.Fields("nr") &amp; vbCr<BR>&nbsp;&nbsp;&nbsp; ThisDrawing.SendCommand "" &amp; vbCr<BR>&nbsp;&nbsp;&nbsp; text.Close<BR>&nbsp; pointtext.Close<BR>&nbsp; <BR>End Sub<BR>Private Sub tjkzsj(cadid, dwname, tc) '将新增的图元添加上扩展数据<BR>wj = "d:\a.txt"<BR>Open wj For Append As #1<BR>Dim ty As AcadEntity<BR>Dim layer As AcadLayer<BR>Set layer = ThisDrawing.Layers.Add(tc)<BR>Dim i As Long<BR>i = ThisDrawing.ModelSpace.Count - 1;为什么我的i值总是-1呀!cad里明明有图元的呀<BR>Set ty = ThisDrawing.ModelSpace.Item(i)</P>
<P>'Dim ssget As AcadSelectionSet<BR>'On Error Resume Next<BR>'If Not IsNull(ThisDrawing.SelectionSets.Item("xzj")) Then<BR>&nbsp;'Set ssget = ThisDrawing.SelectionSets.Item("xzj")<BR>&nbsp;'ssget.Delete<BR>'End If<BR>'Set ssget = ThisDrawing.SelectionSets.Add("xzj")<BR>'ssget.Select acSelectionSetLast<BR>'For Each ty In ssget<BR>ty.layer = tc<BR>ty.Update<BR>Dim datatype(0 To 7) As Integer<BR>Dim data(0 To 7) As Variant<BR>datatype(0) = 1001: data(0) = "xdata"<BR>datatype(1) = 1000: data(1) = dwname<BR>datatype(2) = 1003: data(2) = "0"<BR>datatype(3) = 1040: data(3) = 1.232<BR>datatype(4) = 1041: data(4) = cadid<BR>datatype(5) = 1070: data(5) = 5656<BR>datatype(6) = 1071: data(6) = 32332<BR>datatype(7) = 1042: data(7) = 10<BR>ty.SetXData datatype, data<BR>ThisDrawing.Application.Update<BR>Dim xtype As Variant<BR>Dim xdata As Variant<BR>ty.GetXData "", xtpye, xdata<BR>Write #1, tc, xdata(4)<BR>'Next ty<BR>'Write #1, tc, xdata(4)<BR>Close #1<BR>'kckzsj ty<BR>'ssget.Delete<BR>End Sub</P>
页: [1]
查看完整版本: 再求高手帮忙!!