As you have already stated, they can import in a non face DNA file and then clear the scene which will preserve the export options.
No options present doesn’t stop the user from hitting save, it will default to the Body DNA 2.X and use previously saved defaults.
Export via Python with the above snippet (or something similar)
from pathlib import Path
from mh_pose_editor import api
pose_editor = api.PoseEditor()
# ----------------------------------------------------------------------------- #
# Pick which solvers go into the DNA.
# pose_editor.rbf_solvers -> every UERBFSolverNode in the scene (this is also the
# default if you pass solvers=None to serialize_to_file).
# ----------------------------------------------------------------------------- #
solvers = pose_editor.rbf_solvers
# ----------------------------------------------------------------------------- #
# All export options for body DNA (MHB.X), from BodyExportProperties /
# Serializer.serialize() in model/serializers/dna_serializer_2_5.py.
# Values below are the defaults.
# ----------------------------------------------------------------------------- #
export_settings = {
# Write the mesh/geometry blocks into the DNA.
# NOTE: even with this off, meshes in the scene are still inspected to work
# out LOD settings for the skeleton and RBF layers.
"export_geometry": True,
# Only valid when export_geometry is True.
# True -> use the current selection's meshes
# False -> use every mesh in the scene
"export_selected_geometry": False,
# Write the RBF solver layers (poses, drivers, driven joints).
"export_rbf": True,
# Write the SwingTwistEvaluatorNode setups.
"export_swing_twist": True,
# Optional: pre-built [solver.data(enum_values=False), ...] list. Leave it out
# and the serializer builds it itself; supply it to avoid re-querying Maya if
# you already have it.
# "solver_data_cache": [s.data(enum_values=False) for s in solvers],
}
model = pose_editor.serialize_to_file(
file_path=Path("D:/exports/my_character_body.dna"),
solvers=solvers,
# model=<pre-built MHDNAModel>, # skips re-serializing the scene entirely
**export_settings,
)
print(f"Exported {len(solvers)} solver(s): {model.descriptor.db_name}")