お品書き
書き直し中…
とりあえず、中へどうぞ
↓↓↓
スポンサーリンク

【AutoCAD】指定範囲内削除マクロ

便利ツール/ソフトウェア
指定した矩形領域内をバッサリ削除してくれる、いわゆる「範囲削除」みたいな機能がAutoCADには標準でないのですが、マクロで実現してくれているのを発見

⇒ AutoCADマクロ屋本舗 68.切取り削除

毎度同じにマクロ屋本舗様、ありがとうございます。

で、下記がオリジナルコードなのですが(2017版)
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),id;non;¥undo;be;setenv;p;$M="""$(getvar,lastpoint)""";rectang;non;@;non;¥setenv;to;1,,,,,,)$(nth,$(getenv,to),,erase;l;;line;non;@;non;$(getenv,p)^H^H;;lengthen;dy;;;l;;;ucs;ob;l;id;non;$M="""$(/,$(getvar,perimeter),2)"""<0;oops;ucs;p;id;non;@;setenv;to;2,,,,,)$(nth,$(getenv,to),,,erase;l;;ucs;o;non;$(getvar,lastpoint);ucs;ob;l;id;non;0<0;ucs;p;setenv;to;3,;x;$(*,0.999,$(index,0,$(getvar,lastpoint)));;y;$(*,0.999,$(index,1,$(getvar,lastpoint)));;to;4,,,)$(nth,$(getenv,to),,,,,zoom;c;non;0<0;$(getvar,perimeter);trim;l;;f;$(getenv,x)",$(getenv,y);$(*,-1,$(getenv,x)),$(getenv,y);$(*,-1,$(getenv,x)),"$(*,-1,$(getenv,y));;;setenv;to;5,,)$(nth,$(getenv,to),,,,,,trim;p;;f;$(*,-1,$(getenv,x))",$(*,-1,$(getenv,y));$(getenv,x),$(*,-1,$(getenv,y));$(getenv,x),"$(getenv,y);;;setenv;to;6,)$(nth,$(getenv,to),,,,,,,erase;w;non;$(getenv,x)",$(getenv,y);non;$(*,-1,$(getenv,x)),"$(*,-1,$(getenv,y));p;;ucs;p;undo;e)^M
ちょっと改造
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),id;\undo;be;setenv;p;$M="""$(getvar,lastpoint)""";rectang;non;@;\setenv;to;1,,,,,,)$(nth,$(getenv,to),,erase;l;;line;non;@;non;$(getenv,p)^H^H;;lengthen;dy;;;l;;;ucs;ob;l;id;non;$M="""$(/,$(getvar,perimeter),2)"""<0;oops;ucs;p;id;non;@;setenv;to;2,,,,,)$(nth,$(getenv,to),,,erase;l;;ucs;o;non;$(getvar,lastpoint);ucs;ob;l;id;non;0<0;ucs;p;setenv;to;3,;x;$(*,0.999,$(index,0,$(getvar,lastpoint)));;y;$(*,0.999,$(index,1,$(getvar,lastpoint)));;to;4,,,)$(nth,$(getenv,to),,,,,zoom;c;non;0<0;$(getvar,perimeter);trim;l;;f;$(getenv,x)",$(getenv,y);$(*,-1,$(getenv,x)),$(getenv,y);$(*,-1,$(getenv,x)),"$(*,-1,$(getenv,y));;;setenv;to;5,,)$(nth,$(getenv,to),,,,,,trim;p;;f;$(*,-1,$(getenv,x))",$(*,-1,$(getenv,y));$(getenv,x),$(*,-1,$(getenv,y));$(getenv,x),"$(getenv,y);;;setenv;to;6,)$(nth,$(getenv,to),,,,,,,erase;w;non;$(getenv,x)",$(getenv,y);non;$(*,-1,$(getenv,x)),"$(*,-1,$(getenv,y));p;;ucs;p;zoom;p;undo;e)^M
改造内容は、オリジナルコードで「一時Oスナップ(一時オブジェクトスナップ)」を無効にしている「non;」を削除(上記オリジナルコード内青字)、表示倍率を最後に元に戻す(上記改造後コード内赤字)です。

これで、補助線を引いて、その線を境界線にして揃えてバッサリ削除ができるようになりました。

内容イマイチ理解しないで改造していますので、不具合が出るかも知れませんが、いまのところ正常に機能しています。(AutoCAD2021で確認)

コメント

  1. メッシ より:

    http://totthi.bbs.fc2.com/?act=reply&tid=16577842#23870475
    こっちに、更に発展したマクロや外部プログラム版もあります。

    マクロ集では万人受けしそうなマクロしかありませんが、
    掲示板の方には、マニアックなマクロや、
    ユーザーの細かい要望に対応して改造されたマクロ、
    マクロ以外の外部プログラム等が沢山あります。

    一読すれば、もっと掘り出し物が有りますよ。

    • pandametal より:

      わざわざありがとうございますm(__)m
      拝見させて頂きます\(^o^)/
      便利なマクロやプログラムがあるなら、とても有り難いことですので
      助かりますm(__)m