Published September 17, 2025 | Version 1.0.0
Software Open

cadog - CAD Web Viewer

  • 1. ROR icon Helmut Schmidt University

Description

NAME
====
cadog - CAD Web Viewer

 

COMPILATION

===========

This project uses org-mode (https://orgmode.org/) literate programming.The source code and documentation are written together in 'cadog.org', which is tangled to generate the actual source code files.


DESCRIPTION
===========
cadog is a web-based tool for creating and viewing implosion animations of CAD models. It supports OBJ, GLB, and STEP formats with a focus on generating implosion animations manually or using schema methods with the help of a Language Model (LLM).

NOTE
=====

The source file is a literate Org-mode document. Use Emacs to tangle and generate the file tree:

FEATURES
========
- Import 3D files (OBJ, GLB, STEP) into a Three.js scene.
- Switch between views, select, and group model parts.
- Create implosion animation sequences.
- Fly-In Parts feature with linear or ease-in-out interpolation.
- Choose between group or sequential fly-in for each part.
- Specify custom or random direction vectors for animations.
- Apply transformations to selected View Groups.
- Use LLM to generate implosion animation schemas.
- Export and import animation sequences and transformation data as JSON.

REQUIREMENTS
============
Install required software from requirements.txt.

PROJECT STRUCTURE
=================

Key files:
1. flask_app.py             - Main backend Flask application.
2. index.html               - Frontend HTML interface.
3. style.css                - Frontend styling.
4. SceneManager.js          - Three.js scene management.
5. FileLoader.js            - Load 3D model files.
6. AnimationManager.js      - Manage animations.
7. animationEffects.js      - Animation effects implementation.
8. app.js                   - Main frontend JavaScript logic.
9. llm.js                   - LLM schema methods.
10. utils.js                - Utility functions.

 

ANIMATION STEPS
===============

1. Upload model (OBJ/GLB/STEP)  
2. Select & group parts  
3. Choose animation (Implode/Fly-In)  
4. Set mode, easing, direction  
5. (Opt) Generate schema via LLM  
6. Preview → Adjust → Export JSON

 

Run with Docker
===============

1. Make sure to tangle the repo and include
   - flask_app.py
   - requirements.txt
   - index.html, style.css, and JS files

2. Create a file named: Dockerfile
-----------------------------------------------------------
FROM python:3.11-slim

ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1

WORKDIR /app

COPY requirements.txt /app/
RUN pip install --no-cache-dir -r requirements.txt

COPY . /app

EXPOSE 8000

CMD ["gunicorn", "-b", "0.0.0.0:8000", "flask_app:app", "--workers", "2", "--threads", "4", "--timeout", "120"]
-----------------------------------------------------------

3. Build the Docker image:
   docker build -t cadog:latest .

4. Run the container:
   docker run --rm -p 8080:8000 -v "$(pwd)/data:/app/data" --name cadog cadog:latest

5. Open your browser:
   http://localhost:8080

Notes:
- The container runs Gunicorn serving Flask on port 8000.
- Port 8080 on the host maps to 8000 inside the container.
- Mounting ./data is optional for your imported CAD files.
- Stop the container with CTRL+C.

VIDEO DEMO
==================

https://youtu.be/6Ch4sPOk_kM

ACKNOWLEDGEMENT

==================

The project "Fab City – Decentralized Digital Production for Urban Value Creation" is funded by dtec.bw and supported by the European Union – NextGenerationEU.

Files

cadog-v1.0.0.zip

Files (50.1 kB)

Name Size Download all
md5:8f8c0e5de35111593da61a2f9c720e16
50.1 kB Preview Download

Additional details

Software

Repository URL
https://github.com/jcmariscal/cadog
Development Status
Wip