2026年5月23日土曜日

IFC座標基底

座標系の変更ができる

RevitのIFC出力では出力時の座標基準が選択できます。

  • 共有座標
  • 測量点
  • プロジェクト基準点
  • 内部原点
  • 真北に向けられたプロジェクト基準点
  • 真北に向けられた内部原点

これはIFC出力設定の地理的参照タブの座標基底から選択できます。

座標基底

それぞれ、どのような結果になるのか、次のような簡単なプロジェクトを出力して確認してみます。10m角の壁だけがあるプロジェクトです。

4隅に内部原点、測量点、プロジェクト基準点、共有座標原点を配置

検証にはBIMvisionを用いています。(Navisworksはいろいろと気を利かせて補正が入ってしまうからです。)

内部原点

真北の影響:なし

右上の2通りとB通りの交点を原点(0,0,0)として、プロジェクトの北に正対して出力されます。

内部原点


プロジェクト基準点

真北の影響:なし

BIMvisionで「プロジェクト原点」と「内部原点」を読み込んで重ねてみました。真北の越境を受けずにプロジェクトの期待に正対しています。「プロジェクト基準点」で出力すると任意の位置に座標原点(0,0,0)を移動できることがわかります。

内部原点とプロジェクト基準点

共有座標

真北の影響:あり

共有座標の原点は1通り-B通りの交点(左上)です。この点がIFC上の原点になっています。共有座標は真北を上にして出力されています。

内部原点と共有座標

測量点

真北の影響:あり

測量点は2通りとA通りの交点(右下)です。やはり真北の影響を受けていますね。

内部原点と測量点

真北に向けられたプロジェクト基準点

真北の影響:あり

プロジェクト基準点は1通りとA通りの交点(左下)です。こちらも真北の影響を受けています。

内部原点と真北に向けられたプロジェクト基準点

真北に向けられた内部原点

真北の影響:あり

内部原点は2通りとB通りの交点(右上)です。これも名前の通り真北の影響を受けています。

内部原点と真北に向けられた内部原点

目的にもよりますが、分野間の重ね合わせならば原点を自由な位置に設定出来てプロジェクトの北に正対する「プロジェクト基準点」が便利そうです。

2026年5月16日土曜日

IFC ~ USERDEFINED

クラスとPredefinedTypeの関係

 IFCは、現実世界の建材をコンピュータが理解できるように分類しています。しかし、一つのクラスだけでは範囲が広すぎます。例えば

  • IfcCovering(クラス):何かを覆うもの
    • これだけだと、それが「天井」なのか「床」なのか「幅木」なのか区別がつきません。
  • PredefinedType(小分けラベル):その中身を特定する役割
    • CEILING(天井)
    • FLOORING(床仕上げ)
    • SKIRTINGBOARD(幅木)
このように、「クラス + PredefinedType」がセットになることで、初めてその部材が何であるかが確定する仕組みになっています。
このPredefinedTypeのなかにUSERDEFINEDがあります。

USERDEFINEDの役割

IFCを作っている国際組織(buildingSMART)は、世の中にある全ての建材に名前を付けようとしていますが、技術の進歩や地域特有の部材など、どうしてもリストに載らないものが出てきます。
そこで、「リストにはないけれど、このクラス(IfcCoveringなど)に属する何かです」と言いたい時に使うのが USERDEFINED です。例えば・・・・

  • PredefinedType = SKIRTINGBOARD
    • 「世界標準のリストにある『幅木』です」という意味。
  • PredefinedType = USERDEFINED
    • 「リストにはない特殊なものですが、仕上げ材の一種です。具体的な名前は ObjectType を見てください」という意味。

IFCのルールでは、PredefinedType(定義済みの種類)を USERDEFINED にした場合、「じゃあ、具体的に何なの?」という情報を ObjectType という属性に書き込むことが義務付けられています。

RevitでObjectTypeを指定する

RevitでObjectTypeを指定するには、パラメータIfcSpatialContainer同様、隠しパラメータIfcObjectTypeが用意されています。

IfcObjectTypeパラメータは、次のいずれかの方法で作成できます。

  1. 共有パラメータで自作する
  2. プロジェクトパラメータとして自作する
  3. Autodesk公式の共有パラメータを使用する

1や3の共有パラメータであれば、ファミリにあらかじめ仕込んでおくこともできます。

3の場合は、Revitの拡張機能からIFC v26.4.1 for Revit 2026などをインストールすると、次の共有パラメータファイルの中にあります。(各バージョン有ります)

"C:\ProgramData\Autodesk\ApplicationPlugins\IFC 2026.bundle\Contents\2026\IFC Shared Parameters-RevitIFCBuiltIn_ALL.txt"

例えば次のような簡単な下足入れを造作工事カテゴリでインプレイスファミリとして作成しました。これをObjectType=SHOERACKと指定してみます。

造作工事カテゴリで作成した下足入れ

何も設定せずIFCに出力すると・・・・

BIMvisionでの表示

IfcEntityはRevit標準のマッピングでIfcFurnitureになっていますが、PredefinedTypeはNOTDEFINEDですから、「具体的に何なのか?」がわかりませんね。

そこでまず、プロジェクトパラメータとしてIfcObjectTypeを目的のカテゴリ(今回は造作工事)にインスタンス(場合によってはタイプ)パラメータとして追加します。

  • パラメータを自作する場合は、データタイプを文字にしてください。
    データタイプは文字

  • Autodeskの標準共有パラメータを使用する場合は、パラメータグループRevit IFC Exporter ParametersグループにあるIfcObjectTypeを利用してください。
    IFC Shared Parameters-RevitIFCBuiltIn_ALL.txt

目的のファミリを選択し、インスタンスパラメータ定義済み書き出しIFCクラス、IFCタイプ、IfcObjectTypeを次のように設定します。

  • 書き出しIFCクラス:IfcFurniuture
  • 定義済みIFCタイプ:USERDEFINED
  • IfcObjectType:SHOERACK
    IFC関連パラメータを設定

この状態で書き出してみます。

ObjectType=SHOERACKと出力されました

これでユーザー定義のオブジェクトタイプを書き出すことができ、この要素がなんであるかを伝えることができるIFCデータになります。

2026年5月9日土曜日

IFC BuildingStorey

IFC空間階層の基本構造

標準的な建築プロジェクトでは、以下の順序で階層が構成されます。

IFCの基本的な階層



IFCクラス 説明 役割
IfcProject プロジェクト 全体の管理単位。プロジェクト名、作成者、単位系(メートルかフィートか等)、座標系の定義などを保持します。
IfcSite 敷地 建物が建つ場所。住所、緯度・経度、敷地の境界線などの情報を含みます。
IfcBuilding 建物 物理的な「ハコ」としての建物。一つの敷地に複数の建物がある場合は、ここに複数の IfcBuilding が並びます。
IfcBuildingStorey 階層・フロア 1階、2階、屋上などのレベル定義。高さ情報(GLからの高度など)を持ちます。
IfcSpace 部屋・空間 居室、廊下、倉庫などの「空間」そのもの。容積や面積の計算根拠になります。
ここでポイントとなるのはIfcBuildingStoreyです。

レベルのパラメータ"建物の階"

レベルには"建物の階"というはい/いいえ型のインスタンスパラメータがあります。これを「はい」に設定したレベルがBuildingStoreyとして出力されます。
レベル線のインスタンスプロパティ

次のようなプロジェクトで考えてみます。このプロジェクトには
  • 1FL
  • 2FL鉄骨天端
  • 2FL
という3つのレベルがあり、構造フレームは2FL鉄骨天端レベルを参照しています。

すべてのレベルの"建物の階"を「はい」に設定した状態でIFCに出力すると。。。
BuildingStoreyは1FL、2FL鉄骨天端、2FLが出力され、BuildingStorey:2FL鉄骨天端には、多くの構造フレームが”Beam”として所属しています。
BIMvisionの画面。すべてのBeamが2FL鉄骨天端にある

2FL鉄骨天端は"建物の階"ではないので、この値を「いいえ」にして出力すると・・・
すべてのBeamが1FLに

BuildingStoreyは1FL、2FLが出力され、構造フレームはBuildingStorey:1FLに所属してしまいます。
IFCでは建物の要素はBuildngStoreyに所属するもの、という方針があるためRevitのIFCエクスポーターが要素の直下のBuildingStoreyを検索して要素を配置するためです。
しかし、この場合の構造フレームは2FLの床を支持するのだから、BuildingStorey:2FLに配置したいとしたらどうすればいいでしょうか?

出力先のレベルを変更する

Revitはこの所属レベル(BuildingStorey)を指定することができます。ヘルプにははっきりとは書いていないのですが、IfcSpatialContainerという共有パラメータを作成すれば、所属するBuildingStoreyを指定することができるのです。
不思議なことに、共有パラメータIfcSpatialContainer(文字型)は大文字小文字半角全角を含めて正確に名前を一致させれば勝手に作っても構いません
Autodesk公式のIfcSpatialContainerを使いたい場合は、Revitの拡張機能の"IFC for Revit"をインストールすると、以下のファイルに
"C:\ProgramData\Autodesk\ApplicationPlugins\IFC 2026.bundle\Contents\2026\IFC Shared Parameters-RevitIFCBuiltIn_ALL.txt"
IfcSpatialContainerというAutodesk公式の共有パラメータがありますからこれを使用するといいでしょう。

使い方

まず、目的のカテゴリ(今回は構造フレームカテゴリ)にインスタンスパラメータとしてIfcSpatialContainerを設定します。
IfcSpatialContainerをプロジェクトパラメータとして設定

構造フレームを選択し、IfcSpatialContainerの値にBuildingStoreyの名前「2FL」を設定します。名前だけを設定することがポイントです。
IfcSpatialContainerの値をBuildingStoreyの名前にする

この状態で、IFCを書き出せば指定したBuildingStoreyに構造フレームが所属します。
所属するBuildingStoreyを変更出来た