DirectShape ceiling pattern alignment

Hi everyone,
I’m automating ceiling creation in Revit with the DirecShape command.
After the “fake” ceiling elements are placed, I’d like to align their material pattern with project geometry.

I dug into solid/face/material/grid…etc deconstruction, but didn’t find the proper functionality.
This is what I know so far:
Thanks!

import clr
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *
import System
from System import Guid
clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

doc = DocumentManager.Instance.CurrentDBDocument

#get directshape ceiling elements
elems = UnwrapElement(IN[0])

#get single element for testing
ceiling = elems[0]

#geometric objects from ceiling element
geoobj = ceiling.GetGeometryObjectFromReference(Reference(ceiling))

faces = [obj.Faces for obj in geoobj][0]
surfs = [face.GetSurface() for face in faces]

#materials parsing
matids = [face.MaterialElementId for face in faces]
mats, matnames = [doc.GetElement(id) for id in matids],[doc.GetElement(id).Name for id in matids]
pats = [doc.GetElement(mat.SurfaceForegroundPatternId).GetFillPattern() for mat in mats]
patgrids = [pat.GetFillGrids()[0] for pat in pats]
griddir = [grid.GetHatchingDirection().ToProtoType() for grid in patgrids]
gridangles = [grid.Angle for grid in patgrids]

#DS geometry
origin = [face.Origin.ToPoint() for face in faces]
edges = [face.EdgeLoops[0] for face in faces][0]
protocrvs = [edge.AsCurve().ToProtoType() for edge in edges]

#transaction
TransactionManager.Instance.EnsureInTransaction(doc)
#...?
TransactionManager.Instance.TransactionTaskDone()

OUT = faces, surfs, mats, matnames, origin, protocrvs, pats, patgrids, griddir, gridangles