找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 461|回复: 1

[VBA函数]:完美的三维螺旋线

[复制链接]
发表于 2003-5-22 14:17:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在efan2000斑竹和各位网友的帮助下,终于完成了这段函数代码,因为我是新手,所以自我感觉特别好!觉得比明经的还好(脸皮真厚)!也许您能用的上。

Public Function AddHelix(pa As Variant, n As Integer, _
R1 As Double, R2 As Double, H As Double) As Acad3DPolyline
'pa是起点,n是匝数,R1是起点半径,R2是终点半径
'H是总高度
Dim polyObj As Acad3DPolyline
Dim points() As Double
Dim a As Integer
Const PI = 3.1415926535

pa = ThisDrawing.Utility.GetPoint(, "请输入基点:")
ReDim points(0 To 3 * 360 * n + 2) As Double

For a = 0 To 3 * 360 * n Step 3
points(a) = pa(0) + (R1 + (a / 3) * (R2 - R1) / 360 / n) _
* Cos(2 * PI * (a / 3) / 360)
points(a + 1) = pa(1) + (R1 + (a / 3) * (R2 - R1) / 360 / n) _
* Sin(2 * PI * (a / 3) / 360)
points(a + 2) = pa(2) + H * (a / 3) / 360 / n
Next

Set polyObj = ThisDrawing.ModelSpace.Add3DPoly(points)
ZoomExtents
End Function

螺旋线各点到中心轴的距离是严格按照线性关系变化的。下面是一段主程序调用示范。

Sub Example_Add3DPoly()
    Dim plineObj As Acad3DPolyline
    Set plineObj = AddHelix(pa, 10, 200, 100, 300)
End Sub
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-5-22 16:04:18 | 显示全部楼层
很好
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-22 12:10 , Processed in 0.355232 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表