彫刻のプレビューは正しいのに、工具の軌跡が反転していた
Pythonで作ったV字彫刻ツールの話。画像と工作機械の座標、スライダーと内部値のずれから、画面だけでは分からなかった問題を直しました。
名札などを彫るために、PythonとTkinterでV字彫刻用のGUIを作りました。図形から工具の動く経路を計算し、G-codeとして出力するツールです。2026年7月の改修では、画面に正しく見えているものと、実際に生成しているものの違いに何度もつまずきました。
線の太さに合わせて、彫る深さを変える
V字の刃は、深く入れるほど削る幅が広くなります。文字の細い部分と太い部分を彫り分けるには、輪郭を同じ深さでなぞるだけでは足りません。
ツールではDXFの図形から中心線を求め、輪郭までの距離を使って深さを計算しました。図形が表示できる段階から、刃の形と工具経路を扱う段階へ進むと、確認するものが増えます。
元画像を表示するだけでは、反転に気づけない
改修中、プレビューの向きは正しいのに、生成した工具経路の上下が反転している問題がありました。画像と工作機械の座標では、Y軸の向きの扱いが違います。その変換が揃っていませんでした。
画面に元の図形を描くだけなら、出力経路が間違っていても正しく見えてしまいます。そこで、輪郭に生成済みの工具経路を重ねて確認する形にしました。見たいのは、入力の絵がきれいに表示されることだけではありません。出力しようとしている経路が、その図形に沿っているかです。
立体表示にも似た問題がありました。高さの画像から形を作る方法では針状の乱れが出たため、工具経路をもとに溝の形を作る方式へ見直しました。
スライダーを動かす方法で、計算結果が変わった
設定値にもずれがありました。Tkinterのttk.Scaleをマウスで操作した場合は更新処理が走るのに、プログラムから変数をsetした場合は、同じcommandが呼ばれていませんでした。
ホイール操作やリセットで値を変える経路が、再計算を通らずに抜けていたのです。画面上の値が変わっても、出力に使う値まで更新されたとは限りませんでした。
変数の変更をtrace_addで受けるようにし、値を変更する操作ごとの食い違いを直しました。画面部品を押したかどうかより、計算の元になる値が変わったかどうかを見るほうが、このツールには合っていました。
出力を確かめても、実加工の確認は残る
工具経路の重ね描きや自己テストは、加工前にミスを見つけるためのものです。それを通しただけで、実機での加工精度や安全性まで確認できたことにはなりません。
この制作で覚えておきたいのは、プレビューと出力が別の経路で作られていると、その間のずれが隠れるということです。次に何かを生成する画面を作るときも、できあがった出力そのものを確認できる場所を残したいです。
関連:Linuxと電子工作