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

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

2点間の勾配表記
はじめまして、autocad LT 2015を使っています。

2点間の勾配表記のマクロを作りたいのですが、うまくいきません
作ってみたマクロは、

^C^C_id;\_setenv;p1;$M=$(getvar,lastpoint);_id;\_setenv;p2;$M="$(getvar,lastpoint)";_setenv;dx;$M=$(-,$(index,0,"$(getenv,p1)"),$(index,0,"$(getenv,p2)"));_setenv;dy;$M=$(-,$(index,1,

"$(getenv,p1)"),$(index,1,"$(getenv,p2)"));_setenv;nk;$M=$(/,"$(getenv,dx)","$(getenv,dy)");-mtext;\_J;_BL;_h;300;@;$m=1:$(rtos,"$(getenv,nk)",2,3);;_EXPLODE;_LAST;^c^c
・変数dx デルタX
・変数dy デルタy
・変数nk 2点間の勾配 dx/dy


DIESEL式の評価の遅らせ方が、よくわかりません。
お忙しい中、恐縮ですがご教授お願いします。
  • watanabe
  • 2015/04/10 (Fri) 15:58:29
Re: 2点間の勾配表記
watanabeさん

DIESEL式の評価の遅らせ方は
こちらを参照ください。

マクロ講座 ■中級 2.DIESEL評価の遅らせ方
http://ameblo.jp/totthi-macro/entry-11064237634.html

で、直してみると

修正1
^C^C_id;\_setenv;p1;$M=$(getvar,lastpoint);_id;\_setenv;p2;$M="$(getvar,lastpoint)";_setenv;dx;$M="""$(-,$(index,0,$(getenv,p1)),$(index,0,$(getenv,p2)));_setenv;dy;$(-,$(index,1,$(getenv,p1)),$(index,1,$(getenv,p2)))""";_setenv;nk;$M="""""""$(/,$(getenv,dx),$(getenv,dy))""""""";-mtext;\_J;_BL;_h;300;@;$m="""""""""""""""1:$(rtos,$(getenv,nk),2,3)""""""""""""""";;_EXPLODE;_LAST;^c^c

こんな感じになりますが

マクロには
最初の「$M=」以降の文字数制限がありますので
なるべく文字数を減らすと

修正2
*^C^C$M=_id;\_setenv;p1;$M=$(getvar,lastpoint);_id;\_setenv;p2;$M="$(getvar,lastpoint)";;dx;$M="""$(-,$(index,0,$(getenv,p1)),$(index,0,$(getenv,p2)));;dy;$(-,$(index,1,$(getenv,p1)),$(index,1,$(getenv,p2)))""";-mtext;\J;BL;h;300;@;$m="""""""1:$(rtos,$(/,$(getenv,dx),$(getenv,dy)),2,3)""""""";;EXPLODE;L;^c^c

こうなりますが
これでも文字数制限で動かないです


その為

♪2点間の勾配表記マクロ
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),id;\setenv;p1;$M="""$(getvar,lastpoint)""";id;\setenv;p2;$M="""""""$(getvar,lastpoint)""""""";;to;1,;dx;$(-,$(index,0,$(getenv,p1)),$(index,0,$(getenv,p2)));;dy;$(-,$(index,1,$(getenv,p1)),$(index,1,$(getenv,p2)));;to;2,)$(nth,$(getenv,to),,,;nk;$(/,$(getenv,dx),$(getenv,dy));-mtext;\_J;_BL;_h;300;@;$m="""1:$(rtos,$(getenv,nk),2,3)""";;EXPLODE;L;id;^C;^Z^x)^M

この様にする必要があります。
お試しください。
  • とってぃ
  • 2015/04/11 (Sat) 09:29:25
Re: 2点間の勾配表記
>最初の「$M=」以降の文字数制限があります
横から失礼します。
ROMしてて勉強になりました、watanabeさんの手順でマクロ組むとどうしても$(++)が出てしまいうまくいきませんでした。

無駄に別のアプローチを考えたのでご参考までに
^C^Cid;始点を指定:^X\ucs;@;;line;@;終点を指定:^X\;$M=-text;@;300;;1:$(rtos,$(/,$(index,1,$(getvar,lastpoint)),$(index,0,$(getvar,lastpoint))),2,3);move;L;;@;\ucs;P;erase;線分を指定消去/RC:終了^XSI^M
  • zukki-
  • 2015/04/11 (Sat) 11:04:12
Re: 2点間の勾配表記
土木の法勾配表記だと思うので、2点間ではなく、
線分やポリラインをクリックして法勾配を記入します。

・線分やポリラインの中心より左側をクリックして下さい。Enterで終了します。

*^C^C_offset;;nea;^X^X【線分左側をクリック/Enterで終了】^X\$M=$(if,$(getvar,cmdactive),;ucs;ob;@;,^Clist;;)id;mid;@;-text;j;bc;non;@0,0;;0;1:"$M=$(rtos,$(/,$(index,0,$(getvar,ucsxdir)),$(index,1,$(getvar,ucsxdir)),$(if,$(>=,0,$(index,1,$(getvar,ucsxdir))),-1,1)),2,1)";ucs;p;

桁数を2桁にする場合は下記の通りです。
「,2,1)";ucs;p;」→「,2,2)";ucs;p;」
  • Den
  • 2015/04/11 (Sat) 12:46:36
Re: 2点間の勾配表記
zukki-さん、Den師匠フォローどもです。 m(_ _)m

watanabeさん
どれでもお好きなのをお使いください♪
  • とってぃ
  • 2015/04/11 (Sat) 13:52:09
Re: 2点間の勾配表記
とってい様、Zukki-様、Den様
感謝、感激です。

自宅には、AUTO-CADが無いので、
明日、さっそく職場で試してみます。

ありがとうございました。

watanabe
  • watanabe
  • 2015/04/12 (Sun) 09:06:50
Re: 2点間の勾配表記
皆様
ありがとうございました。

早速、試してみました。
動きました。
(Enterキーを2回空押したら、最後まで動きます)

ありがとうございました。

watanabe
  • watanabe
  • 2015/04/13 (Mon) 09:33:30
Re: 2点間の勾配表記
すみません、私のはdx/dyではなく反対のdy/dxになってます。
でもDenさんの方が完成度高いので心配ないかな。
  • zukki-
  • 2015/04/13 (Mon) 12:52:02

返信フォーム






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