# 8. Shell 命令參考
> **警告**
> FlatCAM Shell 功能仍在開發中,未來可能會改變,包含可用命令及其語法。
本文件中語法說明包含命令名稱、參數、參數型態,以及是否為選用或必須參數。所有命令格式如下:
> command\_name <參數1> <參數2> ... \[選用區塊1] \[選用區塊2] ...
命令名稱(command\_name)必須字面輸入且必須在任何參數之前。
參數用「< >」括號標示,為必填參數。輸入時只輸入數值,不包含名稱或括號。文件中可能會標示名稱(供參考)與期望類型(如 str 文字、int 整數、float 浮點數等)。
選用區塊用「\[ ]」方括號表示,括號本身不輸入。若包含選用區塊,區塊內所有元素皆為必填,除非內含更內層的選用子區塊。
選用參數可能是帶名稱的,如 `-outname <str>`,必須字面輸入破折號與名稱後接值,或是一串值如 `x1 [x2 [...]]`,只輸入值。
---
### 8.1. add\_circle
在指定的幾何物件中建立圓形。
> add\_circle <name> \<center\_x> \<center\_y> <radius>
* name:要新增圓形的幾何物件名稱
* center\_x, center\_y:圓心座標
* radius:半徑
---
### 8.2. add\_poly
在指定幾何物件中建立多邊形。
> add\_polygon <str> \[xi, yi <?>]
> add_poly <str> [xi, yi <?>]
* name <str>:目標幾何物件名稱
* \[xi, yi \<?>]:多邊形頂點座標(可多點)
---
### 8.3. add\_polyline
在指定幾何物件中建立折線。
> add\_polyline <str> \[xi, yi \<?>]
* name <str>:目標幾何物件名稱
* \[xi, yi \<?>]:折線點座標
---
### 8.4. add\_rect
在指定幾何物件中建立矩形。
> add\_rect <name> \<botleft\_x> \<botleft\_y> \<topright\_x> \<topright\_y>
* name:目標幾何物件名稱
* botleft\_x, botleft\_y:左下角座標
* topright\_x, topright\_y:右上角座標
---
### 8.5. aligndrill
建立定位孔鑽孔的 Excellon 檔。
> aligndrill <name> \[-dia <3.0 (float)>] -axis \<X|Y> \[-box <nameOfBox> -minoffset <float> \[-grid <10 (float)> -gridoffset <5 (float)> \[-axisoffset <0 (float)>]] | -dist <number>]
* name:要鏡像的物件名稱(Gerber 或 Excellon)
* dia:刀具直徑
* box:作為區域的物件名稱(例如 cutout)
* grid:對齊格點大小
* gridoffset:格點偏移量
* minoffset:定位孔與 PCB 最小距離
* axisoffset:對齊孔軸第二軸偏移
* axis:鏡像軸,X 或 Y
* dist:鏡像軸與 X 或 Y 軸的距離
---
### 8.6. aligndrillgrid
建立定位孔鑽孔格點。
> aligndrillgrid <outname> \[-dia <3.0 (float)>] -gridx <float> \[-gridoffsetx <0 (float)>] -gridy <float> \[-gridoffsety <0 (float)>] -columns <int> -rows <int>
* outname:輸出物件名稱
* dia:刀具直徑
* gridx, gridy:X、Y 軸格點間距
* gridoffsetx, gridoffsety:X、Y 軸格點偏移量
* columns, rows:X、Y 軸格點數量
---
### 8.7. cncjob
從幾何物件建立 CNC 工作。
> cncjob <str> \[-z\_cut <float>] \[-z\_move <float>] \[-feedrate <float>] \[-tooldia <float>] \[-spindlespeed <int>] \[-multidepth <bool>] \[-depthperpass <float>] \[-outname <str>]
* name:來源物件名稱
* -z\_cut:Z 軸切割高度
* -z\_move:Z 軸移動高度
* -feedrate:切割進給速度
* -tooldia:刀具直徑(顯示用)
* -spindlespeed:主軸轉速(rpm)
* -multidepth:是否使用多層深度切割
* -depthperpass:多層深度切割每層深度
* -outname:輸出物件名稱
---
### 8.8. cutout
建立板材輪廓切割。
> cutout <name> \[-dia <3.0 (float)>] \[-margin <0.0 (float)>] \[-gapsize <0.5 (float)>] \[-gaps \<lr (4|tb|lr)>]
* name:物件名稱
* dia:刀具直徑
* margin:邊距
* gapsize:卡榫大小
* gaps:卡榫類型
---
### 8.9. delete
刪除指定物件。
> delete <name>
* name:物件名稱
---
### 8.10. drillcncjob
從 Excellon 物件建立鑽孔 CNC 工作。
> drillcncjob <str> \[-tools <str>] \[-drillz <float>] \[-travelz <float>] \[-feedrate <float>] \[-spindlespeed <int>] \[-toolchange <bool>] \[-outname <str>]
* name:來源物件名稱
* -tools:刀具索引清單(逗號分隔,如 1,3 或 2),未指定則使用全部刀具
* -drillz:鑽孔深度
* -travelz:鑽孔移動高度
* -feedrate:鑽孔進給速度
* -spindlespeed:主軸轉速
* -toolchange:是否啟用換刀
* -outname:輸出物件名稱
---
### 8.11. export\_gcode
匯出 G-Code 至終端機輸出。
> export\_gcode <str> \[<str>] \[<str>]
* name:來源幾何物件名稱
* preamble:G-Code 頭部附加文字
* postamble:G-Code 尾部附加文字
---
### 8.12. export\_svg
匯出幾何物件為 SVG 檔。
> export\_svg <name> <filename> \[-scale\_factor <0.0 (float)>]
* name:幾何物件名稱
* filename:輸出檔案路徑
* scale\_factor:匯出時縮放線寬比例
---
### 8.13. exteriors
取得多邊形外部邊界。
> exteriors <str> \[-outname <str>]
> ext <str> \[-outname <str>]
* name:來源幾何物件名稱
* outname:輸出物件名稱
* timeout:工作逾時秒數
---
### 8.14. follow
建立追蹤 Gerber 路徑的幾何物件。
> follow <name> \[-outname <oname>]
* name:Gerber 物件名稱
* outname:輸出幾何物件名稱
---
### 8.15. geo\_union
對幾何物件內的所有形狀做聯集。
> geo\_union <name>
* name:幾何物件名稱
---
### 8.16. geocutout
切割幾何物件的卡榫。
> geocutout <name> \[-dia <3.0 (float)>] \[-margin <0.0 (float)>] \[-gapsize <0.5 (float)>] \[-gaps \<lr (8|4|tb|lr|2tb|2lr)>]
* name:幾何物件名稱
* dia:刀具直徑
* margin:邊距
* gapsize:卡榫大小
* gaps:卡榫類型
**範例:**
```bash
# 產生隔離邊界,例如 fritzing arduino shield 或任意 SVG
isolate BCu_margin -dia 3 -overlap 1
# 從隔離物件產生外邊界
exteriors BCu_margin_iso -outname BCu_margin_iso_exterior
# 若不需要,刪除隔離物件
delete BCu_margin_iso
# 最後切割卡榫
geocutout BCu_margin_iso_exterior -dia 3 -gapsize 0.6 -gaps 4
```
---
### 8.17. get\_names
列出專案中所有物件名稱。
> get\_names
無參數。
---
### 8.18. help
顯示命令列表。
---
### 8.19. import\_svg
匯入 SVG 為幾何物件。
> import\_svg <str> \[-type <str>] \[-outname <str>]
* filename:SVG 檔案路徑
* type:匯入為 gerber 或 geometry(預設 geometry)
* outname:輸出物件名稱
---
### 8.20. interiors
取得多邊形內部邊界。
> interiors <str> \[-outname <str>]
* name:來源幾何物件名稱
* outname:輸出物件名稱
---
### 8.21. isolate
建立指定 Gerber 的隔離銑削幾何。
> isolate <str> \[-dia <float>] \[-passes <int>] \[-overlap <float>] \[-combine <int>] \[-outname <str>]
* name:來源物件名稱
* dia:刀具直徑
* passes:通過次數(刀寬倍數)
* overlap:刀具重疊比例
* combine:是否合併所有通過成一幾何物件
* outname:輸出物件名稱
---
### 8.22. join\_excellons
合併多個 Excellon 物件。
> join\_excellons \<out\_name> \<obj\_name\_0>....
* out\_name:新 Excellon 物件名稱
* obj\_name\_0...:要合併的物件名稱列表
---
### 8.23. join\_geometries
合併多個幾何物件。
> join\_geometries \<out\_name> \<obj\_name\_0>....
* out\_name:新幾何物件名稱
* obj\_name\_0...:要合併的物件名稱列表
---
### 8.24. make\_docs
以 reStructuredText 格式列印命令參考。
---
### 8.25. millholes
從 Excellon 建立銑削孔幾何。
> millholes <name> -tools <str> -tooldia <float> -outname <str>
* name:Excellon 物件名稱
* tools:刀具索引(逗號分隔)
* tooldia:銑刀直徑
* outname:輸出物件名稱
---
### 8.26. mirror
鏡像指定層。
> mirror <name> -axis \<X|Y> \[-box <nameOfBox> | -dist <number>]
* name:欲鏡像物件名稱(Gerber 或 Excellon)
* box:當作邊界的物件名稱(例如 cutout)
* axis:鏡像軸,X 或 Y
* dist:鏡像軸距離 X 或 Y 軸的距離
---
### 8.27. new
開始新專案,清除記憶體中的物件。
> new
無參數。
---
### 8.28. new\_geometry
建立新的空白幾何物件。
> new\_geometry <name>
* name:新物件名稱
---
### 8.29. offset
移動物件位置。
> offset <name> <x> <y>
* name:物件名稱
* x:X 軸移動距離
* y:Y 軸移動距離
---
### 8.30. open\_excellon
開啟 Excellon 檔案。
> open\_excellon <filename> \[-outname <o>]
* filename:檔案路徑
* outname:建立的 Excellon 物件名稱
---
### 8.31. open\_gcode
開啟 G-Code 檔案。
> open\_gcode <filename> \[-outname <o>]
* filename:檔案路徑
* outname:建立的 CNC 工作物件名稱
---
### 8.32. open\_gerber
開啟 Gerber 檔案。
> open\_gerber <str> \[-follow <str>] \[-outname <str>]
* filename:檔案路徑
* follow:若為 1,則不建立多邊形,只追蹤 Gerber 路徑
* outname:輸出幾何物件名稱
---
### 8.33. open\_project
開啟 FlatCAM 專案。
> open\_project <filename>
* filename:檔案路徑
---
### 8.34. options
顯示物件設定。
> options <name>
* name:物件名稱
---
### 8.35. paint\_poly
建立刀具路徑以覆蓋多邊形內部。
> paint\_poly <name> \<inside\_pt\_x> \<inside\_pt\_y> <tooldia> <overlap>
* name:來源幾何物件名稱
* inside\_pt\_x, inside\_pt\_y:多邊形內點座標
* tooldia:刀具直徑
* overlap:刀具重疊比例
---
### 8.36. panelize
簡單拼版幾何。
> panelize <name> \[-box <nameOfBox>] \[-spacing\_columns <5 (float)>] \[-spacing\_rows <5 (float)>] -columns <int> -rows <int> \[-outname <n>]
* name:欲拼版物件名稱
* box:作為切割邊界的物件名稱(例如 cutout),未指定則使用 name 物件
* spacing\_columns, spacing\_rows:列與行間距
* columns, rows:列與行數量
* outname:輸出幾何物件名稱
---
### 8.37. plot
更新 GUI 上的繪圖。
---
### 8.38. save\_project
儲存 FlatCAM 專案至檔案。
> save\_project <filename>
* filename:檔案路徑
---
### 8.39. scale
縮放物件尺寸。
> scale <name> <factor>
* name:物件名稱
* factor:縮放倍數
---
### 8.40. set\_active
設定 FlatCAM 物件為活動物件。
> set\_active <name>
* name:物件名稱
---
### 8.41. set\_sys
設定系統參數(FlatCAM 常數)。
> set\_sys <sysparam> <paramvalue>
* sysparam:參數名稱
* paramvalue:設定值
---
### 8.42. subtract\_poly
從幾何物件減去多邊形。
> subtract\_poly <name> <x0> <y0> <x1> <y1> <x2> <y2> \[x3 y3 \[...]]
* name:目標幾何物件名稱
* xi, yi:多邊形頂點座標
---
### 8.43. subtract\_rect
從幾何物件減去矩形。
> subtract\_rect <name> \<botleft\_x> \<botleft\_y> \<topright\_x> \<topright\_y>
* name:目標幾何物件名稱
* botleft\_x, botleft\_y:矩形左下角座標
* topright\_x, topright\_y:矩形右上角座標
---
### 8.44. write\_gcode
將 CNC 工作物件的 G-Code 儲存至檔案。
> write\_gcode <name> <filename>
* name:來源 CNC 工作物件名稱
* filename:輸出檔案名稱