{
MESSAGE("Start check function dependencies...");
+ // Special case for function dumped from Python, because it's appended to
+ // description of other function that should be rejected early.
+ if (IsFunctionSetFromPython(aDescr)) {
+ MESSAGE("Function set from Python. Do process with updated description.");
+ return UPDATE_DESCRIPTION;
+ }
+
TDF_LabelSequence aSeq;
theFunction->GetDependency(aSeq);
const Standard_Integer aLen = aSeq.Length();
}
if (!theProcessed.Contains(aDepLabel)) {
- // Special case for function dumped from Python, because it's appended to
- // description of other function that should be rejected early.
- // TODO: it's not clear if we need to check every given function or
- // checking on this level is enough. At this moment it's better to stay here
- // for performance reason.
- if (IsFunctionSetFromPython(aDescr)) {
- MESSAGE("Function set from Python. Do process with updated description.");
- return UPDATE_DESCRIPTION;
- }
-
MESSAGE("The dependency label is not in processed list. Do not process.");
return NOT_PROCESS;
}
return module
+def make_dump_args(algo_name, args_dict_str, is_dump_on, is_copy_on):
+ """
+ Prepares a string with arguments for writing the execute() function to a python dump.
+
+ Args:
+ algo_name - an algorithm's name.
+ args_dict_str - string with all the args passed into the given algo.
+ is_dump_on - do we need to write to dump.
+ is_copy_on - do we need to copy selected object.
+
+ Returns:
+ A string with arguments divided by comma.
+ """
+
+ algo_name_str = str(algo_name)
+ is_dump_str = str(is_dump_on)
+ is_copy_str = str(is_copy_on)
+
+ return '\'' + algo_name_str + '\', ' + args_dict_str + ', ' + is_dump_str + ', ' + is_copy_str
+
+
+def save_to_dump(geompy, selected_object, result_object, args_str):
+ """
+ Record the function call for a python dump.
+
+ Args:
+ geompy - geomBuilder object.
+ selected_object - an object selected for repairation.
+ result_object - a result object after algo applied.
+ args_str - string with all the args for execute() function.
+
+ Returns:
+ None.
+ """
+
+ # Importing everything from GEOM is a shorter way to fix arguments like GEOM.EDGE,
+ # because calling str(GEOM.EDGE) results with 'EDGE' instead of 'GEOM.EDGE',
+ # that leads to 'NameError: name 'EDGE' is not defined' on attempt to load the dump.
+ # Could be narrowed down to 'from GEOM import EDGE, FACE' and so on,
+ # if we are sure about limited set of definitions.
+ import_str = 'from salome.geom.geomrepairadv import geomrepairadv_execute\nfrom GEOM import *\n'
+ func_name = 'geomrepairadv_execute.execute'
+
+ geompy.FuncToPythonDump(
+ selected_object,
+ result_object,
+ import_str,
+ func_name,
+ args_str
+ )
+
+ logger.debug(f'{func_name} function prepared for Python dump with args: \n\t{args_str}')
+
+
def execute(selected_object, algo_name, args_dict, is_dump_on = True, is_copy_on = True):
"""
Executes GEOM advanced repair algorithm.
return None
if is_dump_on:
- geompy.FuncToPythonDump(
- selected_object,
- result_object,
- 'from salome.geom.geomrepairadv import geomrepairadv_execute\n',
- 'geomrepairadv_execute.execute',
- '\'' + str(algo_name) + '\', ' + args_dict_str
- )
+ args_str = make_dump_args(algo_name, args_dict_str, is_dump_on, is_copy_on)
+ save_to_dump(geompy, selected_object, result_object, args_str)
return result_object