geocache export
import maya.cmds as cmds
import maya.mel as mel
def export_cache(members, path, name, frame_from, frame_to, world):
maya_version = int(cmds.about(version=True).split()[0])
version = 6 if maya_version >= 2013 else 4
args = [
0, # 0 -> Use provided start/end frame.
frame_from,
frame_to,
"OneFilePerFrame", # File distribution mode.
0, # Refresh during caching?
path, # Directory for cache files.
0, # Create cache per geometry?
name, # Name of cache file.
0, # Is that name a prefix?
"export", # Action to perform.
1, # Force overwrites?
1, # Simulation rate.
1, # Sample multiplier.
0, # Inherit modifications from cache to be replaced?
1, # Save as floats.
]
if version >= 6:
args.extend((
"mcc", # Cache format.
int(world), # Save in world space?
))
cmds.refresh(suspend=True)
original_selection = cmds.ls(selection=True)
hidden_layers = [layer for layer in cmds.ls(type="displayLayer") or () if not cmds.getAttr(layer + '.visibility')]
try:
for layer in hidden_layers:
cmds.setAttr(layer + '.visibility', True)
cmds.select(members, replace=True)
mel.eval('doCreateGeometryCache %s { %s }' % (
version,
', '.join('"%s"' % x for x in args),
))
finally:
# Restore selection.
if original_selection:
cmds.select(original_selection, replace=True)
else:
cmds.select(clear=True)
# Restore visibility
for layer in hidden_layers:
cmds.setAttr(layer + '.visibility', False)
# Restore refresh
cmds.refresh(suspend=False)