マクロの作り方

マクロの作り方

Anonymous
適用対象外
2,942件の閲覧回数
6件の返信
メッセージ1/7

マクロの作り方

Anonymous
適用対象外

マクロの初心者なので、教えて頂きたいです。

 

添付資料のマクロを作成したいです。

 

自分で考えましたが、できません。

どなたでもかまいません。

助けて頂けると有難いです。

 

以上、宜しくお願い致します。

 

0 件のいいね
解決済み
2,943件の閲覧回数
6件の返信
返信 (6)
メッセージ2/7

N.H1971
Advisor
Advisor

一例として、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)""""""";;;



H N
AUG-JP Staff
AUG-JP

メッセージ3/7

Anonymous
適用対象外

返信ありがとうございます。

 

インターネットで検索すると、

setenvコマンドはAutoCAD LT専用と書いてありました。

 

AutoCADを使っている場合はどう書き換えればよいでしょうか?

 

0 件のいいね
メッセージ4/7

N.H1971
Advisor
Advisor
解決済み

すみません。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)";;;



H N
AUG-JP Staff
AUG-JP

メッセージ5/7

Anonymous
適用対象外

返信ありがとうございます。

 

一生懸命、解読していたのですが、「"」の意味がよくわかりません。

説明して頂けると有難いです。

宜しくお願い致します。

 

 

0 件のいいね
メッセージ6/7

N.H1971
Advisor
Advisor

>一生懸命、解読していたのですが、「"」の意味がよくわかりません。

 

マクロの中の「"」は、値を取得するために処理をあえて遅延させるためのものです。

マクロの中で、システム変数等から値を取得する場合、「$M=」という文字列が出てきた時点の値を取得します。

上記のマクロで、「"」を使用しない場合、最初の「$M=」が出てきた時点の$(getvar,lastpoint)は、最初のidコマンドでクリックした点の座標値になります。つまり、users1、users2ともに同じ値が入ってしまいます。

そこで2回目のidコマンドでクリックした点の座標値を取得するため、次の$M=$(getvar,lastpoint)を「"」で囲み、1度目の「$M=」のタイミングでは処理しないようにします。

このように、「"」で囲むことで処理を遅らせることができるのですが、その際、2回遅延させたい場合は「""」で囲むのではなく、「"""」と3つになります。もう1段階遅らせる場合は、「"」が5つと2個ずつ増やす必要があります。Quote.PNG

上記のように1回目(オレンジ)の「$M=」で、users1にlastpointの値をセットします。次に2回目(青)の「$M=」でusers2にlastpointの値をセットします。また、trimに使用するusers1の値もこの時点で取り出します。なぜなら、1回目の時点ではusers1に値がセットされていないからです。そして、3回目(緑)の「$M=」で、users2の値を取り出しています。

 



H N
AUG-JP Staff
AUG-JP

メッセージ7/7

Anonymous
適用対象外

わかりやすい説明で理解できました。

ありがとうございます。

 

 

 

0 件のいいね