readkey函数在这里
Private Sub readkey(dxfgroup As Integer, dxfvalue As String)
Static riga$
Line Input #FINP, riga$
dxfgroup = Val(riga$)
Line Input #FINP, riga$
dxfvalue = UCase(riga$)
End Sub
Public Function LoadDXFobj(nomedxf As String) As Integer
Dim iv As Integer
Dim vertNum As Integer, objNum As Integer
Dim TriangleNum As Integer
Dim LTF As VERTEX, RBB As VERTEX
Dim Mat(3) As GLfloat
Dim Nr As GLfloat, w0 As GLfloat, w1 As GLfloat, w2 As GLfloat, v0 As GLfloat, v1 As GLfloat, v2 As GLfloat
On Error GoTo rdxf_err
Open nomedxf For Input As FINP
stato = 0
lista1 = -1
Do While Not (EOF(FINP))
readkey dxfgroup, dxfvalue
Select Case stato
Case 0
If dxfgroup = 0 And dxfvalue = "SECTION" Then
stato = 1
End If
Case 1
If dxfgroup = 2 And dxfvalue = "ENTITIES" Then
stato = 2
Else
stato = 0
End If
Case 2
If dxfgroup = 0 And dxfvalue = "POLYLINE" Then
readkey dxfgroup, dxfvalue
objName = dxfvalue
readkey dxfgroup, dxfvalue
readkey dxfgroup, dxfvalue
readkey dxfgroup, dxfvalue
TriangleNum = Val(dxfvalue)
ReDim Triangles(TriangleNum)
readkey dxfgroup, dxfvalue
col = Val(dxfvalue)
iv = 0
stato = 3
End If
Case 3
Select Case dxfgroup
Case 10
vert.x = Val(dxfvalue)
If vert.x > LTF.x Then LTF.x = vert.x
If vert.y > LTF.y Then LTF.y = vert.y
If vert.Z > LTF.Z Then LTF.Z = vert.Z
If vert.x < RBB.x Then RBB.x = vert.x
If vert.y < RBB.y Then RBB.y = vert.y
If vert.Z < RBB.Z Then RBB.Z = vert.Z
Case 20
vert.y = Val(dxfvalue)
Case 30
vert.Z = Val(dxfvalue)
Case 62
col = Val(dxfvalue)
Case 70
If dxfvalue = "128" Then
stato = 4
GoTo goNextStato
End If
iv = iv + 1
objVertex(iv) = vert
End Select
goNextStato:
Case 4
iv = 0
lista1 = lista1 + 1
GetNextVertIndex:
Select Case dxfgroup
Case 0
readkey dxfgroup, dxfvalue
GoTo GetNextVertIndex
Case 8
readkey dxfgroup, dxfvalue
GoTo GetNextVertIndex
Case 10
readkey dxfgroup, dxfvalue
GoTo GetNextVertIndex
Case 20
readkey dxfgroup, dxfvalue
GoTo GetNextVertIndex
Case 30
readkey dxfgroup, dxfvalue
GoTo GetNextVertIndex
Case 70
readkey dxfgroup, dxfvalue
GoTo GetNextVertIndex
Case 71
vertIndex.No1 = objVertex(Abs(Val(dxfvalue)))
readkey dxfgroup, dxfvalue
GoTo GetNextVertIndex
Case 72
vertIndex.No2 = objVertex(Abs(Val(dxfvalue)))
readkey dxfgroup, dxfvalue
GoTo GetNextVertIndex
Case 73
vertIndex.No3 = objVertex(Abs(Val(dxfvalue)))
iv = iv + 1
Triangles(iv) = vertIndex
readkey dxfgroup, dxfvalue
If Not (dxfgroup = 0 And dxfvalue = "SEQEND") Then GoTo GetNextVertIndex
'objArray.Add Triangles(), objNum