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

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

無題
いつも見て勉強させていただいています。

最近気になったのですが、
$(nth,$(getenv,to),)構文が文字数の関係なのか$(NTH ??)なるエラーが出てしまいます。
そこで
$(if,$(=,N,$(getenv,to)),)構文に変えてみたら意図通り動作しました。

結構勉強したつもりなのですが、nthは","を数えるの面倒で間違えたりします。
私にはif構文の方が分かりやすいくて可読性があがります、しかし$(=,N,)のぶんだけ文字数が増えてしまいます。
他にnthに出来て、ifに出来ないことはあるのでしょうか。
  • zukki-
  • 2016/04/01 (Fri) 11:16:38
Re: 無題
どっちも同じじゃないかな?
ifは選択肢が0と1の二つ。
nthは選択肢が0~6の七つ。
だと思って使ってます。
  • Lon
  • 2016/04/02 (Sat) 10:27:01
Re: 無題
Lonさんがおっしゃるように
ifは0か1
nthは0~6まで
なので、それを超える場合は使えません。

また、nth構文内でも文字数制限があります。

$(nth,$(getenv,to),00000,11111)

上記の様な状態で、00000か11111部分が長すぎる場合は

$(nth,$(getenv,to),00000,)$(nth,$(getenv,to),,11111)

この様にしてみると動く場合があります。
それでも構文内が長い場合は動かないので
構文を分けて

$(nth,$(getenv,to),00000,,)$(nth,$(getenv,to),,11111,)$(nth,$(getenv,to),,,22222)

増やすしかないかなと。
  • とってぃ
  • 2016/04/04 (Mon) 08:13:21
Re: 無題
nthを勘違いしいました。とってぃさんの3.「nth」マクロ検証にも書いてありました。

$M=$(nth,$(getenv,to),setenv;to;0)$(nth,$(getenv,to),,setenv;to;1)$(nth,$(getenv,to),,,setenv;to;2)$(nth,$(getenv,to),,,,setenv;to;3)^Z
を試したところ
to=0の時
$M= 出力: "setenv^Jto^J0^Z"
to=1の時
$M= 出力: " $(NTH,??) setenv^Jto^J1^Z"
to=2の時
$M= 出力: " $(NTH,??) $(NTH,??) setenv^Jto^J2^Z"
to=3の時
$M= 出力: " $(NTH,??) $(NTH,??) $(NTH,??) setenv^Jto^J3^Z"
to=4の時
$M= 出力: " $(NTH,??) $(NTH,??) $(NTH,??) $(NTH,??) ^Z"

となって、$(nth,which,)のwhichのコンマのところをきちんと評価しているということに気づきました。
nthはdieselの後のコンマを揃えないといけないことが分かりました。てきとーに付けてました。。。


ちなみに$M=$(if,$(getenv,to),iii)^Zを試すと
to=0の時
$M= 出力: "^Z"
となりコンマがなくても意図通り動作しました。

お騒がせました。
  • zukki-
  • 2016/04/06 (Wed) 15:35:04
Re: 無題
dieselの文字数について調べてみました。
^C^C$M=$(nth,0,000...230個)^Z  ○
^C^C$M=$(nth,0,000...230個,)^Z  ×
^C^C$M=$(nth,1,,111...230個)^Z  ×
^C^C$M=$(nth,1,,111...229個)^Z  ○
^C^C$M=$(nth,2,,,222...228個)^Z  ○
^C^C$M=$(if,1,111...231個)^Z   ○

$()の括弧の中が関数名含めて236文字なら大丈夫のようでした。
nthの場合、繰り返しが多くなるとコンマを多く付けなければいけないのでその分使える文字数が少なくなるようです。
  • zukki-
  • 2016/04/22 (Fri) 12:40:05
Re: 無題
出力文字数の方は
^C^C$M=$(nth,0,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)$(nth,0,11111)^Z
は通りました。

出力文字数で235文字まで見たいです。
  • zukki-
  • 2016/04/22 (Fri) 12:44:33

返信フォーム






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