I would like to use Extrusion to generate a block between the points (1/3, 1/3, 1/3) and (2/3,2/3,2/3). This is what I’ve got so far, but it isn’t working. Any ideas how to work it out?
from ngsolve import *
from netgen.csg import *
geo = CSGeometry()
left = Plane (Pnt(0,0,0), Vec(-1,0,0) )
right = Plane (Pnt(1,1,1), Vec( 1,0,0) )
front = Plane (Pnt(0,0,0), Vec(0,-1,0) )
back = Plane (Pnt(1,1,1), Vec(0, 1,0) )
bot = Plane (Pnt(0,0,0), Vec(0,0,-1) )
top = Plane (Pnt(1,1,1), Vec(0,0, 1) )
cube = left * right * front * back * bot * top
pnts = [ (0.333333333333333,0.333333333333333,0.333333333333333),
(0.333333333333333,0.666666666666667,0.333333333333333),
(0.666666666666667,0.666666666666667,0.333333333333333),
(0.666666666666667,0.333333333333333,0.333333333333333) ]
segs = [ (0,1), (1,2), (2,3), (3,0)]
spline = SplineCurve3d()
for pnt in pnts:
spline.AddPoint (*pnt)
for seg in segs:
spline.AddSegment (seg)
path = SplineCurve3d()
path.AddPoint(0.5,0.5,0.333333333333333)
path.AddPoint(0.5,0.5,0.666666666666667)
path.AddSegment(0,1)
hole = Extrusion(path, spline, Vec(0,1,0))
geo.Add (cube-hole)
geo.Add (cubehole)
geo.PeriodicSurfaces(left,right)
geo.PeriodicSurfaces(bot,top)
geo.PeriodicSurfaces(front,back)
geo.Draw()
mesh = geo.GenerateMesh(maxh=1)
mesh.Save(“Chen_B_0333_h1.vol”)
#quit()