一例として、filletではなくtrimのフェンス選択を使用しました。
^C^C_id;\_setenv;p1;$M=$(getvar,lastpoint);_id;\_setenv;p2;"$M=$(getvar,lastpoint)";_id;\_setenv;p3;"""$M=$(getvar,lastpoint)""";trim;f;"$M=$(getenv,p1)";"""""""$M=$(getenv,p3)""""""";;;f;"$M=$(getenv,p1)";"""$M=$(getenv,p2)""";"""""""$M=$(getenv,p3)""""""";;;
返信ありがとうございます。
インターネットで検索すると、
setenvコマンドはAutoCAD LT専用と書いてありました。
AutoCADを使っている場合はどう書き換えればよいでしょうか?
すみません。R版というのを忘れていました。
setenv、getenv使わない版です。(2018で動作確認)
^C^C_id;\_users1;$M=$(getvar,lastpoint);_id;\_users2;"$M=$(getvar,lastpoint)";_id;\trim;f;@;"$M=$(getvar,users1)";;;f;@;"""$M=$(getvar,users2)""";"$M=$(getvar,users1)";;;
上記の使う版も少し文字数減らしました。
^C^C_id;\_setenv;p1;$M=$(getvar,lastpoint);_id;\_setenv;p2;"$M=$(getvar,lastpoint)";_id;\trim;f;@;"$M=$(getenv,p1)";;;f;@;"""$M=$(getenv,p2)""";"$M=$(getenv,p1)";;;
返信ありがとうございます。
一生懸命、解読していたのですが、「"」の意味がよくわかりません。
説明して頂けると有難いです。
宜しくお願い致します。
>一生懸命、解読していたのですが、「"」の意味がよくわかりません。
マクロの中の「"」は、値を取得するために処理をあえて遅延させるためのものです。
マクロの中で、システム変数等から値を取得する場合、「$M=」という文字列が出てきた時点の値を取得します。
上記のマクロで、「"」を使用しない場合、最初の「$M=」が出てきた時点の$(getvar,lastpoint)は、最初のidコマンドでクリックした点の座標値になります。つまり、users1、users2ともに同じ値が入ってしまいます。
そこで2回目のidコマンドでクリックした点の座標値を取得するため、次の$M=$(getvar,lastpoint)を「"」で囲み、1度目の「$M=」のタイミングでは処理しないようにします。
このように、「"」で囲むことで処理を遅らせることができるのですが、その際、2回遅延させたい場合は「""」で囲むのではなく、「"""」と3つになります。もう1段階遅らせる場合は、「"」が5つと2個ずつ増やす必要があります。
上記のように1回目(オレンジ)の「$M=」で、users1にlastpointの値をセットします。次に2回目(青)の「$M=」でusers2にlastpointの値をセットします。また、trimに使用するusers1の値もこの時点で取り出します。なぜなら、1回目の時点ではusers1に値がセットされていないからです。そして、3回目(緑)の「$M=」で、users2の値を取り出しています。