作者jiwenho (jiwen)
看板Cad_Cae
标题Re: [问题] 这种螺旋线
时间Tue Sep 20 21:53:32 2011
※ 引述《yobook (@@)》之铭言:
: 想问一下
: 这种螺旋线
: http://tinyurl.com/3fd26tn
: 非正圆形
: AutoCAD该用哪一种
: 才能画的又快又好
: 还是用AutoLISP ? 第一次听到这个东西
: 谢谢!
※ 引述《yobook (@@)》之铭言:
: 想问一下
: 这种螺旋线
: http://tinyurl.com/3fd26tn
: 非正圆形
: AutoCAD该用哪一种
: 才能画的又快又好
: 还是用AutoLISP ? 第一次听到这个东西
: 谢谢!
这是以阿基米得(等速)螺旋作为中立线向两侧增加宽度後做出来的图形
如果偶而单纯画这种线条,板友有提供相应的螺旋指令可以胜任(可能在其他cad也有)
连结到您上一题,如果是要做成一个模组以快速产生各种所需的螺旋电感
可以考虑专用软体,如果想要透过lisp或其他语言在绘图软体中制作
这里可以就螺旋线的部分提供一些心得:
(用的语法并非lisp以求简明)
首先,对於螺旋线的点集合当中的任一点,以极座标来定义位置,
需要两个变数,这次的例子命名为 Pr 和 Pa :
Pa 角度
包括LISP在内的许多语言多半是用弪度的, 2 * Pi 代表一圈。
Pr 半径
有宽度的平面螺旋图形中很少直接从中心(半径0)开始画的,
并且通常半径的上下限会被用来定义(或检查)回圈范围。
等速螺旋的特性是它的间距是相等的,这里要厘清一点所谓的间距,
数学上指的是中心点放射出去的线,与螺旋线相交的任意相邻的两点距离。
由於增量(斜率)的存在,这里得到的两点距离会比两圈之间实际的最短距离稍大,
这个现象离中心愈近就愈明显,离中心越远(或者说圈数愈多的时候)就愈不明显。
理解并接受这个特性之後就可以应用 Pa 和 Pr 之间的线性关系作为程式的核心:
Pr = X * Pa / (2 * Pi)
这个X就是每圈(2 Pi 弪度)的半径成长幅度,
等速螺旋的X是定值(就是上面说的间距),
以回圈在Pr的上下限范围内,依序取得多组 Pa 和 Pr 的(极座标)点集合,
回圈结束後连接这些点就是螺旋线,处理完端点的走向 并作成聚合线,
再呼叫ACAD的offset向两侧作出宽度,了不起再加盖就差不多了。
这样看下来似乎是个仅有一层回圈的小函数。
但是这个回圈有个要注意的点,Pr不应该用等差级数带入回圈
(此例来说应避免 Pr = Pr + n 之类的写法):
因为Pr成长量固定意味着Pa成长量也是固定的,也就是说不论内圈还是外圈,
每一圈取样的次数是固定的,这会导致外圈的解析度不足而有正多边形的趋势
(即使是画多边形的螺旋线也不需要利用这种情形,边长难以控制)。
解法有许多种,举个程式码最短的例子:
可以在回圈中计算目前Pr为半径时的假想圆周长,除以恒定的弧长(解析精度),
来推算下一个Pa,再透过公式得Pr..循环
以上是关於螺旋的程式部分
至於LISP的参考资料,我以前主管教的,只有讲义和笔记,
手册则是将ACAD的中文lisp说明备份下来参考
(印象中2000应该是少数有中文化到开发者手册的版本了)。
实体书可能要请板上的前辈们推荐了
以上,希望对您有帮助。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.120.176.204