Source code for mm.scene
import mmapi;
from convert import *;
[docs]def open_mix(remote, path):
"""Open a .mix file at the given location"""
cmd = mmapi.StoredCommands()
cmd.AppendSceneCommand_OpenMixFile(path)
remote.runCommand(cmd)
[docs]def save_mix(remote, path):
"""Save the current scene as a .mix file at the given location"""
cmd = mmapi.StoredCommands()
cmd.AppendSceneCommand_ExportMixFile(path)
remote.runCommand(cmd)
[docs]def append_objects_from_file(remote, filename):
"""Read objects from a mesh file, append them to the scene, and return a list of new object IDs"""
cmd = mmapi.StoredCommands()
key = cmd.AppendSceneCommand_AppendMeshFile(filename);
remote.runCommand(cmd)
new_objs_vec = mmapi.vectori()
cmd.GetSceneCommandResult_AppendMeshFile(key, new_objs_vec)
return vectori_to_list(new_objs_vec)
[docs]def list_objects(remote):
"""Return a list of object IDs for the current scene"""
cmd1 = mmapi.StoredCommands()
key1 = cmd1.AppendSceneCommand_ListObjects()
remote.runCommand(cmd1)
objects = mmapi.vectori()
cmd1.GetSceneCommandResult_ListObjects(key1, objects)
return vectori_to_list(objects)
[docs]def list_selected_objects(remote):
"""Returns a list of object IDs for the current set of selected scene objects"""
cmd1 = mmapi.StoredCommands()
key1 = cmd1.AppendSceneCommand_ListSelectedObjects()
remote.runCommand(cmd1)
objects = mmapi.vectori()
cmd1.GetSceneCommandResult_ListObjects(key1, objects)
return vectori_to_list(objects)
[docs]def list_selected_groups(remote):
"""Returns a list of unique facegroup IDs for the current face selection (requires an active selection)"""
cmd1 = mmapi.StoredCommands()
key1 = cmd1.AppendSelectCommand_ListSelectedFaceGroups()
remote.runCommand(cmd1)
groups1 = mmapi.vectori()
cmd1.GetSelectCommandResult_ListSelectedFaceGroups(key1, groups1);
return vectori_to_list(groups1);
[docs]def select_objects(remote, objects_list):
"""Set the current objects selection to be the set of scene objects corresponding to the IDs in objects_list"""
select_objects = mmapi.vectori();
for object in objects_list:
select_objects.push_back(object);
cmd2 = mmapi.StoredCommands()
cmd2.AppendSceneCommand_SelectObjects(select_objects)
remote.runCommand(cmd2)
[docs]def delete_objects(remote, objects_list):
"""Delete the scene objects corresponding to the IDs in objects_list"""
cur_selection = list_selected_objects(remote)
select_objects(remote, objects_list)
cmd = mmapi.StoredCommands()
cmd.AppendSceneCommand_DeleteSelectedObjects();
remote.runCommand(cmd)
select_objects(cur_selection, remote)
[docs]def get_object_name(remote, object_id):
"""Return the string name of the scene object with the given ID"""
cmd = mmapi.StoredCommands()
cmd_key = cmd.AppendSceneCommand_GetObjectName(object_id)
remote.runCommand(cmd)
obj_name_vec = mmapi.vectorub()
cmd.GetSceneCommandResult_GetObjectName(cmd_key, obj_name_vec)
obj_name = vectorub_to_string(obj_name_vec)
return obj_name
[docs]def set_object_name(remote, object_id, new_name):
"""Modify the string name of the scene object with the given ID"""
cmd = mmapi.StoredCommands()
cmd.AppendSceneCommand_SetObjectName(object_id, new_name)
remote.runCommand(cmd)
[docs]def find_object_by_name(remote, obj_name):
"""Find the ID of the scene object with the given string name. Returns a 2-tuple (boolFound, object_id)"""
cmd = mmapi.StoredCommands()
cmd_key = cmd.AppendSceneCommand_FindObjectByName(obj_name)
remote.runCommand(cmd)
result_val = mmapi.any_result()
bFound = cmd.GetSceneCommandResult_FindObjectByName(cmd_key, result_val)
return (bFound, result_val.i)
[docs]def set_as_target(remote):
"""Set the current scene object as the Target object"""
cmd = mmapi.StoredCommands()
cmd.AppendSceneCommand_SetAsTarget();
remote.runCommand(cmd)
[docs]def clear_target(remote):
"""clear the current Target object setting"""
cmd = mmapi.StoredCommands()
cmd.AppendSceneCommand_ClearTarget();
remote.runCommand(cmd)