From 5ca75ca7ea009f1c5a800b93eb5be2d8d7343b51 Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Mon, 20 May 2019 12:31:22 +0200 Subject: [PATCH] FEM: code formating, max line length < 100, fem gui objects --- .../Fem/femguiobjects/FemSelectionWidgets.py | 124 ++++++-- .../ViewProviderFemConstraint.py | 6 +- .../_ViewProviderFemConstraintSelfWeight.py | 6 +- .../_ViewProviderFemElementFluid1D.py | 275 ++++++++++++++---- .../_ViewProviderFemElementGeometry1D.py | 61 +++- .../_ViewProviderFemElementGeometry2D.py | 18 +- .../_ViewProviderFemElementRotation1D.py | 21 +- ...wProviderFemMaterialMechanicalNonlinear.py | 6 +- .../_ViewProviderFemMeshBoundaryLayer.py | 32 +- .../femguiobjects/_ViewProviderFemMeshGmsh.py | 133 +++++++-- .../_ViewProviderFemMeshGroup.py | 25 +- .../_ViewProviderFemMeshRegion.py | 19 +- .../_ViewProviderFemResultMechanical.py | 211 +++++++++++--- .../_ViewProviderFemSolverCalculix.py | 100 +++++-- 14 files changed, 821 insertions(+), 216 deletions(-) diff --git a/src/Mod/Fem/femguiobjects/FemSelectionWidgets.py b/src/Mod/Fem/femguiobjects/FemSelectionWidgets.py index 3e1381e52e..8f5a595a5c 100644 --- a/src/Mod/Fem/femguiobjects/FemSelectionWidgets.py +++ b/src/Mod/Fem/femguiobjects/FemSelectionWidgets.py @@ -233,14 +233,21 @@ class GeometryElementsSelection(QtGui.QWidget): def initElemTypes(self, eltypes): self.sel_elem_types = eltypes - # FreeCAD.Console.PrintMessage('Selection of: {} is allowed.\n'.format(self.sel_elem_types)) + # FreeCAD.Console.PrintMessage( + # 'Selection of: {} is allowed.\n'.format(self.sel_elem_types) + # ) self.sel_elem_text = '' for e in self.sel_elem_types: self.sel_elem_text += (e + ', ') self.sel_elem_text = self.sel_elem_text.rstrip(', ') # FreeCAD.Console.PrintMessage('Selection of: ' + self.sel_elem_text + ' is allowed.\n') - self.selection_mode_std_print_message = "Single click on a " + self.sel_elem_text + " will add it to the list" - self.selection_mode_solid_print_message = "Single click on a Face or Edge which belongs to one Solid will add the Solid to the list" + self.selection_mode_std_print_message = ( + "Single click on a " + self.sel_elem_text + " will add it to the list" + ) + self.selection_mode_solid_print_message = ( + "Single click on a Face or Edge which belongs " + "to one Solid will add the Solid to the list" + ) def initUI(self): # auch ArchPanel ist coded ohne ui-file @@ -280,10 +287,26 @@ class GeometryElementsSelection(QtGui.QWidget): # signals and slots self.list_References.itemSelectionChanged.connect(self.select_clicked_reference_shape) self.list_References.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) - self.list_References.connect(self.list_References, QtCore.SIGNAL("customContextMenuRequested(QPoint)"), self.references_list_right_clicked) - QtCore.QObject.connect(self.pushButton_Add, QtCore.SIGNAL("clicked()"), self.add_references) - QtCore.QObject.connect(self.rb_standard, QtCore.SIGNAL("toggled(bool)"), self.choose_selection_mode_standard) - QtCore.QObject.connect(self.rb_solid, QtCore.SIGNAL("toggled(bool)"), self.choose_selection_mode_solid) + self.list_References.connect( + self.list_References, + QtCore.SIGNAL("customContextMenuRequested(QPoint)"), + self.references_list_right_clicked + ) + QtCore.QObject.connect( + self.pushButton_Add, + QtCore.SIGNAL("clicked()"), + self.add_references + ) + QtCore.QObject.connect( + self.rb_standard, + QtCore.SIGNAL("toggled(bool)"), + self.choose_selection_mode_standard + ) + QtCore.QObject.connect( + self.rb_solid, + QtCore.SIGNAL("toggled(bool)"), + self.choose_selection_mode_solid + ) def get_references(self): for ref in self.tuplereferences: @@ -324,10 +347,15 @@ class GeometryElementsSelection(QtGui.QWidget): self.obj_notvisible.append(ref[0]) ref[0].ViewObject.Visibility = True FreeCADGui.Selection.clearSelection() - if ref[1].startswith('Solid') and (ref[0].Shape.ShapeType == 'Compound' or ref[0].Shape.ShapeType == 'CompSolid'): - # selection of Solids of Compounds or CompSolids is not possible, because a Solid is no Subelement - # since only Subelements can be selected, we're going to select all Faces of said Solids - solid = FemMeshTools.get_element(ref[0], ref[1]) # the method getElement(element) doesn't return Solid elements + ref_sh_type = ref[0].Shape.ShapeType + if ref[1].startswith('Solid') \ + and (ref_sh_type == 'Compound' or ref_sh_type == 'CompSolid'): + # selection of Solids of Compounds or CompSolids is not possible + # because a Solid is no Subelement + # since only Subelements can be selected + # we're going to select all Faces of said Solids + # the method getElement(element)doesn't return Solid elements + solid = FemMeshTools.get_element(ref[0], ref[1]) if not solid: return faces = [] @@ -359,8 +387,16 @@ class GeometryElementsSelection(QtGui.QWidget): if not self.references: menu_item_remove_selected.setDisabled(True) menu_item_remove_all.setDisabled(True) - self.connect(menu_item_remove_selected, QtCore.SIGNAL("triggered()"), self.remove_selected_reference) - self.connect(menu_item_remove_all, QtCore.SIGNAL("triggered()"), self.remove_all_references) + self.connect( + menu_item_remove_selected, + QtCore.SIGNAL("triggered()"), + self.remove_selected_reference + ) + self.connect( + menu_item_remove_all, + QtCore.SIGNAL("triggered()"), + self.remove_all_references + ) parentPosition = self.list_References.mapToGlobal(QtCore.QPoint(0, 0)) self.contextMenu.move(parentPosition + QPos) self.contextMenu.show() @@ -401,12 +437,17 @@ class GeometryElementsSelection(QtGui.QWidget): else: print_message = self.selection_mode_std_print_message if not self.sel_server: - # if we do not check, we would start a new SelectionObserver on every click on addReference button + # if we do not check, we would start a new SelectionObserver + # on every click on addReference button # but close only one SelectionObserver on leaving the task panel self.sel_server = FemSelectionObserver(self.selectionParser, print_message) def selectionParser(self, selection): - print('selection: ', selection[0].Shape.ShapeType, ' ', selection[0].Name, ' ', selection[1]) + print('selection: {} {} {}'.format( + selection[0].Shape.ShapeType, + selection[0].Name, + selection[1] + )) if hasattr(selection[0], "Shape") and selection[1]: elt = selection[0].Shape.getElement(selection[1]) ele_ShapeType = elt.ShapeType @@ -422,7 +463,9 @@ class GeometryElementsSelection(QtGui.QWidget): if not found_edge: solid_to_add = str(i + 1) else: - FreeCAD.Console.PrintMessage('Edge belongs to more than one solid\n') + FreeCAD.Console.PrintMessage( + 'Edge belongs to more than one solid\n' + ) solid_to_add = None found_edge = True elif ele_ShapeType == 'Face': @@ -433,45 +476,68 @@ class GeometryElementsSelection(QtGui.QWidget): if not found_face: solid_to_add = str(i + 1) else: - FreeCAD.Console.PrintMessage('Face belongs to more than one solid\n') + FreeCAD.Console.PrintMessage( + 'Face belongs to more than one solid\n' + ) solid_to_add = None found_face = True if solid_to_add: selection = (selection[0], 'Solid' + solid_to_add) ele_ShapeType = 'Solid' - FreeCAD.Console.PrintMessage('selection variable adapted to hold the Solid: ' + selection[0].Shape.ShapeType + ' ' + selection[0].Name + ' ' + selection[1] + ' \n') + FreeCAD.Console.PrintMessage( + 'selection variable adapted to hold the Solid: {} {} {}\n' + .format(selection[0].Shape.ShapeType, selection[0].Name, selection[1]) + ) else: return if ele_ShapeType in self.sel_elem_types: - if (self.selection_mode_solid and ele_ShapeType == 'Solid') or self.selection_mode_solid is False: + if (self.selection_mode_solid and ele_ShapeType == 'Solid') \ + or self.selection_mode_solid is False: if selection not in self.references: - if self.allow_multiple_geom_types is False: # only equal shape types are allowed to add + # only equal shape types are allowed to add + if self.allow_multiple_geom_types is False: if self.has_equal_references_shape_types(ele_ShapeType): self.references.append(selection) - self.rebuild_list_References(self.get_allitems_text().index(self.get_item_text(selection))) + self.rebuild_list_References( + self.get_allitems_text().index(self.get_item_text(selection)) + ) else: - FreeCADGui.Selection.clearSelection() # selected shape will not added to the list + # selected shape will not added to the list + FreeCADGui.Selection.clearSelection() else: # multiple shape types are allowed to add self.references.append(selection) - self.rebuild_list_References(self.get_allitems_text().index(self.get_item_text(selection))) + self.rebuild_list_References( + self.get_allitems_text().index(self.get_item_text(selection)) + ) else: - FreeCADGui.Selection.clearSelection() # selected shape will not added to the list - message = self.get_item_text(selection) + ' is in reference list already!\n' + # selected shape will not added to the list + FreeCADGui.Selection.clearSelection() + message = ( + '{} is in reference list already!\n' + .format(self.get_item_text(selection)) + ) FreeCAD.Console.PrintMessage(message) QtGui.QMessageBox.critical(None, "Geometry already in list", message) else: - FreeCADGui.Selection.clearSelection() # selected shape will not added to the list + # selected shape will not added to the list + FreeCADGui.Selection.clearSelection() message = ele_ShapeType + ' is not allowed to add to the list!\n' FreeCAD.Console.PrintMessage(message) QtGui.QMessageBox.critical(None, "Wrong shape type", message) def has_equal_references_shape_types(self, ref_shty=''): for ref in self.references: - r = FemMeshTools.get_element(ref[0], ref[1]) # the method getElement(element) does not return Solid elements + # the method getElement(element) does not return Solid elements + r = FemMeshTools.get_element(ref[0], ref[1]) if not r: - FreeCAD.Console.PrintError('Problem in retrieving element: {} \n'.format(ref[1])) + FreeCAD.Console.PrintError( + 'Problem in retrieving element: {} \n'.format(ref[1]) + ) continue - # print(' ReferenceShape : ', r.ShapeType, ', ', ref[0].Name, ', ', ref[0].Label, ' --> ', ref[1]) + FreeCAD.Console.PrintLog( + ' ReferenceShape : {}, {}, {} --> {}' + .format(r.ShapeType, ref[0].Name, ref[0].Label, ref[1]) + ) if not ref_shty: ref_shty = r.ShapeType if r.ShapeType != ref_shty: diff --git a/src/Mod/Fem/femguiobjects/ViewProviderFemConstraint.py b/src/Mod/Fem/femguiobjects/ViewProviderFemConstraint.py index 33833c1f79..67a96badbc 100644 --- a/src/Mod/Fem/femguiobjects/ViewProviderFemConstraint.py +++ b/src/Mod/Fem/femguiobjects/ViewProviderFemConstraint.py @@ -60,12 +60,14 @@ class ViewProxy(object): def setEdit(self, vobj, mode=0): # needs to be overwritten if task panel exists - # avoid edit mode by return False, https://forum.freecadweb.org/viewtopic.php?t=12139&start=10#p161062 + # avoid edit mode by return False + # https://forum.freecadweb.org/viewtopic.php?t=12139&start=10#p161062 return False def doubleClicked(self, vobj): guidoc = FreeCADGui.getDocument(vobj.Object.Document) - # check if another VP is in edit mode, https://forum.freecadweb.org/viewtopic.php?t=13077#p104702 + # check if another VP is in edit mode + # https://forum.freecadweb.org/viewtopic.php?t=13077#p104702 if not guidoc.getInEdit(): guidoc.setEdit(vobj.Object.Name) else: diff --git a/src/Mod/Fem/femguiobjects/_ViewProviderFemConstraintSelfWeight.py b/src/Mod/Fem/femguiobjects/_ViewProviderFemConstraintSelfWeight.py index d035ae124b..438e26c755 100644 --- a/src/Mod/Fem/femguiobjects/_ViewProviderFemConstraintSelfWeight.py +++ b/src/Mod/Fem/femguiobjects/_ViewProviderFemConstraintSelfWeight.py @@ -53,12 +53,14 @@ class _ViewProviderFemConstraintSelfWeight: return def setEdit(self, vobj, mode=0): - # avoid edit mode by return False, https://forum.freecadweb.org/viewtopic.php?t=12139&start=10#p161062 + # avoid edit mode by return False + # https://forum.freecadweb.org/viewtopic.php?t=12139&start=10#p161062 return False def doubleClicked(self, vobj): guidoc = FreeCADGui.getDocument(vobj.Object.Document) - # check if another VP is in edit mode, https://forum.freecadweb.org/viewtopic.php?t=13077#p104702 + # check if another VP is in edit mode + # https://forum.freecadweb.org/viewtopic.php?t=13077#p104702 if not guidoc.getInEdit(): guidoc.setEdit(vobj.Object.Name) else: diff --git a/src/Mod/Fem/femguiobjects/_ViewProviderFemElementFluid1D.py b/src/Mod/Fem/femguiobjects/_ViewProviderFemElementFluid1D.py index 3b9f8ea5ee..1fb9a5b010 100644 --- a/src/Mod/Fem/femguiobjects/_ViewProviderFemElementFluid1D.py +++ b/src/Mod/Fem/femguiobjects/_ViewProviderFemElementFluid1D.py @@ -87,7 +87,8 @@ class _ViewProviderFemElementFluid1D: def doubleClicked(self, vobj): guidoc = FreeCADGui.getDocument(vobj.Object.Document) - # check if another VP is in edit mode, https://forum.freecadweb.org/viewtopic.php?t=13077#p104702 + # check if another VP is in edit mode + # https://forum.freecadweb.org/viewtopic.php?t=13077#p104702 if not guidoc.getInEdit(): guidoc.setEdit(vobj.Object.Name) else: @@ -112,48 +113,188 @@ class _TaskPanelFemElementFluid1D: self.obj = obj # parameter widget - self.parameterWidget = FreeCADGui.PySideUic.loadUi(FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/ElementFluid1D.ui") - QtCore.QObject.connect(self.parameterWidget.cb_section_type, QtCore.SIGNAL("activated(int)"), self.sectiontype_changed) - QtCore.QObject.connect(self.parameterWidget.cb_liquid_section_type, QtCore.SIGNAL("activated(int)"), self.liquidsectiontype_changed) - QtCore.QObject.connect(self.parameterWidget.if_manning_area, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.manning_area_changed) - QtCore.QObject.connect(self.parameterWidget.if_manning_radius, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.manning_radius_changed) - QtCore.QObject.connect(self.parameterWidget.sb_manning_coefficient, QtCore.SIGNAL("valueChanged(double)"), self.manning_coefficient_changed) - QtCore.QObject.connect(self.parameterWidget.if_enlarge_area1, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.enlarge_area1_changed) - QtCore.QObject.connect(self.parameterWidget.if_enlarge_area2, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.enlarge_area2_changed) - QtCore.QObject.connect(self.parameterWidget.if_contract_area1, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.contract_area1_changed) - QtCore.QObject.connect(self.parameterWidget.if_contract_area2, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.contract_area2_changed) - QtCore.QObject.connect(self.parameterWidget.if_inletpressure, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.inlet_pressure_changed) - QtCore.QObject.connect(self.parameterWidget.if_outletpressure, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.outlet_pressure_changed) - QtCore.QObject.connect(self.parameterWidget.if_inletflowrate, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.inlet_flowrate_changed) - QtCore.QObject.connect(self.parameterWidget.if_outletflowrate, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.outlet_flowrate_changed) - QtCore.QObject.connect(self.parameterWidget.gb_inletpressure, QtCore.SIGNAL("clicked(bool)"), self.inlet_pressure_active) - QtCore.QObject.connect(self.parameterWidget.gb_outletpressure, QtCore.SIGNAL("clicked(bool)"), self.outlet_pressure_active) - QtCore.QObject.connect(self.parameterWidget.gb_inletflowrate, QtCore.SIGNAL("clicked(bool)"), self.inlet_flowrate_active) - QtCore.QObject.connect(self.parameterWidget.gb_outletflowrate, QtCore.SIGNAL("clicked(bool)"), self.outlet_flowrate_active) - QtCore.QObject.connect(self.parameterWidget.if_entrance_pipe_area, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.entrance_pipe_area_changed) - QtCore.QObject.connect(self.parameterWidget.if_entrance_area, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.entrance_area_changed) - QtCore.QObject.connect(self.parameterWidget.if_diaphragm_pipe_area, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.diaphragm_pipe_area_changed) - QtCore.QObject.connect(self.parameterWidget.if_diaphragm_area, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.diaphragm_area_changed) - QtCore.QObject.connect(self.parameterWidget.if_bend_pipe_area, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.bend_pipe_area_changed) - QtCore.QObject.connect(self.parameterWidget.sb_bradius_pdiameter, QtCore.SIGNAL("valueChanged(double)"), self.bradius_pdiameter_changed) - QtCore.QObject.connect(self.parameterWidget.sb_bend_angle, QtCore.SIGNAL("valueChanged(double)"), self.bend_angle_changed) - QtCore.QObject.connect(self.parameterWidget.sb_bend_loss_coefficient, QtCore.SIGNAL("valueChanged(double)"), self.bend_loss_coefficient_changed) - QtCore.QObject.connect(self.parameterWidget.if_gatevalve_pipe_area, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.gatevalve_pipe_area_changed) - QtCore.QObject.connect(self.parameterWidget.sb_gatevalve_closing_coeff, QtCore.SIGNAL("valueChanged(double)"), self.gatevalve_closing_coeff_changed) - QtCore.QObject.connect(self.parameterWidget.if_colebrooke_pipe_area, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.colebrooke_pipe_area_changed) - QtCore.QObject.connect(self.parameterWidget.if_colebrooke_radius, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.colebrooke_radius_changed) - QtCore.QObject.connect(self.parameterWidget.if_colebrooke_grain_diameter, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.colebrooke_grain_diameter_changed) - QtCore.QObject.connect(self.parameterWidget.sb_colebrooke_form_factor, QtCore.SIGNAL("valueChanged(double)"), self.colebrooke_form_factor_changed) - QtCore.QObject.connect(self.parameterWidget.tw_pump_characteristics, QtCore.SIGNAL("cellChanged(int, int)"), self.pump_characteristics_changed) - self.parameterWidget.cb_section_type.addItems(_FemElementFluid1D._FemElementFluid1D.known_fluid_types) - self.parameterWidget.cb_liquid_section_type.addItems(_FemElementFluid1D._FemElementFluid1D.known_liquid_types) - self.parameterWidget.cb_gas_section_type.addItems(_FemElementFluid1D._FemElementFluid1D.known_gas_types) - self.parameterWidget.cb_channel_section_type.addItems(_FemElementFluid1D._FemElementFluid1D.known_channel_types) + self.parameterWidget = FreeCADGui.PySideUic.loadUi( + FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/ElementFluid1D.ui" + ) + QtCore.QObject.connect( + self.parameterWidget.cb_section_type, + QtCore.SIGNAL("activated(int)"), + self.sectiontype_changed + ) + QtCore.QObject.connect( + self.parameterWidget.cb_liquid_section_type, + QtCore.SIGNAL("activated(int)"), + self.liquidsectiontype_changed + ) + QtCore.QObject.connect( + self.parameterWidget.if_manning_area, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.manning_area_changed + ) + QtCore.QObject.connect( + self.parameterWidget.if_manning_radius, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.manning_radius_changed + ) + QtCore.QObject.connect( + self.parameterWidget.sb_manning_coefficient, + QtCore.SIGNAL("valueChanged(double)"), + self.manning_coefficient_changed + ) + QtCore.QObject.connect( + self.parameterWidget.if_enlarge_area1, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.enlarge_area1_changed + ) + QtCore.QObject.connect( + self.parameterWidget.if_enlarge_area2, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.enlarge_area2_changed + ) + QtCore.QObject.connect( + self.parameterWidget.if_contract_area1, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.contract_area1_changed + ) + QtCore.QObject.connect( + self.parameterWidget.if_contract_area2, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.contract_area2_changed + ) + QtCore.QObject.connect( + self.parameterWidget.if_inletpressure, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.inlet_pressure_changed + ) + QtCore.QObject.connect( + self.parameterWidget.if_outletpressure, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.outlet_pressure_changed + ) + QtCore.QObject.connect( + self.parameterWidget.if_inletflowrate, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.inlet_flowrate_changed + ) + QtCore.QObject.connect( + self.parameterWidget.if_outletflowrate, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.outlet_flowrate_changed + ) + QtCore.QObject.connect( + self.parameterWidget.gb_inletpressure, + QtCore.SIGNAL("clicked(bool)"), + self.inlet_pressure_active + ) + QtCore.QObject.connect( + self.parameterWidget.gb_outletpressure, + QtCore.SIGNAL("clicked(bool)"), + self.outlet_pressure_active + ) + QtCore.QObject.connect( + self.parameterWidget.gb_inletflowrate, + QtCore.SIGNAL("clicked(bool)"), + self.inlet_flowrate_active + ) + QtCore.QObject.connect( + self.parameterWidget.gb_outletflowrate, + QtCore.SIGNAL("clicked(bool)"), + self.outlet_flowrate_active + ) + QtCore.QObject.connect( + self.parameterWidget.if_entrance_pipe_area, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.entrance_pipe_area_changed + ) + QtCore.QObject.connect( + self.parameterWidget.if_entrance_area, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.entrance_area_changed + ) + QtCore.QObject.connect( + self.parameterWidget.if_diaphragm_pipe_area, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.diaphragm_pipe_area_changed + ) + QtCore.QObject.connect( + self.parameterWidget.if_diaphragm_area, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.diaphragm_area_changed + ) + QtCore.QObject.connect( + self.parameterWidget.if_bend_pipe_area, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.bend_pipe_area_changed + ) + QtCore.QObject.connect( + self.parameterWidget.sb_bradius_pdiameter, + QtCore.SIGNAL("valueChanged(double)"), + self.bradius_pdiameter_changed + ) + QtCore.QObject.connect( + self.parameterWidget.sb_bend_angle, + QtCore.SIGNAL("valueChanged(double)"), + self.bend_angle_changed + ) + QtCore.QObject.connect( + self.parameterWidget.sb_bend_loss_coefficient, + QtCore.SIGNAL("valueChanged(double)"), + self.bend_loss_coefficient_changed + ) + QtCore.QObject.connect( + self.parameterWidget.if_gatevalve_pipe_area, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.gatevalve_pipe_area_changed + ) + QtCore.QObject.connect( + self.parameterWidget.sb_gatevalve_closing_coeff, + QtCore.SIGNAL("valueChanged(double)"), + self.gatevalve_closing_coeff_changed + ) + QtCore.QObject.connect( + self.parameterWidget.if_colebrooke_pipe_area, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.colebrooke_pipe_area_changed + ) + QtCore.QObject.connect( + self.parameterWidget.if_colebrooke_radius, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.colebrooke_radius_changed + ) + QtCore.QObject.connect( + self.parameterWidget.if_colebrooke_grain_diameter, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.colebrooke_grain_diameter_changed + ) + QtCore.QObject.connect( + self.parameterWidget.sb_colebrooke_form_factor, + QtCore.SIGNAL("valueChanged(double)"), + self.colebrooke_form_factor_changed + ) + QtCore.QObject.connect( + self.parameterWidget.tw_pump_characteristics, + QtCore.SIGNAL("cellChanged(int, int)"), + self.pump_characteristics_changed + ) + self.parameterWidget.cb_section_type.addItems( + _FemElementFluid1D._FemElementFluid1D.known_fluid_types + ) + self.parameterWidget.cb_liquid_section_type.addItems( + _FemElementFluid1D._FemElementFluid1D.known_liquid_types + ) + self.parameterWidget.cb_gas_section_type.addItems( + _FemElementFluid1D._FemElementFluid1D.known_gas_types + ) + self.parameterWidget.cb_channel_section_type.addItems( + _FemElementFluid1D._FemElementFluid1D.known_channel_types + ) self.get_fluidsection_props() self.updateParameterWidget() # geometry selection widget - self.selectionWidget = FemSelectionWidgets.GeometryElementsSelection(obj.References, ['Edge']) + self.selectionWidget = FemSelectionWidgets.GeometryElementsSelection( + obj.References, ['Edge'] + ) # form made from param and selection widget self.form = [self.parameterWidget, self.selectionWidget] @@ -251,7 +392,9 @@ class _TaskPanelFemElementFluid1D: index_sectiontype = self.parameterWidget.cb_section_type.findText(self.SectionType) self.parameterWidget.cb_section_type.setCurrentIndex(index_sectiontype) self.parameterWidget.sw_section_type.setCurrentIndex(index_sectiontype) - index_liquidsectiontype = self.parameterWidget.cb_liquid_section_type.findText(self.LiquidSectionType) + index_liquidsectiontype = self.parameterWidget.cb_liquid_section_type.findText( + self.LiquidSectionType + ) self.parameterWidget.cb_liquid_section_type.setCurrentIndex(index_liquidsectiontype) self.parameterWidget.sw_liquid_section_type.setCurrentIndex(index_liquidsectiontype) self.parameterWidget.if_manning_area.setText(self.ManningArea.UserString) @@ -261,8 +404,12 @@ class _TaskPanelFemElementFluid1D: self.parameterWidget.if_enlarge_area2.setText(self.EnlargeArea2.UserString) self.parameterWidget.if_contract_area1.setText(self.ContractArea1.UserString) self.parameterWidget.if_contract_area2.setText(self.ContractArea2.UserString) - self.parameterWidget.if_inletpressure.setText(FreeCAD.Units.Quantity(1000 * self.InletPressure, FreeCAD.Units.Pressure).UserString) - self.parameterWidget.if_outletpressure.setText(FreeCAD.Units.Quantity(1000 * self.OutletPressure, FreeCAD.Units.Pressure).UserString) + self.parameterWidget.if_inletpressure.setText(FreeCAD.Units.Quantity( + 1000 * self.InletPressure, FreeCAD.Units.Pressure).UserString + ) + self.parameterWidget.if_outletpressure.setText(FreeCAD.Units.Quantity( + 1000 * self.OutletPressure, FreeCAD.Units.Pressure).UserString + ) self.parameterWidget.if_inletflowrate.setText(str(self.InletFlowRate)) self.parameterWidget.if_outletflowrate.setText(str(self.OutletFlowRate)) self.parameterWidget.gb_inletpressure.setChecked(self.InletPressureActive) @@ -281,25 +428,35 @@ class _TaskPanelFemElementFluid1D: self.parameterWidget.sb_gatevalve_closing_coeff.setValue(self.GateValveClosingCoeff) self.parameterWidget.if_colebrooke_pipe_area.setText(self.ColebrookeArea.UserString) self.parameterWidget.if_colebrooke_radius.setText(self.ColebrookeRadius.UserString) - self.parameterWidget.if_colebrooke_grain_diameter.setText(self.ColebrookeGrainDiameter.UserString) + self.parameterWidget.if_colebrooke_grain_diameter.setText( + self.ColebrookeGrainDiameter.UserString + ) self.parameterWidget.sb_colebrooke_form_factor.setValue(self.ColebrookeFormFactor) for i in range(len(self.PumpFlowRate)): - self.parameterWidget.tw_pump_characteristics.setItem(i, 0, QtGui.QTableWidgetItem(str(self.PumpFlowRate[i]))) - self.parameterWidget.tw_pump_characteristics.setItem(i, 1, QtGui.QTableWidgetItem(str(self.PumpHeadLoss[i]))) + self.parameterWidget.tw_pump_characteristics.setItem( + i, 0, QtGui.QTableWidgetItem(str(self.PumpFlowRate[i])) + ) + self.parameterWidget.tw_pump_characteristics.setItem( + i, 1, QtGui.QTableWidgetItem(str(self.PumpHeadLoss[i])) + ) def sectiontype_changed(self, index): if index < 0: return self.parameterWidget.cb_section_type.setCurrentIndex(index) self.parameterWidget.sw_section_type.setCurrentIndex(index) - self.SectionType = str(self.parameterWidget.cb_section_type.itemText(index)) # parameterWidget returns unicode + # parameterWidget returns unicode + self.SectionType = str(self.parameterWidget.cb_section_type.itemText(index)) def liquidsectiontype_changed(self, index): if index < 0: return self.parameterWidget.cb_liquid_section_type.setCurrentIndex(index) self.parameterWidget.sw_liquid_section_type.setCurrentIndex(index) - self.LiquidSectionType = str(self.parameterWidget.cb_liquid_section_type.itemText(index)) # parameterWidget returns unicode + # parameterWidget returns unicode + self.LiquidSectionType = str( + self.parameterWidget.cb_liquid_section_type.itemText(index) + ) def manning_area_changed(self, base_quantity_value): self.ManningArea = base_quantity_value @@ -323,16 +480,24 @@ class _TaskPanelFemElementFluid1D: self.ContractArea2 = base_quantity_value def inlet_pressure_changed(self, base_quantity_value): - self.InletPressure = float(FreeCAD.Units.Quantity(base_quantity_value).getValueAs("MPa")) + self.InletPressure = float( + FreeCAD.Units.Quantity(base_quantity_value).getValueAs("MPa") + ) def outlet_pressure_changed(self, base_quantity_value): - self.OutletPressure = float(FreeCAD.Units.Quantity(base_quantity_value).getValueAs("MPa")) + self.OutletPressure = float( + FreeCAD.Units.Quantity(base_quantity_value).getValueAs("MPa") + ) def inlet_flowrate_changed(self, base_quantity_value): - self.InletFlowRate = float(FreeCAD.Units.Quantity(base_quantity_value).getValueAs("kg/s")) + self.InletFlowRate = float( + FreeCAD.Units.Quantity(base_quantity_value).getValueAs("kg/s") + ) def outlet_flowrate_changed(self, base_quantity_value): - self.OutletFlowRate = float(FreeCAD.Units.Quantity(base_quantity_value).getValueAs("kg/s")) + self.OutletFlowRate = float( + FreeCAD.Units.Quantity(base_quantity_value).getValueAs("kg/s") + ) def inlet_pressure_active(self, active): self.InletPressureActive = active @@ -390,6 +555,10 @@ class _TaskPanelFemElementFluid1D: def pump_characteristics_changed(self, row, column): if column == 0: - self.PumpFlowRate[row] = float(self.parameterWidget.tw_pump_characteristics.item(row, column).text()) + self.PumpFlowRate[row] = float( + self.parameterWidget.tw_pump_characteristics.item(row, column).text() + ) else: - self.PumpHeadLoss[row] = float(self.parameterWidget.tw_pump_characteristics.item(row, column).text()) + self.PumpHeadLoss[row] = float( + self.parameterWidget.tw_pump_characteristics.item(row, column).text() + ) diff --git a/src/Mod/Fem/femguiobjects/_ViewProviderFemElementGeometry1D.py b/src/Mod/Fem/femguiobjects/_ViewProviderFemElementGeometry1D.py index 1772ab6cce..04f209df89 100644 --- a/src/Mod/Fem/femguiobjects/_ViewProviderFemElementGeometry1D.py +++ b/src/Mod/Fem/femguiobjects/_ViewProviderFemElementGeometry1D.py @@ -84,7 +84,8 @@ class _ViewProviderFemElementGeometry1D: def doubleClicked(self, vobj): guidoc = FreeCADGui.getDocument(vobj.Object.Document) - # check if another VP is in edit mode, https://forum.freecadweb.org/viewtopic.php?t=13077#p104702 + # check if another VP is in edit mode + # https://forum.freecadweb.org/viewtopic.php?t=13077#p104702 if not guidoc.getInEdit(): guidoc.setEdit(vobj.Object.Name) else: @@ -109,19 +110,52 @@ class _TaskPanelFemElementGeometry1D: self.obj = obj # parameter widget - self.parameterWidget = FreeCADGui.PySideUic.loadUi(FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/ElementGeometry1D.ui") - QtCore.QObject.connect(self.parameterWidget.cb_crosssectiontype, QtCore.SIGNAL("activated(int)"), self.sectiontype_changed) - QtCore.QObject.connect(self.parameterWidget.if_rec_height, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.rec_height_changed) - QtCore.QObject.connect(self.parameterWidget.if_rec_width, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.rec_width_changed) - QtCore.QObject.connect(self.parameterWidget.if_circ_diameter, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.circ_diameter_changed) - QtCore.QObject.connect(self.parameterWidget.if_pipe_diameter, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.pipe_diameter_changed) - QtCore.QObject.connect(self.parameterWidget.if_pipe_thickness, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.pipe_thickness_changed) - self.parameterWidget.cb_crosssectiontype.addItems(_FemElementGeometry1D._FemElementGeometry1D.known_beam_types) # it is inside the class thus double _FemElementGeometry1D + self.parameterWidget = FreeCADGui.PySideUic.loadUi( + FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/ElementGeometry1D.ui" + ) + QtCore.QObject.connect( + self.parameterWidget.cb_crosssectiontype, + QtCore.SIGNAL("activated(int)"), + self.sectiontype_changed + ) + QtCore.QObject.connect( + self.parameterWidget.if_rec_height, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.rec_height_changed + ) + QtCore.QObject.connect( + self.parameterWidget.if_rec_width, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.rec_width_changed + ) + QtCore.QObject.connect( + self.parameterWidget.if_circ_diameter, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.circ_diameter_changed + ) + QtCore.QObject.connect( + self.parameterWidget.if_pipe_diameter, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.pipe_diameter_changed + ) + QtCore.QObject.connect( + self.parameterWidget.if_pipe_thickness, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.pipe_thickness_changed + ) + + # it is inside the class thus double _FemElementGeometry1D + self.parameterWidget.cb_crosssectiontype.addItems( + _FemElementGeometry1D._FemElementGeometry1D.known_beam_types + ) self.get_beamsection_props() self.updateParameterWidget() # geometry selection widget - self.selectionWidget = FemSelectionWidgets.GeometryElementsSelection(obj.References, ['Edge']) + self.selectionWidget = FemSelectionWidgets.GeometryElementsSelection( + obj.References, + ['Edge'] + ) # form made from param and selection widget self.form = [self.parameterWidget, self.selectionWidget] @@ -162,7 +196,9 @@ class _TaskPanelFemElementGeometry1D: def updateParameterWidget(self): 'fills the widgets' - index_crosssectiontype = self.parameterWidget.cb_crosssectiontype.findText(self.SectionType) + index_crosssectiontype = self.parameterWidget.cb_crosssectiontype.findText( + self.SectionType + ) self.parameterWidget.cb_crosssectiontype.setCurrentIndex(index_crosssectiontype) self.parameterWidget.if_rec_height.setText(self.RectHeight.UserString) self.parameterWidget.if_rec_width.setText(self.RectWidth.UserString) @@ -174,7 +210,8 @@ class _TaskPanelFemElementGeometry1D: if index < 0: return self.parameterWidget.cb_crosssectiontype.setCurrentIndex(index) - self.SectionType = str(self.parameterWidget.cb_crosssectiontype.itemText(index)) # parameterWidget returns unicode + # parameterWidget returns unicode + self.SectionType = str(self.parameterWidget.cb_crosssectiontype.itemText(index)) def rec_height_changed(self, base_quantity_value): self.RectHeight = base_quantity_value diff --git a/src/Mod/Fem/femguiobjects/_ViewProviderFemElementGeometry2D.py b/src/Mod/Fem/femguiobjects/_ViewProviderFemElementGeometry2D.py index 7a34cd19d0..e71984927f 100644 --- a/src/Mod/Fem/femguiobjects/_ViewProviderFemElementGeometry2D.py +++ b/src/Mod/Fem/femguiobjects/_ViewProviderFemElementGeometry2D.py @@ -83,7 +83,8 @@ class _ViewProviderFemElementGeometry2D: def doubleClicked(self, vobj): guidoc = FreeCADGui.getDocument(vobj.Object.Document) - # check if another VP is in edit mode, https://forum.freecadweb.org/viewtopic.php?t=13077#p104702 + # check if another VP is in edit mode + # https://forum.freecadweb.org/viewtopic.php?t=13077#p104702 if not guidoc.getInEdit(): guidoc.setEdit(vobj.Object.Name) else: @@ -108,12 +109,21 @@ class _TaskPanelFemElementGeometry2D: self.obj = obj # parameter widget - self.parameterWidget = FreeCADGui.PySideUic.loadUi(FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/ElementGeometry2D.ui") - QtCore.QObject.connect(self.parameterWidget.if_thickness, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.thickness_changed) + self.parameterWidget = FreeCADGui.PySideUic.loadUi( + FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/ElementGeometry2D.ui" + ) + QtCore.QObject.connect( + self.parameterWidget.if_thickness, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.thickness_changed + ) self.init_parameter_widget() # geometry selection widget - self.selectionWidget = FemSelectionWidgets.GeometryElementsSelection(obj.References, ['Face']) + self.selectionWidget = FemSelectionWidgets.GeometryElementsSelection( + obj.References, + ['Face'] + ) # form made from param and selection widget self.form = [self.parameterWidget, self.selectionWidget] diff --git a/src/Mod/Fem/femguiobjects/_ViewProviderFemElementRotation1D.py b/src/Mod/Fem/femguiobjects/_ViewProviderFemElementRotation1D.py index ea46a07acd..8fb0320fbd 100644 --- a/src/Mod/Fem/femguiobjects/_ViewProviderFemElementRotation1D.py +++ b/src/Mod/Fem/femguiobjects/_ViewProviderFemElementRotation1D.py @@ -84,12 +84,14 @@ class _ViewProviderFemElementRotation1D: ''' def setEdit(self, vobj, mode=0): - # avoid edit mode by return False, https://forum.freecadweb.org/viewtopic.php?t=12139&start=10#p161062 + # avoid edit mode by return False + # https://forum.freecadweb.org/viewtopic.php?t=12139&start=10#p161062 return False def doubleClicked(self, vobj): guidoc = FreeCADGui.getDocument(vobj.Object.Document) - # check if another VP is in edit mode, https://forum.freecadweb.org/viewtopic.php?t=13077#p104702 + # check if another VP is in edit mode + # https://forum.freecadweb.org/viewtopic.php?t=13077#p104702 if not guidoc.getInEdit(): guidoc.setEdit(vobj.Object.Name) else: @@ -113,13 +115,22 @@ class _TaskPanelFemElementRotation1D: self.obj = obj # parameter widget - self.parameterWidget = FreeCADGui.PySideUic.loadUi(FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/ElementRotation1D.ui") - QtCore.QObject.connect(self.parameterWidget.if_rotation, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.rotation_changed) + self.parameterWidget = FreeCADGui.PySideUic.loadUi( + FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/ElementRotation1D.ui" + ) + QtCore.QObject.connect( + self.parameterWidget.if_rotation, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.rotation_changed + ) self.rotation = self.obj.Rotation self.parameterWidget.if_rotation.setText(self.rotation.UserString) # geometry selection widget - self.selectionWidget = FemSelectionWidgets.GeometryElementsSelection(obj.References, ['Edge']) + self.selectionWidget = FemSelectionWidgets.GeometryElementsSelection( + obj.References, + ['Edge'] + ) # form made from param and selection widget self.form = [self.parameterWidget, self.selectionWidget] diff --git a/src/Mod/Fem/femguiobjects/_ViewProviderFemMaterialMechanicalNonlinear.py b/src/Mod/Fem/femguiobjects/_ViewProviderFemMaterialMechanicalNonlinear.py index e22f2e1a6d..1dcc3179e9 100644 --- a/src/Mod/Fem/femguiobjects/_ViewProviderFemMaterialMechanicalNonlinear.py +++ b/src/Mod/Fem/femguiobjects/_ViewProviderFemMaterialMechanicalNonlinear.py @@ -63,12 +63,14 @@ class _ViewProviderFemMaterialMechanicalNonlinear: return def setEdit(self, vobj, mode=0): - # avoid edit mode by return False, https://forum.freecadweb.org/viewtopic.php?t=12139&start=10#p161062 + # avoid edit mode by return False + # https://forum.freecadweb.org/viewtopic.php?t=12139&start=10#p161062 return False def doubleClicked(self, vobj): guidoc = FreeCADGui.getDocument(vobj.Object.Document) - # check if another VP is in edit mode, https://forum.freecadweb.org/viewtopic.php?t=13077#p104702 + # check if another VP is in edit mode + # https://forum.freecadweb.org/viewtopic.php?t=13077#p104702 if not guidoc.getInEdit(): guidoc.setEdit(vobj.Object.Name) else: diff --git a/src/Mod/Fem/femguiobjects/_ViewProviderFemMeshBoundaryLayer.py b/src/Mod/Fem/femguiobjects/_ViewProviderFemMeshBoundaryLayer.py index f8b452a9b9..5153b139d3 100644 --- a/src/Mod/Fem/femguiobjects/_ViewProviderFemMeshBoundaryLayer.py +++ b/src/Mod/Fem/femguiobjects/_ViewProviderFemMeshBoundaryLayer.py @@ -83,7 +83,8 @@ class _ViewProviderFemMeshBoundaryLayer: def doubleClicked(self, vobj): guidoc = FreeCADGui.getDocument(vobj.Object.Document) - # check if another VP is in edit mode, https://forum.freecadweb.org/viewtopic.php?t=13077#p104702 + # check if another VP is in edit mode + # https://forum.freecadweb.org/viewtopic.php?t=13077#p104702 if not guidoc.getInEdit(): guidoc.setEdit(vobj.Object.Name) else: @@ -108,14 +109,33 @@ class _TaskPanelFemMeshBoundaryLayer: self.obj = obj # parameter widget - self.parameterWidget = FreeCADGui.PySideUic.loadUi(FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/MeshBoundaryLayer.ui") - QtCore.QObject.connect(self.parameterWidget.bl_number_of_layers, QtCore.SIGNAL("valueChanged(int)"), self.bl_number_of_layers_changed) - QtCore.QObject.connect(self.parameterWidget.bl_min_thickness, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.bl_min_thickness_changed) - QtCore.QObject.connect(self.parameterWidget.bl_growth_rate, QtCore.SIGNAL("valueChanged(double)"), self.bl_growth_rate_changed) # becareful of signal signature for QDoubleSpinbox + self.parameterWidget = FreeCADGui.PySideUic.loadUi( + FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/MeshBoundaryLayer.ui" + ) + QtCore.QObject.connect( + self.parameterWidget.bl_number_of_layers, + QtCore.SIGNAL("valueChanged(int)"), + self.bl_number_of_layers_changed + ) + QtCore.QObject.connect( + self.parameterWidget.bl_min_thickness, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.bl_min_thickness_changed + ) + # be careful of signal signature for QDoubleSpinbox + QtCore.QObject.connect( + self.parameterWidget.bl_growth_rate, + QtCore.SIGNAL("valueChanged(double)"), + self.bl_growth_rate_changed + ) self.init_parameter_widget() # geometry selection widget - self.selectionWidget = FemSelectionWidgets.GeometryElementsSelection(obj.References, ['Solid', 'Face', 'Edge', 'Vertex']) # start with Solid in list! + # start with Solid in list! + self.selectionWidget = FemSelectionWidgets.GeometryElementsSelection( + obj.References, + ['Solid', 'Face', 'Edge', 'Vertex'] + ) # form made from param and selection widget self.form = [self.parameterWidget, self.selectionWidget] diff --git a/src/Mod/Fem/femguiobjects/_ViewProviderFemMeshGmsh.py b/src/Mod/Fem/femguiobjects/_ViewProviderFemMeshGmsh.py index 02aa524f59..11543485d5 100644 --- a/src/Mod/Fem/femguiobjects/_ViewProviderFemMeshGmsh.py +++ b/src/Mod/Fem/femguiobjects/_ViewProviderFemMeshGmsh.py @@ -80,11 +80,14 @@ class _ViewProviderFemMeshGmsh: return True def doubleClicked(self, vobj): - # Group meshing is only active on active analysis, we should make sure the analysis the mesh belongs too is active + # Group meshing is only active on active analysis + # we should make sure the analysis the mesh belongs too is active gui_doc = FreeCADGui.getDocument(vobj.Object.Document) if not gui_doc.getInEdit(): - # may be go the other way around and just activate the analysis the user has doubleClicked on ?! - # not a fast one, we need to iterate over all member of all analysis to know to which analysis the object belongs too!!! + # may be go the other way around and just activate the + # analysis the user has doubleClicked on ?! + # not a fast one, we need to iterate over all member of all + # analysis to know to which analysis the object belongs too!!! # first check if there is an analysis in the active document found_an_analysis = False for o in gui_doc.Document.Objects: @@ -98,7 +101,10 @@ class _ViewProviderFemMeshGmsh: if not gui_doc.getInEdit(): gui_doc.setEdit(vobj.Object.Name) else: - FreeCAD.Console.PrintError('Activate the analysis this Gmsh FEM mesh object belongs too!\n') + FreeCAD.Console.PrintError( + 'Activate the analysis this Gmsh FEM ' + 'mesh object belongs too!\n' + ) else: print('Gmsh FEM mesh object does not belong to the active analysis.') found_mesh_analysis = False @@ -108,16 +114,27 @@ class _ViewProviderFemMeshGmsh: if m == self.Object: found_mesh_analysis = True FemGui.setActiveAnalysis(o) - print('The analysis the Gmsh FEM mesh object belongs too was found and activated: ' + o.Name) + print( + 'The analysis the Gmsh FEM mesh object ' + 'belongs to was found and activated: {}' + .format(o.Name) + ) gui_doc.setEdit(vobj.Object.Name) break if not found_mesh_analysis: - print('Gmsh FEM mesh object does not belong to an analysis. Analysis group meshing will be deactivated.') + print( + 'Gmsh FEM mesh object does not belong to an analysis. ' + 'Analysis group meshing will be deactivated.' + ) gui_doc.setEdit(vobj.Object.Name) else: FreeCAD.Console.PrintError('Active analysis is not in active document.') else: - print('No active analysis in active document, we are going to have a look if the Gmsh FEM mesh object belongs to a non active analysis.') + print( + 'No active analysis in active document, ' + 'we are going to have a look if the Gmsh FEM mesh object ' + 'belongs to a non active analysis.' + ) found_mesh_analysis = False for o in gui_doc.Document.Objects: if o.isDerivedFrom('Fem::FemAnalysisPython'): @@ -125,11 +142,17 @@ class _ViewProviderFemMeshGmsh: if m == self.Object: found_mesh_analysis = True FemGui.setActiveAnalysis(o) - print('The analysis the Gmsh FEM mesh object belongs to was found and activated: ' + o.Name) + print( + 'The analysis the Gmsh FEM mesh object ' + 'belongs to was found and activated: {}'.format(o.Name) + ) gui_doc.setEdit(vobj.Object.Name) break if not found_mesh_analysis: - print('Gmsh FEM mesh object does not belong to an analysis. Analysis group meshing will be deactivated.') + print( + 'Gmsh FEM mesh object does not belong to an analysis. ' + 'Analysis group meshing will be deactivated.' + ) gui_doc.setEdit(vobj.Object.Name) else: print('No analysis in the active document.') @@ -148,7 +171,10 @@ class _ViewProviderFemMeshGmsh: return None def claimChildren(self): - return (self.Object.MeshRegionList + self.Object.MeshGroupList + self.Object.MeshBoundaryLayerList) + reg_childs = self.Object.MeshRegionList + gro_childs = self.Object.MeshGroupList + bou_childs = self.Object.MeshBoundaryLayerList + return (reg_childs + gro_childs + bou_childs) def onDelete(self, feature, subelements): try: @@ -165,11 +191,14 @@ class _ViewProviderFemMeshGmsh: return True def canDragObject(self, dragged_object): - if hasattr(dragged_object, "Proxy") and dragged_object.Proxy.Type == "Fem::FemMeshBoundaryLayer": + if hasattr(dragged_object, "Proxy") \ + and dragged_object.Proxy.Type == "Fem::FemMeshBoundaryLayer": return True - elif hasattr(dragged_object, "Proxy") and dragged_object.Proxy.Type == "Fem::FemMeshGroup": + elif hasattr(dragged_object, "Proxy") \ + and dragged_object.Proxy.Type == "Fem::FemMeshGroup": return True - elif hasattr(dragged_object, "Proxy") and dragged_object.Proxy.Type == "Fem::FemMeshRegion": + elif hasattr(dragged_object, "Proxy") \ + and dragged_object.Proxy.Type == "Fem::FemMeshRegion": return True else: return False @@ -192,15 +221,18 @@ class _ViewProviderFemMeshGmsh: self.Object.MeshRegionList = objs def dropObject(self, selfvp, incoming_object): - if hasattr(incoming_object, "Proxy") and incoming_object.Proxy.Type == "Fem::FemMeshBoundaryLayer": + if hasattr(incoming_object, "Proxy") \ + and incoming_object.Proxy.Type == "Fem::FemMeshBoundaryLayer": objs = self.Object.MeshBoundaryLayerList objs.append(incoming_object) self.Object.MeshBoundaryLayerList = objs - elif hasattr(incoming_object, "Proxy") and incoming_object.Proxy.Type == "Fem::FemMeshGroup": + elif hasattr(incoming_object, "Proxy") \ + and incoming_object.Proxy.Type == "Fem::FemMeshGroup": objs = self.Object.MeshGroupList objs.append(incoming_object) self.Object.MeshGroupList = objs - elif hasattr(incoming_object, "Proxy") and incoming_object.Proxy.Type == "Fem::FemMeshRegion": + elif hasattr(incoming_object, "Proxy") \ + and incoming_object.Proxy.Type == "Fem::FemMeshRegion": objs = self.Object.MeshRegionList objs.append(incoming_object) self.Object.MeshRegionList = objs @@ -208,30 +240,54 @@ class _ViewProviderFemMeshGmsh: class _TaskPanelFemMeshGmsh: - '''The TaskPanel for editing References property of FemMeshGmsh objects and creation of new FEM mesh''' + '''The TaskPanel for editing References property of + FemMeshGmsh objects and creation of new FEM mesh''' def __init__(self, obj): self.mesh_obj = obj - self.form = FreeCADGui.PySideUic.loadUi(FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/MeshGmsh.ui") + self.form = FreeCADGui.PySideUic.loadUi( + FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/MeshGmsh.ui" + ) self.Timer = QtCore.QTimer() self.Timer.start(100) # 100 milli seconds self.gmsh_runs = False self.console_message_gmsh = '' - QtCore.QObject.connect(self.form.if_max, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.max_changed) - QtCore.QObject.connect(self.form.if_min, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.min_changed) - QtCore.QObject.connect(self.form.cb_dimension, QtCore.SIGNAL("activated(int)"), self.choose_dimension) - QtCore.QObject.connect(self.Timer, QtCore.SIGNAL("timeout()"), self.update_timer_text) + QtCore.QObject.connect( + self.form.if_max, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.max_changed + ) + QtCore.QObject.connect( + self.form.if_min, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.min_changed + ) + QtCore.QObject.connect( + self.form.cb_dimension, + QtCore.SIGNAL("activated(int)"), + self.choose_dimension + ) + QtCore.QObject.connect( + self.Timer, + QtCore.SIGNAL("timeout()"), + self.update_timer_text + ) - self.form.cb_dimension.addItems(_FemMeshGmsh._FemMeshGmsh.known_element_dimensions) + self.form.cb_dimension.addItems( + _FemMeshGmsh._FemMeshGmsh.known_element_dimensions + ) self.get_mesh_params() self.get_active_analysis() self.update() def getStandardButtons(self): - return int(QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Apply | QtGui.QDialogButtonBox.Cancel) + button_value = int( + QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Apply | QtGui.QDialogButtonBox.Cancel + ) + return button_value # show a OK, a apply and a Cancel button # def reject() is called on Cancel button # def clicked(self, button) is needed, to access the apply button @@ -272,8 +328,10 @@ class _TaskPanelFemMeshGmsh: def console_log(self, message="", color="#000000"): if (not isinstance(message, bytes)) and (sys.version_info.major < 3): message = message.encode('utf-8', 'replace') - self.console_message_gmsh = self.console_message_gmsh + '{0:4.1f}: {2}
'.\ - format(time.time() - self.Start, color, message) + self.console_message_gmsh = self.console_message_gmsh + ( + '{0:4.1f}: {2}
' + .format(time.time() - self.Start, color, message) + ) self.form.te_output.setText(self.console_message_gmsh) self.form.te_output.moveCursor(QtGui.QTextCursor.End) @@ -300,14 +358,27 @@ class _TaskPanelFemMeshGmsh: QApplication.setOverrideCursor(Qt.WaitCursor) part = self.obj.Part if self.mesh_obj.MeshRegionList: - if part.Shape.ShapeType == "Compound" and hasattr(part, "Proxy"): # other part obj might not have a Proxy, thus an exception would be raised - if (part.Proxy.Type == "FeatureBooleanFragments" or part.Proxy.Type == "FeatureSlice" or part.Proxy.Type == "FeatureXOR"): + # other part obj might not have a Proxy, thus an exception would be raised + if part.Shape.ShapeType == "Compound" and hasattr(part, "Proxy"): + if part.Proxy.Type == "FeatureBooleanFragments" \ + or part.Proxy.Type == "FeatureSlice" \ + or part.Proxy.Type == "FeatureXOR": error_message = ( - 'The mesh to shape is a boolean split tools Compound and the mesh has mesh region list. ' + 'The shape to mesh is a boolean split tools Compound ' + 'and the mesh has mesh region list. ' 'Gmsh could return unexpected meshes in such circumstances. ' - 'It is strongly recommended to extract the shape to mesh from the Compound and use this one.' + 'It is strongly recommended to extract the shape ' + 'to mesh from the Compound and use this one.' + ) + qtbox_title = ( + "Shape to mesh is a BooleanFragmentsCompound " + "and mesh regions are defined" + ) + QtGui.QMessageBox.critical( + None, + qtbox_title, + error_message ) - QtGui.QMessageBox.critical(None, "Shape to mesh is a BooleanFragmentsCompound and mesh regions are defined", error_message) self.Start = time.time() self.form.l_time.setText('Time: {0:4.1f}: '.format(time.time() - self.Start)) self.console_message_gmsh = '' diff --git a/src/Mod/Fem/femguiobjects/_ViewProviderFemMeshGroup.py b/src/Mod/Fem/femguiobjects/_ViewProviderFemMeshGroup.py index 10615a11fc..d1065c9b1e 100644 --- a/src/Mod/Fem/femguiobjects/_ViewProviderFemMeshGroup.py +++ b/src/Mod/Fem/femguiobjects/_ViewProviderFemMeshGroup.py @@ -82,7 +82,8 @@ class _ViewProviderFemMeshGroup: def doubleClicked(self, vobj): guidoc = FreeCADGui.getDocument(vobj.Object.Document) - # check if another VP is in edit mode, https://forum.freecadweb.org/viewtopic.php?t=13077#p104702 + # check if another VP is in edit mode + # https://forum.freecadweb.org/viewtopic.php?t=13077#p104702 if not guidoc.getInEdit(): guidoc.setEdit(vobj.Object.Name) else: @@ -107,13 +108,27 @@ class _TaskPanelFemMeshGroup: self.obj = obj # parameter widget - self.parameterWidget = FreeCADGui.PySideUic.loadUi(FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/MeshGroup.ui") - QtCore.QObject.connect(self.parameterWidget.rb_name, QtCore.SIGNAL("toggled(bool)"), self.choose_exportidentifier_name) - QtCore.QObject.connect(self.parameterWidget.rb_label, QtCore.SIGNAL("toggled(bool)"), self.choose_exportidentifier_label) + self.parameterWidget = FreeCADGui.PySideUic.loadUi( + FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/MeshGroup.ui" + ) + QtCore.QObject.connect( + self.parameterWidget.rb_name, + QtCore.SIGNAL("toggled(bool)"), + self.choose_exportidentifier_name + ) + QtCore.QObject.connect( + self.parameterWidget.rb_label, + QtCore.SIGNAL("toggled(bool)"), + self.choose_exportidentifier_label + ) self.init_parameter_widget() # geometry selection widget - self.selectionWidget = FemSelectionWidgets.GeometryElementsSelection(obj.References, ['Solid', 'Face', 'Edge', 'Vertex']) # start with Solid in list! + # start with Solid in list! + self.selectionWidget = FemSelectionWidgets.GeometryElementsSelection( + obj.References, + ['Solid', 'Face', 'Edge', 'Vertex'] + ) # form made from param and selection widget self.form = [self.parameterWidget, self.selectionWidget] diff --git a/src/Mod/Fem/femguiobjects/_ViewProviderFemMeshRegion.py b/src/Mod/Fem/femguiobjects/_ViewProviderFemMeshRegion.py index b9a5a48d79..6a8dc38fd5 100644 --- a/src/Mod/Fem/femguiobjects/_ViewProviderFemMeshRegion.py +++ b/src/Mod/Fem/femguiobjects/_ViewProviderFemMeshRegion.py @@ -83,7 +83,8 @@ class _ViewProviderFemMeshRegion: def doubleClicked(self, vobj): guidoc = FreeCADGui.getDocument(vobj.Object.Document) - # check if another VP is in edit mode, https://forum.freecadweb.org/viewtopic.php?t=13077#p104702 + # check if another VP is in edit mode + # https://forum.freecadweb.org/viewtopic.php?t=13077#p104702 if not guidoc.getInEdit(): guidoc.setEdit(vobj.Object.Name) else: @@ -108,12 +109,22 @@ class _TaskPanelFemMeshRegion: self.obj = obj # parameter widget - self.parameterWidget = FreeCADGui.PySideUic.loadUi(FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/MeshRegion.ui") - QtCore.QObject.connect(self.parameterWidget.if_elelen, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.elelen_changed) + self.parameterWidget = FreeCADGui.PySideUic.loadUi( + FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/MeshRegion.ui" + ) + QtCore.QObject.connect( + self.parameterWidget.if_elelen, + QtCore.SIGNAL("valueChanged(Base::Quantity)"), + self.elelen_changed + ) self.init_parameter_widget() # geometry selection widget - self.selectionWidget = FemSelectionWidgets.GeometryElementsSelection(obj.References, ['Solid', 'Face', 'Edge', 'Vertex']) # start with Solid in list! + # start with Solid in list! + self.selectionWidget = FemSelectionWidgets.GeometryElementsSelection( + obj.References, + ['Solid', 'Face', 'Edge', 'Vertex'] + ) # form made from param and selection widget self.form = [self.parameterWidget, self.selectionWidget] diff --git a/src/Mod/Fem/femguiobjects/_ViewProviderFemResultMechanical.py b/src/Mod/Fem/femguiobjects/_ViewProviderFemResultMechanical.py index 267fbc5d45..1d4f823d92 100644 --- a/src/Mod/Fem/femguiobjects/_ViewProviderFemResultMechanical.py +++ b/src/Mod/Fem/femguiobjects/_ViewProviderFemResultMechanical.py @@ -65,7 +65,8 @@ class _ViewProviderFemResultMechanical: def doubleClicked(self, vobj): guidoc = FreeCADGui.getDocument(vobj.Object.Document) - # check if another VP is in edit mode, https://forum.freecadweb.org/viewtopic.php?t=13077#p104702 + # check if another VP is in edit mode + # https://forum.freecadweb.org/viewtopic.php?t=13077#p104702 if not guidoc.getInEdit(): guidoc.setEdit(vobj.Object.Name) else: @@ -93,7 +94,8 @@ class _ViewProviderFemResultMechanical: def unsetEdit(self, vobj, mode=0): FreeCADGui.Control.closeDialog() - self.Object.Mesh.ViewObject.hide() # hide the mesh after result viewing is finished, but do not reset the coloring + # hide the mesh after result viewing is finished, but do not reset the coloring + self.Object.Mesh.ViewObject.hide() return True def __getstate__(self): @@ -121,37 +123,118 @@ class _TaskPanelFemResultShow: self.result_obj = obj self.mesh_obj = self.result_obj.Mesh # task panel should be started by use of setEdit of view provider - # in view provider checks: Mesh, active analysis and if Mesh and result are in active analysis + # in view provider checks: Mesh, active analysis and + # if Mesh and result are in active analysis - self.form = FreeCADGui.PySideUic.loadUi(FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/ResultShow.ui") - self.fem_prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem/General") - self.restore_result_settings_in_dialog = self.fem_prefs.GetBool("RestoreResultDialog", True) + self.form = FreeCADGui.PySideUic.loadUi( + FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/ResultShow.ui" + ) + self.fem_prefs = FreeCAD.ParamGet( + "User parameter:BaseApp/Preferences/Mod/Fem/General" + ) + self.restore_result_settings_in_dialog = self.fem_prefs.GetBool( + "RestoreResultDialog", True + ) # Connect Signals and Slots # result type radio buttons - QtCore.QObject.connect(self.form.rb_none, QtCore.SIGNAL("toggled(bool)"), self.none_selected) - QtCore.QObject.connect(self.form.rb_abs_displacement, QtCore.SIGNAL("toggled(bool)"), self.abs_displacement_selected) - QtCore.QObject.connect(self.form.rb_x_displacement, QtCore.SIGNAL("toggled(bool)"), self.x_displacement_selected) - QtCore.QObject.connect(self.form.rb_y_displacement, QtCore.SIGNAL("toggled(bool)"), self.y_displacement_selected) - QtCore.QObject.connect(self.form.rb_z_displacement, QtCore.SIGNAL("toggled(bool)"), self.z_displacement_selected) - QtCore.QObject.connect(self.form.rb_temperature, QtCore.SIGNAL("toggled(bool)"), self.temperature_selected) - QtCore.QObject.connect(self.form.rb_vm_stress, QtCore.SIGNAL("toggled(bool)"), self.vm_stress_selected) - QtCore.QObject.connect(self.form.rb_maxprin, QtCore.SIGNAL("toggled(bool)"), self.max_prin_selected) - QtCore.QObject.connect(self.form.rb_minprin, QtCore.SIGNAL("toggled(bool)"), self.min_prin_selected) - QtCore.QObject.connect(self.form.rb_max_shear_stress, QtCore.SIGNAL("toggled(bool)"), self.max_shear_selected) - QtCore.QObject.connect(self.form.rb_massflowrate, QtCore.SIGNAL("toggled(bool)"), self.massflowrate_selected) - QtCore.QObject.connect(self.form.rb_networkpressure, QtCore.SIGNAL("toggled(bool)"), self.networkpressure_selected) - QtCore.QObject.connect(self.form.rb_peeq, QtCore.SIGNAL("toggled(bool)"), self.peeq_selected) + QtCore.QObject.connect( + self.form.rb_none, QtCore.SIGNAL("toggled(bool)"), + self.none_selected + ) + QtCore.QObject.connect( + self.form.rb_abs_displacement, + QtCore.SIGNAL("toggled(bool)"), + self.abs_displacement_selected + ) + QtCore.QObject.connect( + self.form.rb_x_displacement, + QtCore.SIGNAL("toggled(bool)"), + self.x_displacement_selected + ) + QtCore.QObject.connect( + self.form.rb_y_displacement, + QtCore.SIGNAL("toggled(bool)"), + self.y_displacement_selected + ) + QtCore.QObject.connect( + self.form.rb_z_displacement, + QtCore.SIGNAL("toggled(bool)"), + self.z_displacement_selected + ) + QtCore.QObject.connect( + self.form.rb_temperature, + QtCore.SIGNAL("toggled(bool)"), + self.temperature_selected + ) + QtCore.QObject.connect( + self.form.rb_vm_stress, + QtCore.SIGNAL("toggled(bool)"), + self.vm_stress_selected + ) + QtCore.QObject.connect( + self.form.rb_maxprin, + QtCore.SIGNAL("toggled(bool)"), + self.max_prin_selected + ) + QtCore.QObject.connect( + self.form.rb_minprin, + QtCore.SIGNAL("toggled(bool)"), + self.min_prin_selected + ) + QtCore.QObject.connect( + self.form.rb_max_shear_stress, + QtCore.SIGNAL("toggled(bool)"), + self.max_shear_selected + ) + QtCore.QObject.connect( + self.form.rb_massflowrate, + QtCore.SIGNAL("toggled(bool)"), + self.massflowrate_selected + ) + QtCore.QObject.connect( + self.form.rb_networkpressure, + QtCore.SIGNAL("toggled(bool)"), + self.networkpressure_selected + ) + QtCore.QObject.connect( + self.form.rb_peeq, QtCore.SIGNAL("toggled(bool)"), + self.peeq_selected + ) # displacement - QtCore.QObject.connect(self.form.cb_show_displacement, QtCore.SIGNAL("clicked(bool)"), self.show_displacement) - QtCore.QObject.connect(self.form.hsb_displacement_factor, QtCore.SIGNAL("valueChanged(int)"), self.hsb_disp_factor_changed) - QtCore.QObject.connect(self.form.sb_displacement_factor, QtCore.SIGNAL("valueChanged(int)"), self.sb_disp_factor_changed) - QtCore.QObject.connect(self.form.sb_displacement_factor_max, QtCore.SIGNAL("valueChanged(int)"), self.sb_disp_factor_max_changed) + QtCore.QObject.connect( + self.form.cb_show_displacement, + QtCore.SIGNAL("clicked(bool)"), + self.show_displacement + ) + QtCore.QObject.connect( + self.form.hsb_displacement_factor, + QtCore.SIGNAL("valueChanged(int)"), + self.hsb_disp_factor_changed + ) + QtCore.QObject.connect( + self.form.sb_displacement_factor, + QtCore.SIGNAL("valueChanged(int)"), + self.sb_disp_factor_changed + ) + QtCore.QObject.connect( + self.form.sb_displacement_factor_max, + QtCore.SIGNAL("valueChanged(int)"), + self.sb_disp_factor_max_changed + ) # user defined equation - QtCore.QObject.connect(self.form.user_def_eq, QtCore.SIGNAL("textchanged()"), self.user_defined_text) - QtCore.QObject.connect(self.form.calculate, QtCore.SIGNAL("clicked()"), self.calculate) + QtCore.QObject.connect( + self.form.user_def_eq, + QtCore.SIGNAL("textchanged()"), + self.user_defined_text + ) + QtCore.QObject.connect( + self.form.calculate, + QtCore.SIGNAL("clicked()"), + self.calculate + ) self.update() if self.restore_result_settings_in_dialog: @@ -259,7 +342,10 @@ class _TaskPanelFemResultShow: FreeCAD.FEM_dialog["results_type"] = "Sabs" QApplication.setOverrideCursor(Qt.WaitCursor) if self.suitable_results: - self.mesh_obj.ViewObject.setNodeColorByScalars(self.result_obj.NodeNumbers, self.result_obj.StressValues) + self.mesh_obj.ViewObject.setNodeColorByScalars( + self.result_obj.NodeNumbers, + self.result_obj.StressValues + ) (minm, avg, maxm) = self.get_result_stats("Sabs") self.set_result_stats("MPa", minm, avg, maxm) QtGui.QApplication.restoreOverrideCursor() @@ -268,7 +354,10 @@ class _TaskPanelFemResultShow: FreeCAD.FEM_dialog["results_type"] = "MaxShear" QApplication.setOverrideCursor(Qt.WaitCursor) if self.suitable_results: - self.mesh_obj.ViewObject.setNodeColorByScalars(self.result_obj.NodeNumbers, self.result_obj.MaxShear) + self.mesh_obj.ViewObject.setNodeColorByScalars( + self.result_obj.NodeNumbers, + self.result_obj.MaxShear + ) (minm, avg, maxm) = self.get_result_stats("MaxShear") self.set_result_stats("MPa", minm, avg, maxm) QtGui.QApplication.restoreOverrideCursor() @@ -277,7 +366,10 @@ class _TaskPanelFemResultShow: FreeCAD.FEM_dialog["results_type"] = "MaxPrin" QApplication.setOverrideCursor(Qt.WaitCursor) if self.suitable_results: - self.mesh_obj.ViewObject.setNodeColorByScalars(self.result_obj.NodeNumbers, self.result_obj.PrincipalMax) + self.mesh_obj.ViewObject.setNodeColorByScalars( + self.result_obj.NodeNumbers, + self.result_obj.PrincipalMax + ) (minm, avg, maxm) = self.get_result_stats("MaxPrin") self.set_result_stats("MPa", minm, avg, maxm) QtGui.QApplication.restoreOverrideCursor() @@ -286,7 +378,10 @@ class _TaskPanelFemResultShow: FreeCAD.FEM_dialog["results_type"] = "Temp" QApplication.setOverrideCursor(Qt.WaitCursor) if self.suitable_results: - self.mesh_obj.ViewObject.setNodeColorByScalars(self.result_obj.NodeNumbers, self.result_obj.Temperature) + self.mesh_obj.ViewObject.setNodeColorByScalars( + self.result_obj.NodeNumbers, + self.result_obj.Temperature + ) (minm, avg, maxm) = self.get_result_stats("Temp") self.set_result_stats("K", minm, avg, maxm) QtGui.QApplication.restoreOverrideCursor() @@ -295,7 +390,10 @@ class _TaskPanelFemResultShow: FreeCAD.FEM_dialog["results_type"] = "MFlow" QApplication.setOverrideCursor(Qt.WaitCursor) if self.suitable_results: - self.mesh_obj.ViewObject.setNodeColorByScalars(self.result_obj.NodeNumbers, self.result_obj.MassFlowRate) + self.mesh_obj.ViewObject.setNodeColorByScalars( + self.result_obj.NodeNumbers, + self.result_obj.MassFlowRate + ) (minm, avg, maxm) = self.get_result_stats("MFlow") self.set_result_stats("kg/s", minm, avg, maxm) QtGui.QApplication.restoreOverrideCursor() @@ -304,7 +402,10 @@ class _TaskPanelFemResultShow: FreeCAD.FEM_dialog["results_type"] = "NPress" QApplication.setOverrideCursor(Qt.WaitCursor) if self.suitable_results: - self.mesh_obj.ViewObject.setNodeColorByScalars(self.result_obj.NodeNumbers, self.result_obj.NetworkPressure) + self.mesh_obj.ViewObject.setNodeColorByScalars( + self.result_obj.NodeNumbers, + self.result_obj.NetworkPressure + ) (minm, avg, maxm) = self.get_result_stats("NPress") self.set_result_stats("MPa", minm, avg, maxm) QtGui.QApplication.restoreOverrideCursor() @@ -313,7 +414,10 @@ class _TaskPanelFemResultShow: FreeCAD.FEM_dialog["results_type"] = "MinPrin" QApplication.setOverrideCursor(Qt.WaitCursor) if self.suitable_results: - self.mesh_obj.ViewObject.setNodeColorByScalars(self.result_obj.NodeNumbers, self.result_obj.PrincipalMin) + self.mesh_obj.ViewObject.setNodeColorByScalars( + self.result_obj.NodeNumbers, + self.result_obj.PrincipalMin + ) (minm, avg, maxm) = self.get_result_stats("MinPrin") self.set_result_stats("MPa", minm, avg, maxm) QtGui.QApplication.restoreOverrideCursor() @@ -322,7 +426,10 @@ class _TaskPanelFemResultShow: FreeCAD.FEM_dialog["results_type"] = "Peeq" QApplication.setOverrideCursor(Qt.WaitCursor) if self.suitable_results: - self.mesh_obj.ViewObject.setNodeColorByScalars(self.result_obj.NodeNumbers, self.result_obj.Peeq) + self.mesh_obj.ViewObject.setNodeColorByScalars( + self.result_obj.NodeNumbers, + self.result_obj.Peeq + ) (minm, avg, maxm) = self.get_result_stats("Peeq") self.set_result_stats("", minm, avg, maxm) QtGui.QApplication.restoreOverrideCursor() @@ -369,22 +476,36 @@ class _TaskPanelFemResultShow: QApplication.setOverrideCursor(Qt.WaitCursor) if self.suitable_results: - self.mesh_obj.ViewObject.setNodeColorByScalars(self.result_obj.NodeNumbers, UserDefinedFormula) + self.mesh_obj.ViewObject.setNodeColorByScalars( + self.result_obj.NodeNumbers, + UserDefinedFormula + ) self.set_result_stats("", minm, avg, maxm) QtGui.QApplication.restoreOverrideCursor() - del x, y, z, T, Von, Peeq, P1, P2, P3, sxx, syy, szz, sxy, sxz, syz, exx, eyy, ezz, exy, exz, eyz, MF, NP # Dummy use of the variables to get around flake8 error + # Dummy use of the variables to get around flake8 error + del x, y, z, T, Von, Peeq, P1, P2, P3 + del sxx, syy, szz, sxy, sxz, syz + del exx, eyy, ezz, exy, exz, eyz + del MF, NP def select_displacement_type(self, disp_type): QApplication.setOverrideCursor(Qt.WaitCursor) if disp_type == "Uabs": if self.suitable_results: - self.mesh_obj.ViewObject.setNodeColorByScalars(self.result_obj.NodeNumbers, self.result_obj.DisplacementLengths) + self.mesh_obj.ViewObject.setNodeColorByScalars( + self.result_obj.NodeNumbers, + self.result_obj.DisplacementLengths + ) else: match = {"U1": 0, "U2": 1, "U3": 2} - d = list(zip(*self.result_obj.DisplacementVectors)) # list is needed, as zib-object is not subscriptable in py3 + # list is needed, as zib-object is not subscriptable in py3 + d = list(zip(*self.result_obj.DisplacementVectors)) displacements = list(d[match[disp_type]]) if self.suitable_results: - self.mesh_obj.ViewObject.setNodeColorByScalars(self.result_obj.NodeNumbers, displacements) + self.mesh_obj.ViewObject.setNodeColorByScalars( + self.result_obj.NodeNumbers, + displacements + ) (minm, avg, maxm) = self.get_result_stats(disp_type) self.set_result_stats("mm", minm, avg, maxm) QtGui.QApplication.restoreOverrideCursor() @@ -413,7 +534,10 @@ class _TaskPanelFemResultShow: self.update_displacement() FreeCAD.FEM_dialog["result_obj"] = self.result_obj if self.suitable_results: - self.mesh_obj.ViewObject.setNodeDisplacementByVectors(self.result_obj.NodeNumbers, self.result_obj.DisplacementVectors) + self.mesh_obj.ViewObject.setNodeDisplacementByVectors( + self.result_obj.NodeNumbers, + self.result_obj.DisplacementVectors + ) self.update_displacement() QtGui.QApplication.restoreOverrideCursor() @@ -473,7 +597,10 @@ class _TaskPanelFemResultShow: hide_parts_constraints() else: if not self.mesh_obj.FemMesh.VolumeCount: - error_message = 'FEM: Graphical bending stress output for beam or shell FEM Meshes not yet supported.\n' + error_message = ( + 'FEM: Graphical bending stress output ' + 'for beam or shell FEM Meshes not yet supported.\n' + ) FreeCAD.Console.PrintError(error_message) QtGui.QMessageBox.critical(None, 'No result object', error_message) else: @@ -492,7 +619,9 @@ class _TaskPanelFemResultShow: self.mesh_obj.ViewObject.setNodeColorByScalars(node_numbers, zero_values) def reject(self): - FreeCADGui.Control.closeDialog() # if the tasks panel is called from Command obj is not in edit mode thus reset edit does not close the dialog, maybe don't call but set in edit instead + # if the tasks panel is called from Command obj is not in edit mode + # thus reset edit does not close the dialog, maybe don't call but set in edit instead + FreeCADGui.Control.closeDialog() FreeCADGui.ActiveDocument.resetEdit() diff --git a/src/Mod/Fem/femguiobjects/_ViewProviderFemSolverCalculix.py b/src/Mod/Fem/femguiobjects/_ViewProviderFemSolverCalculix.py index fe65e94cf2..8dbf853467 100644 --- a/src/Mod/Fem/femguiobjects/_ViewProviderFemSolverCalculix.py +++ b/src/Mod/Fem/femguiobjects/_ViewProviderFemSolverCalculix.py @@ -95,7 +95,9 @@ class _TaskPanelFemSolverCalculix: '''The TaskPanel for CalculiX ccx tools solver object''' def __init__(self, solver_object): - self.form = FreeCADGui.PySideUic.loadUi(FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/SolverCalculix.ui") + self.form = FreeCADGui.PySideUic.loadUi( + FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/SolverCalculix.ui" + ) from femtools.ccxtools import CcxTools as ccx # we do not need to pass the analysis, it will be found on fea init @@ -110,21 +112,71 @@ class _TaskPanelFemSolverCalculix: self.fem_console_message = '' # Connect Signals and Slots - QtCore.QObject.connect(self.form.tb_choose_working_dir, QtCore.SIGNAL("clicked()"), self.choose_working_dir) - QtCore.QObject.connect(self.form.pb_write_inp, QtCore.SIGNAL("clicked()"), self.write_input_file_handler) - QtCore.QObject.connect(self.form.pb_edit_inp, QtCore.SIGNAL("clicked()"), self.editCalculixInputFile) - QtCore.QObject.connect(self.form.pb_run_ccx, QtCore.SIGNAL("clicked()"), self.runCalculix) - QtCore.QObject.connect(self.form.rb_static_analysis, QtCore.SIGNAL("clicked()"), self.select_static_analysis) - QtCore.QObject.connect(self.form.rb_frequency_analysis, QtCore.SIGNAL("clicked()"), self.select_frequency_analysis) - QtCore.QObject.connect(self.form.rb_thermomech_analysis, QtCore.SIGNAL("clicked()"), self.select_thermomech_analysis) - QtCore.QObject.connect(self.form.rb_check_mesh, QtCore.SIGNAL("clicked()"), self.select_check_mesh) - - QtCore.QObject.connect(self.Calculix, QtCore.SIGNAL("started()"), self.calculixStarted) - QtCore.QObject.connect(self.Calculix, QtCore.SIGNAL("stateChanged(QProcess::ProcessState)"), self.calculixStateChanged) - QtCore.QObject.connect(self.Calculix, QtCore.SIGNAL("error(QProcess::ProcessError)"), self.calculixError) - QtCore.QObject.connect(self.Calculix, QtCore.SIGNAL("finished(int)"), self.calculixFinished) - - QtCore.QObject.connect(self.Timer, QtCore.SIGNAL("timeout()"), self.UpdateText) + QtCore.QObject.connect( + self.form.tb_choose_working_dir, + QtCore.SIGNAL("clicked()"), + self.choose_working_dir + ) + QtCore.QObject.connect( + self.form.pb_write_inp, + QtCore.SIGNAL("clicked()"), + self.write_input_file_handle + ) + QtCore.QObject.connect( + self.form.pb_edit_inp, + QtCore.SIGNAL("clicked()"), + self.editCalculixInputFile + ) + QtCore.QObject.connect( + self.form.pb_run_ccx, + QtCore.SIGNAL("clicked()"), + self.runCalculix + ) + QtCore.QObject.connect( + self.form.rb_static_analysis, + QtCore.SIGNAL("clicked()"), + self.select_static_analysis + ) + QtCore.QObject.connect( + self.form.rb_frequency_analysis, + QtCore.SIGNAL("clicked()"), + self.select_frequency_analysis + ) + QtCore.QObject.connect( + self.form.rb_thermomech_analysis, + QtCore.SIGNAL("clicked()"), + self.select_thermomech_analysis + ) + QtCore.QObject.connect( + self.form.rb_check_mesh, + QtCore.SIGNAL("clicked()"), + self.select_check_mesh + ) + QtCore.QObject.connect( + self.Calculix, + QtCore.SIGNAL("started()"), + self.calculixStarted + ) + QtCore.QObject.connect( + self.Calculix, + QtCore.SIGNAL("stateChanged(QProcess::ProcessState)"), + self.calculixStateChanged + ) + QtCore.QObject.connect( + self.Calculix, + QtCore.SIGNAL("error(QProcess::ProcessError)"), + self.calculixError + ) + QtCore.QObject.connect( + self.Calculix, + QtCore.SIGNAL("finished(int)"), + self.calculixFinished + ) + QtCore.QObject.connect( + self.Timer, + QtCore.SIGNAL("timeout()"), + self.UpdateText + ) self.update() @@ -152,8 +204,10 @@ class _TaskPanelFemSolverCalculix: def femConsoleMessage(self, message="", color="#000000"): if sys.version_info.major < 3: message = message.encode("utf-8", "replace") - self.fem_console_message = self.fem_console_message + '{0:4.1f}: {2}
'.\ - format(time.time() - self.Start, color, message) + self.fem_console_message = self.fem_console_message + ( + '{0:4.1f}: {2}
' + .format(time.time() - self.Start, color, message) + ) self.form.textEdit_Output.setText(self.fem_console_message) self.form.textEdit_Output.moveCursor(QtGui.QTextCursor.End) @@ -298,7 +352,10 @@ class _TaskPanelFemSolverCalculix: if ext_editor_path: self.start_ext_editor(ext_editor_path, self.fea.inp_file_name) else: - print("External editor is not defined in FEM preferences. Falling back to internal editor") + print( + "External editor is not defined in FEM preferences. " + "Falling back to internal editor" + ) FemGui.open(self.fea.inp_file_name) def runCalculix(self): @@ -309,7 +366,10 @@ class _TaskPanelFemSolverCalculix: self.femConsoleMessage("Run CalculiX...") # run Calculix - print('run CalculiX at: {} with: {}'.format(self.fea.ccx_binary, os.path.splitext(self.fea.inp_file_name)[0])) + print( + 'run CalculiX at: {} with: {}' + .format(self.fea.ccx_binary, os.path.splitext(self.fea.inp_file_name)[0]) + ) # change cwd because ccx may crash if directory has no write permission # there is also a limit of the length of file names so jump to the document directory self.cwd = QtCore.QDir.currentPath()