Compare Elementgroups Sample Workflow
Comparing elementgroups can help architects and designers create more effective and functional buildings that meet the needs of their clients and occupants. By evaluating different options and approaches, they can find innovative solutions and create unique and inspiring spaces.
To run the sample, please review setup instructions.
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. In case your hub is not in the first response and you receive a cursor value different thatnull
, you can copy and paste this value inside the cursor input and click List Hubs button once more. - List all Projects
Use the
HubId
from step 1 to list all projects and take note of the projectId (id
). See C# code. In case your project is not in the first response and you receive a cursor value different thatnull
, you can copy and paste this value inside the cursor input and click List Projects button once more. - List all elementgroups in a Project
This step uses
projectId
. Take note of theelementGroupId
of the desired file (in this image,House.rvt
). See C# code. In case your elementgroup is not in the first response and you receive a cursor value different that null, you can copy and paste this value inside the cursor input and click List all elementgroups button once more. - Generate Versions Elements
Use the
elementGroupId
from step 3. Click on generate schedule. You may adjust theversion
field. See C# code.Query used:
query getVersionProperties($elementGroupId: ID!, $versionNumber: Int!){ elementGroupByVersionNumber(elementGroupId:$elementGroupId , versionNumber:$versionNumber ){ name elements{ pagination{ pageSize cursor } results{ id name properties{ results{ name value definition{ id name units{ name } } } } } } } }
Show MoreQuery used in case a valid cursor is provided:
query getVersionProperties($elementGroupId: ID!, $versionNumber: Int!){ elementGroupByVersionNumber(elementGroupId:$elementGroupId , versionNumber:$versionNumber , pagination:{cursor:"cursor"}){ name elements{ pagination{ pageSize cursor } results{ id name properties{ results{ name value definition{ id name units{ name } } } } } } } }
Show MoreThe variables are the same in both cases:
{ elementGroupId = elementGroupId, elementsfilter = elementsfilter, referencefilter = referencefilter }