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

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

座標寸法記入のマクロ作成依頼
お世話になります
IJCAD2019LTを使っていますがAutoCADとの互換性があると聞きましたのでお願い致します

座標寸法記入を使うときに
UCS移動、座標寸法記入、並列寸法記入、UCSを戻す
の順番で使っているのですが、一つにまとめた物が欲しいです

よろしくお願い致します
  • よしかわ
  • 2020/02/26 (Wed) 09:31:12
Re: 座標寸法記入のマクロ作成依頼
IJCADを使用したことはありませんので動かないかもしれません
また、R版に近いと聞いたことがあるのでユーザー変数useri1を使用しました

*^C^C$M=useri1;0;$(nth,$(getvar,useri1),ucs;o;\useri1;1,dimordinate;\\useri1;2,)$(nth,$(getvar,useri1),,,dimbaseline;\;;$M="""$(if,$(getvar,cmdactive),;;ucs;p;^Cuseri1;0,useri1;2)""")^M

1.マクロ起動
2.UCS移動
3.座標寸法記入
4.並列寸法記入(R-ClickまたはEnterで終了)
4を繰り返し

※、R-ClickまたはEnterで終了しないとUCSが移動したままになります、ご了承の上ご使用ください
Escキーで終了してしまった場合は、ucs;p;で手動にて戻してください
  • chibi-tom
  • 2020/02/26 (Wed) 11:47:07
Re: 座標寸法記入のマクロ作成依頼
chibi-tom様
お早い対応ありがとうございます

AutoCAD2009とIJCADで動作の比較をしました所
AutoCADでは理想的な動きでしたが
IJCADでは座標寸法記入(dimordinate)から並列寸法記入(dimbaseline)に移行するのに
右クリックが必要で、並列寸法記入をするたびに右クリックが必要です

この右クリック一回分はどうにもならない物なのでしょうか
IJCADのことで無茶なお願いとは思いますが
よろしくお願い致します
  • よしかわ
  • 2020/02/26 (Wed) 13:51:10
Re: 座標寸法記入のマクロ作成依頼
コマンドの仕様の違いだとは思いますが
どうして右クリックが必要なのかわからないので

想像ですがこんな感じで
*^C^C$M=useri1;0;$(nth,$(getvar,useri1),ucs;o;\useri1;1,dimordinate;\\;useri1;2,)$(nth,$(getvar,useri1),,,dimbaseline;\;;$M="""$(if,$(getvar,cmdactive),;;ucs;p;^Cuseri1;0,useri1;2)""")^M
あるいは
*^C^C$M=useri1;0;$(nth,$(getvar,useri1),ucs;o;\useri1;1,dimordinate;\\useri1;2;,)$(nth,$(getvar,useri1),,,dimbaseline;\;;$M="""$(if,$(getvar,cmdactive),;;ucs;p;^Cuseri1;0,useri1;2)""";)^M
これも考えられるか?
*^C^C$M=useri1;0;$(nth,$(getvar,useri1),ucs;o;\useri1;1,dimordinate;\\useri1;2,dimbaseline;\;;$M="""$(if,$(getvar,cmdactive),;;ucs;p;^Cuseri1;0,useri1;2)""")^M

思いつくのはこんな感じでしょうか

ダメなら
マクロ起動から、一つ以上並列寸法を記入するまでの流れがわかる
コマンドラインをコピペしてみてください

何かわかるかもしれません
  • chibi-tom
  • 2020/02/26 (Wed) 14:25:16
Re: 座標寸法記入のマクロ作成依頼
chibi-tom様

並列寸法を一箇所入力後、終了の流れを4種類試しましたので
コマンドラインを貼り付けます

3個目のマクロを終わらせた後にUCS移動に戻るのでそれが無かったら完璧だと思いました

以下、使用マクロとコマンドラインを順番に貼り付けます



*^C^C$M=useri1;0;$(nth,$(getvar,useri1),ucs;o;\useri1;1,dimordinate;\\useri1;2,)$(nth,$(getvar,useri1),,,dimbaseline;\;;$M="""$(if,$(getvar,cmdactive),;;ucs;p;^Cuseri1;0,useri1;2)""")^M


コマンド:
コマンド:
コマンド: useri1

USERI1 の新しい値を入力<0>: 0

コマンド: ucs

現在UCS の名前:*名前なし*
UCS 原点を指定 または [面(F)/名前の付いた UCS(NA)/オブジェクト(OB)/直前(P)/ビュー(V)/ワールド(W)/X/Y/Z/Z
軸(ZA)] <ワールド>:
o
新しい原点を指定: <0,0,0>:
コマンド: useri1

USERI1 の新しい値を入力<0>: 1

コマンド:
USERI1
USERI1 の新しい値を入力<1>:
コマンド:
コマンド: useri1

USERI1 の新しい値を入力<1>: 0

コマンド: dimordinate

起点の位置を指定:
引出線の終点を指定 または [X座標(X)/Y座標(Y)/マルチ テキスト(M)/寸法値(T)/寸法値角度(A)]:
寸法値 = 0
コマンド: useri1

USERI1 の新しい値を入力<0>: 2

コマンド:
USERI1
USERI1 の新しい値を入力<2>:

コマンド:
コマンド:
コマンド: useri1

USERI1 の新しい値を入力<2>: 0

コマンド: dimbaseline

起点の位置を指定 または [元に戻す(U)/選択(S)] <選択>:
寸法値 = 35
起点の位置を指定 または [元に戻す(U)/選択(S)] <選択>:

基準の寸法を選択:

コマンド: useri1

USERI1 の新しい値を入力<0>: 2

コマンド:
USERI1
USERI1 の新しい値を入力<2>:

コマンド:
コマンド:
コマンド: useri1

USERI1 の新しい値を入力<2>: 0

コマンド: dimbaseline

起点の位置を指定 または [元に戻す(U)/選択(S)] <選択>:

基準の寸法を選択:

コマンド:
DIMBASELINE
起点の位置を指定 または [元に戻す(U)/選択(S)] <選択>:

基準の寸法を選択:

コマンド: ucs

現在UCS の名前:*名前なし*
UCS 原点を指定 または [面(F)/名前の付いた UCS(NA)/オブジェクト(OB)/直前(P)/ビュー(V)/ワールド(W)/X/Y/Z/Z
軸(ZA)] <ワールド>:
p

コマンド:
コマンド: useri1

USERI1 の新しい値を入力<0>: 0

コマンド:
USERI1




*^C^C$M=useri1;0;$(nth,$(getvar,useri1),ucs;o;\useri1;1,dimordinate;\\;useri1;2,)$(nth,$(getvar,useri1),,,dimbaseline;\;;$M="""$(if,$(getvar,cmdactive),;;ucs;p;^Cuseri1;0,useri1;2)""")^M



コマンド:
コマンド:
コマンド: useri1

USERI1 の新しい値を入力<0>: 0

コマンド: ucs

現在UCS の名前:*名前なし*
UCS 原点を指定 または [面(F)/名前の付いた UCS(NA)/オブジェクト(OB)/直前(P)/ビュー(V)/ワールド(W)/X/Y/Z/Z
軸(ZA)] <ワールド>:
o
新しい原点を指定: <0,0,0>:
コマンド: useri1

USERI1 の新しい値を入力<0>: 1

コマンド:
USERI1
USERI1 の新しい値を入力<1>:
コマンド:
コマンド: useri1

USERI1 の新しい値を入力<1>: 0

コマンド: dimordinate

起点の位置を指定:
引出線の終点を指定 または [X座標(X)/Y座標(Y)/マルチ テキスト(M)/寸法値(T)/寸法値角度(A)]:
寸法値 = 0
コマンド:
DIMORDINATE
起点の位置を指定:useri1

無効な点が入力されました。
起点の位置を指定:2

引出線の終点を指定 または [X座標(X)/Y座標(Y)/マルチ テキスト(M)/寸法値(T)/寸法値角度(A)]:

コマンド:
コマンド:
コマンド: useri1

USERI1 の新しい値を入力<0>: 0

コマンド: ucs

現在UCS の名前:*名前なし*
UCS 原点を指定 または [面(F)/名前の付いた UCS(NA)/オブジェクト(OB)/直前(P)/ビュー(V)/ワールド(W)/X/Y/Z/Z
軸(ZA)] <ワールド>:
o
新しい原点を指定: <0,0,0>:
コマンド: useri1

USERI1 の新しい値を入力<0>: 1

コマンド:
USERI1




*^C^C$M=useri1;0;$(nth,$(getvar,useri1),ucs;o;\useri1;1,dimordinate;\\useri1;2;,)$(nth,$(getvar,useri1),,,dimbaseline;\;;$M="""$(if,$(getvar,cmdactive),;;ucs;p;^Cuseri1;0,useri1;2)""";)^M



コマンド:
コマンド:
コマンド: useri1

USERI1 の新しい値を入力<0>: 0

コマンド: ucs

現在UCS の名前:*名前なし*
UCS 原点を指定 または [面(F)/名前の付いた UCS(NA)/オブジェクト(OB)/直前(P)/ビュー(V)/ワールド(W)/X/Y/Z/Z
軸(ZA)] <ワールド>:
o
新しい原点を指定: <0,0,0>:
コマンド: useri1

USERI1 の新しい値を入力<0>: 1

コマンド:
USERI1
USERI1 の新しい値を入力<1>:
コマンド:
コマンド: useri1

USERI1 の新しい値を入力<1>: 0

コマンド: dimordinate

起点の位置を指定:
引出線の終点を指定 または [X座標(X)/Y座標(Y)/マルチ テキスト(M)/寸法値(T)/寸法値角度(A)]:
寸法値 = 0
コマンド: useri1

USERI1 の新しい値を入力<0>: 2

コマンド:
USERI1
USERI1 の新しい値を入力<2>:

コマンド:
コマンド:
コマンド: useri1

USERI1 の新しい値を入力<2>: 0

コマンド: dimbaseline

起点の位置を指定 または [元に戻す(U)/選択(S)] <選択>:
寸法値 = 35
起点の位置を指定 または [元に戻す(U)/選択(S)] <選択>:

基準の寸法を選択:

コマンド: useri1

USERI1 の新しい値を入力<0>: 2

コマンド:
USERI1
USERI1 の新しい値を入力<2>:

コマンド:
コマンド:
コマンド: useri1

USERI1 の新しい値を入力<2>: 0

コマンド: dimbaseline

起点の位置を指定 または [元に戻す(U)/選択(S)] <選択>:

基準の寸法を選択:

コマンド:
DIMBASELINE
起点の位置を指定 または [元に戻す(U)/選択(S)] <選択>:

基準の寸法を選択:

コマンド: ucs

現在UCS の名前:*名前なし*
UCS 原点を指定 または [面(F)/名前の付いた UCS(NA)/オブジェクト(OB)/直前(P)/ビュー(V)/ワールド(W)/X/Y/Z/Z
軸(ZA)] <ワールド>:
p

コマンド:
コマンド: useri1

USERI1 の新しい値を入力<0>: 0

コマンド:
USERI1
USERI1 の新しい値を入力<0>:

コマンド:
コマンド:
コマンド: useri1

USERI1 の新しい値を入力<0>: 0

コマンド: ucs

現在UCS の名前:*名前なし*
UCS 原点を指定 または [面(F)/名前の付いた UCS(NA)/オブジェクト(OB)/直前(P)/ビュー(V)/ワールド(W)/X/Y/Z/Z
軸(ZA)] <ワールド>:
o




*^C^C$M=useri1;0;$(nth,$(getvar,useri1),ucs;o;\useri1;1,dimordinate;\\useri1;2,dimbaseline;\;;$M="""$(if,$(getvar,cmdactive),;;ucs;p;^Cuseri1;0,useri1;2)""")^M



コマンド:
コマンド:
コマンド: useri1

USERI1 の新しい値を入力<0>: 0

コマンド: ucs

現在UCS の名前:*ワールド*
UCS 原点を指定 または [面(F)/名前の付いた UCS(NA)/オブジェクト(OB)/直前(P)/ビュー(V)/ワールド(W)/X/Y/Z/Z
軸(ZA)] <ワールド>:
o
新しい原点を指定: <0,0,0>:
コマンド: useri1

USERI1 の新しい値を入力<0>: 1

コマンド:
USERI1
USERI1 の新しい値を入力<1>:
コマンド:
コマンド: useri1

USERI1 の新しい値を入力<1>: 0

コマンド: dimordinate

起点の位置を指定:
引出線の終点を指定 または [X座標(X)/Y座標(Y)/マルチ テキスト(M)/寸法値(T)/寸法値角度(A)]:
寸法値 = 0
コマンド: useri1

USERI1 の新しい値を入力<0>: 2

コマンド:
USERI1
USERI1 の新しい値を入力<2>:

コマンド:
コマンド:
コマンド: useri1

USERI1 の新しい値を入力<2>: 0

コマンド: dimbaseline

起点の位置を指定 または [元に戻す(U)/選択(S)] <選択>:
寸法値 = 19.04
起点の位置を指定 または [元に戻す(U)/選択(S)] <選択>:

基準の寸法を選択:

コマンド: useri1

USERI1 の新しい値を入力<0>: 2

コマンド:
USERI1
USERI1 の新しい値を入力<2>:

コマンド:
コマンド:
コマンド: useri1

USERI1 の新しい値を入力<2>: 0

コマンド: dimbaseline

起点の位置を指定 または [元に戻す(U)/選択(S)] <選択>:

基準の寸法を選択:

コマンド:
DIMBASELINE
起点の位置を指定 または [元に戻す(U)/選択(S)] <選択>:

基準の寸法を選択:

コマンド: ucs

現在UCS の名前:*名前なし*
UCS 原点を指定 または [面(F)/名前の付いた UCS(NA)/オブジェクト(OB)/直前(P)/ビュー(V)/ワールド(W)/X/Y/Z/Z
軸(ZA)] <ワールド>:
p

コマンド:
コマンド: useri1

USERI1 の新しい値を入力<0>: 0

コマンド:
USERI1
USERI1 の新しい値を入力<0>:

コマンド:
コマンド:
コマンド: useri1

USERI1 の新しい値を入力<0>: 0

コマンド: ucs

現在UCS の名前:*ワールド*
UCS 原点を指定 または [面(F)/名前の付いた UCS(NA)/オブジェクト(OB)/直前(P)/ビュー(V)/ワールド(W)/X/Y/Z/Z
軸(ZA)] <ワールド>:
o



以上になります
よろしくお願い致します
  • よしかわ
  • 2020/02/26 (Wed) 15:23:48
Re: 座標寸法記入のマクロ作成依頼
自信はありませんが
これでどうなりますか?

*^C^C$M=useri1;0;$(nth,$(getvar,useri1),ucs;o;\useri1;1,dimordinate;\\useri1;2;,)$(nth,$(getvar,useri1),,,dimbaseline;\;;$M="""$(if,$(getvar,cmdactive),;;ucs;p;^Cuseri1;0,useri1;2;)""")^M
  • chibi-tom
  • 2020/02/26 (Wed) 15:35:18
Re: 座標寸法記入のマクロ作成依頼
めっちゃシンプルに。

^C^Cucs;o;\dimordinate;\\ucs;p;dimbaseline^M
最近のAutoCADならこれでOKのはず。(寸法の仕様が変わる前のバージョンならNG)

IJCADは色々と違うんだよねぇ。動くなぁ。
 
私は自作マクロを移植しようとして諦めました。(ちょっと無理)
  • Lon
  • 2020/02/26 (Wed) 15:46:06
Re: 座標寸法記入のマクロ作成依頼
chibi-tom様

試した結果ですが、並列寸法を右クリックで終わらせる所まではよかったのですが
最後に
USERI1 の新しい値を入力〈0〉:
と表示されて
0を入力するとUCS移動
1を入力すると座標寸法記入
2を入力すると並列寸法記入
になってしまいます

以下コマンドラインです


コマンド:
コマンド:
コマンド: useri1

USERI1 の新しい値を入力<0>: 0

コマンド: ucs

現在UCS の名前:*名前なし*
UCS 原点を指定 または [面(F)/名前の付いた UCS(NA)/オブジェクト(OB)/直前(P)/ビュー(V)/ワールド(W)/X/Y/Z/Z
軸(ZA)] <ワールド>:
o
新しい原点を指定: <0,0,0>:
コマンド: useri1

USERI1 の新しい値を入力<0>: 1

コマンド:
USERI1
USERI1 の新しい値を入力<1>:
コマンド:
コマンド: useri1

USERI1 の新しい値を入力<1>: 0

コマンド: dimordinate

起点の位置を指定:
引出線の終点を指定 または [X座標(X)/Y座標(Y)/マルチ テキスト(M)/寸法値(T)/寸法値角度(A)]:
寸法値 = 0
コマンド: useri1

USERI1 の新しい値を入力<0>: 2

コマンド:
USERI1
USERI1 の新しい値を入力<2>:

コマンド:
コマンド:
コマンド: useri1

USERI1 の新しい値を入力<2>: 0

コマンド: dimbaseline

起点の位置を指定 または [元に戻す(U)/選択(S)] <選択>:
寸法値 = 35
起点の位置を指定 または [元に戻す(U)/選択(S)] <選択>:

基準の寸法を選択:

コマンド: useri1

USERI1 の新しい値を入力<0>: 2

コマンド:
USERI1
USERI1 の新しい値を入力<2>:

コマンド:
コマンド:
コマンド: useri1

USERI1 の新しい値を入力<2>: 0

コマンド: dimbaseline

起点の位置を指定 または [元に戻す(U)/選択(S)] <選択>:

基準の寸法を選択:

コマンド:
DIMBASELINE
起点の位置を指定 または [元に戻す(U)/選択(S)] <選択>:

基準の寸法を選択:

コマンド: ucs

現在UCS の名前:*名前なし*
UCS 原点を指定 または [面(F)/名前の付いた UCS(NA)/オブジェクト(OB)/直前(P)/ビュー(V)/ワールド(W)/X/Y/Z/Z
軸(ZA)] <ワールド>:
p

コマンド:
コマンド: useri1

USERI1 の新しい値を入力<0>: 0

コマンド:
USERI1
  • よしかわ
  • 2020/02/26 (Wed) 16:03:24
Re: 座標寸法記入のマクロ作成依頼
Lon様

マクロありがとうございます
無事に動きました


chibi-tom様も何度も考えてくださり本当に有難うございました

感謝いたします
  • よしかわ
  • 2020/02/26 (Wed) 16:11:56
Re: 座標寸法記入のマクロ作成依頼
>めっちゃシンプルに。
本当だ!
めちゃくちゃ無駄なことしてたんだなぁ
考えすぎかぁ、ガックリです(苦笑)

IJCADは最後に^Cで終了させることが出来ないみたいですね
  • chibi-tom
  • 2020/02/26 (Wed) 16:20:35
Re: 座標寸法記入のマクロ作成依頼
>^Cで終了させることが出来ない

いや、機能してますよ。

「useri1;1」のところも、もう一度useri1コマンドが発行されてますけど、
ループして冒頭のキャンセルが有るから、useri1コマンドが撤回されてエラーにはなってない。
最後は、^Cが効いて冒頭に戻ることが出来ないから、useri1コマンドで止まる。

と、ここまでは想像できますが、そのあとに数値を入力すると処理が進むことが理解できませんね。
  • Lon
  • 2020/02/26 (Wed) 16:25:13
Re: 座標寸法記入のマクロ作成依頼
>めちゃくちゃ無駄なことしてた
昔のバージョンなら、chibi-tomさんのやり方じゃないと無理だと思います。

今は「並列寸法記入がベースの寸法のプロパティを引き継ぐ」仕様に変わったからできるんです。
そのプロパティにUCS情報まで含まれるとは、今回試すまで知りませんでしたけど。

そして、IJCADの仕様がこれに習っていたのも幸運でした。
  • Lon
  • 2020/02/26 (Wed) 16:32:48
Re: 座標寸法記入のマクロ作成依頼
やっぱ、^Cで終了が機能してないのかな。

「useri1;2」のところも、マクロ中に存在しないエンターが発生してますね。
それを「useri1;2;」とすることで打ち消している。

だったら、最後の「useri1;0」のところでは一時停止して、「useri1;1」のところではそのままループ出来てるのはなぜ?
  • Lon
  • 2020/02/26 (Wed) 17:01:29
Re: 座標寸法記入のマクロ作成依頼
>今回試すまで知りませんでしたけど
気づくことがすごいです

頭が固いもんでUCS戻したのに座標値が引き継ぐことがビミョーに不可解です(泣)
  • chibi-tom
  • 2020/02/26 (Wed) 17:01:45
Re: 座標寸法記入のマクロ作成依頼
UCSも引き継ぐ方が便利だと判断したんでしょうね。
  • Lon
  • 2020/02/26 (Wed) 17:19:05
Re: 座標寸法記入のマクロ作成依頼
>便利だと判断
確かに便利ですね
分かりやすい画像ありがとうございます
  • chibi-tom
  • 2020/02/26 (Wed) 17:29:33

返信フォーム






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