FEM: use python base constraint class, fluid section

This commit is contained in:
Bernd Hahnebach
2020-03-03 21:04:35 +01:00
parent 73711caa1d
commit 31004b3cab
2 changed files with 13 additions and 64 deletions

View File

@@ -32,7 +32,7 @@ __url__ = "http://www.freecadweb.org"
import FreeCAD
import FreeCADGui
import FemGui # needed to display the icons in TreeView
from . import ViewProviderFemConstraint
# for the panel
from femobjects import _FemElementFluid1D
@@ -40,70 +40,20 @@ from PySide import QtCore
from PySide import QtGui
from . import FemSelectionWidgets
False if FemGui.__name__ else True # flake8, dummy FemGui usage
class _ViewProviderFemElementFluid1D:
class _ViewProviderFemElementFluid1D(ViewProviderFemConstraint.ViewProxy):
"A View Provider for the FemElementFluid1D object"
def __init__(self, vobj):
vobj.Proxy = self
def getIcon(self):
return ":/icons/fem-element-fluid-1d.svg"
def attach(self, vobj):
from pivy import coin
self.ViewObject = vobj
self.Object = vobj.Object
self.standard = coin.SoGroup()
vobj.addDisplayMode(self.standard, "Default")
def getDisplayModes(self, obj):
return ["Default"]
def getDefaultDisplayMode(self):
return "Default"
def updateData(self, obj, prop):
return
def onChanged(self, vobj, prop):
return
def setEdit(self, vobj, mode=0):
# hide all meshes
for o in FreeCAD.ActiveDocument.Objects:
if o.isDerivedFrom("Fem::FemMeshObject"):
o.ViewObject.hide()
# show task panel
taskd = _TaskPanelFemElementFluid1D(self.Object)
taskd.obj = vobj.Object
FreeCADGui.Control.showDialog(taskd)
return True
def unsetEdit(self, vobj, mode=0):
FreeCADGui.Control.closeDialog()
return True
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
if not guidoc.getInEdit():
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!"
QMessageBox.critical(None, "Error in tree view", message)
FreeCAD.Console.PrintError(message + "\n")
return True
def __getstate__(self):
return None
def __setstate__(self, state):
return None
ViewProviderFemConstraint.ViewProxy.setEdit(
self,
vobj,
mode,
_TaskPanelFemElementFluid1D
)
class _TaskPanelFemElementFluid1D:

View File

@@ -28,10 +28,13 @@ __url__ = "http://www.freecadweb.org"
# \ingroup FEM
# \brief FreeCAD FEM _FemElementFluid1D
from . import FemConstraint
class _FemElementFluid1D:
class _FemElementFluid1D(FemConstraint.Proxy):
"The FemElementFluid1D object"
Type = "Fem::ElementFluid1D"
known_fluid_types = ["Liquid"]
# "Gas", "Open Channel" are not implemented in ccx writer
# known_fluid_types = ["Liquid", "Gas", "Open Channel"]
@@ -52,6 +55,7 @@ class _FemElementFluid1D:
known_channel_types = ["NONE"]
def __init__(self, obj):
super(_FemElementFluid1D, self).__init__(obj)
obj.addProperty(
"App::PropertyLinkSubList",
"References",
@@ -309,8 +313,3 @@ class _FemElementFluid1D:
obj.OutletPressureActive = True
obj.InletFlowRateActive = False
obj.OutletFlowRateActive = False
obj.Proxy = self
self.Type = "Fem::ElementFluid1D"
def execute(self, obj):
return