AEC Data Model サンプル:事前準備 の内容に沿って、GitHub - autodesk-platform-services/aps-aecdatamodel-samples リポジトリを Windows ローカル環境にクローン・セットアップ済で実行出来ることを前提に、Design Validation(デザイン検証)の内容を処理していきます。
プロジェクト内のデザイン間で使用されるデータ・プロパティの名前、単位、およびタイプの検証は重要な QA/QC プロセスです。このサンプルでは、AEC Data Model API を使用してこのタスクを自動化する例を示します。
このパートでは、
- AEC Data Model は、現時点(2023 年 12 月)で Beta 版の API になっています。今後、手順や内容が変更される可能性があります。
はじめに
AEC Data Model を使ってプロジェクト内の設計全体で使用されるデータ・プロパティ名、単位、タイプの粒状データを GraphQL 処理でクエリーして検証(取得)する作業を前提としています。
後述の Step 1 ~ Step 3の手順を実行するには、AEC Data Model サンプル:事前準備 でご紹介した手順でセットアップしたサンプルを起動して、「Design Validation 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 が表示されるので、対象とするプロジェクトがある 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 {idname}}}
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 {idname}}}
Step 3:すべてのプロパティを取得する
Step 2 で取得した Project ID を「Step 3: List all properties in all models in a project」下のテキストボックスに入力後、[List all properties] をクリックして Project 配下にある全デザイン プロパティ(Revit プロジェクト ファイルから分解された粒状データ)を取得します。
使用した GraphQL クエリ:
query getDesignValidation($projectId: ID!) {aecDesignsByProject(projectId: $projectId) {pagination{pageSizecursor}results{nameidpropertyDefinitions{results{idnamedescriptionspecification}}}}}
- 上記説明では、リストすべき項目が多数ある際に指定する pagination(ページ指定)を空白(未指定、null)としてご案内しています。対象項目が複数ページ存在する場合には、未指定時のレスポンスの cursor 値に次ページを指定するための cursor 値が表示されるので、各 Step の「Any cursor?」と記載のあるテキストボックスに同値を入力してください。レスポンスの cursor 値が「null」となっている場合は、次ページはありません。
By Toshiaki Isezaki
コメント
コメントフィードを購読すればディスカッションを追いかけることができます。