Re: [問題] 這種螺旋線
※ 引述《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
討論串 (同標題文章)
Cad_Cae 近期熱門文章
PTT數位生活區 即時熱門文章