
AEC Data Model サンプル:事前準備 の内容に沿って、GitHub – autodesk-platform-services/aps-aecdatamodel-samples リポジトリを Windows ローカル環境にクローン・セットアップ済で実行出来ることを前提に、Compare Designs (デザイン比較)の内容を処理していきます。
デザインの比較は、建築家やデザイナーがクライアントや居住者のニーズを満たし、より効果的で機能的な建物を設計していくのに役立つだけでなく、さまざまなオプションやアプローチを評価することで、革新的なソリューションを見つけ、ユニークで刺激的な空間を創造することができる利点があります。
- AEC Data Model は、現時点(2023 年 12 月)で Beta 版の API になっています。今後、手順や内容が変更される可能性があります。
はじめに
AEC Data Model を使ってプロジェクト内の設計全体で使用されるデータ・プロパティ名、単位、タイプの粒状データを GraphQL 処理でクエリーして検証(取得)する作業を前提としています。
後述の Step 1 ~ Step 4 の手順を実行するには、AEC Data Model サンプル:事前準備 でご紹介した手順でセットアップしたサンプルを起動して、「Window Schedule Sample Workflow」の [Go to sample] をクリックしてください。
- ここでは、Autodesk Construction Cloud の DAS Japan Project プロジェクトに、次のような Revit 2024 のプロジェクト ファイルがアップロードされていると仮定しています。

Step 1:すべての Hub を取得する
ページ右上の [Login] ボタンをクリックして、Autodesk Construction Cloud のアクセス権を持つオートデスク アカウント(Autodesk ID)でログイン(サインイン)後、[List Hubs] をクリックします。画面に Hub ID が表示されるのでデータ交換(Data Exchange)を作成したプロジェクトがある Hub ID(”id” の値)を書き留めておきます。

Hub 一覧には、A360 や Fusion Team の Hub に加え、他者から招待されたプロジェクトの Hub が含まれます。Autodesk Construction Cloud の Hub は、ID の先頭文字が “b.” で始まります。もし、判別が難しい場合には、Autodesk Construction Cloud と APS 統合で必要なカスタム統合 でカスタム統合した際に、9. の「BIM 360 のアカウント ID」が、”b.” を除いた値を目安に判断をしてください。
- 本サンプルの実行で使用している Client Id をカスタム統合していない場合には、Autodesk Construction Cloud の Hub は表示されません。ご注意ください。
使用した GraphQL クエリ:
query {
hubs {
pagination {
cursor
}
results {
id
name
}
}
}
Step 2:すべての Project を取得する
Step 1 で取得した Hub ID を「Step 2: List project for a hub」下のテキストボックスに入力して、Hub 配下にある全 Project を取得します。[List Projects] をクリックして、Revit プロジェクト ファイルをアップロードしたプロジェクトの Project ID(”id” の値)を書き留めておきます。(下図では DAS Japan Project プロジェクト)

- このクエリで返されるのは、プロジェクト管理者が「割り当てられた製品と権限」に Docs が割り当てられている場合です。また、アーカイブされたプロジェクトは返されません。
使用した GraphQL クエリ:
query GetProjects ($hubId: ID!) {
projects (hubId: $hubId) {
pagination {
cursor
}
results {
id
name
}
}
}
Step 3:すべてのデザインを取得する
Step 2 で取得した Project ID を「Step 3: List all designs in a project」下のテキストボックスに入力後、[List all designs] をクリックして Project 配下にある全デザイン(Revit プロジェクト ファイル)を取得します。表示されたデザインから、集計表作成の対象となる Design ID を書き留めます。(下記の例では「04-04-02.rvt」)

使用した GraphQL クエリ:
query GetDesignsByProject($projectId: ID!) {
aecDesignsByProject(projectId: $projectId) {
pagination {
cursor
}
results{
name
id
}
}
}
Step 4:バージョン間のデザインを比較する
Step 3 で取得した Design ID を「Step 4: Compare Designs Properties」直下のテキストボックスに入力、また、その下の「Design version number」と表示されるテキストボックス 2 つに同一デザインの異なるバージョンを入力後、[Compare Versions Properties] をクリックして Design 中にある全てのプロパティを取得します。(下記の例ではバージョン 2 とバージョン 4)

このサンプルは、比較するバージョンのすべてのプロパティを左右に分けて単純に表示するものです。レスポンスで得られた JSON をパースして差分を表示するような実装は含まれていませんのでご注意ください。
使用した GraphQL クエリ:
query getVersionProperties($designId: ID!, $versionNumber: Int!){
aecDesignByVersionNumber(designId:$designId , versionNumber:$versionNumber ){
name
elements{
pagination{
pageSize
cursor
}
results{
id
name
properties{
results{
name
value
propertyDefinition{
id
name
units
}
}
}
}
}
}
}
- 上記説明では、リストすべき項目が多数ある際に指定する pagination(ページ指定)を空白(未指定、null)としてご案内しています。対象項目が複数ページ存在する場合には、未指定時のレスポンスの cursor 値に次ページを指定するための cursor 値が表示されるので、各 Step の「Any cursor?」と記載のあるテキストボックスに同値を入力してください。レスポンスの cursor 値が「null」となっている場合は、次ページはありません。
By Toshiaki Isezaki

You must be logged in to post a comment.