2024.09.15
うっかりミスによる機械・ワークへの突撃回避プログラム~Pythonで遊ぼう!①~
NC加工プログラムにおいて、機械やワークににぶつけることたまにありませんか?
対話やCamで作成すればそもそも、ぶつける可能性は低いですが、
諸事情あって、手打ちでプログラムを作成する時に
こちらのような例がたま~~~~~~にあります。
例えば、X6.0と打ちたいのにX60と打った場合、座標としてはX0.06となるので、
旋盤の場合中心に向かってドカン!となりますよね。
このうっかりミスを見つけ出すプログラムをPythonとChatGPTを活用して作成しました。
その過程とポイントを記事としてまとめましたので、参考にしてみてください!
目次
- Pythonのインストールと環境設定
- 抽出プログラムの作成
- まとめ
1. Pythonのインストールと環境設定
まず、Pythonをインストールして環境を設定します。
Pythonのインストール
- Pythonの公式サイト(https://www.python.org/)にアクセスし、最新のPythonバージョンをダウンロードします。
- インストール中に「Add Python to PATH」にチェックを入れます。これにより、Pythonをコマンドラインから直接実行できるようになります。
- インストーラの指示に従ってインストールを完了します。
環境設定の確認
- コマンドプロンプトまたはターミナルを開き、以下のコマンドを入力してPythonが正しくインストールされていることを確認します。
python –version
2.正常にインストールされていれば、インストールしたPythonのバージョンが表示されます。
2. X
座標抽出プログラムの作成
Pythonの準備ができたら、NCファイルからX
座標orZ
座標の値に小数点が無い行(例:X10 Z10)を抽出するプログラムを作成します。
import os
import re
from tkinter import Tk, filedialog, StringVar, Label, Button, Radiobutton
def find_axis_without_decimal(file_path, axis):
if not os.path.exists(file_path):
print(f"File not found: {file_path}")
return []
with open(file_path, 'r') as file:
lines = file.readlines()
result_lines = []
for line in lines:
# 正の整数または負の整数を検出し、小数点を含まないXまたはZを検出
match = re.search(fr'{axis}([-+]?\d+\b)(?!\.)', line)
if match:
result_lines.append(line.strip())
return result_lines
def process_file():
axis_choice = axis_var.get() # 選択された軸の取得
if axis_choice in ['X', 'Z']:
# ファイルダイアログを開く前にウィンドウを最小化
root.iconify()
file_path = filedialog.askopenfilename(title="Select NC File", filetypes=[("NC files", "*.nc"), ("All files", "*.*")])
if file_path:
matching_lines = find_axis_without_decimal(file_path, axis_choice)
if matching_lines:
print(f"Lines with integer values for {axis_choice}:")
for line in matching_lines:
print(line)
else:
print(f"No lines found with integer values for {axis_choice}.")
else:
print("No file selected.")
else:
print("Invalid axis selected. Please choose either 'X' or 'Z'.")
# Tkinterのセットアップ
root = Tk()
root.title("軸を選択してください")
root.geometry("300x150") # ウィンドウサイズの設定
# ウィンドウとウィジェットの背景を黒、テキストを白に設定
root.configure(bg='black')
# 軸選択用のラジオボタンを作成
axis_var = StringVar(value='X') # デフォルト値をXに設定
Label(root, text="軸を選択してください:", bg='black', fg='white').pack(pady=5)
Radiobutton(root, text="X", variable=axis_var, value='X', bg='black', fg='white', selectcolor='black').pack(anchor='w', padx=20)
Radiobutton(root, text="Z", variable=axis_var, value='Z', bg='black', fg='white', selectcolor='black').pack(anchor='w', padx=20)
# 「ファイル読み込み」ボタン
Button(root, text="ファイル読み込み", command=process_file, bg='black', fg='white').pack(pady=20)
root.mainloop()
3. 実行結果
1.プログラム起動
2.軸を選択
3.ファイルをダイヤログ形式で読込む
4.検出された行を出力
4. まとめ
レイアウト等、改善する余地はまだまだあると思いますので、
引き続きアップデートして、よりよいものを作っていきたいと思います。
今回はChatGPTに何回もやり取りしながら、プログラムを作成しました。
ChatGPT凄いですよね!
Python初めて触りましたが、専用プログラムを作成する事ができました。
これからも業務効率化プログラムを作成して、紹介いたします!