0021308: EDF 1923 SMESH: Remove hard-coded dependency of the external mesh plugins from the SMESH module

* Improve documentation for meshing plug-ins (in particular, dynamically added methods)
This commit is contained in:
vsr 2012-08-22 05:45:47 +00:00
parent 7722c85978
commit a4ca8bc3bc

View File

@ -36,34 +36,48 @@ import geompy
import smeshDC import smeshDC
from smeshDC import * from smeshDC import *
# get instance of class smeshDC # retrieve SMESH engine in try/except block
smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH") # to avoid problems in some cases, e.g. when generating documentation
smesh.init_smesh(salome.myStudy,geompy.geom) try:
# get instance of class smeshDC
smesh = salome.lcc.FindOrLoadComponent( "FactoryServer", "SMESH" )
smesh.init_smesh( salome.myStudy, geompy.geom )
except:
smesh = None
pass
# load plugins # load plugins and add dynamically generated methods to Mesh class,
# the same for for global variables declared by plug-ins
from smeshDC import Mesh, algoCreator from smeshDC import Mesh, algoCreator
for pluginName in os.environ["SMESH_MeshersList"].split(":"): for pluginName in os.environ[ "SMESH_MeshersList" ].split( ":" ):
#
pluginName += "DC"
try:
exec( "from %s import *" % pluginName )
except Exception, e:
print "Exception while loading %s: %s" % ( pluginName, e )
continue
exec( "import %s" % pluginName )
plugin = eval( pluginName )
pluginName += "DC" # add methods creating algorithms to Mesh
try: for k in dir( plugin ):
exec("from %s import *" % pluginName ) if k[0] == '_': continue
except Exception, e: algo = getattr( plugin, k )
print "Exception while loading %s: %s" % ( pluginName, e ) if type( algo ).__name__ == 'classobj' and hasattr( algo, "meshMethod" ):
continue if not hasattr( Mesh, algo.meshMethod ):
exec("import %s" % pluginName ) setattr( Mesh, algo.meshMethod, algoCreator() )
plugin = eval(pluginName) pass
getattr( Mesh, algo.meshMethod ).add( algo )
pass
pass
pass
del pluginName
# add methods creating algorithms to Mesh # export the methods of smeshDC
for k in dir(plugin): if smesh:
if k[0] == '_':continue for k in dir( smesh ):
algo = getattr(plugin,k) if k[0] == '_': continue
if type( algo ).__name__ == 'classobj' and hasattr( algo, "meshMethod"): globals()[k] = getattr( smesh, k )
if not hasattr( Mesh, algo.meshMethod ): del k
setattr( Mesh, algo.meshMethod, algoCreator()) pass
getattr( Mesh, algo.meshMethod ).add( algo )
# Export the methods of smeshDC
for k in dir(smesh):
if k[0] == '_':continue
globals()[k]=getattr(smesh,k)
del k