├── .DS_Store
├── .dockerignore
├── .gitattributes
├── .github
└── workflows
│ ├── cipython-dev.yml
│ ├── cipython-release.yml
│ └── dotnet.yml
├── .gitignore
├── .nuke
├── build.schema.json
└── parameters.json
├── APSToolkit.sln
├── APSToolkit
├── APSToolkit.csproj
├── Auth.cs
├── BIM360
│ ├── AecLevel.cs
│ ├── AecLevelExtension.cs
│ ├── BIM360.cs
│ ├── BIMData.cs
│ ├── BIMObject.cs
│ ├── BIMProperty.cs
│ ├── FileInfoInDocs.cs
│ ├── Level.cs
│ ├── ObjectField.cs
│ └── ObjectInfo.cs
├── Database
│ ├── BucketStorage.cs
│ ├── DbReader.cs
│ ├── DbReaderRevit.cs
│ ├── PropDbReader.cs
│ ├── PropDbReaderRevit.cs
│ ├── RevitDataConfiguration.cs
│ ├── _object_id.cs
│ ├── _object_val.cs
│ ├── _objects_attr.cs
│ └── _objects_eav.cs
├── Derivatives.cs
├── DesignAutomation
│ ├── Alias.cs
│ ├── DAUtils.cs
│ ├── DesignAutomateConfiguration.cs
│ ├── DynamoRevitDesignAutomate.cs
│ ├── Engine.cs
│ ├── RevitDesignAutomate.cs
│ └── RevitSetDataAutomate.cs
├── Dockerfile
├── ForgeToolkit.csproj.DotSettings
├── Fragments.cs
├── Geometries.cs
├── IMF.cs
├── InputStream.cs
├── ManifestItem.cs
├── Materials.cs
├── Meshes.cs
├── PackFileReader.cs
├── PathInfo.cs
├── Reader.cs
├── Resources
│ └── units.json
├── Scene.cs
├── Schema
│ ├── AssetType.cs
│ ├── ForceDefaultConverter.cs
│ ├── ISvfContent.cs
│ ├── ISvfFragment.cs
│ ├── ISvfGeometryMetadata.cs
│ ├── ISvfLines.cs
│ ├── ISvfManifest.cs
│ ├── ISvfManifestAsset.cs
│ ├── ISvfManifestType.cs
│ ├── ISvfManifestTypeSet.cs
│ ├── ISvfMaterial.cs
│ ├── ISvfMaterialGroup.cs
│ ├── ISvfMaterialMap.cs
│ ├── ISvfMaterialMapScale.cs
│ ├── ISvfMaterialMaps.cs
│ ├── ISvfMaterialProperties.cs
│ ├── ISvfMaterials.cs
│ ├── ISvfMesh.cs
│ ├── ISvfMetadata.cs
│ ├── ISvfPoints.cs
│ ├── ISvfRoot.cs
│ ├── ISvfTransform.cs
│ ├── ISvfUVMap.cs
│ ├── IntValues.cs
│ ├── RGBA.cs
│ ├── RGBValuesAndStringConnections.cs
│ ├── StringConnections.cs
│ ├── StringValues.cs
│ ├── UnitsAndNumberValues.cs
│ ├── ValueObj.cs
│ └── XYZArray.cs
├── SvfReader.cs
├── Token.cs
├── Utils
│ ├── Base64Convert.cs
│ ├── CsvHelper.cs
│ ├── DataFrame.cs
│ ├── DataTableUtils.cs
│ ├── DiscordWebhook.cs
│ ├── EnumRecords.cs
│ ├── ExcelUtils.cs
│ ├── GzipUtils.cs
│ ├── LogUtils.cs
│ ├── ParquetExport.cs
│ ├── RecordUtils.cs
│ └── UnitUtils.cs
└── WaveFront.cs
├── APSToolkitApp
├── APSToolkitApp.csproj
├── AssemblyInfo.cs
├── Model
│ └── ApsProject.cs
├── View
│ ├── App.xaml
│ ├── App.xaml.cs
│ ├── MainWindow.xaml
│ └── MainWindow.xaml.cs
└── ViewModel
│ ├── APSToolkitViewModel.cs
│ └── ProjectViewModel.cs
├── APSToolkitPython
├── .gitignore
├── Readme.md
├── Tutorials
│ ├── 00. Jupyter Notebook And Python.ipynb
│ ├── 00.01. Jupyter Notebook And Google Colab.ipynb
│ ├── 01. Setup And Authentication.ipynb
│ ├── 02. Explore Hubs - Projects - Items - URN.ipynb
│ ├── 03. Explore Versions Item and Derivative Urn.ipynb
│ ├── 04. Explore General Metdadata With APSToolkit.ipynb
│ ├── 04.01. Explore Revit Data With APSToolkit.ipynb
│ ├── 04.02. Explore Compare Revit Data Versions.ipynb
│ ├── 04.03. Explore Acad Data With APSToolkit.ipynb
│ ├── 04.04. Explore Navisworks Data With APSToolkit.ipynb
│ ├── 05. Explore Access Database And Query Items.ipynb
│ ├── 06. Data Visualization - Analyst BIM Model.ipynb
│ ├── 07. Explore Big Data Format Storage.ipynb
│ ├── 08. Explore URL ACC Extract.ipynb
│ ├── 09. Explore SVF - Export SVF Viewer.ipynb
│ └── 10. Chat With Your Data Use APSToolkit.ipynb
├── requirements-dev.txt
├── requirements.txt
├── setup.py
└── src
│ ├── aps_toolkit
│ ├── AECDataModel.py
│ ├── Auth.py
│ ├── AuthGoogleColab.py
│ ├── BIM360.py
│ ├── Bucket.py
│ ├── ConvertUtils.py
│ ├── DbReader.py
│ ├── Derivative.py
│ ├── Fragments.py
│ ├── InputStream.py
│ ├── ManifestItem.py
│ ├── MaterialProperties.py
│ ├── Materials.py
│ ├── PackFileReader.py
│ ├── PathInfo.py
│ ├── ProDbReaderCad.py
│ ├── ProDbReaderNavis.py
│ ├── ProDbReaderRevit.py
│ ├── PropReader.py
│ ├── Resource.py
│ ├── SVFContent.py
│ ├── SVFGeometries.py
│ ├── SVFImage.py
│ ├── SVFLines.py
│ ├── SVFManifestType.py
│ ├── SVFMaterialGroup.py
│ ├── SVFMaterialMap.py
│ ├── SVFMaterialMapScale.py
│ ├── SVFMaterials.py
│ ├── SVFMesh.py
│ ├── SVFMetadata.py
│ ├── SVFPoints.py
│ ├── SVFReader.py
│ ├── SVFTransform.py
│ ├── SVFUVMap.py
│ ├── Token.py
│ ├── Webhooks.py
│ ├── __init__.py
│ └── units
│ │ ├── DisplayUnits.py
│ │ ├── __init__.py
│ │ └── units.json
│ └── test
│ ├── __init__.py
│ ├── _trial_temp
│ └── _trial_marker
│ ├── context.py
│ ├── resources
│ └── Test.dwg
│ ├── test_Webhooks.py
│ ├── test_aec_data_model.py
│ ├── test_auth.py
│ ├── test_auth_colab.py
│ ├── test_bim360.py
│ ├── test_bucket.py
│ ├── test_db_reader.py
│ ├── test_derivative.py
│ ├── test_fragment.py
│ ├── test_geometries.py
│ ├── test_image.py
│ ├── test_material.py
│ ├── test_mesh.py
│ ├── test_metadata.py
│ ├── test_prop_reader.py
│ ├── test_prop_reader_cad.py
│ ├── test_prop_reader_navis.py
│ ├── test_prop_reader_revit.py
│ ├── test_svf_reader.py
│ └── test_token.py
├── APSToolkitUnit
├── APSToolkitUnit.csproj
├── AuthTest.cs
├── BIM360Test.cs
├── Base64Test.cs
├── BucketTest.cs
├── CompareTest.cs
├── CsvTest.cs
├── DBReaderRevitTest.cs
├── DataFrameTest.cs
├── DbReaderTest.cs
├── DerivativeTest.cs
├── DesignAutomationTest.cs
├── ExcelTest.cs
├── FragmentsTest.cs
├── ProbDbReaderRevitTest.cs
├── ProbDbReaderTest.cs
├── Properties
│ └── AssemblyInfo.cs
├── Resources
│ ├── DataSetParameterAddIn.zip
│ ├── model.rvt
│ ├── model_ifc.sdb
│ ├── model_nwc.sdb
│ ├── model_rvt.sdb
│ ├── objects_attrs.json.gz
│ ├── objects_avs.json.gz
│ ├── objects_ids.json.gz
│ ├── objects_offs.json.gz
│ ├── objects_vals.json.gz
│ ├── objects_viewables.json.gz
│ ├── result.parquet
│ └── result.xlsx
├── Settings.cs
├── SvfReaderTest.cs
├── UnitsTest.cs
└── VersionTest.cs
├── CONTRIBUTING.md
├── ExportUnitAddin
├── ExportUnitAddin.csproj
└── ExportUnitCommand.cs
├── License.md
├── Readme.md
├── build.cmd
├── build.ps1
├── build.sh
├── build
├── .editorconfig
├── Build.NugetPush.cs
├── Build.cs
├── Configuration.cs
├── Directory.Build.props
├── Directory.Build.targets
├── _build.csproj
└── _build.csproj.DotSettings
├── docs
├── APSToolkit.png
├── Nuget.md
└── Tutorials
│ ├── 00. Jupyter Notebook And .NET Interactive.ipynb
│ ├── 01. Setup And Authentication.ipynb
│ ├── 02. Explore Hubs - Projects - Items - URN.ipynb
│ ├── 03. Explore Versions Item and Derivative Urn.ipynb
│ ├── 04. Explore General Metdadata With APSToolkit.ipynb
│ ├── 04.01. Explore Revit Data With APSToolkit.ipynb
│ ├── 05. Explore Access Database And Query Items.ipynb
│ ├── 06. Explore SVF - Export SVF Viewer.ipynb
│ ├── 07. Explore Update Revit Data Back To ACC.ipynb
│ ├── 08. Explore Pull Data From ACC BIM360 API.ipynb
│ ├── 09. Explore Data Knowledge Use LLM Agent.ipynb
│ ├── 10. Build Pipeline Data Process with APSToolkit.ipynb
│ ├── 11. Visualization Data - Data Analyst.ipynb
│ ├── 12. Custom Python In .NET Interactive.ipynb
│ └── 13. Custom Metadata Export.ipynb
└── sql
├── GetElementId.sql
├── GetPrototype.sql
├── GetRevitCategories.sql
├── GetallData.sql
├── QueryByDbId.sql
├── QueryByElementId.sql
├── QueryInternalProperty.sql
├── QueryRevitFamily.sql
├── QueryRevitFamilyType.sql
└── QueryRevitLikeCategory.sql
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chuongmep/aps-toolkit/e124e4a8262e9e64fff569331095ade5aa15aa9c/.DS_Store
--------------------------------------------------------------------------------
/.dockerignore:
--------------------------------------------------------------------------------
1 | **/.dockerignore
2 | **/.env
3 | **/.git
4 | **/.gitignore
5 | **/.project
6 | **/.settings
7 | **/.toolstarget
8 | **/.vs
9 | **/.vscode
10 | **/.idea
11 | **/*.*proj.user
12 | **/*.dbmdl
13 | **/*.jfm
14 | **/azds.yaml
15 | **/bin
16 | **/charts
17 | **/docker-compose*
18 | **/Dockerfile*
19 | **/node_modules
20 | **/npm-debug.log
21 | **/obj
22 | **/secrets.dev.yaml
23 | **/values.dev.yaml
24 | LICENSE
25 | README.md
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/.github/workflows/cipython-dev.yml:
--------------------------------------------------------------------------------
1 | name: CI-Python-Development
2 |
3 | on:
4 | push:
5 | branches:
6 | - dev
7 | pull_request:
8 | branches:
9 | - dev
10 | release:
11 | types: [published]
12 |
13 | jobs:
14 | build:
15 | runs-on: ubuntu-latest
16 | strategy:
17 | matrix:
18 | python-version: [ 3.11 ]
19 |
20 | steps:
21 | - name: Checkout repository
22 | uses: actions/checkout@v2
23 |
24 | - name: Set up Python ${{ matrix.python-version }}
25 | uses: actions/setup-python@v2
26 | with:
27 | python-version: ${{ matrix.python-version }}
28 |
29 | - name: Install dependencies
30 | working-directory: APSToolkitPython
31 | run: |
32 | pip install .
33 |
34 | publish:
35 | runs-on: ubuntu-latest
36 | needs: build
37 | if: github.ref == 'refs/heads/main' && github.event_name == 'release' && github.event.action == 'published'
38 | steps:
39 | - name: Checkout repository
40 | uses: actions/checkout@v2
41 |
42 | - name: Set up Python
43 | uses: actions/setup-python@v2
44 | with:
45 | python-version: '3.11'
46 |
47 | - name: Install build tools
48 | working-directory: APSToolkitPython
49 | run: |
50 | python -m pip install --upgrade pip
51 | pip install build twine
52 | pip install setuptools
53 | pip install wheel
54 |
55 | - name: Build package
56 | working-directory: APSToolkitPython
57 | run: python setup.py sdist bdist_wheel
58 |
59 | - name: Publish package to PyPI
60 | working-directory: APSToolkitPython
61 | env:
62 | TWINE_USERNAME: __token__
63 | TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
64 | run: python -m twine upload dist/*
65 |
--------------------------------------------------------------------------------
/.github/workflows/cipython-release.yml:
--------------------------------------------------------------------------------
1 | name: CI-Python-Production
2 |
3 | on:
4 | push:
5 | branches:
6 | - main
7 | pull_request:
8 | branches:
9 | - main
10 | # release:
11 | # types: [published]
12 |
13 | jobs:
14 | build:
15 | runs-on: ubuntu-latest
16 | strategy:
17 | matrix:
18 | python-version: [ 3.11 ]
19 |
20 | steps:
21 | - name: Checkout repository
22 | uses: actions/checkout@v2
23 |
24 | - name: Set up Python ${{ matrix.python-version }}
25 | uses: actions/setup-python@v2
26 | with:
27 | python-version: ${{ matrix.python-version }}
28 |
29 | - name: Install dependencies
30 | working-directory: APSToolkitPython
31 | run: |
32 | pip install .
33 |
34 | publish:
35 | runs-on: ubuntu-latest
36 | needs: build
37 | steps:
38 | - name: Checkout repository
39 | uses: actions/checkout@v2
40 |
41 | - name: Set up Python
42 | uses: actions/setup-python@v2
43 | with:
44 | python-version: '3.11'
45 |
46 | - name: Install build tools
47 | working-directory: APSToolkitPython
48 | run: |
49 | python -m pip install --upgrade pip
50 | pip install build twine
51 | pip install setuptools
52 | pip install wheel
53 |
54 | - name: Build package
55 | working-directory: APSToolkitPython
56 | run: python setup.py sdist bdist_wheel
57 |
58 | - name: Publish package to PyPI
59 | working-directory: APSToolkitPython
60 | env:
61 | TWINE_USERNAME: __token__
62 | TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
63 | run: python -m twine upload dist/*
64 |
--------------------------------------------------------------------------------
/.github/workflows/dotnet.yml:
--------------------------------------------------------------------------------
1 | # This workflow will build a .NET project
2 | # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net
3 |
4 | name: .NET
5 |
6 | on:
7 | push:
8 | branches: [ "dev" ]
9 | pull_request:
10 | branches: [ "dev" ]
11 |
12 | jobs:
13 | build:
14 |
15 | runs-on: ubuntu-latest
16 |
17 | steps:
18 | - uses: actions/checkout@v3
19 | - name: Setup .NET
20 | uses: actions/setup-dotnet@v3
21 | with:
22 | dotnet-version: 6.0.x
23 | - name: Restore dependencies
24 | run: dotnet restore
25 | - name: Build
26 | # run: dotnet build --no-restore
27 | run: dotnet build --configuration Debug --no-restore
28 | - name: Test
29 | run:
30 | # dotnet test --no-build --verbosity normal
31 | dotnet test --configuration Debug --no-build --verbosity normal
32 | env:
33 | APS_CLIENT_ID: ${{ secrets.APS_CLIENT_ID }}
34 | APS_CLIENT_SECRET: ${{ secrets.APS_CLIENT_SECRET }}
35 |
--------------------------------------------------------------------------------
/.nuke/build.schema.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-04/schema#",
3 | "$ref": "#/definitions/build",
4 | "title": "Build Schema",
5 | "definitions": {
6 | "build": {
7 | "type": "object",
8 | "properties": {
9 | "Configuration": {
10 | "type": "string",
11 | "description": "Configuration to build - Default is 'Debug' (local) or 'Release' (server)",
12 | "enum": [
13 | "Debug",
14 | "Release"
15 | ]
16 | },
17 | "Continue": {
18 | "type": "boolean",
19 | "description": "Indicates to continue a previously failed build attempt"
20 | },
21 | "Help": {
22 | "type": "boolean",
23 | "description": "Shows the help text for this build assembly"
24 | },
25 | "Host": {
26 | "type": "string",
27 | "description": "Host for execution. Default is 'automatic'",
28 | "enum": [
29 | "AppVeyor",
30 | "AzurePipelines",
31 | "Bamboo",
32 | "Bitbucket",
33 | "Bitrise",
34 | "GitHubActions",
35 | "GitLab",
36 | "Jenkins",
37 | "Rider",
38 | "SpaceAutomation",
39 | "TeamCity",
40 | "Terminal",
41 | "TravisCI",
42 | "VisualStudio",
43 | "VSCode"
44 | ]
45 | },
46 | "NoLogo": {
47 | "type": "boolean",
48 | "description": "Disables displaying the NUKE logo"
49 | },
50 | "NugetApiKey": {
51 | "type": "string",
52 | "default": "Secrets must be entered via 'nuke :secrets [profile]'"
53 | },
54 | "Partition": {
55 | "type": "string",
56 | "description": "Partition to use on CI"
57 | },
58 | "Plan": {
59 | "type": "boolean",
60 | "description": "Shows the execution plan (HTML)"
61 | },
62 | "Profile": {
63 | "type": "array",
64 | "description": "Defines the profiles to load",
65 | "items": {
66 | "type": "string"
67 | }
68 | },
69 | "Root": {
70 | "type": "string",
71 | "description": "Root directory during build execution"
72 | },
73 | "Skip": {
74 | "type": "array",
75 | "description": "List of targets to be skipped. Empty list skips all dependencies",
76 | "items": {
77 | "type": "string",
78 | "enum": [
79 | "Clean",
80 | "NuGetPush",
81 | "Pack",
82 | "PublishNuget",
83 | "Restore"
84 | ]
85 | }
86 | },
87 | "Solution": {
88 | "type": "string",
89 | "description": "Path to a solution file that is automatically loaded"
90 | },
91 | "Target": {
92 | "type": "array",
93 | "description": "List of targets to be invoked. Default is '{default_target}'",
94 | "items": {
95 | "type": "string",
96 | "enum": [
97 | "Clean",
98 | "NuGetPush",
99 | "Pack",
100 | "PublishNuget",
101 | "Restore"
102 | ]
103 | }
104 | },
105 | "Verbosity": {
106 | "type": "string",
107 | "description": "Logging verbosity during build execution. Default is 'Normal'",
108 | "enum": [
109 | "Minimal",
110 | "Normal",
111 | "Quiet",
112 | "Verbose"
113 | ]
114 | }
115 | }
116 | }
117 | }
118 | }
119 |
--------------------------------------------------------------------------------
/.nuke/parameters.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "./build.schema.json",
3 | "Solution": "APSToolkit.sln"
4 | }
5 |
--------------------------------------------------------------------------------
/APSToolkit/APSToolkit.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | enable
4 | enable
5 | APSToolkit
6 | net6
7 | latest
8 | chuongmep.com
9 | false
10 | true
11 | Dependency
12 | APSToolkit
13 | 1.2.0
14 | 1.2.0
15 | true
16 | false
17 | revit;bim360;acc;adsk;forgetoolkit;forge;autodesk;aps;
18 | The toolkit support imporve process Autodesk Forge Pipeline
19 | https://github.com/chuongmep/aps-toolkit
20 | License.md
21 | Readme.md
22 |
23 | CS8632;CS7035
24 |
25 |
26 | full
27 |
28 |
29 |
30 | .dockerignore
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/APSToolkit/BIM360/AecLevel.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) chuongmep.com. All rights reserved
2 |
3 | namespace APSToolkit.BIM360;
4 |
5 | public class AecLevel
6 | {
7 | public string Guid { get; set; }
8 | public string Name { get; set; }
9 | public double Elevation { get; set; }
10 | public double Height { get; set; }
11 | public AecLevelExtension Extension { get; set; }
12 | }
--------------------------------------------------------------------------------
/APSToolkit/BIM360/AecLevelExtension.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) chuongmep.com. All rights reserved
2 |
3 | namespace APSToolkit.BIM360;
4 |
5 | public class AecLevelExtension
6 | {
7 | public bool BuildingStory { get; set; }
8 | public bool Structure { get; set; }
9 | public double ComputationHeight { get; set; }
10 | public bool GroundPlane { get; set; }
11 | public bool HasAssociatedViewPlans { get; set; }
12 | public double? ProjectElevation { get; set; }
13 | }
14 |
--------------------------------------------------------------------------------
/APSToolkit/BIM360/BIMData.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) chuongmep.com. All rights reserved
2 |
3 | namespace APSToolkit.BIM360;
4 |
5 | public class BIMData
6 | {
7 | public int? DbId { get; set; }
8 | public string? externalId { get; set; }
9 | public System.Numerics.Vector3? bboxMin { get; set; }
10 | public System.Numerics.Vector3? bboxMax { get; set; }
11 | public BIMProperty[] properties { get; set; }
12 |
13 | }
--------------------------------------------------------------------------------
/APSToolkit/BIM360/BIMObject.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) chuongmep.com. All rights reserved
2 |
3 | using JObject = Newtonsoft.Json.Linq.JObject;
4 |
5 | namespace APSToolkit.BIM360;
6 |
7 | public class BIMObject
8 | {
9 | public int? svf2Id { get; set; }
10 | public int? otgId { get; set; }
11 | public string? lineageId { get; set; }
12 | public string? externalId { get; set; }
13 | public int? lmvId { get; set; }
14 | public string? databaseId { get; set; }
15 | public Dictionary props { get; set; }
16 | public string? propsHash { get; set; }
17 | public string? geomHash { get; set; }
18 | public JObject? bboxMin { get; set; }
19 | public JObject? bboxMax { get; set; }
20 | public List