---
# System prepended metadata

title: Gerando volumes simples em 3D

---

### Espaço de Tecnologias e Artes - Sesc Avenida Paulista 
## Grupo de estudos em Python 

### `hackmd.io/@sesc-av-paulista/estudos-em-python-23-setembro`


#  Gerando volumes simples em 3D


Bibliotecas

- `shapely`: faz operações com polígonos, e é a base para ferramentas de cartografia e dados georeferenciados tais como `geopandas`
- `trimesh` produz e opera sobre malhas tridimensionais (*3D meshes*)

[Colab `ipynb` Notebook da atividade](https://colab.research.google.com/drive/1elap1d2JRvOJ7FdQhVJ-Jxunib0iKFR9?usp=sharing)


### Agora no Thonny com `py5`...

O sistema de coordenadas do `py5` é diferente do sistema do `shapely`. O do `py5` tem a origem no canto superior esquerdo. O do `shapely` é no canto inferior esquerdo.

https://abav.lugaralgum.com/material-aulas/Processing-Python-py5/shapely-e-trimesh.html

```python=
import trimesh
import py5

def setup():
    global caixa_furada
    py5.size(500, 500, py5.P3D)
    py5.no_stroke()
    furo_central = translated_box(0, 0, 0, 100, 300, 100)
    caixa_furada = translated_box(0, 0, 0, 200).difference(furo_central)  
    
    
def draw():
    py5.background(150, 0, 150)
    py5.lights()
    py5.translate(py5.width / 2, py5.height / 2)
    py5.rotate_y(py5.radians(py5.mouse_x))
    py5.rotate_x(py5.radians(py5.mouse_y))
    py5.shape(caixa_furada)
    py5.save('out.png')


def translated_box(x, y, z, w, h=None, d=None):
    h = h or w
    d = d or h
    mesh = trimesh.creation.box((w, h, d))
    mesh.apply_translation((x, y, z))  # modifica a manha!
    return mesh

py5.run_sketch()
```

# Exemplo com tipografia

https://github.com/villares/villares.github.io/blob/main/selected-work/py5band/py5band.py


![result](https://hackmd.io/_uploads/S1z4P_g3el.png)



## Conversas paralelas:

### Aulas de Macramè e instrumentos

https://www.sescsp.org.br/programacao/

Curso do Danilo em outubro para fazer flautas!

### SQL
SQL (Structured Query Language)
ORM são ferramentas para acessar 

https://docs.sqlalchemy.org/en/20/orm/