Public Sub DrawCurve()
Dim x() As Single, y() As Single, i As Long, j As Long, k As Long
Dim tmpMax As ADODB.Recordset
Dim tmpRecordset As ADODB.Recordset
Dim YMaxName As String
Dim XMaxName As String
Dim XMax As Single
Dim YMax As Single
Dim tmpLoad As Single
Dim tmpDeform As Single
Dim tmpTime As Single
Dim tmpExt As Single
On Error Resume Next
Set tmpMax = New ADODB.Recordset
'查找X轴最大值
Select Case DisplayCurve.XMode
Case "力"
XMaxName = "LoadValue"
DisplayCurve.XUnit = "N"
Case "变形"
XMaxName = "ExtendValue"
DisplayCurve.XUnit = "mm"
Case "位移"
XMaxName = "PositionValue"
DisplayCurve.XUnit = "mm"
Case "时间"
XMaxName = "PlayTime"
DisplayCurve.XUnit = "s"
Case "应力"
XMaxName = "LoadValue"
DisplayCurve.XUnit = "MPa"
Case "应变"
XMaxName = "ExtendValue"
DisplayCurve.XUnit = "%"
End Select
tmpMax.Open "SELECT MAX(" & XMaxName & ") AS 最高 FROM OriginalData", dbsTestDataMain, adOpenKeyset, adLockOptimistic
XMax = tmpMax.Fields("最高")
tmpMax.Close
'查找Y轴最大值
Select Case DisplayCurve.YMode
Case "力"
YMaxName = "LoadValue"
DisplayCurve.YUnit = "N"
Case "变形"
YMaxName = "ExtendValue"
DisplayCurve.YUnit = "mm"
Case "位移"
YMaxName = "PositionValue"
DisplayCurve.YUnit = "mm"
Case "时间"
YMaxName = "PlayTime"
DisplayCurve.YUnit = "s"
Case "应力"
YMaxName = "LoadValue"
DisplayCurve.YUnit = "MPa"
Case "应变"
YMaxName = "ExtendValue"
DisplayCurve.YUnit = "%"
End Select
tmpMax.Open "SELECT MAX(" & YMaxName & ") AS 最高 FROM OriginalData", dbsTestDataMain, adOpenKeyset, adLockOptimistic
YMax = tmpMax.Fields("最高")
tmpMax.Close
DisplayCurve.XMin = 0
DisplayCurve.YMin = 0
'如果力大于1000N则用kN作单位
If DisplayCurve.XUnit = "N" And XMax > 1000 Then
DisplayCurve.XUnit = "kN"
XMax = XMax / 1000
End If
If DisplayCurve.YUnit = "N" And YMax > 1000 Then
DisplayCurve.YUnit = "kN"
YMax = YMax / 1000
End If
'自适应座标满度
PTDispCurveStru DisplayCurve, XMax, YMax
'画座标网格
DrawMark
'填写座标标记
Write_Coor_Mark
'画曲线
For i = 1 To DisplayCurve.TestNumber
'在原始数据表中分别搜索每根试样的数据
Set tmpRecordset = New ADODB.Recordset
tmpRecordset.Open "Select * From OriginalData Where TestNo = " & SCurve(i).TestNo & " Order by ID ASC", dbsTestDataMain, adOpenKeyset, adLockOptimistic
ReDim x(0 To tmpRecordset.RecordCount - 1)
ReDim y(0 To tmpRecordset.RecordCount - 1)
'你怎么就这样冥顽不灵?什么都要人家帮你做好
Sub AAAAA()
Dim x(10) As Single, y(10) As Single, th As Single, i As Long
For i = 0 To 10
x(i) = th * 50 + 50
y(i) = Sin(th) * 100 + 150
th = th + 0.628
Next
With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, x(0), y(0))
For i = 1 To 10
.AddNodes msoSegmentCurve, msoEditingAuto, x(i), y(i)
Next
.ConvertToShape
End With
End Sub
With ActiveSheet.Shapes.BuildFreeform(msoEditingCorner, 78#, 63.75)
For i = 1 To 100
x = x + 1
y = y + 1
.AddNodes msoSegmentCurve, msoEditingCorner, x, y
Next i
.ConvertToShape.Select
End With