件名: [JacConvert] DXF/DWG読込み時の小数点以下桁数
投稿日: 2007年7月24日 13:20 JST
投稿者:
いさた です。
JacConvert ver 2.84を使わせていただいています。
DXF/DWG読込み時の、小数点以下桁数の設定ですが、ドロップダウンリストで設定できる桁数が、
DXFは0~6、DWGは0~12桁になっています。
DXF/DWGのファイル仕様がよくわかりませんが、これらは小数以下16桁ぐらいまで精度があるのでしょうか。
桁数設定は、数字を直接入力できるので、運用上は問題は無いかと思いますが、できればファイルの精度の上限まで選択できる方が良いかと思います。
また、DXFの小数以下桁数を直接入力した場合、JacConvertを終了するとその値が保持されないようで、
6桁に戻っています。DWGの設定は保持されています。
以上、ご検討いただけると幸いです。
書き込み: [JacConvert] DXF/DWG読込み時の小数点以下桁数
投稿日: 2007年7月24日 16:25 JST
投稿者: ゲストユーザー
DXFの仕様としては、精度の指定は、0~16 まで指定可能で、
AutoCADで特別指定しない場合の標準値は、6 だったと思います。
DWGはバイナリデータですので精度の指定というのはありません。
8バイト浮動小数点なので、有効桁数15固定です。
JacConvertは、DWGを直接扱うのではなく、DCONVERTをDXFで経由しますので、精度の指定があるのだと思います。
書き込み時の精度の問題であれば別ですが
読み込み時の精度というのは結局、誤差データをカットする、という意味合いではないかと思われます。例えば、JWCデータを扱う場合、JWCデータの座標値は単精度、つまり有効桁数は 6 です。これをこのまま倍精度のシステムに持っていくと、有効桁数7以降には誤差、というよりも、ゴミデータが付加されてしまいます。そのため、そのゴミデータをカットする、という数値丸め処理が必要になります。
なお、有効桁数と、小数点以下桁数というのは 若干意味が違います。
有効桁数は、数値を 0.nnnn・・・×10の何乗、という形式にした場合での
小数点以下桁数です。
小数点以下桁数は、数値 123.4567 であれば 4 桁、という事にしているソフトの場合、これは有効桁数でいくと、0.1234567×10^3 となり、有効桁数7となります。例えば建築の場合、縮尺が1/100 等で、1000.123456 mm とかだと、小数点以下 6桁ということになりますが、有効桁数でいけば10桁ということになります。
仮に 12桁と指定した場合、100000.123456789012 mm という数値があったとしてもそれは有効桁数でいくと 18 桁となり、8ビット浮動小数点では15桁までなので、後ろ 3 桁分には誤差(ゴミ)が入り、「012」の部分は正確に表現されませんので、12桁と指定する事に意味はありません。9桁と指定するのと精度的には変わらなくなります。
書き込み: [JacConvert] DXF/DWG読込み時の小数点以下桁数
投稿日: 2007年7月24日 22:48 JST
投稿者:
いさた です。
AFさん、丁寧な解説ありがとうございます。
有効桁数と小数以下桁数の違いがよく分りました。
小数以下指定がDXFに由来しており、AutoCadのデフォルトが6桁なのであれば、小数以下6位まで
というのはなんとなくわかります。
ゴミデータカット云々、というのは、例えば精度が16まで指定してあるDXFを、JacConvertで小数以下6位
の設定で読むと、7位以下は丸められる、ということでしょうか。
書き込み: [JacConvert] DXF/DWG読込み時の小数点以下桁数
投稿日: 2007年7月25日 11:40 JST
投稿者: ゲストユーザー
> ゴミデータカット云々、というのは、例えば精度が16まで指定してあるDXFを、JacConvertで小数以下6位の設定で読むと、7位以下は丸められる、ということでしょうか。
JacConvertが内部でどういった処理をされているかについては、私には分りませんので、Nakaharaさんの御回答待ちだと思いますが、取りあえず、
AutoCADで、(0,0)-(1.234567890123456,3.456789012345678) の直線を描いてDXF保存をし、それを JacConvert で
小数点以下6 で開いて、DXF保存
→ 1.234568 , 3.456789
小数点以下12 で開いて、DXF保存
→ 1.234567890123 , 3.456789012345
になることは確認しましたので、丸め処理は行われているのだろうと思います。
最初のご要望の、DXF読み込み時の小数点以下桁数指定を、DWGと同じく「12」までにする、という事については、私は別にいいんじゃないかなという感じはします。同じ仕様の方が良いかなと思いますので。
書き込み: [JacConvert] DXF/DWG読込み時の小数点以下桁数
投稿日: 2007年7月25日 19:49 JST
投稿者: gyurcyan
いさたさん、コメントが遅れてすみません。
AFさん、いつも的確なフォローありがとうございます。
AFさんからいただいたコメントに、私も同意見です。
いさたさんからの問い合わせとAFさんのコメントを元に、JacConvertの
内部処理を調べたところ、3つの問題点がありました。修正を加えて
ベータ版(Ver2.84c)をアップロードしましたので、登録手続きが完了し
たら、お試しください。
但し、今回の修正で読込み時の精度が高まる可能性は低いと思います。
1)DWG読込みの実際はDconvertを介してDXF読込みしています。
Dconvertは小数点6桁で固定出力されているようで、7桁以上の設定は
意味がありませんでした。(最大小数点以下桁数を6桁までにするべき
でした)
2)AutoCADのDXF出力では16桁まで設定できるのにJacConvertの
DXF読込み時の小数点以下桁数設定は12桁まででした。(16桁まで
拡張するべきでした)
3)DWG読込み・DXF読込み共に、同桁数設定値を保存できません
でした。
小数点以下の桁数処理は、指定小数点以下を「四捨五入」している
つもりなのですが、AFさんがテストされたコメントが「切捨て」と
なっています。この件については別途調査報告します。
(ごめんなさい。時間不足なので)
書き込み: [JacConvert] DXF/DWG読込み時の小数点以下桁数
投稿日: 2007年7月25日 21:35 JST
投稿者:
K.Nakaharaさん、AFさん、ありがとうございます。
2.84cを試してみました。
まず、小数以下桁数の設定が保持されていることは確認しました。
また、桁数の選択がDWGが6位まで、DXFが16位までになっていることも確認しました。
(数値は直接入力が可能なので、実際はこれら以上の値が指定できるわけですが)
お忙しいところありがとうございます。
建築フォーラム(farchi) - 掲示板
https://www.farchi.jp/forum/viewtopic.php?showtopic=799