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

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

矢印のみの寸法線
はじめまして。

AutoCAD LT 2014 にて最近マクロに手を出し始めたのですが
なかなかうまくいかず、色々調べているうちにここにたどり着きました。

作りたいマクロはごく単純なものなのですが
Eval: $(++)
Err: $(++)??
この謎が解けず爆発寸前に陥っております。

これはどういったエラーなんでしょうか?
おそらくこのエラーのせいだと思いますが
最後の方のマクロが正常に動きません(途中で切れたような感じ)
文字数制限なのでしょうか。。

まだ作成途中な上に記述も幼稚で、とても人様に見せられる状態ではありませんが
現状、うまくいっていないマクロを貼りつけておきます。。
診断よろしくお願いします。
^C^C_setenv;p2;0;_setenv;p3;0;_dimaligned;\\@;_setenv;p2;$M=$(getvar,LASTPOINT);_dimoverride;dimclrd;Cyan;;l;;_cmddia;0;_dim1;newtext; ;p;;cmddia;1;_id;\"$M=_setenv;p3;$(getvar,LASTPOINT)";"""$M=$(nth,$(=,$(getenv,p2),$(getenv,p3)),_dimaligned;@;$(getenv,p2);@;",")"""-insert;Detail;\1;1;0;_explode;l;

最終的に作りたいマクロは以下の通りです。
---------------------------------
2点を指定して補助線のない矢印だけの寸法線を引く
(先後問わず寸法値は表示なし、色も変えたい)

3点目の指定がある時は、さらに矢印だけの寸法線を繋ぎ
ひっついた点の矢印を無しにして、折れ曲がった矢印にする
3点目の指定なしでENTERキーが押下された時は
両矢印のままにしておく

Detailというファイル名のブロックを挿入

以上です。

  • 頭が爆発
  • 2016/05/19 (Thu) 17:48:09
Re: 矢印のみの寸法線
文字数制限と自分で書いてから、もしやと思い
マクロの手順を入れ替えることで少し改善しました。

最初に出てきた$M=のあとから末尾までの文字数に
制限があるのですね。
まだマクロに追記が必要な状態ですので
少し改善したところで見直しですねw

一応、手順を入れ替えたマクロを恥ずかしながら
貼り付けておきます。

^C^C_setenv;p2;0;_setenv;p3;0;_dimaligned;\\@;_dimoverride;dimclrd;Cyan;;l;;_cmddia;0;_dim1;newtext; ;p;;cmddia;1;_setenv;p2;$M=$(getvar,LASTPOINT);_id;\"$M=_setenv;p3;$(getvar,LASTPOINT)";"""$M=$(nth,$(=,$(getenv,p2),$(getenv,p3)),_dimaligned;@;$(getenv,p2);@;",")"""-insert;Detail;\1;1;0;_explode;l;

お騒がせしました。もう少し勉強してみます。
  • 頭が爆発
  • 2016/05/19 (Thu) 17:56:50
Re: 矢印のみの寸法線
とりあえず作ってみたですたい。
*^C^C_$M=setenv;to;0;$(nth,$(getenv,to),dimaligned;\\T; ;non;@;dim1;override;dimclrd;Cyan;dimse1;on;dimse2;on;dimgap;0;;l;;setenv;to;1,,,)$(nth,$(getenv,to),,;p2;$(getvar,lastpoint);ray;\$M="""$(if,$(getvar,cmdactive),;dim1;override;dimsah;on;dimblk2;_none;;l;;setenv;to;2,setenv;to;3)""",,)$(nth,$(getenv,to),,,dimaligned;non;@;non;$(getenv,p2);T; ;non;@;dim1;override;dimsah;on;dimblk2;_none;dimclrd;Cyan;dimse1;on;dimse2;on;dimgap;0;;l;;setenv;to;3,)$(nth,$(getenv,to),,,,-insert;Detail;\1;1;0;_explode;l;^Cid;)^M
  • Lon
  • 2016/05/19 (Thu) 19:03:16
Re: 矢印のみの寸法線
ありがとうございます!!
早速試してみたところ完璧にイメージ通りの
動作でした!!

1時間ほどでできてしまうなんて・・・w

今から参考マクロを解析して勉強していきますが
1つ教えてください。
私のマクロはどうして文字数制限になってしまっていたのでしょうか?

よろしくお願いします。
  • 頭が爆発
  • 2016/05/20 (Fri) 08:22:45
Re: 矢印のみの寸法線
>私のマクロはどうして文字数制限になってしまっていたのでしょうか?

それは文字数が多いから・・・ww

じゃ、判んないですよね。

私のマクロの方が文字数は多いですもんね。
でもね。マクロを良く見ると4つの段落に分かれているのですよ。

①*^C^C_$M=setenv;to;0;$(nth,$(getenv,to),dimaligned;\\T; ;non;@;dim1;override;dimclrd;Cyan;dimse1;on;dimse2;on;dimgap;0;;l;;setenv;to;1,,,)
②$(nth,$(getenv,to),,;p2;$(getvar,lastpoint);ray;\$M="""$(if,$(getvar,cmdactive),;dim1;override;dimsah;on;dimblk2;_none;;l;;setenv;to;2,setenv;to;3)""",,)
③$(nth,$(getenv,to),,,dimaligned;non;@;non;$(getenv,p2);T; ;non;@;dim1;override;dimsah;on;dimblk2;_none;dimclrd;Cyan;dimse1;on;dimse2;on;dimgap;0;;l;;setenv;to;3,)
④$(nth,$(getenv,to),,,,-insert;Detail;\1;1;0;_explode;l;^Cid;)^M

そして、1段落当たりの文字数はそんなに多くないでしょ?
そういうコトです。

文字数制限に引っ掛かりそうなときは段落を分けちゃえばいいんです。
って、ちょっと高度な事なのかな?


作業手順をそのまま順に書き出しただけだから、そんなに難しくはないですよ。
rayコマンドをダミーで使って、2点指示と3点指示の操作を分岐をさせているのが理解できたら解析完了ですね。
  • Lon
  • 2016/05/20 (Fri) 19:12:06
Re: 矢印のみの寸法線
返信ありがとうございます。

>rayコマンドをダミーで使って、2点指示と3点指示の操作を分岐をさせているのが理解できたら解析完了ですね。

特級は怖くて勉強せずにとりかかってしまいましたが、参考マクロを解析しているうちに
結局、特級.6にたどりつき勉強することができました。
急がばなんとかってやつでした。

nthで処理を分けることで評価された時の文字数が減るってことなんですね。
1段落ごとに数回に分けて評価させているというか、、、
そういう認識で解析完了としましたw

ありがとうございました。
  • 頭が爆発
  • 2016/05/21 (Sat) 08:31:01
Re: 矢印のみの寸法線
蛇足ですがデバック技法として

システム変数menuechoを8にする
マクロの最後を^Zにする
わかりにくいところの;を\にする

などするとよりわかると思います。
  • zukki-
  • 2016/05/21 (Sat) 11:00:05
Re: 矢印のみの寸法線
ありがとうございます。

今まで"MACROTRACE"だけでデバッグしていたので
効率があがりそうです。

menuechoで表示される大量の^Jが笑顔に見えてきましたw
  • 頭が爆発
  • 2016/05/21 (Sat) 11:23:33

返信フォーム






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