An open API service indexing awesome lists of open source software.

https://github.com/dbrgn/tangible

Tangible is a Python library to convert data into tangible 3D models.
https://github.com/dbrgn/tangible

Last synced: 10 months ago
JSON representation

Tangible is a Python library to convert data into tangible 3D models.

Awesome Lists containing this project

README

          

Tangible
========

.. image:: https://img.shields.io/travis/dbrgn/tangible/master.svg
:alt: Travis-CI build status
:target: http://travis-ci.org/dbrgn/tangible

.. image:: https://img.shields.io/coveralls/dbrgn/tangible/master.svg
:target: https://coveralls.io/r/dbrgn/tangible
:alt: Coverage Status

.. image:: https://img.shields.io/pypi/v/tangible.svg
:target: https://pypi.python.org/pypi/tangible/
:alt: Latest Version

.. image:: https://img.shields.io/pypi/wheel/tangible.svg
:target: https://pypi.python.org/pypi/tangible/
:alt: Wheel Availability

*Tangible* is a Python library to convert data into tangible 3D models. It
generates code for different backends like *OpenSCAD* or *ImplicitCAD*. It is
inspired by projects like *OpenSCAD* and *d3.js*.

.. image:: https://raw.github.com/dbrgn/tangible/master/example1.jpg
:alt: Example 1

Implementation
--------------

The difference from Projects like *SolidPython* is that *Tangible* is a modular
system with an intermediate representation of objects that is capable of
generating code for different backends, not just *OpenSCAD*. Additionally, its
main focus is not general CAD, but printable 3D visualization of data.

The workflow to get a real object from data is as follows::

Python code => Intermediate representation (AST) => Programmatic CAD code
=> STL file => Slicer => G code => 3D printer => Tangible object

Of these, *Tangible* does the first three steps. The fourth step is handled by
a programmatic CAD tool like *OpenSCAD* or *ImplicitCAD* and the last four
steps are handled by the specific 3D printer software.

Currently supported Python version is 2.7 and 3.4+.

This library was my student research project thesis at `HSR `_.
You can find the thesis paper here: https://files.dbrgn.ch/sa-thesis.pdf

Contributions are very welcome! Please open an issue or a pull request.

Installation
------------

You can install Tangible directly via PyPI::

pip install tangible

If you want the current development version::

pip install -e git+https://github.com/dbrgn/tangible#egg=tangible-dev


Documentation
-------------

Documentation can be found on ReadTheDocs: `http://tangible.readthedocs.org/
`_

If you want to know more about the architecture of the library, please refer to
my `thesis PDF `_.

Coding Guidelines
-----------------

`PEP8 `__ via `flake8
`_ with max-line-width set to 99 and
E126-E128,E266,E731 ignored.

All Python files must start with an UTF8 encoding declaration and some
`future-imports `_:

.. sourcecode:: python

# -*- coding: utf-8 -*-
from __future__ import print_function, division, absolute_import, unicode_literals

Docstrings convention: `Sphinx style `__.

Testing
-------

Prepare::

pip install -r requirements-dev.txt --use-mirrors
pip install -e .

Run tests::

  pytest

Violations of the PEP8 coding guidelines above will be counted as test fails.

Versioning
----------

Tangible implements `Semantic Versioning 2.0
`_.

License
-------

LGPLv3 or later `http://www.gnu.org/licenses/lgpl.html
`_