サービス
サービスを探す
プロ人材を探す
仕事を探す
ブログを探す
サービス
サービスを探す
プロ人材を探す
仕事を探す
ブログを探す
購入・発注したい方
サービスを探す
プロ人材を探す
ノウハウ・素材を探す
ブログを探す
仕事・求人を投稿して募集
エージェントに人材を紹介してもらう
受注・働きたい方
出品する
単発の仕事を探す
継続 (時給/月給) の仕事を探す
エージェントに仕事を紹介してもらう
カテゴリ一覧
イラスト作成・漫画制作
デザイン制作
Web制作・HP作成・EC構築
動画編集・映像制作
集客・マーケティング相談
ビジネス代行・事務代行
音楽制作・ナレーション
IT相談・システム開発
ライティング・翻訳
コンサルティング・士業
生成AI活用・開発・制作
NEW
占い
悩み相談・カウンセリング
学習指導・資格・キャリア相談
住まい・美容・生活相談
オンラインレッスン・習い事
ハンドメイド制作
出張撮影・出張サービス
資産運用・副業の相談
弁護士検索・法律Q&A(法律相談)
サポート
はじめての方へ
ご利用ガイド
お困りのときは
ログイン
会員登録
サービスを探す
イラスト作成・漫画制作
>
デザイン制作
>
Web制作・HP作成・EC構築
>
動画編集・映像制作
>
集客・マーケティング相談
>
ビジネス代行・事務代行
>
音楽制作・ナレーション
>
IT相談・システム開発
>
ライティング・翻訳
>
コンサルティング・士業
>
生成AI活用・開発・制作
NEW
>
占い
>
悩み相談・カウンセリング
>
学習指導・資格・キャリア相談
>
住まい・美容・生活相談
>
オンラインレッスン・習い事
>
ハンドメイド制作
>
出張撮影・出張サービス
>
資産運用・副業の相談
>
>
プロ人材を探す
>
ノウハウ・素材を探す
ブログを探す
>
求人募集を投稿する
人材を紹介してもらう
仕事を探す
単発の仕事
継続(時給/月給)の仕事
出品する
仕事を探す
単発の仕事
継続(時給/月給)の仕事
仕事を紹介してもらう
ITエンジニアの仕事
事務・秘書の仕事
経理・労務・人事の仕事
デザイン・クリエイティブの仕事
マーケティングの仕事
営業の仕事
カスタマーサポートの仕事
コンサルタント・アドバイザーの仕事
出品する
仕事を紹介してもらう
求人募集を投稿する
人材を紹介してもらう
ブログを投稿
ココナラブログ
ホーム
ブログトップ
ブログ
IT・テクノロジー
PythonでNCプログラムを自動生成してみる
記事
IT・テクノロジー
生産技術プログラマ
2024/09/28 22:04
ココナラの名前を、「生産技術プログラマ」に戻しました。なんとなく。
はい。
今回は、CNCフライスやCNC旋盤の制御に欠かせないNCプログラム(.ncd)のお話です。
プライベートで、多くのNCプログラムを作成する機会があり、なんか自動化できたらいいよなーと 何年も考えてきたのですが、今年から学んでいるPythonでやってみたら、あっさりと形になりましたー、という話です。
<忙しい方のための要約ぅ~>
・CAD作図 →NCVCでNCデータ変換が面倒なので、Pythonで自動化してみた。
・ついでにスプライン関数で曲線補間したら、Pythonだとチョー楽だった件。
・UIに拘らなければ、コーディング開始~たたき台完成まであっという間。Pythonすげー。
はい。ちゃんと真面目に解説します(笑)
テストですので、シンプルな切削軌道といくつかの条件だけを与えて、PythonでNCデータを自動生成することを主眼とします。
動作仕様は、以下の通り。
(1) xy座標をCSVファイルにまとめて、インプットファイルとして読み込み。
(2) NCデータ冒頭には、アブソリュート指令やワーク座標系などの命令を固定で。
(3) NCデータ末尾には、クーラント停止などの命令を固定で。
(4) 切削軌道は、次の2パターンを持つことにします。
パターン1: 直線
パターン2: スプライン曲線
ファイルの読書きや、配列データの処理などは、ネット上にたくさん良い文献がありますので、気になった方はGoogle検索したりCopilotで検索してみてください。(CopilotやChatGPTは、ほんとオススメです)
……………………………………………………………………………………
パターン1(直線軌道)は、割と簡単です。
・CSVファイルを読込み。
・NCデータ先頭にアブソリュート指令などを固定で書込み。
・座標データは、CSVファイルから読込んだ値に"X"{x_value}"Y"{y_value}"F"{feedrate}と記載するだけ。
・NCデータ末尾に、クーラント停止などを固定で書込み。
これだけです。
csvファイルは、pandas.read_csv()を使用すればOK。
切削起動の書込みは、open(path, mode='w') as fileで開いて、file.write(f'X{x_value}Y{y_value}F{feedrate}')と書けばいけます。
……………………………………………………………………………………
面白いのは、パターン2(スプライン曲線軌道)です。
従来の方法では、CADソフトなどで座標空間のキャンバスを準備して、スプライン曲線を手動でプロットする必要がありましたが、これがなかなか手間がかかります。
そこで、Pythonを使用して、曲線軌道を自動で計算できないかというアイディアです。
与えるデータは、パターン1(直線軌道)と同じ。
(これが、通過するXY座標のポイントデータになります)
CSVデータの読出しは、
df = pandas.read_csv(path)
で同じですが、xy座標は
xs = df['x'].values
ys = df['y'].values
でlist型として持っておきます。
ここで、スプライン関数の演算です。
from scipy.interpolate import CubicSpline
import numpy as np
cs = CubicSpline(xs, ys)
xxs = np.linespace(xs.min, xs.max(), num={補間する点数を考慮した整数値})
yys = cs(xxs)
これだけでスプライン関数で曲線補間された点群データが取得できます。
なんてこった。Visual Basicでトライしたときは、あんなに苦労したのに。こんなあっさりできてしまうとは…。
後は、パターン1(直線軌道)の時と同じ手順で、*.ncdファイルにデータを書き込むだけ。
ここまでできれば、あとはきちんとした切削軌道を与えたり、切削工具の始動時にワークを傷つけないように 一時的に退避して原点にアプローチするなどの処理を入れてあげるだけですね。
最後まで読んでくれて、ありがとうございます。
おしまい。
#CNC
#NC
#python
#スプライン
#CAD
生産技術プログラマ
システムエンジニア, プログラマ, 通訳 / 40代前半 / 男性
一覧に戻る