FEM: gui objs, use single quotes instead of double ones

This commit is contained in:
Bernd Hahnebach
2019-09-05 22:02:56 +02:00
parent 55913c5395
commit 448e9d7731
17 changed files with 367 additions and 367 deletions

View File

@@ -234,13 +234,13 @@ 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)
# "Selection of: {} is allowed.\n".format(self.sel_elem_types)
# )
self.sel_elem_text = ''
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.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"
)
@@ -267,7 +267,7 @@ class GeometryElementsSelection(QtGui.QWidget):
# radiobutton down the list
self.lb_selmod = QtGui.QLabel()
self.lb_selmod.setText(self.tr("Selection mode"))
self.rb_standard = QtGui.QRadioButton(self.tr(self.sel_elem_text.lstrip('Solid, ')))
self.rb_standard = QtGui.QRadioButton(self.tr(self.sel_elem_text.lstrip("Solid, ")))
self.rb_solid = QtGui.QRadioButton(self.tr("Solid"))
self.rb_standard.setChecked(True)
self.rb_solid.setChecked(False)
@@ -281,7 +281,7 @@ class GeometryElementsSelection(QtGui.QWidget):
mainLayout.addWidget(self._helpTextLbl)
mainLayout.addWidget(self.pushButton_Add)
mainLayout.addWidget(self.list_References)
if 'Solid' in self.sel_elem_types:
if "Solid" in self.sel_elem_types:
mainLayout.addLayout(rbtnLayout)
self.setLayout(mainLayout)
# signals and slots
@@ -314,7 +314,7 @@ class GeometryElementsSelection(QtGui.QWidget):
self.references.append((ref[0], elem))
def get_item_text(self, ref):
return (ref[0].Name + ':' + ref[1])
return (ref[0].Name + ":" + ref[1])
def get_allitems_text(self):
items = []
@@ -342,14 +342,14 @@ class GeometryElementsSelection(QtGui.QWidget):
currentItemName = str(self.list_References.currentItem().text())
for ref in self.references:
if self.get_item_text(ref) == currentItemName:
# print('found: shape: ' + ref[0].Name + ' element: ' + ref[1])
# print("found: shape: " + ref[0].Name + " element: " + ref[1])
if not ref[0].ViewObject.Visibility:
self.obj_notvisible.append(ref[0])
ref[0].ViewObject.Visibility = True
FreeCADGui.Selection.clearSelection()
ref_sh_type = ref[0].Shape.ShapeType
if ref[1].startswith('Solid') \
and (ref_sh_type == 'Compound' or ref_sh_type == 'CompSolid'):
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
@@ -363,7 +363,7 @@ class GeometryElementsSelection(QtGui.QWidget):
# find these faces in ref[0]
for i, fref in enumerate(ref[0].Shape.Faces):
if fs.isSame(fref):
fref_elstring = 'Face' + str(i + 1)
fref_elstring = "Face" + str(i + 1)
if fref_elstring not in faces:
faces.append(fref_elstring)
for f in faces:
@@ -373,8 +373,8 @@ class GeometryElementsSelection(QtGui.QWidget):
FreeCADGui.Selection.addSelection(ref[0], ref[1])
def setback_listobj_visibility(self):
'''set back Visibility of the list objects
'''
"""set back Visibility of the list objects
"""
FreeCADGui.Selection.clearSelection()
for obj in self.obj_notvisible:
obj.ViewObject.Visibility = False
@@ -418,15 +418,15 @@ class GeometryElementsSelection(QtGui.QWidget):
def choose_selection_mode_standard(self, state):
self.selection_mode_solid = not state
if self.sel_server and not self.selection_mode_solid:
FreeCAD.Console.PrintMessage(self.selection_mode_std_print_message + '\n')
FreeCAD.Console.PrintMessage(self.selection_mode_std_print_message + "\n")
def choose_selection_mode_solid(self, state):
self.selection_mode_solid = state
if self.sel_server and self.selection_mode_solid:
FreeCAD.Console.PrintMessage(self.selection_mode_solid_print_message + '\n')
FreeCAD.Console.PrintMessage(self.selection_mode_solid_print_message + "\n")
def add_references(self):
'''Called if Button add_reference is triggered'''
"""Called if Button add_reference is triggered"""
# in constraints EditTaskPanel the selection is active as soon as the taskpanel is open
# here the addReference button EditTaskPanel has to be triggered to start selection mode
self.setback_listobj_visibility()
@@ -443,7 +443,7 @@ class GeometryElementsSelection(QtGui.QWidget):
self.sel_server = FemSelectionObserver(self.selectionParser, print_message)
def selectionParser(self, selection):
print('selection: {} {} {}'.format(
print("selection: {} {} {}".format(
selection[0].Shape.ShapeType,
selection[0].Name,
selection[1]
@@ -451,11 +451,11 @@ class GeometryElementsSelection(QtGui.QWidget):
if hasattr(selection[0], "Shape") and selection[1]:
elt = selection[0].Shape.getElement(selection[1])
ele_ShapeType = elt.ShapeType
if self.selection_mode_solid and 'Solid' in self.sel_elem_types:
if self.selection_mode_solid and "Solid" in self.sel_elem_types:
# in solid selection mode use edges and faces for selection of a solid
# adapt selection variable to hold the Solid
solid_to_add = None
if ele_ShapeType == 'Edge':
if ele_ShapeType == "Edge":
found_edge = False
for i, s in enumerate(selection[0].Shape.Solids):
for e in s.Edges:
@@ -464,11 +464,11 @@ class GeometryElementsSelection(QtGui.QWidget):
solid_to_add = str(i + 1)
else:
FreeCAD.Console.PrintMessage(
'Edge belongs to more than one solid\n'
"Edge belongs to more than one solid\n"
)
solid_to_add = None
found_edge = True
elif ele_ShapeType == 'Face':
elif ele_ShapeType == "Face":
found_face = False
for i, s in enumerate(selection[0].Shape.Solids):
for e in s.Faces:
@@ -477,21 +477,21 @@ class GeometryElementsSelection(QtGui.QWidget):
solid_to_add = str(i + 1)
else:
FreeCAD.Console.PrintMessage(
'Face belongs to more than one solid\n'
"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'
selection = (selection[0], "Solid" + solid_to_add)
ele_ShapeType = "Solid"
FreeCAD.Console.PrintMessage(
'selection variable adapted to hold the Solid: {} {} {}\n'
"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') \
if (self.selection_mode_solid and ele_ShapeType == "Solid") \
or self.selection_mode_solid is False:
if selection not in self.references:
# only equal shape types are allowed to add
@@ -513,7 +513,7 @@ class GeometryElementsSelection(QtGui.QWidget):
# selected shape will not added to the list
FreeCADGui.Selection.clearSelection()
message = (
'{} is in reference list already!\n'
"{} is in reference list already!\n"
.format(self.get_item_text(selection))
)
FreeCAD.Console.PrintMessage(message)
@@ -521,27 +521,27 @@ class GeometryElementsSelection(QtGui.QWidget):
else:
# selected shape will not added to the list
FreeCADGui.Selection.clearSelection()
message = ele_ShapeType + ' is not allowed to add to the list!\n'
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=''):
def has_equal_references_shape_types(self, ref_shty=""):
for ref in self.references:
# 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])
"Problem in retrieving element: {} \n".format(ref[1])
)
continue
FreeCAD.Console.PrintLog(
' ReferenceShape : {}, {}, {} --> {}'
" 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:
message = 'Multiple shape types are not allowed in the reference list.\n'
message = "Multiple shape types are not allowed in the reference list.\n"
FreeCAD.Console.PrintMessage(message)
QtGui.QMessageBox.critical(None, "Multiple ShapeTypes not allowed", message)
return False
@@ -549,8 +549,8 @@ class GeometryElementsSelection(QtGui.QWidget):
class FemSelectionObserver:
'''selection observer especially for the needs of geometry reference selection of FEM'''
def __init__(self, parseSelectionFunction, print_message=''):
"""selection observer especially for the needs of geometry reference selection of FEM"""
def __init__(self, parseSelectionFunction, print_message=""):
self.parseSelectionFunction = parseSelectionFunction
FreeCADGui.Selection.addObserver(self)
FreeCAD.Console.PrintMessage(print_message + "!\n")

View File

@@ -73,7 +73,7 @@ class ViewProxy(object):
guidoc.setEdit(vobj.Object.Name)
else:
from PySide.QtGui import QMessageBox
message = 'Active Task Dialog found! Please close this one before opening a new one!'
message = "Active Task Dialog found! Please close this one before opening a new one!"
QMessageBox.critical(None, "Error in tree view", message)
FreeCAD.Console.PrintError(message + '\n')
FreeCAD.Console.PrintError(message + "\n")
return True

View File

@@ -131,9 +131,9 @@ class _TaskPanel(object):
quantity = Units.Quantity(self._paramWidget.potentialTxt.text())
except ValueError:
FreeCAD.Console.PrintMessage(
'Wrong input. OK has been triggered without a green hook '
'in the input field. Not recognised input: "{}" '
'Potential has not been set.\n'
"Wrong input. OK has been triggered without a green hook "
"in the input field. Not recognised input: '{}' "
"Potential has not been set.\n"
.format(self._paramWidget.potentialTxt.text())
)
if quantity is not None:

View File

@@ -66,9 +66,9 @@ class _ViewProviderFemConstraintSelfWeight:
guidoc.setEdit(vobj.Object.Name)
else:
from PySide.QtGui import QMessageBox
message = 'Active Task Dialog found! Please close this one before opening a new one!'
message = "Active Task Dialog found! Please close this one before opening a new one!"
QMessageBox.critical(None, "Error in tree view", message)
FreeCAD.Console.PrintError(message + '\n')
FreeCAD.Console.PrintError(message + "\n")
return True
def __getstate__(self):

View File

@@ -94,9 +94,9 @@ class _ViewProviderFemElementFluid1D:
guidoc.setEdit(vobj.Object.Name)
else:
from PySide.QtGui import QMessageBox
message = 'Active Task Dialog found! Please close this one before opening a new one!'
message = "Active Task Dialog found! Please close this one before opening a new one!"
QMessageBox.critical(None, "Error in tree view", message)
FreeCAD.Console.PrintError(message + '\n')
FreeCAD.Console.PrintError(message + "\n")
return True
def __getstate__(self):
@@ -107,7 +107,7 @@ class _ViewProviderFemElementFluid1D:
class _TaskPanelFemElementFluid1D:
'''The TaskPanel for editing References property of FemElementFluid1D objects'''
"""The TaskPanel for editing References property of FemElementFluid1D objects"""
def __init__(self, obj):
@@ -295,7 +295,7 @@ class _TaskPanelFemElementFluid1D:
# geometry selection widget
self.selectionWidget = FemSelectionWidgets.GeometryElementsSelection(
obj.References, ['Edge']
obj.References, ["Edge"]
)
# form made from param and selection widget
@@ -390,7 +390,7 @@ class _TaskPanelFemElementFluid1D:
self.obj.PumpHeadLoss = self.PumpHeadLoss
def updateParameterWidget(self):
'fills the widgets'
"fills the widgets"
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)

View File

@@ -91,9 +91,9 @@ class _ViewProviderFemElementGeometry1D:
guidoc.setEdit(vobj.Object.Name)
else:
from PySide.QtGui import QMessageBox
message = 'Active Task Dialog found! Please close this one before opening a new one!'
message = "Active Task Dialog found! Please close this one before opening a new one!"
QMessageBox.critical(None, "Error in tree view", message)
FreeCAD.Console.PrintError(message + '\n')
FreeCAD.Console.PrintError(message + "\n")
return True
def __getstate__(self):
@@ -104,7 +104,7 @@ class _ViewProviderFemElementGeometry1D:
class _TaskPanelFemElementGeometry1D:
'''The TaskPanel for editing References property of FemElementGeometry1D objects'''
"""The TaskPanel for editing References property of FemElementGeometry1D objects"""
def __init__(self, obj):
@@ -155,7 +155,7 @@ class _TaskPanelFemElementGeometry1D:
# geometry selection widget
self.selectionWidget = FemSelectionWidgets.GeometryElementsSelection(
obj.References,
['Edge']
["Edge"]
)
# form made from param and selection widget
@@ -196,7 +196,7 @@ class _TaskPanelFemElementGeometry1D:
self.obj.PipeThickness = self.PipeThickness
def updateParameterWidget(self):
'fills the widgets'
"fills the widgets"
index_crosssectiontype = self.parameterWidget.cb_crosssectiontype.findText(
self.SectionType
)

View File

@@ -90,9 +90,9 @@ class _ViewProviderFemElementGeometry2D:
guidoc.setEdit(vobj.Object.Name)
else:
from PySide.QtGui import QMessageBox
message = 'Active Task Dialog found! Please close this one before opening a new one!'
message = "Active Task Dialog found! Please close this one before opening a new one!"
QMessageBox.critical(None, "Error in tree view", message)
FreeCAD.Console.PrintError(message + '\n')
FreeCAD.Console.PrintError(message + "\n")
return True
def __getstate__(self):
@@ -103,7 +103,7 @@ class _ViewProviderFemElementGeometry2D:
class _TaskPanelFemElementGeometry2D:
'''The TaskPanel for editing References property of FemElementGeometry2D objects'''
"""The TaskPanel for editing References property of FemElementGeometry2D objects"""
def __init__(self, obj):
@@ -123,7 +123,7 @@ class _TaskPanelFemElementGeometry2D:
# geometry selection widget
self.selectionWidget = FemSelectionWidgets.GeometryElementsSelection(
obj.References,
['Face']
["Face"]
)
# form made from param and selection widget

View File

@@ -66,7 +66,7 @@ class _ViewProviderFemElementRotation1D:
def onChanged(self, vobj, prop):
return
'''
"""
# do not activate the task panel, since rotation with reference shapes is not yet supported
def setEdit(self, vobj, mode=0):
# hide all meshes
@@ -82,7 +82,7 @@ class _ViewProviderFemElementRotation1D:
def unsetEdit(self, vobj, mode=0):
FreeCADGui.Control.closeDialog()
return True
'''
"""
def setEdit(self, vobj, mode=0):
# avoid edit mode by return False
@@ -97,9 +97,9 @@ class _ViewProviderFemElementRotation1D:
guidoc.setEdit(vobj.Object.Name)
else:
from PySide.QtGui import QMessageBox
message = 'Active Task Dialog found! Please close this one before opening a new one!'
message = "Active Task Dialog found! Please close this one before opening a new one!"
QMessageBox.critical(None, "Error in tree view", message)
FreeCAD.Console.PrintError(message + '\n')
FreeCAD.Console.PrintError(message + "\n")
return True
def __getstate__(self):
@@ -110,7 +110,7 @@ class _ViewProviderFemElementRotation1D:
class _TaskPanelFemElementRotation1D:
'''The TaskPanel for editing References property of FemElementRotation1D objects'''
"""The TaskPanel for editing References property of FemElementRotation1D objects"""
def __init__(self, obj):
self.obj = obj
@@ -130,7 +130,7 @@ class _TaskPanelFemElementRotation1D:
# geometry selection widget
self.selectionWidget = FemSelectionWidgets.GeometryElementsSelection(
obj.References,
['Edge']
["Edge"]
)
# form made from param and selection widget

View File

@@ -89,9 +89,9 @@ class _ViewProviderFemMaterial:
guidoc.setEdit(vobj.Object.Name)
else:
from PySide.QtGui import QMessageBox
message = 'Active Task Dialog found! Please close this one before opening a new one!'
message = "Active Task Dialog found! Please close this one before opening a new one!"
QMessageBox.critical(None, "Error in tree view", message)
FreeCAD.Console.PrintError(message + '\n')
FreeCAD.Console.PrintError(message + "\n")
return True
def __getstate__(self):
@@ -102,14 +102,14 @@ class _ViewProviderFemMaterial:
class _TaskPanelFemMaterial:
'''The editmode TaskPanel for FemMaterial objects'''
"""The editmode TaskPanel for FemMaterial objects"""
def __init__(self, obj):
FreeCAD.Console.PrintMessage('\n') # empty line on start task panel
FreeCAD.Console.PrintMessage("\n") # empty line on start task panel
self.obj = obj
self.material = self.obj.Material # FreeCAD material dictionary of current material
self.card_path = ''
self.card_path = ""
self.materials = {} # { card_path : FreeCAD material dict, ... }
self.cards = {} # { card_path : card_names, ... }
self.icons = {} # { card_path : icon_path, ... }
@@ -192,7 +192,7 @@ class _TaskPanelFemMaterial:
# hide some groupBox according to material category
self.parameterWidget.label_category.setText(self.obj.Category)
if self.obj.Category == 'Fluid':
if self.obj.Category == "Fluid":
self.parameterWidget.groupBox_mechanical.setVisible(0)
self.parameterWidget.label_expansion_coefficient.setVisible(0)
self.parameterWidget.input_fd_expansion_coefficient.setVisible(0)
@@ -209,7 +209,7 @@ class _TaskPanelFemMaterial:
# search for exact this mat_card in all known cards, choose the current material
self.card_path = self.get_material_card(self.material)
FreeCAD.Console.PrintLog('card_path: {}'.format(self.card_path))
FreeCAD.Console.PrintLog("card_path: {}".format(self.card_path))
if not self.card_path:
# we have not found our material in self.materials dict :-(
# we're going to add a user-defined temporary material: a document material
@@ -217,7 +217,7 @@ class _TaskPanelFemMaterial:
"Previously used material card can not be found in material directories. "
"Add document material.\n"
)
self.card_path = '_document_material'
self.card_path = "_document_material"
self.materials[self.card_path] = self.material
self.parameterWidget.cb_materials.addItem(
QtGui.QIcon(":/icons/help-browser.svg"),
@@ -242,7 +242,7 @@ class _TaskPanelFemMaterial:
# geometry selection widget
self.selectionWidget = FemSelectionWidgets.GeometryElementsSelection(
obj.References,
['Solid', 'Face', 'Edge'],
["Solid", "Face", "Edge"],
False
) # start with Solid in list!
@@ -263,8 +263,8 @@ class _TaskPanelFemMaterial:
self.obj.References = self.selectionWidget.references
else:
error_message = (
'Due to some wrong material quantity units in the changed '
'material data, the task panel changes where not accepted.\n'
"Due to some wrong material quantity units in the changed "
"material data, the task panel changes where not accepted.\n"
)
FreeCAD.Console.PrintError(error_message)
QtGui.QMessageBox.critical(None, "Material data not changed", error_message)
@@ -284,35 +284,35 @@ class _TaskPanelFemMaterial:
doc.resetEdit()
def do_not_set_thermal_zeros(self):
''' thermal material parameter are set to 0.0 if not available
""" thermal material parameter are set to 0.0 if not available
this leads to wrong material values and to not finding the card
on reopen the task pane, thus do not write thermal parameter,
if they are 0.0
'''
if Units.Quantity(self.material['ThermalConductivity']) == 0.0:
self.material.pop('ThermalConductivity', None)
"""
if Units.Quantity(self.material["ThermalConductivity"]) == 0.0:
self.material.pop("ThermalConductivity", None)
FreeCAD.Console.PrintMessage(
'Zero ThermalConductivity value. '
'This parameter is not saved in the material data.\n'
"Zero ThermalConductivity value. "
"This parameter is not saved in the material data.\n"
)
if Units.Quantity(self.material['ThermalExpansionCoefficient']) == 0.0:
self.material.pop('ThermalExpansionCoefficient', None)
if Units.Quantity(self.material["ThermalExpansionCoefficient"]) == 0.0:
self.material.pop("ThermalExpansionCoefficient", None)
FreeCAD.Console.PrintMessage(
'Zero ThermalExpansionCoefficient value. '
'This parameter is not saved in the material data.\n'
"Zero ThermalExpansionCoefficient value. "
"This parameter is not saved in the material data.\n"
)
if Units.Quantity(self.material['SpecificHeat']) == 0.0:
self.material.pop('SpecificHeat', None)
if Units.Quantity(self.material["SpecificHeat"]) == 0.0:
self.material.pop("SpecificHeat", None)
FreeCAD.Console.PrintMessage(
'Zero SpecificHeat value. '
'This parameter is not saved in the material data.\n'
"Zero SpecificHeat value. "
"This parameter is not saved in the material data.\n"
)
# choose material ****************************************************************************
def get_material_card(self, material):
for a_mat in self.materials:
unmatched_items = set(self.materials[a_mat].items()) ^ set(material.items())
# print(a_mat + ' --> unmatched_items = ' + str(len(unmatched_items)))
# print(a_mat + " --> unmatched_items = " + str(len(unmatched_items)))
# if len(unmatched_items) < 4:
# print(unmatched_items)
if len(unmatched_items) == 0:
@@ -324,8 +324,8 @@ class _TaskPanelFemMaterial:
return
self.card_path = self.parameterWidget.cb_materials.itemData(index) # returns whole path
FreeCAD.Console.PrintMessage(
'choose_material in FEM material task panel:\n'
' {}\n'.format(self.card_path)
"choose_material in FEM material task panel:\n"
" {}\n".format(self.card_path)
)
self.material = self.materials[self.card_path]
self.check_material_keys()
@@ -333,23 +333,23 @@ class _TaskPanelFemMaterial:
self.parameterWidget.cb_materials.setCurrentIndex(index) # set after input fields
gen_mat_desc = ""
gen_mat_name = ""
if 'Description' in self.material:
gen_mat_desc = self.material['Description']
if 'Name' in self.material:
gen_mat_name = self.material['Name']
if "Description" in self.material:
gen_mat_desc = self.material["Description"]
if "Name" in self.material:
gen_mat_name = self.material["Name"]
self.parameterWidget.l_mat_description.setText(gen_mat_desc)
self.parameterWidget.l_mat_name.setText(gen_mat_name)
# print('choose_material: done')
# print("choose_material: done")
def set_transient_material(self):
self.card_path = '_transient_material'
self.card_path = "_transient_material"
self.materials[self.card_path] = self.material # = the current input fields data
index = self.parameterWidget.cb_materials.findData(self.card_path)
self.choose_material(index)
def add_transient_material(self):
self.has_transient_mat = True
self.card_path = '_transient_material'
self.card_path = "_transient_material"
self.parameterWidget.cb_materials.addItem(
QtGui.QIcon(":/icons/help-browser.svg"),
self.card_path,
@@ -363,7 +363,7 @@ class _TaskPanelFemMaterial:
import MaterialEditor
if self.card_path not in self.cards:
FreeCAD.Console.PrintLog(
'Card path not in cards, material dict will be used to open Material Editor.\n'
"Card path not in cards, material dict will be used to open Material Editor.\n"
)
new_material_params = MaterialEditor.editMaterial(material=self.material)
else:
@@ -371,14 +371,14 @@ class _TaskPanelFemMaterial:
# material editor returns the mat_dict only, not a card_path
# if the material editor was canceled a empty dict will be returned
# do not change the self.material
# check if dict is not empty (do not use 'is True')
# check if dict is not empty (do not use "is True")
if new_material_params:
# check material quantity units
from materialtools.cardutils import check_mat_units as checkunits
if checkunits(new_material_params) is True:
self.material = new_material_params
self.card_path = self.get_material_card(self.material)
# print('card_path: ' + self.card_path)
# print("card_path: " + self.card_path)
self.check_material_keys()
self.set_mat_params_in_input_fields(self.material)
if not self.card_path:
@@ -405,14 +405,14 @@ class _TaskPanelFemMaterial:
self.choose_material(index)
else:
error_message = (
'Due to some wrong material quantity units in data passed '
'by the material editor, the material data was not changed.\n'
"Due to some wrong material quantity units in data passed "
"by the material editor, the material data was not changed.\n"
)
FreeCAD.Console.PrintError(error_message)
QtGui.QMessageBox.critical(None, "Material data not changed", error_message)
else:
FreeCAD.Console.PrintLog(
'No changes where made by the material editor.\n'
"No changes where made by the material editor.\n"
)
def toggleInputFieldsReadOnly(self):
@@ -439,145 +439,145 @@ class _TaskPanelFemMaterial:
def check_material_keys(self):
# FreeCAD units definition is at file end of src/Base/Unit.cpp
if not self.material:
FreeCAD.Console.PrintMessage('For some reason all material data is empty!\n')
self.material['Name'] = 'Empty'
if 'Density' in self.material:
if 'Density' not in str(Units.Unit(self.material['Density'])):
FreeCAD.Console.PrintMessage("For some reason all material data is empty!\n")
self.material["Name"] = "Empty"
if "Density" in self.material:
if "Density" not in str(Units.Unit(self.material["Density"])):
FreeCAD.Console.PrintMessage(
'Density in material data seems to have no unit '
'or a wrong unit (reset the value): {}\n'
.format(self.material['Name'])
"Density in material data seems to have no unit "
"or a wrong unit (reset the value): {}\n"
.format(self.material["Name"])
)
self.material['Density'] = '0 kg/m^3'
self.material["Density"] = "0 kg/m^3"
else:
FreeCAD.Console.PrintMessage(
'Density not found in material data of: {}\n'
.format(self.material['Name'])
"Density not found in material data of: {}\n"
.format(self.material["Name"])
)
self.material['Density'] = '0 kg/m^3'
if self.obj.Category == 'Solid':
self.material["Density"] = "0 kg/m^3"
if self.obj.Category == "Solid":
# mechanical properties
if 'YoungsModulus' in self.material:
if "YoungsModulus" in self.material:
# unit type of YoungsModulus is Pressure
if 'Pressure' not in str(Units.Unit(self.material['YoungsModulus'])):
if "Pressure" not in str(Units.Unit(self.material["YoungsModulus"])):
FreeCAD.Console.PrintMessage(
'YoungsModulus in material data seems to have no unit '
'or a wrong unit (reset the value): {}\n'
.format(self.material['Name'])
"YoungsModulus in material data seems to have no unit "
"or a wrong unit (reset the value): {}\n"
.format(self.material["Name"])
)
self.material['YoungsModulus'] = '0 MPa'
self.material["YoungsModulus"] = "0 MPa"
else:
FreeCAD.Console.PrintMessage(
'YoungsModulus not found in material data of: {}\n'
.format(self.material['Name'])
"YoungsModulus not found in material data of: {}\n"
.format(self.material["Name"])
)
self.material['YoungsModulus'] = '0 MPa'
if 'PoissonRatio' in self.material:
self.material["YoungsModulus"] = "0 MPa"
if "PoissonRatio" in self.material:
# PoissonRatio does not have a unit, but it is checked it there is no value at all
try:
float(self.material['PoissonRatio'])
float(self.material["PoissonRatio"])
except ValueError:
FreeCAD.Console.PrintMessage(
'PoissonRatio has wrong or no data (reset the value): {}\n'
.format(self.material['PoissonRatio'])
"PoissonRatio has wrong or no data (reset the value): {}\n"
.format(self.material["PoissonRatio"])
)
self.material['PoissonRatio'] = '0'
self.material["PoissonRatio"] = "0"
else:
FreeCAD.Console.PrintMessage(
'PoissonRatio not found in material data of: {}\n'
.format(self.material['Name'])
"PoissonRatio not found in material data of: {}\n"
.format(self.material["Name"])
)
self.material['PoissonRatio'] = '0'
if self.obj.Category == 'Fluid':
self.material["PoissonRatio"] = "0"
if self.obj.Category == "Fluid":
# Fluidic properties
if 'KinematicViscosity' in self.material:
ki_vis = self.material['KinematicViscosity']
if 'KinematicViscosity' not in str(Units.Unit(ki_vis)):
if "KinematicViscosity" in self.material:
ki_vis = self.material["KinematicViscosity"]
if "KinematicViscosity" not in str(Units.Unit(ki_vis)):
FreeCAD.Console.PrintMessage(
'KinematicViscosity in material data seems to have no unit '
'or a wrong unit (reset the value): {}\n'
.format(self.material['Name'])
"KinematicViscosity in material data seems to have no unit "
"or a wrong unit (reset the value): {}\n"
.format(self.material["Name"])
)
self.material['KinematicViscosity'] = '0 m^2/s'
self.material["KinematicViscosity"] = "0 m^2/s"
else:
FreeCAD.Console.PrintMessage(
'KinematicViscosity not found in material data of: {}\n'
.format(self.material['Name'])
"KinematicViscosity not found in material data of: {}\n"
.format(self.material["Name"])
)
self.material['KinematicViscosity'] = '0 m^2/s'
if 'VolumetricThermalExpansionCoefficient' in self.material:
self.material["KinematicViscosity"] = "0 m^2/s"
if "VolumetricThermalExpansionCoefficient" in self.material:
# unit type VolumetricThermalExpansionCoefficient is ThermalExpansionCoefficient
vol_ther_ex_co = self.material['VolumetricThermalExpansionCoefficient']
if 'VolumetricThermalExpansionCoefficient' not in str(Units.Unit(vol_ther_ex_co)):
vol_ther_ex_co = self.material["VolumetricThermalExpansionCoefficient"]
if "VolumetricThermalExpansionCoefficient" not in str(Units.Unit(vol_ther_ex_co)):
FreeCAD.Console.PrintMessage(
'VolumetricThermalExpansionCoefficient in material data '
'seems to have no unit or a wrong unit (reset the value): {}\n'
.format(self.material['Name'])
"VolumetricThermalExpansionCoefficient in material data "
"seems to have no unit or a wrong unit (reset the value): {}\n"
.format(self.material["Name"])
)
self.material['VolumetricThermalExpansionCoefficient'] = '0 m/m/K'
self.material["VolumetricThermalExpansionCoefficient"] = "0 m/m/K"
else:
FreeCAD.Console.PrintMessage(
'VolumetricThermalExpansionCoefficient not found in material data of: {}\n'
.format(self.material['Name'])
"VolumetricThermalExpansionCoefficient not found in material data of: {}\n"
.format(self.material["Name"])
)
self.material['VolumetricThermalExpansionCoefficient'] = '0 m/m/K'
self.material["VolumetricThermalExpansionCoefficient"] = "0 m/m/K"
# Thermal properties
if 'ThermalConductivity' in self.material:
if 'ThermalConductivity' not in str(Units.Unit(self.material['ThermalConductivity'])):
if "ThermalConductivity" in self.material:
if "ThermalConductivity" not in str(Units.Unit(self.material["ThermalConductivity"])):
FreeCAD.Console.PrintMessage(
'ThermalConductivity in material data seems to have no unit '
'or a wrong unit (reset the value): {}\n'
.format(self.material['Name'])
"ThermalConductivity in material data seems to have no unit "
"or a wrong unit (reset the value): {}\n"
.format(self.material["Name"])
)
self.material['ThermalConductivity'] = '0 W/m/K'
self.material["ThermalConductivity"] = "0 W/m/K"
else:
FreeCAD.Console.PrintMessage(
'ThermalConductivity not found in material data of: {}\n'
.format(self.material['Name'])
"ThermalConductivity not found in material data of: {}\n"
.format(self.material["Name"])
)
self.material['ThermalConductivity'] = '0 W/m/K'
if 'ThermalExpansionCoefficient' in self.material:
the_ex_co = self.material['ThermalExpansionCoefficient']
if 'ThermalExpansionCoefficient' not in str(Units.Unit(the_ex_co)):
self.material["ThermalConductivity"] = "0 W/m/K"
if "ThermalExpansionCoefficient" in self.material:
the_ex_co = self.material["ThermalExpansionCoefficient"]
if "ThermalExpansionCoefficient" not in str(Units.Unit(the_ex_co)):
FreeCAD.Console.PrintMessage(
'ThermalExpansionCoefficient in material data seems to have no unit '
'or a wrong unit (reset the value): {}\n'
.format(self.material['Name'])
"ThermalExpansionCoefficient in material data seems to have no unit "
"or a wrong unit (reset the value): {}\n"
.format(self.material["Name"])
)
self.material['ThermalExpansionCoefficient'] = '0 um/m/K'
self.material["ThermalExpansionCoefficient"] = "0 um/m/K"
else:
FreeCAD.Console.PrintMessage(
'ThermalExpansionCoefficient not found in material data of: {}\n'
.format(self.material['Name'])
"ThermalExpansionCoefficient not found in material data of: {}\n"
.format(self.material["Name"])
)
self.material['ThermalExpansionCoefficient'] = '0 um/m/K'
if 'SpecificHeat' in self.material:
if 'SpecificHeat' not in str(Units.Unit(self.material['SpecificHeat'])):
self.material["ThermalExpansionCoefficient"] = "0 um/m/K"
if "SpecificHeat" in self.material:
if "SpecificHeat" not in str(Units.Unit(self.material["SpecificHeat"])):
FreeCAD.Console.PrintMessage(
'SpecificHeat in material data seems to have no unit '
'or a wrong unit (reset the value): {}\n'
.format(self.material['Name'])
"SpecificHeat in material data seems to have no unit "
"or a wrong unit (reset the value): {}\n"
.format(self.material["Name"])
)
self.material['SpecificHeat'] = '0 J/kg/K'
self.material["SpecificHeat"] = "0 J/kg/K"
else:
FreeCAD.Console.PrintMessage(
'SpecificHeat not found in material data of: {}\n'
.format(self.material['Name'])
"SpecificHeat not found in material data of: {}\n"
.format(self.material["Name"])
)
self.material['SpecificHeat'] = '0 J/kg/K'
FreeCAD.Console.PrintMessage('\n')
self.material["SpecificHeat"] = "0 J/kg/K"
FreeCAD.Console.PrintMessage("\n")
# mechanical input fields
def ym_changed(self):
# FreeCADs standard unit for stress is kPa
value = self.parameterWidget.input_fd_young_modulus.property("rawValue")
old_ym = Units.Quantity(self.material['YoungsModulus']).getValueAs("kPa")
old_ym = Units.Quantity(self.material["YoungsModulus"]).getValueAs("kPa")
variation = 0.001
if value:
if not (1 - variation < float(old_ym) / value < 1 + variation):
# YoungsModulus has changed
material = self.material
material['YoungsModulus'] = unicode(value) + " kPa"
material["YoungsModulus"] = unicode(value) + " kPa"
self.material = material
if self.has_transient_mat is False:
self.add_transient_material()
@@ -587,7 +587,7 @@ class _TaskPanelFemMaterial:
def density_changed(self):
# FreeCADs standard unit for density is kg/mm^3
value = self.parameterWidget.input_fd_density.property("rawValue")
old_density = Units.Quantity(self.material['Density']).getValueAs("kg/m^3")
old_density = Units.Quantity(self.material["Density"]).getValueAs("kg/m^3")
variation = 0.001
if value:
if not (1 - variation < float(old_density) / value < 1 + variation):
@@ -595,7 +595,7 @@ class _TaskPanelFemMaterial:
material = self.material
value_in_kg_per_m3 = value * 1e9
# SvdW:Keep density in SI units for easier readability
material['Density'] = unicode(value_in_kg_per_m3) + " kg/m^3"
material["Density"] = unicode(value_in_kg_per_m3) + " kg/m^3"
self.material = material
if self.has_transient_mat is False:
self.add_transient_material()
@@ -604,13 +604,13 @@ class _TaskPanelFemMaterial:
def pr_changed(self):
value = self.parameterWidget.spinBox_poisson_ratio.value()
old_pr = Units.Quantity(self.material['PoissonRatio'])
old_pr = Units.Quantity(self.material["PoissonRatio"])
variation = 0.001
if value:
if not (1 - variation < float(old_pr) / value < 1 + variation):
# PoissonRatio has changed
material = self.material
material['PoissonRatio'] = unicode(value)
material["PoissonRatio"] = unicode(value)
self.material = material
if self.has_transient_mat is False:
self.add_transient_material()
@@ -619,7 +619,7 @@ class _TaskPanelFemMaterial:
elif value == 0:
# PoissonRatio was set to 0.0 what is possible
material = self.material
material['PoissonRatio'] = unicode(value)
material["PoissonRatio"] = unicode(value)
self.material = material
if self.has_transient_mat is False:
self.add_transient_material()
@@ -629,14 +629,14 @@ class _TaskPanelFemMaterial:
# thermal input fields
def tc_changed(self):
value = self.parameterWidget.input_fd_thermal_conductivity.property("rawValue")
old_tc = Units.Quantity(self.material['ThermalConductivity']).getValueAs("W/m/K")
old_tc = Units.Quantity(self.material["ThermalConductivity"]).getValueAs("W/m/K")
variation = 0.001
if value:
if not (1 - variation < float(old_tc) / value < 1 + variation):
# ThermalConductivity has changed
material = self.material
value_in_W_per_mK = value * 1e-3 # To compensate for use of SI units
material['ThermalConductivity'] = unicode(value_in_W_per_mK) + " W/m/K"
material["ThermalConductivity"] = unicode(value_in_W_per_mK) + " W/m/K"
self.material = material
if self.has_transient_mat is False:
self.add_transient_material()
@@ -646,7 +646,7 @@ class _TaskPanelFemMaterial:
def tec_changed(self):
value = self.parameterWidget.input_fd_expansion_coefficient.property("rawValue")
old_tec = Units.Quantity(
self.material['ThermalExpansionCoefficient']
self.material["ThermalExpansionCoefficient"]
).getValueAs("um/m/K")
variation = 0.001
if value:
@@ -654,7 +654,7 @@ class _TaskPanelFemMaterial:
# ThermalExpansionCoefficient has changed
material = self.material
value_in_um_per_mK = value * 1e6 # To compensate for use of SI units
material['ThermalExpansionCoefficient'] = unicode(value_in_um_per_mK) + " um/m/K"
material["ThermalExpansionCoefficient"] = unicode(value_in_um_per_mK) + " um/m/K"
self.material = material
if self.has_transient_mat is False:
self.add_transient_material()
@@ -663,14 +663,14 @@ class _TaskPanelFemMaterial:
def sh_changed(self):
value = self.parameterWidget.input_fd_specific_heat.property("rawValue")
old_sh = Units.Quantity(self.material['SpecificHeat']).getValueAs("J/kg/K")
old_sh = Units.Quantity(self.material["SpecificHeat"]).getValueAs("J/kg/K")
variation = 0.001
if value:
if not (1 - variation < float(old_sh) / value < 1 + variation):
# SpecificHeat has changed
material = self.material
value_in_J_per_kgK = value * 1e-6 # To compensate for use of SI units
material['SpecificHeat'] = unicode(value_in_J_per_kgK) + " J/kg/K"
material["SpecificHeat"] = unicode(value_in_J_per_kgK) + " J/kg/K"
self.material = material
if self.has_transient_mat is False:
self.add_transient_material()
@@ -681,7 +681,7 @@ class _TaskPanelFemMaterial:
def vtec_changed(self):
value = self.parameterWidget.input_fd_vol_expansion_coefficient.property("rawValue")
old_vtec = Units.Quantity(
self.material['VolumetricThermalExpansionCoefficient']
self.material["VolumetricThermalExpansionCoefficient"]
).getValueAs("m/m/K")
variation = 0.001
if value:
@@ -689,7 +689,7 @@ class _TaskPanelFemMaterial:
# VolumetricThermalExpansionCoefficient has changed
material = self.material
value_in_one_per_K = unicode(value) + " m/m/K"
material['VolumetricThermalExpansionCoefficient'] = value_in_one_per_K
material["VolumetricThermalExpansionCoefficient"] = value_in_one_per_K
self.material = material
if self.has_transient_mat is False:
self.add_transient_material()
@@ -698,14 +698,14 @@ class _TaskPanelFemMaterial:
def kinematic_viscosity_changed(self):
value = self.parameterWidget.input_fd_kinematic_viscosity.property("rawValue")
old_nu = Units.Quantity(self.material['KinematicViscosity']).getValueAs("m^2/s")
old_nu = Units.Quantity(self.material["KinematicViscosity"]).getValueAs("m^2/s")
variation = 0.000001
if value:
if not (1 - variation < float(old_nu) / value < 1 + variation):
# KinematicViscosity has changed
material = self.material
value_in_m2_per_second = value
material['KinematicViscosity'] = unicode(value_in_m2_per_second) + " m^2/s"
material["KinematicViscosity"] = unicode(value_in_m2_per_second) + " m^2/s"
self.material = material
if self.has_transient_mat is False:
self.add_transient_material()
@@ -713,32 +713,32 @@ class _TaskPanelFemMaterial:
self.set_transient_material()
def set_mat_params_in_input_fields(self, matmap):
if 'YoungsModulus' in matmap:
if "YoungsModulus" in matmap:
ym_new_unit = "MPa"
ym = FreeCAD.Units.Quantity(matmap['YoungsModulus'])
ym = FreeCAD.Units.Quantity(matmap["YoungsModulus"])
ym_with_new_unit = ym.getValueAs(ym_new_unit)
q = FreeCAD.Units.Quantity("{} {}".format(ym_with_new_unit, ym_new_unit))
self.parameterWidget.input_fd_young_modulus.setText(q.UserString)
if 'PoissonRatio' in matmap:
self.parameterWidget.spinBox_poisson_ratio.setValue(float(matmap['PoissonRatio']))
if "PoissonRatio" in matmap:
self.parameterWidget.spinBox_poisson_ratio.setValue(float(matmap["PoissonRatio"]))
# Fluidic properties
if 'KinematicViscosity' in matmap:
if "KinematicViscosity" in matmap:
nu_new_unit = "m^2/s"
nu = FreeCAD.Units.Quantity(matmap['KinematicViscosity'])
nu = FreeCAD.Units.Quantity(matmap["KinematicViscosity"])
nu_with_new_unit = nu.getValueAs(nu_new_unit)
q = FreeCAD.Units.Quantity("{} {}".format(nu_with_new_unit, nu_new_unit))
self.parameterWidget.input_fd_kinematic_viscosity.setText(q.UserString)
# For isotropic materials the volumetric thermal expansion coefficient
# is three times the linear coefficient:
if 'VolumetricThermalExpansionCoefficient' in matmap: # linear, only for solid
if "VolumetricThermalExpansionCoefficient" in matmap: # linear, only for solid
vtec_new_unit = "m/m/K"
vtec = FreeCAD.Units.Quantity(matmap['VolumetricThermalExpansionCoefficient'])
vtec = FreeCAD.Units.Quantity(matmap["VolumetricThermalExpansionCoefficient"])
vtec_with_new_unit = vtec.getValueAs(vtec_new_unit)
q = FreeCAD.Units.Quantity("{} {}".format(vtec_with_new_unit, vtec_new_unit))
self.parameterWidget.input_fd_vol_expansion_coefficient.setText(q.UserString)
if 'Density' in matmap:
if "Density" in matmap:
density_new_unit = "kg/m^3"
density = FreeCAD.Units.Quantity(matmap['Density'])
density = FreeCAD.Units.Quantity(matmap["Density"])
density_with_new_unit = density.getValueAs(density_new_unit)
# self.parameterWidget.input_fd_density.setText(
# "{} {}".format(density_with_new_unit, density_new_unit)
@@ -746,21 +746,21 @@ class _TaskPanelFemMaterial:
q = FreeCAD.Units.Quantity("{} {}".format(density_with_new_unit, density_new_unit))
self.parameterWidget.input_fd_density.setText(q.UserString)
# thermal properties
if 'ThermalConductivity' in matmap:
if "ThermalConductivity" in matmap:
tc_new_unit = "W/m/K"
tc = FreeCAD.Units.Quantity(matmap['ThermalConductivity'])
tc = FreeCAD.Units.Quantity(matmap["ThermalConductivity"])
tc_with_new_unit = tc.getValueAs(tc_new_unit)
q = FreeCAD.Units.Quantity("{} {}".format(tc_with_new_unit, tc_new_unit))
self.parameterWidget.input_fd_thermal_conductivity.setText(q.UserString)
if 'ThermalExpansionCoefficient' in matmap: # linear, only for solid
if "ThermalExpansionCoefficient" in matmap: # linear, only for solid
tec_new_unit = "um/m/K"
tec = FreeCAD.Units.Quantity(matmap['ThermalExpansionCoefficient'])
tec = FreeCAD.Units.Quantity(matmap["ThermalExpansionCoefficient"])
tec_with_new_unit = tec.getValueAs(tec_new_unit)
q = FreeCAD.Units.Quantity("{} {}".format(tec_with_new_unit, tec_new_unit))
self.parameterWidget.input_fd_expansion_coefficient.setText(q.UserString)
if 'SpecificHeat' in matmap:
if "SpecificHeat" in matmap:
sh_new_unit = "J/kg/K"
sh = FreeCAD.Units.Quantity(matmap['SpecificHeat'])
sh = FreeCAD.Units.Quantity(matmap["SpecificHeat"])
sh_with_new_unit = sh.getValueAs(sh_new_unit)
q = FreeCAD.Units.Quantity("{} {}".format(sh_with_new_unit, sh_new_unit))
self.parameterWidget.input_fd_specific_heat.setText(q.UserString)

View File

@@ -76,9 +76,9 @@ class _ViewProviderFemMaterialMechanicalNonlinear:
guidoc.setEdit(vobj.Object.Name)
else:
from PySide.QtGui import QMessageBox
message = 'Active Task Dialog found! Please close this one before opening a new one!'
message = "Active Task Dialog found! Please close this one before opening a new one!"
QMessageBox.critical(None, "Error in tree view", message)
FreeCAD.Console.PrintError(message + '\n')
FreeCAD.Console.PrintError(message + "\n")
return True
def __getstate__(self):

View File

@@ -38,7 +38,7 @@ from PySide import QtCore
from PySide import QtGui
import sys
False if False else FemGui.__name__ # flake8, dummy FemGui usage, returns 'FemGui'
False if False else FemGui.__name__ # flake8, dummy FemGui usage, returns "FemGui"
if sys.version_info.major >= 3:
unicode = str
@@ -96,11 +96,11 @@ class _ViewProviderFemMaterialReinforced:
else:
from PySide.QtGui import QMessageBox
message = (
'Active Task Dialog found! '
'Please close this one before opening a new one!'
"Active Task Dialog found! "
"Please close this one before opening a new one!"
)
QMessageBox.critical(None, "Error in tree view", message)
FreeCAD.Console.PrintError(message + '\n')
FreeCAD.Console.PrintError(message + "\n")
return True
def __getstate__(self):
@@ -111,22 +111,22 @@ class _ViewProviderFemMaterialReinforced:
class _TaskPanelFemMaterialReinforced:
'''The editmode TaskPanel for FemMaterialReinforced objects'''
"""The editmode TaskPanel for FemMaterialReinforced objects"""
if sys.version_info.major >= 3:
unicode = str
def __init__(self, obj):
FreeCAD.Console.PrintMessage('\n') # empty line on start task panel
FreeCAD.Console.PrintMessage("\n") # empty line on start task panel
self.obj = obj
# init matrix and reinforcement material
self.material_m = self.obj.Material
self.card_path_m = ''
self.card_path_m = ""
self.has_transient_mat_m = False
self.material_r = self.obj.Reinforcement
self.card_path_r = ''
self.card_path_r = ""
self.has_transient_mat_r = False
# mat_card is the FCMat file
# card_name is the file name of the mat_card
@@ -176,7 +176,7 @@ class _TaskPanelFemMaterialReinforced:
# search for exact the mat_card_m and mat_card_r in all known cards
# choose the current matrix material
self.card_path_m = self.get_material_card(self.material_m)
FreeCAD.Console.PrintLog('card_path: {}'.format(self.card_path_m))
FreeCAD.Console.PrintLog("card_path: {}".format(self.card_path_m))
if not self.card_path_m:
# we have not found our material in self.materials dict :-(
# we're going to add a user-defined temporary material: a document material
@@ -184,7 +184,7 @@ class _TaskPanelFemMaterialReinforced:
"Previously used material card cannot be found in material directories. "
"Add document material.\n"
)
self.card_path_m = '_Document_Matrix_Material'
self.card_path_m = "_Document_Matrix_Material"
self.materials[self.card_path_m] = self.material_m
self.parameterWidget.cb_materials_m.addItem(
QtGui.QIcon(":/icons/help-browser.svg"),
@@ -207,7 +207,7 @@ class _TaskPanelFemMaterialReinforced:
# choose the current reinforcement material
self.card_path_r = self.get_material_card(self.material_r)
FreeCAD.Console.PrintLog('card_path: {}'.format(self.card_path_r))
FreeCAD.Console.PrintLog("card_path: {}".format(self.card_path_r))
if not self.card_path_r:
# we have not found our material in self.materials dict :-(
# we're going to add a user-defined temporary material: a document material
@@ -215,7 +215,7 @@ class _TaskPanelFemMaterialReinforced:
"Previously used material card cannot be found in material directories. "
"Add document material.\n"
)
self.card_path_r = '_Document_Reinforcement_Material'
self.card_path_r = "_Document_Reinforcement_Material"
self.materials[self.card_path_r] = self.material_r
self.parameterWidget.cb_materials_r.addItem(
QtGui.QIcon(":/icons/help-browser.svg"),
@@ -247,8 +247,8 @@ class _TaskPanelFemMaterialReinforced:
self.obj.Reinforcement = self.material_r
else:
error_message = (
'Due to some wrong material quantity units in the changed '
'material data, the task panel changes where not accepted.\n'
"Due to some wrong material quantity units in the changed "
"material data, the task panel changes where not accepted.\n"
)
FreeCAD.Console.PrintError(error_message)
QtGui.QMessageBox.critical(None, "Material data not changed", error_message)
@@ -268,23 +268,23 @@ class _TaskPanelFemMaterialReinforced:
def output_obj_mat_param(self):
self.print_mat_dict(self.obj.Material)
self.print_mat_dict(self.obj.Reinforcement)
print('\n')
print("\n")
def print_mat_dict(self, mat_dict):
if 'Name' in mat_dict:
print('Material: {}'.format(mat_dict['Name']))
if "Name" in mat_dict:
print("Material: {}".format(mat_dict["Name"]))
else:
print('Matrix material: no Name')
print("Matrix material: no Name")
for key in mat_dict:
print(' {}: {}'.format(key, mat_dict[key]))
print(" {}: {}".format(key, mat_dict[key]))
# choose material card ***********************************************************************
def get_material_card(self, material):
for a_mat in self.materials:
unmatched_items = set(self.materials[a_mat].items()) ^ set(material.items())
# print(a_mat + ' --> unmatched_items = ' + str(len(unmatched_items)))
# print(a_mat + " --> unmatched_items = " + str(len(unmatched_items)))
if len(unmatched_items) < 4:
FreeCAD.Console.PrintLog('{}\n'.format(unmatched_items))
FreeCAD.Console.PrintLog("{}\n".format(unmatched_items))
if len(unmatched_items) == 0:
return a_mat
return ""
@@ -295,17 +295,17 @@ class _TaskPanelFemMaterialReinforced:
# get the whole card path
self.card_path_m = self.parameterWidget.cb_materials_m.itemData(index)
FreeCAD.Console.PrintMessage(
'choose_material in FEM material task panel:\n'
' {}\n'.format(self.card_path_m)
"choose_material in FEM material task panel:\n"
" {}\n".format(self.card_path_m)
)
self.material_m = self.materials[self.card_path_m]
self.parameterWidget.cb_materials_m.setCurrentIndex(index)
gen_mat_desc = ""
gen_mat_name = ""
if 'Description' in self.material_m:
gen_mat_desc = self.material_m['Description']
if 'Name' in self.material_m:
gen_mat_name = self.material_m['Name']
if "Description" in self.material_m:
gen_mat_desc = self.material_m["Description"]
if "Name" in self.material_m:
gen_mat_name = self.material_m["Name"]
self.parameterWidget.l_description_m.setText(gen_mat_desc)
self.parameterWidget.l_name_m.setText(gen_mat_name)
@@ -315,30 +315,30 @@ class _TaskPanelFemMaterialReinforced:
# get the whole card path
self.card_path_r = self.parameterWidget.cb_materials_r.itemData(index)
FreeCAD.Console.PrintMessage(
'choose_material in FEM material task panel:\n'
' {}\n'.format(self.card_path_r)
"choose_material in FEM material task panel:\n"
" {}\n".format(self.card_path_r)
)
self.material_r = self.materials[self.card_path_r]
self.parameterWidget.cb_materials_r.setCurrentIndex(index)
gen_mat_desc = ""
gen_mat_name = ""
if 'Description' in self.material_r:
gen_mat_desc = self.material_r['Description']
if 'Name' in self.material_r:
gen_mat_name = self.material_r['Name']
if "Description" in self.material_r:
gen_mat_desc = self.material_r["Description"]
if "Name" in self.material_r:
gen_mat_name = self.material_r["Name"]
self.parameterWidget.l_description_r.setText(gen_mat_desc)
self.parameterWidget.l_name_r.setText(gen_mat_name)
# transient material is needed if the user changed mat parameter by the mat editor
def set_transient_material_m(self):
self.card_path_m = '_Transient_Matrix_Material'
self.card_path_m = "_Transient_Matrix_Material"
self.materials[self.card_path_m] = self.material_m # = the current matrix mat dict
index = self.parameterWidget.cb_materials_m.findData(self.card_path_m)
self.choose_material_m(index)
def add_transient_material_m(self):
self.has_transient_mat_m = True
self.card_path_m = '_Transient_Matrix_Material'
self.card_path_m = "_Transient_Matrix_Material"
self.parameterWidget.cb_materials_m.addItem(
QtGui.QIcon(":/icons/help-browser.svg"),
self.card_path_m,
@@ -347,14 +347,14 @@ class _TaskPanelFemMaterialReinforced:
self.set_transient_material_m()
def set_transient_material_r(self):
self.card_path_r = '_Transient_Reinforcement_Material'
self.card_path_r = "_Transient_Reinforcement_Material"
self.materials[self.card_path_r] = self.material_r # = the current reinforced mat dict
index = self.parameterWidget.cb_materials_r.findData(self.card_path_r)
self.choose_material_r(index)
def add_transient_material_r(self):
self.has_transient_mat_r = True
self.card_path_r = '_Transient_Reinforcement_Material'
self.card_path_r = "_Transient_Reinforcement_Material"
self.parameterWidget.cb_materials_r.addItem(
QtGui.QIcon(":/icons/help-browser.svg"),
self.card_path_r,
@@ -371,7 +371,7 @@ class _TaskPanelFemMaterialReinforced:
import MaterialEditor
if self.card_path_m not in self.cards:
FreeCAD.Console.PrintLog(
'Card path not in cards, material dict will be used to open Material Editor.\n'
"Card path not in cards, material dict will be used to open Material Editor.\n"
)
new_material_params = MaterialEditor.editMaterial(material=self.material_m)
else:
@@ -379,14 +379,14 @@ class _TaskPanelFemMaterialReinforced:
# material editor returns the mat_dict only, not a card_path
# if the material editor was canceled a empty dict will be returned
# do not change the self.material
# check if dict is not empty (do not use 'is True')
# check if dict is not empty (do not use "is True")
if new_material_params:
# check material quantity units
from materialtools.cardutils import check_mat_units as checkunits
if checkunits(new_material_params) is True:
self.material_m = new_material_params
self.card_path_m = self.get_material_card(self.material_m)
FreeCAD.Console.PrintMessage('card_path: {}\n'.format(self.card_path_m))
FreeCAD.Console.PrintMessage("card_path: {}\n".format(self.card_path_m))
if not self.card_path_m:
FreeCAD.Console.PrintMessage(
"Material card chosen by the material editor "
@@ -411,20 +411,20 @@ class _TaskPanelFemMaterialReinforced:
self.choose_material_m(index)
else:
error_message = (
'Due to some wrong material quantity units in data passed '
'by the material editor, the material data was not changed.\n'
"Due to some wrong material quantity units in data passed "
"by the material editor, the material data was not changed.\n"
)
FreeCAD.Console.PrintError(error_message)
QtGui.QMessageBox.critical(None, "Material data not changed", error_message)
else:
FreeCAD.Console.PrintMessage('No changes where made by the material editor.\n')
FreeCAD.Console.PrintMessage("No changes where made by the material editor.\n")
def edit_material_r(self):
# opens the material editor to choose a material or edit material params
import MaterialEditor
if self.card_path_r not in self.cards:
FreeCAD.Console.PrintLog(
'Card path not in cards, material dict will be used to open Material Editor.\n'
"Card path not in cards, material dict will be used to open Material Editor.\n"
)
new_material_params = MaterialEditor.editMaterial(material=self.material_r)
else:
@@ -432,14 +432,14 @@ class _TaskPanelFemMaterialReinforced:
# material editor returns the mat_dict only, not a card_path
# if the material editor was canceled a empty dict will be returned
# do not change the self.material
# check if dict is not empty (do not use 'is True')
# check if dict is not empty (do not use "is True")
if new_material_params:
# check material quantity units
from materialtools.cardutils import check_mat_units as checkunits
if checkunits(new_material_params) is True:
self.material_r = new_material_params
self.card_path_r = self.get_material_card(self.material_r)
FreeCAD.Console.PrintMessage('card_path: {}\n'.format(self.card_path_r))
FreeCAD.Console.PrintMessage("card_path: {}\n".format(self.card_path_r))
if not self.card_path_r:
FreeCAD.Console.PrintMessage(
"Material card chosen by the material editor "
@@ -464,13 +464,13 @@ class _TaskPanelFemMaterialReinforced:
self.choose_material_r(index)
else:
error_message = (
'Due to some wrong material quantity units in data passed '
'by the material editor, the material data was not changed.\n'
"Due to some wrong material quantity units in data passed "
"by the material editor, the material data was not changed.\n"
)
FreeCAD.Console.PrintError(error_message)
QtGui.QMessageBox.critical(None, "Material data not changed", error_message)
else:
FreeCAD.Console.PrintMessage('No changes where made by the material editor.\n')
FreeCAD.Console.PrintMessage("No changes where made by the material editor.\n")
# fill the combo box with cards **************************************************************
def add_cards_to_combo_boxes(self):

View File

@@ -90,9 +90,9 @@ class _ViewProviderFemMeshBoundaryLayer:
guidoc.setEdit(vobj.Object.Name)
else:
from PySide.QtGui import QMessageBox
message = 'Active Task Dialog found! Please close this one before opening a new one!'
message = "Active Task Dialog found! Please close this one before opening a new one!"
QMessageBox.critical(None, "Error in tree view", message)
FreeCAD.Console.PrintError(message + '\n')
FreeCAD.Console.PrintError(message + "\n")
return True
def __getstate__(self):
@@ -103,7 +103,7 @@ class _ViewProviderFemMeshBoundaryLayer:
class _TaskPanelFemMeshBoundaryLayer:
'''The TaskPanel for editing References property of FemMeshBoundaryLayer objects'''
"""The TaskPanel for editing References property of FemMeshBoundaryLayer objects"""
def __init__(self, obj):
@@ -135,7 +135,7 @@ class _TaskPanelFemMeshBoundaryLayer:
# start with Solid in list!
self.selectionWidget = FemSelectionWidgets.GeometryElementsSelection(
obj.References,
['Solid', 'Face', 'Edge', 'Vertex']
["Solid", "Face", "Edge", "Vertex"]
)
# form made from param and selection widget

View File

@@ -91,7 +91,7 @@ class _ViewProviderFemMeshGmsh:
# first check if there is an analysis in the active document
found_an_analysis = False
for o in gui_doc.Document.Objects:
if o.isDerivedFrom('Fem::FemAnalysisPython'):
if o.isDerivedFrom("Fem::FemAnalysisPython"):
found_an_analysis = True
break
if found_an_analysis:
@@ -102,66 +102,66 @@ class _ViewProviderFemMeshGmsh:
gui_doc.setEdit(vobj.Object.Name)
else:
FreeCAD.Console.PrintError(
'Activate the analysis this Gmsh FEM '
'mesh object belongs too!\n'
"Activate the analysis this Gmsh FEM "
"mesh object belongs too!\n"
)
else:
print('Gmsh FEM mesh object does not belong to the active analysis.')
print("Gmsh FEM mesh object does not belong to the active analysis.")
found_mesh_analysis = False
for o in gui_doc.Document.Objects:
if o.isDerivedFrom('Fem::FemAnalysisPython'):
if o.isDerivedFrom("Fem::FemAnalysisPython"):
for m in o.Group:
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: {}'
"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.'
"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.')
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.'
"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'):
if o.isDerivedFrom("Fem::FemAnalysisPython"):
for m in o.Group:
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: {}'.format(o.Name)
"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.'
"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.')
print("No analysis in the active document.")
gui_doc.setEdit(vobj.Object.Name)
else:
from PySide.QtGui import QMessageBox
message = 'Active Task Dialog found! Please close this one before opening a new one!'
message = "Active Task Dialog found! Please close this one before opening a new one!"
QMessageBox.critical(None, "Error in tree view", message)
FreeCAD.Console.PrintError(message + '\n')
FreeCAD.Console.PrintError(message + "\n")
return True
def __getstate__(self):
@@ -241,8 +241,8 @@ 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
@@ -253,7 +253,7 @@ class _TaskPanelFemMeshGmsh:
self.Timer = QtCore.QTimer()
self.Timer.start(100) # 100 milli seconds
self.gmsh_runs = False
self.console_message_gmsh = ''
self.console_message_gmsh = ""
QtCore.QObject.connect(
self.form.if_max,
@@ -320,7 +320,7 @@ class _TaskPanelFemMeshGmsh:
self.mesh_obj.ElementDimension = self.dimension
def update(self):
'fills the widgets'
"fills the widgets"
self.form.if_max.setText(self.clmax.UserString)
self.form.if_min.setText(self.clmin.UserString)
index_dimension = self.form.cb_dimension.findText(self.dimension)
@@ -328,7 +328,7 @@ 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')
message = message.encode("utf-8", "replace")
self.console_message_gmsh = self.console_message_gmsh + (
'<font color="#0000FF">{0:4.1f}:</font> <font color="{1}">{2}</font><br>'
.format(time.time() - self.Start, color, message)
@@ -337,11 +337,11 @@ class _TaskPanelFemMeshGmsh:
self.form.te_output.moveCursor(QtGui.QTextCursor.End)
def update_timer_text(self):
# print('timer1')
# print("timer1")
if self.gmsh_runs:
print('timer2')
# print('Time: {0:4.1f}: '.format(time.time() - self.Start))
self.form.l_time.setText('Time: {0:4.1f}: '.format(time.time() - self.Start))
print("timer2")
# print("Time: {0:4.1f}: ".format(time.time() - self.Start))
self.form.l_time.setText("Time: {0:4.1f}: ".format(time.time() - self.Start))
def max_changed(self, base_quantity_value):
self.clmax = base_quantity_value
@@ -365,11 +365,11 @@ class _TaskPanelFemMeshGmsh:
or part.Proxy.Type == "FeatureSlice" \
or part.Proxy.Type == "FeatureXOR":
error_message = (
'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.'
"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."
)
qtbox_title = (
"Shape to mesh is a BooleanFragmentsCompound "
@@ -381,15 +381,15 @@ class _TaskPanelFemMeshGmsh:
error_message
)
self.Start = time.time()
self.form.l_time.setText('Time: {0:4.1f}: '.format(time.time() - self.Start))
self.console_message_gmsh = ''
self.form.l_time.setText("Time: {0:4.1f}: ".format(time.time() - self.Start))
self.console_message_gmsh = ""
self.gmsh_runs = True
self.console_log("We are going to start ...")
self.get_active_analysis()
import femmesh.gmshtools as gmshtools
gmsh_mesh = gmshtools.GmshTools(self.obj, self.analysis)
self.console_log("Start Gmsh ...")
error = ''
error = ""
try:
error = gmsh_mesh.create_mesh()
except:
@@ -397,12 +397,12 @@ class _TaskPanelFemMeshGmsh:
print("Unexpected error when creating mesh: ", sys.exc_info()[0])
if error:
print(error)
self.console_log('Gmsh had warnings ...')
self.console_log(error, '#FF0000')
self.console_log("Gmsh had warnings ...")
self.console_log(error, "#FF0000")
else:
self.console_log('Clean run of Gmsh')
self.console_log("Clean run of Gmsh")
self.console_log("Gmsh done!")
self.form.l_time.setText('Time: {0:4.1f}: '.format(time.time() - self.Start))
self.form.l_time.setText("Time: {0:4.1f}: ".format(time.time() - self.Start))
self.Timer.stop()
self.update()
QApplication.restoreOverrideCursor()
@@ -413,11 +413,11 @@ class _TaskPanelFemMeshGmsh:
if self.analysis:
for m in FemGui.getActiveAnalysis().Group:
if m.Name == self.mesh_obj.Name:
print('Active analysis found: ' + self.analysis.Name)
print("Active analysis found: " + self.analysis.Name)
return
else:
# print('Mesh is not member of active analysis, means no group meshing')
# print("Mesh is not member of active analysis, means no group meshing")
self.analysis = None # no group meshing
else:
# print('No active analysis, means no group meshing')
# print("No active analysis, means no group meshing")
self.analysis = None # no group meshing

View File

@@ -89,9 +89,9 @@ class _ViewProviderFemMeshGroup:
guidoc.setEdit(vobj.Object.Name)
else:
from PySide.QtGui import QMessageBox
message = 'Active Task Dialog found! Please close this one before opening a new one!'
message = "Active Task Dialog found! Please close this one before opening a new one!"
QMessageBox.critical(None, "Error in tree view", message)
FreeCAD.Console.PrintError(message + '\n')
FreeCAD.Console.PrintError(message + "\n")
return True
def __getstate__(self):
@@ -102,7 +102,7 @@ class _ViewProviderFemMeshGroup:
class _TaskPanelFemMeshGroup:
'''The TaskPanel for editing References property of FemMeshGroup objects'''
"""The TaskPanel for editing References property of FemMeshGroup objects"""
def __init__(self, obj):
@@ -128,7 +128,7 @@ class _TaskPanelFemMeshGroup:
# start with Solid in list!
self.selectionWidget = FemSelectionWidgets.GeometryElementsSelection(
obj.References,
['Solid', 'Face', 'Edge', 'Vertex']
["Solid", "Face", "Edge", "Vertex"]
)
# form made from param and selection widget

View File

@@ -90,9 +90,9 @@ class _ViewProviderFemMeshRegion:
guidoc.setEdit(vobj.Object.Name)
else:
from PySide.QtGui import QMessageBox
message = 'Active Task Dialog found! Please close this one before opening a new one!'
message = "Active Task Dialog found! Please close this one before opening a new one!"
QMessageBox.critical(None, "Error in tree view", message)
FreeCAD.Console.PrintError(message + '\n')
FreeCAD.Console.PrintError(message + "\n")
return True
def __getstate__(self):
@@ -103,7 +103,7 @@ class _ViewProviderFemMeshRegion:
class _TaskPanelFemMeshRegion:
'''The TaskPanel for editing References property of FemMeshRegion objects'''
"""The TaskPanel for editing References property of FemMeshRegion objects"""
def __init__(self, obj):
@@ -124,7 +124,7 @@ class _TaskPanelFemMeshRegion:
# start with Solid in list!
self.selectionWidget = FemSelectionWidgets.GeometryElementsSelection(
obj.References,
['Solid', 'Face', 'Edge', 'Vertex']
["Solid", "Face", "Edge", "Vertex"]
)
# form made from param and selection widget

View File

@@ -71,9 +71,9 @@ class _ViewProviderFemResultMechanical:
guidoc.setEdit(vobj.Object.Name)
else:
from PySide.QtGui import QMessageBox
message = 'Active Task Dialog found! Please close this one before opening a new one!'
message = "Active Task Dialog found! Please close this one before opening a new one!"
QMessageBox.critical(None, "Error in tree view", message)
FreeCAD.Console.PrintError(message + '\n')
FreeCAD.Console.PrintError(message + "\n")
return True
def setEdit(self, vobj, mode=0):
@@ -86,10 +86,10 @@ class _ViewProviderFemResultMechanical:
FreeCADGui.Control.showDialog(taskd)
return True
else:
error_message = 'FEM: Result object has no appropriate FEM mesh.\n'
error_message = "FEM: Result object has no appropriate FEM mesh.\n"
FreeCAD.Console.PrintError(error_message)
from PySide import QtGui
QtGui.QMessageBox.critical(None, 'No result object', error_message)
QtGui.QMessageBox.critical(None, "No result object", error_message)
return False
def unsetEdit(self, vobj, mode=0):
@@ -117,7 +117,7 @@ class _ViewProviderFemResultMechanical:
class _TaskPanelFemResultShow:
'''The task panel for the post-processing'''
"""The task panel for the post-processing"""
def __init__(self, obj):
self.result_obj = obj
@@ -508,8 +508,8 @@ class _TaskPanelFemResultShow:
self.form.hsb_displacement_factor.setValue(value)
def disable_empty_result_buttons(self):
''' disable radio buttons if result does not exists in result object'''
'''assignments
""" disable radio buttons if result does not exists in result object"""
"""assignments
DisplacementLengths --> rb_abs_displacement
DisplacementVectors --> rb_x_displacement, rb_y_displacement, rb_z_displacement
Temperature --> rb_temperature
@@ -519,7 +519,7 @@ class _TaskPanelFemResultShow:
MaxShear --> rb_max_shear_stress
MassFlowRate --> rb_massflowrate
NetworkPressure --> rb_networkpressure
Peeq --> rb_peeq'''
Peeq --> rb_peeq"""
if len(self.result_obj.DisplacementLengths) == 0:
self.form.rb_abs_displacement.setEnabled(0)
if len(self.result_obj.DisplacementVectors) == 0:
@@ -552,15 +552,15 @@ class _TaskPanelFemResultShow:
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'
"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)
QtGui.QMessageBox.critical(None, "No result object", error_message)
else:
error_message = 'FEM: Result node numbers are not equal to FEM Mesh NodeCount.\n'
error_message = "FEM: Result node numbers are not equal to FEM Mesh NodeCount.\n"
FreeCAD.Console.PrintError(error_message)
QtGui.QMessageBox.critical(None, 'No result object', error_message)
QtGui.QMessageBox.critical(None, "No result object", error_message)
def reset_mesh_deformation(self):
self.mesh_obj.ViewObject.applyDisplacement(0.0)
@@ -593,7 +593,7 @@ def hide_parts_constraints():
hide_constraints = fem_prefs.GetBool("HideConstraint", False)
if hide_constraints:
for o in FreeCAD.ActiveDocument.Objects:
if o.isDerivedFrom('Fem::FemAnalysis'):
if o.isDerivedFrom("Fem::FemAnalysis"):
for acnstrmesh in getActiveAnalysis().Group:
if "Constraint" in acnstrmesh.TypeId:
acnstrmesh.ViewObject.Visibility = False

View File

@@ -79,9 +79,9 @@ class _ViewProviderFemSolverCalculix:
doc.setEdit(vobj.Object.Name)
else:
from PySide.QtGui import QMessageBox
message = 'Active Task Dialog found! Please close this one before opening a new one!'
message = "Active Task Dialog found! Please close this one before opening a new one!"
QMessageBox.critical(None, "Error in tree view", message)
FreeCAD.Console.PrintError(message + '\n')
FreeCAD.Console.PrintError(message + "\n")
return True
def __getstate__(self):
@@ -92,7 +92,7 @@ class _ViewProviderFemSolverCalculix:
class _TaskPanelFemSolverCalculix:
'''The TaskPanel for CalculiX ccx tools solver object'''
"""The TaskPanel for CalculiX ccx tools solver object"""
def __init__(self, solver_object):
self.form = FreeCADGui.PySideUic.loadUi(
@@ -109,7 +109,7 @@ class _TaskPanelFemSolverCalculix:
self.Timer = QtCore.QTimer()
self.Timer.start(300)
self.fem_console_message = ''
self.fem_console_message = ""
# Connect Signals and Slots
QtCore.QObject.connect(
@@ -189,15 +189,15 @@ class _TaskPanelFemSolverCalculix:
FreeCADGui.ActiveDocument.resetEdit()
def update(self):
'fills the widgets'
"fills the widgets"
self.form.le_working_dir.setText(self.fea.working_dir)
if self.fea.solver.AnalysisType == 'static':
if self.fea.solver.AnalysisType == "static":
self.form.rb_static_analysis.setChecked(True)
elif self.fea.solver.AnalysisType == 'frequency':
elif self.fea.solver.AnalysisType == "frequency":
self.form.rb_frequency_analysis.setChecked(True)
elif self.fea.solver.AnalysisType == 'thermomech':
elif self.fea.solver.AnalysisType == "thermomech":
self.form.rb_thermomech_analysis.setChecked(True)
elif self.fea.solver.AnalysisType == 'check':
elif self.fea.solver.AnalysisType == "check":
self.form.rb_check_mesh.setChecked(True)
return
@@ -217,36 +217,36 @@ class _TaskPanelFemSolverCalculix:
self.femConsoleMessage("CalculiX stdout is empty", "#FF0000")
else:
try:
out = unicode(out, 'utf-8', 'replace')
out = unicode(out, "utf-8", "replace")
rx = QtCore.QRegExp("\\*ERROR.*\\n\\n")
print(rx)
rx.setMinimal(True)
pos = rx.indexIn(out)
while not pos < 0:
match = rx.cap(0)
FreeCAD.Console.PrintError(match.strip().replace('\n', ' ') + '\n')
FreeCAD.Console.PrintError(match.strip().replace("\n", " ") + "\n")
pos = rx.indexIn(out, pos + 1)
out = os.linesep.join([s for s in out.splitlines() if s])
self.femConsoleMessage(out.replace('\n', '<br>'))
self.femConsoleMessage(out.replace("\n", "<br>"))
except UnicodeDecodeError:
self.femConsoleMessage("Error converting stdout from CalculiX", "#FF0000")
if '*ERROR in e_c3d: nonpositive jacobian' in out:
if "*ERROR in e_c3d: nonpositive jacobian" in out:
error_message = (
"\n\nCalculiX returned an error due to "
"nonpositive jacobian determinant in at least one element\n"
"Use the run button on selected solver to get a better error output.\n"
)
FreeCAD.Console.PrintError(error_message)
if '*ERROR' in out:
if "*ERROR" in out:
return False
else:
return True
def UpdateText(self):
if(self.Calculix.state() == QtCore.QProcess.ProcessState.Running):
self.form.l_time.setText('Time: {0:4.1f}: '.format(time.time() - self.Start))
self.form.l_time.setText("Time: {0:4.1f}: ".format(time.time() - self.Start))
def calculixError(self, error=''):
def calculixError(self, error=""):
print("Error() {}".format(error))
self.femConsoleMessage("CalculiX execute error: {}".format(error), "#FF0000")
@@ -283,7 +283,7 @@ class _TaskPanelFemSolverCalculix:
self.form.pb_run_ccx.setText("Re-run CalculiX")
self.femConsoleMessage("Loading result sets...")
self.form.l_time.setText('Time: {0:4.1f}: '.format(time.time() - self.Start))
self.form.l_time.setText("Time: {0:4.1f}: ".format(time.time() - self.Start))
self.fea.reset_mesh_purge_results_checked()
self.fea.inp_file_name = self.fea.inp_file_name
@@ -307,10 +307,10 @@ class _TaskPanelFemSolverCalculix:
QApplication.setOverrideCursor(Qt.WaitCursor)
self.fea.load_results()
QApplication.restoreOverrideCursor()
self.form.l_time.setText('Time: {0:4.1f}: '.format(time.time() - self.Start))
self.form.l_time.setText("Time: {0:4.1f}: ".format(time.time() - self.Start))
def choose_working_dir(self):
wd = QtGui.QFileDialog.getExistingDirectory(None, 'Choose CalculiX working directory',
wd = QtGui.QFileDialog.getExistingDirectory(None, "Choose CalculiX working directory",
self.fea.working_dir)
if os.path.isdir(wd):
self.fea.setup_working_dir(wd)
@@ -318,7 +318,7 @@ class _TaskPanelFemSolverCalculix:
def write_input_file_handler(self):
self.Start = time.time()
self.form.l_time.setText('Time: {0:4.1f}: '.format(time.time() - self.Start))
self.form.l_time.setText("Time: {0:4.1f}: ".format(time.time() - self.Start))
QApplication.restoreOverrideCursor()
if self.check_prerequisites_helper():
QApplication.setOverrideCursor(Qt.WaitCursor)
@@ -330,12 +330,12 @@ class _TaskPanelFemSolverCalculix:
else:
self.femConsoleMessage("Write .inp file failed!", "#FF0000")
QApplication.restoreOverrideCursor()
self.form.l_time.setText('Time: {0:4.1f}: '.format(time.time() - self.Start))
self.form.l_time.setText("Time: {0:4.1f}: ".format(time.time() - self.Start))
def check_prerequisites_helper(self):
self.Start = time.time()
self.femConsoleMessage("Check dependencies...")
self.form.l_time.setText('Time: {0:4.1f}: '.format(time.time() - self.Start))
self.form.l_time.setText("Time: {0:4.1f}: ".format(time.time() - self.Start))
self.fea.update_objects()
message = self.fea.check_prerequisites()
@@ -351,7 +351,7 @@ class _TaskPanelFemSolverCalculix:
self.ext_editor_process.start(ext_editor_path, [filename])
def editCalculixInputFile(self):
print('editCalculixInputFile {}'.format(self.fea.inp_file_name))
print("editCalculixInputFile {}".format(self.fea.inp_file_name))
ccx_prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem/Ccx")
if ccx_prefs.GetBool("UseInternalEditor", True):
FemGui.open(self.fea.inp_file_name)
@@ -367,7 +367,7 @@ class _TaskPanelFemSolverCalculix:
FemGui.open(self.fea.inp_file_name)
def runCalculix(self):
print('runCalculix')
print("runCalculix")
self.Start = time.time()
self.femConsoleMessage("CalculiX binary: {}".format(self.fea.ccx_binary))
@@ -375,7 +375,7 @@ class _TaskPanelFemSolverCalculix:
# run Calculix
print(
'run CalculiX at: {} with: {}'
"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
@@ -383,7 +383,7 @@ class _TaskPanelFemSolverCalculix:
self.cwd = QtCore.QDir.currentPath()
fi = QtCore.QFileInfo(self.fea.inp_file_name)
QtCore.QDir.setCurrent(fi.path())
self.Calculix.start(self.fea.ccx_binary, ['-i', fi.baseName()])
self.Calculix.start(self.fea.ccx_binary, ["-i", fi.baseName()])
QApplication.restoreOverrideCursor()
@@ -394,13 +394,13 @@ class _TaskPanelFemSolverCalculix:
self.form.pb_run_ccx.setEnabled(False)
def select_static_analysis(self):
self.select_analysis_type('static')
self.select_analysis_type("static")
def select_frequency_analysis(self):
self.select_analysis_type('frequency')
self.select_analysis_type("frequency")
def select_thermomech_analysis(self):
self.select_analysis_type('thermomech')
self.select_analysis_type("thermomech")
def select_check_mesh(self):
self.select_analysis_type('check')
self.select_analysis_type("check")