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

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

フィールドで面積表示について
AutoCAD2026を使用しています。
「フィールドで面積表示のLISP」は、とても作業が捗って助かってます。
このLISPで、小数点以下切り捨てはできませんでしょうか?
よろしくお願いします。
  • miru
  • 2025/07/03 (Thu) 15:30:26
Re: フィールドで面積表示について
どのLispコードを使用されているのでしょうか。

https://totthi.bbs.fc2.com/?act=reply&tid=16680411
上記にあるLispだとするなら、
(setq fstr ---  );フィールド文字列を作成
の部分を以下に置き換えてください。

(setq fstr (strcat
"\%\<\\AcExpr (trunc("
"\%\<\\AcObjProp Object(\%\<\\_ObjId "
obid "\>\%).Area \\f \"%lu2%pr2\"\>\%"
"*0.000001))\>\%"
);フィールド文字列を作成
  • LUNE
  • 2025/07/04 (Fri) 10:20:35
Re: フィールドで面積表示について
LUNEさま

早速ありがとうございます。
上記のLispコードを使わせてもらってます。
小数点以下はよく考えたら言い間違いでした。すいません。
例えば小数点以下第3位を四捨五入せず切り捨てで、第2位を表示させたいです。
150.258㎡ → 150.25㎡
可能でしょうか?
(今回の結果は、㎡が付きませんでした。150という感じです。)
よろしくお願いします。
  • miru
  • 2025/07/04 (Fri) 13:28:06
Re: フィールドで面積表示について
> 今回の結果は、㎡が付きませんでした。150という感じです。
そうなるコードなので、それが正しい結果です

小数点以下第3位を切り捨てて、第2位まで表示してさらに㎡を付加は可能だとは思いますが、今、手元でテストできないので、月曜以降になります
  • LUNE
  • 2025/07/04 (Fri) 17:49:57
Re: フィールドで面積表示について
同じところを以下に変更してみてください。

(setq fstr (strcat
"\%\<\\AcExpr (trunc("
"\%\<\\AcObjProp Object(\%\<\\_ObjId "
obid "\>\%).Area \\f \"%lu2%pr2\"\>\%"
"*0.0001))
\\f \"%lu2%pr2%ps[,㎡]%ct8[0.01]\"
\>\%"
)
) ;フィールド文字列を作成
  • LUNE
  • 2025/07/07 (Mon) 11:15:47
Re: フィールドで面積表示について
LUNEさま

お返事遅くなりすいません。
休暇に入ってしまい見れませんでした。

ありがとうございます!!
ずっと求めていたものです。
こちらの掲示板ではいろいろなAutoLISPのお世話になってます。
これからもよろしくお願いします。
(自分で勉強しようと思いつつ、とても難しいです。)
  • miru
  • 2025/07/09 (Wed) 09:34:06
Re: フィールドで面積表示について
上記のマクロ、大変便利に使わせてもらってます。
もう一つ教えてください。
小数点以下第4位を切り捨てて第3位表示にしたい場合は、どこを変更すればいいのでしょうか?
pr2をpr3にしたら第3位表示にはなりましたが、末尾に0が表示されるだけでした。
実数は32.4568㎡ → 32.450㎡という感じです。
よろしくお願いします。
  • miru
  • 2025/07/25 (Fri) 10:40:37
Re: フィールドで面積表示について
truncを使って切り捨てているので、切り捨てる最初の桁が小数点第1位になるように調整する必要があります。
(truncは小数点以下を切り捨てる関数)

例えば、123.456789㎡という面積の場合、AutoCAD内ではmm単位なので、オブジェクトの持つ面積の値は123456789です。
m単位とするには、×0.000001する必要があります。

・小数点以下第3位を切り捨てて、第2位まで表示 の場合
 小数点以下第2位を1の位にする→0.000001×100なので、*0.0001した値をtruncする (123456789*0.0001=12345.6789 → 12345)
 100倍したので、変換係数を0.01(1/100)とする  (12345→123.45)
 精度を0.01にする(pr2)

・小数点以下第4位を切り捨てて、第3位表示 の場合
 小数点以下第3位を1の位にする→0.000001×1000なので、*0.001した値をtruncする (123456789*0.001=123456.789 → 123456)
 1000倍したので、変換係数を0.001(1/1000)とする  (123456→123.456)
 精度を0.001にする(pr3)

ということで、以下の通りとなります。

(setq fstr (strcat
"\%\<\\AcExpr (trunc("
"\%\<\\AcObjProp Object(\%\<\\_ObjId "
obid "\>\%).Area \\f \"%lu2%pr2\"\>\%"
"*0.001))
\\f \"%lu2%pr3%ps[,㎡]%ct8[0.001]\"
\>\%"
)
)

 

  • LUNE
  • 2025/07/25 (Fri) 11:25:19
Re: フィールドで面積表示について
詳しい説明までありがとうございます!!
すごく勉強になりました。
他の表示もやってみます。
  • miru
  • 2025/07/25 (Fri) 17:37:45
Re: フィールドで面積表示について
また問題が出てきました。
ポリライン面積値が、123.4500になるはずがCADのシステム上のバグなのか?、たまに123.4499となる時があります。
その場合に切り捨てフィールドを使うと、123.449㎡となってしまいます。
四捨五入のフィールドを使うと、123.450㎡になるのですが切り捨てフィールドでは機能上仕方ないでしょうか?
よろしくお願いします。
  • miru
  • 2025/08/20 (Wed) 16:02:59
Re: フィールドで面積表示について
>ポリライン面積値が、123.4500になるはずがCADのシステム上のバグなのか?、たまに123.4499となる時があります。
なぜ「なるはず」なのでしょうか?その根拠は?
  • LUNE
  • 2025/08/20 (Wed) 16:06:06
Re: フィールドで面積表示について
言葉足らずですみません。
長方形のポリラインで、縦×横を正確な値で書いているのにたまに端数が勝手に出ます。
例えば、2×3で6が5.99999になる事があります。
書き直しても同じ数値になります。
「6.00」になるはずが「5.99」という感じなんですが、説明になってますでしょうか?
  • miru
  • 2025/08/20 (Wed) 17:31:28
Re: フィールドで面積表示について
>長方形のポリラインで、縦×横を正確な値で書いているのにたまに端数が勝手に出ます。
>例えば、2×3で6が5.99999になる事があります。
units(単位管理)で長さの精度を最大にして、その長方形のオブジェクトプロパティで面積を確認してみてください。
  • LUNE
  • 2025/08/21 (Thu) 09:04:02
Re: フィールドで面積表示について
LUNEさま
いつもありがとうございます。
units(単位管理)は精度最大限で、いつも作業しています。
今回の事例です。
精度:0.00000000  尺度単位:ミリメートル
長方形930×2960で、オブジェクトプロパティは「2752799.99999999」になります。
電卓計算だと「2752800」になります。
切り捨てフィールドはそのまま切り捨てるので、「2752799」になってしまうみたいです。
CAD上で正確に書いてるので、AutoCAD側の問題のような気がしてきました。
  • miru
  • 2025/08/21 (Thu) 10:15:30
Re: フィールドで面積表示について
その図形、原点からかなり離れたところにありませんか?
私の環境で(Win11/AutoCAD2024)作図したところ、長方形の左下を原点にして作図したものは、オブジェクトプロパティで面積が2752800.00000000となりますが、例えば413427.01944707,77936.91477676を左下に作図したものは、2752799.99999999となりました。その周りでいくつか作図してみましたが、最後の桁に誤差が出ます。
これらを原点近くに持っていくと、面積がすべて2752800.00000000になりました。

おそらく、浮動小数点の誤差の影響による演算誤差だと思われます。
https://www.autodesk.com/jp/support/technical/article/caas/sfdcarticles/sfdcarticles/kA93g0000000UgB.html
とはいっても、全部を原点近くで作図、というのも無理ですよね・・・
  • LUNE
  • 2025/08/21 (Thu) 10:44:00
Re: フィールドで面積表示について
詳しい検証までありがとうございます!
はい、床面積のポリラインなので0,0から遠く離れてます。
LUNEさんの言う通り、原点から作図したら正確な数値になりました。
実寸は、10倍の大きさだったので9300×29600で書くとまた誤差が出ました。
原点近くで作図は無理ですね・・・。
せっかく作っていただいた切り捨てフィールドが使えないのが本当に残念です。
また四捨五入フィールドを使うことにします。
色々とありがとうございました。
  • miru
  • 2025/08/21 (Thu) 13:19:19 New
Re: フィールドで面積表示について
少ないときのほうが問題だとすると、ある程度の桁でROUNDしてから、TRUNCすればなんとかなるかも・・・
ちょっと考えてみます。
  • LUNE
  • 2025/08/21 (Thu) 17:41:03 New

返信フォーム






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