Files
create/src/Mod/Fem/femtools/migrate_app.py

356 lines
17 KiB
Python

# ***************************************************************************
# * Copyright (c) 2020 Bernd Hahnebach <bernd@bimstatik.org> *
# * *
# * This file is part of the FreeCAD CAx development system. *
# * *
# * This program is free software; you can redistribute it and/or modify *
# * it under the terms of the GNU Lesser General Public License (LGPL) *
# * as published by the Free Software Foundation; either version 2 of *
# * the License, or (at your option) any later version. *
# * for detail see the LICENCE text file. *
# * *
# * This program is distributed in the hope that it will be useful, *
# * but WITHOUT ANY WARRANTY; without even the implied warranty of *
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
# * GNU Library General Public License for more details. *
# * *
# * You should have received a copy of the GNU Library General Public *
# * License along with this program; if not, write to the Free Software *
# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
# * USA *
# * *
# ***************************************************************************
""" Class and methods to migrate old FEM App objects
see module end as well as forum topic
https://forum.freecadweb.org/viewtopic.php?&t=46218
"""
__title__ = "migrate app"
__author__ = "Bernd Hahnebach"
__url__ = "http://www.freecadweb.org"
import FreeCAD
class FemMigrateApp(object):
def find_module(self, fullname, path):
if fullname == "femobjects":
return self
if fullname == "femobjects._FemConstraintBodyHeatSource":
return self
if fullname == "femobjects._FemConstraintElectrostaticPotential":
return self
if fullname == "PyObjects":
return self
if fullname == "PyObjects._FemConstraintBodyHeatSource":
return self
if fullname == "PyObjects._FemConstraintElectrostaticPotential":
return self
if fullname == "PyObjects._FemConstraintFlowVelocity":
return self
if fullname == "PyObjects._FemConstraintInitialFlowVelocity":
return self
if fullname == "PyObjects._FemConstraintSelfWeight":
return self
if fullname == "PyObjects._FemElementFluid1D":
return self
if fullname == "PyObjects._FemElementGeometry1D":
return self
if fullname == "PyObjects._FemElementGeometry2D":
return self
if fullname == "PyObjects._FemElementRotation1D":
return self
if fullname == "PyObjects._FemMaterial":
return self
if fullname == "PyObjects._FemMaterialMechanicalNonlinear":
return self
if fullname == "PyObjects._FemMeshBoundaryLayer":
return self
if fullname == "PyObjects._FemMeshGmsh":
return self
if fullname == "PyObjects._FemMeshGroup":
return self
if fullname == "PyObjects._FemMeshRegion":
return self
if fullname == "PyObjects._FemMeshResult":
return self
if fullname == "PyObjects._FemResultMechanical":
return self
if fullname == "PyObjects._FemSolverCalculix":
return self
if fullname == "PyObjects._FemBeamSection":
return self
if fullname == "PyObjects._FemFluidSection":
return self
if fullname == "PyObjects._FemShellThickness":
return self
if fullname == "_FemBeamSection":
return self
if fullname == "_FemConstraintSelfWeight":
return self
if fullname == "_FemMaterial":
return self
if fullname == "_FemMaterialMechanicalNonlinear":
return self
if fullname == "_FemMeshGmsh":
return self
if fullname == "_FemMeshGroup":
return self
if fullname == "_FemMeshRegion":
return self
if fullname == "_FemResultMechanical":
return self
if fullname == "_FemShellThickness":
return self
if fullname == "_FemSolverCalculix":
return self
if fullname == "_FemSolverZ88":
return self
if fullname == "_FemMechanicalResult":
return self
if fullname == "FemResult":
return self
if fullname == "_MechanicalMaterial":
return self
if fullname == "FemBeamSection":
return self
if fullname == "FemShellThickness":
return self
if fullname == "MechanicalAnalysis":
return self
if fullname == "MechanicalMaterial":
return self
return None
def create_module(self, spec):
return None
def exec_module(self, module):
return self.load_module(module)
def load_module(self, module):
if module.__name__ == "femobjects":
module.__path__ = "femobjects"
if module.__name__ == "femobjects._FemConstraintBodyHeatSource":
import femobjects.constraint_bodyheatsource
module.Proxy = femobjects.constraint_bodyheatsource.ConstraintBodyHeatSource
if module.__name__ == "femobjects._FemConstraintElectrostaticPotential":
import femobjects.constraint_electrostaticpotential
module.Proxy = femobjects.constraint_electrostaticpotential.ConstraintElectrostaticPotential
if module.__name__ == "PyObjects":
module.__path__ = "PyObjects"
if module.__name__ == "PyObjects._FemConstraintBodyHeatSource":
import femobjects.constraint_bodyheatsource
module.Proxy = femobjects.constraint_bodyheatsource.ConstraintBodyHeatSource
if module.__name__ == "PyObjects._FemConstraintElectrostaticPotential":
import femobjects.constraint_electrostaticpotential
module.Proxy = femobjects.constraint_electrostaticpotential.ConstraintElectrostaticPotential
if module.__name__ == "PyObjects._FemConstraintFlowVelocity":
import femobjects._FemConstraintFlowVelocity
module.Proxy = femobjects._FemConstraintFlowVelocity.Proxy
if module.__name__ == "PyObjects._FemConstraintInitialFlowVelocity":
import femobjects._FemConstraintInitialFlowVelocity
module.Proxy = femobjects._FemConstraintInitialFlowVelocity.Proxy
if module.__name__ == "PyObjects._FemConstraintSelfWeight":
import femobjects._FemConstraintSelfWeight
module._FemConstraintSelfWeight = femobjects._FemConstraintSelfWeight._FemConstraintSelfWeight
if module.__name__ == "PyObjects._FemElementFluid1D":
import femobjects._FemElementFluid1D
module._FemElementFluid1D = femobjects._FemElementFluid1D._FemElementFluid1D
if module.__name__ == "PyObjects._FemElementGeometry1D":
import femobjects._FemElementGeometry1D
module._FemElementGeometry1D = femobjects._FemElementGeometry1D._FemElementGeometry1D
if module.__name__ == "PyObjects._FemElementGeometry2D":
import femobjects._FemElementGeometry2D
module._FemElementGeometry2D = femobjects._FemElementGeometry2D._FemElementGeometry2D
if module.__name__ == "PyObjects._FemElementRotation1D":
import femobjects._FemElementRotation1D
module._FemElementRotation1D = femobjects._FemElementRotation1D._FemElementRotation1D
if module.__name__ == "PyObjects._FemMaterial":
import femobjects._FemMaterial
module._FemMaterial = femobjects._FemMaterial._FemMaterial
if module.__name__ == "PyObjects._FemMaterialMechanicalNonlinear":
import femobjects._FemMaterialMechanicalNonlinear
module._FemMaterialMechanicalNonlinear = femobjects._FemMaterialMechanicalNonlinear._FemMaterialMechanicalNonlinear
if module.__name__ == "PyObjects._FemMeshBoundaryLayer":
import femobjects._FemMeshBoundaryLayer
module._FemMeshBoundaryLayer = femobjects._FemMeshBoundaryLayer._FemMeshBoundaryLayer
if module.__name__ == "PyObjects._FemMeshGmsh":
import femobjects._FemMeshGmsh
module._FemMeshGmsh = femobjects._FemMeshGmsh._FemMeshGmsh
if module.__name__ == "PyObjects._FemMeshGroup":
import femobjects._FemMeshGroup
module._FemMeshGroup = femobjects._FemMeshGroup._FemMeshGroup
if module.__name__ == "PyObjects._FemMeshRegion":
import femobjects._FemMeshRegion
module._FemMeshRegion = femobjects._FemMeshRegion._FemMeshRegion
if module.__name__ == "PyObjects._FemMeshResult":
import femobjects._FemMeshResult
module._FemMeshResult = femobjects._FemMeshResult._FemMeshResult
if module.__name__ == "PyObjects._FemResultMechanical":
import femobjects._FemResultMechanical
module._FemResultMechanical = femobjects._FemResultMechanical._FemResultMechanical
if module.__name__ == "PyObjects._FemSolverCalculix":
import femobjects._FemSolverCalculix
module._FemSolverCalculix = femobjects._FemSolverCalculix._FemSolverCalculix
if module.__name__ == "PyObjects._FemBeamSection":
import femobjects._FemElementGeometry1D
module._FemBeamSection = femobjects._FemElementGeometry1D._FemElementGeometry1D
if module.__name__ == "PyObjects._FemFluidSection":
import femobjects._FemElementFluid1D
module._FemFluidSection = femobjects._FemElementFluid1D._FemElementFluid1D
if module.__name__ == "PyObjects._FemShellThickness":
import femobjects._FemElementGeometry2D
module._FemShellThickness = femobjects._FemElementGeometry2D._FemElementGeometry2D
if module.__name__ == "_FemBeamSection":
import femobjects._FemElementGeometry1D
module._FemBeamSection = femobjects._FemElementGeometry1D._FemElementGeometry1D
if module.__name__ == "_FemConstraintSelfWeight":
import femobjects._FemConstraintSelfWeight
module._FemConstraintSelfWeight = femobjects._FemConstraintSelfWeight._FemConstraintSelfWeight
if module.__name__ == "_FemMaterial":
import femobjects._FemMaterial
module._FemMaterial = femobjects._FemMaterial._FemMaterial
if module.__name__ == "_FemMaterialMechanicalNonlinear":
import femobjects._FemMaterialMechanicalNonlinear
module._FemMaterialMechanicalNonlinear = femobjects._FemMaterialMechanicalNonlinear._FemMaterialMechanicalNonlinear
if module.__name__ == "_FemMeshGmsh":
import femobjects._FemMeshGmsh
module._FemMeshGmsh = femobjects._FemMeshGmsh._FemMeshGmsh
if module.__name__ == "_FemMeshGroup":
import femobjects._FemMeshGroup
module._FemMeshGroup = femobjects._FemMeshGroup._FemMeshGroup
if module.__name__ == "_FemMeshRegion":
import femobjects._FemMeshRegion
module._FemMeshRegion = femobjects._FemMeshRegion._FemMeshRegion
if module.__name__ == "_FemResultMechanical":
import femobjects._FemResultMechanical
module._FemResultMechanical = femobjects._FemResultMechanical._FemResultMechanical
if module.__name__ == "_FemShellThickness":
import femobjects._FemElementGeometry2D
module._FemShellThickness = femobjects._FemElementGeometry2D._FemElementGeometry2D
if module.__name__ == "_FemSolverCalculix":
import femobjects._FemSolverCalculix
module._FemSolverCalculix = femobjects._FemSolverCalculix._FemSolverCalculix
if module.__name__ == "_FemSolverZ88":
import femsolver.z88.solver
module._FemSolverZ88 = femsolver.z88.solver.Proxy
if module.__name__ == "_FemMechanicalResult":
import femobjects._FemResultMechanical
module._FemMechanicalResult = femobjects._FemResultMechanical._FemResultMechanical
if module.__name__ == "FemResult":
import femobjects._FemResultMechanical
module.FemResult = femobjects._FemResultMechanical._FemResultMechanical
if module.__name__ == "_MechanicalMaterial":
import femobjects._FemMaterial
module._MechanicalMaterial = femobjects._FemMaterial._FemMaterial
if module.__name__ == "FemBeamSection":
import femobjects._FemElementGeometry1D
module._FemBeamSection = femobjects._FemElementGeometry1D._FemElementGeometry1D
if FreeCAD.GuiUp:
import femguiobjects._ViewProviderFemElementGeometry1D
module._ViewProviderFemBeamSection = femguiobjects._ViewProviderFemElementGeometry1D._ViewProviderFemElementGeometry1D
if module.__name__ == "FemShellThickness":
import femobjects._FemElementGeometry2D
module._FemShellThickness = femobjects._FemElementGeometry2D._FemElementGeometry2D
if FreeCAD.GuiUp:
import femguiobjects._ViewProviderFemElementGeometry2D
module._ViewProviderFemShellThickness = femguiobjects._ViewProviderFemElementGeometry2D._ViewProviderFemElementGeometry2D
if module.__name__ == "MechanicalAnalysis":
import femobjects.FemConstraint
module._FemAnalysis = femobjects.FemConstraint.Proxy
if FreeCAD.GuiUp:
import femguiobjects.ViewProviderBaseObject
module._ViewProviderFemAnalysis = femguiobjects.ViewProviderBaseObject.ViewProxy
if module.__name__ == "MechanicalMaterial":
import femobjects._FemMaterial
module._MechanicalMaterial = femobjects._FemMaterial._FemMaterial
if FreeCAD.GuiUp:
import femguiobjects._ViewProviderFemMaterial
module._ViewProviderMechanicalMaterial = femguiobjects._ViewProviderFemMaterial._ViewProviderFemMaterial
return None
"""
possible entries in the old files:
(the class name in the old file does not matter, we ever only had one class per module)
fourth big moving
renaming class and module names in femobjects
TODO add link to commit before the first commit
module="femobjects._FemConstraintBodyHeatSource"
module="femobjects._FemConstraintElectrostaticPotential"
third big moving
from PyObjects to femobjects, following the parent commit
https://github.com/berndhahnebach/FreeCAD_bhb/tree/07ae0e56c4/src/Mod/Fem/PyObjects
module="PyObjects._FemConstraintBodyHeatSource"
module="PyObjects._FemConstraintElectrostaticPotential"
module="PyObjects._FemConstraintFlowVelocity"
module="PyObjects._FemConstraintInitialFlowVelocity"
module="PyObjects._FemConstraintSelfWeight"
module="PyObjects._FemElementFluid1D"
module="PyObjects._FemElementGeometry1D"
module="PyObjects._FemElementGeometry2D"
module="PyObjects._FemElementRotation1D"
module="PyObjects._FemMaterial"
module="PyObjects._FemMaterialMechanicalNonlinear"
module="PyObjects._FemMeshBoundaryLayer"
module="PyObjects._FemMeshGmsh"
module="PyObjects._FemMeshGroup"
module="PyObjects._FemMeshRegion"
module="PyObjects._FemMeshResult"
module="PyObjects._FemResultMechanical"
module="PyObjects._FemSolverCalculix"
renamed between the second and third big moveings
module="PyObjects._FemBeamSection"
module="PyObjects._FemFluidSection"
module="PyObjects._FemShellThickness"
second big moveing
into PyObjects, following the parent commit
https://github.com/berndhahnebach/FreeCAD_bhb/tree/7f884e8bff/src/Mod/Fem
module="_FemBeamSection"
module="_FemConstraintSelfWeight"
module="_FemMaterial"
module="_FemMaterialMechanicalNonlinear."
module="_FemMeshGmsh"
module="_FemMeshGroup"
module="_FemMeshRegion"
module="_FemResultMechanical"
module="_FemShellThickness"
module="_FemSolverCalculix"
module="_FemSolverZ88"
renamed between the first and second big moveings
module="_FemMechanicalResult"
module="FemResult"
module="_MechanicalMaterial"
first big moving
split modules from one module into make, obj class, vp class, command
new obj class module names had a _
following the parent commit of the first split commit
https://github.com/berndhahnebach/FreeCAD_bhb/tree/c3328d6b4e/src/Mod/Fem
in this modules there where object class and viewprovider class together
module="FemBeamSection"
module="FemShellThickness"
module="MechanicalAnalysis"
module="MechanicalMaterial"
"""