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

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

指定サイズ円を上下左右振り分け
AutoCAD lt 2016 使用
お世話になります。
以下の様な工程をマクロで制作可能でしょうか?
可能でしたらご教示頂けると嬉しいです。

既存四角形の左下角を基点として(左下角以外でも可)
1:指定サイズの円(十字中心線付き)を作成
2:指定サイズ円を基点からX値・Y値の位置に配置
3:既存四角形の中心から2の円を既存四角形四隅へ上下左右へ振り分け配置
4:1~3を繰り返す

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

  • シツモ
  • 2022/05/21 (Sat) 15:12:52
Re: 指定サイズ円を上下左右振り分け
あくまで参考ですが

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),;D1;直径^X\;X1;\;Y1;\;to;1,offset;;下線(左寄り)を選択^X\$M="""$(if,$(getvar,cmdactive),;setenv;to;1;select;non;@;non;@;;ucs;ob;non;@;id;gce;0<0;setenv;to;2,^Csetenv;to;0)""",,,,)$(nth,$(getenv,to),,,;P1;$(index,0,$(getvar,LASTPOINT))","$(index,1,$(getvar,LASTPOINT));line;non;$(/,$(getenv,D1),2)<W;non;$(/,$(getenv,D1),2)<E;;select;l;;line;non;$(/,$(getenv,D1),2)<S;non;$(/,$(getenv,D1),2)<N;;setenv;to;3,,,)$(nth,$(getenv,to),,,,select;l;p;;chprop;p;;lt;center;c;1;la;0;;circle;non;0<0;d;$(getenv,D1);select;l;p;;copybase;non;0<0;p;;erase;p;;setenv;to;4,,)$(nth,$(getenv,to),,,,,pasteblock;non;$(getenv,X1)","$(getenv,Y1);mirror;l;;non;$(getenv,P1);non;@1<N;N;select;l;p;;^Rxplode;p;;g;e;setenv;to;5,)$(nth,$(getenv,to),,,,,,-purge;b;*$(substr,$(getvar,insname),4);n;mirror;p;;non;$(getenv,P1);non;@1<E;N;rotate;p;;non;$(getenv,P1);c;180;ucs;p;^Csetenv;to;0)^M

1.マクロ起動
2.直径を指定
3.Xの値を指定
4.Yの値を指定
5.下線の左寄りを選択(参考画像の基点ではなく下線の左寄りです)

以上
  • chibi-tom
  • 2022/05/23 (Mon) 11:40:32
Re: 指定サイズ円を上下左右振り分け
談話室でOSNAPの図心が無いと情報いただいたので
とりあえず手数が一手増えましたが

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),;D1;直径^X\;X1;\;Y1;\;to;1,offset;;下線(左寄り)を選択^X\$M="""$(if,$(getvar,cmdactive),;setenv;to;1;select;non;@;non;@;;ucs;ob;non;@;id;mtp;non;0<0;対角点を選択^X\setenv;to;2,^Csetenv;to;0)""",,,,)$(nth,$(getenv,to),,,;P1;$(index,0,$(getvar,LASTPOINT))","$(index,1,$(getvar,LASTPOINT));line;non;$(/,$(getenv,D1),2)<W;non;$(/,$(getenv,D1),2)<E;;select;l;;line;non;$(/,$(getenv,D1),2)<S;non;$(/,$(getenv,D1),2)<N;;setenv;to;3,,,)$(nth,$(getenv,to),,,,select;l;p;;chprop;p;;lt;center;c;1;la;0;;circle;non;0<0;d;$(getenv,D1);select;l;p;;copybase;non;0<0;p;;erase;p;;setenv;to;4,,)$(nth,$(getenv,to),,,,,pasteblock;non;$(getenv,X1)","$(getenv,Y1);mirror;l;;non;$(getenv,P1);non;@1<N;N;select;l;p;;^Rxplode;p;;g;e;setenv;to;5,)$(nth,$(getenv,to),,,,,,-purge;b;*$(substr,$(getvar,insname),4);n;mirror;p;;non;$(getenv,P1);non;@1<E;N;rotate;p;;non;$(getenv,P1);c;180;ucs;p;^Csetenv;to;0)^M

1.マクロ起動
2.直径を指定
3.Xの値を指定
4.Yの値を指定
5.下線の左寄りを選択(参考画像の基点ではなく下線の左寄りです)
6.対角点を指定

以上
  • chibi-tom
  • 2022/05/23 (Mon) 11:52:21
Re: 指定サイズ円を上下左右振り分け
また余計な事をしていました
ブロックにする必要なんてなかった

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),;D1;直径^X\;X1;\;Y1;\;to;1,offset;;下線(左寄り)を選択^X\$M="""$(if,$(getvar,cmdactive),;setenv;to;1;select;non;@;non;@;;ucs;ob;non;@;id;mtp;non;0<0;対角点を選択^X\setenv;to;2,^Csetenv;to;0)""",,,,)$(nth,$(getenv,to),,,;P1;$(index,0,$(getvar,LASTPOINT))","$(index,1,$(getvar,LASTPOINT));line;non;$(/,$(getenv,D1),2)<W;non;$(/,$(getenv,D1),2)<E;;select;l;;line;non;$(/,$(getenv,D1),2)<S;non;$(/,$(getenv,D1),2)<N;;setenv;to;3,,,)$(nth,$(getenv,to),,,,select;l;p;;chprop;p;;lt;center;c;1;la;0;;circle;non;0<0;d;$(getenv,D1);select;l;p;;setenv;to;4,,)$(nth,$(getenv,to),,,,,move;p;;non;0<0;non;$(getenv,X1)","$(getenv,Y1);mirror;p;;non;$(getenv,P1);non;@1<N;N;mirror;p;;non;$(getenv,P1);non;@1<E;N;setenv;to;5,)$(nth,$(getenv,to),,,,,,rotate;p;;non;$(getenv,P1);c;180;ucs;p;^Csetenv;to;0)^M

操作方法は変わってません
  • chibi-tom
  • 2022/05/23 (Mon) 12:08:20
Re: 指定サイズ円を上下左右振り分け
chibi-tomさま
2種のマクロありがとうございます。
どちらも問題なく使用できました。
2種類とも登録し用途に合わせ、使わさせて頂こうと思います。

後、1点だけ教えて頂きたいのですが、指定円の十字中心線を添付図の様に直径☓1.3(全体の長さ)の割合で上下左右に割振る様に
して頂けると助かります。
説明不足の為にお手数お掛けし、大変申し訳ありません。
以上、宜しくお願い致します。
  • シツモ
  • 2022/05/23 (Mon) 12:32:49
Re: 指定サイズ円を上下左右振り分け
こんな感じ?

図心ver
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),;D1;直径^X\;D2;$M="""$(*,$(getenv,D1),1.3)""";;X1;\;Y1;\;to;1,offset;;下線(左寄り)を選択^X\$M="""$(if,$(getvar,cmdactive),;setenv;to;1;select;non;@;non;@;;ucs;ob;non;@;id;gce;0<0;setenv;to;2,^Csetenv;to;0)""",,,,)$(nth,$(getenv,to),,,;P1;$(index,0,$(getvar,LASTPOINT))","$(index,1,$(getvar,LASTPOINT));line;non;$(/,$(getenv,D2),2)<W;non;$(/,$(getenv,D2),2)<E;;select;l;;line;non;$(/,$(getenv,D2),2)<S;non;$(/,$(getenv,D2),2)<N;;setenv;to;3,,,)$(nth,$(getenv,to),,,,select;l;p;;chprop;p;;lt;center;c;1;la;0;;circle;non;0<0;d;$(getenv,D1);select;l;p;;setenv;to;4,,)$(nth,$(getenv,to),,,,,move;p;;non;0<0;non;$(getenv,X1)","$(getenv,Y1);mirror;p;;non;$(getenv,P1);non;@1<N;N;mirror;p;;non;$(getenv,P1);non;@1<E;N;setenv;to;5,)$(nth,$(getenv,to),,,,,,rotate;p;;non;$(getenv,P1);c;180;ucs;p;^Csetenv;to;0)^M

対角指定Ver
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),;D1;直径^X\;D2;$M="""$(*,$(getenv,D1),1.3)""";;X1;\;Y1;\;to;1,offset;;下線(左寄り)を選択^X\$M="""$(if,$(getvar,cmdactive),;setenv;to;1;select;non;@;non;@;;ucs;ob;non;@;id;mtp;non;0<0;対角点を選択^X\setenv;to;2,^Csetenv;to;0)""",,,,)$(nth,$(getenv,to),,,;P1;$(index,0,$(getvar,LASTPOINT))","$(index,1,$(getvar,LASTPOINT));line;non;$(/,$(getenv,D2),2)<W;non;$(/,$(getenv,D2),2)<E;;select;l;;line;non;$(/,$(getenv,D2),2)<S;non;$(/,$(getenv,D2),2)<N;;setenv;to;3,,,)$(nth,$(getenv,to),,,,select;l;p;;chprop;p;;lt;center;c;1;la;0;;circle;non;0<0;d;$(getenv,D1);select;l;p;;setenv;to;4,,)$(nth,$(getenv,to),,,,,move;p;;non;0<0;non;$(getenv,X1)","$(getenv,Y1);mirror;p;;non;$(getenv,P1);non;@1<N;N;mirror;p;;non;$(getenv,P1);non;@1<E;N;setenv;to;5,)$(nth,$(getenv,to),,,,,,rotate;p;;non;$(getenv,P1);c;180;ucs;p;^Csetenv;to;0)^M
  • chibi-tom
  • 2022/05/23 (Mon) 13:00:12
Re: 指定サイズ円を上下左右振り分け
お世話になります。
早速のご回答誠にありがとうございます!

そして分かりやすく2種表記して頂き感謝します。

使い易さが増しました。

改めてありがとうございました。
  • シツモ
  • 2022/05/23 (Mon) 13:07:59

返信フォーム






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