5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IFCをJSONに変換してみよう

Last updated at Posted at 2024-03-06

はじめに

自分用のメモとして書きますが、誰かに見ていただけると嬉しいです。
今回はIFCをJSONに変換していこうと思います。

今回行うこと

  • IfcOpenShellのIfcConvertをダウンロード
  • ダウンロードしたIfcConvertのパスを環境変数に設定
  • IfcConvertを使用して、IFCファイルをXML形式に変換
  • Pythonスクリプトを用いて、XMLファイルをJSON形式に変換

の流れで行いたいと思います。

ほかにもやりようはあると思うのですが今回は上記の方法で行いました。
(今後はIFC.jsを使って出来るといいな)

IfcConvertのダウンロード

まずIfcOpenShellのサイトにアクセスします。(GitHubのリポジトリでも可)

次にダウンロードをクリックしてZIPファイルをダウンロードします。
スクリーンショット 2024-03-06 203400.png

ダウンロードしたファイルの解凍をします。
ダウンロードしたZIPファイルを右クリックし、「すべて展開」を選択します。
(今回僕は「C¥Users¥ユーザ名¥OneDrive¥デスクトップ¥環境変数」のパスに保存しました)
スクリーンショット 2024-03-06 204019.png

環境変数のパス設定

スタートメニューで「環境変数」と検索し、「システム環境変数の編集」を選択します。
「詳細設定」タブから「環境変数」ボタンをクリックします。
今回はユーザー環境変数(U)の方でPathを指定していく。まず変数の「Path」をクリックし、「新規(N)」を選択し,解凍したIfcConvert.exeが含まれるフォルダーのフルパス(例: C:\IfcOpenShell\)を入力します。

(今回僕はC¥Users¥ユーザ名¥OneDrive¥デスクトップ¥環境変数というパスに展開したので写真のようなパス指定としました)
スクリーンショット 2024-03-06 204347.png
次に「OK」を選択しパスを追加し変更を保存します。

これで環境変数の設定は完了です!

実際にIfcConvertを使ってみよう

まずコマンドプロンプトを開きます。
「コマンドプロンプト」または「Windows PowerShell」を選択します。

変換したいIFCファイルが保存されているディレクトリに移動します。
今回使うIFCファイルはGitHubの「Ifc4_SampleHouse.ifc」を使用しました。

次に.ifcファイルをJSONファイルに変換したいのですが残念ながらIfcConvertはJSONに対応してないとのこと:sob:
対応している形式は以下の通りです。

  • .obj WaveFront OBJ(マテリアルファイル .mtl も作成できます)
  • .dae Collada Digital Assets Exchange
  • .glb glTF Binary glTF v2.0
  • .stp STEP Standard for the Exchange of Product Data
  • .igs IGES Initial Graphics Exchange Specification
  • .xml XML Property definitions and decomposition tree
  • .svg SVG Scalable Vector Graphics (2D floor plan)
  • .h5 HDF Hierarchical Data Format storing positions, normals, and indices
  • .ifc IFC-SPF Industry Foundation Classes

そこでまずはXML形式に変換したいと思います!

cmdでまずはIFCファイルを保存したデイレクトリに移動する。

次に以下のコードを書きます。

IfcConvert Ifc4_SampleHouse.ifc example.xml

もしこのコードで実行してもエラーが出る場合は

"C:\Users\ユーザー名\OneDrive\デスクトップ\環境変数\IfcConvert.exe" Ifc4_SampleHouse.ifc example.xmll

で行ってみてください。(ここのディレクトリは自分で設定したパスを指定してください)

これでIFCファイルの構造をxml形式に変換できるはずです!
実際に確認してみましょう。スクリーンショット 2024-03-06 212057.png
ちゃんとできてますね!:raised_hands:

XML形式をJSON形式に変換する

次にPythonを使用してJSONへ変換しようと思います。
まずテキストエディタであるVisualStudioCodeを開き,Ifc4_SampleHouse.ifcを保存しているフォルダを開き,Terminalを展開します。

次にxmltodictモジュールのインストールを行います。
このモジュールを使うことでXMLデータを読み込み、jsonモジュールを使ってJSON形式に変換することが可能になります。コードは以下の通りです。

pip install xmltodict

追加出来たら.pyファイルを新規作成し,以下のコードを書きます。

test.py
import xmltodict
import json

# XMLファイルを読み込む
with open('example.xml', 'r') as xml_file:
    xml_content = xml_file.read()

# XMLを辞書に変換
dict_data = xmltodict.parse(xml_content)

# 辞書をJSONに変換し、ファイルに保存
with open('example.json', 'w') as json_file:
    json.dump(dict_data, json_file, indent=4)

いよいよ最後です。
Terminalで実行しましょう!

python test.py

できたでしょうか?早速確認してみましょう。
スクリーンショット 2024-03-06 213151.png

無事できてますね!:raised_hands:

まとめ

この記事では、IFCファイルをJSON形式に変換するプロセスを紹介しました。

今回は以上で終わりたいと思います。ありがとうございました。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?