2020年10月4日 星期日

OpenSCAD : text 顯示中文字

2020年10月4日 星期日

 OpenSCAD 中的  text module 可以將指定的字串輸出成 2D 的物件,例如:


text(text="OpenSCAD好好玩");


不過就如同很多軟體一樣,英文都正常顯示,一遇到中文字就變成方塊字:


沒關係,再多傳入一個指定字型的參數「font」給 text module 就可以解決問題:


text(text="OpenSCAD好好玩", font="微軟正黑體");


上面讓 text 使用 Windows 中的「微軟正黑體」,中文字就正常顯示了:



這樣有效率多了,不然又得先利用別的工具將中文字輸出成 SVG 檔再匯入。





2020年10月2日 星期五

Chrome : 捨快取資料取得最新網頁

2020年10月2日 星期五

 放在網站的程式明明已經更新了,「重新整理」 按了很多次了,網頁就還是舊的,讓人快懷疑自己是不是程式出了什麼問題。在 Chrome 中可以試試底下其中一種組合按鍵:


Ctrl + F5


Shift + F5


Ctrl + Shift + R


Google Chrome 的說明文件中:


有關 Windows and Linux 的 Webpage shortcuts 提到 Reload the current page, ignoring cached content ,按了上面的組合按鍵,應該可以忽略快取中的舊網頁,而重新載入網路上最新的版本。

在 Wikipedia 中也有各種瀏覽器如何 Bypass your cache :


哈!如果是使用行動載具,沒有按鍵可以按,應該比較麻煩一點了。




2020年10月1日 星期四

Laser : Squiggle Draw

2020年10月1日 星期四

看著桌上利用 SquiggleDraw 作圖,然後雷射的照片,卻想不起大約一個月前是用什麼參數做出來的。玩東玩西的,別相信自己記得住所有的資料,做過實驗還是留下一些關鍵的參數比較好。

上個月在研究如何利用 Halftone (半色調) 的方式來雷射出畫質較好的圖片時,發現了 gwygonik 的 SquiggleDraw 專案:

它是將每一個點的灰階值以數學的 SIN 函數計算以後,帶入 Y 座標,然後畫出橫向的曲線,我們因為線條的疏密而構建出圖片的樣貌,滿有意思的演算法。

因為 SquiggleDraw 是用 Processing ( https://processing.org/ ) 開發的,我後趁機了解一下這個程式語言,並在 GitHub 上 fork 一份 Squiggle,為它加上了可以處理去背過圖形留白的部份,改過的程式放在這裡:

SquiggleDraw 可以讓我們調整一些會影響曲線波形的參數,最後可以輸出成 SVG 格式的檔案。SVG 檔如果搭配 Inkscape 的 Extensions (例如: J Tech Photonics Laser Tool ),就可以轉成 G-Code ,然後進行雷雕。


一張原來 500x500 的照片被雷射在只有 16mm 寬度中,如果線條太密,可能會因為反覆的燒灼而焦黑,所以 SquiggleDraw 的參數要試一下,底下是上面結果測試過的設定:

  • Number of Lines : 50
  • Squiggle Strength : 3
  • Detail : 28
  • Frequency : 120.5
  • Resolution Scale : 3
  • Line Width : 1
  • Transparent : Enable


由於在 SquiggleDraw 中使用的單位是點,所以輸出的 SVG 檔案需要調整一下尺寸及單位,給 J Tech Photonics Laser Tool 轉換完的結果才不會有落差。

建議先開啟一個新的 Inkscape 頁面,然後以「匯入」的方式將 SquiggleDraw SVG 檔案匯入。接著就可以開始調整圖片的寬度和長度。最後再用  J Tech Photonics Laser Tool 把路徑轉為 G-Code。上面雷射的結果在  J Tech Photonics Laser Tool  Extension 中設定的參數如下:

  • Travel Speed : 2000
  • Laser Speed : 600
  • Laser Power : 100

雷射的速度及 Power 可能還是要看圖形的大小、複雜度及重疊的情形調整,才能得出最好的效果。


相關文章

2020年9月23日 星期三

Git : Clone Branch

2020年9月23日 星期三

 關於 Git 的操作一直沒有深入的研究,每每都是要用到時,才搜尋一下指令的用法。常用的也不過一些而已,還是自己記錄下就好。

今天在 GitHub 上將別人的專案 fork 一份以後,master 會 clone 下來,而裡面的 gh-pages 分支就不會了。例如專案的網址如下:

  • https://github.com/gsyan888/SquiggleCam.git

想要 clone 預設的 master 分支,就執行底下的指令:


git clone https://github.com/gsyan888/SquiggleCam.git


想要 clone 後的資料夾名稱順便改為 SquiggleCam-master,就在前面的指令後面空一格,再加上想使用的資料夾名稱,指令變成:


git clone https://github.com/gsyan888/SquiggleCam.git  SquiggleCam-master


接下來進入主題,如何 clone 別的分支?

以前面的 SquiggleCam 專案來說,上架的網頁是放在 gh-pages 的分支中,就執行底下的指令:


git clone --branch  ph-pages https://github.com/gsyan888/SquiggleCam.git


或是:


git clone -b  ph-pages https://github.com/gsyan888/SquiggleCam.git


如果想指定資料夾的名稱,就在指令尾巴再加上想用的名稱,例如,想命名為 SquiggleCam-ph-pages 就將指令改為:


git clone --b  ph-pages https://github.com/gsyan888/SquiggleCam.git  SquiggleCam-gh-pages


接下來的 add、commit、push 都和平常一樣。

哈哈哈~我也只會這幾道,其它的就慢慢學、慢慢記錄囉!


2020年9月14日 星期一

3DP : Lenticular Card 雙變卡產生器

2020年9月14日 星期一

 小時候玩過一種卡片,拿在手上,角度改變,圖案也跟著改變,兩個圖案變來變去的,滿好玩的。後來兩個圖案設計成像動畫一般,例如:一隻奔馳的馬。有的卡片則是會讓圖案變成立體的。查了一下,原來這叫作「雙變卡」,甚至有「三變卡」,英文則是「3D Lenticular Card」。關鍵一是在圖案前的那片薄薄的透明「光柵」,其二則是不同圖案被拆成一條條後交替重組成新的圖案。「一條條」的圖案在卡片轉至某個角度經過光柵折射後,又重組成原來的圖案,讓我們看到;其它的圖形也因為折射角的關係,而無法在我們的眼睛呈現。

知道原理以後,可不可以自己來做一個雙變卡呢?用「homemade Lenticular Card」的關鍵字去搜尋,真的有耶!有人寫了程式,可以把兩張圖片「一條條」重組,並輸出圖檔。我們只要把圖檔列印以後,再動手摺一摺,就是一個「雙變圖」了。

看了前面手動摺紙的方法,激發了我寫支模型產生器,利用 3D printer 來印一個「雙變卡」的想法。


產生器主要的程序很簡單:

  • 將兩張圖片裁成一條條大小相同的圖案。
  • 產生正三角柱。
  • 將兩張圖片相同位置的部份,貼在三角柱的共邊的兩側
  • 重覆前兩部份,直到所有小圖片都貼完。

這種有重覆動作的工作,當然是利用程式來做最方便。這次選用的開發工具是:

LenticularCard 專案

完成的專案放在 GitHub 中:

使用方法

準備工作

  • 安裝 OpenSCAD
  • 下載 LenticularCard 專案檔案

裁切圖片

專案需使用到兩張不同的圖片,為了減少產生 3D 模型等候的時間,程式預設是用使 100*100 (長度單位:像素)。然後每一張圖片再每隔 10 像素,裁切成「一條」(10x100),單獨儲存十個檔案。

圖片縮小還好,只要處理二次,但是依位置裁切成十個檔案,如果手動來做,手可就酸了!哈哈哈~其實我也是做過這樣的傻事才深有所感。

手酸了才讓我想起以前在教電腦,為了做學生作品的網站,利用一個叫 ImageMagick 的工具,來批次轉換圖片大小:

它的好處是可以跨平臺使用,當初可是在 FreeBSD 的主機上執行的呢!

經過那麼多年的發展,它的功能似乎更強大了。不過這次是想拿它來將一張圖,裁切成「十條」,並另存檔案。

例如圖形的檔案名稱為 picture1.png ,原始大小為 100x100,要切成 10x100 的小檔案,可以利用magick 「convert」的「-crop」:


magick convert -crop 10x100+0+0 picture-1.png parts-1-0.png


-crop 後面的「10x100」是指定要裁成的大小, 緊接著的「 +0+0」則是指定由左(X)算起第 0 點,由上(Y)算起第 0 點當起點開始算。「parts-1-0.png」則是要輸出的檔案名稱。

所以前面的例子可以幫我們輸出「第一條」圖案。

那「第二條」呢?


magick convert -crop 10x100+10+0 picture-1.png parts-1-1.png


「第二條」的大小仍是 10x100 ,是由左 10,上 0 起算(+10+0)。

其它的就由此類推囉!

我是這樣一行行打指令的嗎?哈哈哈!這次當然沒這麼老實了。如果是在 Windows ,可以利用 DOS 的 FOR 來幫我們完成「改數字」的部份:


for /L %a in (0,10,90) do (magick convert -crop 10x100+%a+0 picture-1.png parts-1-%a.png )

for /L %a in (0,10,90) do (magick convert -crop 10x100+%a+0 picture-2.png parts-1-%a.png )


只要準備好兩張 100x100 的圖片,一張命名為 picture-1.png ,另一個命名為 picture-2.png ,然後執行上面的兩行指令即可一次搞定囉!(專案中加入了一個給 Windows 用的批次檔,請參考 2020.09.15 的更新記錄)

其實有了 ImageMagick  也可以順便縮小圖片尺寸、改變亮度與對比的,它的功能實在太多了,以後再另起新文介紹囉!


更新記錄

  • 2020.09.15
    * 修正圖片比例的臭蟲。
    * 加了一個檔名序號(filename_numbers)的自動產程序,將序號改成每一小張圖切割的位置,方便搭配批次切割的檔名。
    * 專案中加入一個 dos 的批次檔(magick_batch_crop.bat),可搭配 ImageMagick  使用,執行時只要在批次檔命令加上兩個圖檔的檔名,即可按預設值切出 X 座標每次增加 10 個點的檔案。需要自動縮放大小,則再加上第三個參數「resize」,需要依 Y 座標來切成橫條,則加上「Y」。
  • 2020.09.14 於 GitHub 建立新專案
  • 2020.09.07 發想完成初版

2020年9月2日 星期三

Inkscape : Hershey Text 單線字

2020年9月2日 星期三

記得之前在鉛筆上用雷射打字時有個困擾,想縮短時間,就要用向量圖形的方式,但是一般的字型轉成路徑時,會是字的輪廓線,也就是空心字,字大一點的時候還好,但是是要打在鉛筆上的字比較小,輪廓線疊在一起,不美就算了,甚至連字是什麼都看不出來。為了解決這個問題,勢必得找「單線」的字型。英文字體倒好解決,Inkscape 有個 Extension 叫 Hershey Text ,可以幫我們做成單線的字。


上圖中本來是使用「sans-serif 」的字型,當我們把要轉換為 Hershey Text 的部份選取好後,找主選單「擴充功能」→「文字」→「Hershey 文字」,開啟 Hershey 文字 的對話框,就可以開始在「圖形運算」的頁面中選取想要轉換的字體了。


上面是選取「Hershey 無襯線 1-筆畫」後的結果,英文字串「Happy Birthday」順利轉為單線的字了,但是中文的「生日快樂」卻變成空白一片。

是的,沒錯!目前這個擴充功能,並不支援中文字。如果是中文字,可以下載這個日本網站提供的字型「Chogokuboso Gothic」:


開啟網頁以後,只要找下載的關鍵字「ダウンロード」


找到網址是 chogokubosogothic.zip 的那個來下載。

解壓縮後,將字型安裝好,重新開啟 Inkscape 後,字型清單中,應該會多一個「Chogokuboso Gothic」的字型可以選用了。

有了這種單線的字型,以後雷雕小字時,也可以美美的了!



2020年8月30日 星期日

3DP : 雷射焦點測試 G-code 產生器

2020年8月30日 星期日

 在 2016年1月的這篇「雄 : 3DP : Prusa i3 變身為雷雕機」中提到弄了個測試雷射焦距的 G-Code 產生器。那時對 G-Code 的了解不多,G-Code 是先在 Inkscape 中畫好 4x4 個正方形,用工具轉好的 G-Code ,再把Z軸高度和一些控制參數以字串置換的方式產出測試碼的,哈哈哈~真的是有夠原始的方法。

這幾天因為玩雷射又需要重找焦距,順便把 G-Code 產生器大改一下,直接放 Blogger 中,方便更新,雷射焦點測試 G-code 產生器的網址如下:


更新以後加入了幾個自訂選項,可以調整需要的測試格數及大小


更新記錄

  • 2020.08.31 在正方形中央加上 Z 軸高度的 G-code。
  • 2020.08.30 更版發布

相關文章



2020年8月28日 星期五

3DP : 雷雕蠟燭

2020年8月28日 星期五

 自從把 3D printer 加裝雷射頭以後,玩過木板、木頭、冰棒棍、飛機木、紙、紙板、貼紙、鉛筆、泡棉......,前面這些材質,如果較薄的有機會切斷,不然的話,都是被雷射燒出凹痕。今天拿出蠟燭來雷射,猜猜看,蠟燭被雷射打過後,表面會是凹的,還是凸的?

第一張照片是利 Inkscape 的 Extensions  Raster 2 Laser GCode generator 將圖片以點陣圖的方式輸出 "HAPPY BIRTHDAY" 的 GCode ,再將雷射打在蠟燭的結果:


因為是點陣圖的方式轉的,所以打雷射時,字是實心字。

下面這張照片中的則是以 Inkscape 的 Extensions  J Tech Photonics Laser Tool 以向量圖來輸出 GCode,所以打雷射時,只會打出 "生日快樂" 的輪廓線條(空心字);


仔細看一下,無論是「實心字」還是「空心字」,被雷射燒到時,線條都是凸出蠟燭的表面。在想,應該是雷射的熱讓蠟燭表面融掉,液體澎脹後,溢出表面,冷卻後變成凸字的效果。

這次玩的蠟燭是小支的,大概只有 4~5mm 能打圖案,下次再拿大支一點的蠟燭來試試。

相關文章



2020年8月25日 星期二

iOS : iFiles Upload

2020年8月25日 星期二

 iPad 第一代好久沒拿出來用,想到裡面有 iFiles 可以讓小孩聽英文,趕緊把它充電。iFiles 內建 web service ,可以直接上載檔案,在當時沒有雲端硬碟,可是很好用的。不過沒想到它上載檔案居然是用 Flash 寫的,現今的瀏覽器不支援 Flash Player,這下該如何上載檔案?

沒關係,山不轉路轉,路不轉人轉!我的電腦中有安裝 curl 這個命令列的工具,可以扮演瀏覽器,來執行上載檔案的任務。

iFiles 如果沒有設密碼管制,要上載檔案,只要知道:

  • 網址
  • 表單欄位的名稱

來觀察一下 iFiles 的上載頁面的網頁原始碼:

用「type="file"」搜尋,可以找到表單的欄位名稱為「nameFileUpload1」。

假設:

  • 要上載目前資料夾中的檔案,檔名為「test.zip」
  •  iFiles 網頁的網址是: http://192.168.2.104:8080/
curl 上載的完整命令為:

curl -F nameFileUpload1=@test.zip  http://192.168.2.104:8080/

如果像我同時要上載 test1.zip、test2.zip、test3.zip、test4,zip 和 test5.zip ,在 Windows 中,還可以搭 for 的命令來批次上載,將上面的命令改為:


for /L %a in (1,1,5) do ( curl -F nameFileUpload1=@test%a.zip  http://192.168.2.104:8080/ )


哈~成功把小孩所有要聽的 mp3 檔一次上載了,已經買了快十年的 iPad 繼續上工!


2020年8月20日 星期四

DIY : 遙控器按鈕回春術之三

2020年8月20日 星期四

 上一次用焊錫來修遙控器按鈕( 雄:DIY : 遙控器按鈕回春術之二 ),被大家的「大力金剛指」多按幾次以後,折過的焊錫會斷掉。之後改用鋁箔+三秒膠,沒按幾次就會脫膠,只好再試別的方法了。

這一次改用熱熔膠來黏鋁箔,感覺好像黏得比較牢。

操作的步驟如下:

  1. 加熱過的熱熔膠沾一點在搖控器的矽膠鈕上。
  2. 剪一小塊鋁箔蓋在上面。
  3. 以打火機稍微烤一下鋁箔上方。
  4. 輕壓鋁箔。
因為矽膠稍微耐熱,步驟 3 和步驟 4 可以讓鋁箔黏得更牢些。



一次把不靈光的按鍵都修一修了。

其實之前買過一小支貴貴的銀漆,只是不知道它到它到底被藏到哪裡去了!

我打算修修修~修到遙控器的殼被我拆爛為止 XD



2020年8月12日 星期三

Brother 印表機墨水量偵測鬥法

2020年8月12日 星期三

 家裡有一臺 Brother DCP-J105 彩色噴墨印表機,洋紅和黃色墨水不足的訊息已經出現很久了,因為平常只有印灰階的文件,所以也不在意經常跳出來的警告訊息。這一次是跳出黑色墨水沒了,只好拆開當初買印表機時順便買的黑色墨水來安裝,沒想到把黑色墨水安裝完以後,它就一直卡在另兩色沒墨水的,需要更換的訊息。不更換的話,就完全不能進行列印工作。

而且將墨水匣拆下來,稍微傾斜,可以看到墨水匣中其實是還有一些墨水的,就這樣不繼續工作,真是浪費又不環保!


平常幾乎用不到彩色列印,於是開始研究機器是如何偵測墨水量的。將墨水匣轉動九十度以後,可以看到透明的墨水觀測口中有一片黑色的塑膠

如果轉動墨水匣,黑色塑膠是會轉動的。從顏色及動作來看,猜想墨水量的感測應該就是利用這個「浮標」去遮斷紅外線的光感應器。

要證明是不是如自己猜想的那樣很簡單,拿出黑色的電工膠帶,剪一小片,貼在透明的「感應窗」,再把墨水匣裝回印表機,就可以知道假設對不對了。


把兩個顏色的墨水匣都貼好黑色膠帶,結果出來了:

哈哈哈~通通滿格,又可以繼續列印囉!

不過這一招是否會造成進墨口堵塞?

哈~反正我是不打算印彩色的文件了,如果有人想試這個方法來和印表機鬥法,可能還是要考慮到會造成的風險。


2020年7月25日 星期六

Inkscape : Raster 2 Laser GCode generator 更新

2020年7月25日 星期六
前幾天有人留言提到 Raster 2 Laser GCode generator 已經無法在 Inkscape 1.0 上使用後,又燒起研究程式的火。試了幾天,對這個 extension 更了解了,也一一把和 Inkscape 1.0 不相容的地方找出來並解決。

本來還在想,如果要弄新舊兩個版本,不就累死了。今天試用 Inkscape 1.0 增加參數的 attribute 「arg_parser」來當依據,用 Python 的 hasattr 來判斷是否有「arg_parser」,如果為 True,表示為 Inkscape 1.0 以後的版本,就改用新的語法,反之前使用舊的版本。哈~這樣子瞎搞一番以後,Raster 2 Laser GCode generator 就可以新舊通吃了!

改過的版本可以在下面 GitHub 專案中下載:

不過為了考慮向下相容 Inkscape 0.92 ,不能在 raster2laser_gcode.inx 中使用「type="path"  mode="folder"」讓使用者用視窗介面的檔案對話框來指定輸出的資料夾。

Inkscape 1.0 用 type="path" 可以用點選的方式選資料夾或檔案

可惜了這個在 Inkscape 1.0 中很方便的新功能。



Inkscape : 1.0 版的Y座標原點

用了幾天的 Inkscape 1.0 才發現它的座標原點換到左上角了


哈~還真有一點不習慣,這種感覺就像剛用 Inkscape 時,它和別的軟體中以左上角為原點不相同,得去慢慢適應一樣。

不過現在如果不習慣,在 Inkscape 「偏好設定」中的「介面」有一個選項可以將座標原點改到左下角:


把那個「原點位在較低於左下角且較高於y軸點」的勾勾取消,並重新啟動 Inkscape ,就可以恢復以前座標原點在左下角的樣子了。


哈~「介面」中的那個「原點位在較低於左下角且較高於y軸點」,我特別換成英文語系,找出它的原文是「Origin at upper left with y-axis pointing down」,讓 Google 翻譯了一下是:

原點在左上角,y軸指向下方

好像比較容易理解了!

把座標原點換到左下角有個好處,這樣才會和 3D printer 的座標一樣,哈哈哈~不然頭腦不好的我,轉換時會昏頭的。



Inkscape : Raster 2 Laser GCode generator 除蟲

如果有在玩雷雕的話,Inkscape 的 extension Raster 2 Laser GCode generator 是很好用的工具。它可以先幫我們把 Inkscape 工作區中的圖形在背景下匯出成 PNG 格式的圖檔,然後再依使用者的設定,把每一個點的顏色(RGB)轉換為灰階(每一個點均用一個 0~255 的值來表示),最後再將灰階圖中的每一個點顏色轉換成 GCode 中雷射的強度。



之前在測試 RGB 轉換為灰階的七個模式,其中的第一個名為「0.21R + 0.71G + 0.07B」,我一直覺得它哪裡怪怪的。假設別的模式花不到二十分鐘打雷射的圖形,它卻要花近兩個小時,看雷射移動的軌跡,它連不需要打雷射的地方(圖片中白色的部份)也打雷射,由輸出的 GCode 可以看到它第一個開啟雷射(M106   S3.0)的位置是在左下角的原點 (G00 X0.0 Y0.0 F1200),這很明顯和我設計的圖形是不同的。



2020年7月22日 星期三

Inkscape : Extensions : 升級至 1.0 後的災情

2020年7月22日 星期三
Inkscape 1.0 版已經發布,不過個人還沒有升級體驗,已經有網友留言提醒 Raster 2 Laser GCode generator 的 extension 不能用了。試了一下,果然卡住:


查了一下資料,Inkscape 1.0 extensions 的設定有異動,而且無法向下相容;此外,Inkscape 1.0 已經改採用 Python 3.x 了,這使得原來使用 Python 2.x 開發的小工具也得修改才能正常工作。

相關的升級資訊可以參考 Inkscape 的 wiki :
 
© 2009. Design by Pocket