連続コピーを作る。

 2005からのコピーコマンドは、完全連続コマンドになりました。が、それ以前は「単発」コマンドだったんです。連続にするためには、自分でいちいち、「m」を入力して「連続モード」にするというめんどくささ・・・。なので、以下で紹介している「連続コピーマクロ」は、2004以前のバージョンではかなり実用性のあるマクロだったんです。
 現在、2005以上でお使いの方には、もはや用のないマクロだと思いますが、これを使って、マクロの中で「オブジェクトを選択する」にはどういう記述にしたらいいか、を勉強してみましょう。

 まずは2004以前のバージョンで、普通に「連続コピー」にする場合。
 こんな要領で、オブジェクトを選択してから「m」→Enterし、その後、「始点」を指定する、という手順です。
 これをマクロで表現してみましょう。

 上の順序通りのマクロです。難しくないですね。

 しかし!上のマクロ式、よーく見てみて下さい。

 コピー実行の次、「\;」で選択しているので、クリック1つ・・・つまり、一つのオブジェクトしか選択できないですね。では、窓(or窓交差)で選択することを前提に「\\;」にしたらどうでしょう?それでも、窓を使えるのは一回こっきり。2回、3回とは窓選択も使えません。通常の作業を考えてみると、これは非常に不便です。

 こう考えると、コピーに限らず、移動やミラーでも「選択」がネックになりそうですが、実はマクロを組む場合、これを回避する
「裏技(!?)」があるのです。

 それが「select」という「オブジェクトを選択するというためだけのコマンド」。これも普通に作図していて、絶対に使わないコマンドですが、コマンドラインからちゃんと実行できる普通のコマンドなんです。(実行すると、ただただ、オブジェクトを選択していって、Enterキーで終わり、という、それだけコマンドなんですが)


コピーコマンドでselectを使うには・・・

 でも、だからと言って、↑このようにフツーにコピーコマンド内にselectを挿入してやると、途中で止まってしまうんです。
 直行モードと同様、AutoCAD的には「”select”じゃなくて、”オブジェクトを選択”してよ」と言っているんですが、ところが、selectは割込みコマンドでもないので、'selectという形も使えません。そこでどうするかと言うと・・・

 先に一回、オブジェクトをセレクトコピー実行「P」(直前のオブジェクトをセレクト)で先のオブジェクトを改めて選択!連続の「m」

 と、この流れでOKです!select;後の\は、「自分で入力する点」ではなく「決定のエンター」(注/>クリック)だと思って下さい。

 マクロでは、この”コマンド内で「P」を使う選択方法”はよく出てくるんですが、最初に見たときは目からウロコでしたね。


 実際に、上のマクロを動かしてみた時のコマンドラインの流れです。途中で止まらず、ちゃんとオブジェクト選択後も 流れているのが分かります。

 ついでなので、以前に掲示板で青葉さんに作ってもらったマクロ、「コピー先でプロパティを変更マクロ」での「P」の使われ方を見てみましょう。
 最後の「P」だけは、「プロパティを変更」の「P」ですが、後は全部、「直前のオブジェクト」の「P」です。

 どうですか?もう何をしているのか、読み解けてきますよね。


マクロで使える選択方法、色々

マクロで使える選択方法には、ヘルプを参照すると、他にも色々なものが出ています。中でも特に 「Last(L)=最後(に描いたもの)」「ALL=すべて」は、「P=直前」と 並んでよく使います。
 また、これらのものは、もちろんマクロの中ばかりでなく、普通にコマンドラインからの打込みでも使えるので、覚えておくと便利です。