diff --git a/src/Mod/Fem/feminout/convert2TetGen.py b/src/Mod/Fem/feminout/convert2TetGen.py index cd93d52740..9f1846af43 100644 --- a/src/Mod/Fem/feminout/convert2TetGen.py +++ b/src/Mod/Fem/feminout/convert2TetGen.py @@ -47,7 +47,7 @@ def exportMeshToTetGenPoly(meshToExport, filePath, beVerbose=1): """Export mesh to TetGen *.poly file format""" # ********** Part 1 - write node list to output file if beVerbose == 1: - Console.PrintMessage("\nExport of mesh to TetGen file ...") + Console.PrintMessage("\nExport of mesh to TetGen file ...") (allVertices, allFacets) = meshToExport.Topology f = open(filePath, "w") f.write("# This file was generated from FreeCAD geometry\n") diff --git a/src/Mod/Fem/feminout/importCcxFrdResults.py b/src/Mod/Fem/feminout/importCcxFrdResults.py index e5e93df382..f916f273e0 100644 --- a/src/Mod/Fem/feminout/importCcxFrdResults.py +++ b/src/Mod/Fem/feminout/importCcxFrdResults.py @@ -215,9 +215,9 @@ def importFrd( # see error message above for more information if not res_obj: if result_name_prefix: - results_name = ("{}_Results".format(result_name_prefix)) + results_name = "{}_Results".format(result_name_prefix) else: - results_name = ("Results".format(result_name_prefix)) + results_name = "Results" res_obj = ObjectsFem.makeResultMechanical(doc, results_name) res_obj.Mesh = result_mesh_object # TODO, node numbers in result obj could be set diff --git a/src/Mod/Fem/feminout/importZ88O2Results.py b/src/Mod/Fem/feminout/importZ88O2Results.py index caa522c27f..566eb3989e 100644 --- a/src/Mod/Fem/feminout/importZ88O2Results.py +++ b/src/Mod/Fem/feminout/importZ88O2Results.py @@ -68,8 +68,8 @@ def insert( # ********* module specific methods ********* def import_z88_disp( filename, - analysis = None, - result_name_prefix = None + analysis=None, + result_name_prefix=None ): """insert a FreeCAD FEM mechanical result object in the ActiveDocument pure usage: diff --git a/src/Mod/Fem/femmesh/gmshtools.py b/src/Mod/Fem/femmesh/gmshtools.py index 44aafda0de..fba0ba36db 100644 --- a/src/Mod/Fem/femmesh/gmshtools.py +++ b/src/Mod/Fem/femmesh/gmshtools.py @@ -735,7 +735,7 @@ class GmshTools(): geo.write("\n") cpu_count = os.cpu_count() - if cpu_count != None and cpu_count > 1: + if cpu_count is not None and cpu_count > 1: geo.write("// enable multi-core processing\n") geo.write(f"General.NumThreads = {cpu_count};\n") geo.write("\n") diff --git a/src/Mod/Fem/femmesh/meshtools.py b/src/Mod/Fem/femmesh/meshtools.py index dd8671b0ea..d09b187fcd 100644 --- a/src/Mod/Fem/femmesh/meshtools.py +++ b/src/Mod/Fem/femmesh/meshtools.py @@ -27,10 +27,12 @@ __url__ = "https://www.freecadweb.org" ## \addtogroup FEM # @{ +import numpy as np + import FreeCAD from femtools import geomtools -import numpy as np + # ************************************************************************************************ def get_femnodes_by_femobj_with_references( @@ -485,7 +487,10 @@ def get_femelement_sets( # fem_objects = FreeCAD FEM document objects # get femelements for reference shapes of each obj.References count_femelements = 0 - referenced_femelements = np.zeros((max(femelement_table.keys())+1,),dtype=np.int) + referenced_femelements = np.zeros( + (max(femelement_table.keys()) + 1,), + dtype=np.int + ) has_remaining_femelements = None for fem_object_i, fem_object in enumerate(fem_objects): obj = fem_object["Object"] @@ -515,7 +520,9 @@ def get_femelement_sets( femelement_table_array = np.zeros_like(referenced_femelements) femelement_table_array[list(femelement_table.keys())] = 1 remaining_femelements_array = femelement_table_array > referenced_femelements - remaining_femelements = [ i.item() for i in np.nditer(remaining_femelements_array.nonzero()) ] + remaining_femelements = [ + i.item() for i in np.nditer(remaining_femelements_array.nonzero()) + ] count_femelements += len(remaining_femelements) for fem_object in fem_objects: obj = fem_object["Object"] @@ -933,7 +940,7 @@ def get_force_obj_edge_nodeload_table( # try debugging of the last bad refedge FreeCAD.Console.PrintMessage("DEBUGGING\n") - FreeCAD.Console.PrintMessage("\n".format(bad_refedge)) + FreeCAD.Console.PrintMessage("{}\n".format(bad_refedge)) FreeCAD.Console.PrintMessage("bad_refedge_nodes\n") bad_refedge_nodes = femmesh.getNodesByEdge(bad_refedge) @@ -949,7 +956,7 @@ def get_force_obj_edge_nodeload_table( FreeCAD.Console.PrintMessage("{}\n".format(len(bad_edge_table))) bad_edge_table_nodes = [] for elem in bad_edge_table: - FreeCAD.Console.PrintMessage(elem, " --> \n".format(bad_edge_table[elem])) + FreeCAD.Console.PrintMessage(elem, " --> {}\n".format(bad_edge_table[elem])) for node in bad_edge_table[elem]: if node not in bad_edge_table_nodes: bad_edge_table_nodes.append(node) @@ -1997,7 +2004,7 @@ def get_reference_group_elements( FreeCAD.Console.PrintError( "Error, two refshapes in References with different ShapeTypes.\n" ) - FreeCAD.Console.PrintLog("\n".format(ref_shape)) + FreeCAD.Console.PrintLog("{}\n".format(ref_shape)) found_element = geomtools.find_element_in_shape(aShape, ref_shape) if found_element is not None: elements.append(found_element) @@ -2162,8 +2169,8 @@ def sortlistoflistvalues( listoflists ): new_list = [] - for l in listoflists: - new_list.append(sorted(l)) + for li in listoflists: + new_list.append(sorted(li)) return new_list @@ -2213,7 +2220,7 @@ def is_zplane_2D_mesh( for n in femmesh.Nodes: z = femmesh.Nodes[n].z if ((0 - tol) < z < (0 + tol)) is not True: - return False + return False return True else: return False diff --git a/src/Mod/Fem/femobjects/constraint_electrostaticpotential.py b/src/Mod/Fem/femobjects/constraint_electrostaticpotential.py index dde97a7e39..640188ad7f 100644 --- a/src/Mod/Fem/femobjects/constraint_electrostaticpotential.py +++ b/src/Mod/Fem/femobjects/constraint_electrostaticpotential.py @@ -30,7 +30,6 @@ __url__ = "https://www.freecadweb.org" # \ingroup FEM # \brief constraint electrostatic potential object -from FreeCAD import Units from . import base_fempythonobject diff --git a/src/Mod/Fem/femsolver/calculix/write_femelement_geometry.py b/src/Mod/Fem/femsolver/calculix/write_femelement_geometry.py index c6b23c36f3..b8aebe1d9b 100644 --- a/src/Mod/Fem/femsolver/calculix/write_femelement_geometry.py +++ b/src/Mod/Fem/femsolver/calculix/write_femelement_geometry.py @@ -37,7 +37,7 @@ def write_femelement_geometry(f, ccxwriter): elsetdef = "ELSET={}, ".format(matgeoset["ccx_elset_name"]) material = "MATERIAL={}".format(matgeoset["mat_obj_name"]) - if "beamsection_obj"in matgeoset: # beam mesh + if "beamsection_obj" in matgeoset: # beam mesh beamsec_obj = matgeoset["beamsection_obj"] beam_axis_m = matgeoset["beam_axis_m"] # in CalxuliX called the 1direction diff --git a/src/Mod/Fem/femsolver/elmer/writer.py b/src/Mod/Fem/femsolver/elmer/writer.py index 9b45c641b7..fc4ff881b2 100644 --- a/src/Mod/Fem/femsolver/elmer/writer.py +++ b/src/Mod/Fem/femsolver/elmer/writer.py @@ -289,11 +289,11 @@ class Writer(object): self._simulation("Coordinate System", "Cartesian 3D") self._simulation("Coordinate Mapping", (1, 2, 3)) # not necessary anymore since we use SI units - #if self.unit_schema == Units.Scheme.SI2: - #self._simulation("Coordinate Scaling", 0.001) - # Console.PrintMessage( - # "'Coordinate Scaling = Real 0.001' was inserted into the solver input file.\n" - # ) + # if self.unit_schema == Units.Scheme.SI2: + # self._simulation("Coordinate Scaling", 0.001) + # Console.PrintMessage( + # "'Coordinate Scaling = Real 0.001' was inserted into the solver input file.\n" + # ) self._simulation("Simulation Type", "Steady state") self._simulation("Steady State Max Iterations", 1) self._simulation("Output Intervals", 1) diff --git a/src/Mod/Fem/femsolver/z88/tasks.py b/src/Mod/Fem/femsolver/z88/tasks.py index 0d54810cfa..64f103f65f 100644 --- a/src/Mod/Fem/femsolver/z88/tasks.py +++ b/src/Mod/Fem/femsolver/z88/tasks.py @@ -44,6 +44,7 @@ from femtools import membertools SOLVER_TYPES = ["sorcg", "siccg", "choly"] + class Check(run.Check): def run(self): @@ -103,7 +104,7 @@ class Solve(run.Solve): binary = settings.get_binary("Z88") if binary is None: self.fail() # a print has been made in settings module - + prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem/Z88") solver = SOLVER_TYPES solver = prefs.GetInt("Solver", 0) diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_electrostaticpotential.py b/src/Mod/Fem/femtaskpanels/task_constraint_electrostaticpotential.py index 1206a559f2..231b78aae1 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_electrostaticpotential.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_electrostaticpotential.py @@ -33,6 +33,7 @@ __url__ = "https://www.freecadweb.org" import FreeCAD import FreeCADGui from femguiutils import selection_widgets + from femtools import femutils from femtools import membertools @@ -111,7 +112,7 @@ class _TaskPanel(object): not self._paramWidget.capacitanceBodyBox.isChecked()) def _applyWidgetChanges(self): - unit = "V" + # unit = "V" self._obj.PotentialEnabled = \ not self._paramWidget.potentialBox.isChecked() if self._obj.PotentialEnabled: diff --git a/src/Mod/Fem/femtaskpanels/task_material_common.py b/src/Mod/Fem/femtaskpanels/task_material_common.py index a29673d52d..d47a934d2f 100644 --- a/src/Mod/Fem/femtaskpanels/task_material_common.py +++ b/src/Mod/Fem/femtaskpanels/task_material_common.py @@ -206,9 +206,9 @@ class _TaskPanel: def accept(self): # print(self.material) if self.material == {}: # happens if material editor was canceled - FreeCAD.Console.PrintError("Empty material dictionary, nothing was changed.\n") - self.recompute_and_set_back_all() - return True + FreeCAD.Console.PrintError("Empty material dictionary, nothing was changed.\n") + self.recompute_and_set_back_all() + return True if self.selectionWidget.has_equal_references_shape_types(): self.do_not_set_thermal_zeros() from materialtools.cardutils import check_mat_units as checkunits @@ -488,7 +488,8 @@ class _TaskPanel: self.material["VolumetricThermalExpansionCoefficient"] = "0 1/K" else: if "ThermalExpansionCoefficient" in self.material: - self.material["VolumetricThermalExpansionCoefficient"] = self.material["ThermalExpansionCoefficient"] + the_index = "VolumetricThermalExpansionCoefficient" # line was to long + self.material[the_index] = self.material["ThermalExpansionCoefficient"] else: self.material["VolumetricThermalExpansionCoefficient"] = "0 1/K" # Thermal properties diff --git a/src/Mod/Fem/femtaskpanels/task_result_mechanical.py b/src/Mod/Fem/femtaskpanels/task_result_mechanical.py index 0b867b1b5c..799ec748c2 100644 --- a/src/Mod/Fem/femtaskpanels/task_result_mechanical.py +++ b/src/Mod/Fem/femtaskpanels/task_result_mechanical.py @@ -46,7 +46,6 @@ from PySide.QtGui import QApplication import FreeCAD import FreeCADGui -import FemGui import femresult.resulttools as resulttools @@ -287,7 +286,12 @@ class _TaskPanel: def abs_displacement_selected(self, state): if len(self.result_obj.DisplacementLengths) > 0: - self.result_selected("Uabs", self.result_obj.DisplacementLengths, "mm", translate("FEM","Displacement Magnitude")) + self.result_selected( + "Uabs", + self.result_obj.DisplacementLengths, + "mm", + translate("FEM", "Displacement Magnitude") + ) else: self.result_widget.rb_none.setChecked(True) self.none_selected(True) @@ -297,7 +301,12 @@ class _TaskPanel: res_disp_u1 = self.get_scalar_disp_list( self.result_obj.DisplacementVectors, 0 ) - self.result_selected("U1", res_disp_u1, "mm", translate("FEM","Displacement X")) + self.result_selected( + "U1", + res_disp_u1, + "mm", + translate("FEM", "Displacement X") + ) else: self.result_widget.rb_none.setChecked(True) self.none_selected(True) @@ -307,7 +316,12 @@ class _TaskPanel: res_disp_u2 = self.get_scalar_disp_list( self.result_obj.DisplacementVectors, 1 ) - self.result_selected("U2", res_disp_u2, "mm", translate("FEM","Displacement Y")) + self.result_selected( + "U2", + res_disp_u2, + "mm", + translate("FEM", "Displacement Y") + ) else: self.result_widget.rb_none.setChecked(True) self.none_selected(True) @@ -317,63 +331,108 @@ class _TaskPanel: res_disp_u3 = self.get_scalar_disp_list( self.result_obj.DisplacementVectors, 2 ) - self.result_selected("U3", res_disp_u3, "mm", translate("FEM","Displacement Z")) + self.result_selected( + "U3", + res_disp_u3, + "mm", + translate("FEM", "Displacement Z") + ) else: self.result_widget.rb_none.setChecked(True) self.none_selected(True) def vm_stress_selected(self, state): if len(self.result_obj.vonMises) > 0: - self.result_selected("Sabs", self.result_obj.vonMises, "MPa", translate("FEM","von Mises Stress")) + self.result_selected( + "Sabs", + self.result_obj.vonMises, + "MPa", + translate("FEM", "von Mises Stress") + ) else: self.result_widget.rb_none.setChecked(True) self.none_selected(True) def max_shear_selected(self, state): if len(self.result_obj.MaxShear) > 0: - self.result_selected("MaxShear", self.result_obj.MaxShear, "MPa", translate("FEM","Max Shear Stress")) + self.result_selected( + "MaxShear", + self.result_obj.MaxShear, + "MPa", + translate("FEM", "Max Shear Stress") + ) else: self.result_widget.rb_none.setChecked(True) self.none_selected(True) def max_prin_selected(self, state): if len(self.result_obj.PrincipalMax) > 0: - self.result_selected("MaxPrin", self.result_obj.PrincipalMax, "MPa", translate("FEM","Max Principal Stress")) + self.result_selected( + "MaxPrin", + self.result_obj.PrincipalMax, + "MPa", + translate("FEM", "Max Principal Stress") + ) else: self.result_widget.rb_none.setChecked(True) self.none_selected(True) def temperature_selected(self, state): if len(self.result_obj.Temperature) > 0: - self.result_selected("Temp", self.result_obj.Temperature, "K", translate("FEM","Temperature")) + self.result_selected( + "Temp", + self.result_obj.Temperature, + "K", + translate("FEM", "Temperature") + ) else: self.result_widget.rb_none.setChecked(True) self.none_selected(True) def massflowrate_selected(self, state): if len(self.result_obj.MassFlowRate) > 0: - self.result_selected("MFlow", self.result_obj.MassFlowRate, "kg/s", translate("FEM","Mass Flow Rate")) + self.result_selected( + "MFlow", + self.result_obj.MassFlowRate, + "kg/s", + translate("FEM", "Mass Flow Rate") + ) else: self.result_widget.rb_none.setChecked(True) self.none_selected(True) def networkpressure_selected(self, state): if len(self.result_obj.NetworkPressure) > 0: - self.result_selected("NPress", self.result_obj.NetworkPressure, "MPa", translate("FEM","Network Pressure")) + self.result_selected( + "NPress", + self.result_obj.NetworkPressure, + "MPa", + translate("FEM", "Network Pressure") + ) else: self.result_widget.rb_none.setChecked(True) self.none_selected(True) def min_prin_selected(self, state): if len(self.result_obj.PrincipalMin) > 0: - self.result_selected("MinPrin", self.result_obj.PrincipalMin, "MPa", translate("FEM","Min Principal Stress")) + self.result_selected( + "MinPrin", + self.result_obj.PrincipalMin, + "MPa", + translate("FEM", "Min Principal Stress") + ) else: self.result_widget.rb_none.setChecked(True) self.none_selected(True) def peeq_selected(self, state): if len(self.result_obj.Peeq) > 0: - self.result_selected("Peeq", self.result_obj.Peeq, "", translate("FEM","Equivalent Plastic Strain")) + self.result_selected( + "Peeq", + self.result_obj.Peeq, + "", + translate("FEM", "Equivalent Plastic Strain") + ) else: self.result_widget.rb_none.setChecked(True) self.none_selected(True) @@ -392,8 +451,8 @@ class _TaskPanel: else: QtGui.QMessageBox.information( None, - self.result_obj.Label + " - " + translate("FEM","Information"), - translate("FEM","No histogram available.\nPlease select a result type first.") + self.result_obj.Label + " - " + translate("FEM", "Information"), + translate("FEM", "No histogram available.\nPlease select a result type first.") ) def user_defined_text(self, equation): @@ -503,12 +562,12 @@ class _TaskPanel: if len(plt.get_fignums()) > 0: plt.close() - plt.ioff() # disable interactive mode so we have full control when plot is shown + plt.ioff() # disable interactive mode so we have full control when plot is shown plt.figure(res_title) plt.hist(res_values, bins=50, alpha=0.5, facecolor="blue") plt.xlabel(res_unit) - plt.title(translate("FEM","Histogram of {}").format(res_title)) - plt.ylabel(translate("FEM","Nodes")) + plt.title(translate("FEM", "Histogram of {}").format(res_title)) + plt.ylabel(translate("FEM", "Nodes")) plt.grid(True) fig_manager = plt.get_current_fig_manager() # Lines below tells Qt that plot widget/dialog should be kept on top of its parent, @@ -628,25 +687,49 @@ class _TaskPanel: self.suitable_results = False self.disable_empty_result_buttons() if self.mesh_obj.FemMesh.NodeCount == 0: - error_message = ( - translate("FEM","FEM: there are no nodes in result mesh, there will be nothing to show.") + "\n" - ) - FreeCAD.Console.PrintError(error_message) - QtGui.QMessageBox.critical(None, translate("FEM","Empty result mesh"), error_message) + the_error_messagetext = ( + "FEM: there are no nodes in result mesh, " + "there will be nothing to show." + ) + error_message = ( + translate("FEM", the_error_messagetext) + "\n" + ) + FreeCAD.Console.PrintError(error_message) + QtGui.QMessageBox.critical( + None, + translate("FEM", "Empty result mesh"), + error_message + ) elif (self.mesh_obj.FemMesh.NodeCount == len(self.result_obj.NodeNumbers)): self.suitable_results = True hide_parts_constraints() else: if not self.mesh_obj.FemMesh.VolumeCount: + the_error_messagetext = ( + "FEM: Graphical bending stress output " + "for beam or shell FEM Meshes not yet supported." + ) error_message = ( - translate("FEM","FEM: Graphical bending stress output for beam or shell FEM Meshes not yet supported.") + "\n" + translate("FEM", the_error_messagetext) + "\n" ) FreeCAD.Console.PrintError(error_message) - QtGui.QMessageBox.critical(None, translate("FEM","No result object"), error_message) + QtGui.QMessageBox.critical( + None, + translate("FEM", "No result object"), + error_message + ) else: - error_message = translate("FEM","FEM: Result node numbers are not equal to FEM Mesh NodeCount.") + "\n" + the_error_messagetext = ( + "FEM: Result node numbers are " + "not equal to FEM Mesh NodeCount." + ) + error_message = translate("FEM", the_error_messagetext) + "\n" FreeCAD.Console.PrintError(error_message) - QtGui.QMessageBox.critical(None, translate("FEM","No result object"), error_message) + QtGui.QMessageBox.critical( + None, + translate("FEM", "No result object"), + error_message + ) def reset_mesh_color(self): self.mesh_obj.ViewObject.NodeColor = {} diff --git a/src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py b/src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py index ad386090b5..b38e65bd74 100644 --- a/src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py +++ b/src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py @@ -247,12 +247,14 @@ class _TaskPanel: self.form.pb_run_ccx.setText("Break CalculiX") def calculixStateChanged(self, newState): - if (newState == QtCore.QProcess.ProcessState.Starting): - self.femConsoleMessage("Starting CalculiX...") - if (newState == QtCore.QProcess.ProcessState.Running): - self.femConsoleMessage("CalculiX is running...") - if (newState == QtCore.QProcess.ProcessState.NotRunning): - self.femConsoleMessage("CalculiX stopped.") + if newState == QtCore.QProcess.ProcessState.Starting: + self.femConsoleMessage("Starting CalculiX...") + elif newState == QtCore.QProcess.ProcessState.Running: + self.femConsoleMessage("CalculiX is running...") + elif newState == QtCore.QProcess.ProcessState.NotRunning: + self.femConsoleMessage("CalculiX stopped.") + else: + self.femConsoleMessage("Problems.") def calculixFinished(self, exitCode): # print("calculixFinished(), exit code: {}".format(exitCode)) @@ -387,7 +389,7 @@ class _TaskPanel: env.insert("OMP_NUM_THREADS", str(num_cpu_pref)) else: cpu_count = os.cpu_count() - if cpu_count != None and cpu_count > 1: + if cpu_count is not None and cpu_count > 1: env.insert("OMP_NUM_THREADS", str(cpu_count)) self.Calculix.setProcessEnvironment(env) diff --git a/src/Mod/Fem/femtest/app/support_utils.py b/src/Mod/Fem/femtest/app/support_utils.py index e99981906c..b4dce7284a 100644 --- a/src/Mod/Fem/femtest/app/support_utils.py +++ b/src/Mod/Fem/femtest/app/support_utils.py @@ -88,14 +88,14 @@ def get_defmake_count( modfile = open(name_modfile, "r") lines_modefile = modfile.readlines() modfile.close() - lines_defmake = [l for l in lines_modefile if l.startswith("def make")] + lines_defmake = [li for li in lines_modefile if li.startswith("def make")] if not fem_vtk_post: # FEM VTK post processing is disabled # we are not able to create VTK post objects new_lines = [] - for l in lines_defmake: - if "PostVtk" not in l: - new_lines.append(l) + for li in lines_defmake: + if "PostVtk" not in li: + new_lines.append(li) lines_defmake = new_lines return len(lines_defmake) @@ -196,23 +196,23 @@ def compare_inp_files( # for python3 problem with 1DFlow input # TODO as soon as the 1DFlow result reading is fixed # this should be triggered in the 1DFlow unit test - lf1 = [l for l in f1 if not ( - l.startswith("** written ") or l.startswith("** file ") or l.startswith("17671.0,1") + lf1 = [li for li in f1 if not ( + li.startswith("** written ") or li.startswith("** file ") or li.startswith("17671.0,1") )] lf1 = force_unix_line_ends(lf1) file2 = open(file_name2, "r") f2 = file2.readlines() file2.close() # TODO see comment on file1 - lf2 = [l for l in f2 if not ( - l.startswith("** written ") or l.startswith("** file ") or l.startswith("17671.0,1") + lf2 = [li for li in f2 if not ( + li.startswith("** written ") or li.startswith("** file ") or li.startswith("17671.0,1") )] lf2 = force_unix_line_ends(lf2) import difflib diff = difflib.unified_diff(lf1, lf2, n=0) result = "" - for l in diff: - result += l + for li in diff: + result += li if result: result = ( "Comparing {} to {} failed!\n" @@ -234,22 +234,28 @@ def compare_files( # workaround to compare geos of elmer test and temporary file path # (not only names change, path changes with operating system) - lf1 = [l for l in f1 if not ( - l.startswith('Merge "') or l.startswith('Save "') or l.startswith("// ") or l.startswith("General.NumThreads") + lf1 = [li for li in f1 if not ( + li.startswith('Merge "') + or li.startswith('Save "') + or li.startswith("// ") + or li.startswith("General.NumThreads") )] lf1 = force_unix_line_ends(lf1) file2 = open(file_name2, "r") f2 = file2.readlines() file2.close() - lf2 = [l for l in f2 if not ( - l.startswith('Merge "') or l.startswith('Save "') or l.startswith("// ") or l.startswith("General.NumThreads") + lf2 = [li for li in f2 if not ( + li.startswith('Merge "') + or li.startswith('Save "') + or li.startswith("// ") + or li.startswith("General.NumThreads") )] lf2 = force_unix_line_ends(lf2) import difflib diff = difflib.unified_diff(lf1, lf2, n=0) result = "" - for l in diff: - result += l + for li in diff: + result += li if result: result = "Comparing {} to {} failed!\n".format(file_name1, file_name2) + result return result @@ -301,10 +307,10 @@ def compare_stats( # get stats to compare with, the expected ones sf = open(stat_file, "r") sf_content = [] - for l in sf.readlines(): + for li in sf.readlines(): for st in loc_stat_types: - if l.startswith(st): - sf_content.append(l) + if li.startswith(st): + sf_content.append(li) sf.close() sf_content = force_unix_line_ends(sf_content) if sf_content == []: diff --git a/src/Mod/Fem/femviewprovider/view_mesh_gmsh.py b/src/Mod/Fem/femviewprovider/view_mesh_gmsh.py index b9da6dd11b..81be7da090 100644 --- a/src/Mod/Fem/femviewprovider/view_mesh_gmsh.py +++ b/src/Mod/Fem/femviewprovider/view_mesh_gmsh.py @@ -115,8 +115,8 @@ class VPMeshGmsh: found_an_analysis = False for o in gui_doc.Document.Objects: if o.isDerivedFrom("Fem::FemAnalysisPython"): - found_an_analysis = True - break + found_an_analysis = True + break if found_an_analysis: if FemGui.getActiveAnalysis() is not None: if FemGui.getActiveAnalysis().Document is FreeCAD.ActiveDocument: @@ -206,12 +206,20 @@ class VPMeshGmsh: children = self.claimChildren() if len(children) > 0: # issue a warning - bodyMessage = "The mesh contains submesh objects, therefore the\nfollowing referencing objects might be lost:\n" + message_text = ( + "The mesh contains submesh objects, therefore the\n" + "following referencing objects might be lost:\n" + ) for obj in children: - bodyMessage += "\n" + obj.Label - bodyMessage += "\n\nAre you sure you want to continue?" - reply = QtGui.QMessageBox.warning(None, "Object dependencies", bodyMessage, - QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No) + message_text += "\n" + obj.Label + message_text += "\n\nAre you sure you want to continue?" + reply = QtGui.QMessageBox.warning( + None, + "Object dependencies", + message_text, + QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, + QtGui.QMessageBox.No + ) if reply == QtGui.QMessageBox.Yes: return True else: diff --git a/src/Mod/Fem/femviewprovider/view_result_mechanical.py b/src/Mod/Fem/femviewprovider/view_result_mechanical.py index 9565b93797..b8bcdcf577 100644 --- a/src/Mod/Fem/femviewprovider/view_result_mechanical.py +++ b/src/Mod/Fem/femviewprovider/view_result_mechanical.py @@ -30,7 +30,6 @@ __url__ = "https://www.freecadweb.org" # \ingroup FEM # \brief view provider for mechanical ResultObjectPython -import FreeCAD import FreeCADGui from PySide import QtGui @@ -63,16 +62,24 @@ class VPResultMechanical(view_base_femconstraint.VPBaseFemConstraint): def onDelete(self, feature, subelements): children = self.claimChildren() - filtered = filter(lambda obj: not obj is None, children) + filtered = filter(lambda obj: obj is not None, children) children = list(filtered) if len(children) > 0: # issue a warning - bodyMessage = "The results object is not empty, therefore the\nfollowing referencing objects might be lost:\n" + bodyMessage = ( + "The results object is not empty, therefore the\n" + "following referencing objects might be lost:\n" + ) for obj in children: bodyMessage += "\n" + obj.Label bodyMessage += "\n\nAre you sure you want to continue?" - reply = QtGui.QMessageBox.warning(None, "Object dependencies", bodyMessage, - QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No) + reply = QtGui.QMessageBox.warning( + None, + "Object dependencies", + bodyMessage, + QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, + QtGui.QMessageBox.No + ) if reply == QtGui.QMessageBox.Yes: return True else: