2023年9月26日 星期二

TG - 將英文大寫字母和阿拉伯數字的TEXT轉畫成線和弧的圖形-用於雷射刻字

 TG.vlx 執行選取 text 圖元, 以畫出相對應的線條圖形.... 2023.09.26

CAD 內的字體檔有單線體, ttf, ... 在雷射刻字的使用上, 會花費很長的時間.

雖有 txtexp 炸開文字的功能轉文字成 pline. 但所有弧形的地方, 會由許多小線段組成.
即使如上圖中所選取的單線文字, 每個單字都會由過多的小線段組成.

上圖中下面兩行字更不適用於簡易雷射刻字.

目前需求的是單線體, 刻字時間短的字體.

上圖左邊是文字串, 右邊是以 txtexp 炸開後的 pline 圖形.

如上放大 pline 圖形部分, 即使選用最簡化的單線體, 弧形處仍是很多線段.

圓弧部分較滑順的單線字體, 轉成 pline 後, 線段更是密集.

再放大看, 原字高為 20 mm, 炸開後的 pline 圖形.

所有 .ttf 的字體, 經 txtexp 炸開後, 更是密密麻麻. 雷射刻字就全糊了.




此 TG 程式, 是先建立以線和弧組成的英文大寫字母和阿拉伯數字.
然後, 每個單字, 建成圖塊.
每個單字都用最簡單的筆劃,
當然要符合 雷射刻字 的基本要求.

用 TG 程式, 將文字轉成圖塊, 再將圖塊炸開成 線 和 弧.

以下是 TG 使用的範例.
上圖中, 洋紅色的文字是 TG 要抓取的文字 TEXT 圖元.

執行 TG 程式.

程式內定只選 TEXT 圖元, 所以可以窗選.


選取完畢, 就會在每個 TEXT 下方, 以同樣字高, 插入單字的圖塊, 再炸開圖塊.
如上圖中, 黃色的 '字'.

放大單一工件.

黃色部分, 確實是線和弧組成的圖形.


這是多個工件, 可放在用一圖紙, 下單.

單一工件完整的繪圖, 大致如上圖,
白色線是工件輪廓, 黃色線是刻字.
洋紅色文字, 在雷射作業中, 無作用.
但是, 在以 nip 程式建立 .dxf 檔時, 可作為 dxf 檔名的一部分.



***  程式要執行, 須將 雷射刻字-01.dwg 圖檔中的英文大寫字母

     ABCDEFG....XYZ 和 阿拉伯數字 1234567890 的圖塊, 複製到圖檔內.  ***


所以, 要先將 TG.VLX / TG.ZELX 程式, 和 此 雷射刻字-01.dwg 複製到

支援檔案搜尋路徑資料夾.


然後在 工具->載入應用程式->起動組->新增 TG.VLX , 之後開新圖檔, 就會預先載入.


指令: TG


選取物件:     ( 請選取 text , 文字串, 可以多選 )


確定後, 程式會先讀取文字內的單字, S, 2, P, 3, 0, 5,....

然後 S 找到圖塊 BK-S , 插入到 S 下方 2 倍字高的座標點,

依序在 BK-S 後方字高距離插入 BK-2, .......

最終, 在原選取文字串下方完成相對英文大寫字母或阿拉伯數字一行圖塊字串.

再 炸開 這一行由 圖塊 組成的文字串, 就完成繪製原選取文字串的圖形

(僅由 圓弧 所組成 ).


------------------------------------------------------------------------------------------------------------------


2023.09.23 將文字串旋轉角度設為0, 改為抓取文字旋轉角度 en_ang.

                   即圖塊插入, 旋轉角度會同原字串的角度.

2023.09.23 新增設定目前圖層為 "YELLOW" , 再執行此程式.

                   避免目前圖層為"WHITE", 執行 tg 時有此圖塊未炸開, 仍在切割圖層.

                   (command "EXPLODE" "c" exp_pt2 exp_pt1) 

                   -> 加入 "c", 以框交方式, 四方框選取物件.

                   如未加入 "c" 或 "w" 的框選,

                   則 exp_pt2 或 exp_pt1 點可能位於物件上.

2023.09.25 修改選取 text 圖元時, (setvar "pickbox" 0) -> (setvar "pickbox" 8)

2023.09.26 新增 (setvar "QAFLAGS" 1), 使 explode 可以多選物件.

2023.09.27 指令加註解, 方便日後修改.

2023.09.28 設 字高大於等於 height_min 以上,才執行文字轉圖形.

                   height_min 為變數, 可修改 (setq height_min 15)