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

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

片開き扉 線作図
お世話になります。

使用環境は以下の通りです。

OS:WINDOWS10 64ビット
使用ソフト:AUTOCAD LT 2016

添付画像の既に作図済のA点B点C点D点を結ぶ四角形(白線)内にA点E点、E点D点を結ぶ2線(緑線)の線作図をなるべくクリック数を少なく、マクロ化出来ないものか質問した次第です。

1:E点はB点C点の中点。
2:開始点をA点としクリック。終点をC点としてクリックし、A点E点、E点D点の2線を作成するマクロ。

上記、1・2を元にA点E点、E点D点を結ぶ2線のマクロの作成方法をご教授頂けたら幸いです。

ちなみに、私はマクロ等制作に関しては、初心者であります。

以上、宜しくお願い致します。
  • シツモ
  • 2017/09/29 (Fri) 10:17:19
Re: 片開き扉 線作図
あまりマクロにする程でもない気がします。

Oスナップに中点チェック入れておけば
A⇒E⇒Dと指定すれば画像の線分は可能ですよ。

Oスナップにチェック入れたくなくても
E点指定する時に、Shift+右クリックで
一時Oスナップの中点を選べば出来ます。

マクロにした場合でも、2点は指定する必要がありそうですし・・

かなり大量の個数に必要な作業なのでしょうか?

  • とってぃ
  • 2017/09/29 (Fri) 13:06:31
Re: 片開き扉 線作図
とってぃさま
お返事ありがとうございます。
確かに3点クリックが2点になるくらいなのですが、
数が多いと大変な作業となってしまっている状況です。
  • シツモ
  • 2017/09/29 (Fri) 14:35:37
Re: 片開き扉 線作図
追伸。
記載漏れしてしまいました。
出来れば、その質問内容の作業を繰り返したいので、ESCボタンを押さない限り、A点・C点をクリック後、A点・E点・D点を結ぶ線作図を、
繰り返せるとありがたいです。
  • シツモ
  • 2017/09/29 (Fri) 14:42:12
Re: 片開き扉 線作図
ちょっと確認なんですが

最初に描いてある四角形は
ポリラインで必ず繋がって(1つのオブジェクト)いますか?
それとも、各辺単一の線オブジェクト(バラバラ)ですか?
それとも、どちらの場合も存在しますか?
  • とってぃ
  • 2017/09/29 (Fri) 16:08:35
Re: 片開き扉 線作図
と、質問しといてなんですが
作ってみました。

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),id;mid;\select;non;@;non;@;;undo;be;explode;@;$M="""$(if,$(getvar,cmdactive),;,)"""lengthen;dy;;;@;;setenv;to;1,,)$(nth,$(getenv,to),,;l1;$(getvar,perimeter);undo;e;u;line;mid;@;mid;\;ucs;ob;l;lengthen;dy;;;l;;erase;l;;setenv;l2;$M="""$(getvar,perimeter)""";;to;2,)$(nth,$(getenv,to),,,line;endp;0",$(/,$(getenv,l1),2);mid;$(getenv,l2)<0;endp;0,"-$(/,$(getenv,l1),2);;ucs;p)^M

●使い方 ※添付画像参照
1.AD辺中点選択
2.E点選択

2013動作確認済み
  • とってぃ
  • 2017/09/29 (Fri) 16:45:36
Re: 片開き扉 線作図
お返事ありがとうございます。

<最初に描いてある四角形は
<ポリラインで必ず繋がって(1つのオブジェクト)いますか?
<それとも、各辺単一の線オブジェクト(バラバラ)ですか?
<それとも、どちらの場合も存在しますか?

ポリラインでの四角形の場合もあれば、各辺単一の線オブジェクト(バラバラ)の場合もあります。

  • シツモ
  • 2017/09/29 (Fri) 16:46:54
Re: 片開き扉 線作図
早速、ご対応ありがとうございます。
実行してみた所、添付画像の様になってしまいました。
一連の流れを画像にしてみました。
尚、ポリラインでの四角形・各辺単一の線オブジェクト(バラバラ)共に同様でした。

流れ説明(赤い数字順)
1:マクロ実行後、AD辺中点クリック直前の画像。
2:AD辺中点クリック後、E点が選択出来ず、BC辺選択出来る状態での画像。その後BC辺クリック。
3:BC辺をクリックし、E点クリック直前の画像。
4:E点クリックした画像。

マクロ開始から4画像までの流れをF2ボタンでテキストをコピペした内容は、以下の通りです。


コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <0>: 0
コマンド: id
点を指定: mid
どこの X = 4445.1296 Y = 2050.4293 Z = 0.0000
コマンド: select
オブジェクトを選択: non
@
認識された数: 1
オブジェクトを選択: non
@
認識された数: 1 (重複している数: 1), 総数 1
オブジェクトを選択:
コマンド: undo
現在の設定: 自動 = オン, コントロール = すべて, 合成 = はい, 画層 = はい
取り消す操作の数を入力 または [自動(A)/コントロール(C)/開始(BE)/終了(E)/マーク(M)/後退(B)] <1>: be
コマンド: explode
オブジェクトを選択: @
コマンド: lengthen
計測するオブジェクトを選択 または [増減(DE)/比率(P)/全体(T)/ダイナミック(DY)] <ダイナミック(DY)>: dy
変更するオブジェクトを選択 または [元に戻す(U)]:
コマンド:
LENGTHEN
計測するオブジェクトを選択 または [増減(DE)/比率(P)/全体(T)/ダイナミック(DY)] <ダイナミック(DY)>: @
現在の長さ: 660.3758
計測するオブジェクトを選択 または [増減(DE)/比率(P)/全体(T)/ダイナミック(DY)] <ダイナミック(DY)>:
変更するオブジェクトを選択 または [元に戻す(U)]: setenv
*選択無効*
点を指定 または フェンス(F)/元に戻す(U)]:
変更するオブジェクトを選択 または [元に戻す(U)]:
新しい終点を指定:
  • シツモ
  • 2017/09/29 (Fri) 17:37:10
Re: 片開き扉 線作図
こんばんは!

長方形が水平・垂直のみの場合にしか対応しませんが、作ってみました。
マクロ実行⇒A点クリック⇒C点クリック です。

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),id;\setenv;X1;$M="""$(index,0,$(getvar,lastpoint));;Y1;$(index,1,$(getvar,lastpoint))""";;to;1,,,,,)$(nth,$(getenv,to),,line;non;@;\;setenv;X2;$M="""$(index,0,$(getvar,lastpoint));;Y2;$(index,1,$(getvar,lastpoint))""";;to;2;erase;l;,,,,)$(nth,$(getenv,to),,,;sw;$(/,$(-,$(getenv,X1),$(getenv,X2)),$(-,$(getenv,Y1),$(getenv,Y2)));;sw;$M="""$(*,$(getenv,sw),$(getenv,sw))""";;to;3,,,)$(nth,$(getenv,to),,,,;to;$(if,$(>,$(getenv,sw),1),5,4),,)$(nth,$(getenv,to),,,,,line;non;$(getenv,X1)","$(getenv,Y1);non;$(getenv,X2)","$(/,$(+,$(getenv,Y2),$(getenv,Y1)),2);non;$(getenv,X1)","$(getenv,Y2);,)$(nth,$(getenv,to),,,,,,line;non;$(getenv,X1)","$(getenv,Y1);non;$(/,$(+,$(getenv,X2),$(getenv,X1)),2)","$(getenv,Y2);non;$(getenv,X2)","$(getenv,Y1);)^M

  • Lon
  • 2017/09/29 (Fri) 20:01:38
Re: 片開き扉 線作図
Lonさま
お世話になります。
マクロありがとうございます。
希望通りのマクロで大変嬉しく思います。

ポリラインでの四角形・各辺単一の線オブジェクト(バラバラ)どちらとも対応できており、
且つ、添付図の様な4つのポリライン四角形で囲まれた、内側部に扉作図と言う作業もあり、
こちらでも対応できているようで、大変助かりました。

とってぃさま Lonさま ご多忙な中、相談に載って頂きありがとうございました。
  • シツモ
  • 2017/09/29 (Fri) 20:40:21
Re: 片開き扉 線作図
おはようございます!
動いて良かったです。

って事で、ちょっと変更しました。
山を書く方向が気に入らなかった場合、右クリックでXとY方向を入れ替える様にしました。
①マクロ実行
②A点クリック、C点クリック
③方向が気に入らなければ、右クリック。 okなら何もしないで②へ

※マクロの文字数が限界いっぱいなので、図面の状況やCADのバージョンにより動作しない事もあります。
※(この原理の説明は面倒なので、「そんな事もあるんだ」程度の認識で良いと思います)


*^C^C$M=setenv;to;0;$(nth,$(getenv,to),id;\setenv;to;1,,,,,,,)$(nth,$(getenv,to),,;X1;$M=$(index,0,$(getvar,lastpoint));;Y1;$(index,1,$(getvar,lastpoint));;to;2,,,,,,)$(nth,$(getenv,to),,,line;non;@;\;setenv;X2;$M="""$(index,0,$(getvar,lastpoint));;Y2;$(index,1,$(getvar,lastpoint))""";;to;3;erase;l;,,,,,)$(nth,$(getenv,to),,,,;sw;$(/,$(-,$(getenv,X1),$(getenv,X2)),$(-,$(getenv,Y1),$(getenv,Y2)));;sw;$M="""$(*,$(getenv,sw),$(getenv,sw))""";;to;4,,,,)$(nth,$(getenv,to),,,,,;to;$(if,$(>,$(getenv,sw),1),6,5),,,)$(nth,$(getenv,to),,,,,,;to;7;line;non;$(getenv,X1)","$(getenv,Y1);non;$(getenv,X2)","$(/,$(+,$(getenv,Y2),$(getenv,Y1)),2);non;$(getenv,X1)","$(getenv,Y2);,,)$(nth,$(getenv,to),,,,,,,;to;7;line;non;$(getenv,X1)","$(getenv,Y1);non;$(/,$(+,$(getenv,X2),$(getenv,X1)),2)","$(getenv,Y2);non;$(getenv,X2)","$(getenv,Y1);,)$(nth,$(getenv,to),,,,,,,,ray;\$M="""$(if,$(getvar,cmdactive),;setenv;to;1,erase;l;;;l;;setenv;sw;$(/,1,$(getenv,sw));;to;4)""")^M

  • Lon
  • 2017/09/30 (Sat) 08:53:51
Re: 片開き扉 線作図
ちょっと修正

上のマクロ、正方形の時は方向の入れ替えが無理だったので、正方形にも対応。

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),id;\setenv;to;1,,,,,,,)$(nth,$(getenv,to),,;X1;$M=$(index,0,$(getvar,lastpoint));;Y1;$(index,1,$(getvar,lastpoint));;to;2,,,,,,)$(nth,$(getenv,to),,,line;non;@;\;setenv;X2;$M="""$(index,0,$(getvar,lastpoint));;Y2;$(index,1,$(getvar,lastpoint))""";;to;3;erase;l;,,,,,)$(nth,$(getenv,to),,,,;sw;$(/,$(-,$(getenv,X1),$(getenv,X2)),$(-,$(getenv,Y1),$(getenv,Y2)));;sw;$M="""$(*,$(getenv,sw),$(getenv,sw))""";;to;4,,,,)$(nth,$(getenv,to),,,,,;to;$(if,$(>=,$(getenv,sw),1),6;;sw;$(+,$(getenv,sw),1),5),,,)$(nth,$(getenv,to),,,,,,;to;7;line;non;$(getenv,X1)","$(getenv,Y1);non;$(getenv,X2)","$(/,$(+,$(getenv,Y2),$(getenv,Y1)),2);non;$(getenv,X1)","$(getenv,Y2);,,)$(nth,$(getenv,to),,,,,,,;to;7;line;non;$(getenv,X1)","$(getenv,Y1);non;$(/,$(+,$(getenv,X2),$(getenv,X1)),2)","$(getenv,Y2);non;$(getenv,X2)","$(getenv,Y1);,)$(nth,$(getenv,to),,,,,,,,ray;\$M="""$(if,$(getvar,cmdactive),;setenv;to;1,erase;l;;;l;;setenv;sw;$(/,1,$(getenv,sw));;to;4)""")^M
  • Lon
  • 2017/09/30 (Sat) 09:28:29
Re: 片開き扉 線作図
お世話になります。
便利な機能付きのマクロありがとうございます。
機能性に富んでいて、大変ありがたいです。

マクロ登録し、実際使ってみたところ、

<山を書く方向が気に入らなかった場合、右クリックでXとY方向を入れ替える様にしました。
<①マクロ実行
<②A点クリック、C点クリック
<③方向が気に入らなければ、右クリック。 okなら何もしないで②へ

②のクリック後は、添付画像の1(赤文字)、ここまでは、問題なく山形の線作図が出来ており、
③の右クリックをすると、添付画像の2(赤文字)の様になってしまいます。

マクロ開始から最後までの流れの内容は、以下の通りです。


コマンド:
コマンド:
コマンド: _rectang
一方のコーナーを指定 または [面取り(C)/高度(E)/フィレット(F)/厚さ(T)/幅(W)]:
もう一方のコーナーを指定 または [面積(A)/サイズ(D)/回転角度(R)]:
コマンド: *キャンセル*
コマンド: *キャンセル*
コマンド: *キャンセル*
コマンド: *キャンセル*
コマンド: *キャンセル*
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <0>: 0
コマンド: id
点を指定: X = 3056.3454 Y = 2248.7215 Z = 0.0000
コマンド: setenv
変数名を入力: to
値 <0>: 1
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <1>: 0
コマンド:
SETENV
変数名を入力: X1
値 <3693.99286715>: 3056.3454163
コマンド:
SETENV
変数名を入力: Y1
値 <2004.61669849>: 2248.7215009
コマンド:
SETENV
変数名を入力: to
値 <0>: 2
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <2>: 0
コマンド: line
1 点目を指定: non
@
次の点を指定 または [元に戻す(U)]:
次の点を指定 または [元に戻す(U)]:
コマンド: setenv
変数名を入力: X2
値 <2986.26595945>: 2292.80831425
コマンド:
SETENV
変数名を入力: Y2
値 <921.50799392>: 1137.1573138
コマンド:
SETENV
変数名を入力: to
値 <0>: 3
コマンド: erase
オブジェクトを選択: l
認識された数: 1
オブジェクトを選択:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <3>: 0
コマンド:
SETENV
変数名を入力: sw
値 <2.34213907>: 0.68690329
コマンド:
SETENV
変数名を入力: sw
値 <0.68690329>: 0.47183613
コマンド:
SETENV
変数名を入力: to
値 <0>: 4
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <4>: 0
コマンド:
SETENV
変数名を入力: to
値 <0>: 5
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <5>: 0
コマンド:
SETENV
変数名を入力: to
値 <0>: 7
コマンド: line
1 点目を指定: non
3056.3454163,2248.7215009
次の点を指定 または [元に戻す(U)]: non
2292.80831425,1692.93940735
次の点を指定 または [元に戻す(U)]: non
3056.3454163,1137.1573138
次の点を指定 または [閉じる(C)/元に戻す(U)]:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <7>: 0
コマンド: ray
始点を指定:
コマンド: erase
オブジェクトを選択: l
認識された数: 1
オブジェクトを選択:
コマンド:
ERASE
オブジェクトを選択: l
認識された数: 1
オブジェクトを選択:
コマンド: setenv
変数名を入力: sw
値 <0.47183613>: 2.11937988
コマンド:
SETENV
変数名を入力: to
値 <0>: 4
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <4>: 0
コマンド:
SETENV
変数名を入力: to
値 <0>: 6
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <6>: 0
コマンド:
SETENV
変数名を入力: to
値 <0>: 7
コマンド: line
1 点目を指定: non
3056.3454163,2248.7215009
次の点を指定 または [元に戻す(U)]: non
2674.57686528,1137.1573138
次の点を指定 または [元に戻す(U)]: non
2292.80831425,2248.7215009
次の点を指定 または [閉じる(C)/元に戻す(U)]:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <7>: 0
コマンド: ray



お手数ですが、ご確認頂けると助かります。
  • シツモ
  • 2017/09/30 (Sat) 09:49:28
Re: 片開き扉 線作図
その画像の様になるつもりで作りましたので、マクロに異常は無いです。
もし「裏返しにしたい」という要望でしたら、これ以上の機能追加はマクロの文字数制限的に無理っぽいので、
クリックする点を「A点クリック、C点クリック」ではなく「B点クリック、D点クリック」といった感じで変更して頂くとありがたいです。

また、正方形に書いたり、画像の2番の方の形状にしたい事は絶対に無いと言う事でしたら、
初めのマクロを使用した方が良いです。
  • Lon
  • 2017/09/30 (Sat) 10:04:38
Re: 片開き扉 線作図
お世話になります。
お返事ありがとうございます。
私の勘違いで大変失礼しました。
今後、ありがたく使わせて頂きたいと思います。
改めて、Lon様ありがとうございました。
  • シツモ
  • 2017/09/30 (Sat) 10:29:59
Re: 片開き扉 線作図
線色と線種を指定して作図は出来ないでしょうか?作図後は線色,線種ともにByLayerに戻るのですが,よろしくお願いします
  • FUKUDA
  • 2017/10/06 (Fri) 15:02:07
Re: 片開き扉 線作図
FUKUDAさんこんにちは。
これでいいでしょうか。

①マクロ実行
②線種入力(例えば「hidden」)
③A点クリック、C点クリック
④方向が気に入らなければ、右クリック。 okなら何もしないで③へ


*^C^C$M=setenv;to;0;$(nth,$(getenv,to),;線種;\id;\setenv;to;1,,,,,,,)$(nth,$(getenv,to),,;X1;$M=$(index,0,$(getvar,lastpoint));;Y1;$(index,1,$(getvar,lastpoint));;to;2,,,,,,)$(nth,$(getenv,to),,,line;non;@;\;setenv;X2;$M="""$(index,0,$(getvar,lastpoint));;Y2;$(index,1,$(getvar,lastpoint))""";;to;3;erase;l;,,,,,)$(nth,$(getenv,to),,,,;sw;$(/,$(-,$(getenv,X1),$(getenv,X2)),$(-,$(getenv,Y1),$(getenv,Y2)));;sw;$M="""$(*,$(getenv,sw),$(getenv,sw))""";;to;4,,,,)$(nth,$(getenv,to),,,,,;to;$(if,$(>=,$(getenv,sw),1),6;;sw;$(+,$(getenv,sw),1),5),,,)$(nth,$(getenv,to),,,,,,;to;7;pline;non;$(getenv,X1)","$(getenv,Y1);non;$(getenv,X2)","$(/,$(+,$(getenv,Y2),$(getenv,Y1)),2);non;$(getenv,X1)","$(getenv,Y2);;chprop;l;;c;3;lt;$(getenv,線種);;explode;l;;,,)$(nth,$(getenv,to),,,,,,,;to;7;pline;non;$(getenv,X1)","$(getenv,Y1);non;$(/,$(+,$(getenv,X2),$(getenv,X1)),2)","$(getenv,Y2);non;$(getenv,X2)","$(getenv,Y1);;chprop;l;;c;3;lt;$(getenv,線種);;explode;l;;,)$(nth,$(getenv,to),,,,,,,,ray;\$M="""$(if,$(getvar,cmdactive),;setenv;to;1,erase;l;;;l;;setenv;sw;$(/,1,$(getenv,sw));;to;4)""")^M
  • Lon
  • 2017/10/06 (Fri) 17:20:02
Re: 片開き扉 線作図
Lonさん

ありがとう御座います
綺麗に作動します.
  • FUKUDA
  • 2017/10/06 (Fri) 17:45:26

返信フォーム






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