2024.09.15

うっかりミスによる機械・ワークへの突撃回避プログラム~Pythonで遊ぼう!①~

NC加工プログラムにおいて、機械やワークににぶつけることたまにありませんか?

対話やCamで作成すればそもそも、ぶつける可能性は低いですが、

諸事情あって、手打ちでプログラムを作成する時に

こちらのような例がたま~~~~~~にあります。

例えば、X6.0と打ちたいのにX60と打った場合、座標としてはX0.06となるので、

旋盤の場合中心に向かってドカン!となりますよね。

このうっかりミスを見つけ出すプログラムをPythonとChatGPTを活用して作成しました。

その過程とポイントを記事としてまとめましたので、参考にしてみてください!

 

目次

  1. Pythonのインストールと環境設定
  2. 抽出プログラムの作成
  3. まとめ

1. Pythonのインストールと環境設定

まず、Pythonをインストールして環境を設定します。

Pythonのインストール

  1. Pythonの公式サイト(https://www.python.org/)にアクセスし、最新のPythonバージョンをダウンロードします。
  2. インストール中に「Add Python to PATH」にチェックを入れます。これにより、Pythonをコマンドラインから直接実行できるようになります。
  3. インストーラの指示に従ってインストールを完了します。

環境設定の確認

  1. コマンドプロンプトまたはターミナルを開き、以下のコマンドを入力して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初めて触りましたが、専用プログラムを作成する事ができました。

 

これからも業務効率化プログラムを作成して、紹介いたします!

CONTACT

お問い合わせ

ご相談や御見積依頼など、お気軽にお声掛けください