In [1]:
from netgen.occ import *
from netgen.webgui import Draw as DrawGeo
In [2]:
# added dummy pnt at beginning to keep 1-based indexing
pnts = [ (0,0,0), (0.0,1.0,1.18), (0.34,2.3,1.18), (0.0,2.3,1.18), (0.34,1.0,1.18), \
        (0.34,2.3,1.74), (0.34,1.0,1.74), (0.84,2.3,1.74), (0.84,1.0,1.74), \
        (0.84,2.3,1.18), (0.84,1.0,1.18), (0.92,2.3,1.18), (0.92,1.0,1.18), \
        (0.92,2.3,0.6), (0.92,1.0,0.6), (0.0,2.3,0.6), (0.0,1.0,0.6) ]

vts = [ Vertex(pi) for pi in pnts ]

trigs = [ (1, 2, 3), (1, 4, 2), (4, 5, 2), (4, 6, 5), (6, 7, 5), (6, 8, 7), \
          (8, 9, 7), (8, 10, 9), (10, 11, 9), (10, 12, 11), (12, 13, 11), \
          (12, 14, 13), (14, 15, 13),  (14, 16, 15), (16, 3, 15), (16, 1, 3), \
          (4, 8, 6), (4, 10, 8), (4, 14, 10), (10, 14, 12), (1, 16, 4), (4, 16, 14),
          (13, 9, 11), (9, 5, 7), (15, 2, 13), (13, 2, 9), (9, 2, 5), (15, 3, 2)]
In [3]:
def MakeFace(i0,i1,i2):
    s1 = Segment (vts[i0].p, vts[i1].p)
    s2 = Segment (vts[i1].p, vts[i2].p)
    s3 = Segment (vts[i2].p, vts[i0].p)
    wire1 = Wire ([Edge(s1), Edge(s2), Edge(s3)])
    face1 = Face(wire1)
    return face1

faces = [MakeFace(*f) for f in trigs]
bnd = sum(faces)
DrawGeo (bnd);
In [4]:
sol = Solid (bnd)
DrawGeo (sol);
In [5]:
from ngsolve import *
from ngsolve.webgui import Draw
mesh = Mesh(OCCGeometry(sol).GenerateMesh(maxh=1))
In [6]:
Draw (mesh);
In [ ]: