添付画像の図形のみでLT2017にて検証してます。
マクロ1
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),;pa0;1;id;int;\line;non;@;'setenv;p1;$M="""$(getvar,lastpoint)""";int;\;setenv;an1;$M="""""""$(rtos,$(*,$(getvar,lastangle),57.29577951))""""""";;p2;$M="""""""$(getvar,lastpoint)""""""";;to;1,,,,,,,)$(nth,$(getenv,to),,;pa$(getenv,pa0);$(getenv,p2);lengthen;dy;;;non;$(getenv,p1);;;setenv;l1;$M="""$(getvar,perimeter);trim;c;non;$(getenv,p1);non;$(getenv,p2);;non;@$(-,$(getvar,perimeter),0.1)"""<$(getenv,an1);;setenv;to;2,,,,,,)$(nth,$(getenv,to),,,lengthen;non;$(getenv,p1);;;copy;p;;non;@;non;@;erase;p;;id;non;@$M="""$(getvar,perimeter)"""<$(getenv,an1);setenv;p2;$M="""""""$(getvar,lastpoint)""""""";;to;3,,,,,)$(nth,$(getenv,to),,,,;to;$M="""$(if,$(=,$(getenv,l1),$(getvar,perimeter)),4;;pa0;$(+,$(getenv,pa0),1);erase;non;$(getenv,p1);,1;;pa0;$(+,$(getenv,pa0),1))""",,,,)$(nth,$(getenv,to),,,,,;pb0;1;;pa$(getenv,pa0);$(getenv,p1);id;end;\line;end;@;'setenv;p3;$M="""$(getvar,lastpoint)""";end;\;setenv;an2;$M="""""""$(rtos,$(*,$(getvar,lastangle),57.29577951))""""""";;p4;$M="""""""$(getvar,lastpoint)""""""";;to;5,,,)$(nth,$(getenv,to),,,,,,;pb$(getenv,pb0);$(getenv,p4);len;dy;;;non;$(getenv,p3);;;setenv;l2;$M="""$(getvar,perimeter);trim;c;non;$(getenv,p3);non;$(getenv,p4);;non;@$(-,$(getvar,perimeter),0.1)"""<$(getenv,an2);;setenv;to;6,,)$(nth,$(getenv,to),,,,,,,lengthen;non;$(getenv,p3);;;copy;p;;non;@;non;@;erase;p;;id;non;@$M="""$(getvar,perimeter)"""<$(getenv,an2);setenv;p4;$M="""""""$(getvar,lastpoint)""""""";;to;7,)$(nth,$(getenv,to),,,,,,,,;to;$M="""$(if,$(=,$(getenv,l2),$(getvar,perimeter)),0;;pb$(+,1,(getenv,pb0));$(getenv,p3);erase;non;$(getenv,p3);;^Cid;,5;;pb0;$(+,$(getenv,pb0),1))""")^M
マクロ2
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),;pb0;$(+,$(getenv,pb0),1);;to;1,;pb$(getenv,pb0);$(getenv,p3);;to;2,,)$(nth,$(getenv,to),,,stretch;c;non;$(getenv,pb$(getenv,pb0));non;$(getenv,pb$(getenv,pb0));;non;$(getenv,pb$(getenv,pb0));non;$(getenv,pa$(getenv,pa0));$M=$(if,$(=,0,$(getenv,pa0)),^Csetenv;to;0,setenv;to;3),)$(nth,$(getenv,to),,,,;pa0;$(-,$(getenv,pa0),1);;pb0;$(-,$(getenv,pb0),1);;to;2)^M
1.マクロ1を起動
2.線分との交点(添付画像の上側)指定
3.線分との交点(添付画像の下側)指定
4.端点(添付画像の上側)指定
5.端点(添付画像の下側)指定
6.マクロ2起動
どうしても1つにできなかったです。
- chibi-tom
- 2019/01/10 (Thu) 18:49:00