Skip to main content

Scripting library for generating axonometric drawings.

Project description

python-versions pypi license reuse-status rtd-status pipeline-status issues chat-room

Contents

What is axonometry?

Computer graphics meets architecture representation meets generative art.

axonometry is the tip of the iceberg of a PhD project at the AlICe laboratory. It is the result of a practical experimentation with questions related to the field of architectural representation, the role of computer graphics and drawing practices.

  • axonometry is a proof-of-concept about a certain way of constructing 3D representations by projection.

  • axonometry is a scripting library for generating axonometric drawings. It implements axonometric projection operations commonly used in the context of architectural representation. axonometry allows the exploration of three dimensional representation through the definition of projection operations. Think of it as a tool for generative drawing, oriented towards architectural representation.

How does it work?

axonometry is basically a wrapper for compas geometry objects and produces SVG vector files with the help of vpype.

Examples

from axonometry import Axonometry
Axonometry(15,45).save_svg("new_drawing")
./docs/source/_images/examples/new_drawing.png
from axonometry import Axonometry, Line, Point
my_axo = Axonometry.random_angles()
my_axo.draw_line(Line(Point.random_point(), Point.random_point()))
my_axo.draw_line(Line(Point.random_point(), Point.random_point()))
my_axo.draw_line(Line(Point.random_point(), Point.random_point()))
my_axo.show_paths()
./docs/source/_images/usage/draw_axo_lines.png
from axonometry import Axonometry, Line, Point
my_axo = Axonometry.random_angles()
l_xy = my_axo.xy.draw_line(Line(Point.random_point("xy"), Point.random_point("xy")))
l_xy.project_into_surface(distance=50/2, length=50)
l_yz = my_axo.yz.draw_line(Line(Point.random_point("yz"), Point.random_point("yz")))
l_yz.project_into_surface(distance=50/2, length=50)
l_zx = my_axo.zx.draw_line(Line(Point.random_point("zx"), Point.random_point("zx")))
l_zx.project_into_surface(distance=50/2, length=50)
my_axo.show_paths()
./docs/source/_images/usage/proj_line_to_surface.png
from axonometry import Axonometry
my_axo = Axonometry.random_angles()
my_axo.import_obj_file("./examples/monkey.obj")
my_axo.show_paths()
./docs/source/_images/examples/monkey_system.png

Installation

Please refer to the install section for detailed installation instructions.

TL;DR:

  • Python 3.12 is recommended, but axonometry is also compatible with Python 3.10 and 3.11.

  • uv is the recommended package manager.

# Install uv on Linux and macOS
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install uv on Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# Get Python 3.12
uv python install 3.12
# Make virtual environment
uv venv
# Install axonometry
uv pip install axonometry

Contributing

All type of feedback is welcome. Contributions can take any form and do not necessarily require software development skills! Check the Contributing section for more information.

Acknowledgement

Many thanks to the developers of compas and vpype. Not only did their libraries make this project possible, but inspecting their elegant codebase was an invaluable resource for deepening my Pyhton knowledge.

License

This project is licensed under the GPLv3 License. Check the Liceneses section for more information.

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

axonometry-0.1.4b9.tar.gz (30.2 kB view details)

Uploaded Source

Built Distribution

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

axonometry-0.1.4b9-py3-none-any.whl (31.4 kB view details)

Uploaded Python 3

File details

Details for the file axonometry-0.1.4b9.tar.gz.

File metadata

  • Download URL: axonometry-0.1.4b9.tar.gz
  • Upload date:
  • Size: 30.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for axonometry-0.1.4b9.tar.gz
Algorithm Hash digest
SHA256 ddedc45b1622b121226ff5d53315166a816f559ec0bc5567b43ccd1f01ee7b09
MD5 fa9a7332bf32a70d9636181ea7a9da8e
BLAKE2b-256 b8c38f7aedcb7f5f64d0fca7e98c96aeb9e8394d6e45927a40837e37f088aefd

See more details on using hashes here.

File details

Details for the file axonometry-0.1.4b9-py3-none-any.whl.

File metadata

  • Download URL: axonometry-0.1.4b9-py3-none-any.whl
  • Upload date:
  • Size: 31.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for axonometry-0.1.4b9-py3-none-any.whl
Algorithm Hash digest
SHA256 887b9c481dc227d10275e7ad1c61ba00b629c2c13b3a772f03d6662915444f23
MD5 6d5fec8631ba928e9b1591b1173eee28
BLAKE2b-256 e19103c24f038e7f5c26c365dbe779dc6636cabc6362def868ce1f7fe7ab875a

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