Quantity Takeoff Sample Workflow
This sample allows you to build a quantity takeoff for ‘Doors’. You will fetch all elements filtered by classification ‘Doors’.
See this code sample at AEC Data Model Samples git repository
Note: This code sample requires .NET 6.
Before You Begin
- If you do not have an app registered, follow the procedure outlined in Create an App to sign up for an APS account (if required) and obtain a Client ID for your app.
- Make sure that you add the following as the Callback URL: http://localhost:8080/api/auth/callback
- Contact us to enable AEC Data Model API for your app and ACC hub.
- Install .NET 6
- Clone or download the Git Repository. It’s recommended to install GitHub desktop. To clone it via command line, use the following command (Terminal on MacOSX/Linux, Git Shell on Windows):
git clone https://github.com/autodesk-platform-services/aps-aecdatamodel-samples.git
Setting up the Application
Define the following environment variables:
Mac OSX/Linux (Terminal)
dotnet restore
export APS_CLIENT_ID=<<YOUR CLIENT ID FROM DEVELOPER PORTAL>>
export APS_CLIENT_SECRET=<<YOUR CLIENT SECRET>>
export APS_CALLBACK_URL=http://localhost:8080/api/auth/callback
Windows
dotnet restore
set APS_CLIENT_ID =<<YOUR CLIENT ID FROM DEVELOPER PORTAL>>
set APS_CLIENT_SECRET =<<YOUR CLIENT SECRET>>
set APS_CALLBACK_URL=http://localhost:8080/api/auth/callback
When using Visual Studio Code, you can specify the environment variables listed above in a .env file in this folder, and run and debug the application directly from the editor.
In Microsoft Visual Studio, you can set the variables through Debug > aps-aecdatamodel-samples Properties and add the three Environment variables as follows: APS_CLIENT_ID=<
Running the Sample
To run the sample, you need to execute the following command in the terminal:
dotnet run
Go to http://localhost:8080, and then select Go to sample for Elementgroups Validation Sample Workflow.
Afterwards, you’ll need to login with your Autodesk (ACC) account before proceeding with the next steps.
Workflow Description
- List all hubs
After login (top-right), click on
List Hubs
and take note of the hubId (id
). See C# code. - List all projects
Use the
HubId
from step 1 to list all projects and take note of the projectId (id
). See C# code. - List all elementgroups in a project
This step uses
projectId
. Take note of theelementGroupId
of the desired file (in this image,Snowdon.rvt
). See C# code. - Generate Quantity Takeoff
Use the
elementGroupId
from Step 3. Click on generate quantity takeoff. You may adjust hefilter
field. See C# code.GraphQL query used:
query getQuantityTakeoff ($elementGroupId: ID!, $elementsfilter: String!){ elementsByElementGroup(elementGroupId: $elementGroupId, filter: { query: $elementsfilter}) { pagination{ pageSize cursor } results{ id name } } }
Show MoreQuery used in case a valid cursor is provided:
query getQuantityTakeoff ($elementGroupId: ID!, $elementsfilter: String!){ elementsByElementGroup(elementGroupId: $elementGroupId, filter: { query: $elementsfilter}, pagination:{cursor:"cursor"}) { pagination{ pageSize cursor } results{ id name } } }
Show MoreThe variables are the same in both cases:
{ elementGroupId = elementGroupId, elementsfilter = elementsfilter }