發表文章

目前顯示的是 1月, 2020的文章

FreeCAD錄製Python巨集超入門

圖片
FreeCAD的一大特色就是可以用Python程式語言自行建立想要的功能。但寫程式如果沒人教你、沒書可看、網路資料別說看懂,連對不對都成問題時,該怎麼辦? 阿伯的答案是:「 從錄製巨集(Macro)開始學 」。 自己不會寫,就讓FreeCAD錄一段絕對可以跑的程式給你看。藉由比較自己下的指令與程式碼,就能一步步了解程式的語法和邏輯。所以接下來,阿伯用一個”超”簡單的範例,教大家製作一個可以修改實體尺寸參數的巨集。 第一步:建立圓柱 首先,我們以XY平面的原點為圓心建立一個半徑 = 5 mm的圓形草圖,然後長出一根高度 = 10 mm的圓柱,如下圖所示: 第二步:錄製巨集 錄製巨集的大紅圓按鈕就在工作平台下拉選單的右方,操作如下圖所示: 接下來,先將圓柱高度改為5 mm,再將半徑改為10 mm,然後結束錄製。如下圖: 第三步:修改巨集內容 我們來看看剛才錄到了些甚麼東西,如下圖: 綠色的列都是#字開頭,代表該列是註解。將註解全部刪除後的內容如下圖: 這些程式碼就是我們剛才做的事: 把圓柱高度改成5 mm,半徑改成10 mm。 因為建立圓柱時並未存檔,所以檔名是Unnamed。FreeCAD預設會在修改尺寸後自動重新計算模型,這就是第6、7行做的事。 如果我們不想只為了修改幾個尺寸就在實體與草圖間切換來切換去,該怎麼做呢?一般做法是執行巨集,出現介面讓你輸入尺寸,然後模型就改好了。但阿伯測試後發現Python常用的input()或print()指令在執行巨集時都沒啥作用,變通的方法是: 直接在巨集編輯頁面下改尺寸,然後執行巨集 ,這樣就不需要資料輸入介面了。 將程式碼修改如下圖: 我們 在第4、5行新增兩個變數:redius (半徑)與height (高度) ,並將數值都設成8。然後 將巨集中的’5 mm’用height取代,’10.000000 mm’用redius取代 ,接下來點巨集工具列最右方的那個綠色三角箭頭按鈕,結果如下圖: 你的第一個FreeCAD巨集完成了,就這麼簡單。 你可以直接改redius與height等號後面的數值,整數或有小數點都行,按執行後圓柱就會改成你輸入的尺寸。 照這

FreeCAD範例:壓縮彈簧(下)

圖片
本範例的壓縮彈簧尺寸參數如下圖: 第一步:繪製螺旋線 FreeCAD繪製螺旋線的功能在Part工作平台,如下圖所示: 我們從最下一圈開始畫起,在下拉選單選擇Helix螺旋線後出現介面,依照圖示輸入數值後按下Create即可產生一條螺旋線,重複上述步驟填入對應參數即可完成螺旋線繪製。 螺旋線半徑 = (外徑 – 線徑) / 2 = (110 – 10) / 2 = 50mm , 有效圈起點圓心位置 = 最下圈終點高度 = 23 mm , 最上圈起點圓心位置 = 最下圈高度 + 有效圈高度 = 23 + 84 = 107 mm 。 螺旋線產生後發現有效圈與最上圈沒有接好,這是因為螺旋線起點都是0度,但有效圈因為有3.5圈,所以終點位於180度。所以我們必須 將最上圈逆時針轉180度 ,如下圖所示: 第二步:繪製圓弧線 功能按鈕同螺旋線,但在下拉選單選Circle,最上圈起點圓心位置 = 自由高度 = 130 mm。如下圖所示: 第三步:結合所有曲線 結合曲線的功能也在Part工作平台,如下圖所示: 第四步:建立彈簧實體 接下來的工作在FreeCAD的Part Design工作平台進行。先在XZ平面以螺旋線最下圈的起點為圓心建立一 直徑 = 10 mm 的圓形草圖,然後點選第三步建立的 Wire ,按住 滑鼠左鍵 不放拖拉至草圖所在的實體 Body 下,就會產生一名叫 BaseFeature 的螺旋路徑。如下圖所示: 先將所有Helix、Circle、Wire 隱藏 (左鍵點選後按 空白鍵 。注意: 輸入法必須是英文否則會無效 ),然後以草圖Sketch + BaseFeature長出實體。如下圖所示: 修剪實體的方法就不多說了,基本上就是建立參考平面和草圖,然後用修剪實體把不要的部分切掉。 Orientation mode(方向模式)請不要用Standard ,長出的彈簧斷面會歪歪的。完成的彈簧如下圖: 畫壓縮彈簧用到的功能也可以用在其他地方,例如 管線、螺桿、螺栓、多斷面實體 建立等。 (FreeCAD 0.21版適用)

FreeCAD範例:壓縮彈簧(上)

圖片
壓縮彈簧廣用於各種機械,例如車輛的避震器。繪圖前,你要先知道壓縮彈簧的尺寸參數有哪些。如下圖所示: 機械設計圖表便覽上與繪圖相關的規格參數如下: 1. 外徑 :壓縮彈簧最外側的直徑。 2. 線徑 :彈簧線材的直徑。 3. 自由高度 :彈簧未受壓力時的高度。 4. 密著高度 :彈簧被完全壓緊時的高度。 5. 旋向 :右旋(逆時針)、左旋(順時針)。 但光知道這些數據是不夠的,有些繪圖必要的參數你必須自己算出來。本範例的壓縮彈簧尺寸參數如下: 外徑:110 mm 線徑:10 mm 自由高度:130 mm 密著高度:55 mm 旋向:右旋。 你想畫的壓縮彈簧應該是裝在機械上的狀態,這種狀態的高度叫 裝置高度 。裝置高度只有你知道,沒有現成資料可查。本範例依照自由高度繪製,但畫法可以直接套用裝置高度。 首先,你必須先算出彈簧圈數: 彈簧圈數 = 密著高度 / 線徑 。 本範例的彈簧圈數 = 55 / 10 = 5.5圈 。 接下來,由圖可知壓縮彈簧為了能平穩受壓,兩端都會有約270度的磨平面。因此彈簧最下一圈與最上一圈都會壓扁,屬無效圈數。因此: 有效圈數 = 彈簧圈數 – 2 本範例的有效圈數 = 5.5 - 2 = 3.5圈 。 重頭戲來了!螺旋線從起點(0度)轉一圈(360度)上升的高度稱為 節距(Pitch) 。壓縮彈簧最下與最上端都有一段沿平面走圓弧路徑180度、磨掉一半的彈簧線,為了避免繞線時線與線互相干涉, 最下一圈與最上一圈的節距必須 >= 線徑 * 2 。 此外,為了讓不同節距的螺旋線能正確連接, 螺旋線的總高度必須是該螺旋線節距的倍數,這個倍數就是螺旋線的圈數。 業界建議 圈數應是0.25的整數倍 ,這樣螺旋線起點和終點都會落在0、90、180、270這幾個角度其中之一。本範例的彈簧圈數5.5圈與有效圈數3.5圈都可用0.25整除。 基於上述兩項條件,本範例最下一圈與最上一圈的節距必須 >= 10 * 2,也就是必須 大於20 mm 。 故能用於 有效圈數的最大高度 = 130 – (20 * 2) = 90 mm 但有效圈數的節距 = 90 / 3.5 = 25.714…除不盡,我們希望節距是一個很精確的數字,才能確保螺旋線完全相接。在此我們設定 有效圈數節距