AEC Data Model サンプル:事前準備 の内容に沿って、GitHub - autodesk-platform-services/aps-aecdatamodel-samples リポジトリを Windows ローカル環境にクローン・セットアップ済で実行出来ることを前提に、Furniture Procurement Dashboard(家具調達ダッシュボード)の内容を処理していきます。
家具の調達データを入手することで、ビル管理者は予算、メンテナンス、コンプライアンス、プランニングについて、より多くの情報に基づいた意思決定をおこなうことができ、最終的には資源の効率的かつ効果的な活用を期待することができるようになります。
- AEC Data Model は、現時点(2023 年 12 月)で Beta 版の API になっています。今後、手順や内容が変更される可能性があります。
はじめに
AEC Data Model を使ってプロジェクト内の設計全体で使用されるデータ・プロパティ名、単位、タイプの粒状データを GraphQL 処理でクエリーして検証(取得)する作業を前提としています。
後述の Step 1 ~ Step 4 の手順を実行するには、AEC Data Model サンプル:事前準備 でご紹介した手順でセットアップしたサンプルを起動して、「Furniture Procurement Dashboard 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 {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 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{nameid}}}
Step 4:調達データを生成する
Step 3 で取得した Design ID を「Step 4: List furniture at level」直下のテキストボックスに入力、また、その下のテキストボックスに調達情報の対象を家具インスタンスとするよう「property.name.category==Furniture」と入力、同様にすべてのレベルを指定すべく、その下のテキストボックスに「property.name.category=='Levels' and 'property.name.Element Context'==Instance」と入力後、[Generate Procurement] をクリックして Design 中にある全てのレベルの家具ファミリインスタンスの情報を取得します。
使用した GraphQL クエリ:
query GetFurnitureProcurement($designId: ID!, $elementsfilter: String!, $referencefilter: String!) {elements(designId: $designId, filter: { query: $elementsfilter}) {pagination {pageSizecursor}results {idnameproperties (filter: {names: ["Element Name"]}){results {namevalue}}referencedBy (name: "Level", filter: { query: $referencefilter}) {results {nameproperties (filter: {names: [""Family Name"", ""Element Name""]}) {results {namevalue}}}}}}}
- 上記説明では、リストすべき項目が多数ある際に指定する pagination(ページ指定)を空白(未指定、null)としてご案内しています。対象項目が複数ページ存在する場合には、未指定時のレスポンスの cursor 値に次ページを指定するための cursor 値が表示されるので、各 Step の「Any cursor?」と記載のあるテキストボックスに同値を入力してください。レスポンスの cursor 値が「null」となっている場合は、次ページはありません。
By Toshiaki Isezaki
コメント
コメントフィードを購読すればディスカッションを追いかけることができます。