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

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

全てのレイアウトでズームして全体表示にするマクロ
はじめまして。AUTOCDLT2017を使用しています。
複数のレイアウトがあるデータにおいて、すべてのレイアウトでオブジェクト全体を表示するマクロを作成することは可能でしょうか?
マクロでレイアウトを切り替える方法がわからず、困っています。
  • みかん
  • 2018/01/11 (Thu) 12:30:01
Re: 全てのレイアウトでズームして全体表示にするマクロ
ZOOMコマンドのコマンドオプション

[図面全体(A)/中心点(C)/ダイナミック(D)/オブジェクト範囲(E)/前画面(P)/倍率(S)/窓(W)/選択オブジェクト(O)]

ではダメなのですか?
  • とってぃ
  • 2018/01/11 (Thu) 13:19:43
Re: 全てのレイアウトでズームして全体表示にするマクロ
説明不足で申し訳ありません。

例えば、A、B、Cの三つのレイアウトがある時にマクロを実行すると、
⑴Aのレイアウト図面でオブジェクト範囲ズームをし、
⑵Bのレイアウトに切り替わってオブジェクト範囲ズーム
⑶最後にCのレイアウトに切り替わってオブジェクト範囲ズームを行い、
⑷モデル空間に戻ってくる
というようなマクロです。
  • みかん
  • 2018/01/11 (Thu) 19:15:30
Re: 全てのレイアウトでズームして全体表示にするマクロ
なるほど。単純に作るとこんな感じになります。

マクロ例
^C^Csetenv;cv;$M=$(getenv,CreateViewports);;CreateViewports;0;;to;1;-layout;s;レイアウト1;zoom;a;-layout;s;レイアウト2;zoom;a;-layout;s;レイアウト3;zoom;a;-layout;s;Model;setenv;CreateViewports;$(getenv,cv)^M

マクロ中のレイアウト名1~3を変更してお使いください。
  • とってぃ
  • 2018/01/12 (Fri) 08:34:40
Re: 全てのレイアウトでズームして全体表示にするマクロ
横からすみません、たぶんレイアウト名は任意でレイアウト数も不定な図面ファイルの
レイアウト全てに対してzoom;a;をしたいのだと思います。
マクロで出来る事は出来るのですが、レイアウトの数が多かったりやレイアウト名の長かったりすると
文字数の関係でエラーになるので、少し手間ですがエクセルとかでスクリプトを作ってやるほうが確実です。

コマンドプロンプトで
setenv
dq
"
setenv
cm
,
をしてdqとcmを定義して、以下マクロ

*^C^C$M=setenv;to;0;$(if,$(=,$(getenv,to),0),undo;be;-layout;n;endlo;;s;endlo;;d;;setenv;lolis;$M="""$(getenv,dq)$(getvar,ctab)$(getenv,dq)""";;cnt;1;;to;1;-layout;d;)$(if,$(=,$(getenv,to),1),$(if,$(eq,$(index,0,$(getenv,lolis)),$(getvar,ctab)),undo;e;u;setenv;i;0;;to;2,;lolis;$(getenv,dq)$(getvar,ctab)$(getenv,cm)$(getenv,lolis)$(getenv,dq);;cnt;$(+,$(getenv,cnt),1);;to;1;-layout;d;))$(if,$(=,$(getenv,to),2),-layout;s;$(getenv,dq)$(index,$(getenv,i),$(getenv,lolis))$(getenv,dq);pspace;zoom;e;setenv;to;3)$(if,$(=,$(getenv,to),3),$(if,$(<,$(getenv,i),$(-,$(getenv,cnt),1)),;i;$(+,$(getenv,i),1);;to;2,^C^Cmodel))^M

endloというレイアウトを一瞬作ります、気をつけて下さい。
  • zukki-
  • 2018/01/12 (Fri) 17:53:50
Re: 全てのレイアウトでズームして全体表示にするマクロ
先ほどレイアウト数やレイアウト名の長さでエラーになることがあると書きましたが回避する方法がありました。
たぶんどんなにレイアウト数があってもいけると思います。

setenv
dq
"
でdqを定義

*^C^C$M=setenv;to;0;$(if,$(=,$(getenv,to),0),undo;be;-layout;n;endlo;;s;endlo;;d;;setenv;lo1;$M="""$(getenv,dq)$(getvar,ctab)$(getenv,dq)""";;cnt;1;;to;1;-layout;d;)$(if,$(=,$(getenv,to),1),$(if,$(eq,$(getenv,lo$(getenv,cnt)),$(getvar,ctab)),;to;2,;lo$(+,$(getenv,cnt),1);$(getenv,dq)$(getvar,ctab)$(getenv,dq);;cnt;$(+,$(getenv,cnt),1);;to;1;-layout;d;))$(if,$(=,$(getenv,to),2),undo;e;u;setenv;i;$(getenv,cnt);;to;3)$(if,$(=,$(getenv,to),3),-layout;s;$(getenv,dq)$(getenv,lo$(getenv,i))$(getenv,dq);pspace;zoom;e;setenv;to;4)$(if,$(=,$(getenv,to),4),$(if,$(=,$(getenv,i),1),^C^Cmodel,;i;$(-,$(getenv,i),1);;to;3))^M

やはりレイアウトendloを作っているので、まず無いと思いますが同じ名前がある場合は変えてください。
  • zukki-
  • 2018/01/12 (Fri) 22:18:01
Re: 全てのレイアウトでズームして全体表示にするマクロ
返信が遅くなってしまい申し訳ありません。
zukkiさんに作成して頂いたマクロでうまく行きました。
仕事に活用しようと思います。
とってぃさんに作って頂いたマクロも参考になりました。
ありがとうございました。
  • みかん
  • 2018/01/15 (Mon) 12:25:02

返信フォーム






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