AutoLISPに王道なし。
いきなりAutoLISPが全部理解できる方法はありません。
勉強の仕方は人それぞれ。参考にはなるかどうかは… ですが、私の経験談です。
とりあえずわかる範囲でAutoLISPを使う
図形の色を変えるコマンド。
多分、これは私が最初に実務で使い始めた自作AutoLISPコマンドの1つだったと思います。
サンプルに、色を変えるコマンド2種類上げました。
ここでは、AutoLISPでこんなことができますよ~。
というサンプルなので、エラー処理や図形選択時にオプションを入れたり、クリックミスへの対策を入れたり、グループ選択と個別選択選べるよにしていたり、グローバル変数を保存したりしていますが、
もちろん、いきなりこんなややこしいものを作ったわけではありません。
実際に、3年前に私が使っていた図形の色を変えるコマンドは、
(defun c:C1 () (command "CHANGE" pause "" "P" "C" 1 ""))
この一行です。
自作関数にするなんてことも知らずに、コピペして、使いたい色の数だけ、コマンド名と色番号だけを変更したものをいくつも作ってました。
日々の作業が楽になること実感する
このシンプルなコマンドでも十分、”図形の色を変更する” というルーティン作業を、AutoLISPで1つのコマンドにできています。
同じように、既存のAutoCADコマンドだけで完結するようなものばかり作っていました。スクリプトやマクロでも十分できるような内容です。
なぜ、スクリプトやマクロを極めずにAutoLISPを使い続けたのかというと、AutoCAD LTでは使えないということから、価格が高いAutoCADでしか使えないなら何かしら特別なんだろう。
それぐらいの理解で、当時は実際にマクロやスクリプトではできないAutoLISPの便利さには気づいていませんでした。
関数で引数で戻り値とかもよくわかってなかったです。
AutoLISPが俗に言う”プログラミング”ということも知りませんでした。
CAD作業をしながら、この一連の流れはまとめてしまえるかなぁと考えて、コマンドラインの履歴で見て、既存コマンドとそのオプションを並べるだけのコマンドを作っていました。
しかし、それだけでも作業効率が上がっていくのを感じることができました。
AutoLISPに組み入れるために、便利なコマンドがあるか、各コマンドにはどんなオプションがあるのか、暇があればコマンド一覧やリボンの中のアイコンを見ていたので、結構マイナーなコマンドにも詳しくなりました。
既存のコマンドに詳しくなれたことも、CAD作業効率化の役に立ちました。
このように既存のコマンドを組み合わせていただけでしたが、
AutoLISPでCAD作業が楽になってる♪
これを実感できたことで、AutoLISPについてどんどん学びたいという意欲が湧いてきました。
一番の原動力は”ラクしたい”
AutoLISPがCAD作業を楽にしてくれることがわかったので、どんどん興味が湧いて、暇があればいつもAutoLISPに関して検索していました。
最初は正直、ほとんど意味がわかりませんでした。
変数名は自分で名前を付けられるということも知らず、関数のように決まった名前があるのだと思い、検索してこの場合に使う変数名はと調べて混乱していたのも良い思い出です。
今でこそ、AutoLISPで仕事を効率化したことを周りも認めてくれているので、仕事中にAutoLISPをいじっていても誰も何もいいませんが、当時は勤務時間以外、プライベートの時間を使ってAutoLISPを勉強していました。
私の業務は、CAD操作自体はシンプルで、これは絶対にコンピューターの方が得意な作業だと思っていました。AutoLISPを極めればきっと自動化できてラクになると期待していました。
”ラクしたい” そのためにプライベートの時間を割いて必死に勉強するという矛盾。
AutoLISPに関して検索しまくって、ほとんど意味がわからないまま読んだり動画を見たり。
とくかく自動化できるなら自動化してラクしたい!!!その気持ちが強くて継続できました。
継続は力なり。
継続して、わかる範囲でコマンド作って改良を続けるうちに、気がつけば以前はチンプンカンプンだったことがわかるようになっていきました。
理解するために心掛けていたこと
検索すれば出てくるAutoLISPのサンプル。
中身が何かわからないままでは使わない。と決めていました。
そのまま丸ごとコピーはしたことなくて、出てきた関数はすべて調べて、意味が理解できた部分だけマネしてました。
社内に多少、共有フォルダに誰かが作ったAutoLISPがありましたが、それも中身を見て理解できたものだけをカスタマイズしながら使いました。
その結果、使うAutoLISPコマンドは理解しているものばかりなのでで、実際にコマンドを使っていて、ここがこうだったらなと変更したい部分があれば、自分が使いやすいようにカスタマイズができました。
中身をわかっているので、エラーが起きれば、自分で対策して書き換えることもできました。例えば図形選択時のクリックミス対策や、エラー処理の必要性などもわかってきました。
誰もが欲しい汎用性があるようなことはすでにAutoCADコマンドになっています。
AutoCADコマンドには無いけどあったら便利なことは、この業務でしか使わないようなマイナーなことが多いように思います。なので、自分で自分の作業にあったコマンドを自分が使いやすいようにカスタマイズできることはすごく作業効率を上げる力になります。
ある日突然すべて理解できた!というような出来事はありませんが、欲しいコマンドが思いついてそれを形にしたり、エラーが起きてその原因を見つけて対策を考えたり調べたりするうちに、少しづつ理解が進んでいったという感じです。
AutoLISPプログラミング自体が楽しくなる
ラクできることを期待して勉強してきたAutoLISPですが、ある程度できるようになってくると、
こんなことできたらいいなと新しいコマンドのアイデアが思いついて、どう組み合わせたら実現するか考えたり調べたりして、プログラミングして、エラーで上手くいかなくて、エラー箇所探して直して、ついに思ったようにAutoCADが動く!!!
この作業自体がめちゃくちゃ楽しくなりました。
そんなに作業効率は変わらないけれど、あえてAutoLISPでオリジナルコマンドにしてみる。みたいなこともしてます。
楽しいのでとにかくコマンドを作りまくる。これをしているうちに、慣れてきて、以前だったら何週間もかけていたものが、関数の知識が増え、よくやる自分のミスのパターンがわかっていくうちに、数時間でできるようになりました。
エラーを見つけたり、新しいアイデアを思いついてから完成するまでの時間が短くなって、昔だったら数週間は楽しめたのになぁと、寂しく感じることも。
周りにシェアしたくなる
私の職場の立ち位置としては、歳は取ってるけどAutoCAD歴が無い新人。
作業がめっちゃラクになるAutoLISP作ったよ!と宣伝しても、なかなか周りのCADオペには見てもらえませんでした。
今思えば、経験もないのに業務改善って、嫌な新人です。しかも歳は食ってる。
しかし、それもあって、見てもらえる機会が来た時には、使う価値あるものだと思ってもらえるように、ダイアログボックスも付けよう、もっと使い勝手をよくしようなど工夫していけました。
自分で使うだけなら、中身がわかっているので、必要な情報が多いコマンドでもコマンドラインでユーザー入力でいいのですが、中身を知らない他人が使うことを考えた場合、コマンドに必要な情報や現在の設定が一覧になるダイアログボックスは必須です。
結果、私にとっても使いやすいコマンドに発展していきました。
現状
そんなこんなで、AutoLISPを使って作業効率化は進みました。
石の上にも三年。じっくりAutoLISPに向き合ってきたら、なかなか新しいコマンドのアイデアも無くなってきて、AutoLISPを楽しめる時間が減ってきたので、ブログで情報発信をしてみることにしました。
ここで記事を書くことで、調べ直したりして、以前読んだときには理解できなかったことが今ではわかったり、新しい発見があったりして新鮮です。
今までの使っていた自作コマンドにもたくさんの改善点が見つかりました。
とにかく、単にコマンドを並べるだけのものでも、基本的なことだけでも、まずはわかる範囲でいろいろ作り、自分でカスタマイズできることの利便性を感じて、継続していくことをおススメします。
Comments