- UID
- 25232
- 积分
- 2113
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2003-1-12
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2003-5-17 20:41:07
|
显示全部楼层
我写了几行代码,还有点问题,指efan2000斑竹PP。
一、这段代码能画出一“整体”的三维螺旋线,但匝数无法输入,只能在代码中改。
Sub Example_Add3DPoly()
'画一五匝三维螺旋线
pi = 3.1415926535
Dim polyObj As Acad3DPolyline
Dim points(0 To 3 * 360 * 5 + 2) As Double
Dim a, b, c, n As Integer
Dim R, h As Double
Dim pa As Variant
pa = ThisDrawing.Utility.GetPoint(, "请输入基点:")
R = ThisDrawing.Utility.GetDistance(pa, "请输入半径:")
h = ThisDrawing.Utility.GetDistance(pa, "请单匝高度:")
'n是匝数
n = 5
For a = 0 To 3 * 360 * n Step 3
points(a) = pa(0) + R * Cos(2 * pi * (a / 3) / 360)
Next
For b = 1 To 3 * 360 * n + 1 Step 3
points(b) = pa(1) + R * Sin(2 * pi * ((b - 1) / 3) / 360)
Next
For c = 2 To 3 * 360 * n + 2 Step 3
points(c) = pa(2) + h * ((c - 2) / 3) / 360
Next
Set polyObj = ThisDrawing.ModelSpace.Add3DPoly(points)
ZoomAll
End Sub
二、这段代码能输入匝数,但画的不是一“整体”三维螺旋线。
Sub Example_Add3DPoly()
pi = 3.1415926535
Dim polyObj As Acad3DPolyline
Dim points(0 To 3 * 360 + 2) As Double
Dim a, b, c, n, m As Integer
Dim R, h As Double
Dim pa As Variant
pa = ThisDrawing.Utility.GetPoint(, "请输入基点:")
R = ThisDrawing.Utility.GetDistance(pa, "请输入半径:")
h = ThisDrawing.Utility.GetDistance(pa, "请单匝高度:")
n = ThisDrawing.Utility.GetReal("请输入匝数:")
For m = 1 To n Step 1
For a = 0 To 3 * 360 Step 3
points(a) = pa(0) + R * Cos(2 * pi * (a / 3) / 360)
Next
For b = 1 To 3 * 360 + 1 Step 3
points(b) = pa(1) + R * Sin(2 * pi * ((b - 1) / 3) / 360)
Next
For c = 2 To 3 * 360 + 2 Step 3
points(c) = pa(2) + h * ((c - 2) / 3) / 360
Next
Set polyObj = ThisDrawing.ModelSpace.Add3DPoly(points)
pa(2) = pa(2) + h
Next
ZoomAll
End Sub
to Laoyao:你的程序只能打开EXCEL,却没一条“画”的命令。不行!我又写了一段:
三、将附件解压在C盘根目录,运行下面代码,(速度很慢,也不方便,远不如上两段代码!)
Sub getEXCEL()
Dim excel As Object
Set excelworkbook = Workbooks.Open("c:\3.xls")
Set excel = excelworkbook.Application
excel.Visible = True
Dim xlSheet As Worksheet
Dim a, b, c As Double
Set xlSheet = excelworkbook.Sheets(1)
Dim Points(0 To 1800 * 3 + 2) As Double
Dim polyObj As Acad3DPolyline
For a = 0 To 1800 * 3 + 2 Step 3
Points(a) = xlSheet.Cells((a + 3) / 3, 2).Value
Next
For b = 1 To 1800 * 3 + 2 Step 3
Points(b) = xlSheet.Cells((b + 2) / 3, 3).Value
Next
For c = 2 To 1800 * 3 + 2 Step 3
Points(c) = xlSheet.Cells((c + 1) / 3, 4).Value
Next
Set polyObj = ThisDrawing.ModelSpace.Add3DPoly(Points)
excel.Quit
End Sub |
|