切り取り残しのマクロを使って考えてみました。
一つにしたかったのですが長いのでマクロ二つです。
準備、コマンドラインでptlpとpedlpを定義、[space]は半角スペースに置換してください。
setenv
ptlp
"$M=$(if,$(>=,$(getenv,cnt),$(getenv,i)),non[space]$(getenv,p$(getenv,i))[space]'setenv[space]i[space]$(+,$(getenv,i),1)[space]$(getenv,ptlp),non[space]$(getenv,p1)[space])"
setenv
pedlp
"n[space]m[space][space]$M=$(if,$(eq,$(getvar,lastpoint),$(getenv,p$(getenv,i))),x[space],'setenv[space]p$(+,$(getenv,i),1)[space]$(getvar,lastpoint)[space]'setenv[space]i[space]$(+,$(getenv,i),1)[space]$(getenv,pedlp),)"
マクロ1、ハッチングの図形を描画
*^C^C$M=setenv;to;0;$(if,$(=,$(getenv,to),0),undo;be;-layout;d;lo0;model;offset;;\;select;non;@;non;@;;copybase;non;0<0;p;;setenv;to;1)$(if,$(=,$(getenv,to),1),-layout;n;lo0;;s;lo0;point;0<0;erase;all;;pasteclip;0<0;zoom;o;l;;;0.9x;regen;setenv;rt;$(/,$(index,0,$(getvar,screensize)),$(index,1,$(getvar,screensize)));;to;2)$(if,$(=,$(getenv,to),2),;to;2;model;select;\copybase;\p;;dist;\\$M=;\\$M=setenv;spx;"""$(getvar,distance)""";;spy;"""""""$(getvar,distance)""""""";;to;3;-layout;s;lo0)$(if,$(=,$(getenv,to),3),;blx;$(-,$(index,0,$(getvar,viewctr)),$(/,$(*,$(getvar,viewsize),$(getenv,rt)),2));;bly;$(-,$(index,1,$(getvar,viewctr)),$(/,$(*,$(getvar,viewsize),1),2));;to;4)$(if,$(=,$(getenv,to),4),;trx;$(+,$(index,0,$(getvar,viewctr)),$(/,$(*,$(getvar,viewsize),$(getenv,rt)),2));;try;$(+,$(index,1,$(getvar,viewctr)),$(/,$(*,$(getvar,viewsize),1),2));;to;5)$(if,$(=,$(getenv,to),5),;px;$(getenv,blx);;py;$(getenv,bly);;to;6)$(if,$(=,$(getenv,to),6),$(if,$(>,$(getenv,py),$(getenv,try)),^Cundo;e,;to;7))$(if,$(=,$(getenv,to),7),$(if,$(>,$(getenv,px),$(getenv,trx)),;px;$(getenv,blx);;py;$(+,$(getenv,py),$(getenv,spy));;to;6,;to;8))$(if,$(=,$(getenv,to),8),pasteclip;non;$(getenv,px)","$(getenv,py);setenv;px;$(+,$(getenv,px),$(getenv,spx));;to;7)^M
マクロ2、切り取り残し
*^C^C$M=setenv;to;0;$(if,$(=,$(getenv,to),0),undo;be;offset;;\;select;non;@;non;@;;copy;p;;non;@;non;@;erase;p;;zoom;o;l;;regen;$M=zoom;p;offset;0.1;@;non;"""$(getvar,vsmax)""";;setenv;to;1)$(if,$(=,$(getenv,to),1),zoom;o;l;;;0.8x;pedit;l;e;m;;$M=x;;setenv;p1;"""$(getvar,lastpoint)""";;i;1;;to;2)$(if,$(=,$(getenv,to),2),;to;3;pedit;l;e;$M="""$(getenv,pedlp)""")$(if,$(=,$(getenv,to),3),erase;l;;copybase;non;0<0;l;;erase;l;;setenv;cnt;$(getenv,i);;i;1;;to;4)$(if,$(=,$(getenv,to),4),select;cp;$M="""$(getenv,ptlp)""";;setenv;to;5)$(if,$(=,$(getenv,to),5),;i;1;;to;6;explodeと表示->ENTER^X^Xexplode\p;;setenv;to;5)$(if,$(=,$(getenv,to),6),;to;7;pasteclip;non;0<0;trim;l;;f;$M="""$(getenv,ptlp)""";)$(if,$(=,$(getenv,to),7),;i;1;;to;8;select;wp;$M="""$(getenv,ptlp)""";)$(if,$(=,$(getenv,to),8),erase;all;r;p;;copybase;non;0<0;all;r;l;;model;pasteclip;non;0<0;-layout;d;lo0;^Cundo;e)^M
使い方
1.マクロ1発行、ハッチング境界を選択
2.ハッチングの図形を選択
3.copybaseの基点を指定
4.5.x方向の間隔を指定
6.7.y方向の間隔を指定
8.マクロ2発行、もう一度ハッチング境界を選択
9.explodeをコマンドラインに表示されたらENTER
- zukki-
- 2018/10/19 (Fri) 18:36:07