2022年1月31日 星期一

通知︰此 blog 應該會消失

因為當初建立這個 blog 的帳號是學校帳號,隨著 Google 縮減了教育版的免費額度,這個帳號的功能會僅剩下 Email,因此這個 blog 應該是一定會消失。看了一下統計資料,雖然 blog 上許久未更新已經是很舊的資料了,但還是有些人會來看,所以之後會找時間把內容搬到像是 github page 或 gitlab page 上。

2018年8月26日 星期日

薄殼(Thickness)


           前一陣子發現0.17版已經變為穩定版,而開發版也就進入了0.18的版號,不過因為有一段時間沒有在用FreeCAD也就沒特別測試新功能,直到今天發現連官方網站都換新的了...再到翻譯的網站看看已經有高達48%的項目沒有翻譯,印象中剛開始加入翻譯到100%0.12版總數量大約3000,後面還陸陸續續翻譯了許多,所以可能有5000以上的未翻譯項目,這數量感覺有點多阿…
        懶散了一段時間沒翻譯果然下場是很慘烈的,但目前也沒有打算盡快翻譯完全部,打算先把閒暇可以利用的時間用在翻譯零件設計(PartDesign)這個比較常用的工作臺上,然後採用從介面上一個功能一個功能顯示的項目依序翻譯。這樣的方式一部分是避免翻譯品質低落,另一方面實際操作所有功能才能翻譯的更到位,也更熟悉FreeCAD,另外也可以順便做功能介紹。
        今天要先從「薄殼(Thickness)」開始,為什麼呢?因為原本打算先把一眼就看到沒翻譯的一些先翻譯,但在薄殼卻發現有些功能好像之前翻譯的很糟...但又試不出這些功能有什麼差異就查了一下論壇才知道根本沒有實作出來,目前只是一個空殼當然沒有差異...也就產生了新的翻譯策略。

先看看0.18版新的啟動畫面

再看看新的導航立方(先暫時這樣翻譯),相信很多人應該會很開心終於有這個功能了,以後可以更快速地找到要操作的部份。

然後來看看今天的主角「薄殼(Thickness)

基本上就只有很簡單的一個對話視窗,所有可用的參數都在「Thickness parameters」裡面,首先是很簡單的「加入面(Add face)」和「移除面(Remove face)」,這功能基本上就是看薄殼的時候哪個面要開口而已(就目前實作出來的功能來看)。再看看更容易了解的「厚度(Thickness)」,就是殼要多厚或壁要多厚,原本舊版數值是正的代表從原本物件的最外緣往外,數值是負的代表從原本物件的最外緣往內,但在0.18版往內只能用最下方的「殼厚朝內(Make thickness inwards)」了,這樣或許也比較合理




接下來「模式(Mode)」就是找不出功能差異的地方了,「模式(Mode)」裡面有三個選項,分別是「Skin」、「Pipe」以及「Recto verso」。「Skin」是唯一有實作的功能,而這不是FreeCAD開發者偷懶,而是FreeCAD使用的Open CASCADE函式庫社群沒有實作,「Skin」原本翻譯為「外觀」,但看了一下說明後打算換成「單面」,而Pipe」原本翻譯為「管」,打算換成「貫穿」,最後Recto verso」是一種說明文字書寫方向的用語,像是英文是由左到右就是verso recto,由右到左的話就是Recto verso,那著該怎麼翻譯好呢︖目前打算先用「方向」
        最後一個部份「接合方式(Join Type)」就是定義如何處理相鄰兩個平行面的間隙要如何填滿,「Arc」就是用圓弧形式來填滿,但如果薄殼朝內的話「Arc」是沒有作用的,這點可能也是沒有實作的關係吧?而「Intersection」就是把相鄰兩個平行面變肥讓兩者接觸來填滿,所以打算把「Arc」翻譯成「圓弧」,「Intersection」就翻譯成「直角」。

如果有人看到覺得不滿意在留言告知囉。

2016年10月10日 星期一

Libreoffice Basic 讀取及寫入儲存格數值

       一直以來用著Libreoffice的Calc製作各種計算,雖然函式很多,也非常好用,但就是少了一點什麼,而這一點什麼就是類似迴圈等自動跑出一個結果的功能 。在MS Office中有著許多人都說非常好用又簡單的VBA,因此我就把腦筋動到了提供一樣功能的Libreoffice Basic上了Libreoffice basic的教學資料其實非常的多,尤其是從Openoffice所一脈相傳下來的大量教學,參考價值都非常足夠,但早在幾年前就有這個想法了,又怎麼會在今天才做呢?
       那時在找資料看到了給初學者的官方英文文件,但真的很簡短而且對於API沒有很詳細的說明,看了就一頭霧水,也沒有非常必要立刻學會,就暫時把它給忘了直到這兩天想說反正公司電腦是配MS Office,就看看VBA怎麼寫好了,不看還好,看了就告訴自己當初怎麼不從這裡切入就好了...因為從VBA的語法去查對應的Libreoffice basic語法比官方文件清楚容易多了下面就用我目前最需要的讀取儲存格資料處理後放回儲存格來做Libreoffice basic的說明

        在Libreoffice basic需要先告訴Libreoffice你要處理的是哪個部份,不然就無法執行,因此必須要透過下方程式碼來告知

ThisComponent.Sheets.getByIndex(0)

       這段程式碼的ThisComponent指的是這個檔案,Sheets則是指工作表,而Libreoffice的編碼都是從0開始getByIndex(0)從英文字面上就是從索引標籤取得,因此getByIndex(0)就是第一個工作表,那麼如果每次需要讀取資料都要這麼一長串程式碼就太麻煩了所以可以用一個變數來儲存上面這段程式碼所取得的值,如下

DIM Sheet0 as Object
Sheet0 = ThisComponent.Sheets.getByIndex(0)

       DIM Sheet0 as Object是宣告Sheet0為一個物件的變數第二行就是很單純的把提取的資料儲存到Sheet0這個變數裡而已。但事實上Basic不需要像C語言一樣宣告變數就可以使用變數,所以不需要DIM Sheet0 as Object也是可以的而且大小寫也不會分辨為不同的變數不過日後程式碼變多就會變得很難閱讀因此還是建議要宣告一下比較好
       有了這個之後就可以開始來對試算表裡的資料做讀取與寫入了那要怎麼找到哪個儲存格呢?程式碼與找到工作表類似,而前面我們已經用了Sheet0來告知那個工作表了,所以這裡就可以用Sheet0來開頭,不需要再用ThisComponent.Sheets.getByIndex(0)這麼長一串了

Sheet0.getCellByPosition(0,1).Value

       這裡的.getCellByPosition(0,1)從英文字面上就是由位置來取得儲存格的值(0,1)第一個數值代表欄(直的方向)第二個數值代表列(橫的方向)所以代表的就是A2這個儲存格,而.Value則是指這個儲存格的數值指定好那個工作表的那個儲存格之後就可以讀取和寫入數值啦~下面是一個簡單的把A1儲存格的數值乘2放到A2儲存格去的程式碼供大家參考

Sub Main

DIM Sheet0 as Object
DIM A1
Sheet0 = ThisComponent.Sheets.getByIndex(0) 
A1 =  Sheet0.getCellByPosition(0,0).Value 
Sheet0.getCellByPosition(0,1).Value = A1 * 2

End Sub 

2016年4月24日 星期日

初探FreeCAD 0.16正式版FEM模組

本篇教學是參考周卓明先生編著之「電腦輔助工程分析實務」,如有版權問題還請告知。
FreeCAD於0.15版有了更多人對FEM模組的開發貢獻心力,到了0.16版初步的雛型算是有了一個比較完整的架構,這篇就是看看FreeCAD和其所用的求解器Calculix有著怎樣的表現,而這款求解器甚至有國際大廠GE的關注在,當然目前FreeCAD尚未將Calculix的全部能力釋放,因此本篇僅僅是初探,整體使用方式及功能仍會不斷變動,但不論是FreeCAD或Calculix未來的發展都令人期待。若未看過「數值分析-試棒」建議先由其開始。



 

2016年3月12日 星期六

FreeCAD範例-變化圓角及倒角


這篇是參考「循序學習 SolidWorks 2010」所撰寫,若有版權問題煩請告知
若對FreeCAD尚不了解,建議先由定位扣開始。
總算是又寫了一篇...除了忙之外,就是沒有適合寫的功能,0.16的正式版也遲遲沒有推出,所以有些新的功能可能也還不適合寫,不過偶然注意到有個本篇要介紹的功能之前一直沒有提到,所以就有了這篇的誕生了~而這篇也是用上了最新的正體中文(201603)界面,雖然之前已經花了一些時間做了整理,但看來還有許多地方的翻譯需要再調整了...

2015年8月2日 星期日

FreeCAD範例-高爾夫球


若對FreeCAD尚不了解,建議先由定位扣開始。
忙碌了一陣子之後總算可以靜下心來寫寫教學了,這篇主要是看到了有人用Solidworks繪製高爾夫球,所以想說試試看這種圖是不是FreeCAD也畫的出來,在畫的過程中確實有點不夠直覺,花了點時間才找到繪圖的方式,所以分享給各位。不過為了讓各位能比較容易看得出來,教學中並不是實際的高爾夫球尺寸。

2015年5月17日 星期日

FreeCAD基礎-Part(零件)

本篇單純為介紹Part(零件)的功能。