汎用ドローソフト(Inkscape, Illustrator, PowerPoint等)で作成したSVG図形、G-codeファイル、STEPファイルをCNC制御で実行するクロスプラットフォーム対応Pythonツールです。
- 🪟 Windows (Windows 10/11)
- 🍎 macOS (macOS 10.15+)
- 🐧 Linux (Ubuntu 24.04, その他ディストリビューション)
- 2D制御 (xy_runner): SVG(Inkscape, Illustrator, PowerPoint等) → CNC制御
- 3D制御 (xyz_runner): G-codeファイル・STEPファイル → 3D CNC制御
- GUIによる直感的なファイル選択
- matplotlibによる軌跡シミュレーション(2D/3D)
- 中央精機 QT-BMM2 / OptoSigma GSC-02 ステージ対応(シリアル通信)
- クロスプラットフォーム自動セットアップ
- ✅ SVG図形(Inkscape, Illustrator, PowerPoint等)をそのままCNCで描画
- ✅ SVGファイルの対話的選択
- ✅ 2D軌跡のリアルタイムシミュレーション
- ✅ G-codeファイル・STEPファイル直接実行
- ✅ 3D軌跡アニメーション表示
- ✅ ファイル選択のみのシンプルUI
- ✅ クロスプラットフォーム対応(Windows・macOS・Linux)
- ✅ 実機制御(中央精機 QT-BMM2 / OptoSigma GSC-02 ステージ)
- ✅ プラットフォーム別自動セットアップ
- ✅ 安全リミット設定
- ✅ 拡張性の高いドライバ設計
# リポジトリ取得
git clone https://github.com/TITManagement/CNC.git
cd CNC
# 仮想環境作成
python3 -m venv .venv_CNC
source .venv_CNC/bin/activate
# 依存ライブラリインストール(開発モード)
pip install --no-build-isolation -e .Windows の場合は .\.venv_CNC\Scripts\activate を使用してください。
Inkscape, Illustrator, PowerPointなど任意のドローソフトで図形(テキスト不可)を作成し、SVG形式で保存してください。 (PowerPointの場合は「ファイル → エクスポート → SVG形式」で保存、「現在のスライド」を選択)
python -m xy_runner.xy_runner --config examples/example_xy/SIM_sample_SVG.yaml
# 3D ランナー(任意)
python -m xyz_runner.xyz_runner --config examples/example_xyz/grid_spheres.yaml- ファイルダイアログが表示されるので、SVGファイルを選択
- matplotlibウィンドウで軌跡が表示されます
CNC/
├── src/ # ソースコード
│ ├── common/ # 共有ロジック
│ ├── xy_runner/ # 2D ランナー
│ │ └── xy_runner.py # メインスクリプト
│ └── xyz_runner/ # 3D ランナー
│ └── xyz_runner.py # メインスクリプト
├── examples/ # 設定・サンプル
│ ├── example_xy/ # XY 用 YAML
│ ├── example_xyz/ # XYZ 用 YAML
│ └── drawing.svg # SVGサンプル
├── docs/ # ドキュメント
│ ├── user-guide.md # ユーザーガイド
│ └── developer-guide.md # 開発者ガイド
├── env_setup.py # 仮想環境セットアップ補助
├── pyproject.toml # パッケージ設定
└── README.md # このファイル
driver: sim # シミュレーション or 'chuo'で実機 svg_file: select # GUIでSVGファイル選択
motion_params: cut_speed: 100 # 描画速度 (mm/min) lift_height: 5 # Z軸リフト高さ
# examples/example_xy/SIM_sample_SVG.yaml
driver: sim
svg_file: select # GUIでSVGファイル選択
visual:
animate: true
title: "CNC XY Simulation"
# driver: chuo を用いる場合の例(XY ランナー)
driver: chuo
port: /dev/tty.usbserial-XXXX
baud: 9600
mm_per_pulse: 0.0005 # 1パルスあたりのmm
qt_enable_response: true # 必要に応じてレスポンスを有効化
driver_settings:
rapid_speed: 3000 # 早送り速度 (mm/min)
cut_speed: 1200 # 描画速度 (mm/min)
accel: 100 # 加減速パラメータ
# driver: chuo を用いる場合の例(XYZ ランナー)
driver: chuo
port: /dev/tty.usbserial-XXXX
baud: 9600
mm_per_pulse: 0.0005
qt_enable_response: true
driver_settings:
rapid_speed: 5000
cut_speed: 1500
accel: 150
# driver: gsc02 を用いる場合の例(XY ランナー)
driver: gsc02
port: /dev/tty.usbserial-GSC02
baud: 9600
timeout: 1.5
write_timeout: 1.5
mm_per_pulse: 0.001- PySerialによるシリアル通信
- COMポート・ボーレート設定可能
- 位置フィードバック
- 安全リミット管理
- RS-232C (RTS/CTS) ベースの ASCII プロトコル
- 既定速度テーブルの設定(Dコマンド)
- 原点復帰方向の切り替え
- Busy/Ready 応答による状態監視
- 実機不要
- matplotlibで軌跡表示
- アニメーション・プレビュー
開発・改善への参加歓迎!詳細は開発者ガイド参照。
- リポジトリをフォーク
- フィーチャーブランチ作成
- テスト付きで修正
- コード品質チェック(black, mypy等)
- プルリクエスト提出
- 試作・研究用途のパターン生成
- 教育・CNC原理学習
- 実験自動化
- 製造現場での図形→動作変換
- Python 3.8以上対応
- 主要依存:PyYAML, matplotlib, PySerial, svgpathtools
- モジュール設計:ドライバ拡張可能
- テスト:pytest
- コード品質:black, mypy
MITライセンス(詳細はLICENSE参照)
SVG図形(Inkscape, Illustrator, PowerPoint等)をCNCで自在に動かす!教育・研究・製造現場で活用できます。
# driver: gsc02 を用いる場合の例(XY ランナー)
driver: gsc02
port: /dev/tty.usbserial-GSC02
baud: 9600
timeout: 1.5
write_timeout: 1.5
mm_per_pulse: 0.001