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

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

$(nth,$(getenv,to)・・・)に関して
Autocad LT 2016を使用しています。
$(nth,$(getenv,to)・・・)を使用すると、8つに分岐させることができますが、それ以上分岐させようとしたところ、*^C^C$M=setenv;toa;0;;tob;0;;toc;0;;tod;0;;abc;0;$(nth,$(getenv,toa),$(if,$(<,$(getenv,abc),1),;toa;0;~~~setenv;toa;1,))$(nth,$(getenv,toa),,toa;0;~~~)という形でtoの箇所をtoa、yob、tocと分けてあげることで、9分岐以上にさせているのですが、どうしても初めの部分に構文を入れられない&複雑になってしまいます。
簡単に9分岐以上させる方法はありますでしょうか?
今のところ、上記方法で30分岐ぐらいさせて使用しています。
  • ken
  • MAIL
  • 2024/02/21 (Wed) 14:38:51
Re: $(nth,$(getenv,to)・・・)に関して
自作したマクロ例でいうと下記のような感じです。
setenvのabcの値を一回一回変えないといけないので、文字数をくってしまいます。

*^C^C$M=setenv;toa;0;;tob;0;;toc;0;;tod;0;;abc;0;$(nth,$(getenv,toa),$(if,$(<,$(getenv,abc),1),;sw;0;;画層1;$(getvar,clayer);;画層2;$(getvar,clayer);;abc;0;;st;長さ寸法記入;;toa;1,))$(nth,$(getenv,toa),,toa;0;;HV;0;CANNOSCALE;1:$(getenv,注釈尺度);$(nth,$(getenv,sw),ray,ray,ray,ray);^X始点を指定:<$(getenv,st)>--切替(R)--^X\$M="""$(if,$(getvar,cmdactive),;setenv;toa;3,setenv;toa;2)""")$(nth,$(getenv,toa),,,;sw;$(if,$(=,$(getenv,sw),2),0,$(+,$(getenv,sw),1));;st;$M="""$(nth,$(getenv,sw),長さ,平行,のど厚,直列)寸法記入;;toa;1""")$(nth,$(getenv,toa),,,,p1;$(getvar,lastpoint);;toa;4)$(nth,$(getenv,toa),,,,,;toa;0;$(nth,$(getenv,sw),;abc;1;;tob;1,ortho;of;dimaligned;@;\\chprop;L;;P;LA;Dimension;;setenv;toa;1,ortho;of;ucs;$(getenv,p1);\;dimlinear;0;\\ucs;w;chprop;L;;P;LA;Dimension;;setenv;toa;1))$(nth,$(getenv,toa),,,,,,toa;0;chprop;L;;P;LA;Dimension;;ray;繰り返し(L)/切替(R)^X\$M="""$(if,$(getvar,cmdactive),;setenv;toa;3,setenv;toa;6)""")$(nth,$(getenv,toa),,,,,,,;toa;0;ray;直列寸法(L)/切替(R)^X\$M="""$(if,$(getvar,cmdactive),;dimcontinue;@;;;chprop;L;;P;LA;Dimension;;setenv;toa;6,setenv;sw;0;;toa;1)""")$(nth,$(getenv,tob),,;toa;0;;tob;0;;abc;0;ortho;on;dimlinear;@;次の点を指定(L)/切替(R)^X\$M="""$(if,$(getvar,cmdactive),;setenv;p2;$(getvar,lastpoint);;abc;1;;toc;3,setenv;abc;1;;tob;2)""")$(nth,$(getenv,tob),,,tob;0;;abc;0;ortho;on;line;$(getenv,p1);per;中心線部2点目(1点目の垂直点)を選択^X\;setenv;abc;1;;tob;3)$(nth,$(getenv,tob),,,,;tob;0;;abc;0;;p2;$(getvar,lastpoint);;abc;1;;tob;4)$(nth,$(getenv,tob),,,,,x1;$(index,0,$(getenv,p1));;y1;$(index,1,$(getenv,p1));;x2;$(index,0,$(getenv,p2));;y2;$(index,1,$(getenv,p2));;abc;1;;tob;5)$(nth,$(getenv,tob),,,,,,;abc;1;dist;$(getenv,p1);$(getenv,p2);setenv;$(if,$(=,$(getenv,y1),$(getenv,y2)),d1;0;;tob;6,d1;90;;tob;7))$(nth,$(getenv,tob),,,,,,,abc;1;;$(if,$(<,$(getenv,x1),$(getenv,x2)),d2;0;;toc;1,d2;180;;toc;1))$(nth,$(getenv,tob),,,,,,,,;abc;1;;$(if,$(<,$(getenv,y1),$(getenv,y2)),d2;0;;toc;1,d2;180;;toc;1))$(nth,$(getenv,toc),,;toc;0;;abc;0;ucs;$(getenv,p1);5<$(getenv,d1);;erase;L;;dimlinear;0","0;$(*,$(getvar,distance),2)<$(getenv,d2);\chprop;L;;P;LA;Dimension;;ucs;w;setenv;abc;1;;toc;2)$(nth,$(getenv,toc),,,toc;0;;abc;0;select;L;;dimoverride;dimblk1;_open30;dimsd2;on;dimsd1;off;dimse2;on;dimse1;off;;p;;setenv;toa;1)$(nth,$(getenv,toc),,,,;toc;0;;abc;0;$(if,$(eq,$(getenv,画層1),Dimension),-layer;s;0;;setenv;abc;1;;toc;5,;abc;1;;toc;4))$(nth,$(getenv,toc),,,,,toc;0;;abc;0;$(if,$(eq,$(getenv,画層1),Revision),-layer;s;0;;,)setenv;abc;1;;toc;5)$(nth,$(getenv,toc),,,,,,;toc;0;;abc;0;dimlinear;$(getenv,p1);$(getenv,p2);寸法線の位置を決定(L)/垂直寸法に固定(R)^X\setenv;abc;1;;toc;6)$(nth,$(getenv,toc),,,,,,,toc;0;;abc;0;;画層1;$(getvar,clayer);dimcontinue;L;;$M="""$(if,$(getvar,cmdactive),;layiso;L;;layon;setenv;abc;1;;toc;7,setenv;abc;1;;tod;2)""")$(nth,$(getenv,toc),,,,,,,,;toc;0;;abc;0;$(if,$(eq,$(getvar,clayer),Dimension),;abc;1;;tod;2,;abc;1;;tod;1))$(nth,$(getenv,tod),,;tod;0;;abc;0;$(if,$(eq,$(getvar,clayer),Revision),;abc;1;;tod;2,chprop;L;;P;LA;Dimension;;-layer;s;$(getenv,画層2);;setenv;toa;0))$(nth,$(getenv,tod),,,tod;0;;abc;0;-layer;s;$(getenv,画層1);;setenv;abc;1;;tod;$(if,$(=,$(getenv,HV),0),3,4))$(nth,$(getenv,tod),,,,;tod;0;;abc;0;dimlinear;$(getenv,p1);$(getenv,p2);v;寸法線の位置を決定(L)/水平寸法に固定(R)^X\setenv;HV;1;;abc;1;;toc;6)$(nth,$(getenv,tod),,,,,tod;0;;abc;0;dimlinear;$(getenv,p1);$(getenv,p2);h;寸法線の位置を決定(L)/垂直寸法に固定(R)^X\setenv;HV;0;;abc;1;;toc;6)^M
  • ken
  • 2024/02/21 (Wed) 14:58:26
Re: $(nth,$(getenv,to)・・・)に関して
nthを使わずにifで分岐している例が有ります。

例えばこのマクロでは15?分岐しています。
https://totthi.bbs.fc2.com/?act=reply&tid=16400097#23434798
  • ぱんじ
  • 2024/02/21 (Wed) 16:45:41
Re: $(nth,$(getenv,to)・・・)に関して
ありがとうございます。
なるほど、ifでの分岐は考え付きませんでした。
だいぶ文字数を節約できそうですね。
  • ken
  • 2024/02/21 (Wed) 19:08:39

返信フォーム






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