def larExtrude(model, pattern):
"""Multidimensional extrusion
model is a LAR model: a pair (vertices, cells)
pattern is a list of positive and negative sizes (multi-extrusion)
Return a "model"
"""
V, FV = model
d, m = len(FV[0]), len(pattern)
coords = list(cumsum([0] + (AA(ABS)(pattern))))
offset, outcells, rangelimit = len(V), [], d * m
for cell in FV:
tube = [v + k * offset for k in range(m + 1) for v in cell]
cellTube = [tube[k : k + d + 1] for k in range(rangelimit)]
outcells += [reshape(cellTube, newshape=(m, d, d + 1)).tolist()]