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

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

範囲外自動削除
とってぃ様
先程は円中心線自動作図の件で大変お世話になりました。
連続で申し訳ないのですが、
もう1点、ご回答願います。

切り取りコピー(削除)に似ているんですが、
切り取りたい部分を範囲指定(四角又は円)した後に、
範囲外のものを自動で削除(トリム)できるマクロは
作成できますでしょうか?
宜しくお願い致します。
  • ぱんだ
  • 2018/05/24 (Thu) 17:19:34
Re: 範囲外自動削除
すみません、長穴についても質問です。
マクロ集の中心線付長穴ですが、
中心線を1.5倍、長さを半円を入れた全長指定にしたいです...
少し触ってみたのですが
上手くいかずもやもやしてます。。。
連投すみません。
  • ぱんだ
  • 2018/05/24 (Thu) 20:28:33
Re: 範囲外自動削除
マクロ修正考えてみます。
しばらくお待ちください。


※今後のワード検索の為に、違う質問は別途新規投降願います。
  • とってぃ
  • 2018/05/25 (Fri) 10:48:28
Re: 範囲外自動削除
とりあえず

♪選択範囲外削除 Ver.2015
*^C^C$M=setenv;t;0;$(nth,$(getenv,t),id;non;\undo;be;setenv;p;$M="""$(getvar,lastpoint)""";rectang;non;@;non;\setenv;t;1,erase;l;;line;non;@;non;$(getenv,p)^H^H;;lengthen;l;;;;ucs;ob;l;id;non;$M="""$(/,$(getvar,perimeter),2)"""<0;oops;ucs;p;id;non;@;setenv;t;2,,,,,)$(nth,$(getenv,t),,,erase;l;;ucs;o;non;$(getvar,lastpoint);ucs;ob;l;id;non;0<0;ucs;p;setenv;t;3,,,,)$(nth,$(getenv,t),,,,;s;0;;x1;$(*,1.001,$(index,0,$(getvar,lastpoint)));;y1;$(*,1.001,$(index,1,$(getvar,lastpoint)));;x2;$M="""$(*,-1,$(getenv,x1));;y2;$(*,-1,$(getenv,y1))""";;t;4;zoom;c;non;0<0;$(getvar,perimeter);select;l;,,,)$(nth,$(getenv,t),,,,,trim;p;;f;$(getenv,x1)",$(getenv,y1);$(getenv,x2),$(getenv,y1);$(getenv,x2),$(getenv,y2);$(getenv,x1),$(getenv,y2);$(getenv,x1),"$(getenv,y1);;;setenv;t;5,,)$(nth,$(getenv,t),,,,,,;s;$(+,$(getenv,s),1);;t;$M="""$(if,$(=,$(getenv,s),4),6,4)""",erase;p;;copybase;non;0<0;c;non;$(getenv,x1)",$(getenv,y1);non;$(getenv,x2),"$(getenv,y2);;erase;all;;pasteclip;non;0<0;ucs;p)^M


2015での動作は未確認です。

選択範囲外の全てのオブジェクトが削除されますので
注意してお使いください。


※長穴マクロに関しましては、新規投降願います。
  • とってぃ
  • 2018/05/25 (Fri) 11:22:22
Re: 範囲外自動削除
とってぃ様

長穴の件申し訳ありません。
新規投稿いたします。

選択範囲外削除のマクロ、早急な対応ありがとうございました。
いま使用してみたところ、

コマンド: t
MTEXT
現在の文字スタイル: "Standard" 文字高さ: 2.5 異尺度対応: いいえ
最初のコーナーを指定: 0

もう一方のコーナーを指定 または [高さ(H)/位置合わせ(J)/行間隔(L)/回転角度(R)/文字スタイル(S)/幅(W)/段組み(C)]: non


2D 点 または オプションのキーワードを入力してください。
もう一方のコーナーを指定 または [高さ(H)/位置合わせ(J)/行間隔(L)/回転角度(R)/文字スタイル(S)/幅(W)/段組み(C)]:

コマンド: undo
現在の設定: 自動 = オン, コントロール = すべて, 合成 = はい, 画層 = はい
取り消す操作の数を入力 または [自動(A)/コントロール(C)/開始(BE)/終了(E)/マーク(M)/後退(B)] <1>: be

コマンド: setenv
変数名を入力: p
値 <"rectang>: "rectang

このようになりました。

lengthenの部分も変えてみましたが、
テキストが出てしまいます。
宜しくお願い致します。
  • ぱんだ
  • 2018/05/25 (Fri) 11:38:07
Re: 範囲外自動削除
マクロの貼り付け状況を確認して下さい。

*^C^C$M=setenv;t;0; の前に余分な空白または改行が無いか
;;pasteclip;non;0<0;ucs;p)^M の後ろに余分な空白または改行が無いか
  • とってぃ
  • 2018/05/25 (Fri) 11:42:44
Re: 範囲外自動削除
とってぃ様

確認いたしました。
現在このように表示されます。

コマンド:
コマンド: id
点を指定: non
X = 1670.6292 Y = 2175.6291 Z = 0.0000

コマンド: undo
現在の設定: 自動 = オン, コントロール = すべて, 合成 = はい, 画層 = はい
取り消す操作の数を入力 または [自動(A)/コントロール(C)/開始(BE)/終了(E)/マーク(M)/後退(B)] <1>: be

コマンド: setenv
変数名を入力: p
値 <"rectang>: 1670.62924324,2175.62910469,0

コマンド:
コマンド: rectang

一方のコーナーを指定 または [面取り(C)/高度(E)/フィレット(F)/厚さ(T)/幅(W)]: non
@

もう一方のコーナーを指定 または [面積(A)/サイズ(D)/回転角度(R)]: non

コマンド: setenv
変数名を入力: t
値 <0>: 1

コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: t
値 <1>: 0

コマンド:
コマンド: erase

オブジェクトを選択: l
認識された数: 1

オブジェクトを選択:

コマンド: line

1 点目を指定: non
@

次の点を指定 または [元に戻す(U)]: non
1670.62924324,2175.62910469

次の点を指定 または [元に戻す(U)]:

コマンド: lengthen

計測するオブジェクトを選択 または [増減(DE)/比率(P)/全体(T)/ダイナミック(DY)] <ダイナミック(DY)>: l


現在の長さ: 916.5031
計測するオブジェクトを選択 または [増減(DE)/比率(P)/全体(T)/ダイナミック(DY)] <ダイナミック(DY)>:

変更するオブジェクトを選択 または [元に戻す(U)]:

コマンド:
LENGTHEN

計測するオブジェクトを選択 または [増減(DE)/比率(P)/全体(T)/ダイナミック(DY)] <ダイナミック(DY)>: ucs


*選択無効*

宜しくお願い致します。
  • ぱんだ
  • 2018/05/25 (Fri) 13:05:09
Re: 範囲外自動削除
lengthen部分の変更と、Undo終了を追加して、文字数を減らしたら、LT2017でも動きました。
(コマンド履歴を見る限り、エラーの原因は文字数オーバーです。)

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),id;\$M=undo;be;rectang;non;@;non;\setenv;p;"""$(getvar,lastpoint)""";;to;1,;to;2;erase;l;;line;non;@;non;$(getenv,p);;lengthen;dy;;;l;;;ucs;ob;l;id;non;$M="""$(/,$(getvar,perimeter),2)"""<0;oops;ucs;p;id;non;@,,,,,)$(nth,$(getenv,to),,,,;s;0;;x1;$(*,1.001,$(index,0,$(getvar,lastpoint)));;y1;$(*,1.001,$(index,1,$(getvar,lastpoint)));;x2;$M="""$(*,-1,$(getenv,x1));;y2;$(*,-1,$(getenv,y1))""";;to;4;zoom;c;non;0<0;$(getvar,perimeter);select;l;,,,)$(nth,$(getenv,to),,,,,;to;5;trim;p;;f;$(getenv,x1)",$(getenv,y1);$(getenv,x2),$(getenv,y1);$(getenv,x2),$(getenv,y2);$(getenv,x1),$(getenv,y2);$(getenv,x1),"$(getenv,y1);;,;s;$(+,$(getenv,s),1);;to;$M="""$(if,$(=,$(getenv,s),4),6,4)""",)$(nth,$(getenv,to),,,;to;3;erase;l;;ucs;o;non;$(getvar,lastpoint);ucs;ob;l;id;non;0<0;ucs;p,,,,erase;p;;copybase;non;0<0;c;non;$(getenv,x1)",$(getenv,y1);non;$(getenv,x2),"$(getenv,y2);;erase;all;;pasteclip;non;0<0;ucs;p^Cundo;e)^M


文字数削減の為に段落を入れ替えましたので、マクロの流れが見えにくくなってます。

元々が
*^C^C$M=setenv;t;0;$(nth,$(getenv,t),段落0,段落1,,,,,)$(nth,$(getenv,t),,,段落2,,,,)$(nth,$(getenv,t),,,,段落3,,,)$(nth,$(getenv,t),,,,,段落4,,)$(nth,$(getenv,t),,,,,,段落5,段落6)^M
となっていたものを、
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),段落0,段落1,,,,,)$(nth,$(getenv,to),,,,段落3,,,)$(nth,$(getenv,to),,,,,段落4,段落5,)$(nth,$(getenv,to),,,段落2,,,,段落6)^M
としていますので、注意です。

  • Lon
  • 2018/05/25 (Fri) 16:34:39
Re: 範囲外自動削除
Lon様

対応ありがとうございます。
すぐに確認したところ、
動きました!
エラー内容も詳しく教えていただき、
ありがとうございます。
  • ぱんだ
  • 2018/05/25 (Fri) 16:47:22
Re: 範囲外自動削除
何度もすみません。
先程のマクロだと範囲外はすべて削除されますが、
自信で範囲指定したオブジェクトから
はみ出している物のみ(イメージはトリム)を削除し、
範囲指定のオブジェクトに触れていない物はそのまま維持...
という状態にすることは
可能なのでしょうか?
  • ぱんだ
  • 2018/05/25 (Fri) 17:05:05
Re: 範囲外自動削除
マクロの最後の部分(周りのオブジェクトを消す部分)を削除しただけです。
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),id;\$M=undo;be;rectang;non;@;non;\setenv;p;"""$(getvar,lastpoint)""";;to;1,;to;2;erase;l;;line;non;@;non;$(getenv,p);;lengthen;dy;;;l;;;ucs;ob;l;id;non;$M="""$(/,$(getvar,perimeter),2)"""<0;oops;ucs;p;id;non;@,,,,,)$(nth,$(getenv,to),,,,;s;0;;x1;$(*,1.001,$(index,0,$(getvar,lastpoint)));;y1;$(*,1.001,$(index,1,$(getvar,lastpoint)));;x2;$M="""$(*,-1,$(getenv,x1));;y2;$(*,-1,$(getenv,y1))""";;to;4;zoom;c;non;0<0;$(getvar,perimeter);select;l;,,,)$(nth,$(getenv,to),,,,,;to;5;trim;p;;f;$(getenv,x1)",$(getenv,y1);$(getenv,x2),$(getenv,y1);$(getenv,x2),$(getenv,y2);$(getenv,x1),$(getenv,y2);$(getenv,x1),"$(getenv,y1);;,;s;$(+,$(getenv,s),1);;to;$M="""$(if,$(=,$(getenv,s),4),6,4)""",)$(nth,$(getenv,to),,,;to;3;erase;l;;ucs;o;non;$(getvar,lastpoint);ucs;ob;l;id;non;0<0;ucs;p,,,,erase;p;;ucs;p^Cundo;e)^M
  • Lon
  • 2018/05/25 (Fri) 17:48:32
Re: 範囲外自動削除
Lon様

ありがとうございます。
確認したところ、
思った通りの操作になりました!
説明下手でわかりづらい質問だったのにもかかわらず、
対応していただき、ありがとうございました。
  • ぱんだ
  • 2018/05/25 (Fri) 18:28:35

返信フォーム






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