Open3
【pythonで業務改善】FANUC製NCのCNCPRM.TXTをparseして編集したり検索したりするモジュール
cncprm.txtをexcelへ取り込んで一覧表にする事から始めた。
任意のPrmNo.と軸番号、bitかbyte取得かを引数として
その右隣の列に該当するパラメータ値を書き込む
という物を作った。
パースするほどでは無く、CNCPRM.TXTを上から順に比較、ループさせるだけだ。
もちろん引数が昇順に並んだ表でなければならないし、CNCPRM.TXT内が若番から並んでいる前提である為
NC立ち上げ用に手書きしたようなCNCPRM.TXTでは
前提が崩れる場合があるので動作保証出来ない。
NCから吸い上げたバックアップを処理する程度なら
業務改善にこのまま繋がれるが
せっかくならパースして独自のオブジェクトとして取り込んだモノを色んなメソッドから引き出せたり
複数ファイルのマージが手軽に行えたりすれば
ちょーかっこ良くなりそうじゃね?
VBAでそれをする場合、かなりのコード量になりそうだ。
そこまでVBAに凝りたいわけでもないので
ここからは話題(?)のpythonで作ってみようと思います。
とりあえずインスタンス化したオブジェクトにJSON形式でパースした辞書型を保持。
PrmNo.、軸番号、ビット数(指定無しでbyte取得)の引数で
パラメータ検索できるようにした。
JSONモジュールを使って2ファイルをマージさせてみたら結構すんなりマージ出来た。
あとは元のCNCPRM.TXTのテキスト形式へ戻すメソッドが作れれば
当初の目的は大まかには達成かな?
CNCPRM.TXTへのDUMP処理
JSON形式(辞書型)で作成した甲斐あって、KeyからValueを引っ張って文字列へ合体させていくだけで済んだ。
併せて
テキストファイルからの取り込みに限らず、文字列リテラルからのloads も実装。
いや、まぁこれも元々関数化してた処理を横流ししただけなので大したもんじゃない…
error処理のデバッグは簡単にしか出来てないんだよな。。
一応は if else とか try,except とかで逃がしてはいるけど
もうそろそろ全体的に機能チェックしてみようかしら。
所詮ど素人、使える形にする事を最優先に
積極的な関数化や変数の扱いについての理解を深めていきたい。
classについては、かなり理解が深まって来た。