Custom picoCAD Shapes Guide

last updated

Changelog

Changes to the book's content
  1. : uploaded to site

Introduction

picoCAD is a neat lo-fi 3D modelling tool with a very small range of default shapes: cubes, a few types of prism, square pyramids, and planes. You can edit these by deleting or extruding faces in the app, but there are some shapes you just can't build that way.

However, if you open a picoCAD project file in a text editor you can directly edit existing shapes or even build new ones by adding corners/vertices and faces. This guide includes mesh data for 12 new shapes you can copy directly into a picoCAD file.

The shape demo images were processed using Lucatronica's picoCAD web viewer.

Using These Shapes

  1. Save your project file in picoCAD, then select “View files”, find your project, and open it in a text editor. You want something like Notepad or TextEdit, not a full-on word processor.

  2. Find the percent sign (%) in the file. This divides the object data at the top of the file from the texture data at the bottom. Right before the percent sign there's a closing/right brace (})—this marks the end of the list of objects. Each object is then wrapped in its own pair of braces ({…}).

  3. Add a comma after the last object's closing brace, then paste in the custom shape data after that.

  4. Save the project file in the text editor, then drag and drop it back into picoCAD to load it back into the app.

For example, here's a project file with a single cube (I've cut the texture data after the %):

picocad;demo;16;1;0
{
{
 name='cube', pos={0,0,0}, rot={0,0,0},
 v={
  {-0.5,-0.5,-0.5},
  {0.5,-0.5,-0.5},
  {0.5,0.5,-0.5},
  {-0.5,0.5,-0.5},
  {-0.5,-0.5,0.5},
  {0.5,-0.5,0.5},
  {0.5,0.5,0.5},
  {-0.5,0.5,0.5}
 },
 f={
  {1,2,3,4, c=11, uv={5.5,0.5,6.5,0.5,6.5,1.5,5.5,1.5} },
  {6,5,8,7, c=11, uv={5.5,0.5,6.5,0.5,6.5,1.5,5.5,1.5} },
  {5,6,2,1, c=11, uv={5.5,0.5,6.5,0.5,6.5,1.5,5.5,1.5} },
  {5,1,4,8, c=11, uv={5.5,0.5,6.5,0.5,6.5,1.5,5.5,1.5} },
  {2,6,7,3, c=11, uv={5.5,0.5,6.5,0.5,6.5,1.5,5.5,1.5} },
  {4,3,7,8, c=11, uv={5.5,0.5,6.5,0.5,6.5,1.5,5.5,1.5} }
 } 
}
}%

Which looks (something) like this:

If you wanted to add a tetrahedron, you'd add a comma after the last shape in the list (the cube), then paste in the tetrahedron's data afterwards (new text is marked):

picocad;demo;16;1;0
{
{
 name='cube', pos={0,0,0}, rot={0,0,0},
 v={
  {-0.5,-0.5,-0.5},
  {0.5,-0.5,-0.5},
  {0.5,0.5,-0.5},
  {-0.5,0.5,-0.5},
  {-0.5,-0.5,0.5},
  {0.5,-0.5,0.5},
  {0.5,0.5,0.5},
  {-0.5,0.5,0.5}
 },
 f={
  {1,2,3,4, c=11, uv={5.5,0.5,6.5,0.5,6.5,1.5,5.5,1.5} },
  {6,5,8,7, c=11, uv={5.5,0.5,6.5,0.5,6.5,1.5,5.5,1.5} },
  {5,6,2,1, c=11, uv={5.5,0.5,6.5,0.5,6.5,1.5,5.5,1.5} },
  {5,1,4,8, c=11, uv={5.5,0.5,6.5,0.5,6.5,1.5,5.5,1.5} },
  {2,6,7,3, c=11, uv={5.5,0.5,6.5,0.5,6.5,1.5,5.5,1.5} },
  {4,3,7,8, c=11, uv={5.5,0.5,6.5,0.5,6.5,1.5,5.5,1.5} }
 } 
},{
 name='tetrahedron', pos={0,0,0}, rot={0,0,0},
 v={
  {0.943,0.5,0},
  {-0.471,0.5,0.816},
  {-0.471,0.5,-0.816},
  {0,-0.8329,0}
 },
 f={
  {3,1,2, c=11, uv={3,0,2,1.25,1,0} },
  {4,2,1, c=11, uv={8,1.25,9,0,7,0} },
  {4,1,3, c=11, uv={6,1.25,5,0,7,0} },
  {2,4,3, c=11, uv={5,0,4,1.25,3,0} }
 }
}
}%

Which looks (something) like this:

Errors

If your project file's improperly formatted then picoCAD will immediately crash when you load it in. Don't worry, your file's safe—you just need to fix whatever problem's written in there. Close the app and go back to your project file in a text editor.

Double-check that your file's formatted as described above: the list of objects should be wrapped in braces, each object should be wrapped in braces, and each object except the last should have a comma afterwards. After the objects there should be a percent sign, followed by the texture data (which you shouldn't need to edit).

Platonic Solids

Platonic solids are five 3-dimensional shapes whose faces are also regular 2-dimensional shapes. All the edges of a Platonic solid are the same length and all its internal angles are the same size. The five Platonic solids are:

  • tetrahedron
  • cube (already in picoCAD)
  • octahedron
  • dodecahedron
  • icosahedron

Most of the Platonic solids included in this file are provided in two forms: on-grid and off-grid. The coordinates for on-grid forms are in steps of 0.25; the coordinates for off-grid forms are much more precise. However, the differences are still pretty small.

I recommend using the on-grid forms, because picoCAD forces any node you select onto the grid, so there's no way to make sure your off-grid shapes will stay off-grid.

Tetrahedron

The regular tetrahedron has 4 vertices and 4 faces, each an equilateral triangle.

This is the data for an on-grid tetrahedron:

{
 name='tetrahedron', pos={0,0,0}, rot={0,0,0},
 v={
  {1,0.5,0},
  {-0.5,0.5,0.75},
  {-0.5,0.5,-0.75},
  {0,-0.75,0}
 },
 f={
  {3,1,2, c=11, uv={3,0,2,1.25,1,0} },
  {4,2,1, c=11, uv={8,1.25,9,0,7,0} },
  {4,1,3, c=11, uv={6,1.25,5,0,7,0} },
  {2,4,3, c=11, uv={5,0,4,1.25,3,0} }
 } 
}

This is the data for an off-grid, i.e. more-perfect, tetrahedron:

{
 name='tetrahedron', pos={0,0,0}, rot={0,0,0},
 v={
  {0.943,0.5,0},
  {-0.471,0.5,0.816},
  {-0.471,0.5,-0.816},
  {0,-0.8329,0}
 },
 f={
  {3,1,2, c=11, uv={3,0,2,1.25,1,0} },
  {4,2,1, c=11, uv={8,1.25,9,0,7,0} },
  {4,1,3, c=11, uv={6,1.25,5,0,7,0} },
  {2,4,3, c=11, uv={5,0,4,1.25,3,0} }
 } 
}

Octahedron

The regular octahedron has 6 vertices and 8 faces, each an equilateral triangle. A triangular antiprism is technically also an octahedron, but the two shapes in this guide are oriented differently.

Octahedral coordinates are all on-grid, so there's only one form:

{
 name='octahedron', pos={0,0,0}, rot={0,0,0},
 v={
  {1,0,0},
  {-1,0,0},
  {0,1,0},
  {0,-1,0},
  {0,0,1},
  {0,0,-1}
 },
 f={
  {4,5,1, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {4,1,6, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {4,6,2, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {4,2,5, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {3,1,5, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {3,5,2, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {3,2,6, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {3,6,1, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} }
 } 
}

Dodecahedron

The regular dodecahedron has 20 vertices and 12 faces, each a regular pentagon.

This is the data for an on-grid dodecahedron:

{
 name='dodecahedron', pos={0,0,0}, rot={0,0,0},
 v={
  {-1,-1,1},
  {1,-1,1},
  {-1,1,1},
  {-1,-1,-1},
  {1,1,1},
  {1,-1,-1},
  {-1,1,-1},
  {1,1,-1},
  {-1.5,-0.5,0},
  {1.5,-0.5,0},
  {-1.5,0.5,0},
  {1.5,0.5,0},
  {0,-1.5,0.5},
  {0,-1.5,-0.5},
  {0,1.5,0.5},
  {0,1.5,-0.5},
  {-0.5,0,1.5},
  {-0.5,0,-1.5},
  {0.5,0,1.5},
  {0.5,0,-1.5}
 },
 f={
  {2,19,5,12,10, c=12, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} },
  {6,10,12,8,20, c=12, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} },
  {10,6,14,13,2, c=12, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} },
  {1,17,19,2,13, c=12, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} },
  {3,15,5,19,17, c=12, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} },
  {5,15,16,8,12, c=12, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} },
  {15,3,11,7,16, c=12, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} },
  {16,7,18,20,8, c=12, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} },
  {18,4,14,6,20, c=12, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} },
  {9,1,13,14,4, c=12, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} },
  {1,9,11,3,17, c=12, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} },
  {9,4,18,7,11, c=12, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} }
 } 
}

This is the data for an off-grid, i.e. more-perfect, dodecahedron:

{
 name='dodecahedron', pos={0,0,0}, rot={0,0,0},
 v={
  {-1,-1,1},
  {1,-1,1},
  {-1,1,1},
  {-1,-1,-1},
  {1,1,1},
  {1,-1,-1},
  {-1,1,-1},
  {1,1,-1},
  {-1.618,-0.618,0},
  {1.618,-0.618,0},
  {-1.618,0.618,0},
  {1.618,0.618,0},
  {0,-1.618,0.618},
  {0,-1.618,-0.618},
  {0,1.618,0.618},
  {0,1.618,-0.618},
  {-0.618,0,1.618},
  {-0.618,0,-1.618},
  {0.618,0,1.618},
  {0.618,0,-1.618}
 },
 f={
  {2,19,5,12,10, c=12, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} },
  {6,10,12,8,20, c=12, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} },
  {10,6,14,13,2, c=12, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} },
  {1,17,19,2,13, c=12, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} },
  {3,15,5,19,17, c=12, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} },
  {5,15,16,8,12, c=12, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} },
  {15,3,11,7,16, c=12, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} },
  {16,7,18,20,8, c=12, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} },
  {18,4,14,6,20, c=12, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} },
  {9,1,13,14,4, c=12, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} },
  {1,9,11,3,17, c=12, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} },
  {9,4,18,7,11, c=12, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} }
 } 
}

Icosahedron

The regular icosahedron has 12 vertices and 20 faces, each an equilateral triangle.

This is the data for an on-grid icosahedron:

{
 name='icosahedron', pos={0,0,0}, rot={0,0,0},
 v={
  {0,1,1.5},
  {0,-1,1.5},
  {0,1,-1.5},
  {0,-1,-1.5},
  {1,1.5,0},
  {-1,1.5,0},
  {1,-1.5,0},
  {-1,-1.5,0},
  {1.5,0,1},
  {-1.5,0,1},
  {1.5,0,-1},
  {-1.5,0,-1}
 },
 f={
  {1,6,5, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {1,5,9, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {1,9,2, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {1,2,10, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {1,10,6, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {4,8,7, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {4,7,11, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {4,11,3, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {4,3,12, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {4,12,8, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {2,9,7, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {8,2,7, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {10,2,8, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {12,10,8, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {6,10,12, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {3,6,12, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {5,6,3, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {11,5,3, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {9,5,11, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {7,9,11, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} }
 } 
}

This is the data for an off-grid, i.e. more-perfect, icosahedron:

{
 name='icosahedron', pos={0,0,0}, rot={0,0,0},
 v={
  {0,1,1.618},
  {0,-1,1.618},
  {0,1,-1.618},
  {0,-1,-1.618},
  {1,1.618,0},
  {-1,1.618,0},
  {1,-1.618,0},
  {-1,-1.618,0},
  {1.618,0,1},
  {-1.618,0,1},
  {1.618,0,-1},
  {-1.618,0,-1}
 },
 f={
  {1,6,5, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {1,5,9, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {1,9,2, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {1,2,10, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {1,10,6, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {4,8,7, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {4,7,11, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {4,11,3, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {4,3,12, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {4,12,8, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {2,9,7, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {8,2,7, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {10,2,8, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {12,10,8, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {6,10,12, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {3,6,12, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {5,6,3, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {11,5,3, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {9,5,11, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} },
  {7,9,11, c=8, uv={2,0.5,2.5,1.5,1.5,1.5} }
 } 
}

Pyramids

picoCAD includes square pyramids by default, and the Platonic solids above include a triangular pyramid (the tetrahedron), but no larger bases. Below you can find data for pyramids of the larger prisms included in picoCAD's primitives.

Pentagonal pyramid

{
 name='pent_pyramid', pos={0,0,0}, rot={0,0,0},
 v={
  {0.75,0.5,0.5},
  {-0.25,0.5,0.75},
  {-0.75,0.5,0},
  {-0.25,0.5,-0.75},
  {0.75,0.5,-0.5},
  {0,-0.5,0}
 },
 f={
  {1,2,3,4,5, c=14, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} },
  {2,6,3, c=14, uv={7.5,1.5,7.5,0.5,8.5,0.5} },
  {3,6,4, c=14, uv={7.5,1.5,7.5,0.5,8.5,0.5} },
  {4,6,5, c=14, uv={7.5,1.5,7.5,0.5,8.5,0.5} },
  {5,6,1, c=14, uv={8.5,0.5,8.5,1.5,7.5,1.5} },
  {1,6,2, c=14, uv={7.5,1.5,7.5,0.5,8.5,0.5} }
 } 
}

Hexagonal pyramid

{
 name='hex_pyramid', pos={0,0,0}, rot={0,0,0},
 v={
  {-0.75,0.5,0.5},
  {-0.75,0.5,-0.5},
  {0,0.5,-1},
  {0.75,0.5,-0.5},
  {0.75,0.5,0.5},
  {0,0.5,1},
  {0,-0.5,0}
 },
 f={
  {1,2,3,4,5,6, c=13, uv={9.5,0.25,10.5,0.25,11,1,10.5,1.75,9.5,1.75,9,1} },
  {2,7,3, c=13, uv={10.5,0.5,10.5,1.5,9.5,1.5} },
  {3,7,4, c=13, uv={10.5,0.5,10.5,1.5,9.5,1.5} },
  {4,7,5, c=13, uv={10.5,0.5,10.5,1.5,9.5,1.5} },
  {5,7,6, c=13, uv={9.5,1.5,9.5,0.5,10.5,0.5} },
  {6,7,1, c=13, uv={10.5,0.5,10.5,1.5,9.5,1.5} },
  {1,7,2, c=13, uv={10.5,0.5,10.5,1.5,9.5,1.5} }
 } 
}

Octagonal pyramid

{
 name='oct_pyramid', pos={0,0,0}, rot={0,0,0},
 v={
  {-0.75,0.5,-0.25},
  {-0.25,0.5,-0.75},
  {0.25,0.5,-0.75},
  {0.75,0.5,-0.25},
  {0.75,0.5,0.25},
  {0.25,0.5,0.75},
  {-0.25,0.5,0.75},
  {-0.75,0.5,0.25},
  {0,-0.5,0}
 },
 f={
  {1,2,3,4,5,6,7,8, c=9, uv={11.5,0,12.5,0,13,0.5,13,1.5,12.5,2,11.5,2,11,1.5,11,0.5} },
  {1,9,2, c=9, uv={12.5,0.5,12.5,1.5,11.5,1.5} },
  {2,9,3, c=9, uv={12.5,0.5,12.5,1.5,11.5,1.5} },
  {3,9,4, c=9, uv={12.5,0.5,12.5,1.5,11.5,1.5} },
  {4,9,5, c=9, uv={12.5,0.5,12.5,1.5,11.5,1.5} },
  {5,9,6, c=9, uv={12.5,0.5,12.5,1.5,11.5,1.5} },
  {6,9,7, c=9, uv={12.5,0.5,12.5,1.5,11.5,1.5} },
  {7,9,8, c=9, uv={12.5,0.5,12.5,1.5,11.5,1.5} },
  {8,9,1, c=9, uv={12.5,0.5,12.5,1.5,11.5,1.5} }
 } 
}

Antiprisms

Antiprisms are like ordinary prisms, in that they have two end faces with the same shape connected by joining faces down the length of the prism. In an ordinary prism, the joining faces are rectangular (or square). In an antiprism, there are twice as many and they're triangular, and one of the ends is normally rotated a little in the prism's main axis.

This file includes antiprism versions of every prism included in picoCAD's primitive shapes.

Triangular antiprism

An octahedron is technically also a triangular antiprism, but the two shapes in this guide are oriented differently.

{
 name='tri_antiprism', pos={0,0,0}, rot={0,0,0},
 v={
  {0,0.75,-1},
  {0.75,0.75,0.5},
  {-0.75,0.75,0.5},
  {0,-0.75,1},
  {0.75,-0.75,-0.5},
  {-0.75,-0.75,-0.5}
 },
 f={
  {1,2,3, c=7, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {5,6,4, c=7, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {1,5,2, c=8, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {2,5,4, c=9, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {4,3,2, c=8, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {3,4,6, c=9, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {6,1,3, c=8, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {1,6,5, c=9, uv={4,0.5,4.5,1.5,3.5,1.5} }
 } 
}

Square antiprism

{
 name='quad_antiprism', pos={0,0,0}, rot={0,0,0},
 v={
  {0,-0.5,-0.75},
  {0.75,-0.5,0},
  {0.5,0.5,-0.5},
  {-0.5,0.5,-0.5},
  {-0.75,-0.5,0},
  {0,-0.5,0.75},
  {0.5,0.5,0.5},
  {-0.5,0.5,0.5}
 },
 f={
  {5,6,2,1, c=8, uv={5.5,0.5,6.5,0.5,6.5,1.5,5.5,1.5} },
  {4,3,7,8, c=8, uv={5.5,0.5,6.5,0.5,6.5,1.5,5.5,1.5} },
  {1,2,3, c=12, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {1,3,4, c=11, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {6,5,8, c=12, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {6,8,7, c=11, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {5,1,4, c=12, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {5,4,8, c=11, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {2,6,7, c=12, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {2,7,3, c=11, uv={4,0.5,4.5,1.5,3.5,1.5} }
 } 
}

Pentagonal antiprism

{
 name='pent_antiprism', pos={0,0,0}, rot={0,0,0},
 v={
  {0.75,0.5,0.5},
  {-0.25,0.5,0.75},
  {-0.75,0.5,0},
  {-0.25,0.5,-0.75},
  {0.75,0.5,-0.5},
  {0.75,-0.5,0},
  {0.25,-0.5,0.75},
  {-0.75,-0.5,0.5},
  {-0.75,-0.5,-0.5},
  {0.25,-0.5,-0.75}
 },
 f={
  {1,2,3,4,5, c=12, uv={7.5,1.5,7.25,0.5,8,0,8.75,0.5,8.5,1.5} },
  {7,6,10,9,8, c=12, uv={8.75,0.5,8.5,1.5,7.5,1.5,7.25,0.5,8,0} },
  {2,7,8, c=10, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {2,8,3, c=8, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {3,8,9, c=10, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {3,9,4, c=8, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {4,9,10, c=10, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {4,10,5, c=8, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {6,1,5, c=8, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {6,5,10, c=10, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {1,6,7, c=10, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {1,7,2, c=8, uv={4,0.5,4.5,1.5,3.5,1.5} }
 } 
}

Hexagonal antiprism

{
 name='hex_antiprism', pos={0,0,0}, rot={0,0,0},
 v={
  {1,-0.5,0},
  {0.5,-0.5,-0.75},
  {-0.5,-0.5,-0.75},
  {-1,-0.5,0},
  {-0.5,-0.5,0.75},
  {0.5,-0.5,0.75},
  {0.75,0.5,0.5},
  {0.75,0.5,-0.5},
  {0,0.5,-1},
  {-0.75,0.5,-0.5},
  {-0.75,0.5,0.5},
  {0,0.5,1}
 },
 f={
  {1,2,3,4,5,6, c=15, uv={9.5,0.25,10.5,0.25,11,1,10.5,1.75,9.5,1.75,9,1} },
  {8,7,12,11,10,9, c=15, uv={9.5,0,10.5,0,11,1,10.5,2,9.5,2,9,1} },
  {2,8,9, c=13, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {2,9,3, c=3, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {3,9,10, c=13, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {3,10,4, c=3, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {4,10,11, c=13, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {4,11,5, c=3, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {12,6,5, c=3, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {12,5,11, c=13, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {6,12,7, c=13, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {6,7,1, c=3, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {1,7,8, c=13, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {1,8,2, c=3, uv={4,0.5,4.5,1.5,3.5,1.5} }
 } 
}

Octagonal antiprism

{
 name='oct_antiprism', pos={0,0,0}, rot={0,0,0},
 v={
  {0.5,-0.5,-0.5},
  {0,-0.5,-0.75},
  {-0.5,-0.5,-0.5},
  {-0.75,-0.5,0},
  {-0.5,-0.5,0.5},
  {0,-0.5,0.75},
  {0.5,-0.5,0.5},
  {0.75,-0.5,0},
  {0.75,0.5,-0.25},
  {0.25,0.5,-0.75},
  {-0.25,0.5,-0.75},
  {-0.75,0.5,-0.25},
  {-0.75,0.5,0.25},
  {-0.25,0.5,0.75},
  {0.25,0.5,0.75},
  {0.75,0.5,0.25}
 },
 f={
  {1,2,3,4,5,6,7,8, c=4, uv={11.5,0,12.5,0,13,0.5,13,1.5,12.5,2,11.5,2,11,1.5,11,0.5} },
  {16,15,14,13,12,11,10,9, c=4, uv={11,0.5,11.5,0,12.5,0,13,0.5,13,1.5,12.5,2,11.5,2,11,1.5} },
  {1,9,10, c=0, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {1,10,2, c=7, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {2,10,11, c=0, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {2,11,3, c=7, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {3,11,12, c=0, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {3,12,4, c=7, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {4,12,13, c=0, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {4,13,5, c=7, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {5,13,14, c=0, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {5,14,6, c=7, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {6,14,15, c=0, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {6,15,7, c=7, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {7,15,16, c=0, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {7,16,8, c=7, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {8,16,9, c=0, uv={4,0.5,4.5,1.5,3.5,1.5} },
  {8,9,1, c=7, uv={4,0.5,4.5,1.5,3.5,1.5} }
 } 
}