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

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

一発合計長さ計測
お世話になります

一発合計長さ計測ですが、最近2019に変えたところ上手く動作しません
以前は2005で使用させて頂いてました
マクロは掲示板『LT2017で138.一発合計長さ計測』のものを使用して動作はしますが
余分に長さが加算されてしまします
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),;cv;$(getenv,CreateViewports);select;\copybase;non;0<0;p;;setenv;CreateViewports;0;-layout;n;KDIST;;s;KDIST;pasteclip;non;0<0;zoom;e;setenv;sw;0;;to;1,;to;3;select;l;;lengthen;l;;;erase;l;;setenv;to;2,,)$(nth,$(getenv,to),,,;pe;$(if,$(getenv,sw),$(+,$(getvar,perimeter),$(getenv,pe)),$(getvar,perimeter));;sw;1;;to;1,-layout;s;Model;;d;KDIST;setenv;CreateViewports;$(getenv,cv);^C;^Z^X【合計:$(getenv,pe)】^X)^M

たとえば、2本の線2000と3000を足すと【合計:7000】となります

コマンドラインは以下の通りです
コマンド: setenv
変数名を入力: to
値 <0>: 0

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

コマンド:
コマンド: select

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

オブジェクトを選択:

コマンド: copybase

基点を指定: non
0<0

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

オブジェクトを選択:

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

コマンド:
コマンド: -layout

レイアウトのオプションを入力 [複写(C)/削除(D)/新規作成(N)/テンプレート(T)/名前変更(R)/名前を付けて保存(SA)/設定(S)/一覧(?)] <設定>: n

新しいレイアウトの名前を入力 <レイアウト2>: KDIST

コマンド:
-LAYOUT

レイアウトのオプションを入力 [複写(C)/削除(D)/新規作成(N)/テンプレート(T)/名前変更(R)/名前を付けて保存(SA)/設定(S)/一覧(?)] <設定>: s

現在のレイアウトにするレイアウトを選択 <レイアウト1>: KDIST
レイアウトを再作図中。
モデルを再作図中 - ビューポートをキャッシュに格納中。

コマンド: pasteclip
重複したブロック定義 _OPEN30 は無視されます。
重複したブロック定義 _Dot は無視されます。
[ROMANT] は [bigfont.shx] により置き換え。
[ROMANT] は [bigfont.shx] により置き換え。
[txt,bigfont] は [simplex.shx] により置き換え。
挿入点を指定: non
0<0

コマンド: zoom

窓のコーナーを指定、表示倍率を入力(nX または nXP) または
[図面全体(A)/中心点(C)/ダイナミック(D)/オブジェクト範囲(E)/前画面(P)/倍率(S)/窓(W)/選択オブジェクト(O)] <リアル タイム>: e
レイアウトを再作図中。

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

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

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

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

コマンド:
コマンド: select

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

オブジェクトを選択:

コマンド: lengthen

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

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

コマンド:
LENGTHEN

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


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

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

コマンド: erase

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

オブジェクトを選択:

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

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

コマンド:
コマンド:
SETENV
変数名を入力: pe
値 <7000>: 3000

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

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

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

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

コマンド:
コマンド: select

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

オブジェクトを選択:

コマンド: lengthen

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

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

コマンド:
LENGTHEN

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


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

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

コマンド: erase

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

オブジェクトを選択:

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

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

コマンド:
コマンド:
SETENV
変数名を入力: pe
値 <3000>: 5000

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

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

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

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

コマンド:
コマンド: select

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

オブジェクトを選択:

コマンド: lengthen

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

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

コマンド:
LENGTHEN

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


このオブジェクトは長さの定義を持ちません。
計測するオブジェクトを選択 または [増減(DE)/比率(P)/全体(T)/ダイナミック(DY)] <ダイナミック(DY)>:

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

コマンド: erase

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

オブジェクトを選択:

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

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

コマンド:
コマンド:
SETENV
変数名を入力: pe
値 <5000>: 7000

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

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

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

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

コマンド:
コマンド: select

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

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

コマンド:
コマンド: -layout

レイアウトのオプションを入力 [複写(C)/削除(D)/新規作成(N)/テンプレート(T)/名前変更(R)/名前を付けて保存(SA)/設定(S)/一覧(?)] <設定>: s

現在のレイアウトにするレイアウトを選択 <KDIST>: Model
キャッシュに格納されているビューポートを呼び出しています.

コマンド:
-LAYOUT

レイアウトのオプションを入力 [複写(C)/削除(D)/新規作成(N)/テンプレート(T)/名前変更(R)/名前を付けて保存(SA)/設定(S)/一覧(?)] <設定>: d

削除するレイアウトの名前を入力 <KDIST>: KDIST
モデルを再作図中 - ビューポートをキャッシュに格納中。
レイアウト "KDIST" は削除されました。

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

コマンド:
コマンド:
コマンド:
SETENV
変数名を入力: *削除*
【合計:7000】*削除*
【合計:7000】

何卒宜しくお願い致します



  • bks18
  • 2018/05/02 (Wed) 12:04:18
Re: 一発合計長さ計測
今までのバージョンでは
ペーパー空間ビューポートを選択すると、マクロ上その後の構文がキャンセルされていましたが
マクロの流れを見ると、2019ではそのまま選択状態となってるっぽいので
少し修正してみました。

お試しください。


♪一発合計長さ計測 Ver.2019 試作
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),;cv;$(getenv,CreateViewports);select;\copybase;non;0<0;p;;setenv;CreateViewports;0;-layout;n;KDIST;;s;KDIST;pasteclip;non;0<0;zoom;e;setenv;sw;0;;to;1,,,)$(nth,$(getenv,to),,;to;3;chprop;l;;$M="""$(if,$(getvar,cmdactive),;lengthen;dy;;;l;;;erase;l;;setenv;to;2,id;)""",,)$(nth,$(getenv,to),,,;pe;$(if,$(getenv,sw),$(+,$(getvar,perimeter),$(getenv,pe)),$(getvar,perimeter));;sw;1;;to;1,-layout;s;Model;;d;KDIST;setenv;CreateViewports;$(getenv,cv);^C;^Z^X【合計:$(getenv,pe)】^X)^M

2019動作未確認
  • とってぃ
  • 2018/05/02 (Wed) 14:08:32
Re: 一発合計長さ計測
早速対応ありがとうございます

使用してみましたが、2000と3000の線と足すとやはり最後に1本余分に加算されてしまいます
他のPCでも試したところ問題なく動作しています
私のCADが変な動きをします。
10年ほど前に作って頂いたマクロもそうでしたので何か変な設定でもしてしるのでしょうか?
ちなみにコマンドラインは以下の通りです

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

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

コマンド:
コマンド: select

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

オブジェクトを選択:

コマンド: copybase

基点を指定: non
0<0

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

オブジェクトを選択:

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

コマンド:
コマンド: -layout

レイアウトのオプションを入力 [複写(C)/削除(D)/新規作成(N)/テンプレート(T)/名前変更(R)/名前を付けて保存(SA)/設定(S)/一覧(?)] <設定>: n

新しいレイアウトの名前を入力 <レイアウト2>: KDIST

コマンド:
-LAYOUT

レイアウトのオプションを入力 [複写(C)/削除(D)/新規作成(N)/テンプレート(T)/名前変更(R)/名前を付けて保存(SA)/設定(S)/一覧(?)] <設定>: s

現在のレイアウトにするレイアウトを選択 <レイアウト1>: KDIST
レイアウトを再作図中。
モデルを再作図中 - ビューポートをキャッシュに格納中。

コマンド: pasteclip
重複したブロック定義 _ORIGIN は無視されます。
[ROMANT] は [bigfont.shx] により置き換え。
[ROMANT] は [bigfont.shx] により置き換え。
挿入点を指定: non
0<0

コマンド: zoom

窓のコーナーを指定、表示倍率を入力(nX または nXP) または
[図面全体(A)/中心点(C)/ダイナミック(D)/オブジェクト範囲(E)/前画面(P)/倍率(S)/窓(W)/選択オブジェクト(O)] <リアル タイム>: e
レイアウトを再作図中。

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

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

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

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

コマンド:
コマンド: chprop

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

オブジェクトを選択:

変更するプロパティを入力 [色(C)/画層(LA)/線種(LT)/線種尺度(S)/線の太さ(LW)/厚さ(T)/透過性(TR)/マテリアル(M)/異尺度対応(A)]:

コマンド: lengthen

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

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

コマンド:
LENGTHEN

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


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

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

コマンド: erase

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

オブジェクトを選択:

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

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

コマンド:
コマンド:
SETENV
変数名を入力: pe
値 <7000>: 3000

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

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

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

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

コマンド:
コマンド: chprop

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

オブジェクトを選択:

変更するプロパティを入力 [色(C)/画層(LA)/線種(LT)/線種尺度(S)/線の太さ(LW)/厚さ(T)/透過性(TR)/マテリアル(M)/異尺度対応(A)]:

コマンド: lengthen

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

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

コマンド:
LENGTHEN

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


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

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

コマンド: erase

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

オブジェクトを選択:

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

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

コマンド:
コマンド:
SETENV
変数名を入力: pe
値 <3000>: 5000

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

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

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

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

コマンド:
コマンド: chprop

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

オブジェクトを選択:

変更するプロパティを入力 [色(C)/画層(LA)/線種(LT)/線種尺度(S)/線の太さ(LW)/厚さ(T)/透過性(TR)/マテリアル(M)/異尺度対応(A)]:

コマンド: lengthen

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

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

コマンド:
LENGTHEN

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


このオブジェクトは長さの定義を持ちません。
計測するオブジェクトを選択 または [増減(DE)/比率(P)/全体(T)/ダイナミック(DY)] <ダイナミック(DY)>:

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

コマンド: erase

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

オブジェクトを選択:

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

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

コマンド:
コマンド:
SETENV
変数名を入力: pe
値 <5000>: 7000

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

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

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

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

コマンド:
コマンド: chprop

オブジェクトを選択: l

オブジェクトはペーパー空間ビューポートです。
認識された数: 1
1 個はペーパー空間ビューポートです。

オブジェクトを選択:

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

コマンド:
コマンド: -layout

レイアウトのオプションを入力 [複写(C)/削除(D)/新規作成(N)/テンプレート(T)/名前変更(R)/名前を付けて保存(SA)/設定(S)/一覧(?)] <設定>: s

現在のレイアウトにするレイアウトを選択 <KDIST>: Model
キャッシュに格納されているビューポートを呼び出しています.

コマンド:
-LAYOUT

レイアウトのオプションを入力 [複写(C)/削除(D)/新規作成(N)/テンプレート(T)/名前変更(R)/名前を付けて保存(SA)/設定(S)/一覧(?)] <設定>: d

削除するレイアウトの名前を入力 <KDIST>: KDIST
モデルを再作図中 - ビューポートをキャッシュに格納中。
レイアウト "KDIST" は削除されました。

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

コマンド:
コマンド:
コマンド:
SETENV
変数名を入力: *削除*
【合計:7000】*削除*
【合計:7000】

最後に2000余分に加算されてしまいます
  • bks18
  • 2018/05/07 (Mon) 14:23:16
Re: 一発合計長さ計測
>他のPCでも試したところ問題なく動作しています。
他のPCのCADも2019でしょうか?

今夏にのマクロの流れも、前回同様ですねぇ
通常最後に余計なオブジェクトを選択しても
---------------------------------------------
コマンド: chprop

オブジェクトを選択: l

オブジェクトはペーパー空間ビューポートです。
認識された数: 1
1 個はペーパー空間ビューポートです。
---------------------------------------------
上記は2013での動作ですが、最後の部分でこのようになり
次のlengthenコマンドが弾かれるはずなのですが・・・


ちなみにオプションの表示タブの左下にある
「レイアウトの要素」の
□新規レイアウトにビューポートを作成
にチェックが入っていますか?

  • とってぃ
  • 2018/05/07 (Mon) 14:59:27
Re: 一発合計長さ計測
CreateViewportsを使わない方法を考えてみました。
2019では試してませんが、動くと思われます。多分。

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),select;\copybase;non;0<0;p;;-layout;n;KDIST;;s;KDIST;point;non;$(getvar,viewctr);ERASE;ALL;;pasteclip;non;0<0;zoom;e;setenv;sw;0;;to;1,;to;3;select;l;;lengthen;dy;;;l;;;erase;l;;setenv;to;2,,)$(nth,$(getenv,to),,,;pe;$(if,$(getenv,sw),$(+,$(getvar,perimeter),$(getenv,pe)),$(getvar,perimeter));;sw;1;;to;1,-layout;s;Model;;d;KDIST;^Csetenv;^Z^X【合計:$(getenv,pe)】^X)^M
  • Lon
  • 2018/05/07 (Mon) 22:26:18
Re: 一発合計長さ計測
対応ありがとうございます

問題なく動作しました
他のPCは2018でした
そこの差で誤作動を起こすのでしょうか?

誠にありがとうございます

また何かありましたら、とってぃさん Lonさん宜しくお願致します
  • bks18
  • 2018/05/09 (Wed) 11:16:26

返信フォーム






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