# Which features can I use to create geometries in Tidy3D?

| Date       | Category    |
|------------|-------------|
| 2023-12-06 22:52:18 | Structures |


Tidy3D offers four primitive geometric shapes: [Box](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.Box.html?__hstc=197414576.85a08fc595b47d0b94ebfa20ba44cd6d.1696006513341.1701896316776.1701901226721.28&amp;__hssc=197414576.3.1701901226721&amp;__hsfp=3209960735), [Cylinder](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.Cylinder.html?__hstc=197414576.85a08fc595b47d0b94ebfa20ba44cd6d.1696006513341.1701896316776.1701901226721.28&amp;__hssc=197414576.3.1701901226721&amp;__hsfp=3209960735), [Sphere](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.Sphere.html?__hstc=197414576.85a08fc595b47d0b94ebfa20ba44cd6d.1696006513341.1701896316776.1701901226721.28&amp;__hssc=197414576.3.1701901226721&amp;__hsfp=3209960735), and [PolySlab](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.PolySlab.html?__hstc=197414576.85a08fc595b47d0b94ebfa20ba44cd6d.1696006513341.1701896316776.1701901226721.28&amp;__hssc=197414576.3.1701901226721&amp;__hsfp=3209960735). An extensive array of intricate geometrical configurations can be defined from these fundamental building blocks by manipulating their properties and hierarchical arrangements. For instance, our tutorials on the [Luneburg lens waveguide size converter](https://www.flexcompute.com/tidy3d/examples/notebooks/WaveguideSizeConverter/?__hstc=197414576.85a08fc595b47d0b94ebfa20ba44cd6d.1696006513341.1701896316776.1701901226721.28&amp;__hssc=197414576.3.1701901226721&amp;__hsfp=3209960735) and the [Fresnel lens](https://www.flexcompute.com/tidy3d/examples/notebooks/FresnelLens/?__hstc=197414576.85a08fc595b47d0b94ebfa20ba44cd6d.1696006513341.1701896316776.1701901226721.28&amp;__hssc=197414576.3.1701901226721&amp;__hsfp=3209960735) showcase the creation of curved surfaces through the strategic layering of cylindrical elements.

Beyond the in-built primitives, Tidy3D accommodates external geometrical specifications in either the [GDS](https://www.flexcompute.com/tidy3d/examples/notebooks/GDSImport/?__hstc=197414576.85a08fc595b47d0b94ebfa20ba44cd6d.1696006513341.1701896316776.1701901226721.28&amp;__hssc=197414576.3.1701901226721&amp;__hsfp=3209960735) or [STL](https://www.flexcompute.com/tidy3d/examples/notebooks/STLImport/?__hstc=197414576.85a08fc595b47d0b94ebfa20ba44cd6d.1696006513341.1701896316776.1701901226721.28&amp;__hssc=197414576.3.1701901226721&amp;__hsfp=3209960735) file formats, allowing users to import custom geometries created in their preferred design tools. Additionally, compatibility with external libraries like [gdstk](https://heitzmann.github.io/gdstk/) and [shapely](https://shapely.readthedocs.io/en/stable/index.html) opens the gateway to even more complex geometric possibilities. Using [gdstk](https://heitzmann.github.io/gdstk/) to create various waveguide structures has been demonstrated in various examples, such as the[polarization](https://www.flexcompute.com/tidy3d/examples/notebooks/90BendPolarizationSplitterRotator/?__hstc=197414576.85a08fc595b47d0b94ebfa20ba44cd6d.1696006513341.1701896316776.1701901226721.28) splitter and rotator based on 90-degree bends](https://www.flexcompute.com/tidy3d/examples/notebooks/90BendPolarizationSplitterRotator/?__hstc=197414576.85a08fc595b47d0b94ebfa20ba44cd6d.1696006513341.1701896316776.1701901226721.28&amp;__hssc=197414576.3.1701901226721&amp;__hsfp=3209960735). Additionally, you can create complex geometries using the [Trimesh](https://trimsh.org/index.html) library, as demonstrated in [this tutorial](https://www.flexcompute.com/tidy3d/examples/notebooks/CreatingGeometryUsingTrimesh/). 
