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

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

寸法を合成するマクロ
いつも大変お世話になっております。

複数の寸法を選択して一つの寸法にするマクロの作成は可能でしょうか?

AutoCAD2016 LT使用です。
  • kgw
  • 2020/05/11 (Mon) 13:31:56
Re: 寸法を合成するマクロ
書き直して消せば良くない?
それともどうしても合成しなければならない場合があるのでしょうか?
  • zukki-
  • 2020/05/11 (Mon) 15:00:37
Re: 寸法を合成するマクロ
一括で寸法を作成→重複箇所をまとめる
の作業が大量にある為、少しでも時短になればなと思っての事でした。

マクロの作成方法が分からないので難しい事を言ってしまっていたのならすみません、、

地道に直していくことにします。
ありがとうございました。
  • kgw
  • 2020/05/14 (Thu) 11:43:45
Re: 寸法を合成するマクロ
選択するだけでは寸法の位置情報等(基点の位置、寸法線の位置や方向)が取得できないと思います

これなら3点クリックでいけるかな?

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),line;nea;最初の寸法補助線^X\'setenv;p1;$M="""$(getvar,lastpoint)""";nea;最後の寸法補助線^X\;setenv;p2;$M="""""""$(getvar,lastpoint)""""""";erase;l;;setenv;to;1,,)$(nth,$(getenv,to),,dimlinear;nod;$(getenv,p1);nod;$(getenv,p2);nea;\draworder;l;;b;matchprop;$(getenv,p1);l;;draworder;l;;f;setenv;to;2,)$(nth,$(getenv,to),,,erase;f;nea;$(getenv,p1);nea;$(getenv,p2);;r;l;;setenv;to;0)^M

1.マクロ起動
2.最初の寸法補助線の根元のほうでクリック(参考:図の一番左の寸法補助線)
3.最後の寸法補助線の根元のほうでクリック(参考:図の一番右の寸法補助線)
4.寸法線の位置をクリック(参考:図の寸法線)

終了はEscキーです

lt2021で確認です

※、クリックする位置によって思い通りにならない場合があります
(寸法補助線は根元付近、寸法線は線上を指定するようにしてください)
  • chibi-tom
  • 2020/05/14 (Thu) 15:46:56
Re: 寸法を合成するマクロ
こっちのほうが選択にあまり気を使わなくてよいかなぁ

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),dimlinear;nod;\'setenv;p1;$M="""$(getvar,lastpoint)""";nod;\'setenv;p2;$M="""""""$(getvar,lastpoint)""""""";nea;\setenv;to;1,,)$(nth,$(getenv,to),,id;mid;$(getenv,p1);setenv;p1;$M="""$(getvar,lastpoint)""";id;mid;$(getenv,p2);setenv;p2;$M="""""""$(getvar,lastpoint)""""""";;to;2,)$(nth,$(getenv,to),,,draworder;l;;b;matchprop;$(getenv,p1);l;;draworder;l;;f;erase;f;nea;$(getenv,p1);nea;$(getenv,p2);;r;l;;setenv;to;0)^M

1.マクロ起動
2.1点目の起点を指定(参考:図の一番左の基点)
3.2点目の起点を指定(参考:図の一番右の基点)
4.寸法線の位置をクリック(参考:図の寸法線)

終了はEscキーです

lt2021で確認です
  • chibi-tom
  • 2020/05/14 (Thu) 17:28:33
Re: 寸法を合成するマクロ
ご連絡が遅くなってしまいすみません、、、


早速試してみたのですがうまくいきませんでした、、、
寸法を複数選択(画像の1000を5つ)→Enter→1000が5つあったのが5000が1つに置き換わる
この動作が希望だったのですが、寸法が作成されるだけになってしまいました、、
  • kgw
  • 2020/05/18 (Mon) 10:51:35
Re: 寸法を合成するマクロ
使い方をよく読んで下さい、合成したい寸法の左端と右端、寸法線の位置を選択です。
chibi-tomさんはさらに合成したい寸法のプロパティまでコピーしてくれているので
現在の寸法を変えなくても大丈夫なように作ってくれています。
  • zukki-
  • 2020/05/18 (Mon) 12:11:03
Re: 寸法を合成するマクロ
寸法を複数選択(画像の1000を5つ)→Enter→1000が5つあったのが5000が1つに置き換わる

これは希望の動作で、実際にこのように使用したわけではなかったです。
言葉が足りずすみません、、


合成したい寸法の左端と右端(寸法補助線の基点)、寸法線の位置を選択したのですができませんでした。

ちなみにこのようになります。
↓↓




コマンド: setenv
変数名を入力: to
値: 0
コマンド: dimlinear
1 本目の寸法補助線の起点を指定 または <オブジェクトを選択>: nod
どこの
2 本目の寸法補助線の起点を指定: 'setenv
** このコマンドは割り込みできません。**
無効な点が入力されました。
2 本目の寸法補助線の起点を指定:
非自動調整の寸法が作成されました。
寸法線の位置を指定 または [マルチ テキスト(M)/寸法値(T)/寸法値角度(A)/水平(H)/垂直(V)/回転(R)]:
寸法値: 6300
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値: 0
コマンド: dimlinear
1 本目の寸法補助線の起点を指定 または <オブジェクトを選択>: nod

  • kgw
  • 2020/05/18 (Mon) 13:59:12
Re: 寸法を合成するマクロ
setenvが割り込めないようなので割り込みなしのバージョン。
使い方は一緒です。

*^C^C$M=setenv;to;0;$(if,$(=,$(getenv,to),0),id;nod;\setenv;to;1)$(if,$(=,$(getenv,to),1),;p1;$(getvar,lastpoint);id;nod;\setenv;to;2)$(if,$(=,$(getenv,to),2),;p2;$(getvar,lastpoint);id;end+mid;\setenv;to;3)$(if,$(=,$(getenv,to),3),;p3;$(getvar,lastpoint);setenv;to;4)$(if,$(=,$(getenv,to),4),undo;be;dimlinear;nod;$(getenv,p1);nod;$(getenv,p2);$(getenv,p3);draworder;l;;b;matchprop;$(getenv,p1);l;;setenv;to;5)$(if,$(=,$(getenv,to),5),erase;cp;$(getenv,p1);$(getenv,p2);$(getenv,p3);;r;l;;undo;e)^M
  • zukki-
  • 2020/05/18 (Mon) 14:11:50
Re: 寸法を合成するマクロ
横からすみません。

kgwさんのやりたいことが、普段から私もあると助かるのにと思っていた機能なので興味を持ち、chibi-tomさんが作ってくださったマクロをいただいて試してみたのですが、一つ目は確かに、既存の寸法線がなくなって新しく合成した長さの寸法線に書き換わるのですが、二つ目が途中で止まってしまうようで、新しい寸法線が作図されるのですが、既存の寸法線も残った状態で止まってしまいます。

以下にコマンドラインを貼らせていただきます。



-------------------------------------------------


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


コマンド: dimlinear

1 本目の寸法補助線の起点を指定 または <オブジェクトを選択>: nod
どこの
2 本目の寸法補助線の起点を指定: 'setenv
>>変数名を入力: p1
>>値 <39689.6500074,22700,0>: 41050,30700,0


DIMLINEAR コマンド再開。

2 本目の寸法補助線の起点を指定: nod
どこの
寸法線の位置を指定 または [マルチ テキスト(M)/寸法値(T)/寸法値角度(A)/水平(H)/垂直(V)/回転(R)]: 'setenv
>>変数名を入力: p2
>>値 <39827.36628968,30700,0>: 49050,30700,0


DIMLINEAR コマンド再開。

寸法線の位置を指定 または [マルチ テキスト(M)/寸法値(T)/寸法値角度(A)/水平(H)/垂直(V)/回転(R)]: nea
どこに
寸法値: 8000
コマンド: setenv
変数名を入力: to
値 <0>: 1


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


コマンド: id
点を指定: mid
どこの 41050,30700,0
X = 42050.00000000 Y = 30700.00000000 Z = 0.00000000

コマンド: setenv
変数名を入力: p1
値 <41050,30700,0>: 42050,30700,0


コマンド: id
点を指定: mid
どこの 49050,30700,0

指定された Midpoint 点が見つかりません。
点が無効です。
点を指定:


-------------------------------------------------


このような感じです。

何度かマクロのコピペをし直してみたのですが、やはり変わらずで、一つ目は成功で二つ目が途中で止まってしまいます。


どこか失敗してますでしょうか。
  • なっとん
  • 2020/05/18 (Mon) 14:19:44
Re: 寸法を合成するマクロ
zukki 様
ありがとうございます!できました!

少し気になる点があるのですが、これは仕様上しょうがないでしょうか?
知識が足りず申し訳ないのですがお願い致します。
・結合した寸法の左右の寸法が消えてしまう。
・結合する寸法の所に線分等があるとそれも消えてしまう。
・選択した寸法全てが画面上見えていないと失敗する。
 (大量にあった場合寸法位置を決める際にズームしてクリックすると失敗)
  • kgw
  • 2020/05/18 (Mon) 14:56:29
Re: 寸法を合成するマクロ
結局やっていることは大きい新しい寸法を書いて、分割された寸法を消しているだけです。
・結合した寸法の左右の寸法が消えてしまう。
・結合する寸法の所に線分等があるとそれも消えてしまう。
・選択した寸法全てが画面上見えていないと失敗する。
これは仕様でどうしようもありません、どこに線分があるかわからないので。

手間は増えますが小さい寸法を手動で消すようにすると確実です。
*^C^Cdimlinear;nod;\$M=nod;\mid;\draworder;l;;b;matchprop;$(getvar,lastpoint);l;;erase^M

最初に言ったに書き直して消せばいいのです。
合成はマクロではたぶん不可能でしょう。
  • zukki-
  • 2020/05/18 (Mon) 19:05:37
Re: 寸法を合成するマクロ
zukki-さん
対応ありがとうございます

kgwさん
すいません,最初にも書きましたが寸法を選択するだけでは必要な情報が取得できないので
マクロでは限界があります
気になる点についてはzukki-さんが回答してくれてるように仕様なので自分にはどうしようもなく
zukki-さんのマクロで手動で削除する方法が確実だと思います
慣れてしまったほうが今後の作図も早く書けるようになる気がします

なっとんさん
>指定された Midpoint 点が見つかりません。
となっています。
ちなみにneaで左右の寸法補助線を選択するほうではどうでしょうか?
自分の考えですが、OSNAPについてはマクロにすると自分が思っていない場所を
選択しようとすることが多々あるように感じています。
こちらについてもzukki-さんのマクロで手動で削除するほうが確実だと思います

いくら考えてもこの作業は自分にはこのマクロが限界です<m(__)m>
  • chibi-tom
  • 2020/05/19 (Tue) 08:22:18
Re: 寸法を合成するマクロ
zukki 様
chibi-tom 様

そうなのですね、、
知識が足りずすみません。


対応ありがとうございました!
  • kgw
  • 2020/05/19 (Tue) 09:47:40
Re: 寸法を合成するマクロ
談話室でアドバイスいただきました

・結合する寸法の所に線分等があるとそれも消えてしまう。
・選択した寸法全てが画面上見えていないと失敗する。
には対応できたかもです

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),id;nod;\;$M=nod;\$M=setenv;p1;"""$(getvar,lastpoint)""";;p2;"""""""$(getvar,lastpoint)""""""";;to;1,,)$(nth,$(getenv,to),,dimlinear;non;$(getenv,p1);non;$(getenv,p2);nea;\draworder;l;;b;matchprop;non;@;l;;setenv;to;2,)$(nth,$(getenv,to),,,;p3;$M="""$(getvar,lastpoint)""";aidimtextmove;;f;$(getenv,p1);$M="""""""$(getenv,p3)""""""";$(getenv,p2);;;;erase;p;r;l;;setenv;to;0)^M

ただし
・結合した寸法の左右の寸法が消えてしまう。
これに関しては対応できません
重なった寸法の有無は判断できませんので削除されてしまいます

使用方法は2つ目のマクロと同じです
lt2021で確認です

  • chibi-tom
  • 2020/05/19 (Tue) 11:55:29
Re: 寸法を合成するマクロ
chibi-tomさん、返信いただきありがとうございます。
neaで指示する方ですと、テストした限りでは100%成功しました。
OSNAPで有効にしている種類が、そこそこ多い状態で使用しておりますので、ご指摘の通りの挙動になったのだと思います。



一つ目の方のマクロをありがたく使わせていただきます。
どうもありがとうございました。
  • なっとん
  • 2020/05/19 (Tue) 13:11:50
Re: 寸法を合成するマクロ
自己満足です

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),id;nod;1本目の寸法補助線の起点を指定^X\setenv;to;1,;p1;$(getvar,lastpoint);id;nod;2本目の寸法補助線の起点を指定^X\setenv;to;2,;p2;$(getvar,lastpoint);;to;3,,,,)$(nth,$(getenv,to),,,,dimlinear;non;$(getenv,p1);non;$(getenv,p2);nea;\draworder;l;;b;matchprop;non;@;l;;setenv;to;4,,,)$(nth,$(getenv,to),,,,,;p3;$(getvar,lastpoint);;to;5,aidimtextmove;;f;non;$(getenv,p1);non;$(getenv,p3);non;$(getenv,p2);;;;setenv;to;6,select;p;r;l;\erase;p;;setenv;to;0)^M

1.マクロ起動
2.1点目の起点を指定
3.2点目の起点を指定
4.寸法線の位置を選択
5.左右に寸法や除外したいオブジェクトが有る場合は選択後R-Clickで決定
(除外するオブジェクトが無い場合はそのままR-Clickで決定)

結局手動で選択する工程があるのでzukki-さんのマクロのほうが確実かな(苦笑)

※2020.05.20変更
なんとなくすっきりと整理しました
※2020.05.27ちょっとだけ変更
  • chibi-tom
  • 2020/05/19 (Tue) 16:22:07
Re: 寸法を合成するマクロ
またまた自己満足です

・結合した寸法の左右の寸法が消えてしまう。
にも対応できたと思います

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),id;nod;1本目の寸法補助線の起点を指定^X\setenv;p1;$M="""$(getvar,lastpoint)""";id;nod;2本目の寸法補助線の起点を指定^X\setenv;p2;$M="""""""$(getvar,lastpoint)""""""";;to;1,,,,,)$(nth,$(getenv,to),,dimlinear;non;$(getenv,p1);non;$(getenv,p2);nea;\setenv;p3;$M="""$(getvar,lastpoint)""";draworder;l;;b;matchprop;non;@;l;;zoom;o;l;;setenv;to;2,,,,)$(nth,$(getenv,to),,,undo;be;line;non;$(getenv,p1);non;$(getenv,p3);;ucs;ob;l;lengthen;de;-0.1;non;0<0;;ucs;ob;l;id;non;0<0;ucs;p;;p;id;non;@;setenv;p1;$M="""$(getvar,lastpoint)""";;to;3,,,)$(nth,$(getenv,to),,,,line;non;$(getenv,p2);non;$(getenv,p3);;ucs;ob;l;lengthen;de;-0.1;non;0<0;;ucs;ob;l;id;non;0<0;ucs;p;;p;id;non;@;setenv;p2;$M="""$(getvar,lastpoint)""";undo;e;u;setenv;to;4,,)$(nth,$(getenv,to),,,,,aidimtextmove;;f;non;$(getenv,p1);non;$(getenv,p3);non;$(getenv,p2);;;;setenv;to;5,)$(nth,$(getenv,to),,,,,,select;p;r;l;;erase;p;;zoom;p;setenv;to;0)^M

1.マクロ起動
2.1点目の起点を指定
3.2点目の起点を指定
4.寸法線の位置を選択
  • chibi-tom
  • 2020/06/18 (Thu) 15:33:10
Re: 寸法を合成するマクロ
chibi-tom様

気づくのが遅くなってしまいすみません、、、

希望通りの動作です!
ありがとうございました!
  • kgw
  • 2020/06/24 (Wed) 12:02:47

返信フォーム






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