このリポジトリは、CAE向けメッシュ/ポストデータの簡易コンバータです。サイエンスソリューションズ社(Science Solutions International Laboratory, Inc.; SSIL)の電磁界解析ソフトウェア「EMSolution」で用いるATLASテキストファイルフォーマット(.atl)、I‑DEAS Universal file format(.unv)、Femap Neutral file format(.neu)の読み書きに対応し、IDや物性番号などのメタデータのラウンドトリップ保存を重視しています。
- 対応フォーマット: ATLAS(メッシュ・ポスト)、UNV(メッシュ・ポスト)、Femap NEU(メッシュ・ポスト)
- メタデータ保持: Node ID、Element ID、物性番号(
iprop)を可能な限り保持 - CLI: 単一のCLIから変換・ポスト入出力が可能
- ユニバーサルパッケージ: OS依存のネイティブ拡張を含まない pure Python パッケージ
- テスト/CI:
pytest完備、GitHub Actionsでubuntu-latest/windows-latestの手動CI実行に対応 - PyPI公開: GitHub Actionsから手動でPyPI公開可能
事前にPython 3.10以上が必要です。
PyPI からインストールできます。
pip install ems-file-format-converterReleaseに添付したwhl(Wheel)ファイルからのインストール、またはローカルビルドも可能です。
# 例: ダウンロードしたWHLをインストール
pip install --force-reinstall path\to\ems_file_format_converter-0.1.0-py3-none-any.whl
# ソースからビルドしてWHL作成 → インストール
python -m build
pip install --force-reinstall dist/ems_file_format_converter-0.1.0-py3-none-any.whlメッシュ変換(入力は拡張子で自動判別、出力形式は拡張子で判別):
ems-file-format-converter mesh_sample.atl out.unv
ems-file-format-converter sample_mesh.unv out.atl形式を明示的に指定する場合:
ems-file-format-converter mesh_sample.dat out.unv --informat atl --outformat unvポストデータの読み書き(モード指定: components|scalar|vector|vector+scalar):
ems-file-format-converter --post-in post_sample.atl --post-out rt_post.atl --post-mode components--post-mode の意味:
components(デフォルト): すべての成分(component1..N)をそのまま出力(部分的に切り捨てない)scalar: component1 のみ出力vector: component1..3 を出力(不足分は 0)vector+scalar: component1..4 を出力(不足分は 0)
対応拡張子:
- ATLAS:
.atl - UNV:
.unv - Femap Neutral:
.neu
from ems_file_format_converter import atlas
mesh = atlas.read_mesh("sample/mesh_sample.atl")
atlas.write_mesh("out.atl", mesh)
steps = atlas.read_post("sample/post_sample.atl")
atlas.write_post("out_post.atl", steps, mode="components")UNVやFemap NEUも同様に ems_file_format_converter.unv / ems_file_format_converter.femap のモジュールを利用できます。
pytest -qGitHub Actions の CI and Publish ワークフローは手動実行専用です。push や pull_request では起動しません。
- GitHub の
ActionsタブからCI and Publishを選び、Run workflowを実行します。 - 通常のCI確認では
publish_to_pypiをfalseにします。 - この場合、
ubuntu-latestとwindows-latestの両方でテストとpython -m buildによるビルド確認を行います。 - 本パッケージはユニバーサルな pure Python パッケージのため、OSごとに別配布物を作るのではなく、互換性確認のために複数OSで検証しています。
- 配布物(
sdistとpy3-none-anywheel)はUbuntu上で1回だけ生成し、twine checkを実行します。
PyPI公開も同じワークフローから手動で行います。
- あらかじめ
v0.5.1のようなv*.*.*形式のGitタグを作成しておきます。 Run workflow実行時は通常どおりデフォルトブランチから起動します。publish_to_pypiをtrueにし、release_tagにv0.5.1のようなタグ名を入力して実行します。- ワークフローはそのタグをチェックアウトしてビルドし、ビルド済み配布物をPyPIへ公開します。
- 公開にはPyPI側で GitHub Actions Trusted Publishing の設定が必要です。
MITライセンスです。LICENSE を参照してください。
英語版は README_en.md を参照してください。