①フェンス選択フィレット[準備用]
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),;so;$(getvar,sortents);;r1;半径^X\;to;1;undo;be,,,,,,)$(nth,$(getenv,to),,;to;0;move;\'setenv;to;1;non;@;;non;@;non;@;ucs;3;nea;@;mid+endp;@;;id;nea;\setenv;to;2,,,,,)$(nth,$(getenv,to),,,;p00;$(if,$(>,$(index,1,$(getvar,lastpoint)),0),+,-);;p01;$(if,$(>,$(index,0,$(getvar,lastpoint)),0),180,0);;p1;$(getvar,lastpoint);;to;3,,,,)$(nth,$(getenv,to),,,,line;non;@;nea;\;lengthen;l;;erase;l;;setenv;p2;$M="""$(getvar,lastpoint);;aa1;$(getvar,perimeter)""";;to;4,,,)$(nth,$(getenv,to),,,,,sortents;127;line;non;$(*,$(getenv,r1),2)<$(getenv,p01);non;$(getenv,aa1)<$(if,$(getenv,p01),0,180);;setenv;to;5,,)$(nth,$(getenv,to),,,,,,line;non;0","$(if,$(eq,$(getenv,p00),+),,-)$(+,$(getenv,r1),1);non;@0.1<$(if,$(getenv,p01),0,180);;lengthen;l;;setenv;to;6,)$(nth,$(getenv,to),,,,,,,;aa2;$(getvar,perimeter);;p0;$(getvar,lastpoint);copybase;non;0<0;l;non;0<0;;erase;p;;sortents;$(getenv,so);^C;^Z^X-NEXT-^X)^M |
●使い方
※フィレットする全てのオブジェクトを、画面上に表示して下さい。
1.フィレットする半径を記入
2.基準となるオブジェクトのフェンス選択開始側を選択
3.フェンス選択1本目のオブジェクト上の任意の点を指定
4.フェンス選択最後のオブジェクト上の任意の点を指定
5.コマンドラインに「-NEXT-」と表示されたら、[処理用]マクロを実行
※途中、ズーム等で画面状態を変更すると、正常にフィレット出来ない場合が有ります。
②フェンス選択フィレット[処理用]
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),sortents;127;extend;nea;0<0;;f;non;$(getenv,p2);non;$(getenv,p1);;;pasteclip;non;0<0;copy;l;;non;@;non;@;erase;p;;setenv;to;1,,,,,)$(nth,$(getenv,to),,extend;f;non;$(getenv,p1);non;$(getenv,p2);;;$(getenv,p0);;lengthen;$(getenv,p0);;setenv;to;$M="""$(if,$(=,$(getenv,aa2),$(getvar,perimeter)),5,2)""",,,,)$(nth,$(getenv,to),,,;aa2;$(getvar,perimeter);fillet;r;$(getenv,r1);;non;$(getenv,r1)<$(getenv,p01);non;$(if,$(getenv,p01),+,-)$(-,$(getvar,perimeter),0.1)","$(if,$(eq,$(getenv,p00),+),,-)$(/,$(getenv,r1),2);setenv;to;3,,,)$(nth,$(getenv,to),,,,;p0;$(if,$(getenv,p01),+,-)$(-,$(getenv,aa2),$(/,$(getenv,aa2),5))","$(if,$(eq,$(getenv,p00),+),,-)$(+,$(getenv,r1),1);;to;4,,)$(nth,$(getenv,to),,,,,copy;non;0","$(if,$(eq,$(getenv,p00),+),,-)$(+,$(getenv,r1),1);;non;$(*,$(getenv,r1),2)<0;non;@;erase;p;;setenv;to;1,erase;non;@;non;$(getenv,r1)<$(getenv,p01);;ucs;p;sortents;$(getenv,so);id;^C;^Z)^M |
※[処理用]実行前に、フィレットするオブジェクトを画面上に表示して下さい。
正常にフィレット出来ない場合が有ります。
③フェンス選択フィレット[修正用]
^C^Cundo;e;u^M |
※表示中の画面に対して、半径が小さ過ぎたり、大き過ぎたりすると
正常にフィレット出来ない場合も有ります。
その場合は、上記[修正用]マクロを実行するか、上記マクロを手入力して下さい。
LT2000/LT2004 動作確認済
※操作参考動画
▲注意
1.表示中の画面に対して、半径が小さ過ぎたり、大き過ぎたりすると
正常にフィレット出来ない場合も有ります。
※半径の値を変更するか、画面状態をズームで変更して下さい。
2.マクロが長い為、カスタマイズダイアログに直接貼付け出来ない場合は
メニューファイルに直接貼り付けて下さい。
■コメント
某mura's掲示板で質問が有り作成したマクロです。
しかし、初心者コーナーの為、mura's掲示板への掲載は遠慮させて頂きました。
見てもらうと分かると思いますが、ツールボタン2つにしても
マクロの長さイッパイです(汗
しかも、完璧では有りません…(激汗
使い方を間違えると、正常に動作しませんので
必ず注意事項等を読んでお使い下さい。
最速攻略AutoCAD VB.NETマクロサンプル大全集AutoCAD2009/2010/20.../技術評論社

¥4,095
Amazon.co.jp