Projects

Examples of software developed for design, engineering and manufacturing: complete applications, plugins that extend CAD tools, and systems for robotic fabrication.

Applications

Architectural CAD software

Desktop CAD application

Developed a complete standalone architectural CAD application, including its geometric modeling tools, interactive 3D workspace, user interface and document system.

The editor combines direct solid modeling with procedural building design in a shared editing environment, with reusable components, material controls and GIS and terrain integration.

Details: Architectural CAD software

Application architecture

Tools and interaction

  • Commands and tool system
  • Object and sub-object selection
  • Snapping and manipulators

Direct modeling

  • Solid creation and booleans
  • Face editing and transformations
  • Fillets and chamfers

Building generation

  • Editable masses and floor definitions
  • Facades, cores and openings
  • Area and volume calculations

Document model

  • Objects and component instances
  • Materials and object properties
  • Undo / redo and clipboard
  • Document storage

Parasolid kernel

  • Solid modeling and topology
  • Geometric operations

Unity display

  • Viewport and camera navigation
  • Materials and real-time lighting
  • Clipping and section views

Site context

  • GIS and map integration
  • Terrain and surrounding buildings
Direct modeling and procedural building tools edit a shared document, linked to the geometry kernel, display and site data.

Editing environment

Direct modeling tools include solid creation, boolean operations, fillets, chamfers and transformations. A common tool system handles selection, snapping and editing, supported by document storage and undo/redo.

The C# application integrates the Parasolid solid-modeling kernel with Unity's interactive 3D display.

Procedural building design

Building geometry is generated from an editable mass and parameters for floors, facade walls, cores and openings. Floor definitions can be reused at multiple levels, with geometry recalculated when the building changes.

Generated building elements remain part of the editing environment, so procedural generation and direct modeling can be used together.

Port terminal design

Web CAD application

Developed a web CAD application for port terminal design, with connected models of berths, quay walls, container yards and handling equipment.

Layout edits preserve relationships between terminal components and supply quantity reports for comparing design options.

Details: Port terminal design

Layout and engineering objects

The TypeScript application combines an interactive CAD editor with a port-specific object model. Berths reference quay walls, vessels are positioned within berths, and container blocks and equipment use catalog definitions.

A reusable CAD core provides geometry operations. The port layer adds domain-specific objects, relationships and rules, with catalogs for vessels, equipment and display styles.

Project data and reports

The saved project combines the terminal geometry with its engineering objects and catalogs. Reports draw on this model to count berths, container blocks and equipment for each design option.

Coastal engineering CAD

Web application · React / Three.js

Developed a web-based CAD application for dredging, land reclamation and coastal structures. The software combines seabed surveys and ground models with parametric design tools to calculate excavation, fill and rock quantities.

Engineers can edit designs in plan, 3D and section views, inspect ground conditions and compare excavation, fill and rock quantities as designs change.

Details: Coastal engineering CAD

Drawing and editing

The TypeScript application uses React and Three.js. Its editing environment includes drawing and transformation tools, snapping, measurements, numeric property editing and undo/redo. Users can save projects in the browser or exchange portable project files.

Surveys and ground models

Bathymetric and topographic surveys form the terrain model, with geographic placement, elevation colors and contours. Borehole data describes the soil layers beneath it, supporting ground-model visualization, sections and excavation quantities by soil type.

Marine works and quantities

Dredging basins, channels and reclamation areas are defined by alignments, levels and slopes. Parametric cross-sections define coastal structures and their material layers. The resulting 3D geometry supports quantity calculations for excavation, fill and individual rock layers.

BIM coordination software

Desktop, web and backend development

Developed the model-conversion backend, desktop review application and web account-management tools for a collaborative BIM platform.

Together, they connect 3D models, element information, drawings and project issues in a shared workspace for construction teams.

Details: BIM coordination software

Models and project information

A C#/.NET service converted Navisworks models into the product's glTF-based format, retaining the element properties needed for BIM review.

The Unity application organizes models by project and discipline. Users can navigate the 3D model, inspect element properties and work with associated drawings and issue records.

Collaboration and access

Shared model sessions support collaborative review. A React web application manages user accounts, company membership and project access, integrated with the desktop application and AWS-hosted services.

Computer vision for stadium-seat inventory

Computer vision · Web application

Developed a computer-vision system that converts stadium-seat photographs into a structured inventory.

Image classification, number recognition and positional checks identify each seat, while a web application lets users review and correct records before export to inventory and sales systems.

Details: Computer vision for stadium-seat inventory

Image processing and inventory review

Photograph batches

  • Sector folders
  • Seats and row labels
  • Ordered image sequences

Image classification

  • Client-supplied training examples
  • Seat types and row-label images
  • Prediction confidence

Number recognition

  • OCR of seat labels
  • Missing or unreadable numbers

Photo order and location

  • Sector and photo order
  • Row-label boundaries
  • Expected seat sequence

Inventory records

  • Sector, row and seat identifiers
  • Seat type and source photograph
  • Recognition and sequence checks
  • Records flagged for review

Review application

  • Photograph and record comparison
  • Filters for uncertain results
  • Seat-type and number corrections
  • Conflicting identifier checks

Inventory export

  • Reviewed CSV records
  • Photograph references
Image recognition and photograph order are combined to identify seats. Users review uncertain or conflicting records before export.

Classification and recognition

An image classifier trained on client-supplied examples identifies seat types, while number recognition reads seat labels. Sector folders, photograph order and row-label images help assign each seat's location when a number is difficult to read. Uncertain or conflicting results are flagged for review.

Review and export

The web application displays records alongside their source photographs. Users can correct seat type, row and number, including categories added after classifier training, then export the reviewed records as CSV for inventory and sales software developed by other teams.

CAD plugins and automation

Automated BIM for modular housing

Backend service · Revit / Rhino / Grasshopper

Developed an automated service that converts modular house designs from a web configurator into Revit BIM models for construction.

A shared generation engine applies the manufacturer's component and layout rules, with supporting Revit, Rhino and Grasshopper tools for catalog preparation, testing and model inspection.

Details: Automated BIM for modular housing

Shared generation architecture

Client's web configurator

  • House configurations
  • Generation requests

Component catalogs

  • Reusable room templates and Revit families
  • Component types, materials and parameters

Automated service

  • Job retrieval and validation
  • Catalog loading and caching
  • AWS S3 outputs and job status

Revit plugin

  • Catalog preparation
  • Family and template setup
  • Model generation

Grasshopper plugin

  • Rhino.Inside.Revit
  • Parametric generation
  • Model inspection

Rhino plugin

  • Rhino geometry
  • Configuration inspection

Revit integration

  • Native BIM elements
  • Revit types and parameters
  • Revit files and GLB export

Shared C# engine

  • Layout validation and room adjacency
  • Levels and component placement
  • Wall, floor and facade geometry
  • Catalog and building rules
The automated service and interactive tools share the same C# generation rules. Revit integration turns the resulting geometry and component data into native BIM elements.

From house configurations to BIM

Reusable Revit room templates hold the manufacturer's component definitions. The engine resolves building levels, adjoining rooms and component placement, accounting for size changes, rotation and mirroring.

The resulting walls, floors, ceilings, openings, stairs and facade systems are native Revit elements with their types and parameters.

Shared generation engine

The C# library keeps layout and geometry rules separate from the host APIs. Revit and Rhino plugins use this core; Rhino.Inside.Revit connects Grasshopper to the Revit generation workflow for interactive testing and inspection.

Automated processing

The service retrieves jobs, house layouts and catalogs from AWS S3, generates Revit files and GLB models for web viewing, and uploads the results.

Marine design software

Technical consulting · Shared libraries and infrastructure

Provided technical consulting and developed shared software for a marine-engineering suite built by several teams. The work covered architecture and package integration, common drawing tools, automated releases, installation and licensing.

The suite's Rhino and Grasshopper tools support the design of coastal structures and quay walls, producing 3D models, drawings and quantity calculations.

Details: Marine design software

Architecture and integration

Architecture and code reviews addressed package boundaries, shared data structures, geometry workflows and framework choices, with ongoing advice on performance and compatibility.

Repository templates, C#/.NET guidelines and Git management established a consistent development structure across teams. Shared interfaces gave the engineering tools a common way to supply geometry, materials and drawing data.

Shared drawing tools

Common C# libraries turn the packages' 3D geometry into Rhino drawings: projections, hidden lines, sections and page layouts with title blocks and scaled views. Material and drawing services apply shared layer, line and hatch conventions.

The libraries and associated Grasshopper components are distributed as NuGet packages, so each team can use the same drawing and document functionality in its own tools.

Coordinated releases

A GitHub Actions pipeline builds approved package versions, checks dependency conflicts and combines them into a single Yak installer for Rhino. Releases record the included source versions and are distributed through the portal.

Licensing portal

A C#/.NET backend and React/TypeScript portal integrate Rhino Accounts authentication with Cloud Zoo licensing. Users can download the suite, while administrators manage licenses and review audit records. License checks govern both installer access and use of the plugins inside Rhino and Grasshopper.

CAD integrations for design collaboration

Rhino / Revit / SketchUp plugins

Developed Rhino, Revit and SketchUp plugins for an architectural design-review platform.

The plugins embed the platform's interface and transfer models to its 3D viewer, allowing reviewers to participate without using the CAD application.

Details: CAD integrations for design collaboration

Host integration

The Rhino plugin hosts the platform's React interface in a WebView, with a bridge to model operations. Revit and SketchUp use their own host APIs for model access and geometry transfer, while reusing the platform's interface.

Medical brace design

Rhino plugin

Developed a Rhino plugin for medical brace design, delivered through a software development partner.

It supports body-scan preparation, measurement, template fitting and detailed shape adjustment, with export for manufacturing.

Details: Medical brace design

Scan preparation and fitting

The C# plugin uses RhinoCommon to align and trim scan meshes. Measurements guide the initial fitting of a brace template; dedicated tools then adjust local contours and shape. Specialists inspect the model and make the fitting decisions.

The software distinguishes measurement-driven fitting from later manual edits. Point selection in the 3D view is connected to measurement tables and the resulting geometry.

Saved work and export

Documents retain the scan, measurement sections and adjusted brace. Reusable templates have their own file format, and completed geometry exports as STL for manufacturing.

Residential feasibility software

Rhino plugin

Developed a Rhino plugin for early design studies of apartment, co-living and hotel developments.

It connects editable floor layouts, area schedules and 3D massing so designers can assess building options within one model.

Details: Residential feasibility software

Floor and unit definitions

The C# plugin uses reusable floor definitions that can be shared across levels. Designers edit floor parameters and define unit types by area and minimum width.

Rhino plugin for AI rendering

Rhino plugin

Developed a Rhino plugin that supplies an AI architectural rendering product with aligned color, depth and surface-normal images from the model's current view.

Robotics and fabrication

Robots

Open source · Rhino / Grasshopper / .NET

We created and maintain Robots, an open-source library and Grasshopper plugin for industrial robot programming. The work spans robot kinematics, motion simulation, controller-code generation and integration with Rhino and custom .NET applications.

Originally developed at UCL, Robots has been used at more than 70 universities and design schools worldwide. Published research and independent extensions cover construction, manufacturing and robotic measurement.

Explore Robots, its applications and references

Robotic 3D printing

Grasshopper plugins · Robot programming

Developed custom Grasshopper plugins and robot programs for robotic extrusion across manufacturing and research projects.

The work includes slicing, planar and nonplanar toolpaths, deposition previews and extrusion control linked to robot speed.

Details: Robotic 3D printing

Robot programming

Manufacturing work included ABB programs coordinating deposition and travel moves with extrusion-motor movement, tool frames and printing speeds.

Slicing and toolpaths

A custom C# Grasshopper plugin provides mesh slicing, planar and nonplanar spiral paths, configurable extrusion settings and a deposited-material preview. It uses Robots for robot-program generation and simulation.

Extrusion calibration

A separate Grasshopper plugin supports bead dimensions, flow calibration, tool orientation, and approach and retract moves. It generates ABB OmniCore programs with extrusion output proportional to robot speed.

CAM integration for six-axis milling

CAM integration · Robot commissioning

Integrated RhinoCAM and PowerMILL toolpaths with Robots for a six-axis milling cell at a design and material research facility. The work covered toolpath conversion, robot simulation and controller-program generation, together with commissioning the cell.

Robotic clay extrusion and sensing

Process control · Robot programming

Developed robot programs and process-control plugins for a clay-extrusion research cell, coordinating printing paths, material dispensing and checks on temperature and material supply between layers.

Web-controlled robot installation

Robot programming · Web integration

Developed software and robot programs for a storefront installation that wrote messages submitted online onto a shop window.

The system generated writing paths, returned a webcam recording to the sender and cleared the window for the next message.