「他画層」にラインを描くには?

 前のページでは「現在画像」に「作成」する場合についてをマクロ上で考えてみたので、ついでに「他画層」に作図する場合にはどうしたらよいかも考えてみましょう。$M=$(・・・)の形を使えば出来ますが、$M=の”位置”がポイントになりますので、ここは必見です。

 今回やるのは、こういうことです。「現在画層」はそのままに、違う画層に線を描いてみましょう、という・・・。
 普通にやっていれば不可能に思えるこんな事も、マクロを使えば可能なんですよ!

 まずは「手作業」でやる場合にはどうやってやるか、の流れですが、↑のように「0」画層のところを「Layer」「s」で「画層3」に変えてラインを引き、再度「Layer」「s」で「0」画層に戻す、という作業になります。(これをマクロで一つのボタンに組んでしまえば、あたかも「現在層」を変えずに「他画層」に描けたような感覚に・・・)

 マクロに組んでみました。せかっくなので、最後は「$M=$(getvar,clayer)」を使って、現在画層に戻しています。
 これで「現在画層」が「0」でない場合でも対応可能なはずです。

 ところが、動かしてみると、線はちゃんと「画層3」に引けるんですが、「現在画層」が「0」に戻りません。どうしてこうなるのでしょう?

 もう一度、確認してみましょう。

 これは「$M=」の位置に問題があるのです。前のページで「"$M="でマクロを一旦、停止して$(・・・)を先に処理する」と説明しました。それを踏まえて、もう一度、左のマクロ式を見てみると、「$M=」による「現在層」の取得が「線を引き終わったところ」、つまり画層が既に「画層3」に変わったところで行われています。

 そこで、「$M=」を、現在層が「画層3」に変わる前に移動させてみます。これでちゃんと元々の「現在画層」を取得してくれるはずです。

 この通り、バッチリです。

 そろそろ「管理人には質問しないで下さい」なレベルに突入してきましたが(笑)、「$M=」と「$(・・・)」の関係はわかりましたか?
 私も最初はおぼろげながらに分かった程度だったですが、その後、自分の使っている既存のマクロをよく見てみることによって、ちょっとつかめてきました。ここまでくると、ホント、「言語」の習得のように数を見て「慣れる」ことが重要かも知れません。