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

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

任意の線まで一括ストレッチ
お世話になっております。

マクロ作成お願いしたく思っております。

任意の線まで一括でストレッチを掛けるというようなものは作れないでしょうか。

勉強不足のため私では作ることが難しく・・・

よろしくお願い致します

  • 玉木
  • 2019/01/08 (Tue) 10:31:56
Re: 任意の線まで一括ストレッチ
これは難しそうですねぇ。。。

添付画像の図形のみでのマクロだとしても
元図の各斜線部分と、任意線の角度が違うわけですよねぇ・・

規則性が無さ過ぎてマクロでは厳しいかもです。



今後なにかしら閃いて
何かの間違いでマクロできましたら
当HPマクロ屋に掲載しますので
期待せずお待ちくださいとしか言えないかもです。
申し訳ないです。
  • とってぃ
  • 2019/01/10 (Thu) 09:50:17
Re: 任意の線まで一括ストレッチ
添付画像の図形のみで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
Re: 任意の線まで一括ストレッチ
zukki-様のマクロ参考に1つにできたかもです

*^C^C$M=setenv;to;0;$(if,$(=,$(getenv,to),0),;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)$(if,$(=,$(getenv,to),1),;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)$(if,$(=,$(getenv,to),2),lengthen;non;$(getenv,p1);;;copy;p;;non;@;non;@;erase;p;;id;non;@$M="""$(getvar,perimeter)"""<$(getenv,an1);setenv;p2;$M="""""""$(getvar,lastpoint)""""""";;to;3)$(if,$(=,$(getenv,to),3),;to;$M="""$(if,$(=,$(getenv,l1),$(getvar,perimeter)),4;;pa0;$(+,$(getenv,pa0),1);erase;non;$(getenv,p1);,1;;pa0;$(+,$(getenv,pa0),1))""")$(if,$(=,$(getenv,to),4),setenv;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)$(if,$(=,$(getenv,to),5),;pb$(getenv,pb0);$(getenv,p4);lengthen;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)$(if,$(=,$(getenv,to),6),lengthen;non;$(getenv,p3);;;copy;p;;non;@;non;@;erase;p;;id;non;@$M="""$(getvar,perimeter)"""<$(getenv,an2);setenv;p4;$M="""""""$(getvar,lastpoint)""""""";;to;7)$(if,$(=,$(getenv,to),7),;to;$M="""$(if,$(=,$(getenv,l2),$(getvar,perimeter)),8;;pb$(+,1,(getenv,pb0));$(getenv,p3);erase;non;$(getenv,p3);,5;;pb0;$(+,$(getenv,pb0),1))""")$(if,$(=,$(getenv,to),8),setenv;pb0;$(+,$(getenv,pb0),1);;to;9)$(if,$(=,$(getenv,to),9),;pb$(getenv,pb0);$(getenv,p3);;to;10)$(if,$(=,$(getenv,to),10),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;11))$(if,$(=,$(getenv,to),11),;pa0;$(-,$(getenv,pa0),1);;pb0;$(-,$(getenv,pb0),1);;to;10)^M

マクロを起動
1.目的の交点1点目を指定
2.目的の交点2点目を指定
3.基点の端点1点目を指定
4.基点の端点2点目を指定

密かに修正してます。1/11
マクロが文字数ギリギリみたいなのでうまく動かない可能性は大ですが
  • chibi-tom
  • 2019/01/10 (Thu) 19:27:10
Re: 任意の線まで一括ストレッチ
目的の交点二点目を指定した時点で基点が選べない感じです。

----------------以下AUTOCADログ--------------------

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


コマンド:
SETENV
変数名を入力: pa0
値 <1>: 1


コマンド: id
点を指定: int
どこの X = 985.6 Y = 1438.1 Z = 0.0

コマンド: line

1 点目を指定: non
@

次の点を指定 または [元に戻す(U)]: 'setenv
>>変数名を入力: p1
>>値 <985.6034091,1438.09243763,0>: 985.6034091,1438.09243763,0


LINE コマンド再開。

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

コマンド: setenv
変数名を入力: an1
値 <-118.6>: -118.6


コマンド:
SETENV
変数名を入力: p2
値 <945.19047071,1364.09243763,0>: 945.19047071,1364.09243763,0


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


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


コマンド:
SETENV
変数名を入力: pa1
値 <945.19047071,1364.09243763,0>: 945.19047071,1364.09243763,0


コマンド: lengthen

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

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

コマンド:
LENGTHEN

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


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

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

コマンド: setenv
変数名を入力: l1
値 <2006>: 2006


コマンド: trim

現在の設定: 投影モード=UCS、エッジモード=非延長
切り取りエッジを選択 ...
オブジェクトを選択 または <すべて選択>: c

最初のコーナーを指定: non
985.6034091,1438.09243763,0
もう一方のコーナーを指定: non
945.19047071,1364.09243763,0
認識された数: 16

オブジェクトを選択:

トリムするオブジェクトを選択 または Shift を押して延長するオブジェクトを選択 または
[フェンス(F)/交差(C)/投影モード(P)/エッジ(E)/削除(R)/元に戻す(U)]: non
@2005.9<-118.6
もう一方のコーナーを指定: もう一方のコーナーを指定:

窓の指定が無効です。
もう一方のコーナーを指定: もう一方のコーナーを指定: *キャンセル*
  • 玉木
  • 2019/01/11 (Fri) 09:45:30
Re: 任意の線まで一括ストレッチ
やはり同じ角度じゃないと難しいですよね・・・

この作業を100箇所以上やらないといけなかったため少しでも簡易になればと思ったのですが・・・

無理難題で申し訳ありません・・・
  • 玉木
  • 2019/01/11 (Fri) 09:50:38
Re: 任意の線まで一括ストレッチ
なぜかはわかりませんが
交点と交点の距離(ダミーで描いたLineの長さ)が選択できていない為みたいです。

ちょっと修正してみました。
*^C^C$M=setenv;to;0;$(if,$(=,$(getenv,to),0),;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)$(if,$(=,$(getenv,to),1),;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)$(if,$(=,$(getenv,to),2),lengthen;end;$(getenv,p1);;;copy;p;;non;@;non;@;erase;p;;id;non;@$M="""$(getvar,perimeter)"""<$(getenv,an1);setenv;p2;$M="""""""$(getvar,lastpoint)""""""";;to;3)$(if,$(=,$(getenv,to),3),;to;$M="""$(if,$(=,$(getenv,l1),$(getvar,perimeter)),4;;pa0;$(+,$(getenv,pa0),1);erase;non;$(getenv,p1);,1;;pa0;$(+,$(getenv,pa0),1))""")$(if,$(=,$(getenv,to),4),setenv;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)$(if,$(=,$(getenv,to),5),;pb$(getenv,pb0);$(getenv,p4);lengthen;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)$(if,$(=,$(getenv,to),6),lengthen;end;$(getenv,p3);;;copy;p;;non;@;non;@;erase;p;;id;non;@$M="""$(getvar,perimeter)"""<$(getenv,an2);setenv;p4;$M="""""""$(getvar,lastpoint)""""""";;to;7)$(if,$(=,$(getenv,to),7),;to;$M="""$(if,$(=,$(getenv,l2),$(getvar,perimeter)),8;;pb$(+,1,(getenv,pb0));$(getenv,p3);erase;non;$(getenv,p3);,5;;pb0;$(+,$(getenv,pb0),1))""")$(if,$(=,$(getenv,to),8),setenv;pb0;$(+,$(getenv,pb0),1);;to;9)$(if,$(=,$(getenv,to),9),;pb$(getenv,pb0);$(getenv,p3);;to;10)$(if,$(=,$(getenv,to),10),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;11))$(if,$(=,$(getenv,to),11),;pa0;$(-,$(getenv,pa0),1);;pb0;$(-,$(getenv,pb0),1);;to;10)^M

操作方法は変わっていません

>やはり同じ角度じゃないと難しいですよね・・・
一応どんな角度でも出来ているのですが
  • chibi-tom
  • 2019/01/11 (Fri) 17:06:02
Re: 任意の線まで一括ストレッチ
修正していただいたものも試しましたが、同じところで止まってしまいます。

>一応どんな角度でも出来ているのですが
最初の返答としてとってぃ様が難しいとおっしゃっておりましたので、それに対する返答もかねておりました。言葉が足らず申し訳ありません。

-----以下AUTOCADログ-----
コマンド: *キャンセル*

コマンド: *キャンセル*

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


コマンド:
SETENV
変数名を入力: pa0
値 <1>: 1


コマンド: id
点を指定: int
どこの X = 1082.9 Y = 1543.7 Z = 0.0

コマンド: line

1 点目を指定: non
@

次の点を指定 または [元に戻す(U)]: 'setenv
>>変数名を入力: p1
>>値 <1014.15058115,1473.73596048,0>: 1082.85271511,1543.73596048,0


LINE コマンド再開。

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

コマンド: setenv
変数名を入力: an1
値 <34.8>: -108.7


コマンド:
SETENV
変数名を入力: p2
値 <1109.15058115,1539.73596048,0>: 1057.80802358,1469.73596048,0


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


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


コマンド:
SETENV
変数名を入力: pa1
値 <1109.15058115,1539.73596048,0>: 1057.80802358,1469.73596048,0


コマンド: lengthen

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

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

コマンド:
LENGTHEN

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


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

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

コマンド: setenv
変数名を入力: l1
値 <2006>: 2006


コマンド: trim

現在の設定: 投影モード=UCS、エッジモード=非延長
切り取りエッジを選択 ...
オブジェクトを選択 または <すべて選択>: c

最初のコーナーを指定: non
1082.85271511,1543.73596048,0
もう一方のコーナーを指定: non
1057.80802358,1469.73596048,0
認識された数: 10

オブジェクトを選択:

トリムするオブジェクトを選択 または Shift を押して延長するオブジェクトを選択 または
[フェンス(F)/交差(C)/投影モード(P)/エッジ(E)/削除(R)/元に戻す(U)]: non
@2005.9<-108.7
もう一方のコーナーを指定: もう一方のコーナーを指定:

窓の指定が無効です。
もう一方のコーナーを指定: もう一方のコーナーを指定:
切り取りエッジと交差していません。
もう一方のコーナーを指定: *キャンセル*
  • 玉木
  • 2019/01/12 (Sat) 09:19:20
Re: Re: 任意の線まで一括ストレッチ

最初の交点に何か他のオブジェクトが有りますか?
そのオブジェクトの長さを取得している可能性が有るような気がします

CADが無いので試せませんが、確認してみてください
  • chibi-tom@スマホ
  • 2019/01/12 (Sat) 10:17:36
Re: 任意の線まで一括ストレッチ
修正が不十分だったです

修正したのでお試しください
*^C^C$M=setenv;to;0;$(if,$(=,$(getenv,to),0),;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)$(if,$(=,$(getenv,to),1),;pa$(getenv,pa0);$(getenv,p2);lengthen;dy;;;end;$(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)$(if,$(=,$(getenv,to),2),lengthen;end;$(getenv,p1);;;copy;p;;non;@;non;@;erase;p;;id;non;@$M="""$(getvar,perimeter)"""<$(getenv,an1);setenv;p2;$M="""""""$(getvar,lastpoint)""""""";;to;3)$(if,$(=,$(getenv,to),3),;to;$M="""$(if,$(=,$(getenv,l1),$(getvar,perimeter)),4;;pa0;$(+,$(getenv,pa0),1);erase;non;$(getenv,p1);,1;;pa0;$(+,$(getenv,pa0),1))""")$(if,$(=,$(getenv,to),4),setenv;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)$(if,$(=,$(getenv,to),5),;pb$(getenv,pb0);$(getenv,p4);lengthen;dy;;;end;$(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)$(if,$(=,$(getenv,to),6),lengthen;end;$(getenv,p3);;;copy;p;;non;@;non;@;erase;p;;id;non;@$M="""$(getvar,perimeter)"""<$(getenv,an2);setenv;p4;$M="""""""$(getvar,lastpoint)""""""";;to;7)$(if,$(=,$(getenv,to),7),;to;$M="""$(if,$(=,$(getenv,l2),$(getvar,perimeter)),8;;pb$(+,1,(getenv,pb0));$(getenv,p3);erase;non;$(getenv,p3);,5;;pb0;$(+,$(getenv,pb0),1))""")$(if,$(=,$(getenv,to),8),setenv;pb0;$(+,$(getenv,pb0),1);;to;9)$(if,$(=,$(getenv,to),9),;pb$(getenv,pb0);$(getenv,p3);;to;10)$(if,$(=,$(getenv,to),10),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;11))$(if,$(=,$(getenv,to),11),;pa0;$(-,$(getenv,pa0),1);;pb0;$(-,$(getenv,pb0),1);;to;10)^M
  • chibi-tom
  • 2019/01/15 (Tue) 08:02:38
Re: 任意の線まで一括ストレッチ
当方も手元にAUTOCADがなく、確認できずにすいませんでした。

その他オブジェクトもなく、途中で止まってしまうような状態です。

1点目、2点目を選択後、3点目を指定できずに
トリムが出てきてしまいます。

-----以下AUTOCADログ-----

コマンド: *キャンセル*

コマンド: *キャンセル*

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


コマンド:
SETENV
変数名を入力: pa0
値 <1>: 1


コマンド: id
点を指定: int
どこの X = 1043.1 Y = 1470.9 Z = 0.0

コマンド: line

1 点目を指定: non
@

次の点を指定 または [元に戻す(U)]: 'setenv
>>変数名を入力: p1
>>値 <1043.08993128,1470.87366639,0>: 1043.08993128,1470.87366639,0


LINE コマンド再開。

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

コマンド: setenv
変数名を入力: an1
値 <-123.1>: -123.1


コマンド:
SETENV
変数名を入力: p2
値 <994.90988674,1396.87366639,0>: 994.90988674,1396.87366639,0


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


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


コマンド:
SETENV
変数名を入力: pa1
値 <994.90988674,1396.87366639,0>: 994.90988674,1396.87366639,0


コマンド: lengthen

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

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

コマンド:
LENGTHEN

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


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

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

コマンド: setenv
変数名を入力: l1
値 <760.13661559>: 760.13661559


コマンド: trim

現在の設定: 投影モード=UCS、エッジモード=非延長
切り取りエッジを選択 ...
オブジェクトを選択 または <すべて選択>: c

最初のコーナーを指定: non
1043.08993128,1470.87366639,0
もう一方のコーナーを指定: non
994.90988674,1396.87366639,0
認識された数: 10

オブジェクトを選択:

トリムするオブジェクトを選択 または Shift を押して延長するオブジェクトを選択 または
[フェンス(F)/交差(C)/投影モード(P)/エッジ(E)/削除(R)/元に戻す(U)]: non
@760.03661559<-123.1
もう一方のコーナーを指定: もう一方のコーナーを指定:

窓の指定が無効です。
もう一方のコーナーを指定: もう一方のコーナーを指定: *キャンセル*
  • 玉木
  • 2019/01/15 (Tue) 08:51:03
Re: 任意の線まで一括ストレッチ
申し訳ないです
わからない

玉木様のマクロの流れの通りに
手動でやると最後に書いたlineの長さは88.3になるのですが

>LENGTHEN
>
>計測するオブジェクトを選択 または [増減(DE)/比率(P)/全体(T)/ダイナミック(DY)] <ダイナミック(DY)>: end
>どこの 1043.08993128,1470.87366639,0
>
>
>現在の長さ: 760.1
>計測するオブジェクトを選択 または [増減(DE)/比率(P)/全体(T)/ダイナミック(DY)] <ダイナミック(DY)>:
>
>変更するオブジェクトを選択 または [元に戻す(U)]:
>
>コマンド: setenv
>変数名を入力: l1
>値 <760.13661559>: 760.13661559

となっていてその原因がわからないんです
760.13661559この長さがどのオブジェクトの長さなのか
調べられますか?
他に重なっているオブジェクトが無いとのことなので
変形しようとしているオブジェクトの長さかもしれないですけど
最後に描いたlineを選択すると思うのですが

とにかく、l1の値が流れの中のlineの長さ『88.3』にならないとうまく動かないですね


  • chibi-tom
  • 2019/01/15 (Tue) 09:11:46
Re: 任意の線まで一括ストレッチ
また少し修正してみました

これでどうでしょうか?
*^C^C$M=setenv;to;0;$(if,$(=,$(getenv,to),0),;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)$(if,$(=,$(getenv,to),1),;pa$(getenv,pa0);$(getenv,p2);lengthen;dy;;;l;;;setenv;l1;$M="""$(getvar,perimeter);id;non;$(getenv,p1);trim;c;non;$(getenv,p1);non;$(getenv,p2);;non;@$(-,$(getvar,perimeter),0.1)"""<$(getenv,an1);;setenv;to;2)$(if,$(=,$(getenv,to),2),lengthen;end;$(getenv,p1);;;copy;p;;non;@;non;@;erase;p;;id;non;@$M="""$(getvar,perimeter)"""<$(getenv,an1);setenv;p2;$M="""""""$(getvar,lastpoint)""""""";;to;3)$(if,$(=,$(getenv,to),3),;to;$M="""$(if,$(=,$(getenv,l1),$(getvar,perimeter)),4;;pa0;$(+,$(getenv,pa0),1);erase;non;$(getenv,p1);,1;;pa0;$(+,$(getenv,pa0),1))""")$(if,$(=,$(getenv,to),4),setenv;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)$(if,$(=,$(getenv,to),5),;pb$(getenv,pb0);$(getenv,p4);lengthen;dy;;;l;;;setenv;l2;$M="""$(getvar,perimeter);id;non;$(getenv,p3);trim;c;non;$(getenv,p3);non;$(getenv,p4);;non;@$(-,$(getvar,perimeter),0.1)"""<$(getenv,an2);;setenv;to;6)$(if,$(=,$(getenv,to),6),lengthen;end;$(getenv,p3);;;copy;p;;non;@;non;@;erase;p;;id;non;@$M="""$(getvar,perimeter)"""<$(getenv,an2);setenv;p4;$M="""""""$(getvar,lastpoint)""""""";;to;7)$(if,$(=,$(getenv,to),7),;to;$M="""$(if,$(=,$(getenv,l2),$(getvar,perimeter)),8;;pb$(+,1,(getenv,pb0));$(getenv,p3);erase;non;$(getenv,p3);,5;;pb0;$(+,$(getenv,pb0),1))""")$(if,$(=,$(getenv,to),8),setenv;pb0;$(+,$(getenv,pb0),1);;to;9)$(if,$(=,$(getenv,to),9),;pb$(getenv,pb0);$(getenv,p3);;to;10)$(if,$(=,$(getenv,to),10),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;11))$(if,$(=,$(getenv,to),11),;pa0;$(-,$(getenv,pa0),1);;pb0;$(-,$(getenv,pb0),1);;to;10)^M
  • chibi-tom
  • 2019/01/15 (Tue) 09:26:29
Re: 任意の線まで一括ストレッチ
横からゴメンナサイ。
私のCAD(LT2017)では、chibi-tomさんのマクロは正常に動いております。
1発目のマクロから。

動かない原因がどこに有るのかが判れば、解決できるかもしれません。

CADのバージョン違いが原因の場合。(玉木さんの使ってるバージョンは何?)
これは、マクロの構文をそのバージョンに合わせるしかないです。
そのバージョンと同じCADを持っていないと、なかなか難しい作業です。

図面設定が原因の場合。
図面に格納されているシステム変数や、図面の作図状況、画層状況が原因なら、
それを変更する事で動く様になる。(マクロを修正する必要はない)
別の図面や新規作成の図面で試して見るのが好ましい。

CADの設定が原因の場合。
各種設定やシステム変数が原因なら、それを変更してみる。
例えば私と同じLT2017で、新規図面でも同じエラーになると言うのでしたら、
CADの何かしらの設定が原因の可能性が高いです。
  • Lon
  • 2019/01/15 (Tue) 12:26:03
Re: 任意の線まで一括ストレッチ
LT2016になります。

申し訳ありません。そこを失念しておりました。
  • 玉木
  • 2019/01/15 (Tue) 14:44:30
Re: 任意の線まで一括ストレッチ
動作確認いたしました。

完了するのにかなり時間がかかりました。
ログもかなり長い時間流れましたので、割愛させていただきます。

1点目、二点目を洗濯した段階でトリムが始まり、画像の状態でストップいたしました。

3点目と4点目を指定しないで始まってしまう状態です。

よろしくお願い致します。
  • 玉木
  • 2019/01/15 (Tue) 15:22:09
Re: 任意の線まで一括ストレッチ
うーん、やっぱりダミーで描いたlineを選択できてないみたいです
選択の方法を変えてみました
さらに長くなってしまったのでうまく動くか不安ですけど
試してみてください

*^C^C$M=setenv;to;0;$(if,$(=,$(getenv,to),0),;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)$(if,$(=,$(getenv,to),1),;pa$(getenv,pa0);$(getenv,p2);lengthen;dy;;;l;;;setenv;l1;$M="""$(getvar,perimeter);id;non;$(getenv,p1);trim;c;non;$(getenv,p1);non;$(getenv,p2);;non;@$(-,$(getvar,perimeter),0.1)"""<$(getenv,an1);;setenv;to;2)$(if,$(=,$(getenv,to),2),lengthen;l;;;id;non;$(getenv,p1);copy;p;;non;@;non;@;erase;p;;id;non;@$M="""$(getvar,perimeter)"""<$(getenv,an1);setenv;p2;$M="""""""$(getvar,lastpoint)""""""";;to;3)$(if,$(=,$(getenv,to),3),;to;$M="""$(if,$(=,$(getenv,l1),$(getvar,perimeter)),4;;pa0;$(+,$(getenv,pa0),1);erase;non;$(getenv,p1);,1;;pa0;$(+,$(getenv,pa0),1))""")$(if,$(=,$(getenv,to),4),setenv;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)$(if,$(=,$(getenv,to),5),;pb$(getenv,pb0);$(getenv,p4);lengthen;dy;;;l;;;setenv;l2;$M="""$(getvar,perimeter);id;non;$(getenv,p3);trim;c;non;$(getenv,p3);non;$(getenv,p4);;non;@$(-,$(getvar,perimeter),0.1)"""<$(getenv,an2);;setenv;to;6)$(if,$(=,$(getenv,to),6),lengthen;l;;;id;non;$(getenv,p3);copy;p;;non;@;non;@;erase;p;;id;non;@$M="""$(getvar,perimeter)"""<$(getenv,an2);setenv;p4;$M="""""""$(getvar,lastpoint)""""""";;to;7)$(if,$(=,$(getenv,to),7),;to;$M="""$(if,$(=,$(getenv,l2),$(getvar,perimeter)),8;;pb$(+,1,(getenv,pb0));$(getenv,p3);erase;non;$(getenv,p3);,5;;pb0;$(+,$(getenv,pb0),1))""")$(if,$(=,$(getenv,to),8),setenv;pb0;$(+,$(getenv,pb0),1);;to;9)$(if,$(=,$(getenv,to),9),;pb$(getenv,pb0);$(getenv,p3);;to;10)$(if,$(=,$(getenv,to),10),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;11))$(if,$(=,$(getenv,to),11),;pa0;$(-,$(getenv,pa0),1);;pb0;$(-,$(getenv,pb0),1);;to;10)^M
  • chibi-tom
  • 2019/01/15 (Tue) 15:27:42
Re: 任意の線まで一括ストレッチ
わかったかもです
システム変数sortentsの値が127以外なのではないでしょうか?

もしそうであれば
これでいけると思います。
*^C^C$M=setenv;to;0;$(if,$(=,$(getenv,to),0),;so;$(getvar,sortents);;pa0;1;id;int;\line;non;@;'setenv;p1;$M="""$(getvar,lastpoint)""";int;\;setenv;an1;$M="""""""$(rtos,$(*,$(getvar,lastangle),57.29577951))""""""";;p2;$M="""""""$(getvar,lastpoint)""""""";sortents;127;setenv;to;1)$(if,$(=,$(getenv,to),1),;pa$(getenv,pa0);$(getenv,p2);lengthen;dy;;;l;;;setenv;l1;$M="""$(getvar,perimeter);id;non;$(getenv,p1);trim;c;non;$(getenv,p1);non;$(getenv,p2);;non;@$(-,$(getvar,perimeter),0.1)"""<$(getenv,an1);;setenv;to;2)$(if,$(=,$(getenv,to),2),lengthen;l;;;id;non;$(getenv,p1);copy;p;;non;@;non;@;erase;p;;id;non;@$M="""$(getvar,perimeter)"""<$(getenv,an1);setenv;p2;$M="""""""$(getvar,lastpoint)""""""";;to;3)$(if,$(=,$(getenv,to),3),;to;$M="""$(if,$(=,$(getenv,l1),$(getvar,perimeter)),4;;pa0;$(+,$(getenv,pa0),1);erase;non;$(getenv,p1);,1;;pa0;$(+,$(getenv,pa0),1))""")$(if,$(=,$(getenv,to),4),setenv;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)$(if,$(=,$(getenv,to),5),;pb$(getenv,pb0);$(getenv,p4);lengthen;dy;;;l;;;setenv;l2;$M="""$(getvar,perimeter);id;non;$(getenv,p3);trim;c;non;$(getenv,p3);non;$(getenv,p4);;non;@$(-,$(getvar,perimeter),0.1)"""<$(getenv,an2);;setenv;to;6)$(if,$(=,$(getenv,to),6),lengthen;l;;;id;non;$(getenv,p3);copy;p;;non;@;non;@;erase;p;;id;non;@$M="""$(getvar,perimeter)"""<$(getenv,an2);setenv;p4;$M="""""""$(getvar,lastpoint)""""""";;to;7)$(if,$(=,$(getenv,to),7),;to;$M="""$(if,$(=,$(getenv,l2),$(getvar,perimeter)),8;;pb$(+,1,(getenv,pb0));$(getenv,p3);erase;non;$(getenv,p3);,5;;pb0;$(+,$(getenv,pb0),1))""")$(if,$(=,$(getenv,to),8),setenv;pb0;$(+,$(getenv,pb0),1);;to;9)$(if,$(=,$(getenv,to),9),;pb$(getenv,pb0);$(getenv,p3);;to;10)$(if,$(=,$(getenv,to),10),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)),sortents;$(getenv,so);^Csetenv;to;0,setenv;to;11))$(if,$(=,$(getenv,to),11),;pa0;$(-,$(getenv,pa0),1);;pb0;$(-,$(getenv,pb0),1);;to;10)^M
  • chibi-tom
  • 2019/01/15 (Tue) 16:00:52
Re: 任意の線まで一括ストレッチ
1点目から4点目まで指定した結果。
画像のようになりました。

ログは途中からになりますが記載させていただきます。

-----以下AUTOCADログ-----

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


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


コマンド:
SETENV
変数名を入力: pa3
値 <1126.08993128,1470.87366639,0>: 1117.08993128,1470.87366639,0


コマンド: id
点を指定: end
どこの X = 1207.1 Y = 1460.9 Z = 0.0

コマンド: line

1 点目を指定: end
どこの @

次の点を指定 または [元に戻す(U)]: 'setenv
>>変数名を入力: p3
>>値 <1216.12950111,1460.87366639,0>: 1207.12950111,1460.87366639,0


LINE コマンド再開。

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

コマンド: setenv
変数名を入力: an2
値 <-90>: -90


コマンド:
SETENV
変数名を入力: p4
値 <1216.12950111,1396.87366639,0>: 1207.12950111,1396.87366639,0


コマンド:
SETENV
変数名を入力: to
値 <0>: 5


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


コマンド:
SETENV
変数名を入力: pb1
値 <1216.12950111,1396.87366639,0>: 1207.12950111,1396.87366639,0


コマンド: lengthen

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

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

コマンド:
LENGTHEN

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


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

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

コマンド: setenv
変数名を入力: l2
値 <64>: 64


コマンド: id
点を指定: non
1207.12950111,1460.87366639,0
X = 1207.1 Y = 1460.9 Z = 0.0

コマンド: trim

現在の設定: 投影モード=UCS、エッジモード=非延長
切り取りエッジを選択 ...
オブジェクトを選択 または <すべて選択>: c

最初のコーナーを指定: non
1207.12950111,1460.87366639,0
もう一方のコーナーを指定: non
1207.12950111,1396.87366639,0
認識された数: 8

オブジェクトを選択:

トリムするオブジェクトを選択 または Shift を押して延長するオブジェクトを選択 または
[フェンス(F)/交差(C)/投影モード(P)/エッジ(E)/削除(R)/元に戻す(U)]: non
@63.9<-90


トリムするオブジェクトを選択 または Shift を押して延長するオブジェクトを選択 または
[フェンス(F)/交差(C)/投影モード(P)/エッジ(E)/削除(R)/元に戻す(U)]:

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


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


コマンド: lengthen

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


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

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

コマンド: id
点を指定: non
1207.12950111,1460.87366639,0
X = 1207.1 Y = 1460.9 Z = 0.0

コマンド: copy

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

オブジェクトを選択:

基点を指定 または [移動距離(D)/複数(M)] <移動距離>: non
@

2 点目を指定 または [配列(A)] <1 点目を基点に使用>: non
@

コマンド: erase

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

オブジェクトを選択:

コマンド: id
点を指定: non
@64<-90
X = 1207.1 Y = 1396.9 Z = 0.0

コマンド: setenv
変数名を入力: p4
値 <1207.12950111,1396.87366639,0>: 1207.12950111,1396.87366639,0


コマンド:
SETENV
変数名を入力: to
値 <0>: 7


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


コマンド:
SETENV
変数名を入力: to
値 <0>: 8


コマンド:
SETENV
変数名を入力: pb 値:


コマンド: 1207.12950111,1460.87366639,0
そのようなコマンド "12950111,1460.87366639,0" はありません。ヘルプを表示するには F1 キーを押してください。

コマンド: erase

オブジェクトを選択: non
1207.12950111,1460.87366639,0
認識された数: 1

オブジェクトを選択:

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


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


コマンド:
SETENV
変数名を入力: to
値 <0>: 9


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


コマンド:
SETENV
変数名を入力: pb2
値 <1216.12950111,1460.87366639,0>: 1207.12950111,1460.87366639,0


コマンド:
SETENV
変数名を入力: to
値 <0>: 10


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


コマンド: stretch

ストレッチするオブジェクトを交差窓 または ポリゴン交差窓で選択...
オブジェクトを選択: c

最初のコーナーを指定: non
1207.12950111,1460.87366639,0
もう一方のコーナーを指定: non
1207.12950111,1460.87366639,0
認識された数: 1

オブジェクトを選択:

基点を指定 または [移動距離(D)]: non
1207.12950111,1460.87366639,0

目的点を指定 または <基点を移動距離として使用>: non
1117.08993128,1470.87366639,0

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


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


コマンド:
SETENV
変数名を入力: pa0
値 <3>: 2


コマンド:
SETENV
変数名を入力: pb0
値 <2>: 1


コマンド:
SETENV
変数名を入力: to
値 <0>: 10


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


コマンド: stretch

ストレッチするオブジェクトを交差窓 または ポリゴン交差窓で選択...
オブジェクトを選択: c

最初のコーナーを指定: non
1207.12950111,1396.87366639,0
もう一方のコーナーを指定: non
1207.12950111,1396.87366639,0
認識された数: 1

オブジェクトを選択:

基点を指定 または [移動距離(D)]: non
1207.12950111,1396.87366639,0

目的点を指定 または <基点を移動距離として使用>: non
1010.56274586,1307.46129393,0

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


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


コマンド:
SETENV
変数名を入力: pa0
値 <2>: 1


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


コマンド:
SETENV
変数名を入力: to
値 <0>: 10


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


コマンド: stretch

ストレッチするオブジェクトを交差窓 または ポリゴン交差窓で選択...
オブジェクトを選択: c

最初のコーナーを指定: non
0
もう一方のコーナーを指定: non
0
認識された数: 0
オブジェクトを選択:

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


コマンド:
SETENV
変数名を入力: so
値 <127>: 127


コマンド:
SETENV
変数名を入力: pa0
値 <1>: 1


コマンド: id
点を指定: int
どこの *キャンセル*
  • 玉木
  • 2019/01/15 (Tue) 17:25:52
Re: 任意の線まで一括ストレッチ
残念、だめでしたか

Lon様のおっしゃるように新規図面でもだめならCADの設定が自分とは違うのだと思います。
そうなるとちょっとこちらでは判断するのが難しいかもしれないです

もう少し探ってはみますが
  • chibi-tom
  • 2019/01/15 (Tue) 18:52:51
Re: 任意の線まで一括ストレッチ
1か所ミスを見つけました
なぜ自分のが動いていたのか・・・?

関係ないかも知れないですが修正しました。
*^C^C$M=setenv;to;0;$(if,$(=,$(getenv,to),0),;so;$(getvar,sortents);;pa0;1;id;int;\line;non;@;'setenv;p1;$M="""$(getvar,lastpoint)""";int;\;setenv;an1;$M="""""""$(rtos,$(*,$(getvar,lastangle),57.29577951))""""""";;p2;$M="""""""$(getvar,lastpoint)""""""";sortents;127;setenv;to;1)$(if,$(=,$(getenv,to),1),;pa$(getenv,pa0);$(getenv,p2);lengthen;dy;;;l;;;setenv;l1;$M="""$(getvar,perimeter);id;non;$(getenv,p1);trim;c;non;$(getenv,p1);non;$(getenv,p2);;non;@$(-,$(getvar,perimeter),0.1)"""<$(getenv,an1);;setenv;to;2)$(if,$(=,$(getenv,to),2),lengthen;l;;;id;non;$(getenv,p1);copy;p;;non;@;non;@;erase;p;;id;non;@$M="""$(getvar,perimeter)"""<$(getenv,an1);setenv;p2;$M="""""""$(getvar,lastpoint)""""""";;to;3)$(if,$(=,$(getenv,to),3),;to;$M="""$(if,$(=,$(getenv,l1),$(getvar,perimeter)),4;;pa0;$(+,$(getenv,pa0),1);erase;non;$(getenv,p1);,1;;pa0;$(+,$(getenv,pa0),1))""")$(if,$(=,$(getenv,to),4),setenv;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)$(if,$(=,$(getenv,to),5),;pb$(getenv,pb0);$(getenv,p4);lengthen;dy;;;l;;;setenv;l2;$M="""$(getvar,perimeter);id;non;$(getenv,p3);trim;c;non;$(getenv,p3);non;$(getenv,p4);;non;@$(-,$(getvar,perimeter),0.1)"""<$(getenv,an2);;setenv;to;6)$(if,$(=,$(getenv,to),6),lengthen;l;;;id;non;$(getenv,p3);copy;p;;non;@;non;@;erase;p;;id;non;@$M="""$(getvar,perimeter)"""<$(getenv,an2);setenv;p4;$M="""""""$(getvar,lastpoint)""""""";;to;7)$(if,$(=,$(getenv,to),7),;to;$M="""$(if,$(=,$(getenv,l2),$(getvar,perimeter)),8;;pb$(+,1,$(getenv,pb0));$(getenv,p3);erase;non;$(getenv,p3);,5;;pb0;$(+,$(getenv,pb0),1))""")$(if,$(=,$(getenv,to),8),setenv;pb0;$(+,$(getenv,pb0),1);;to;9)$(if,$(=,$(getenv,to),9),;pb$(getenv,pb0);$(getenv,p3);;to;10)$(if,$(=,$(getenv,to),10),$M=$(if,$(=,0,$(getenv,pa0)),sortents;$(getenv,so);^Csetenv;to;0,stretch;c;non;$(getenv,pb$(getenv,pb0));non;$(getenv,pb$(getenv,pb0));;non;$(getenv,pb$(getenv,pb0));non;$(getenv,pa$(getenv,pa0));setenv;to;11))$(if,$(=,$(getenv,to),11),;pa0;$(-,$(getenv,pa0),1);;pb0;$(-,$(getenv,pb0),1);;to;10)^M

ミスではないが変な動きしてたのでさらに修正しました。
ちなみにLT2015とLT2011でも大丈夫でした。
(LT2011はlengthenの部分だけ仕様にあわせて修正)
  • chibi-tom
  • 2019/01/16 (Wed) 10:48:50
Re: 任意の線まで一括ストレッチ
ウイルス性胃腸炎とインフルエンザを併発し長期で休んでおりました。

返信遅くなり申し訳ありません。

やはりすんなりと動かない状態です。

当方の設定が悪いのかもしれません。

お手数おかけして申し訳ありません。

ありがとうございました。
  • 玉木
  • 2019/01/22 (Tue) 10:41:25
Re: 任意の線まで一括ストレッチ
問題が解決したわけではありませんが
整理しました。

*^C^C$M=setenv;to;0;$(if,$(=,$(getenv,to),0),;so;$(getvar,sortents);;pa0;1;;pb0;1;;sw;1;sortents;127;setenv;to;1)$(if,$(=,$(getenv,to),1),id;\line;non;@;'setenv;p$(if,$(getenv,sw),1,3);$M="""$(getvar,lastpoint)""";\;setenv;to;2)$(if,$(=,$(getenv,to),2),;an$(if,$(getenv,sw),1,2);'cal;"""(180*$M=$(getvar,lastangle)/pi)""";\;p$(if,$(getenv,sw),2,4);$M="""$(getvar,lastpoint)""";;to;3)$(if,$(=,$(getenv,to),3),$(if,$(getenv,sw),;pa$(getenv,pa0);$(getenv,p2),;pb$(getenv,pb0);$(getenv,p4));;to;4)$(if,$(=,$(getenv,to),4),lengthen;dy;;;l;;;$(if,$(getenv,sw),setenv;l1;$M="""""""$(getvar,perimeter)""""""",setenv;l2;$M="""""""$(getvar,perimeter)""""""");id;non;$(getenv,p$(if,$(getenv,sw),1,3));setenv;to;5)$(if,$(=,$(getenv,to),5),trim;c;non;$(getenv,p$(if,$(getenv,sw),1,3));non;$(getenv,p$(if,$(getenv,sw),2,4));;non;@$(-,$(getvar,perimeter),0.1)<$(getenv,an$(if,$(getenv,sw),1,2));;setenv;to;6)$(if,$(=,$(getenv,to),6),lengthen;non;$(getenv,p$(if,$(getenv,sw),1,3));;;copy;p;;non;@;non;@;erase;p;;id;non;@$M="""$(getvar,perimeter)"""<$(getenv,an$(if,$(getenv,sw),1,2));setenv;p$(if,$(getenv,sw),2,4);$M="""""""$(getvar,lastpoint)""""""";;to;7)$(if,$(=,$(getenv,to),7),;to;$M=$(if,$(=,$(getenv,l$(if,$(getenv,sw),1,2)),$(getvar,perimeter)),$(if,$(getenv,sw),8,9);erase;non;$(getenv,p$(if,$(getenv,sw),1,3));,2;;p$(if,$(getenv,sw),a,b)0;$(+,$(getenv,p$(if,$(getenv,sw),a,b)0),1)))$(if,$(=,$(getenv,to),8),setenv;pa0;$(+,$(getenv,pa0),1);;pa$M="""$(getenv,pa0)""";$(getenv,p1);;sw;0;;to;1)$(if,$(=,$(getenv,to),9),setenv;pb0;$(+,$(getenv,pb0),1);;pb$M="""$(getenv,pb0)""";$(getenv,p3);;to;10)$(if,$(=,$(getenv,to),10),$M=$(if,$(=,0,$(getenv,pa0)),sortents;$(getenv,so);^Csetenv;to;0,stretch;c;non;$(getenv,pb$(getenv,pb0));non;$(getenv,pb$(getenv,pb0));;non;$(getenv,pb$(getenv,pb0));non;$(getenv,pa$(getenv,pa0));setenv;to;11))$(if,$(=,$(getenv,to),11),;pa0;$(-,$(getenv,pa0),1);;pb0;$(-,$(getenv,pb0),1);;to;10)^M


これで動かなかったら、すいませんが白旗あげます。
自分の環境ではマクロ区切りながら確認もしてみたけど、問題ありませんでした。
  • chibi-tom
  • 2019/01/22 (Tue) 15:29:47
Re: 任意の線まで一括ストレッチ
やはり動かず、止まってしまいました。

お手数かけし、申し訳ありませんでした。

最後まで考えてくださりありがとうございました。
  • 玉木
  • 2019/01/23 (Wed) 13:37:47
Re: 任意の線まで一括ストレッチ
自己満足です。
とりあえずできた感じなので投稿します。

*^C^C$M=setenv;to;0;$(if,$(=,$(getenv,to),0),ucs;w;undo;be;ucs;\\;$M=select;\zoom;ob;p;;;s;0.9x;line;0<0;non;0.1<0;;lengthen;dy;;;l;;setenv;p0;"""$(getvar,ucsorg)""";;i;1;;to;1)$(if,$(=,$(getenv,to),1),;ll;$(getvar,perimeter);extend;p;;end;$(getvar,perimeter)<0;;lengthen;dy;;;l;;setenv;to;2)$(if,$(=,$(getenv,to),2),$(if,$(=,$(getvar,perimeter),$(getenv,ll)),;to;4,id;non;$(getvar,perimeter)<0;ucs;w;setenv;to;3))$(if,$(=,$(getenv,to),3),;p$(getenv,i);$(getvar,lastpoint);;i;$(+,$(getenv,i),1);;to;1;ucs;p)$(if,$(=,$(getenv,to),4),ucs;w;line;\\;$M=;\\;$M=setenv;dir;"""$(getvar,lastangle)""";;sin;"""""""$(getvar,lastangle)""""""";;cnt;$(getenv,i);;to;5)$(if,$(=,$(getenv,to),5),;sin;$(-,$(getenv,sin),$(getenv,dir));$M=line;non;0<0;non;1<"""$(getenv,sin)r""";;setenv;to;6)$(if,$(=,$(getenv,to),6),;sin;$(index,1,$(getvar,lastpoint));;to;7;erase;l;;ucs;ob;l)$(if,$(=,$(getenv,to),7),;dl;$(/,$(getvar,viewsize),$(index,1,$(getvar,screensize)));;uo;$(getvar,ucsorg);;ux;$(getvar,ucsxdir);;i;0;;to;8;undo;e;u;undo;be;zoom;ob)$(if,$(=,$(getenv,to),8),ucs;non;$(getenv,uo);non;$(getenv,ux);;;w;id;$(getenv,p$(getenv,i));ucs;p;$M=;w;setenv;l;"""$(index,1,$(getvar,lastpoint))""";;to;9)$(if,$(=,$(getenv,to),9),stretch;cp;non;@$(*,$(getenv,dl),0.577)<330;non;@$(getenv,dl)<120;non;@$(getenv,dl)<240;;;@;non;@$(/,$(getenv,l),$(getenv,sin))<$(getenv,dir)r;setenv;to;10)$(if,$(=,$(getenv,to),10),$(if,$(<,$(+,$(getenv,i),1),$(getenv,cnt)),;i;$(+,$(getenv,i),1);;to;8,undo;e;^Cerase))^M
  • zukki-
  • 2019/02/05 (Tue) 11:23:26
Re: 任意の線まで一括ストレッチ
zukki-様のマクロ
LT2017ではlengthenの仕様の問題でしょう

lengthen;dy;;;l;;を
lengthen;dy;;;l;;;に、2箇所変更して動きました。

玉木様はLT2016とのことなので
変更したほうが良いかもしれません
  • chibi-tom
  • 2019/02/08 (Fri) 15:20:55
Re: 任意の線まで一括ストレッチ
検証ありがとうございます。
  • zukki-
  • 2019/02/10 (Sun) 11:29:19
Re: 任意の線まで一括ストレッチ
すいません。本日気が付き確認いたしました。

無事動きました。ありがとうございます。

これで作図の効率が上がります。

ありがとうございました!
  • 玉木
  • 2019/02/12 (Tue) 14:28:26

返信フォーム






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