It’s not currently possible. This might be simple to implement.
In skin.py on line 502, there is a TODO that I wrote saying to implement lattice and other skinnable objects.
First, it needs an extra elif clause looking for pm.nodetypes.Lattice. Something like this:
if isinstance(objNode.getShape(), pm.nodetypes.Mesh):
meshVertices = pm.polyEvaluate(objShapes, vertex=True)
elif isinstance(objNode.getShape(), pm.nodetypes.NurbsSurface):
# if nurbs, count the cvs instead of the vertices.
meshVertices = sum([len(shape.cv) for shape in objShapes])
elif isinstance(objNode.getShape(), pm.nodetypes.NurbsCurve):
meshVertices = sum([len(shape.cv) for shape in objShapes])
# Lattices use .pt instead of .cv or .vtx:
elif isinstance(objNode.getShape(), pm.nodetypes.Lattice):
meshVertices = sum([len(shape.pt) for shape in objShapes])
else:
meshVertices = 0
But then the rest would need to be bug-tested, since a lattice returns its points in a nested format. I’m not sure if some logic in other functions or in the data storage format would need some modification, or if it would just work in a flattened list.
There are also potential bugs when a skinned lattice is deforming a skinned object. Then you have to make sure you are returning the correct skinCluster in the history stack. If you don’t filter it properly, it can return the skinCluster of the geo that is being deformed by the lattice. I have code for this, but it has to be tested.
You are free to attempt this. Or I will hopefully take a look next week, and make a PR.