2004-06-18 14:34:31 +06:00
|
|
|
#######################################################################################
|
|
|
|
# File : PluginMeshers.txt
|
|
|
|
# Author : Julia DOROVSKIKH
|
|
|
|
# Module : SMESH
|
|
|
|
# $Header$
|
|
|
|
#######################################################################################
|
|
|
|
#
|
|
|
|
# How to add your own mesher (as a set of hypotheses and algorithms) to the application
|
|
|
|
#
|
|
|
|
#######################################################################################
|
|
|
|
|
|
|
|
1. Create mesher plugin package, e.g. MyMesher.
|
|
|
|
|
|
|
|
2. Create XML file to describe all algorithms and hypotheses, provided by plugin package
|
|
|
|
(see SMESH_SRC/resources/SMESH_Meshers.xml for example).
|
|
|
|
|
|
|
|
<meshers-group name="MyName"
|
|
|
|
resources="MyResourceKey"
|
|
|
|
server-lib="libMyServerLib.so"
|
|
|
|
gui-lib="libMyClientLib.so">
|
|
|
|
<hypotheses>
|
|
|
|
<hypothesis type="MyHypType1"
|
|
|
|
label-id="My beautiful hypothesis name"
|
|
|
|
icon-id="my_hypo_1_icon.png"/>
|
|
|
|
</hypotheses>
|
|
|
|
<algorithms>
|
|
|
|
<algorithm type="MyAlgType1"
|
|
|
|
label-id="My beautiful algorithm name"
|
|
|
|
icon-id="my_algo_1_icon.png"/>
|
|
|
|
</algorithms>
|
|
|
|
</meshers-group>
|
|
|
|
|
|
|
|
Attributes of <meshers-group> tag:
|
|
|
|
|
|
|
|
- value of <name> attribute is used to collect hypotheses/algoritms in groups;
|
|
|
|
you can also use this attribute for short description of your mesher plugin
|
|
|
|
|
|
|
|
- value of <resources> attribute (MyResourceKey) is used to access resources
|
|
|
|
(messages and icons) from GUI (see paragraphs 4.2 and 5);
|
|
|
|
currently it should coincide with the name of plugin package; this limitation
|
|
|
|
will be eliminated in the further development.
|
|
|
|
|
|
|
|
- value of <server-lib> attribute describes the name of your mesher's
|
|
|
|
server plugin library (See paragraph 3)
|
|
|
|
|
|
|
|
- value of <gui-lib> attribute describes the name of your mesher's
|
|
|
|
client plugin library (See paragraph 4)
|
|
|
|
|
|
|
|
Attributes of <hypothesis/algorithm> tag:
|
|
|
|
|
|
|
|
- value of <type> attribute is an unique name of the hypothesis/algorithm
|
|
|
|
|
|
|
|
* It is a value of _name field of your hypothesis class
|
|
|
|
(see paragraph 3, implementation of constructor of
|
|
|
|
StdMeshers_LocalLength class: _name = "LocalLength")
|
|
|
|
|
|
|
|
* It is a key to each certain hypothesis class
|
|
|
|
(see paragraph 3, implementation of "GetHypothesisCreator()" method in StdMeshers_i.cxx)
|
|
|
|
|
|
|
|
* It is a key to each certain hypothesis GUI
|
|
|
|
(see paragraph 4, implementation of "StdMeshersGUI_HypothesisCreator::CreateHypothesis()"
|
|
|
|
and "StdMeshersGUI_HypothesisCreator::EditHypothesis()" methods in StdMeshersGUI.cxx)
|
|
|
|
|
|
|
|
* It is a key to each certain hypothesis icon in Object Browser
|
|
|
|
(see paragraph 4.2.1)
|
|
|
|
|
|
|
|
- value of <label-id> attribute is displayed in the GUI in the list
|
|
|
|
of available hypotheses/algorithms ("Create Hypothesis/Algorithm" dialog)
|
|
|
|
|
|
|
|
- value of <icon-id> attribute is a name of icon file, which is displayed in GUI
|
|
|
|
in the list of available hypotheses/algorithms ("Create Hypothesis/Algorithm" dialog)
|
|
|
|
|
|
|
|
Note: All attributes values are accessible in your GUI via HypothesisData class
|
|
|
|
(see paragraph 4.1)
|
|
|
|
|
|
|
|
Note: The environment variable SMESH_MeshersList contains the list of plugins names,
|
|
|
|
separated by colon (":") symbol, e.g.:
|
|
|
|
|
|
|
|
setenv SMESH_MeshersList StdMeshers:NETGENPlugin
|
|
|
|
|
|
|
|
Please, pay attention that StdMeshers should also be included into this environment variable,
|
|
|
|
if you want to use standard hypotheses/algorithms, provided with SMESH module.
|
|
|
|
|
|
|
|
The SALOME automatically locates XML files, searching them in the following directories:
|
|
|
|
|
2006-06-27 13:48:37 +06:00
|
|
|
${<PLUGINNAME>_ROOT_DIR}/share/salome/resources/<plugin>
|
2004-06-18 14:34:31 +06:00
|
|
|
${SALOME_<PluginName>Resources}
|
|
|
|
${HOME}/.salome/resources
|
2006-06-27 13:48:37 +06:00
|
|
|
${KERNEL_ROOT_DIR}/share/salome/resources/kernel
|
2004-06-18 14:34:31 +06:00
|
|
|
|
|
|
|
where <PluginName> is a name of each mesher plugin package
|
|
|
|
|
|
|
|
3. Build server plugin library <libMyServerLib.so>.
|
|
|
|
|
|
|
|
3.1. Define interface to your hypotheses and algorithms.
|
|
|
|
|
|
|
|
Example: SMESH_SRC/idl/SMESH_BasicHypothesis.idl
|
|
|
|
NETGENPLUGIN_SRC/src/NETGENPlugin_Algorithm.idl
|
|
|
|
|
|
|
|
3.2. Implement functionality of your hypotheses and algorithms.
|
|
|
|
Inherit corresponding classes from SMESH.
|
|
|
|
|
|
|
|
Example: SMESH_SRC/src/StdMeshers/StdMeshers_*
|
|
|
|
NETGENPLUGIN_SRC/src/NETGENPlugin_NETGEN_3D
|
|
|
|
|
|
|
|
3.3. Implement interface to your hypotheses and algorithms.
|
|
|
|
Inherit corresponding classes from SMESH_I.
|
|
|
|
|
|
|
|
Example: SMESH_SRC/src/StdMeshers_I/SMESH_*_i
|
|
|
|
NETGENPLUGIN_SRC/src/NETGENPlugin_NETGEN_3D_i
|
|
|
|
|
|
|
|
3.4. Implement being exported method.
|
|
|
|
|
|
|
|
GenericHypothesisCreator_i* GetHypothesisCreator (const char* aHypType)
|
|
|
|
|
|
|
|
<aHypType> is a value of <type> attribute in the XML-description file
|
|
|
|
|
|
|
|
Example: SMESH_SRC/src/StdMeshers_I/StdMeshers_i.cxx
|
|
|
|
NETGENPLUGIN_SRC/src/NETGENPlugin_i.cxx
|
|
|
|
|
|
|
|
4. Build client (GUI) plugin library <libMyClientLib.so>.
|
|
|
|
This step is required only if your hypotheses/algorithms need specific GUI for their construction.
|
|
|
|
|
|
|
|
4.1. Implement the required GUI (e.g. construction dialog boxes).
|
|
|
|
|
|
|
|
Example: SMESH_SRC/src/StdMeshersGUI/StdMeshersGUI_*Dlg
|
|
|
|
|
|
|
|
Note: all data from XML-description files is accessible in your GUI via HypothesisData class
|
|
|
|
(mySMESHGUI->GetHypothesisData (aHypType),
|
|
|
|
see SMESHGUI_Hypotheses.h for HypothesisData definition)
|
|
|
|
|
|
|
|
4.2. Provide icons and messages for your GUI.
|
|
|
|
|
|
|
|
4.2.1. Implement resource files
|
|
|
|
MyResourceKey_icons.po and MyResourceKey_msg_en.po
|
|
|
|
|
|
|
|
Example: SMESH_SRC/src/StdMeshersGUI/StdMeshers_*.po
|
|
|
|
NETGENPLUGIN_SRC/src/NETGENPlugin_icons.po
|
|
|
|
|
|
|
|
Note: ICON_SMESH_TREE_HYPO_MyHypType1 is ID of icon for Object Browser
|
|
|
|
for hypothesis with type="MyHypType1".
|
|
|
|
|
|
|
|
ICON_SMESH_TREE_ALGO_MyAlgType1 is ID of icon for Object Browser
|
|
|
|
for algorithm with type="MyAlgType1".
|
|
|
|
|
|
|
|
See paragraph 2 for definition of MyResourceKey, MyHypType1, MyAlgType1.
|
|
|
|
|
|
|
|
4.2.2. Define environment variable SALOME_<MyResourceKey>Resources to point to the
|
|
|
|
directory where resources are situated.
|
|
|
|
|
2006-06-27 13:48:37 +06:00
|
|
|
Example: setenv SALOME_StdMeshersResources ${SMESH_ROOT_DIR}/share/salome/resources/smesh
|
2004-06-18 14:34:31 +06:00
|
|
|
|
|
|
|
4.3. Implement your Hypothesis Creator and being exported method
|
|
|
|
|
|
|
|
SMESHGUI_GenericHypothesisCreator* GetHypothesisCreator
|
|
|
|
(QString aHypType, QString aServerLibName, SMESHGUI* aSMESHGUI)
|
|
|
|
|
|
|
|
<aHypType> is to pass a value of <type> attribute in XML-description file;
|
|
|
|
<aServerLibName> is to pass a value of <server-lib> attribute in XML-description file.
|
|
|
|
|
|
|
|
Example: SMESH_SRC/src/StdMeshersGUI/StdMeshersGUI.cxx
|
|
|
|
|
|
|
|
5. If your hypotheses/algorithms do not need specific GUI,
|
|
|
|
but you want to provide icons for object browser, see 4.2 paragrath
|
|
|
|
|
|
|
|
6. Setup your SALOME environment.
|
|
|
|
|
|
|
|
6.1. Add your plugin to the LD_LIBRARY_PATH, PYTHONPATH (and maybe PATH) environment variables, e.g.:
|
|
|
|
|
|
|
|
setenv PATH <path-to-my-plugin>/bin/salome:${PATH}
|
|
|
|
setenv LD_LIBRARY_PATH <path-to-my-plugin>/lib/salome:${LD_LIBRARY_PATH}
|
|
|
|
setenv PYTHONPATH <path-to-my-plugin>/lib/python2.2/site-packages/salome:${PYTHONPATH}
|
|
|
|
|
|
|
|
6.2. Set mesher plugin resources environment variable (see 4.2.2 paragraph)
|
|
|
|
|
|
|
|
Note: If you use runSalome.py script from KERNEL package to launch SALOME, you may not to set
|
|
|
|
environment variables, because this script sets them itself. All what you should do is
|
|
|
|
to add <plugin> section to your ${HOME}/.salome/salome.launch file for SMESH module section:
|
|
|
|
|
|
|
|
...
|
|
|
|
<modules-list>
|
|
|
|
...
|
|
|
|
<module name="SMESH">
|
|
|
|
<plugin name="MyMesher"/>
|
|
|
|
</module>
|
|
|
|
...
|
|
|
|
</modules-list>
|
2007-02-07 16:58:38 +05:00
|
|
|
...
|