Skip to main content

Add your description here

Project description

APS Viewer SDK

PyPI version CI Python 3.12+ Code style: ruff License: MIT

Lightweight Python helper to render APS models in the browser with powerful built-in plugins for visualization and interaction.

Features

Core Viewer Capabilities

  • 🎨 Display Revit models in the APS Viewer with full 3D/2D support
  • 🔄 View selector dropdown to switch between available 3D and 2D views
  • Highlight and color elements by externalId for visual analysis
  • 🔌 Extensible plugin system for custom visualizations and interactions

Built-in Plugins

The SDK includes three powerful plugins (from aps_viewer_sdk.plugins) for extending viewer functionality:

1. Element Highlighting

Programmatically highlight and color model elements for visual analysis and QA/QC workflows.

Highlight Elements Color-code elements by properties, categories, or custom logic

2. OverlayMeshes Plugin

Add custom 3D geometries (boxes, cones, spheres, cylinders) overlaid on your model for context and visualization.

Tree Overlays Add trees, furniture, equipment, or any custom 3D objects to your scene

Key Features:

  • Add primitive shapes: add_box(), add_cone(), add_sphere(), add_cylinder()
  • Position meshes at specific 3D coordinates
  • Customize colors, opacity, and orientation
  • Combine shapes to create complex objects

3. Draw2DCircles Plugin

Enable interactive circle markers on 2D views for annotations and markup.

2D Circle Markers Click-to-place circle markers on floor plans, elevations, and sections

Key Features:

  • Interactive placement by clicking on 2D views
  • Customizable radius and color
  • Perfect for marking inspection points, issues, or locations of interest
  • Works exclusively on 2D views (floor plans, elevations, sections)

Use Cases

  • QA/QC filtering and visual inspection - Color-code elements by validation status
  • Pre-processing for automation APIs - Visualize data before processing
  • Context visualization - Add trees, furniture, or site elements to architectural models
  • Interactive markup - Annotate 2D drawings with circle markers
  • Integrations with Model Properties API, Model Derivative, Data Exchange API, and AEC Data Model API

Installation

For Users

pip install aps-viewer-sdk

Or with uv:

uv add aps-viewer-sdk

For Development

Clone the repository and install dependencies:

git clone https://github.com/AlejoDuarte23/aps-viewer-sdk.git
cd aps-viewer-sdk
uv sync
uv sync --group test

Quick Start

Basic Viewer

from aps_viewer_sdk import APSViewer
from aps_viewer_sdk.helper import get_2lo_token

token = get_2lo_token("CLIENT_ID", "CLIENT_SECRET")  # 2LO; 3LO tokens work too
viewer = APSViewer(
    urn="urn:...",  # ACC URNs work too
    token=token,
    views_selector=True,
)
viewer.show()

Using Built-in Plugins

from aps_viewer_sdk import APSViewer
from aps_viewer_sdk.plugins import OverlayMeshes
from aps_viewer_sdk.helper import get_2lo_token

token = get_2lo_token("CLIENT_ID", "CLIENT_SECRET")
viewer = APSViewer(urn="urn:...", token=token, views_selector=True)

# Add 3D tree meshes (see example #2)
trees = OverlayMeshes(scene_id="trees")
trees.add_box((0, 0, 5), size=(2, 10, 2), color="#8b5a2b")
trees.add_cone((0, 0, 15), radius=6, height=8, color="#2e8b57")
viewer.add_plugin(trees.spec())

viewer.show()

Examples

The example/ folder contains comprehensive Jupyter notebooks demonstrating all features.

Setup for examples:

# Clone the repository
git clone https://github.com/AlejoDuarte23/aps-viewer-sdk.git
cd aps-viewer-sdk

# Install dependencies including examples group
uv sync --group examples

# Create .env file with your APS credentials
cp .env.example .env
# Edit .env with your CLIENT_ID, CLIENT_SECRET, TEST_URN

1. Highlight Elements in Scene

example/1 - highlight_elements_in_scene/color_elements_from_scene.ipynb

  • Upload and translate Revit models using aps_automation_sdk
  • Extract element metadata and external IDs
  • Color-code all elements with random colors
  • Perfect for QA/QC and visual analysis workflows

2. Add 3D Meshes to Scene

example/2 - add_meshes_to_scene/add_trees_to_scene.ipynb

  • Use the OverlayMeshes plugin to add custom 3D geometries
  • Create stylized trees with boxes (trunks) and cones (canopy)
  • Position and style custom meshes in 3D space
  • Demonstrates combining primitive shapes into complex objects

3. Add 2D Circle Markers

example/3 - add_circles_2d_view/add_circles_to_2d_view.ipynb

  • Use the Draw2DCircles plugin for interactive 2D annotations
  • Click-to-place circle markers on floor plans and elevations
  • Customize circle appearance (radius, color)
  • Ideal for markup and inspection workflows

Each notebook includes detailed explanations, parameter documentation, and use case examples.

Each notebook includes detailed explanations, parameter documentation, and use case examples.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aps_viewer_sdk-0.1.1.tar.gz (70.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aps_viewer_sdk-0.1.1-py3-none-any.whl (27.5 kB view details)

Uploaded Python 3

File details

Details for the file aps_viewer_sdk-0.1.1.tar.gz.

File metadata

  • Download URL: aps_viewer_sdk-0.1.1.tar.gz
  • Upload date:
  • Size: 70.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.7

File hashes

Hashes for aps_viewer_sdk-0.1.1.tar.gz
Algorithm Hash digest
SHA256 d46fe2f8f30c8e205812a3365437dbe4715161120a79737d786b4ee1af62d09a
MD5 505ccbff5357e5caa2406e804f8c9a10
BLAKE2b-256 e5ac847866597cea8684082f95c658874f428b474570719f9ec37597a53d0d7a

See more details on using hashes here.

File details

Details for the file aps_viewer_sdk-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for aps_viewer_sdk-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6dac08b3a660fb03f0f71c3d9e55b23c8363c12b0485b0ccef0cb262537ee72c
MD5 616075fcdf7ec14111665139e4e01e7e
BLAKE2b-256 d137b5a4f22834d7316352cd73a0f1fcc4b1c73432bbf1d9ca740e7d4d64bf91

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page