COMPAS

A Python-based, open source computational framework for research and collaboration in AEFC.

Introduction

Research and development in Architecture, Engineering, Fabrication, and Construction is a highly multi-disciplinary process in which the know-how, tools, habits and idiosyncrasies of many different participants with various technical and theoretical backgrounds have to be combined to solve the pressing and challenging problems of the building and construction industry.

COMPAS was created to simplify collaboration and exchange between the various groups and individuals involved in this process.

The framework consists of a general-purpose core library, consisting of 5 Python packages (compas, compas_blender, compas_ghpython, compas_plotters, compas_rhino), and a growing collection of extensions that provide easy access to peer-reviewed research, state-of-the-art external libraries, and tools with specialized functionality for AEFC applications.

Python

COMPAS is written in the Python programming language. Python is easy to learn and use, has an easy to read syntax that resembles natural language, has a very large and active community of users and developers, and can be used for many different tasks on virtually all platforms. It has many useful builtin features and packages, and hundreds of scientific add-ons and frameworks that make it a great choice for academic research.

Easy interoperability with other programming languages allow it to be used to create bindings for external libraries without much effort, and it's availability as scripting language in many different software provides an easy mechanism to glue together the various tools involved in AEFC research and development.

COMPAS Core

The main library of the COMPAS framework consists of five python packages:

  • compas

  • compas_blender

  • compas_ghpython

  • compas_plotters

  • compas_rhino

The core package (compas) defines all functionality for geometry processing, data structures, topology algorithms, numerical methods, robotics fundamentals, the plugin mechanism, remote procedure calls, etc. This core functionality can be used independently of CAD systems in any environment that supports Python programming.

compas_plotters provides and easy to use framework for basic 2D visualizations based on Matplotlib (https://matplotlib.org/).

Although the core package can be used directly in any environment that supports Python scripting, the CAD packages (compas_blender, compas_ghpython, compas_rhino) add specific support for Blender Rhino and Grasshopper, by providing a unified framework for reading and writing CAD geometry, for visualization of COMPAS geometry, data structures, and robots, and for basic user interaction.

Core package

Description

compas.artists

Abstract infrastructure for visualization.

compas.data

JSON support, data and json schemas, serialisation mechanisms.

compas.datastructures

Graph, Halfedge, Halfface, Network, Mesh, VolMesh, Assembly

compas.files

Readers and writers for various file formats.

compas.geometry

Primitives, Shapes, Polygonal surfaces, Boolean operations, ...

compas.numerical

Matrices, Linear Algebra, Solvers

compas.robots

Robot fundamentals

compas.rpc

Remote Procedure Calls

compas.topology

Combinatorial algorithms, Traversal, Searches, ...

compas.utilities

Colors, ???

COMPAS Extensions

COMPAS has a growing collection of extensions that provide easy access to peer-reviewed research, state-of-the-art external libraries such as CGAL, libigl and Triangle, and tools with specialized functionality for AEFC applications such as Abaqus, ANSYS, SOFISTIK, ROS, etc. The table below lists some of the extensions that are available on compas-dev.

Extension

Description

Robotic fabrication package for the COMPAS Framework.

Slicing package for FDM 3D Printing with COMPAS.

COMPAS package for working with CGAL.

COMPAS Remote Procedure Calls using websockets.

GUI tool to manage COMPAS packages.

COMPAS interface for Python-Gmsh

COMPAS bindings for specific algorithms of libigl.

COMPAS wrapper for the Python bindings of OCC.

COMPAS bindings for the Triangle library.

Standalone viewer for COMPAS.

COMPAS interface to common Finite Element Analysis software.

Last updated