# How to get the vector of vertices and connectivity

**URL:** <https://discourse.julialang.org/t/how-to-get-the-vector-of-vertices-and-connectivity/124563>\
**Category:** General Usage\
**Tags:** meshes\
**Created:** [January 9, 2025, 3:37am UTC](https://discourse.julialang.org/t/how-to-get-the-vector-of-vertices-and-connectivity/124563 "2025-01-09T03:37:04Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Mizu49](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mizu49/32/46338_2.png) [@Mizu49](https://discourse.julialang.org/u/Mizu49)\
**Post date:** [January 9, 2025, 3:37am UTC](https://discourse.julialang.org/t/how-to-get-the-vector-of-vertices-and-connectivity/124563/1 "2025-01-09T03:37:04Z")

</div>

How can I obtain the vectors of the vertices and connectivity from the primitive geometry defined by `Meshes.jl`?

```julia

julia> b = Meshes.Box((0.0, 0.0, 0.0), (1.0, 1.0, 1.0))
Box
├─ min: Point(x: 0.0 m, y: 0.0 m, z: 0.0 m)
└─ max: Point(x: 1.0 m, y: 1.0 m, z: 1.0 m)

julia> b = discretize(b)
5 SimpleMesh
  8 vertices
  ├─ Point(x: 0.0 m, y: 0.0 m, z: 0.0 m)
  ├─ Point(x: 1.0 m, y: 0.0 m, z: 0.0 m)
  ├─ Point(x: 1.0 m, y: 1.0 m, z: 0.0 m)
  ├─ Point(x: 0.0 m, y: 1.0 m, z: 0.0 m)
  ├─ Point(x: 0.0 m, y: 0.0 m, z: 1.0 m)
  ├─ Point(x: 1.0 m, y: 0.0 m, z: 1.0 m)
  ├─ Point(x: 1.0 m, y: 1.0 m, z: 1.0 m)
  └─ Point(x: 0.0 m, y: 1.0 m, z: 1.0 m)
  5 elements
  ├─ Tetrahedron(1, 5, 6, 8)
  ├─ Tetrahedron(1, 3, 4, 8)
  ├─ Tetrahedron(1, 3, 6, 8)
  ├─ Tetrahedron(1, 2, 3, 6)
  └─ Tetrahedron(3, 6, 7, 8)

```

What I want is

```julia
vertices = [
    [0.0, 0.0, 0.0]
    [1.0, 0.0, 0.0]
    [1.0, 1.0, 0.0]
    [0.0, 1.0, 0.0]
    [0.0, 0.0, 1.0]
    [1.0, 0.0, 1.0]
    [1.0, 1.0, 1.0]
    [0.0, 1.0, 1.0]
]

connectivity = [
    [1, 5, 6, 8]
    [1, 3, 4, 8]
    [1, 3, 6, 8]
    [1, 2, 3, 6]
    [3, 6, 7, 8]
]

```

---

<div class="post-metadata">

**Author:** ![raman\_kumar](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/raman_kumar/32/26782_2.png) [@raman\_kumar](https://discourse.julialang.org/u/raman_kumar)\
**Post date:** [January 9, 2025, 6:39am UTC](https://discourse.julialang.org/t/how-to-get-the-vector-of-vertices-and-connectivity/124563/2 "2025-01-09T06:39:40Z")

</div>

You can use [`to` function](https://juliageometry.github.io/MeshesDocs/stable/geometries/primitives/#Meshes.to-Tuple%7BPoint%7D) to turn point into vector.

```julia
using Meshes, Unitful
b = Meshes.Box((0.0, 0.0, 0.0), (1.0, 1.0, 1.0))
b = discretize(b)
A = to.(b.vertices)
vertices = [[v[1].val, v[2].val, v[3].val] for v in A]
connectivity = [collect(tetra.indices) for tetra in b.topology.connec]

```

---

<div class="post-metadata">

**Author:** ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)\
**Post date:** [January 9, 2025, 8:24am UTC](https://discourse.julialang.org/t/how-to-get-the-vector-of-vertices-and-connectivity/124563/3 "2025-01-09T08:24:54Z")

</div>

You can use `vertices(mesh)` to get the list of vertices. For the list of connectivities you can `collect(topology(mesh))`.

In practice you rarely need to collect the connectivities. You can iterate over the topology instead:

```julia
for c in topology(mesh)
  indices(c)
end

```

---

<div class="post-metadata">

**Author:** ![Mizu49](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mizu49/32/46338_2.png) [@Mizu49](https://discourse.julialang.org/u/Mizu49)\
**Post date:** [January 10, 2025, 1:43am UTC](https://discourse.julialang.org/t/how-to-get-the-vector-of-vertices-and-connectivity/124563/4 "2025-01-10T01:43:53Z")

</div>

Thank you very much! That resolved my issue!
