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

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

マルチ引出線の色変更
Ver. AutoCAD LT 2019

客先等の図面から編集する際に
寸法内の文字や寸法補助線が個別に色がついていることが多々あり、
それらをすべて一般の色依存にしたく思い

^C^C_dimoverride;dimclrE;0;dimclrD;0;dimclrT;0;;all;^M

というマクロを作り実行したところ、うまく変わってくれました。

ここでマルチ引出線でも同様に文字と引出線の色をそれぞれByBlockにしたいです。
調べたところ、引出線スタイルを使わないとできないようなことを読んだのですが、
出来れば上記マクロレベルで完結したいです。
できない場合はスタイルを使うやりかたでもよいので、教えて頂けないでしょうか。
よろしくお願いいたします。
  • ジータ
  • 2021/10/16 (Sat) 11:24:59
Re: マルチ引出線の色変更
教えて頂けないでしょうか?
  • ジータ
  • 2021/10/25 (Mon) 10:37:16
Re: マルチ引出線の色変更
マルチ引出線の文字色は、文字列の中に書式コードを書き込むことで変更しています。
マクロでは文字内容を取得できないため、マルチテキストの文字色をByblockに変更することはできません。
  • LUNE
  • 2021/10/25 (Mon) 13:14:45
Re: マルチ引出線の色変更
>引出線スタイルを使わないとできないようなことを読んだ
たぶん以前自分が回答したことだと思っていますが

https://totthi.bbs.fc2.com/?act=reply&tid=16471768

その時は勘違いをしていたみたいです
自分で文字の色を変更した場合は新しくマルチ引出線スタイルを作ったとしても
文字の色をスタイルに合わせることはできないようです
勘違い失礼しました
  • chibi-tom
  • 2021/10/25 (Mon) 13:25:20
Re: マルチ引出線の色変更
書式内ではなく、プロパティ内の「引出線の色」等はマクロで変えられるのでしょうか?
  • ジータ
  • 2021/10/25 (Mon) 19:14:31
Re: マルチ引出線の色変更
色の変わっているマルチ引き出し線の文字は
下記のように表示されていると思うのですが
{\C『色番号』;『文字列』}

この文字の色を変更するためには
{\C『色番号』;『文字列』} → 『文字列』
とする必要があり
そのためには文字内容を取得しないといけません

ですがLUNEさんがおっしゃっている様に
マクロでは文字内容を取得できないため
変更できないと思います

言葉は悪いかもしれませんが『わざわざ』変えているんだから
変えたいときも『それぞれ変えなさい』ということになると思います

色の変わっているマルチ引き出し線の引き出し線の色も
同じことが言えるので変更はできないと思われます

新しくマルチ引出線スタイルを作ってもダメな様です
  • chibi-tom
  • 2021/10/26 (Tue) 08:18:20
Re: マルチ引出線の色変更
オブジェクトプロパティで変更するよりは
手間が減るかものレベルですが
こんな感じはどうでしょう?

LT2022で新規図面
マルチ引き出し線の『standard』使用
マルチテキストエディタは『internal』で試しました

事前に『新規』なり『byblockに設定されている』
マルチ引き出し線を記入できる状態で使用してください

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),join;end;マルチ引き出し線の矢印先を指定(R-Clickで終了)^X\$M="""$(if,$(getvar,CMDACTIVE),;select;non;@;non;@;;copy;p;;non;@;non;@;erase;p;;setenv;to;1,^Csetenv;to;0)""",,,,,,)$(nth,$(getenv,to),,;p1;$(getvar,LASTPOINT);undo;be;explode;l;erase;l;;;l;;ucs;ob;l;zoom;c;0<0;;ucs;p;setenv;to;2,,)$(nth,$(getenv,to),,,;p2;$(getvar,VIEWCTR);erase;l;;explode;l;textedit;l;undo;e;u;erase;non;@;;setenv;tex1;ここに貼り付け⇒^X\;to;3,)$(nth,$(getenv,to),,,,mleader;$(getenv,p1);$(getenv,p2);$(getenv,tex1);setenv;to;0)^M

通常のマルチテキストエディタが『internal』でない場合は最後を下記のように変更してください
$(nth,$(getenv,to),,,,mtexted;internal;mleader;$(getenv,p1);$(getenv,p2);$(getenv,p3);$(getenv,tex1);mtexted;『通常のマルチテキストエディタ名』;setenv;to;0)^M

1.マクロ起動
2.マルチ引き出し線の矢印先を指定(R-Clickで終了)
3.テキスト編集ダイアログが開くので『CTRL+C』または右クリックで文字列をコピーしてOKボタンを押す
4.コマンドラインを選択後に『CTRL+V』または右クリックで文字列をペースト

2以降繰り返しR-ClickまたはEscキーで終了

マルチ引き出し線の設定がわからないので使えないとは思いますがこんな方法もあるとの参考までに
普段マルチ引き出し線を使用していないためこれで良いのかどうかも分かりませんのでご了承を
※、少なくとも一行しかコピーできませんので複数行の場合には使用できません

  • chibi-tom
  • 2021/10/26 (Tue) 10:48:38
Re: マルチ引出線の色変更
複数選択してみました

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),select;\copybase;0<0;p;;erase;p;;setenv;to;1,,,,,,,)$(nth,$(getenv,to),,-layout;d;tmplo;;n;tmplo;;s;tmplo;point;0<0;erase;all;;pasteclip;non;0<0;zoom;e;setenv;to;2,,,,,,)$(nth,$(getenv,to),,,;to;7;select;l;;undo;be;explode;l;region;l;;explode;l;ucs;ob;l;zoom;c;0<0;;ucs;p;setenv;to;3,,,,,)$(nth,$(getenv,to),,,,;p1;$(getvar,VIEWCTR);erase;l;;;l;;;l;;;l;;ucs;ob;l;zoom;c;0<0;;ucs;p;setenv;to;4,,,,)$(nth,$(getenv,to),,,,,;p2;$(getvar,VIEWCTR);erase;l;;explode;l;textedit;l;undo;e;u;erase;l;;setenv;tex1;ここに貼り付け⇒^X\;to;5,,,)$(nth,$(getenv,to),,,,,,mleader;$(getenv,p1);$(getenv,p2);$(getenv,tex1);copybase;0<0;l;;erase;l;;setenv;to;6,,)$(nth,$(getenv,to),,,,,,,model;pasteclip;non;0<0;-layout;s;tmplo;setenv;to;2,)$(nth,$(getenv,to),,,,,,,,model;-layout;d;tmplo;;^Csetenv;to;0)^M

1.マクロ起動
2.マルチ引き出し線選択(複数可)
3.テキスト編集ダイアログが開くので『CTRL+C』で文字列をコピーしてエンターを押す
4.コマンドラインを選択後(F2キーを押すのありかも)に『CTRL+V』または右クリックで文字列をペースト
5.3と4を選択したマルチ引き出し線の数だけ繰り返す

全て変換したらマクロが終了します

LT2022で新規図面
マルチ引き出し線の『standard』使用
マルチテキストエディタは『internal』で試しました

自分が操作した感想としては
選択した後はキーボードのみの操作
『CTRL+C』→『エンターキー』→『F2キー』→『CTRL+V』→『エンターキー』の繰り返しが楽でした(個人的感想)

仮に『tmplo』という名前でレイアウトを使用しています
同じ名前のレイアウトがあるとNGなので現状同じ名前のレイアウトがある場合はマクロ内の
『tmplo』を変更してください

マルチ引き出し線の設定がわからないので使えないとは思いますがこんな方法もあるとの参考までに
普段マルチ引き出し線を使用していないためこれで良いのかどうかも分かりませんのでご了承を
※、少なくとも一行しかコピーできませんので複数行の場合には使用できません
  • chibi-tom
  • 2021/10/27 (Wed) 14:53:19
Re: マルチ引出線の色変更
返信遅れて申し訳ありません。

こんなにすごいものをありがとうございます。
すごすぎて自分には何がどうなっているのか
チンプンカンプンです。笑

よろしければどの部分がどうなっているのか
解説していただけないでしょうか?
  • ジータ
  • 2021/11/16 (Tue) 10:11:55
Re: マルチ引出線の色変更
出来たということ前提で書きます
そしてこれを読んでもよくわからないとは思いますがとりあえず

*^C^C$M=setenv;to;0;
※nthマクロ構文のスタート

構文『0』
$(nth,$(getenv,to),select;\copybase;0<0;p;;erase;p;;setenv;to;1,,,,,,,)

0-1:selectコマンドでマルチ引き出し線選択
0-2:copybaseコマンドで選択したマルチ引き出し線を基点を0<0でクリップボードにコピーする
0-3:eraseコマンドで選んだマルチ引き出し線を削除する
0-4:構文『1』に進む

構文『1』
$(nth,$(getenv,to),,-layout;d;tmplo;;n;tmplo;;s;tmplo;point;0<0;erase;all;;pasteclip;non;0<0;zoom;e;setenv;to;2,,,,,,)

1-1:-layoutコマンドで仮にtmploの名前でレイアウトを作る
1-2:pasteclipコマンドでtmploレイアウトにコピーしたマルチ引き出し線を貼り付ける
1-3:構文『2』に進む

構文『2』
$(nth,$(getenv,to),,,;to;7;select;l;;undo;be;explode;l;region;l;;explode;l;ucs;ob;l;zoom;c;0<0;;ucs;p;setenv;to;3,,,,,)

2-1:selectコマンドでオブジェクトの有無を判断する
2-2:オブジェクトが存在する場合は【2-3】へ/存在しない場合は【2-11】へ
(この方法で切り替えられるのはAutoCAD独自仕様の様で、互換CADではできないと聞いたことが有りますのでご注意を)
2-3:undoコマンドで仮作業の開始位置を指定する
2-4:explodeコマンドでマルチ引き出し線を分解する
2-5:regionコマンドで先端の矢印をソリッドからリージョンに変更する
2-6:explodeコマンドで矢印を分解する
2-7:ucsコマンドで矢印の先端にucs位置を変更する
2-8:zoomコマンドで矢印の先端を画面中央に移動する
2-9:ucsコマンドでucs位置を元に戻す
2-10:構文『3』に進む
2-11:構文『7』に進む

構文『3』
$(nth,$(getenv,to),,,,;p1;$(getvar,VIEWCTR);erase;l;;;l;;;l;;;l;;ucs;ob;l;zoom;c;0<0;;ucs;p;setenv;to;4,,,,)

3-1:setenvコマンドで『p1』に矢印の先端の位置座標$(getvar,VIEWCTR)を記憶させる
3-2:eraseコマンドでマルチテキストと下線だけを残しマルチ引き出し線のオブジェクトを削除する
3-3:ucsコマンドで下線の端点にucs位置を変更する
3-4:zoomコマンドで下線の端点を画面中央に移動する
3-5:ucsコマンドでucs位置を元に戻す
3-6:構文『4』に進む

構文『4』
$(nth,$(getenv,to),,,,,;p2;$(getvar,VIEWCTR);erase;l;;explode;l;textedit;l;undo;e;u;erase;l;;setenv;tex1;ここに貼り付け⇒^X\;to;5,,,)

4-1:setenvコマンドで『p2』に下線の端点の位置座標$(getvar,VIEWCTR)を記憶させる
4-2:eraseコマンドで下線を削除する
4-3:explodeコマンドでマルチテキストを分解する
4-4:texteditコマンドでテキストを選択する(ここで文字列をコピーします)
4-5:undoコマンドで仮作業を終了する
4-6:uコマンドで仮作業前に戻る
4-7:eraseコマンドでマルチ引き出し線を削除する
4-8:setenvコマンドで『tex1』にコピーした文字列を貼り付ける(ここでF2キーを押した方が作業しやすい)
4-9:構文『5』に進む

構文『5』
$(nth,$(getenv,to),,,,,,mleader;$(getenv,p1);$(getenv,p2);$(getenv,tex1);copybase;0<0;l;;erase;l;;setenv;to;6,,)

5-1:mleaderコマンドで削除したマルチ引き出し線と同じ位置にマルチ引き出し線を描き直す
5-2:copybaseコマンドで記入したマルチ引き出し線を基点を0<0でクリップボードにコピーする
5-3:eraseコマンドでマルチ引き出し線を削除する
5-4:構文『6』に進む

構文『6』
$(nth,$(getenv,to),,,,,,,model;pasteclip;non;0<0;-layout;s;tmplo;setenv;to;2,)

6-1:modelコマンドでモデル空間に移動する
6-2:pasteclipコマンドでコピーしたマルチ引き出し線を貼り付ける
6-3:-layoutコマンドでtmploのレイアウトに移動する
6-4:構文『2』に戻る

※その後、選択したマルチ引き出し線の数だけ構文『2』から構文『6』を繰り返し
tmploレイアウトに選択したマルチ引き出し線が無くなった場合だけ
下記構文『7』に移動して終了します

構文『7』
$(nth,$(getenv,to),,,,,,,,model;-layout;d;tmplo;;^Csetenv;to;0)^M

7-1:modelコマンドでモデル空間に移動する
7-2:-layoutコマンドでtmploのレイアウトを削除して終了する

以上です
  • chibi-tom
  • 2021/11/16 (Tue) 11:01:21

返信フォーム






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