この掲示板は AutoCADマクロ屋本舗 の掲示板です。

【 注意 】最初に必ず ↓↓ 下記内容 ↓↓ を参照ください。
① マクロが分からない方は、まず 【 マクロ講座 】 を参照ください。
② 質問の前に 【 マクロ使用前の注意事項 】 をお読みください。
③ 質問する時は、新規投稿フォーム下の【 新規投稿時のお願い 】を必ずお読みください。

無題
AutoCAD2019LT使用

下記のような回転+移動のコマンドを作りました。
回転移動自体はうまく動作しているのですが、
選択の部分がうまく動作しません。
先に選択した場合でもSELECTコマンドがスキップされないです。
CMDACTIVEを入れているのですがどこがおかしいのか見つけられない為
教えて頂けないでしょうか。
よろしくお願いいたします。


*^C^C$M=setenv;to;0;$(nth,$(getenv,to),select;$M="""$(if,$(getvar,CMDACTIVE),\,)"""id;基点を指定:^X\setenv;to;1,,,,)$(nth,$(getenv,to),,;RoMoP1;$M=$(getvar,lastpoint);id;移動先を指定:^X\setenv;to;2,,,)$(nth,$(getenv,to),,,;RoMoP2;$M=$(getvar,lastpoint);;RoMoA1;回転角度を指定[反時計回り(90)/時計回り(-90)]:^X\setenv;to;3,,)$(nth,$(getenv,to),,,,undo;be;rotate;p;;non;$(getenv,RoMoP1);$(getenv,RoMoA1);setenv;to;4,)$(nth,$(getenv,to),,,,,move;p;;non;$(getenv,RoMoP1);non;$(getenv,RoMoP2);undo;e;setenv;to;0)^M


  • BIJIKENTY
  • 2021/11/13 (Sat) 14:10:48
Re: 前選択しても、選択が解除される件
冒頭の「setenv;to;0;」が実行される過程で、その前に選択していても、その選択が解除されるから、
何も選択していないでマクロ実行した時と同じ動作になってしまいます。

「setenv」って、関数じゃなくコマンドなんですよ。
だから、selectの前にsetenvを実行することは、selectの前にlineコマンドを実行するのと同じ事で、
選択は解除されてしまいます。

↓ここの最後に同じ様な事を書いてます。
https://totthi.bbs.fc2.com/?act=reply&tid=16642567
  • Lon
  • 2021/11/13 (Sat) 15:14:12
Re: 無題
そちらの記事は以前読ませて頂いたのですが、
それなら、マクロ屋本舗サイトにある例えば"[15]連続コピー"等も
同様の冒頭から始まっているかと思うのですが、どういう違いなのでしょうか?
  • BIJIKENTY
  • 2021/11/13 (Sat) 16:55:40
Re: 前選択しても、選択が解除される件
"[15]連続コピー"は、使った事無いのですが、先選択でも使用可能なのですか?
  • Lon
  • 2021/11/13 (Sat) 18:13:27
Re: 前選択しても、選択が解除される件
すみません。
確認したわけではないです。
あそこにあがっているものは
基本問題なく動作するものだと思って例にあげました。
  • BIJIKENTY
  • 2021/11/15 (Mon) 10:12:53
Re: 前選択しても、選択が解除される件
>確認したわけではないです。
確認されてから質問されるべきでは?
たぶんできないです

>そちらの記事は以前読ませて頂いた
とありますができないことはご理解されましたか?

そして、とってぃさんのマクロはかなり前に作られたもの
15.に関しては元となっているマクロはLT2000バージョンの物です
バージョンアップに伴い改良はされていますが基本的には
当時の考えのままだと思います

よって、”当時は勘違い”されていた
あるいは当時はできていたと考えるべきだと思います
  • chibi-tom
  • 2021/11/15 (Mon) 11:36:41
Re: 前選択しても、選択が解除される件
確認不足すみませんでした。
へーそうなんだー位の理解でしたが
とってぃさんのマクロを動作確認せずに
使えるものだと思い込んでいたために
前選択できる場合と出来ない場合があるのかな
と思い質問させていただきました。

つまりは、現時点で
前選択とnthの併用は不可ということでしょうか?
  • BIJIKENTY
  • 2021/11/15 (Mon) 13:42:48
Re: 前選択しても、選択が解除される件
ん?
ホントに読まれました?

↓ここの最後に同じ様な事を書いてます。
https://totthi.bbs.fc2.com/?act=reply&tid=16642567

の最後のマクロでできていると思いますが

>前選択とnthの併用は不可ということでしょうか?
場合によっては、不可能ではないということになりますね

おまけ
下記の自分のマクロでもできているはずです
https://totthi.bbs.fc2.com/?act=reply&tid=16689499#24275472
  • chibi-tom
  • 2021/11/15 (Mon) 13:48:30
Re: 前選択しても、選択が解除される件
すみません勘違いしていました。
下記にて無事前選択できるようになりました。
ありがとうございます。

ぶしつけではありますが今後の勉強の為に
こここうしたほうがいいよとか
ここもっと短くできるよとかありましたら
ご教授頂けないでしょうか?
よろしくお願いいたします。
(注.改行入っています。)


*^C^C$M=
$(nth,$(getenv,to),select;$M="""$(if,$(getvar,CMDACTIVE),\,)"""id;基点を指定:^X\setenv;to;1,,,,)
$(nth,$(getenv,to),,;to;0;;RoMoP1;$M=$(getvar,lastpoint);id;移動先を指定:^X\setenv;to;2,,,)
$(nth,$(getenv,to),,,;to;0;;RoMoP2;$M=$(getvar,lastpoint);;RoMoA1;回転角度を指定[反時計回り(90)/時計回り(-90)]:^X\setenv;to;3,,)
$(nth,$(getenv,to),,,,undo;be;rotate;p;;non;$(getenv,RoMoP1);$(getenv,RoMoA1);setenv;to;4,)
$(nth,$(getenv,to),,,,,move;p;;non;$(getenv,RoMoP1);non;$(getenv,RoMoP2);undo;e;setenv;to;0)^M

  • BIJIKENTY
  • 2021/11/15 (Mon) 15:41:29
Re: 前選択しても、選択が解除される件
これが正解は無いと思いますが

操作感を変えずに移動を視覚的にわかりやすく
*^C^Cselect;$M=$(if,$(getvar,CMDACTIVE),\,)move;p;;\\setenv;RoMoA1;回転角度を指定[反時計回り(90)/時計回り(-90)]:^X\rotate;p;;non;@;$M="$(getenv,RoMoA1)"^M
追記、これで良いんだ
*^C^Cselect;$M=$(if,$(getvar,CMDACTIVE),\,)move;p;;\\rotate;p;;non;@;回転角度を指定[反時計回り(90)/時計回り(-90)]:^X\


以下おまけです参考までに

*^C^Cselect;$M=$(if,$(getvar,CMDACTIVE),\,)setenv;RoMoA1;回転角度を指定[反時計回り(90)/時計回り(-90)]:^X\rotate;p;;\$M="$(getenv,RoMoA1)";move;p;;non;@;\
追記、これもこれで良いんだ
*^C^Cselect;$M=$(if,$(getvar,CMDACTIVE),\,)rotate;p;;\回転角度を指定[反時計回り(90)/時計回り(-90)]:^X\move;p;;non;@;\

こんな風に回転を切り替えることもできます
*^C^Cselect;$M=$(if,$(getvar,CMDACTIVE),\,)move;p;;\\rotate;p;;non;@;90;ray;(L-Clickでそのまま/R-Clickで180度回転)^X\$M="$(if,$(getvar,CMDACTIVE),,rotate;p;;non;@;180)"^M

1.マクロ起動(先に選択していてもOK)
2.基点指定
3.移動先を指定(反時計回りに90度回転します)
4.L-Clickでそのまま/R-Clickで180度回転
繰り返し

または
*^C^Cselect;$M=$(if,$(getvar,CMDACTIVE),\,)ray;基点を指定【反時計回り<90>(時計回り<-90>はR-Click)】:^X\$M="$(if,$(getvar,CMDACTIVE),;setenv;sw;1;,setenv;sw;0;id;\)"rotate;p;;non;@;$M="""$(if,$(getenv,sw),90,-90)""";move;p;;non;@;\

1.マクロ起動(先に選択していてもOK)
2.基点指定(時計回り<-90>の場合はR-Click後に基点指定)
3.移動先を指定
繰り返し

もひとつどーぞ

*^C^C$M=$(nth,$(getenv,to),select;$M="""$(if,$(getvar,CMDACTIVE),\,)"""id;基点を指定^X\setenv;to;1,;to;0;move;p;;non;@;\rotate;p;;non;@;90;setenv;to;2,)$(nth,$(getenv,to),,,;to;0;ray;決定(L-Click)/回転(R-Click):^X\$M="""$(if,$(getvar,cmdactive),,rotate;p;;non;@;180;setenv;to;2)""")^M

1.マクロ起動(先に選択していてもOK)
2.基点を指定
3.移動先を指定
4.決定(L-Click)/回転(R-Click)
R-Clickのたび180度回転しますL-Clickで決定後は選択から繰り返しです

終了はどれもEscキーです
  • chibi-tom
  • 2021/11/15 (Mon) 16:14:40

返信フォーム






プレビュー (投稿前に内容を確認)