ascファイルエクスポート時の精度

Japanese forum
Takayuki_Kataoka
Posts: 4
Joined: Sun Apr 25, 2021 2:22 pm

ascファイルエクスポート時の精度

Postby Takayuki_Kataoka » Sun Apr 25, 2021 2:36 pm

FreeCAD上で作成したジオメトリを点群データとしてascファイルでエクスポートしたのですが、
下記例の様に7カラムに収まるように桁数が自動で調整されています。

後工程でascファイルのデータを使って別の計算を実行するので、
より細かい数値までエクスポートできるようにしたいと思っています。

FreeCADにおいてエクスポート時の桁数、もしくはジオメトリの計算精度を指定する方法はありますか?


例)
x y z
10.3689 728.225 9.01787
User avatar
h.tsubota
Posts: 66
Joined: Mon Mar 21, 2016 2:09 pm

Re: ascファイルエクスポート時の精度

Postby h.tsubota » Mon Apr 26, 2021 4:49 am

該当部分のソースコード読んでみましたが、そのような機能は無いようです。
そもそも出力時の実数が float なので有効桁数は7桁までしかありません。
該当部分を double に書き換えて自分でFreeCADをコンパイルすれば対応はできるとは思います。

・該当部分のソースコード

https://github.com/FreeCAD/FreeCAD/blob ... p/Points.h
49行目

Code: Select all

typedef float float_type;
typedef Base::Vector3<float_type> value_type;
https://github.com/FreeCAD/FreeCAD/blob ... Points.cpp
228行目

Code: Select all

void PointKernel::save(std::ostream& out) const
{
    out << "# ASCII" << std::endl;
    for (std::vector<value_type>::const_iterator it = _Points.begin(); it != _Points.end(); ++it) {
        out << it->x << " " << it->y << " " << it->z << std::endl;
    }
}
Takayuki_Kataoka
Posts: 4
Joined: Sun Apr 25, 2021 2:22 pm

Re: ascファイルエクスポート時の精度

Postby Takayuki_Kataoka » Mon Apr 26, 2021 1:40 pm

早速、調べていただきましてありがとうございます。

FreeCADのソースコードを変更することで対応できる可能性があるとのことですが、
以下のコードを

Code: Select all

typedef float float_type;
typedef Base::Vector3<float_type> value_type;
次の様に書き換えれば良いのでしょうか?

Code: Select all

typedef double float_type;
typedef Base::Vector3<float_type> value_type;

また、FreeCADのコンパイルはFreeCAD Documentationにある手順に従って進めれば良いのでしょうか?

 ・FreeCAD Documentation CompileOnWindows/jp:
  https://wiki.freecadweb.org/CompileOnWi ... 4.E3.83.AB

あまりプログラミングに詳しくないため、
質問ばかりで恐れ入りますがご回答宜しくお願いします。
User avatar
h.tsubota
Posts: 66
Joined: Mon Mar 21, 2016 2:09 pm

Re: ascファイルエクスポート時の精度

Postby h.tsubota » Tue Apr 27, 2021 3:55 am

実際に試してないので確かなことは言えませんが、基本的にはそれで動くと思います(「typedef double float_type;」は命名的には良くないですが)。ただ、座標値を計算している上流の部分がfloatだと最後の出口だけdoubleにしても精度は上がらないので、そういう部分がないか上流側にさかのぼって確かめた方がいいと思います。

コンパイルについては使用しているOSやFreeCADのバージョンがわからないのでなんとも言えませんが、仮にWindows、FreeCAD最新版なのであれば以下でしょうか。

・Compile on Windows - FreeCAD Documentation
https://wiki.freecadweb.org/Compile_on_Windows

FreeCADのビルドはそこそこ大変なのでプログラミング(ソフトウェア開発)に詳しくない方にはあまりお勧めはしません。
Takayuki_Kataoka
Posts: 4
Joined: Sun Apr 25, 2021 2:22 pm

Re: ascファイルエクスポート時の精度

Postby Takayuki_Kataoka » Tue Apr 27, 2021 1:47 pm

座標計算に関わる変数の型もチェックした方がよいとの旨、承知いたしました。
追える範囲で確認してみたいと思います。

コンパイルについては、Windows+FreeCAD最新版を利用しているので、
紹介していただいたリンク先がぴったり当てはまります。
ビルドは難易度が高いようですがコンパイル環境を整備しながら少しずつトライしてみます。

ソースコード調査からFreeCADビルドのことまで、色々とご助言をいただきありがとうございました。
私では解決の糸口さえ掴めなかったので大変助かりました。重ねて御礼申しあげます。