再求高手帮忙!!
<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='" & dwname & "')", 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> tylj.Open "select * from tylj where tyid=" & ty.Fields("cadid") & " order by xh asc", sjk, adOpenDynamic, adLockBatchOptimistic<BR> tylx = ty.Fields("tylx") '图元类型<BR> If tylx = "AcDbMText" Or tylx = "AcDbText" Then<BR> te ty.Fields("cadid"), ty.Fields("larer"), sjk '注记<BR> End If<BR> Do While Not tylj.EOF<BR> point.Open "select *from point where pointid=" & tylj.Fields("pointid") & " ", sjk, adOpenDynamic, adLockBatchOptimistic<BR> Select Case tylx<BR> Case "AcDbPolyline" '是多段线时<BR> ThisDrawing.SendCommand "_pline" & vbCr<BR> x = point.Fields("x")<BR> y = point.Fields("y")<BR> ThisDrawing.SendCommand x & "," & y & vbCr<BR> Case "AcDbLine" '是line线时<BR> ThisDrawing.SendCommand "_line" & vbCr<BR> x = point.Fields("x")<BR> y = point.Fields("y")<BR> ThisDrawing.SendCommand x & "," & y & vbCr<BR> End Select<BR> tylj.MoveNext<BR> point.Close<BR> Loop<BR> If tylx = "AcDbPolyline" Then<BR> ThisDrawing.SendCommand "c" & vbCr<BR> Else<BR> If tylx = "AcDbLine" Then<BR> ThisDrawing.SendCommand "" & vbCr<BR> End If<BR> End If<BR>tjkzsj ty.Fields("cadid"), dwname, tc<BR> tylj.Close<BR>ty.MoveNext<BR>Loop<BR>ty.Close<BR>MsgBox ("数据下载完毕")<BR>End Sub</P>
<P>Private Sub te(cadid, tc, sjk) '下载注记<BR> Dim text As New ADODB.Recordset<BR> Dim pointtext As New ADODB.Recordset<BR> text.Open "select * from tytext where cadid=" & cadid & "", sjk, adOpenDynamic, adLockBatchOptimistic<BR> pointtext.Open "select *from point where pointid in (select pointid from tytext where cadid=" & cadid & ")", sjk, adOpenDynamic, adLockBatchOptimistic<BR> ThisDrawing.SendCommand "_text" & vbCr<BR> ThisDrawing.SendCommand pointtext.Fields("x") & "," & pointtext.Fields("y") & vbCr<BR> ThisDrawing.SendCommand text.Fields("ztdx") & vbCr<BR> ThisDrawing.SendCommand 0 & vbCr<BR> ThisDrawing.SendCommand text.Fields("nr") & vbCr<BR> ThisDrawing.SendCommand "" & vbCr<BR> text.Close<BR> pointtext.Close<BR> <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> 'Set ssget = ThisDrawing.SelectionSets.Item("xzj")<BR> '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]