请问各位高手,我用VBA编了一段利用多段线绘制从固定点(x1,y1,z1) 到当前鼠标位置的动态函数曲线------y=k*(x-x1)^2+y1 的程序,可是却无法执行,请问错在那里?多谢指教!
****************************
Sub pl() Dim p1(0 To 2) As Double Dim p2 As Variant Dim pntobj As Variant
Dim lobj As AcadLWPolyline Dim vers(0 To 2000) As Double
Dim k As Double Dim g As Double Dim b As Double
Dim x1 As Double Dim y1 As Double Dim x As Double Dim y As Double Dim i As Double Dim a As Double
Dim l As Double Dim m As Double Dim n As Double
g = 32.7718 / 1000 b = 68.5036 k = g / (2 * b)
l = 100 m = 100 n = 0 p1(0) = l p1(1) = m p1(2) = n
p2 = ThisDrawing.Utility.GetPoint(, "p2") x1 = (p2(1) - m + k * l ^ 2 - k * p2(0) ^ 2) / (2 * k(l - p2(0))) y1 = m - k * (l - x1) ^ 2
vers(0) = l vers(1) = m
i = l a = 2
If i <= p(0) Then While i <= p2(0) x = p1(0) + i y = k * ((x - x1) * 10) ^ 2 + y1 i = i + 0.5 vers(a) = x vers(a + 1) = y a = a + 2 Wend Else x = p1(0) + i y = k * ((x - x1) * 10) ^ 2 + y1 i = i - 0.5 vers(a) = x vers(a + 1) = y a = a + 2 Wend vers(a) = p2(0) vers(a + 1) = p2(1) Set lobj = ThisDrawing.ModelSpace.AddLightWeightPolyline(vers)
End Sub
*************************
大侠,我把上述问题该了以后,程序执行后还是没有任何显示。请帮助修改下列程序,或者帮助重新编写一段程序。多多有劳!
Sub pl() '绘制抛物线:y=k*(x-x1)^2+y1' Dim p1(0 To 2) As Double Dim p2 As Variant Dim pntobj As Variant
Dim lobj As AcadLWPolyline Dim vers(0 To 2000) As Double
Dim k As Double Dim g As Double Dim b As Double
Dim x1 As Double Dim y1 As Double Dim x As Double Dim y As Double Dim i As Double Dim a As Double
Dim l As Double Dim m As Double Dim n As Double Dim O As Double Dim P As Double Dim Q As Double
'确定函数曲线的参数K的值
g = 32.7718 / 1000 b = 68.5036 k = g / (2 * b)
'确定函数曲线的第一点的坐标 l = 100 m = 100 n = 0 p1(0) = l p1(1) = m p1(2) = n
'提取当前鼠标的动态坐标 p2 = ThisDrawing.Utility.GetPoint(, "p2") O = p2(0) P = p2(1) Q = p2(2)
'计算曲线函数参数X1、Y1的值 x1 = (P - m + k * l ^ 2 - k * O ^ 2) / (2 * k * (l - O)) y1 = m - k * (l - x1) ^ 2
'确定函数曲线的第一点 vers(0) = l vers(1) = m
i = l a = 2
'利用循环确定函数曲线上的端点之间的若干坐标值 If i <= p1(0) Then While i <= p1(0) x = p1(0) + i y = k * ((x - x1) * 10) ^ 2 + y1 i = i + 0.5 vers(a) = x vers(a + 1) = y a = a + 2 Wend Else While i > p1(0) x = p1(0) - i y = k * ((x - x1) * 10) ^ 2 + y1 i = i - 0.5 vers(a) = x vers(a + 1) = y a = a + 2 Wend End If
'确定函数曲线的最后一点 vers(a) = p2(0) vers(a + 1) = p2(1)
'利用多义线绘制动态函数曲线 Set lobj = ThisDrawing.ModelSpace.AddLightWeightPolyline(vers)
End Sub