サービス
サービスを探す
プロ人材を探す
仕事を探す
ブログを探す
サービス
サービスを探す
プロ人材を探す
仕事を探す
ブログを探す
購入・発注したい方
サービスを探す
プロ人材を探す
ノウハウ・素材を探す
ブログを探す
仕事・求人を投稿して募集
エージェントに人材を紹介してもらう
受注・働きたい方
出品する
単発の仕事を探す
継続 (時給/月給) の仕事を探す
エージェントに仕事を紹介してもらう
カテゴリ一覧
PRO認定
すべての
PRO認定
人気のご利用シーン
商品・サービスPR
プライベート代行・お困りごと解決
独立開業・新規事業
ECサイト運営
メディア運営
店舗開業・運営
YouTuber・VTuber
結婚式
コンテンツ
弁護士検索・法律Q&A(法律相談)
サポート
はじめての方へ
ご利用ガイド
お困りのときは
ログイン
会員登録
サービスを探す
プロ人材を探す
デザイナー
>
イラストレーター・漫画家
>
クリエイター
>
エンジニア
>
AI・機械学習
>
Webサービス・制作
>
ゲーム
>
PM・PO・ディレクター
>
マーケティング
>
営業
>
カスタマーサポート・カスタマーサクセス
>
コンサルタント
>
経営・マネジメント
>
管理
>
事務・ビジネスサポート
>
人事
>
研究・開発・設計
>
生産・品質管理
>
医療・介護
>
物流・購買
>
不動産
>
建築・土木・施工管理
>
メディア・出版・広告
>
金融専門職
>
士業・専門職
>
ライフスタイル・その他
>
>
ノウハウ・素材を探す
ビジネスノウハウ
ココナラノウハウ
学び
マネー・副業
テンプレート
占い
ライフスタイル
AI・テクノロジー
素材
趣味・エンタメ
作品
小説・コラム・エッセイ
ブログを探す
コラム >
ビジネス・マーケティング >
デザイン・イラスト >
学び >
写真・動画 >
音声・音楽 >
美容・ファッション >
小説 >
IT・テクノロジー >
ライフスタイル >
エンタメ・趣味 >
占い >
マンガ >
法律・税務・士業全般 >
マネー・副業 >
>
求人募集を投稿する
人材を紹介してもらう
仕事を探す
単発の仕事
継続(時給/月給)の仕事
出品する
仕事を探す
単発の仕事
継続(時給/月給)の仕事
仕事を紹介してもらう
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代前半 / 男性
一覧に戻る