DCQ : Merge with Ecole_Ete_a6.
36
ChangeLog
@ -1,43 +1,9 @@
|
|||||||
###############################################################################
|
###############################################################################
|
||||||
#This is the SMESH change log. Do not modify because it is automatically
|
#This is the SMESH change log. Do not modify because it is automatically
|
||||||
#created with :
|
#created with :
|
||||||
#cvs2cl.pl --accum -l "-b" -U users.cvs2cl --header header.cvs2cl -T -b --utc
|
#cvs2cl.pl -l "-b" -U users.cvs2cl --header header.cvs2cl -T -b --utc
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
2004-03-23 13:25 tag V1_5_0
|
|
||||||
|
|
||||||
2004-03-23 13:20 Jerome Robert <jerome.robert@eads.net>
|
|
||||||
|
|
||||||
* INSTALL, bin/VERSION: Version 1.5.0.
|
|
||||||
|
|
||||||
2004-03-23 09:53 Jerome Robert <jerome.robert@eads.net>
|
|
||||||
|
|
||||||
* src/SMESHGUI/SMESHGUI.cxx: Add a MEDFILE attribut for selection
|
|
||||||
in Efficas. Patch submited by P. Rascle on 2004-03-22.
|
|
||||||
* src/SMDS/SMDS_Position.cxx: Fix bug SMESH5512 (Crash on DEBIAN
|
|
||||||
woody, V1_4_0b).
|
|
||||||
|
|
||||||
2004-03-16 12:51 Jerome Robert <jerome.robert@eads.net>
|
|
||||||
|
|
||||||
* src/SMESHGUI/SMESHGUI_Swig.cxx: Fix bug SMESH5451: SMESH_mechanic
|
|
||||||
script aborts.
|
|
||||||
* doc/html/SMESHTutorial_1/: ControlFeature.png, ImportResult.png,
|
|
||||||
MeshInit.png, MeshResult.png, MeshResult2.png, SMESHOverview.png,
|
|
||||||
SMESHTutorial_1.html, SelectAlgorithms.png, SetColor.png,
|
|
||||||
SubMeshContruction.png, SubShapesSelection.png: Add a small
|
|
||||||
tutorial.
|
|
||||||
|
|
||||||
2004-03-15 18:42 Jerome Robert <jerome.robert@eads.net>
|
|
||||||
|
|
||||||
* Merge br_enable_import_mesh. Enable import mesh and save/load SMESH study.
|
|
||||||
|
|
||||||
2004-02-02 16:43 Jerome Robert <jerome.robert@eads.net>
|
|
||||||
|
|
||||||
* src/SMDS/SMDS_Mesh.cxx: Fix a bug (crash when adding an
|
|
||||||
hexahedron from ids).
|
|
||||||
|
|
||||||
2004-01-30 15:42 tag V1_4_0b
|
|
||||||
|
|
||||||
2004-01-30 13:18 Nicolas Rejneri <nicolas.rejneri@opencascade.com>
|
2004-01-30 13:18 Nicolas Rejneri <nicolas.rejneri@opencascade.com>
|
||||||
|
|
||||||
* doc/html/INPUT/: doxyfile, sources/static/tree.js: NRI : 1.4.0
|
* doc/html/INPUT/: doxyfile, sources/static/tree.js: NRI : 1.4.0
|
||||||
|
8
INSTALL
@ -1,6 +1,6 @@
|
|||||||
This is SMESH V1_5_0
|
This is SMESH V2.0.0
|
||||||
|
|
||||||
Compatible with :
|
Compatible with :
|
||||||
GEOM V1_4_0
|
GEOM V2_0_0
|
||||||
KERNEL V1_4_0
|
KERNEL V2_0_0
|
||||||
MED V1_4_0
|
MED V2_0_0
|
||||||
|
17
Makefile.in
@ -14,7 +14,7 @@ VPATH=.:@srcdir@:@top_srcdir@/bin:@top_srcdir@/resources:./bin:@top_srcdir@/idl
|
|||||||
|
|
||||||
@COMMENCE@
|
@COMMENCE@
|
||||||
|
|
||||||
SUBDIRS = idl src
|
SUBDIRS = idl src doc
|
||||||
|
|
||||||
RESOURCES_FILES = \
|
RESOURCES_FILES = \
|
||||||
delete.png \
|
delete.png \
|
||||||
@ -40,6 +40,8 @@ mesh_hypo_volume.png \
|
|||||||
mesh_info.png \
|
mesh_info.png \
|
||||||
mesh_init.png \
|
mesh_init.png \
|
||||||
mesh_length.png \
|
mesh_length.png \
|
||||||
|
mesh_free_edges.png \
|
||||||
|
mesh_multi_edges.png \
|
||||||
mesh_line_n.png \
|
mesh_line_n.png \
|
||||||
mesh_line.png \
|
mesh_line.png \
|
||||||
mesh_move_node.png \
|
mesh_move_node.png \
|
||||||
@ -71,6 +73,7 @@ mesh_tree_hypo.png \
|
|||||||
mesh_tree_hypo_segment.png \
|
mesh_tree_hypo_segment.png \
|
||||||
mesh_tree_hypo_volume.png \
|
mesh_tree_hypo_volume.png \
|
||||||
mesh_tree_mesh.png \
|
mesh_tree_mesh.png \
|
||||||
|
mesh_tree_importedmesh.png \
|
||||||
mesh_tree_mesh_warn.png \
|
mesh_tree_mesh_warn.png \
|
||||||
mesh_triangle_n.png \
|
mesh_triangle_n.png \
|
||||||
mesh_triangle.png \
|
mesh_triangle.png \
|
||||||
@ -78,10 +81,16 @@ mesh_update.png \
|
|||||||
mesh_vertex_n.png \
|
mesh_vertex_n.png \
|
||||||
mesh_vertex.png \
|
mesh_vertex.png \
|
||||||
mesh_wireframe.png \
|
mesh_wireframe.png \
|
||||||
|
mesh_points.png \
|
||||||
mesh_wrap.png \
|
mesh_wrap.png \
|
||||||
|
mesh_tree_group.png \
|
||||||
|
mesh_edit_group.png \
|
||||||
|
mesh_make_group.png \
|
||||||
ModuleMesh.png \
|
ModuleMesh.png \
|
||||||
select1.png \
|
select1.png \
|
||||||
SMESH_en.xml \
|
SMESH_en.xml \
|
||||||
|
SMESH.config \
|
||||||
|
StdMeshers.xml \
|
||||||
SMESHCatalog.xml \
|
SMESHCatalog.xml \
|
||||||
flight_solid.brep
|
flight_solid.brep
|
||||||
|
|
||||||
@ -104,10 +113,10 @@ include/salome/SALOMEconfig.h: salome_adm/unix/SALOMEconfig.ref
|
|||||||
# test if SALOMEconfig.h has changed (contents)
|
# test if SALOMEconfig.h has changed (contents)
|
||||||
salome_adm/unix/SALOMEconfig.ref: salome_adm/unix/SALOMEconfig.h
|
salome_adm/unix/SALOMEconfig.ref: salome_adm/unix/SALOMEconfig.h
|
||||||
@if ! [ -a $@ ]; then \
|
@if ! [ -a $@ ]; then \
|
||||||
cp -p $< $@; \
|
cp -p -f $< $@; \
|
||||||
fi; \
|
fi; \
|
||||||
if ! cmp $< $@; then \
|
if ! cmp $< $@; then \
|
||||||
cp -p $< $@; \
|
cp -p -f $< $@; \
|
||||||
fi; \
|
fi; \
|
||||||
|
|
||||||
include/salome/sstream: salome_adm/unix/sstream
|
include/salome/sstream: salome_adm/unix/sstream
|
||||||
@ -131,7 +140,7 @@ install-include: $(include_list)
|
|||||||
$(INSTALL) -d $(includedir)
|
$(INSTALL) -d $(includedir)
|
||||||
@for f in X $(include_list); do \
|
@for f in X $(include_list); do \
|
||||||
if test $$f != X; then \
|
if test $$f != X; then \
|
||||||
($(INSTALL_DATA) $$f $(includedir)/. || exit 1); \
|
($(INSTALL_DATA) -p $$f $(includedir)/. || exit 1); \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ if test -f ${GEOM_DIR}/bin/salome/libGEOM_Swig.py ; then
|
|||||||
else
|
else
|
||||||
AC_MSG_WARN("Cannot find compiled Geom module distribution")
|
AC_MSG_WARN("Cannot find compiled Geom module distribution")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_MSG_RESULT(for Geom: $Geom_ok)
|
AC_MSG_RESULT(for Geom: $Geom_ok)
|
||||||
|
|
||||||
])dnl
|
])dnl
|
||||||
|
@ -45,7 +45,7 @@ if test -f ${MED_DIR}/bin/salome/libMEDMEM_Swig.py ; then
|
|||||||
AC_SUBST(MED_ROOT_DIR)
|
AC_SUBST(MED_ROOT_DIR)
|
||||||
|
|
||||||
else
|
else
|
||||||
AC_MSG_WARN("Cannot find compiled Med module distribution")
|
AC_MSG_WARN("Cannot find Med module sources")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_MSG_RESULT(for Med: $Med_ok)
|
AC_MSG_RESULT(for Med: $Med_ok)
|
||||||
|
@ -34,6 +34,10 @@ CXX = @CXX@
|
|||||||
CXXFLAGS = @CXXFLAGS@
|
CXXFLAGS = @CXXFLAGS@
|
||||||
CXX_DEPEND_FLAG = @CXX_DEPEND_FLAG@
|
CXX_DEPEND_FLAG = @CXX_DEPEND_FLAG@
|
||||||
|
|
||||||
|
# BOOST Library
|
||||||
|
|
||||||
|
BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
|
||||||
|
|
||||||
# JAVA
|
# JAVA
|
||||||
|
|
||||||
JAVA_INCLUDES = @JAVA_INCLUDES@
|
JAVA_INCLUDES = @JAVA_INCLUDES@
|
||||||
@ -127,7 +131,8 @@ OMNIORB_CXXFLAGS = @OMNIORB_CXXFLAGS@
|
|||||||
|
|
||||||
OMNIORB_IDL = @OMNIORB_IDL@
|
OMNIORB_IDL = @OMNIORB_IDL@
|
||||||
OMNIORB_IDLCXXFLAGS = @OMNIORB_IDLCXXFLAGS@
|
OMNIORB_IDLCXXFLAGS = @OMNIORB_IDLCXXFLAGS@
|
||||||
OMNIORB_IDLPYFLAGS = @OMNIORB_IDLPYFLAGS@ -I$(top_srcdir)/idl -I$(top_builddir)/idl -I$(KERNEL_ROOT_DIR)/idl/salome -I$(GEOM_ROOT_DIR)/idl/salome -I$(MED_ROOT_DIR)/idl/salome
|
OMNIORB_IDLPYFLAGS = @OMNIORB_IDLPYFLAGS@ -I$(top_srcdir)/idl -I$(top_builddir)/idl/salome \
|
||||||
|
-I$(KERNEL_ROOT_DIR)/idl/salome -I$(GEOM_ROOT_DIR)/idl/salome -I$(MED_ROOT_DIR)/idl/salome
|
||||||
|
|
||||||
OMNIORB_IDL_CLN_H = @OMNIORB_IDL_CLN_H@
|
OMNIORB_IDL_CLN_H = @OMNIORB_IDL_CLN_H@
|
||||||
OMNIORB_IDL_CLN_CXX = @OMNIORB_IDL_CLN_CXX@
|
OMNIORB_IDL_CLN_CXX = @OMNIORB_IDL_CLN_CXX@
|
||||||
@ -144,7 +149,8 @@ CORBA_INCLUDES = @CORBA_INCLUDES@
|
|||||||
CORBA_LIBS = @CORBA_LIBS@
|
CORBA_LIBS = @CORBA_LIBS@
|
||||||
CORBA_CXXFLAGS = @CORBA_CXXFLAGS@
|
CORBA_CXXFLAGS = @CORBA_CXXFLAGS@
|
||||||
|
|
||||||
IDLCXXFLAGS = -bcxx @IDLCXXFLAGS@ -I$(top_srcdir)/idl -I$(top_builddir)/idl -I$(KERNEL_ROOT_DIR)/idl/salome -I$(GEOM_ROOT_DIR)/idl/salome -I$(MED_ROOT_DIR)/idl/salome
|
IDLCXXFLAGS = -bcxx @IDLCXXFLAGS@ -I$(top_srcdir)/idl -I$(top_builddir)/idl/salome \
|
||||||
|
-I$(KERNEL_ROOT_DIR)/idl/salome -I$(GEOM_ROOT_DIR)/idl/salome -I$(MED_ROOT_DIR)/idl/salome
|
||||||
IDLPYFLAGS = @IDLPYFLAGS@
|
IDLPYFLAGS = @IDLPYFLAGS@
|
||||||
|
|
||||||
IDL = @IDL@
|
IDL = @IDL@
|
||||||
@ -195,13 +201,13 @@ datadir=@datadir@/salome
|
|||||||
idldir=$(prefix)/idl/salome
|
idldir=$(prefix)/idl/salome
|
||||||
sharedpydir=@libdir@/python$(PYTHON_VERSION)/site-packages/salome/shared_modules
|
sharedpydir=@libdir@/python$(PYTHON_VERSION)/site-packages/salome/shared_modules
|
||||||
|
|
||||||
docdir=$(datadir)/doc
|
docdir=${prefix}/doc/salome
|
||||||
|
|
||||||
#
|
#
|
||||||
# begin of package rules
|
# begin of package rules
|
||||||
#
|
#
|
||||||
|
|
||||||
.PHONY: all lib bin inc resources tests install uninstall dep depend depend_idl cleandep mostlyclean clean distclean
|
.PHONY: all lib bin inc resources docs tests install uninstall dep depend depend_idl cleandep mostlyclean clean distclean
|
||||||
|
|
||||||
.SUFFIXES: .cxx .cc .c .f .o .lo .idl .py .i .ui .po .qm
|
.SUFFIXES: .cxx .cc .c .f .o .lo .idl .py .i .ui .po .qm
|
||||||
|
|
||||||
@ -243,11 +249,7 @@ ac_cxx_namespaces.m4 check_omniorb.m4 pyembed.m4 \
|
|||||||
ac_cxx_partial_specialization.m4 check_opengl.m4 python.m4 \
|
ac_cxx_partial_specialization.m4 check_opengl.m4 python.m4 \
|
||||||
ac_cxx_typename.m4 check_pthreads.m4 check_cas.m4 \
|
ac_cxx_typename.m4 check_pthreads.m4 check_cas.m4 \
|
||||||
ac_cc_warnings.m4 check_qt.m4 check_med2.m4 \
|
ac_cc_warnings.m4 check_qt.m4 check_med2.m4 \
|
||||||
check_swig.m4
|
check_swig.m4 check_boost.m4
|
||||||
|
|
||||||
#ifeq (@WITHNETGEN@,yes)
|
|
||||||
# ACLOCAL_SRC += check_Netgen.m4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
$(top_srcdir)/aclocal.m4: $(ACLOCAL_SRC:%=@KERNEL_ROOT_DIR@/salome_adm/unix/config_files/%)
|
$(top_srcdir)/aclocal.m4: $(ACLOCAL_SRC:%=@KERNEL_ROOT_DIR@/salome_adm/unix/config_files/%)
|
||||||
cd $(top_srcdir) ; aclocal --acdir=adm_local/unix/config_files -I @KERNEL_ROOT_DIR@/salome_adm/unix/config_files
|
cd $(top_srcdir) ; aclocal --acdir=adm_local/unix/config_files -I @KERNEL_ROOT_DIR@/salome_adm/unix/config_files
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
THIS IS SALOME - SMESH VERSION: 1.5.0
|
THIS IS SALOME - SMESH VERSION: 2.0.0
|
||||||
|
|
||||||
|
@ -113,6 +113,14 @@ dnl
|
|||||||
|
|
||||||
AC_CXX_HAVE_SSTREAM
|
AC_CXX_HAVE_SSTREAM
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo ---------------------------------------------
|
||||||
|
echo BOOST Library
|
||||||
|
echo ---------------------------------------------
|
||||||
|
echo
|
||||||
|
|
||||||
|
CHECK_BOOST
|
||||||
|
|
||||||
dnl
|
dnl
|
||||||
dnl ---------------------------------------------
|
dnl ---------------------------------------------
|
||||||
dnl testing MPICH
|
dnl testing MPICH
|
||||||
@ -273,14 +281,6 @@ echo
|
|||||||
|
|
||||||
CHECK_MED
|
CHECK_MED
|
||||||
|
|
||||||
echo
|
|
||||||
echo ---------------------------------------------
|
|
||||||
echo Testing Netgen
|
|
||||||
echo ---------------------------------------------
|
|
||||||
echo
|
|
||||||
|
|
||||||
CHECK_NETGEN
|
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo ---------------------------------------------
|
echo ---------------------------------------------
|
||||||
echo Summary
|
echo Summary
|
||||||
@ -288,7 +288,7 @@ echo ---------------------------------------------
|
|||||||
echo
|
echo
|
||||||
|
|
||||||
echo Configure
|
echo Configure
|
||||||
variables="cc_ok lex_yacc_ok python_ok swig_ok threads_ok OpenGL_ok qt_ok vtk_ok hdf5_ok med2_ok omniORB_ok occ_ok doxygen_ok graphviz_ok Kernel_ok Geom_ok Med_ok Netgen_ok"
|
variables="cc_ok boost_ok lex_yacc_ok python_ok swig_ok threads_ok OpenGL_ok qt_ok vtk_ok hdf5_ok med2_ok omniORB_ok occ_ok doxygen_ok graphviz_ok Kernel_ok Geom_ok Med_ok"
|
||||||
|
|
||||||
for var in $variables
|
for var in $variables
|
||||||
do
|
do
|
||||||
@ -318,7 +318,7 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# make other build directories
|
# make other build directories
|
||||||
for rep in salome_adm adm_local doc bin/salome include/salome lib/salome share/salome/resources share/salome/doc idl
|
for rep in salome_adm adm_local doc bin/salome include/salome lib/salome share/salome/resources idl
|
||||||
do
|
do
|
||||||
# if test ! -d $rep ; then
|
# if test ! -d $rep ; then
|
||||||
# eval mkdir $rep
|
# eval mkdir $rep
|
||||||
@ -351,14 +351,15 @@ dnl copy shells and utilities contained in the bin directory
|
|||||||
dnl excluding .in files (treated in AC-OUTPUT below) and CVS
|
dnl excluding .in files (treated in AC-OUTPUT below) and CVS
|
||||||
dnl directory
|
dnl directory
|
||||||
|
|
||||||
cd bin
|
mkdir -p bin/salome
|
||||||
|
cd bin/salome
|
||||||
for i in $ROOT_SRCDIR/bin/*
|
for i in $ROOT_SRCDIR/bin/*
|
||||||
do
|
do
|
||||||
local_bin=`echo $i | sed -e "s,$ROOT_SRCDIR,.,"`
|
local_bin=`echo $i | sed -e "s,$ROOT_SRCDIR,.,"`
|
||||||
case "$local_bin" in
|
case "$local_bin" in
|
||||||
*.in | *~) ;;
|
*.in | *~) ;;
|
||||||
./bin/CVS) ;;
|
./bin/CVS | ./bin/salome) ;;
|
||||||
*) ln -fs $i; echo $local_bin ;;
|
*) /usr/bin/install -C $i .; echo $local_bin ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
cd $ROOT_BUILDDIR
|
cd $ROOT_BUILDDIR
|
||||||
|
18
cvs-tags
@ -33,21 +33,3 @@ V1_3_1: 2004-01-05 14:28
|
|||||||
|
|
||||||
merge_1_2_d: 2003-01-20 11:25
|
merge_1_2_d: 2003-01-20 11:25
|
||||||
Branch to merge Release 1.2d of Salome Pro.
|
Branch to merge Release 1.2d of Salome Pro.
|
||||||
|
|
||||||
V1_4_0b: 2004-01-30 15:42
|
|
||||||
Pre-release of 1.4.0. Include the merge of the branch merge_1_2_d.
|
|
||||||
|
|
||||||
V1_4_0_branch: 2004-01-30 15:42
|
|
||||||
Maintenance branch for 1.4.0. This tag is equal to V1_4_0b.
|
|
||||||
|
|
||||||
br_enable_import_mesh: 2004-02-16 10:00
|
|
||||||
Branch on head after V1_4_0b. Development branch enable import mesh and save/load SMESH study. Initiated by Jerome Robert.
|
|
||||||
|
|
||||||
br_geomclient_colocal: 2004-02-23 10:00
|
|
||||||
Branch on br_enable_import_mesh. Development branch for colocalization. Initiated by Francis KLOSS.
|
|
||||||
|
|
||||||
V1_4_0: 2004-03-23 11:40
|
|
||||||
Release 1.4.0. Tag on V1_4_0_branch branch.
|
|
||||||
|
|
||||||
V1_5_0: 2004-03-23 13:25
|
|
||||||
Release 1.5.0. Tag on head. Include mesh import/export, save/load study, tutorial, bug corrected in V1_4_0.
|
|
||||||
|
@ -11,9 +11,11 @@ top_builddir=..
|
|||||||
srcdir=@srcdir@
|
srcdir=@srcdir@
|
||||||
VPATH=.:@srcdir@
|
VPATH=.:@srcdir@
|
||||||
|
|
||||||
SUBDIRS=html
|
SUBDIRS= salome
|
||||||
|
|
||||||
doc:
|
@COMMENCE@
|
||||||
|
|
||||||
|
docs:
|
||||||
@@SETX@; for d in $(SUBDIRS); do \
|
@@SETX@; for d in $(SUBDIRS); do \
|
||||||
(cd $$d && $(MAKE) $@) || exit 1; \
|
(cd $$d && $(MAKE) $@) || exit 1; \
|
||||||
done
|
done
|
||||||
@ -31,3 +33,8 @@ install:
|
|||||||
@@SETX@; for d in $(SUBDIRS); do \
|
@@SETX@; for d in $(SUBDIRS); do \
|
||||||
(cd $$d && $(MAKE) $@) || exit 1; \
|
(cd $$d && $(MAKE) $@) || exit 1; \
|
||||||
done
|
done
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
@@SETX@; for d in $(SUBDIRS); do \
|
||||||
|
(cd $$d && $(MAKE) $@) || exit 1; \
|
||||||
|
done
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# General configuration options
|
# General configuration options
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
PROJECT_NAME = "SALOME - SMESH - v.1.4.0"
|
PROJECT_NAME = "SALOME - SMESH - v.1.3.0"
|
||||||
PROJECT_NUMBER = id#1.1
|
PROJECT_NUMBER = id#1.1
|
||||||
OUTPUT_DIRECTORY = ../
|
OUTPUT_DIRECTORY = ../
|
||||||
OUTPUT_LANGUAGE = English
|
OUTPUT_LANGUAGE = English
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
foldersTree = gFld("<b>SALOME v.1.4.0 </b>", "", "")
|
foldersTree = gFld("<b>SALOME v.1.3.0 </b>", "", "")
|
||||||
insDoc(foldersTree, gLnk("Main Page", "", "main.html"))
|
insDoc(foldersTree, gLnk("Main Page", "", "main.html"))
|
||||||
|
|
||||||
aux1 = insFld(foldersTree, gFld("TUI Reference Guide", ""))
|
aux1 = insFld(foldersTree, gFld("TUI Reference Guide", ""))
|
||||||
|
BIN
doc/salome/AddNetgenInSalome2.pdf
Normal file
13935
doc/salome/AddNetgenInSalome2.ps
Normal file
BIN
doc/salome/AddNetgenInSalome2.sxw
Normal file
44
doc/salome/Makefile.in
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
|
||||||
|
# -* Makefile *-
|
||||||
|
#
|
||||||
|
# Author : Patrick GOLDBRONN (CEA)
|
||||||
|
# Date : 30/11/2001
|
||||||
|
# $Header$
|
||||||
|
#
|
||||||
|
# source path
|
||||||
|
top_srcdir=@top_srcdir@
|
||||||
|
top_builddir=../..
|
||||||
|
srcdir=@srcdir@
|
||||||
|
VPATH=.:@srcdir@
|
||||||
|
|
||||||
|
SUBDIRS= tui gui
|
||||||
|
|
||||||
|
@COMMENCE@
|
||||||
|
|
||||||
|
docs:
|
||||||
|
@@SETX@; for d in $(SUBDIRS); do \
|
||||||
|
(cd $$d && $(MAKE) $@) || exit 1; \
|
||||||
|
done; \
|
||||||
|
cp -f $(srcdir)/SMESH_index.html SMESH_index.html
|
||||||
|
|
||||||
|
clean:
|
||||||
|
@@SETX@; for d in $(SUBDIRS); do \
|
||||||
|
(cd $$d && $(MAKE) $@) || exit 1; \
|
||||||
|
done
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
@@SETX@; for d in $(SUBDIRS); do \
|
||||||
|
(cd $$d && $(MAKE) $@) || exit 1; \
|
||||||
|
done
|
||||||
|
|
||||||
|
install:
|
||||||
|
$(MAKE) docs
|
||||||
|
(cd tui && $(MAKE) install);
|
||||||
|
(cd gui && $(MAKE) install);
|
||||||
|
cp -f SMESH_index.html $(docdir)
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
@@SETX@; for d in $(SUBDIRS); do \
|
||||||
|
(cd $$d && $(MAKE) $@) || exit 1; \
|
||||||
|
done; \
|
||||||
|
rm -fr $(docdir)/SMESH_index.html
|
188
doc/salome/PluginMeshers.txt
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
#######################################################################################
|
||||||
|
# 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:
|
||||||
|
|
||||||
|
${<PLUGINNAME>_ROOT_DIR}/share/salome/resources
|
||||||
|
${SALOME_<PluginName>Resources}
|
||||||
|
${HOME}/.salome/resources
|
||||||
|
${KERNEL_ROOT_DIR}/share/salome/resources
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
Example: setenv SALOME_StdMeshersResources ${SMESH_ROOT_DIR}/share/salome/resources
|
||||||
|
|
||||||
|
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>
|
||||||
|
...
|
95
doc/salome/SMESH_index.html
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta http-equiv="Content-Type"
|
||||||
|
content="text/html; charset=iso-8859-1">
|
||||||
|
|
||||||
|
<meta name="GENERATOR"
|
||||||
|
content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
|
||||||
|
<title>Mesh Module Documentation</title>
|
||||||
|
</head>
|
||||||
|
<body bgcolor="#cccccc" text="#000000" link="#0000ee" alink="#0000ee"
|
||||||
|
vlink="#551a8b">
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<center>
|
||||||
|
<center>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
<table width="96%" align="center">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td><a href="http://www.opencascade.com"><img
|
||||||
|
src="tui/SMESH/sources/logocorp.gif" border="0" height="46" width="122">
|
||||||
|
</a></td>
|
||||||
|
<td>
|
||||||
|
|
||||||
|
<div align="right"><a href="http://www.opencascade.org/SALOME/"><img
|
||||||
|
src="tui/SMESH/sources/application.gif" border="0" height="46" width="108">
|
||||||
|
</a></div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<center>
|
||||||
|
<hr width="100%" size="2">
|
||||||
|
<h1>Mesh MODULE Documentation</h1>
|
||||||
|
</center>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table width="96%">
|
||||||
|
<tbody>
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<p> <img src="tui/SMESH/sources/Application-About.png"
|
||||||
|
alt="Application-About.png" width="30%" height="20%">
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<table width="96%">
|
||||||
|
<tbody>
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
<address> </address>
|
||||||
|
|
||||||
|
<center><big><a href="gui/SMESH/smesh.html">GUI Documentation</a></big></center>
|
||||||
|
|
||||||
|
<address> </address>
|
||||||
|
|
||||||
|
<center></center>
|
||||||
|
|
||||||
|
<center><br>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
<address> </address>
|
||||||
|
|
||||||
|
<center><big><a href="tui/SMESH/index.html">TUI Documentation</a></big></center>
|
||||||
|
|
||||||
|
<address> </address>
|
||||||
|
|
||||||
|
<center></center>
|
||||||
|
|
||||||
|
<center><br>
|
||||||
|
<br>
|
||||||
|
</center>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
</body>
|
||||||
|
</html>
|
33
doc/salome/gui/Makefile.in
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# Copyright (C) 2003 CEA/DEN, EDF R&D
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# File : Makefile.in
|
||||||
|
# Author : Vasily Rusyaev (Open Cascade NN)
|
||||||
|
# Module : doc
|
||||||
|
# $Header:
|
||||||
|
|
||||||
|
top_srcdir=@top_srcdir@
|
||||||
|
top_builddir=../../..
|
||||||
|
srcdir=@srcdir@
|
||||||
|
VPATH=.:@srcdir@
|
||||||
|
|
||||||
|
@COMMENCE@
|
||||||
|
|
||||||
|
docs:
|
||||||
|
cp -fr $(srcdir)/SMESH ./
|
||||||
|
-find $(PWD) -name CVS -exec rm -rf {} \;
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -fr `ls | grep -v "Makefile"`
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
rm -fr SMESH
|
||||||
|
|
||||||
|
install:
|
||||||
|
mkdir -p $(docdir)/gui
|
||||||
|
cp -rf SMESH $(docdir)/gui
|
||||||
|
-find $(PWD) -name CVS -exec rm -rf {} \;
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
rm -rf $(docdir)/gui/SMESH
|
@ -6,7 +6,7 @@
|
|||||||
top_srcdir=@top_srcdir@
|
top_srcdir=@top_srcdir@
|
||||||
top_builddir=..
|
top_builddir=..
|
||||||
srcdir=@srcdir@
|
srcdir=@srcdir@
|
||||||
VPATH=.:$(srcdir):${KERNEL_ROOT_DIR}/idl/salome:${GEOM_ROOT_DIR}/idl/salome:${MED_ROOT_DIR}/idl/salome
|
VPATH=.:${KERNEL_ROOT_DIR}/idl/salome:${GEOM_ROOT_DIR}/idl/salome:${MED_ROOT_DIR}/idl/salome
|
||||||
|
|
||||||
@COMMENCE@
|
@COMMENCE@
|
||||||
|
|
||||||
@ -14,16 +14,21 @@ IDL_FILES = \
|
|||||||
SMESH_Gen.idl \
|
SMESH_Gen.idl \
|
||||||
SMESH_Mesh.idl \
|
SMESH_Mesh.idl \
|
||||||
SMESH_Hypothesis.idl \
|
SMESH_Hypothesis.idl \
|
||||||
SMESH_BasicHypothesis.idl
|
SMESH_BasicHypothesis.idl \
|
||||||
|
SMESH_Filter.idl \
|
||||||
|
SMESH_Group.idl
|
||||||
|
|
||||||
PY_CLIENT_IDL = $(IDL_FILES)
|
PY_CLIENT_IDL = $(IDL_FILES)
|
||||||
|
|
||||||
# we copy all idl file in $(top_builddir)/idl
|
# we copy all idl file in $(top_builddir)/idl
|
||||||
inc: $(IDL_FILES:%=$(top_builddir)/idl/%)
|
inc: $(top_builddir)/idl/salome $(IDL_FILES:%=$(top_builddir)/idl/salome/%)
|
||||||
|
|
||||||
$(IDL_FILES:%=$(top_builddir)/idl/%):$(top_builddir)/idl/%:%
|
$(top_builddir)/idl/salome:
|
||||||
|
mkdir $@
|
||||||
|
|
||||||
|
$(IDL_FILES:%=$(top_builddir)/idl/salome/%):$(IDL_FILES:%=$(top_srcdir)/idl/%)
|
||||||
# $(CP) $< $@
|
# $(CP) $< $@
|
||||||
cp -f $< $@
|
cp -f $^ $(top_builddir)/idl/salome
|
||||||
|
|
||||||
|
|
||||||
lib: pyidl
|
lib: pyidl
|
||||||
@ -35,7 +40,7 @@ pyidl: $(PYTHON_BUILD_SITE) $(IDL_FILES:%.idl=$(PYTHON_BUILD_SITE)/%_idl.py)
|
|||||||
$(PYTHON_BUILD_SITE):
|
$(PYTHON_BUILD_SITE):
|
||||||
$(INSTALL) -d $@
|
$(INSTALL) -d $@
|
||||||
|
|
||||||
$(PYTHON_BUILD_SITE)/%_idl.py: %.idl
|
$(PYTHON_BUILD_SITE)/%_idl.py: $(top_builddir)/idl/salome/%.idl
|
||||||
$(OMNIORB_IDL) $(OMNIORB_IDLPYFLAGS) -C$(PYTHON_BUILD_SITE) $<
|
$(OMNIORB_IDL) $(OMNIORB_IDLPYFLAGS) -C$(PYTHON_BUILD_SITE) $<
|
||||||
|
|
||||||
|
|
||||||
@ -43,12 +48,12 @@ $(PYTHON_BUILD_SITE)/%_idl.py: %.idl
|
|||||||
install: install-pyidl install-idl
|
install: install-pyidl install-idl
|
||||||
|
|
||||||
# create directory $(idldir) and copy idl files into it
|
# create directory $(idldir) and copy idl files into it
|
||||||
install-idl: $(IDL_FILES)
|
install-idl: $(IDL_FILES:%=$(top_builddir)/idl/salome/%)
|
||||||
$(INSTALL) -d $(idldir)
|
$(INSTALL) -d $(idldir)
|
||||||
$(INSTALL_DATA) $^ $(idldir)
|
$(INSTALL_DATA) $^ $(idldir)
|
||||||
|
|
||||||
|
|
||||||
install-pyidl: $(IDL_FILES)
|
install-pyidl: $(IDL_FILES:%=$(top_builddir)/idl/salome/%)
|
||||||
$(INSTALL) -d $(PYTHON_SITE_INSTALL)
|
$(INSTALL) -d $(PYTHON_SITE_INSTALL)
|
||||||
@for file in $^ dummy; do \
|
@for file in $^ dummy; do \
|
||||||
if [ $$file != "dummy" ]; then \
|
if [ $$file != "dummy" ]; then \
|
||||||
@ -63,6 +68,6 @@ cleandep:
|
|||||||
|
|
||||||
distclean:
|
distclean:
|
||||||
-$(RM) *.py
|
-$(RM) *.py
|
||||||
-$(RM) $(IDL_FILES:%=$(top_builddir)/idl/%)
|
-$(RM) $(IDL_FILES:%=$(top_builddir)/idl/salome/%)
|
||||||
-$(RM) Makefile
|
-$(RM) Makefile
|
||||||
|
|
||||||
|
@ -30,67 +30,142 @@
|
|||||||
#include "SMESH_Hypothesis.idl"
|
#include "SMESH_Hypothesis.idl"
|
||||||
|
|
||||||
|
|
||||||
module SMESH
|
/*!
|
||||||
|
* StdMeshers: interfaces to standard hypotheses and algorithms
|
||||||
|
*/
|
||||||
|
module StdMeshers
|
||||||
{
|
{
|
||||||
interface SMESH_LocalLength : SMESH_Hypothesis
|
/*!
|
||||||
|
* StdMeshers_LocalLength: interface of "Average length" hypothesis
|
||||||
|
*/
|
||||||
|
interface StdMeshers_LocalLength : SMESH::SMESH_Hypothesis
|
||||||
{
|
{
|
||||||
|
/*!
|
||||||
|
* Sets <length> parameter value
|
||||||
|
*/
|
||||||
void SetLength(in double length)
|
void SetLength(in double length)
|
||||||
raises (SALOME::SALOME_Exception);
|
raises (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Returns <length> parameter value
|
||||||
|
*/
|
||||||
double GetLength();
|
double GetLength();
|
||||||
};
|
};
|
||||||
|
|
||||||
interface SMESH_NumberOfSegments : SMESH_Hypothesis
|
/*!
|
||||||
|
* StdMeshers_NumberOfSegments: interface of "Nb. Segments" hypothesis
|
||||||
|
*/
|
||||||
|
interface StdMeshers_NumberOfSegments : SMESH::SMESH_Hypothesis
|
||||||
{
|
{
|
||||||
|
/*!
|
||||||
|
* Sets <number of segments> parameter value
|
||||||
|
*/
|
||||||
void SetNumberOfSegments(in long segmentsNumber)
|
void SetNumberOfSegments(in long segmentsNumber)
|
||||||
raises (SALOME::SALOME_Exception);
|
raises (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Returns <number of segments> parameter value
|
||||||
|
*/
|
||||||
long GetNumberOfSegments();
|
long GetNumberOfSegments();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Sets <scale factor> parameter value
|
||||||
|
*/
|
||||||
void SetScaleFactor(in double scaleFactor)
|
void SetScaleFactor(in double scaleFactor)
|
||||||
raises (SALOME::SALOME_Exception);
|
raises (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Returns <scale factor> parameter value
|
||||||
|
*/
|
||||||
double GetScaleFactor();
|
double GetScaleFactor();
|
||||||
};
|
};
|
||||||
|
|
||||||
interface SMESH_MaxElementArea : SMESH_Hypothesis
|
/*!
|
||||||
|
* StdMeshers_MaxElementArea: interface of "Max. Triangle Area" hypothesis
|
||||||
|
*/
|
||||||
|
interface StdMeshers_MaxElementArea : SMESH::SMESH_Hypothesis
|
||||||
{
|
{
|
||||||
|
/*!
|
||||||
|
* Sets <maximum element area> parameter value
|
||||||
|
*/
|
||||||
void SetMaxElementArea(in double area)
|
void SetMaxElementArea(in double area)
|
||||||
raises (SALOME::SALOME_Exception);
|
raises (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Returns <maximum element area> parameter value
|
||||||
|
*/
|
||||||
double GetMaxElementArea();
|
double GetMaxElementArea();
|
||||||
};
|
};
|
||||||
|
|
||||||
interface SMESH_LengthFromEdges : SMESH_Hypothesis
|
/*!
|
||||||
|
* StdMeshers_LengthFromEdges: interface of "Length From Edges (2D Hyp. for Triangulator)" hypothesis
|
||||||
|
*/
|
||||||
|
interface StdMeshers_LengthFromEdges : SMESH::SMESH_Hypothesis
|
||||||
{
|
{
|
||||||
|
/*!
|
||||||
|
* Sets <mode> parameter value
|
||||||
|
*/
|
||||||
void SetMode(in long mode)
|
void SetMode(in long mode)
|
||||||
raises (SALOME::SALOME_Exception);
|
raises (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Returns <mode> parameter value
|
||||||
|
*/
|
||||||
long GetMode();
|
long GetMode();
|
||||||
};
|
};
|
||||||
|
|
||||||
interface SMESH_MaxElementVolume : SMESH_Hypothesis
|
/*!
|
||||||
|
* StdMeshers_MaxElementVolume: interface of "Max. Hexahedron or Tetrahedron Volume" hypothesis
|
||||||
|
*/
|
||||||
|
interface StdMeshers_MaxElementVolume : SMESH::SMESH_Hypothesis
|
||||||
{
|
{
|
||||||
|
/*!
|
||||||
|
* Sets <maximum element volume> parameter value
|
||||||
|
*/
|
||||||
void SetMaxElementVolume(in double volume)
|
void SetMaxElementVolume(in double volume)
|
||||||
raises (SALOME::SALOME_Exception);
|
raises (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Returns <maximum element volume> parameter value
|
||||||
|
*/
|
||||||
double GetMaxElementVolume();
|
double GetMaxElementVolume();
|
||||||
};
|
};
|
||||||
|
|
||||||
interface SMESH_Regular_1D : SMESH_1D_Algo
|
/*!
|
||||||
|
* StdMeshers_NotConformAllowed: interface of "Not Conform Mesh Allowed" hypothesis.
|
||||||
|
* Presence of this hypothesis permits to algorithm generation of not conform mesh.
|
||||||
|
*/
|
||||||
|
interface StdMeshers_NotConformAllowed : SMESH::SMESH_Hypothesis
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
interface SMESH_MEFISTO_2D : SMESH_2D_Algo
|
/*!
|
||||||
|
* StdMeshers_Regular_1D: interface of "Wire discretisation" algorithm
|
||||||
|
*/
|
||||||
|
interface StdMeshers_Regular_1D : SMESH::SMESH_1D_Algo
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
interface SMESH_Quadrangle_2D : SMESH_2D_Algo
|
/*!
|
||||||
|
* StdMeshers_MEFISTO_2D: interface of "Triangle (Mefisto)" algorithm
|
||||||
|
*/
|
||||||
|
interface StdMeshers_MEFISTO_2D : SMESH::SMESH_2D_Algo
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
interface SMESH_Hexa_3D : SMESH_3D_Algo
|
/*!
|
||||||
|
* StdMeshers_Quadrangle_2D: interface of "Quadrangle (Mapping)" algorithm
|
||||||
|
*/
|
||||||
|
interface StdMeshers_Quadrangle_2D : SMESH::SMESH_2D_Algo
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef HAVE_NETGEN
|
/*!
|
||||||
interface SMESH_NETGEN_3D : SMESH_3D_Algo
|
* StdMeshers_Hexa_3D: interface of "Hexahedron (i,j,k)" algorithm
|
||||||
|
*/
|
||||||
|
interface StdMeshers_Hexa_3D : SMESH::SMESH_3D_Algo
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
#endif
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
110
idl/SMESH_Filter.idl
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// File : SMESH_Filter.idl
|
||||||
|
// Author : Alexey Petrov, OCC
|
||||||
|
|
||||||
|
#ifndef _SMESH_FILTER_IDL_
|
||||||
|
#define _SMESH_FILTER_IDL_
|
||||||
|
|
||||||
|
#include "SALOME_Exception.idl"
|
||||||
|
#include "SALOME_GenericObj.idl"
|
||||||
|
#include "SMESH_Mesh.idl"
|
||||||
|
|
||||||
|
module SMESH{
|
||||||
|
|
||||||
|
interface Functor: SALOME::GenericObj{
|
||||||
|
void SetMesh(in SMESH_Mesh theMesh);
|
||||||
|
};
|
||||||
|
|
||||||
|
interface NumericalFunctor: Functor{
|
||||||
|
double GetValue(in long theElementId);
|
||||||
|
};
|
||||||
|
|
||||||
|
interface MinimumAngle: NumericalFunctor{};
|
||||||
|
interface AspectRatio: NumericalFunctor{};
|
||||||
|
interface Warping: NumericalFunctor{};
|
||||||
|
interface Taper: NumericalFunctor{};
|
||||||
|
interface Skew: NumericalFunctor{};
|
||||||
|
interface Area: NumericalFunctor{};
|
||||||
|
interface Length: NumericalFunctor{};
|
||||||
|
interface MultiConnection: NumericalFunctor{};
|
||||||
|
|
||||||
|
interface Predicate: Functor{
|
||||||
|
boolean IsSatisfy(in long thEntityId);
|
||||||
|
};
|
||||||
|
|
||||||
|
interface FreeBorders: Predicate{};
|
||||||
|
|
||||||
|
interface Comparator: Predicate{
|
||||||
|
void SetMargin(in double theValue);
|
||||||
|
void SetNumFunctor(in NumericalFunctor theFunct);
|
||||||
|
};
|
||||||
|
|
||||||
|
interface LessThan: Comparator{};
|
||||||
|
interface MoreThan: Comparator{};
|
||||||
|
interface EqualTo: Comparator{
|
||||||
|
void SetTolerance(in double theTolerance );
|
||||||
|
};
|
||||||
|
|
||||||
|
interface Logical: Predicate{};
|
||||||
|
|
||||||
|
interface LogicalNOT: Logical{
|
||||||
|
void SetPredicate(in Predicate thePredicate);
|
||||||
|
};
|
||||||
|
|
||||||
|
interface LogicalBinary: Logical{
|
||||||
|
void SetPredicate1(in Predicate thePredicate);
|
||||||
|
void SetPredicate2(in Predicate thePredicate);
|
||||||
|
};
|
||||||
|
|
||||||
|
interface LogicalAND: LogicalBinary{};
|
||||||
|
interface LogicalOR: LogicalBinary{};
|
||||||
|
interface Filter: SALOME::GenericObj{
|
||||||
|
void SetPredicate( in Predicate thePredicate );
|
||||||
|
long_array GetElementsId( in SMESH_Mesh theMesh );
|
||||||
|
};
|
||||||
|
|
||||||
|
interface FilterManager: SALOME::GenericObj{
|
||||||
|
MinimumAngle CreateMinimumAngle();
|
||||||
|
AspectRatio CreateAspectRatio();
|
||||||
|
Warping CreateWarping();
|
||||||
|
Taper CreateTaper();
|
||||||
|
Skew CreateSkew();
|
||||||
|
Area CreateArea();
|
||||||
|
Length CreateLength();
|
||||||
|
MultiConnection CreateMultiConnection();
|
||||||
|
|
||||||
|
FreeBorders CreateFreeBorders();
|
||||||
|
|
||||||
|
LessThan CreateLessThan();
|
||||||
|
MoreThan CreateMoreThan();
|
||||||
|
EqualTo CreateEqualTo();
|
||||||
|
|
||||||
|
LogicalNOT CreateLogicalNOT();
|
||||||
|
LogicalAND CreateLogicalAND();
|
||||||
|
LogicalOR CreateLogicalOR();
|
||||||
|
Filter CreateFilter();
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
@ -39,19 +39,35 @@
|
|||||||
module SMESH
|
module SMESH
|
||||||
{
|
{
|
||||||
typedef sequence<GEOM::GEOM_Shape> shape_array;
|
typedef sequence<GEOM::GEOM_Shape> shape_array;
|
||||||
|
typedef sequence<SMESH_Mesh> mesh_array;
|
||||||
|
|
||||||
|
interface FilterManager;
|
||||||
|
|
||||||
interface SMESH_Gen : Engines::Component, SALOMEDS::Driver
|
interface SMESH_Gen : Engines::Component, SALOMEDS::Driver
|
||||||
{
|
{
|
||||||
|
|
||||||
|
FilterManager CreateFilterManager();
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Create an hypothesis that can be shared by differents parts of the mesh.
|
Set the current study
|
||||||
|
*/
|
||||||
|
void SetCurrentStudy( in SALOMEDS::Study theStudy );
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Get the current study
|
||||||
|
*/
|
||||||
|
SALOMEDS::Study GetCurrentStudy();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Create a hypothesis that can be shared by differents parts of the mesh.
|
||||||
* An hypothesis is either:
|
* An hypothesis is either:
|
||||||
* - a method used to generate or modify a part of the mesh (algorithm).
|
* - a method used to generate or modify a part of the mesh (algorithm).
|
||||||
* - a parameter or a law used by an algorithm.
|
* - a parameter or a law used by an algorithm.
|
||||||
* Algorithms are 1D, 2D or 3D.
|
* Algorithms are 1D, 2D or 3D.
|
||||||
*/
|
*/
|
||||||
SMESH_Hypothesis CreateHypothesis( in string anHyp,
|
SMESH_Hypothesis CreateHypothesis( in string theHypName,
|
||||||
in long studyId)
|
in string theLibName )
|
||||||
raises (SALOME::SALOME_Exception);
|
raises ( SALOME::SALOME_Exception );
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Create a Mesh object, given a geometry shape.
|
* Create a Mesh object, given a geometry shape.
|
||||||
@ -60,57 +76,53 @@ module SMESH
|
|||||||
* of TopoDS_Shapes and bind CORBA references of shape & subshapes
|
* of TopoDS_Shapes and bind CORBA references of shape & subshapes
|
||||||
* with TopoDS_Shapes
|
* with TopoDS_Shapes
|
||||||
*/
|
*/
|
||||||
SMESH_Mesh Init(in GEOM::GEOM_Gen geomEngine,
|
SMESH_Mesh CreateMesh( in GEOM::GEOM_Shape theShape )
|
||||||
in long studyId,
|
raises ( SALOME::SALOME_Exception );
|
||||||
in GEOM::GEOM_Shape aShape)
|
|
||||||
raises (SALOME::SALOME_Exception);
|
/*!
|
||||||
|
* Create Mesh object(s) importing data from given MED file
|
||||||
|
*/
|
||||||
|
mesh_array CreateMeshesFromMED( in string theFileName,
|
||||||
|
out SMESH::DriverMED_ReadStatus theStatus )
|
||||||
|
raises ( SALOME::SALOME_Exception );
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Create a Mesh object, without a geometry shape reference
|
* Create a Mesh object, without a geometry shape reference
|
||||||
*/
|
*/
|
||||||
// SMESH_Mesh NewEmpty(in GEOM::GEOM_Gen geomEngine,
|
// SMESH_Mesh NewEmpty()
|
||||||
// in long studyId)
|
// raises ( SALOME::SALOME_Exception );
|
||||||
// raises (SALOME::SALOME_Exception);
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Mesh a subShape.
|
* Mesh a subShape.
|
||||||
* First, verify list of hypothesis associated with the subShape,
|
* First, verify list of hypothesis associated with the subShape,
|
||||||
* return NOK if hypothesis are not sufficient
|
* return NOK if hypothesis are not sufficient
|
||||||
*/
|
*/
|
||||||
boolean Compute(in SMESH_Mesh aMesh, in GEOM::GEOM_Shape aSubShape)
|
boolean Compute( in SMESH_Mesh theMesh,
|
||||||
raises (SALOME::SALOME_Exception);
|
in GEOM::GEOM_Shape theSubShape )
|
||||||
|
raises ( SALOME::SALOME_Exception );
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
boolean IsReadyToCompute(in SMESH_Mesh aMesh, in GEOM::GEOM_Shape aSubShape)
|
boolean IsReadyToCompute( in SMESH_Mesh theMesh,
|
||||||
raises (SALOME::SALOME_Exception);
|
in GEOM::GEOM_Shape theSubShape )
|
||||||
|
raises ( SALOME::SALOME_Exception );
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
long_array GetSubShapesId(in GEOM::GEOM_Gen geomEngine,
|
long_array GetSubShapesId( in GEOM::GEOM_Shape theMainShape,
|
||||||
in long studyId,
|
in shape_array theListOfSubShape )
|
||||||
in GEOM::GEOM_Shape mainShape,
|
raises ( SALOME::SALOME_Exception );
|
||||||
in shape_array listOfSubShape)
|
|
||||||
raises (SALOME::SALOME_Exception);
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
// long_array GetSubMeshesState(in GEOM::GEOM_Gen geomEngine,
|
// long_array GetSubMeshesState( in shape_array theListOfSubShape )
|
||||||
// in long studyId,
|
// raises ( SALOME::SALOME_Exception );
|
||||||
// in shape_array listOfSubShape)
|
|
||||||
// raises (SALOME::SALOME_Exception);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Import a mesh from a file.
|
|
||||||
* @param fileName file name to be imported.
|
|
||||||
* @param fileType Currently it could be either "DAT", "UNV" or "MED".
|
|
||||||
* @param studyId The id of the current study.
|
|
||||||
*/
|
|
||||||
SMESH_Mesh Import(in long studyId, in string fileName, in string fileType);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
103
idl/SMESH_Group.idl
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
// Copyright (C) 2004 CEA
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// File : SMESH_Group.idl
|
||||||
|
// Author : Sergey ANIKIN, OCC
|
||||||
|
// $Header$
|
||||||
|
|
||||||
|
#ifndef _SMESH_GROUP_IDL_
|
||||||
|
#define _SMESH_GROUP_IDL_
|
||||||
|
|
||||||
|
#include "SALOME_Exception.idl"
|
||||||
|
#include "SALOME_GenericObj.idl"
|
||||||
|
|
||||||
|
#include "SMESH_Mesh.idl"
|
||||||
|
|
||||||
|
module SMESH
|
||||||
|
{
|
||||||
|
/*!
|
||||||
|
* SMESH_Group: interface of group object
|
||||||
|
*/
|
||||||
|
interface SMESH_Group : SALOME::GenericObj
|
||||||
|
{
|
||||||
|
/*!
|
||||||
|
* Sets group name
|
||||||
|
*/
|
||||||
|
void SetName( in string name );
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Returns group name
|
||||||
|
*/
|
||||||
|
string GetName();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Returns group type (type of elements in the group)
|
||||||
|
*/
|
||||||
|
ElementType GetType();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Returns the number of elements in the group
|
||||||
|
*/
|
||||||
|
long Size();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Returns true if the group does not contain any elements
|
||||||
|
*/
|
||||||
|
boolean IsEmpty();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Clears the group's contents
|
||||||
|
*/
|
||||||
|
void Clear();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* returns true if the group contains an element with ID == <elem_id>
|
||||||
|
*/
|
||||||
|
boolean Contains( in long elem_id );
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Adds elements to the group
|
||||||
|
*/
|
||||||
|
long Add( in long_array elem_ids );
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Returns ID of an element at position <elem_index>
|
||||||
|
*/
|
||||||
|
long GetID( in long elem_index );
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Returns a sequence of all element IDs in the group
|
||||||
|
*/
|
||||||
|
long_array GetListOfID();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Removes elements from the group
|
||||||
|
*/
|
||||||
|
long Remove( in long_array elem_ids );
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Returns the mesh object this group belongs to
|
||||||
|
*/
|
||||||
|
SMESH_Mesh GetMesh();
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
@ -27,26 +27,29 @@
|
|||||||
#define _SMESH_HYPOTHESIS_IDL_
|
#define _SMESH_HYPOTHESIS_IDL_
|
||||||
|
|
||||||
#include "SALOME_Exception.idl"
|
#include "SALOME_Exception.idl"
|
||||||
|
#include "SALOME_GenericObj.idl"
|
||||||
|
|
||||||
module SMESH
|
module SMESH
|
||||||
{
|
{
|
||||||
interface SMESH_Hypothesis;
|
interface SMESH_Hypothesis : SALOME::GenericObj
|
||||||
|
|
||||||
typedef sequence<SMESH_Hypothesis> ListOfHypothesis;
|
|
||||||
typedef sequence<string> ListOfHypothesisName;
|
|
||||||
|
|
||||||
interface SMESH_Hypothesis
|
|
||||||
{
|
{
|
||||||
/*!
|
/*!
|
||||||
* Get the Hypothesis typeName
|
* Get the Hypothesis typeName
|
||||||
*/
|
*/
|
||||||
string GetName();
|
string GetName();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Get the Hypothesis plugin library Name
|
||||||
|
*/
|
||||||
|
string GetLibName();
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Get the internal Id
|
* Get the internal Id
|
||||||
*/
|
*/
|
||||||
long GetId();
|
long GetId();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef sequence<string> ListOfHypothesisName;
|
||||||
|
|
||||||
interface SMESH_Algo : SMESH_Hypothesis
|
interface SMESH_Algo : SMESH_Hypothesis
|
||||||
{
|
{
|
||||||
|
@ -27,13 +27,30 @@
|
|||||||
#define _SMESH_MESH_IDL_
|
#define _SMESH_MESH_IDL_
|
||||||
|
|
||||||
#include "SALOME_Exception.idl"
|
#include "SALOME_Exception.idl"
|
||||||
#include "SMESH_Hypothesis.idl"
|
//#include "SMESH_Hypothesis.idl"
|
||||||
|
|
||||||
|
#include "SALOME_GenericObj.idl"
|
||||||
|
//#include "GEOM_Shape.idl"
|
||||||
|
//#include "MED.idl"
|
||||||
|
|
||||||
|
module GEOM
|
||||||
|
{
|
||||||
|
interface GEOM_Shape;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
module SALOME_MED
|
||||||
|
{
|
||||||
|
interface MESH;
|
||||||
|
interface FAMILY;
|
||||||
|
};
|
||||||
|
|
||||||
#include "GEOM_Shape.idl"
|
|
||||||
#include "MED.idl"
|
|
||||||
|
|
||||||
module SMESH
|
module SMESH
|
||||||
{
|
{
|
||||||
|
interface SMESH_Hypothesis;
|
||||||
|
typedef sequence<SMESH_Hypothesis> ListOfHypothesis;
|
||||||
|
|
||||||
typedef sequence<double> double_array ;
|
typedef sequence<double> double_array ;
|
||||||
typedef sequence<long> long_array ;
|
typedef sequence<long> long_array ;
|
||||||
typedef sequence<string> string_array ;
|
typedef sequence<string> string_array ;
|
||||||
@ -49,8 +66,7 @@ module SMESH
|
|||||||
ADD_PRISM,
|
ADD_PRISM,
|
||||||
ADD_HEXAHEDRON,
|
ADD_HEXAHEDRON,
|
||||||
REMOVE_NODE,
|
REMOVE_NODE,
|
||||||
REMOVE_ELEMENT,
|
REMOVE_ELEMENT
|
||||||
REMOVE_ALL
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct log_block
|
struct log_block
|
||||||
@ -60,12 +76,56 @@ module SMESH
|
|||||||
double_array coords;
|
double_array coords;
|
||||||
long_array indexes;
|
long_array indexes;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Enumeration for element type, like in SMDS
|
||||||
|
*/
|
||||||
|
enum ElementType
|
||||||
|
{
|
||||||
|
ALL,
|
||||||
|
NODE,
|
||||||
|
EDGE,
|
||||||
|
FACE,
|
||||||
|
VOLUME
|
||||||
|
};
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Enumeration for hypothesis status (used by AddHypothesis() and RemoveHypothesis() methods)
|
||||||
|
*/
|
||||||
|
enum Hypothesis_Status // in the order of severity
|
||||||
|
{
|
||||||
|
HYP_OK,
|
||||||
|
HYP_MISSING, // algo misses a hypothesis
|
||||||
|
HYP_CONCURENT, // several applicable hypotheses
|
||||||
|
HYP_BAD_PARAMETER,// hypothesis has a bad parameter value
|
||||||
|
HYP_UNKNOWN_FATAL,// --- all statuses below should be considered as fatal
|
||||||
|
// for Add/RemoveHypothesis operations
|
||||||
|
HYP_INCOMPATIBLE, // hypothesis does not fit algo
|
||||||
|
HYP_NOTCONFORM, // not conform mesh is produced appling a hypothesis
|
||||||
|
HYP_ALREADY_EXIST,// such hypothesis already exist
|
||||||
|
HYP_BAD_DIM // bad dimension
|
||||||
|
};
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Enumeration for DriverMED read status (used by ImportMEDFile() method)
|
||||||
|
*/
|
||||||
|
enum DriverMED_ReadStatus // in the order of severity
|
||||||
|
{
|
||||||
|
DRS_OK,
|
||||||
|
DRS_EMPTY, // a MED file contains no mesh with the given name
|
||||||
|
DRS_WARN_RENUMBER, // a MED file has overlapped ranges of element numbers,
|
||||||
|
// so the numbers from the file are ignored
|
||||||
|
DRS_WARN_SKIP_ELEM, // some elements were skipped due to incorrect file data
|
||||||
|
DRS_FAIL // general failure (exception etc.)
|
||||||
|
};
|
||||||
|
|
||||||
typedef sequence<log_block> log_array;
|
typedef sequence<log_block> log_array;
|
||||||
|
|
||||||
|
interface SMESH_Group;
|
||||||
interface SMESH_subMesh;
|
interface SMESH_subMesh;
|
||||||
interface SMESH_MeshEditor;
|
interface SMESH_MeshEditor;
|
||||||
interface SMESH_Mesh
|
interface SMESH_Mesh : SALOME::GenericObj
|
||||||
{
|
{
|
||||||
/*!
|
/*!
|
||||||
* Associate a Shape to a Mesh created with NewEmpty
|
* Associate a Shape to a Mesh created with NewEmpty
|
||||||
@ -80,7 +140,7 @@ module SMESH
|
|||||||
* SubMesh will be used instead of SubShape in a next idl version to
|
* SubMesh will be used instead of SubShape in a next idl version to
|
||||||
* adress a specific subMesh...
|
* adress a specific subMesh...
|
||||||
*/
|
*/
|
||||||
SMESH_subMesh GetElementsOnShape(in GEOM::GEOM_Shape aSubShape)
|
SMESH_subMesh GetSubMesh(in GEOM::GEOM_Shape aSubShape, in string name)
|
||||||
raises (SALOME::SALOME_Exception);
|
raises (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -89,6 +149,25 @@ module SMESH
|
|||||||
// SMESH_subMesh NewEmpty()
|
// SMESH_subMesh NewEmpty()
|
||||||
// raises (SALOME::SALOME_Exception);
|
// raises (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Remove a submesh
|
||||||
|
*/
|
||||||
|
void RemoveSubMesh(in SMESH_subMesh aSubMesh)
|
||||||
|
raises (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Create a group
|
||||||
|
*/
|
||||||
|
SMESH_Group CreateGroup( in ElementType elem_type,
|
||||||
|
in string name )
|
||||||
|
raises (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Remove a group
|
||||||
|
*/
|
||||||
|
void RemoveGroup(in SMESH_Group aGroup)
|
||||||
|
raises (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Add hypothesis to the mesh, under a particular subShape
|
* Add hypothesis to the mesh, under a particular subShape
|
||||||
* (or the main shape itself)
|
* (or the main shape itself)
|
||||||
@ -106,7 +185,8 @@ module SMESH
|
|||||||
* (or one previous hypothesis on the subShape)
|
* (or one previous hypothesis on the subShape)
|
||||||
* raises exception if hypothesis has not been created
|
* raises exception if hypothesis has not been created
|
||||||
*/
|
*/
|
||||||
boolean AddHypothesis(in GEOM::GEOM_Shape aSubShape, in SMESH_Hypothesis anHyp)
|
Hypothesis_Status AddHypothesis(in GEOM::GEOM_Shape aSubShape,
|
||||||
|
in SMESH_Hypothesis anHyp)
|
||||||
raises (SALOME::SALOME_Exception);
|
raises (SALOME::SALOME_Exception);
|
||||||
// boolean AddHypothesis(in SMESH_subMesh aSubMesh, in SMESH_Hypothesis anHyp)
|
// boolean AddHypothesis(in SMESH_subMesh aSubMesh, in SMESH_Hypothesis anHyp)
|
||||||
// raises (SALOME::SALOME_Exception);
|
// raises (SALOME::SALOME_Exception);
|
||||||
@ -115,8 +195,8 @@ module SMESH
|
|||||||
/*!
|
/*!
|
||||||
* Remove an hypothesis previouly added with AddHypothesis.
|
* Remove an hypothesis previouly added with AddHypothesis.
|
||||||
*/
|
*/
|
||||||
boolean RemoveHypothesis(in GEOM::GEOM_Shape aSubShape,
|
Hypothesis_Status RemoveHypothesis(in GEOM::GEOM_Shape aSubShape,
|
||||||
in SMESH_Hypothesis anHyp)
|
in SMESH_Hypothesis anHyp)
|
||||||
raises (SALOME::SALOME_Exception);
|
raises (SALOME::SALOME_Exception);
|
||||||
// boolean RemoveHypothesis(in SMESH_subMesh aSubMesh,
|
// boolean RemoveHypothesis(in SMESH_subMesh aSubMesh,
|
||||||
// in SMESH_Hypothesis anHyp)
|
// in SMESH_Hypothesis anHyp)
|
||||||
@ -162,11 +242,13 @@ module SMESH
|
|||||||
raises (SALOME::SALOME_Exception);
|
raises (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Export mesh to a file
|
* Export Mesh with DAT and MED Formats
|
||||||
* @param fileName file name where to export the file
|
|
||||||
* @param fileType Currently it could be either "DAT", "UNV" or "MED".
|
|
||||||
*/
|
*/
|
||||||
void Export( in string fileName, in string fileType )
|
void ExportDAT( in string file )
|
||||||
|
raises (SALOME::SALOME_Exception);
|
||||||
|
void ExportMED( in string file, in boolean auto_groups )
|
||||||
|
raises (SALOME::SALOME_Exception);
|
||||||
|
void ExportUNV( in string file )
|
||||||
raises (SALOME::SALOME_Exception);
|
raises (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -199,11 +281,19 @@ module SMESH
|
|||||||
long NbHexas()
|
long NbHexas()
|
||||||
raises (SALOME::SALOME_Exception);
|
raises (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
|
long NbPyramids()
|
||||||
|
raises (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
|
long NbPrisms()
|
||||||
|
raises (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
long NbSubMesh()
|
long NbSubMesh()
|
||||||
raises (SALOME::SALOME_Exception);
|
raises (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
|
string Dump();
|
||||||
};
|
};
|
||||||
|
|
||||||
interface SMESH_subMesh
|
interface SMESH_subMesh : SALOME::GenericObj
|
||||||
{
|
{
|
||||||
/*!
|
/*!
|
||||||
*
|
*
|
||||||
@ -223,6 +313,12 @@ module SMESH
|
|||||||
long_array GetElementsId()
|
long_array GetElementsId()
|
||||||
raises (SALOME::SALOME_Exception);
|
raises (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
long_array GetElementsByType( in ElementType theType )
|
||||||
|
raises (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
45
idl/SMESH_NetgenAlgorithm.idl
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// File : SMESH_NetgenAlgorithm.idl
|
||||||
|
// Author : Julia DOROVSKIKH
|
||||||
|
// $Header$
|
||||||
|
|
||||||
|
#ifndef _SMESH_NETGENALGORITHM_IDL_
|
||||||
|
#define _SMESH_NETGENALGORITHM_IDL_
|
||||||
|
|
||||||
|
#include "SMESH_Hypothesis.idl"
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* NETGENPlugin: interfaces to NETGEN related hypotheses and algorithms
|
||||||
|
*/
|
||||||
|
module NETGENPlugin
|
||||||
|
{
|
||||||
|
/*!
|
||||||
|
* NETGENPlugin_NETGEN_3D: interface of "Tetrahedron (Netgen)" algorithm
|
||||||
|
*/
|
||||||
|
interface NETGENPlugin_NETGEN_3D : SMESH::SMESH_3D_Algo
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
2
resources/SMESH.config
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
language=en
|
||||||
|
resources=StdMeshers:NETGENPlugin
|
78
resources/SMESH_Meshers.xml
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
<?xml version='1.0' encoding='us-ascii'?>
|
||||||
|
<!DOCTYPE meshers PUBLIC "" "desktop.dtd">
|
||||||
|
|
||||||
|
<!-- GUI customization for MESH component -->
|
||||||
|
|
||||||
|
<meshers>
|
||||||
|
|
||||||
|
<meshers-group name="Standard Meshers"
|
||||||
|
resources="StdMeshers"
|
||||||
|
server-lib="libStdMeshersEngine.so"
|
||||||
|
gui-lib="libStdMeshersGUI.so">
|
||||||
|
<hypotheses>
|
||||||
|
|
||||||
|
<hypothesis type="LocalLength"
|
||||||
|
label-id="Average length"
|
||||||
|
icon-id="mesh_hypo_length.png"/>
|
||||||
|
|
||||||
|
<hypothesis type="LengthFromEdges"
|
||||||
|
label-id="Length From Edges (2D Hyp. for Triangulator)"
|
||||||
|
icon-id="mesh_hypo_length.png"/>
|
||||||
|
|
||||||
|
<hypothesis type="NumberOfSegments"
|
||||||
|
label-id="Nb. Segments"
|
||||||
|
icon-id="mesh_hypo_segment.png"/>
|
||||||
|
|
||||||
|
<hypothesis type="MaxElementArea"
|
||||||
|
label-id="Max. Triangle Area"
|
||||||
|
icon-id="mesh_hypo_area.png"/>
|
||||||
|
|
||||||
|
<hypothesis type="MaxElementVolume"
|
||||||
|
label-id="Max. Hexahedron or Tetrahedron Volume"
|
||||||
|
icon-id="mesh_hypo_volume.png"/>
|
||||||
|
|
||||||
|
<hypothesis type="NotConformAllowed"
|
||||||
|
label-id="Not Conform Mesh Allowed"
|
||||||
|
icon-id="mesh_hypo_length.png"/>
|
||||||
|
</hypotheses>
|
||||||
|
|
||||||
|
<algorithms>
|
||||||
|
|
||||||
|
<algorithm type="Regular_1D"
|
||||||
|
label-id="Wire discretisation"
|
||||||
|
icon-id="mesh_algo_regular.png"/>
|
||||||
|
|
||||||
|
<algorithm type="MEFISTO_2D"
|
||||||
|
label-id="Triangle (Mefisto)"
|
||||||
|
icon-id="mesh_algo_mefisto.png"/>
|
||||||
|
|
||||||
|
<algorithm type="Quadrangle_2D"
|
||||||
|
label-id="Quadrangle (Mapping)"
|
||||||
|
icon-id="mesh_algo_quad.png"/>
|
||||||
|
|
||||||
|
<algorithm type="Hexa_3D"
|
||||||
|
label-id="Hexahedron (i,j,k)"
|
||||||
|
icon-id="mesh_algo_hexa.png"/>
|
||||||
|
</algorithms>
|
||||||
|
</meshers-group>
|
||||||
|
|
||||||
|
<meshers-group name="Your Meshers Group"
|
||||||
|
resources=""
|
||||||
|
server-lib=""
|
||||||
|
gui-lib="">
|
||||||
|
<hypotheses>
|
||||||
|
|
||||||
|
<hypothesis type=""
|
||||||
|
label-id=""
|
||||||
|
icon-id=""/>
|
||||||
|
</hypotheses>
|
||||||
|
|
||||||
|
<algorithms>
|
||||||
|
|
||||||
|
<algorithm type=""
|
||||||
|
label-id=""
|
||||||
|
icon-id=""/>
|
||||||
|
</algorithms>
|
||||||
|
</meshers-group>
|
||||||
|
|
||||||
|
</meshers>
|
89
resources/SMESH_MeshersWithNETGEN.xml
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
<?xml version='1.0' encoding='us-ascii'?>
|
||||||
|
<!DOCTYPE meshers PUBLIC "" "desktop.dtd">
|
||||||
|
|
||||||
|
<!-- GUI customization for MESH component -->
|
||||||
|
|
||||||
|
<meshers>
|
||||||
|
|
||||||
|
<meshers-group name="Standard Meshers"
|
||||||
|
resources="StdMeshers"
|
||||||
|
server-lib="libStdMeshersEngine.so"
|
||||||
|
gui-lib="libStdMeshersGUI.so">
|
||||||
|
<hypotheses>
|
||||||
|
|
||||||
|
<hypothesis type="LocalLength"
|
||||||
|
label-id="Average length"
|
||||||
|
icon-id="mesh_hypo_length.png"/>
|
||||||
|
|
||||||
|
<hypothesis type="LengthFromEdges"
|
||||||
|
label-id="Length From Edges (2D Hyp. for Triangulator)"
|
||||||
|
icon-id="mesh_hypo_length.png"/>
|
||||||
|
|
||||||
|
<hypothesis type="NumberOfSegments"
|
||||||
|
label-id="Nb. Segments"
|
||||||
|
icon-id="mesh_hypo_segment.png"/>
|
||||||
|
|
||||||
|
<hypothesis type="MaxElementArea"
|
||||||
|
label-id="Max. Triangle Area"
|
||||||
|
icon-id="mesh_hypo_area.png"/>
|
||||||
|
|
||||||
|
<hypothesis type="MaxElementVolume"
|
||||||
|
label-id="Max. Hexahedron or Tetrahedron Volume"
|
||||||
|
icon-id="mesh_hypo_volume.png"/>
|
||||||
|
|
||||||
|
<hypothesis type="NotConformAllowed"
|
||||||
|
label-id="Not Conform Mesh Allowed"
|
||||||
|
icon-id="mesh_hypo_length.png"/>
|
||||||
|
</hypotheses>
|
||||||
|
|
||||||
|
<algorithms>
|
||||||
|
|
||||||
|
<algorithm type="Regular_1D"
|
||||||
|
label-id="Wire discretisation"
|
||||||
|
icon-id="mesh_algo_regular.png"/>
|
||||||
|
|
||||||
|
<algorithm type="MEFISTO_2D"
|
||||||
|
label-id="Triangle (Mefisto)"
|
||||||
|
icon-id="mesh_algo_mefisto.png"/>
|
||||||
|
|
||||||
|
<algorithm type="Quadrangle_2D"
|
||||||
|
label-id="Quadrangle (Mapping)"
|
||||||
|
icon-id="mesh_algo_quad.png"/>
|
||||||
|
|
||||||
|
<algorithm type="Hexa_3D"
|
||||||
|
label-id="Hexahedron (i,j,k)"
|
||||||
|
icon-id="mesh_algo_hexa.png"/>
|
||||||
|
</algorithms>
|
||||||
|
</meshers-group>
|
||||||
|
|
||||||
|
<meshers-group name="NETGEN"
|
||||||
|
resources="NETGENPlugin"
|
||||||
|
server-lib="libNETGENEngine.so"
|
||||||
|
gui-lib="">
|
||||||
|
<algorithms>
|
||||||
|
<algorithm type="NETGEN_3D"
|
||||||
|
label-id="Tetrahedron (Netgen)"
|
||||||
|
icon-id="mesh_algo_tetra.png"/>
|
||||||
|
</algorithms>
|
||||||
|
</meshers-group>
|
||||||
|
|
||||||
|
<meshers-group name="Your Meshers Group"
|
||||||
|
resources=""
|
||||||
|
server-lib=""
|
||||||
|
gui-lib="">
|
||||||
|
<hypotheses>
|
||||||
|
|
||||||
|
<hypothesis type=""
|
||||||
|
label-id=""
|
||||||
|
icon-id=""/>
|
||||||
|
</hypotheses>
|
||||||
|
|
||||||
|
<algorithms>
|
||||||
|
|
||||||
|
<algorithm type=""
|
||||||
|
label-id=""
|
||||||
|
icon-id=""/>
|
||||||
|
</algorithms>
|
||||||
|
</meshers-group>
|
||||||
|
|
||||||
|
</meshers>
|
@ -17,7 +17,7 @@
|
|||||||
<submenu label-id="Import" item-id="11" pos-id="8">
|
<submenu label-id="Import" item-id="11" pos-id="8">
|
||||||
<popup-item item-id="111" pos-id="" label-id="DAT file" icon-id="" tooltip-id="" accel-id="Ctrl+B" toggle-id="" execute-action=""/>
|
<popup-item item-id="111" pos-id="" label-id="DAT file" icon-id="" tooltip-id="" accel-id="Ctrl+B" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="112" pos-id="" label-id="UNV File" icon-id="" tooltip-id="" accel-id="Ctrl+I" toggle-id="" execute-action=""/>
|
<popup-item item-id="112" pos-id="" label-id="UNV File" icon-id="" tooltip-id="" accel-id="Ctrl+I" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="113" pos-id="" label-id="MED File" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="113" pos-id="" label-id="MED File" icon-id="" tooltip-id="" accel-id="Ctrl+M" toggle-id="" execute-action=""/>
|
||||||
</submenu>
|
</submenu>
|
||||||
<endsubmenu />
|
<endsubmenu />
|
||||||
<submenu label-id="Export" item-id="12" pos-id="9">
|
<submenu label-id="Export" item-id="12" pos-id="9">
|
||||||
@ -37,37 +37,34 @@
|
|||||||
|
|
||||||
<!-- ************************** Hypothesis (menubar) ************************************ -->
|
<!-- ************************** Hypothesis (menubar) ************************************ -->
|
||||||
<menu-item label-id="Hypotheses" item-id="50" pos-id="3">
|
<menu-item label-id="Hypotheses" item-id="50" pos-id="3">
|
||||||
<popup-item item-id="5030" pos-id="" label-id="Average length" icon-id="mesh_hypo_length.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="5000" pos-id="" label-id="Create Hypotheses" icon-id="mesh_hypo_length.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="5031" pos-id="" label-id="Nb. Segments" icon-id="mesh_hypo_segment.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="5010" pos-id="" label-id="Create Algorithms" icon-id="mesh_algo_mefisto.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="5032" pos-id="" label-id="Max. Triangle Area" icon-id="mesh_hypo_area.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<popup-item item-id="5033" pos-id="" label-id="Max. Hexahedron or Tetrahedron Volume" icon-id="mesh_hypo_volume.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<popup-item item-id="5034" pos-id="" label-id="Length From Edges (2D Hyp. for Triangulator)" icon-id="mesh_hypo_length.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<separator pos-id=""/>
|
|
||||||
<popup-item item-id="5000" pos-id="" label-id="Wire discretisation" icon-id="mesh_algo_regular.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<popup-item item-id="5010" pos-id="" label-id="Triangle (Mefisto)" icon-id="mesh_algo_mefisto.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<popup-item item-id="5011" pos-id="" label-id="Quadrangle (Mapping)" icon-id="mesh_algo_quad.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<popup-item item-id="5020" pos-id="" label-id="Hexahedron (i,j,k)" icon-id="mesh_algo_hexa.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<popup-item item-id="5021" pos-id="" label-id="Tetrahedron (Netgen)" icon-id="mesh_algo_tetra.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
</menu-item>
|
</menu-item>
|
||||||
|
|
||||||
<!-- ************************** Mesh (menubar) ************************************ -->
|
<!-- ************************** Mesh (menubar) ************************************ -->
|
||||||
<menu-item label-id="Mesh" item-id="70" pos-id="4">
|
<menu-item label-id="Mesh" item-id="70" pos-id="4">
|
||||||
<popup-item item-id="703" pos-id="" label-id="Global Hyp." icon-id="mesh_init.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="703" pos-id="" label-id="Global Hypothesis" icon-id="mesh_init.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="702" pos-id="" label-id="Local Hyp." icon-id="mesh_add_sub.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="702" pos-id="" label-id="Local Hypothesis" icon-id="mesh_add_sub.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="704" pos-id="" label-id="Edit Hyp." icon-id="mesh_edit.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="704" pos-id="" label-id="Edit Hypothesis" icon-id="mesh_edit.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<separator pos-id=""/>
|
<separator pos-id=""/>
|
||||||
<popup-item item-id="701" pos-id="" label-id="Compute" icon-id="mesh_compute.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="701" pos-id="" label-id="Compute" icon-id="mesh_compute.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<separator pos-id=""/>
|
<separator pos-id=""/>
|
||||||
|
<popup-item item-id="801" pos-id="" label-id="Create Group" icon-id="mesh_tree_group.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="802" pos-id="" label-id="Construct Group" icon-id="mesh_make_group.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="803" pos-id="" label-id="Edit Group" icon-id="mesh_edit_group.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
<popup-item item-id="900" pos-id="" label-id="Mesh Infos" icon-id="mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="900" pos-id="" label-id="Mesh Infos" icon-id="mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
</menu-item>
|
</menu-item>
|
||||||
|
|
||||||
<!-- ************************** Control (menubar) ************************************ -->
|
<!-- ************************** Control (menubar) ************************************ -->
|
||||||
<menu-item label-id="Controls" item-id="60" pos-id="5">
|
<menu-item label-id="Controls" item-id="60" pos-id="5">
|
||||||
<popup-item item-id="6001" pos-id="" label-id="Length" icon-id="mesh_length.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6001" pos-id="" label-id="Length" icon-id="mesh_length.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="6002" pos-id="" label-id="Connectivity" icon-id="mesh_connectivity.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6003" pos-id="" label-id="Free borders" icon-id="mesh_free_edges.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6004" pos-id="" label-id="Borders at multi-connection" icon-id="mesh_multi_edges.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<!-- popup-item item-id="6002" pos-id="" label-id="Connectivity" icon-id="mesh_connectivity.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/ -->
|
||||||
<popup-item item-id="6011" pos-id="" label-id="Area" icon-id="mesh_area.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6011" pos-id="" label-id="Area" icon-id="mesh_area.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="6012" pos-id="" label-id="Taper" icon-id="mesh_taper.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6012" pos-id="" label-id="Taper" icon-id="mesh_taper.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="6013" pos-id="" label-id="Aspect Ratio" icon-id="mesh_aspect.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6013" pos-id="" label-id="Aspect Ratio" icon-id="mesh_aspect.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="6014" pos-id="" label-id="Minimum angle" icon-id="mesh_angle.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6014" pos-id="" label-id="Minimum angle" icon-id="mesh_angle.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="6015" pos-id="" label-id="Warp" icon-id="mesh_wrap.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6015" pos-id="" label-id="Warp" icon-id="mesh_wrap.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="6016" pos-id="" label-id="Skew" icon-id="mesh_skew.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6016" pos-id="" label-id="Skew" icon-id="mesh_skew.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
@ -90,30 +87,28 @@
|
|||||||
</submenu>
|
</submenu>
|
||||||
<endsubmenu />
|
<endsubmenu />
|
||||||
<popup-item item-id="405" pos-id="" label-id="Move Node" icon-id="mesh_move_node.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="405" pos-id="" label-id="Move Node" icon-id="mesh_move_node.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="806" pos-id="" label-id="Orientation" icon-id="mesh_orientation.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="406" pos-id="" label-id="Orientation" icon-id="mesh_orientation.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="807" pos-id="" label-id="Diagonal Inversion" icon-id="mesh_diagonal.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="407" pos-id="" label-id="Diagonal Inversion" icon-id="mesh_diagonal.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
</menu-item>
|
|
||||||
|
|
||||||
<!-- ************************** Numbering (menubar) ************************************ -->
|
|
||||||
<menu-item label-id="Numbering" item-id="80" pos-id="7">
|
|
||||||
<popup-item item-id="9010" pos-id="" label-id="Display Nodes #" icon-id="" tooltip-id="" accel-id="" toggle-id="false" execute-action=""/>
|
|
||||||
<popup-item item-id="9011" pos-id="" label-id="Display Elements #" icon-id="" tooltip-id="" accel-id="" toggle-id="false" execute-action=""/>
|
|
||||||
</menu-item>
|
</menu-item>
|
||||||
|
|
||||||
<!-- ********************************* Settings (menubar) ********************************* -->
|
<!-- ********************************* Settings (menubar) ********************************* -->
|
||||||
<menu-item label-id="Preferences" item-id="4" pos-id="">
|
<menu-item label-id="Preferences" item-id="4" pos-id="">
|
||||||
<submenu label-id="Mesh" item-id="100" pos-id="-1">
|
<submenu label-id="Mesh" item-id="100" pos-id="-1">
|
||||||
<submenu label-id="Display Mode" item-id="1000" pos-id="">
|
<submenu label-id="Display Mode" item-id="1000" pos-id="">
|
||||||
<popup-item item-id="10001" pos-id="" label-id="Wireframe" icon-id="" tooltip-id="" accel-id="" toggle-id="false" execute-action=""/>
|
<popup-item item-id="10001" pos-id="" label-id="Wireframe" icon-id="mesh_wireframe.png" tooltip-id="" accel-id="" toggle-id="false" execute-action=""/>
|
||||||
<popup-item item-id="10002" pos-id="" label-id="Shading" icon-id="" tooltip-id=""accel-id="" toggle-id="true" execute-action=""/>
|
<popup-item item-id="10002" pos-id="" label-id="Shading" icon-id="mesh_shading.png" tooltip-id=""accel-id="" toggle-id="true" execute-action=""/>
|
||||||
<popup-item item-id="10003" pos-id="" label-id="Shrink" icon-id="" tooltip-id="" accel-id="" toggle-id="false" execute-action=""/>
|
<popup-item item-id="10004" pos-id="" label-id="Nodes" icon-id="mesh_points.png" tooltip-id="" accel-id="" toggle-id="false" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<popup-item item-id="10003" pos-id="" label-id="Shrink" icon-id="mesh_shrink.png" tooltip-id="" accel-id="" toggle-id="false" execute-action=""/>
|
||||||
</submenu>
|
</submenu>
|
||||||
<endsubmenu />
|
<endsubmenu />
|
||||||
<popup-item item-id="1001" pos-id="" label-id="Automatic Update" icon-id="" tooltip-id="" accel-id="" toggle-id="false" execute-action=""/>
|
<popup-item item-id="1001" pos-id="" label-id="Automatic Update" icon-id="" tooltip-id="" accel-id="" toggle-id="false" execute-action=""/>
|
||||||
<separator pos-id=""/>
|
<separator pos-id=""/>
|
||||||
<popup-item item-id="1003" pos-id="" label-id="Colors - Size" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="1003" pos-id="" label-id="Colors / Size" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<separator pos-id=""/>
|
<separator pos-id=""/>
|
||||||
<popup-item item-id="1005" pos-id="" label-id="Scalars Bar" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="1005" pos-id="" label-id="Scalar Bar" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<popup-item item-id="1006" pos-id="" label-id="Selection" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
</submenu>
|
</submenu>
|
||||||
<endsubmenu />
|
<endsubmenu />
|
||||||
<separator pos-id="-1"/>
|
<separator pos-id="-1"/>
|
||||||
@ -121,12 +116,6 @@
|
|||||||
|
|
||||||
<!-- ********************************* View (menubar) ********************************* -->
|
<!-- ********************************* View (menubar) ********************************* -->
|
||||||
<menu-item label-id="View" item-id="2" pos-id="">
|
<menu-item label-id="View" item-id="2" pos-id="">
|
||||||
<submenu label-id="Display Mode" item-id="21" pos-id="">
|
|
||||||
<popup-item item-id="211" pos-id="" label-id="Wireframe" icon-id="mesh_wireframe.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<popup-item item-id="212" pos-id="" label-id="Shading" icon-id="mesh_shading.png" tooltip-id=""accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<popup-item item-id="213" pos-id="" label-id="Shrink" icon-id="mesh_shrink.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
</submenu>
|
|
||||||
<endsubmenu />
|
|
||||||
<separator pos-id=""/>
|
<separator pos-id=""/>
|
||||||
<popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
</menu-item>
|
</menu-item>
|
||||||
@ -134,83 +123,210 @@
|
|||||||
<!-- ################################# POPUP MENU ################################# -->
|
<!-- ################################# POPUP MENU ################################# -->
|
||||||
|
|
||||||
<popupmenu label-id="Popup for ObjectBrowser" context-id="" parent-id="ObjectBrowser" object-id="Mesh">
|
<popupmenu label-id="Popup for ObjectBrowser" context-id="" parent-id="ObjectBrowser" object-id="Mesh">
|
||||||
<popup-item item-id="705" pos-id="" label-id="Edit Global Hyp." icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="705" pos-id="" label-id="Edit Global Hypothesis" icon-id="mesh_edit.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<separator pos-id=""/>
|
<separator pos-id=""/>
|
||||||
<popup-item item-id="701" pos-id="" label-id="Compute" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="701" pos-id="" label-id="Compute" icon-id="mesh_compute.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="214" pos-id="" label-id="Update" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="900" pos-id="" label-id="Show Info" icon-id="mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<popup-item item-id="801" pos-id="" label-id="Create Group" icon-id="mesh_tree_group.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<separator pos-id=""/>
|
<separator pos-id=""/>
|
||||||
<popup-item item-id="1101" pos-id="" label-id="Rename" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="1101" pos-id="" label-id="Rename" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<popup-item item-id="122" pos-id="" label-id="Export to MED" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
</popupmenu>
|
</popupmenu>
|
||||||
|
|
||||||
<popupmenu label-id="Popup for ObjectBrowser" context-id="" parent-id="ObjectBrowser" object-id="SubMesh">
|
<popupmenu label-id="Popup for ObjectBrowser" context-id="" parent-id="ObjectBrowser" object-id="SubMesh">
|
||||||
<popup-item item-id="706" pos-id="" label-id="Edit Local Hyp." icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="706" pos-id="" label-id="Edit Local Hypothesis" icon-id="mesh_edit.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="900" pos-id="" label-id="Show Info" icon-id="mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<popup-item item-id="802" pos-id="" label-id="Construct Group" icon-id="mesh_make_group.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<popup-item item-id="33" pos-id="" label-id="Delete" icon-id="delete.png" tooltip-id="" accel-id="" toggle-id="" execute-action="" />
|
||||||
|
</popupmenu>
|
||||||
|
|
||||||
|
<popupmenu label-id="Popup for ObjectBrowser" context-id="" parent-id="ObjectBrowser" object-id="Group">
|
||||||
|
<popup-item item-id="803" pos-id="" label-id="Edit" icon-id="mesh_edit_group.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="900" pos-id="" label-id="Show Info" icon-id="mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<popup-item item-id="1101" pos-id="" label-id="Rename" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<popup-item item-id="33" pos-id="" label-id="Delete" icon-id="delete.png" tooltip-id="" accel-id="" toggle-id="" execute-action="" />
|
||||||
</popupmenu>
|
</popupmenu>
|
||||||
|
|
||||||
<popupmenu label-id="Popup for ObjectBrowser" context-id="" parent-id="ObjectBrowser" object-id="Hypothesis">
|
<popupmenu label-id="Popup for ObjectBrowser" context-id="" parent-id="ObjectBrowser" object-id="Hypothesis">
|
||||||
<popup-item item-id="1100" pos-id="" label-id="Edit" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="1100" pos-id="" label-id="Edit" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="1102" pos-id="" label-id="Unassign Hyp." icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="1102" pos-id="" label-id="Unassign Hypothesis" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="1101" pos-id="" label-id="Rename" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
</popupmenu>
|
|
||||||
<popupmenu label-id="Popup for ObjectBrowser" context-id="" parent-id="ObjectBrowser" object-id="Algorithm">
|
|
||||||
<popup-item item-id="1102" pos-id="" label-id="Unassign Algo." icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<popup-item item-id="1101" pos-id="" label-id="Rename" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="1101" pos-id="" label-id="Rename" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
</popupmenu>
|
</popupmenu>
|
||||||
|
|
||||||
|
<popupmenu label-id="Popup for ObjectBrowser" context-id="" parent-id="ObjectBrowser" object-id="Algorithm">
|
||||||
|
<popup-item item-id="1102" pos-id="" label-id="Unassign Algorithm" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="1101" pos-id="" label-id="Rename" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
</popupmenu>
|
||||||
|
|
||||||
|
|
||||||
<popupmenu label-id="Popup for Viewer" context-id="" parent-id="Viewer" object-id="Mesh">
|
<popupmenu label-id="Popup for Viewer" context-id="" parent-id="Viewer" object-id="Mesh">
|
||||||
<popup-item item-id="214" pos-id="" label-id="Update" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="900" pos-id="" label-id="Show Info" icon-id="mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<separator pos-id=""/>
|
<separator pos-id=""/>
|
||||||
<submenu label-id="Properties" item-id="113" pos-id="">
|
<submenu label-id="Numbering" item-id="114" pos-id="">
|
||||||
<submenu label-id="Display Mode" item-id="1131" pos-id="">
|
<popup-item item-id="9010" pos-id="" label-id="Display Nodes #" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="211" pos-id="" label-id="Wireframe" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="9011" pos-id="" label-id="Display Elements #" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="212" pos-id="" label-id="Shading" icon-id="" tooltip-id=""accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<popup-item item-id="213" pos-id="" label-id="Shrink" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
</submenu>
|
|
||||||
<endsubmenu />
|
|
||||||
<separator pos-id=""/>
|
|
||||||
<popup-item item-id="1132" pos-id="" label-id="Colors - Size" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<popup-item item-id="1133" pos-id="" label-id="Transparency" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
</submenu>
|
</submenu>
|
||||||
<endsubmenu />
|
<endsubmenu />
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<submenu label-id="Display Mode" item-id="1131" pos-id="">
|
||||||
|
<popup-item item-id="211" pos-id="" label-id="Wireframe" icon-id="mesh_wireframe.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="212" pos-id="" label-id="Shading" icon-id="mesh_shading.png" tooltip-id=""accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="215" pos-id="" label-id="Nodes" icon-id="mesh_points.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<popup-item item-id="213" pos-id="" label-id="Shrink" icon-id="mesh_shrink.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
</submenu>
|
||||||
|
<endsubmenu />
|
||||||
|
<popup-item item-id="1132" pos-id="" label-id="Colors / Size" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="1133" pos-id="" label-id="Transparency" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<submenu label-id="Control" item-id="2000" pos-id="">
|
||||||
|
<popup-item item-id="6001" pos-id="" label-id="Length" icon-id="mesh_length.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6003" pos-id="" label-id="Free borders" icon-id="mesh_free_edges.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6004" pos-id="" label-id="Borders at multi-connection" icon-id="mesh_multi_edges.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<!-- popup-item item-id="6002" pos-id="" label-id="Connectivity" icon-id="mesh_connectivity.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/ -->
|
||||||
|
<popup-item item-id="6011" pos-id="" label-id="Area" icon-id="mesh_area.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6012" pos-id="" label-id="Taper" icon-id="mesh_taper.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6013" pos-id="" label-id="Aspect Ratio" icon-id="mesh_aspect.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6014" pos-id="" label-id="Minimum angle" icon-id="mesh_angle.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6015" pos-id="" label-id="Warp" icon-id="mesh_wrap.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6016" pos-id="" label-id="Skew" icon-id="mesh_skew.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<popup-item item-id="200" pos-id="" label-id="Reset" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<popup-item item-id="201" pos-id="" label-id="Scalar Bar Properties" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
</submenu>
|
||||||
|
<endsubmenu />
|
||||||
|
<separator pos-id=""/>
|
||||||
</popupmenu>
|
</popupmenu>
|
||||||
|
|
||||||
<popupmenu label-id="ScalarBar" context-id="" parent-id="Viewer" object-id="ScalarBar">
|
<popupmenu label-id="Popup for Viewer" context-id="" parent-id="Viewer" object-id="SubMesh">
|
||||||
<popup-item item-id="200" pos-id="" label-id="Erase" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="201" pos-id="" label-id="Edit" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="900" pos-id="" label-id="Show Info" icon-id="mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="202" pos-id="" label-id="Update View" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<separator pos-id=""/>
|
||||||
|
<submenu label-id="Numbering" item-id="114" pos-id="">
|
||||||
|
<popup-item item-id="9010" pos-id="" label-id="Display Nodes #" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="9011" pos-id="" label-id="Display Elements #" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
</submenu>
|
||||||
|
<endsubmenu />
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<submenu label-id="Display Mode" item-id="1131" pos-id="">
|
||||||
|
<popup-item item-id="211" pos-id="" label-id="Wireframe" icon-id="mesh_wireframe.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="212" pos-id="" label-id="Shading" icon-id="mesh_shading.png" tooltip-id=""accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="215" pos-id="" label-id="Nodes" icon-id="mesh_points.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<popup-item item-id="213" pos-id="" label-id="Shrink" icon-id="mesh_shrink.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
</submenu>
|
||||||
|
<endsubmenu />
|
||||||
|
<popup-item item-id="1132" pos-id="" label-id="Colors / Size" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="1133" pos-id="" label-id="Transparency" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<submenu label-id="Control" item-id="2000" pos-id="">
|
||||||
|
<popup-item item-id="6001" pos-id="" label-id="Length" icon-id="mesh_length.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6003" pos-id="" label-id="Free borders" icon-id="mesh_free_edges.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6004" pos-id="" label-id="Borders at multi-connection" icon-id="mesh_multi_edges.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<!-- popup-item item-id="6002" pos-id="" label-id="Connectivity" icon-id="mesh_connectivity.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/ -->
|
||||||
|
<popup-item item-id="6011" pos-id="" label-id="Area" icon-id="mesh_area.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6012" pos-id="" label-id="Taper" icon-id="mesh_taper.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6013" pos-id="" label-id="Aspect Ratio" icon-id="mesh_aspect.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6014" pos-id="" label-id="Minimum angle" icon-id="mesh_angle.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6015" pos-id="" label-id="Warp" icon-id="mesh_wrap.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6016" pos-id="" label-id="Skew" icon-id="mesh_skew.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<popup-item item-id="200" pos-id="" label-id="Reset" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<popup-item item-id="201" pos-id="" label-id="Scalar Bar Properties" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
</submenu>
|
||||||
|
<endsubmenu />
|
||||||
|
<separator pos-id=""/>
|
||||||
|
</popupmenu>
|
||||||
|
|
||||||
|
<popupmenu label-id="Popup for Viewer" context-id="" parent-id="Viewer" object-id="Group">
|
||||||
|
<popup-item item-id="803" pos-id="" label-id="Edit" icon-id="mesh_edit_group.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="900" pos-id="" label-id="Show Info" icon-id="mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<submenu label-id="Numbering" item-id="114" pos-id="">
|
||||||
|
<popup-item item-id="9010" pos-id="" label-id="Display Nodes #" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="9011" pos-id="" label-id="Display Elements #" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
</submenu>
|
||||||
|
<endsubmenu />
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<submenu label-id="Display Mode" item-id="1131" pos-id="">
|
||||||
|
<popup-item item-id="211" pos-id="" label-id="Wireframe" icon-id="mesh_wireframe.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="212" pos-id="" label-id="Shading" icon-id="mesh_shading.png" tooltip-id=""accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="215" pos-id="" label-id="Nodes" icon-id="mesh_points.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<popup-item item-id="213" pos-id="" label-id="Shrink" icon-id="mesh_shrink.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
</submenu>
|
||||||
|
<endsubmenu />
|
||||||
|
<popup-item item-id="1132" pos-id="" label-id="Colors / Size" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="1133" pos-id="" label-id="Transparency" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<submenu label-id="Control" item-id="2000" pos-id="">
|
||||||
|
<popup-item item-id="6001" pos-id="" label-id="Length" icon-id="mesh_length.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6003" pos-id="" label-id="Free borders" icon-id="mesh_free_edges.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6004" pos-id="" label-id="Borders at multi-connection" icon-id="mesh_multi_edges.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<!-- popup-item item-id="6002" pos-id="" label-id="Connectivity" icon-id="mesh_connectivity.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/ -->
|
||||||
|
<popup-item item-id="6011" pos-id="" label-id="Area" icon-id="mesh_area.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6012" pos-id="" label-id="Taper" icon-id="mesh_taper.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6013" pos-id="" label-id="Aspect Ratio" icon-id="mesh_aspect.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6014" pos-id="" label-id="Minimum angle" icon-id="mesh_angle.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6015" pos-id="" label-id="Warp" icon-id="mesh_wrap.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6016" pos-id="" label-id="Skew" icon-id="mesh_skew.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<popup-item item-id="200" pos-id="" label-id="Reset" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<popup-item item-id="201" pos-id="" label-id="Scalar Bar Properties" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
</submenu>
|
||||||
|
<endsubmenu />
|
||||||
|
<separator pos-id=""/>
|
||||||
|
</popupmenu>
|
||||||
|
|
||||||
|
<popupmenu label-id="Elements" context-id="" parent-id="Viewer" object-id="Elements">
|
||||||
|
<popup-item item-id="804" pos-id="" label-id="Add" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="805" pos-id="" label-id="Remove" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
</popupmenu>
|
</popupmenu>
|
||||||
|
|
||||||
</menubar>
|
</menubar>
|
||||||
|
|
||||||
<!-- ///////////////////////////////////// TOOLBARS ////////////////////////////////////// -->
|
<!-- ///////////////////////////////////// TOOLBARS ////////////////////////////////////// -->
|
||||||
<toolbar label-id="Mesh Toolbar">
|
<toolbar label-id="Mesh Toolbar">
|
||||||
<toolbutton-item item-id="703" pos-id="" label-id="Init" icon-id="mesh_init.png" tooltip-id="Global Hyp." accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="703" pos-id="" label-id="Init" icon-id="mesh_init.png" tooltip-id="Global Hypothesis" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<toolbutton-item item-id="702" pos-id="" label-id="Add SubMesh" icon-id="mesh_add_sub.png" tooltip-id="Local Hyp." accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="702" pos-id="" label-id="Add SubMesh" icon-id="mesh_add_sub.png" tooltip-id="Local Hypothesis" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<toolbutton-item item-id="704" pos-id="" label-id="Edit" icon-id="mesh_edit.png" tooltip-id="Edit Hyp." accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="704" pos-id="" label-id="Edit" icon-id="mesh_edit.png" tooltip-id="Edit Hypothesis" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<separatorTB/>
|
<separatorTB/>
|
||||||
<toolbutton-item item-id="701" pos-id="" label-id="Compute" icon-id="mesh_compute.png" tooltip-id="Compute" accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="701" pos-id="" label-id="Compute" icon-id="mesh_compute.png" tooltip-id="Compute" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<separatorTB/>
|
<separatorTB/>
|
||||||
|
<toolbutton-item item-id="801" pos-id="" label-id="Create Group" icon-id="mesh_tree_group.png" tooltip-id="Create Group" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<toolbutton-item item-id="802" pos-id="" label-id="Construct Group" icon-id="mesh_make_group.png" tooltip-id="Construct Group" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<toolbutton-item item-id="803" pos-id="" label-id="Edit Group" icon-id="mesh_edit_group.png" tooltip-id="Edit Group" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separatorTB/>
|
||||||
<toolbutton-item item-id="900" pos-id="" label-id="Mesh Infos" icon-id="mesh_info.png" tooltip-id="Mesh Infos" accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="900" pos-id="" label-id="Mesh Infos" icon-id="mesh_info.png" tooltip-id="Mesh Infos" accel-id="" toggle-id="" execute-action=""/>
|
||||||
</toolbar>
|
</toolbar>
|
||||||
|
|
||||||
<toolbar label-id="Hypotheses Toolbar">
|
<toolbar label-id="Hypotheses Toolbar">
|
||||||
<toolbutton-item item-id="5030" label-id="Average length" icon-id="mesh_hypo_length.png" tooltip-id="Avreage length Hypothesis" accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="5000" label-id="Create Hypotheses" icon-id="mesh_hypo_length.png" tooltip-id="Create Hypotheses" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<toolbutton-item item-id="5031" label-id="Segments" icon-id="mesh_hypo_segment.png" tooltip-id="Nb. Segments Hypothesis" accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="5010" label-id="Create Algorithms" icon-id="mesh_algo_mefisto.png" tooltip-id="Create Algorithms" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<toolbutton-item item-id="5032" label-id="Max. Triangle Area" icon-id="mesh_hypo_area.png" tooltip-id="Max. Triangle Area Hypothesis" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<toolbutton-item item-id="5033" label-id="Max. Hexahedron or Tetrahedron Volume" icon-id="mesh_hypo_volume.png" tooltip-id="Max. Hexahedron or Tetrahedron Volume Hypothesis" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<toolbutton-item item-id="5034" label-id="Length From Edges (2D Hyp. for Triangulator)" icon-id="mesh_hypo_length.png" tooltip-id="Length From Edges Hypothesis" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<separatorTB/>
|
|
||||||
<toolbutton-item item-id="5000" label-id="Wire Discretisation" icon-id="mesh_algo_regular.png" tooltip-id="Wire Discratisation Algorithm" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<toolbutton-item item-id="5010" label-id="Triangle (Mefisto)" icon-id="mesh_algo_mefisto.png" tooltip-id="Triangle (Mefisto) Algorithm" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<toolbutton-item item-id="5011" label-id="Quadrangle (Mapping)" icon-id="mesh_algo_quad.png" tooltip-id="Quadrangle (Mapping) Algorithm" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<toolbutton-item item-id="5020" label-id="Hexahedron (i,j,k)" icon-id="mesh_algo_hexa.png" tooltip-id="Hexahedron (i,j,k) Algorithm" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<toolbutton-item item-id="5021" label-id="Tetrahedron (Netgen)" icon-id="mesh_algo_hexa.png" tooltip-id="Tetrahedron (Netgen) Delaunay Algorithm" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
</toolbar>
|
</toolbar>
|
||||||
|
|
||||||
<toolbar label-id="Controls toolbar">
|
<toolbar label-id="Controls toolbar">
|
||||||
<toolbutton-item item-id="6001" label-id="Length" icon-id="mesh_length.png" tooltip-id="Length" accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="6001" label-id="Length" icon-id="mesh_length.png" tooltip-id="Length" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<toolbutton-item item-id="6002" label-id="Connectivity" icon-id="mesh_connectivity.png" tooltip-id="Connectivity" accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="6003" label-id="Free borders" icon-id="mesh_free_edges.png" tooltip-id="Free borders" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<toolbutton-item item-id="6004" label-id="Borders at multi-connection" icon-id="mesh_multi_edges.png" tooltip-id="Borders at multi-connection" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<!--<toolbutton-item item-id="6002" label-id="Connectivity" icon-id="mesh_connectivity.png" tooltip-id="Connectivity" accel-id="" toggle-id="" execute-action=""/>-->
|
||||||
<toolbutton-item item-id="6011" label-id="Area" icon-id="mesh_area.png" tooltip-id="Area" accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="6011" label-id="Area" icon-id="mesh_area.png" tooltip-id="Area" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<toolbutton-item item-id="6012" label-id="Taper" icon-id="mesh_taper.png" tooltip-id="Taper" accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="6012" label-id="Taper" icon-id="mesh_taper.png" tooltip-id="Taper" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<toolbutton-item item-id="6013" label-id="Aspect Ratio" icon-id="mesh_aspect.png" tooltip-id="Aspect Ratio" accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="6013" label-id="Aspect Ratio" icon-id="mesh_aspect.png" tooltip-id="Aspect Ratio" accel-id="" toggle-id="" execute-action=""/>
|
||||||
@ -233,16 +349,12 @@
|
|||||||
|
|
||||||
<toolbar label-id="Modification toolbar">
|
<toolbar label-id="Modification toolbar">
|
||||||
<toolbutton-item item-id="405" label-id="Move Node" icon-id="mesh_move_node.png" tooltip-id="Move Node" accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="405" label-id="Move Node" icon-id="mesh_move_node.png" tooltip-id="Move Node" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<toolbutton-item item-id="806" label-id="Orientation" icon-id="mesh_orientation.png" tooltip-id="Orientation" accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="406" label-id="Orientation" icon-id="mesh_orientation.png" tooltip-id="Orientation" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<toolbutton-item item-id="807" label-id="Diagonal Inversion" icon-id="mesh_diagonal.png" tooltip-id="Diagonal Inversion" accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="407" label-id="Diagonal Inversion" icon-id="mesh_diagonal.png" tooltip-id="Diagonal Inversion" accel-id="" toggle-id="" execute-action=""/>
|
||||||
</toolbar>
|
</toolbar>
|
||||||
|
|
||||||
<toolbar label-id="Display Mode Toolbar">
|
<toolbar label-id="Display Mode Toolbar">
|
||||||
<toolbutton-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="Update View" accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="Update View" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<separatorTB/>
|
|
||||||
<toolbutton-item item-id="211" pos-id="" label-id="Wireframe" icon-id="mesh_wireframe.png" tooltip-id="Wireframe" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<toolbutton-item item-id="212" pos-id="" label-id="Shading" icon-id="mesh_shading.png" tooltip-id="shading" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<toolbutton-item item-id="213" pos-id="" label-id="Shrink" icon-id="mesh_shrink.png" tooltip-id="shrink" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
</toolbar>
|
</toolbar>
|
||||||
|
|
||||||
</desktop>
|
</desktop>
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
<submenu label-id="Import" item-id="11" pos-id="8">
|
<submenu label-id="Import" item-id="11" pos-id="8">
|
||||||
<popup-item item-id="111" pos-id="" label-id="DAT file" icon-id="" tooltip-id="" accel-id="Ctrl+B" toggle-id="" execute-action=""/>
|
<popup-item item-id="111" pos-id="" label-id="DAT file" icon-id="" tooltip-id="" accel-id="Ctrl+B" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="112" pos-id="" label-id="UNV File" icon-id="" tooltip-id="" accel-id="Ctrl+I" toggle-id="" execute-action=""/>
|
<popup-item item-id="112" pos-id="" label-id="UNV File" icon-id="" tooltip-id="" accel-id="Ctrl+I" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="113" pos-id="" label-id="MED File" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="113" pos-id="" label-id="MED File" icon-id="" tooltip-id="" accel-id="Ctrl+M" toggle-id="" execute-action=""/>
|
||||||
</submenu>
|
</submenu>
|
||||||
<endsubmenu />
|
<endsubmenu />
|
||||||
<submenu label-id="Export" item-id="12" pos-id="9">
|
<submenu label-id="Export" item-id="12" pos-id="9">
|
||||||
@ -37,17 +37,8 @@
|
|||||||
|
|
||||||
<!-- ************************** Hypothesis (menubar) ************************************ -->
|
<!-- ************************** Hypothesis (menubar) ************************************ -->
|
||||||
<menu-item label-id="Hypotheses" item-id="50" pos-id="3">
|
<menu-item label-id="Hypotheses" item-id="50" pos-id="3">
|
||||||
<popup-item item-id="5030" pos-id="" label-id="Average length" icon-id="mesh_hypo_length.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="5000" pos-id="" label-id="Create Hypothesis" icon-id="mesh_hypo_length.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="5031" pos-id="" label-id="Nb. Segments" icon-id="mesh_hypo_segment.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="5010" pos-id="" label-id="Create Algorithm" icon-id="mesh_algo_mefisto.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="5032" pos-id="" label-id="Max. Triangle Area" icon-id="mesh_hypo_area.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<popup-item item-id="5033" pos-id="" label-id="Max. Hexahedron or Tetrahedron Volume" icon-id="mesh_hypo_volume.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<popup-item item-id="5034" pos-id="" label-id="Length From Edges (2D Hyp. for Triangulator)" icon-id="mesh_hypo_length.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<separator pos-id=""/>
|
|
||||||
<popup-item item-id="5000" pos-id="" label-id="Wire discretisation" icon-id="mesh_algo_regular.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<popup-item item-id="5010" pos-id="" label-id="Triangle (Mefisto)" icon-id="mesh_algo_mefisto.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<popup-item item-id="5011" pos-id="" label-id="Quadrangle (Mapping)" icon-id="mesh_algo_quad.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<popup-item item-id="5020" pos-id="" label-id="Hexahedron (i,j,k)" icon-id="mesh_algo_hexa.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<popup-item item-id="5021" pos-id="" label-id="Tetrahedron (Netgen)" icon-id="mesh_algo_tetra.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
</menu-item>
|
</menu-item>
|
||||||
|
|
||||||
<!-- ************************** Mesh (menubar) ************************************ -->
|
<!-- ************************** Mesh (menubar) ************************************ -->
|
||||||
@ -58,6 +49,8 @@
|
|||||||
<separator pos-id=""/>
|
<separator pos-id=""/>
|
||||||
<popup-item item-id="701" pos-id="" label-id="Compute" icon-id="mesh_compute.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="701" pos-id="" label-id="Compute" icon-id="mesh_compute.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<separator pos-id=""/>
|
<separator pos-id=""/>
|
||||||
|
<popup-item item-id="801" pos-id="" label-id="Create Group" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
<popup-item item-id="900" pos-id="" label-id="Mesh Infos" icon-id="mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="900" pos-id="" label-id="Mesh Infos" icon-id="mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
</menu-item>
|
</menu-item>
|
||||||
|
|
||||||
@ -90,8 +83,8 @@
|
|||||||
</submenu>
|
</submenu>
|
||||||
<endsubmenu />
|
<endsubmenu />
|
||||||
<popup-item item-id="405" pos-id="" label-id="Move Node" icon-id="mesh_move_node.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="405" pos-id="" label-id="Move Node" icon-id="mesh_move_node.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="806" pos-id="" label-id="Orientation" icon-id="mesh_orientation.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="406" pos-id="" label-id="Orientation" icon-id="mesh_orientation.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="807" pos-id="" label-id="Diagonal Inversion" icon-id="mesh_diagonal.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="407" pos-id="" label-id="Diagonal Inversion" icon-id="mesh_diagonal.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
</menu-item>
|
</menu-item>
|
||||||
|
|
||||||
<!-- ************************** Numbering (menubar) ************************************ -->
|
<!-- ************************** Numbering (menubar) ************************************ -->
|
||||||
@ -111,7 +104,7 @@
|
|||||||
<endsubmenu />
|
<endsubmenu />
|
||||||
<popup-item item-id="1001" pos-id="" label-id="Automatic Update" icon-id="" tooltip-id="" accel-id="" toggle-id="false" execute-action=""/>
|
<popup-item item-id="1001" pos-id="" label-id="Automatic Update" icon-id="" tooltip-id="" accel-id="" toggle-id="false" execute-action=""/>
|
||||||
<separator pos-id=""/>
|
<separator pos-id=""/>
|
||||||
<popup-item item-id="1003" pos-id="" label-id="Colors - Size" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="1003" pos-id="" label-id="Colors - Size" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<separator pos-id=""/>
|
<separator pos-id=""/>
|
||||||
<popup-item item-id="1005" pos-id="" label-id="Scalars Bar" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="1005" pos-id="" label-id="Scalars Bar" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
</submenu>
|
</submenu>
|
||||||
@ -139,11 +132,15 @@
|
|||||||
<popup-item item-id="701" pos-id="" label-id="Compute" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="701" pos-id="" label-id="Compute" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="214" pos-id="" label-id="Update" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="214" pos-id="" label-id="Update" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<separator pos-id=""/>
|
<separator pos-id=""/>
|
||||||
|
<popup-item item-id="801" pos-id="" label-id="Create Group" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
<popup-item item-id="1101" pos-id="" label-id="Rename" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="1101" pos-id="" label-id="Rename" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
</popupmenu>
|
</popupmenu>
|
||||||
|
|
||||||
<popupmenu label-id="Popup for ObjectBrowser" context-id="" parent-id="ObjectBrowser" object-id="SubMesh">
|
<popupmenu label-id="Popup for ObjectBrowser" context-id="" parent-id="ObjectBrowser" object-id="SubMesh">
|
||||||
<popup-item item-id="706" pos-id="" label-id="Edit Local Hyp." icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="706" pos-id="" label-id="Edit Local Hyp." icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<separator pos-id=""/>
|
||||||
|
<popup-item item-id="802" pos-id="" label-id="Construct Group" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
</popupmenu>
|
</popupmenu>
|
||||||
|
|
||||||
<popupmenu label-id="Popup for ObjectBrowser" context-id="" parent-id="ObjectBrowser" object-id="Hypothesis">
|
<popupmenu label-id="Popup for ObjectBrowser" context-id="" parent-id="ObjectBrowser" object-id="Hypothesis">
|
||||||
@ -151,13 +148,13 @@
|
|||||||
<popup-item item-id="1102" pos-id="" label-id="Unassign Hyp." icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="1102" pos-id="" label-id="Unassign Hyp." icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="1101" pos-id="" label-id="Rename" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="1101" pos-id="" label-id="Rename" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
</popupmenu>
|
</popupmenu>
|
||||||
|
|
||||||
<popupmenu label-id="Popup for ObjectBrowser" context-id="" parent-id="ObjectBrowser" object-id="Algorithm">
|
<popupmenu label-id="Popup for ObjectBrowser" context-id="" parent-id="ObjectBrowser" object-id="Algorithm">
|
||||||
<popup-item item-id="1102" pos-id="" label-id="Unassign Algo." icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="1102" pos-id="" label-id="Unassign Algo." icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="1101" pos-id="" label-id="Rename" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="1101" pos-id="" label-id="Rename" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
</popupmenu>
|
</popupmenu>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<popupmenu label-id="Popup for Viewer" context-id="" parent-id="Viewer" object-id="Mesh">
|
<popupmenu label-id="Popup for Viewer" context-id="" parent-id="Viewer" object-id="Mesh">
|
||||||
<popup-item item-id="214" pos-id="" label-id="Update" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="214" pos-id="" label-id="Update" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<separator pos-id=""/>
|
<separator pos-id=""/>
|
||||||
@ -195,17 +192,8 @@
|
|||||||
</toolbar>
|
</toolbar>
|
||||||
|
|
||||||
<toolbar label-id="Hypotheses Toolbar">
|
<toolbar label-id="Hypotheses Toolbar">
|
||||||
<toolbutton-item item-id="5030" label-id="Average length" icon-id="mesh_hypo_length.png" tooltip-id="Avreage length Hypothesis" accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="5000" label-id="Create Hypothesis" icon-id="mesh_hypo_length.png" tooltip-id="Create Hypothesis" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<toolbutton-item item-id="5031" label-id="Segments" icon-id="mesh_hypo_segment.png" tooltip-id="Nb. Segments Hypothesis" accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="5010" label-id="Create Algorithm" icon-id="mesh_algo_mefisto.png" tooltip-id="Create Algorithm" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<toolbutton-item item-id="5032" label-id="Max. Triangle Area" icon-id="mesh_hypo_area.png" tooltip-id="Max. Triangle Area Hypothesis" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<toolbutton-item item-id="5033" label-id="Max. Hexahedron or Tetrahedron Volume" icon-id="mesh_hypo_volume.png" tooltip-id="Max. Hexahedron or Tetrahedron Volume Hypothesis" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<toolbutton-item item-id="5034" label-id="Length From Edges (2D Hyp. for Triangulator)" icon-id="mesh_hypo_length.png" tooltip-id="Length From Edges Hypothesis" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<separatorTB/>
|
|
||||||
<toolbutton-item item-id="5000" label-id="Wire Discretisation" icon-id="mesh_algo_regular.png" tooltip-id="Wire Discratisation Algorithm" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<toolbutton-item item-id="5010" label-id="Triangle (Mefisto)" icon-id="mesh_algo_mefisto.png" tooltip-id="Triangle (Mefisto) Algorithm" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<toolbutton-item item-id="5011" label-id="Quadrangle (Mapping)" icon-id="mesh_algo_quad.png" tooltip-id="Quadrangle (Mapping) Algorithm" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<toolbutton-item item-id="5020" label-id="Hexahedron (i,j,k)" icon-id="mesh_algo_hexa.png" tooltip-id="Hexahedron (i,j,k) Algorithm" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
<toolbutton-item item-id="5021" label-id="Tetrahedron (Netgen)" icon-id="mesh_algo_hexa.png" tooltip-id="Tetrahedron (Netgen) Delaunay Algorithm" accel-id="" toggle-id="" execute-action=""/>
|
|
||||||
</toolbar>
|
</toolbar>
|
||||||
|
|
||||||
<toolbar label-id="Controls toolbar">
|
<toolbar label-id="Controls toolbar">
|
||||||
@ -233,8 +221,8 @@
|
|||||||
|
|
||||||
<toolbar label-id="Modification toolbar">
|
<toolbar label-id="Modification toolbar">
|
||||||
<toolbutton-item item-id="405" label-id="Move Node" icon-id="mesh_move_node.png" tooltip-id="Move Node" accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="405" label-id="Move Node" icon-id="mesh_move_node.png" tooltip-id="Move Node" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<toolbutton-item item-id="806" label-id="Orientation" icon-id="mesh_orientation.png" tooltip-id="Orientation" accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="406" label-id="Orientation" icon-id="mesh_orientation.png" tooltip-id="Orientation" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<toolbutton-item item-id="807" label-id="Diagonal Inversion" icon-id="mesh_diagonal.png" tooltip-id="Diagonal Inversion" accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="407" label-id="Diagonal Inversion" icon-id="mesh_diagonal.png" tooltip-id="Diagonal Inversion" accel-id="" toggle-id="" execute-action=""/>
|
||||||
</toolbar>
|
</toolbar>
|
||||||
|
|
||||||
<toolbar label-id="Display Mode Toolbar">
|
<toolbar label-id="Display Mode Toolbar">
|
||||||
|
78
resources/StdMeshers.xml
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
<?xml version='1.0' encoding='us-ascii'?>
|
||||||
|
<!DOCTYPE meshers PUBLIC "" "desktop.dtd">
|
||||||
|
|
||||||
|
<!-- GUI customization for MESH component -->
|
||||||
|
|
||||||
|
<meshers>
|
||||||
|
|
||||||
|
<meshers-group name="Standard Meshers"
|
||||||
|
resources="StdMeshers"
|
||||||
|
server-lib="libStdMeshersEngine.so"
|
||||||
|
gui-lib="libStdMeshersGUI.so">
|
||||||
|
<hypotheses>
|
||||||
|
|
||||||
|
<hypothesis type="LocalLength"
|
||||||
|
label-id="Average length"
|
||||||
|
icon-id="mesh_hypo_length.png"/>
|
||||||
|
|
||||||
|
<hypothesis type="LengthFromEdges"
|
||||||
|
label-id="Length From Edges (2D Hyp. for Triangulator)"
|
||||||
|
icon-id="mesh_hypo_length.png"/>
|
||||||
|
|
||||||
|
<hypothesis type="NumberOfSegments"
|
||||||
|
label-id="Nb. Segments"
|
||||||
|
icon-id="mesh_hypo_segment.png"/>
|
||||||
|
|
||||||
|
<hypothesis type="MaxElementArea"
|
||||||
|
label-id="Max. Triangle Area"
|
||||||
|
icon-id="mesh_hypo_area.png"/>
|
||||||
|
|
||||||
|
<hypothesis type="MaxElementVolume"
|
||||||
|
label-id="Max. Hexahedron or Tetrahedron Volume"
|
||||||
|
icon-id="mesh_hypo_volume.png"/>
|
||||||
|
|
||||||
|
<hypothesis type="NotConformAllowed"
|
||||||
|
label-id="Not Conform Mesh Allowed"
|
||||||
|
icon-id="mesh_hypo_length.png"/>
|
||||||
|
</hypotheses>
|
||||||
|
|
||||||
|
<algorithms>
|
||||||
|
|
||||||
|
<algorithm type="Regular_1D"
|
||||||
|
label-id="Wire discretisation"
|
||||||
|
icon-id="mesh_algo_regular.png"/>
|
||||||
|
|
||||||
|
<algorithm type="MEFISTO_2D"
|
||||||
|
label-id="Triangle (Mefisto)"
|
||||||
|
icon-id="mesh_algo_mefisto.png"/>
|
||||||
|
|
||||||
|
<algorithm type="Quadrangle_2D"
|
||||||
|
label-id="Quadrangle (Mapping)"
|
||||||
|
icon-id="mesh_algo_quad.png"/>
|
||||||
|
|
||||||
|
<algorithm type="Hexa_3D"
|
||||||
|
label-id="Hexahedron (i,j,k)"
|
||||||
|
icon-id="mesh_algo_hexa.png"/>
|
||||||
|
</algorithms>
|
||||||
|
</meshers-group>
|
||||||
|
|
||||||
|
<meshers-group name="Your Meshers Group"
|
||||||
|
resources=""
|
||||||
|
server-lib=""
|
||||||
|
gui-lib="">
|
||||||
|
<hypotheses>
|
||||||
|
|
||||||
|
<hypothesis type=""
|
||||||
|
label-id=""
|
||||||
|
icon-id=""/>
|
||||||
|
</hypotheses>
|
||||||
|
|
||||||
|
<algorithms>
|
||||||
|
|
||||||
|
<algorithm type=""
|
||||||
|
label-id=""
|
||||||
|
icon-id=""/>
|
||||||
|
</algorithms>
|
||||||
|
</meshers-group>
|
||||||
|
|
||||||
|
</meshers>
|
BIN
resources/mesh_edit_group.png
Normal file
After Width: | Height: | Size: 543 B |
BIN
resources/mesh_free_edges.png
Executable file
After Width: | Height: | Size: 489 B |
BIN
resources/mesh_make_group.png
Normal file
After Width: | Height: | Size: 432 B |
BIN
resources/mesh_multi_edges.png
Executable file
After Width: | Height: | Size: 480 B |
BIN
resources/mesh_points.png
Normal file
After Width: | Height: | Size: 499 B |
BIN
resources/mesh_tree_group.png
Normal file
After Width: | Height: | Size: 411 B |
BIN
resources/mesh_tree_importedmesh.png
Normal file
After Width: | Height: | Size: 912 B |
50
src/Controls/Makefile.in
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
# SMESH OBJECT : interactive object for SMESH visualization
|
||||||
|
#
|
||||||
|
# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
#
|
||||||
|
# This library is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
|
# License as published by the Free Software Foundation; either
|
||||||
|
# version 2.1 of the License.
|
||||||
|
#
|
||||||
|
# This library 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
|
||||||
|
# Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public
|
||||||
|
# License along with this library; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
#
|
||||||
|
# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# File : Makefile.in
|
||||||
|
# Module : SMESH
|
||||||
|
|
||||||
|
top_srcdir=@top_srcdir@
|
||||||
|
top_builddir=../..
|
||||||
|
srcdir=@srcdir@
|
||||||
|
VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_builddir)/idl
|
||||||
|
|
||||||
|
@COMMENCE@
|
||||||
|
|
||||||
|
EXPORT_HEADERS = SMESH_Controls.hxx
|
||||||
|
|
||||||
|
|
||||||
|
# Libraries targets
|
||||||
|
|
||||||
|
LIB = libSMESHControls.la
|
||||||
|
LIB_SRC = SMESH_Controls.cxx
|
||||||
|
|
||||||
|
# Executables targets
|
||||||
|
BIN = SMESHControls
|
||||||
|
BIN_SRC =
|
||||||
|
|
||||||
|
CPPFLAGS+=$(OCC_INCLUDES) $(BOOST_CPPFLAGS)
|
||||||
|
|
||||||
|
LDFLAGS+=$(OCC_KERNEL_LIBS) -L${KERNEL_ROOT_DIR}/lib/salome -lOpUtil -lSMDS
|
||||||
|
|
||||||
|
@CONCLUDE@
|
42
src/Controls/SMESHControls.cxx
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
|
||||||
|
#include "SMESH_Controls.hxx"
|
||||||
|
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
using namespace SMESH::Controls;
|
||||||
|
new MinimumAngle();
|
||||||
|
new AspectRatio();
|
||||||
|
new Warping();
|
||||||
|
new Taper();
|
||||||
|
new Skew();
|
||||||
|
new Area();
|
||||||
|
new Length();
|
||||||
|
new MultiConnection();
|
||||||
|
new FreeBorders();
|
||||||
|
new LessThan();
|
||||||
|
new MoreThan();
|
||||||
|
new EqualTo();
|
||||||
|
new LogicalNOT();
|
||||||
|
new LogicalAND();
|
||||||
|
new LogicalOR();
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
774
src/Controls/SMESH_Controls.cxx
Normal file
@ -0,0 +1,774 @@
|
|||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
|
||||||
|
#include <set>
|
||||||
|
|
||||||
|
#include <gp_Pnt.hxx>
|
||||||
|
#include <gp_Vec.hxx>
|
||||||
|
#include <gp_XYZ.hxx>
|
||||||
|
#include <Precision.hxx>
|
||||||
|
#include <TColgp_SequenceOfXYZ.hxx>
|
||||||
|
#include <TColStd_MapOfInteger.hxx>
|
||||||
|
|
||||||
|
#include "SMDS_Mesh.hxx"
|
||||||
|
#include "SMDS_Iterator.hxx"
|
||||||
|
#include "SMDS_MeshElement.hxx"
|
||||||
|
#include "SMDS_MeshNode.hxx"
|
||||||
|
|
||||||
|
#include "SMESH_Controls.hxx"
|
||||||
|
|
||||||
|
/*
|
||||||
|
AUXILIARY METHODS
|
||||||
|
*/
|
||||||
|
|
||||||
|
static inline double getAngle( const gp_XYZ& P1, const gp_XYZ& P2, const gp_XYZ& P3 )
|
||||||
|
{
|
||||||
|
return gp_Vec( P1 - P2 ).Angle( gp_Vec( P3 - P2 ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline double getArea( const gp_XYZ& P1, const gp_XYZ& P2, const gp_XYZ& P3 )
|
||||||
|
{
|
||||||
|
gp_Vec aVec1( P2 - P1 );
|
||||||
|
gp_Vec aVec2( P3 - P1 );
|
||||||
|
return ( aVec1 ^ aVec2 ).Magnitude() * 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline double getArea( const gp_Pnt& P1, const gp_Pnt& P2, const gp_Pnt& P3 )
|
||||||
|
{
|
||||||
|
return getArea( P1.XYZ(), P2.XYZ(), P3.XYZ() );
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline double getDistance( const gp_XYZ& P1, const gp_XYZ& P2 )
|
||||||
|
{
|
||||||
|
double aDist = gp_Pnt( P1 ).Distance( gp_Pnt( P2 ) );
|
||||||
|
return aDist;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int getNbMultiConnection( SMDS_Mesh* theMesh, const int theId )
|
||||||
|
{
|
||||||
|
if ( theMesh == 0 )
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
const SMDS_MeshElement* anEdge = theMesh->FindElement( theId );
|
||||||
|
if ( anEdge == 0 || anEdge->GetType() != SMDSAbs_Edge || anEdge->NbNodes() != 2 )
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
TColStd_MapOfInteger aMap;
|
||||||
|
|
||||||
|
int aResult = 0;
|
||||||
|
SMDS_ElemIteratorPtr anIter = anEdge->nodesIterator();
|
||||||
|
if ( anIter != 0 )
|
||||||
|
{
|
||||||
|
while( anIter->more() )
|
||||||
|
{
|
||||||
|
const SMDS_MeshNode* aNode = (SMDS_MeshNode*)anIter->next();
|
||||||
|
if ( aNode == 0 )
|
||||||
|
return 0;
|
||||||
|
SMDS_ElemIteratorPtr anElemIter = aNode->GetInverseElementIterator();
|
||||||
|
while( anElemIter->more() )
|
||||||
|
{
|
||||||
|
const SMDS_MeshElement* anElem = anElemIter->next();
|
||||||
|
if ( anElem != 0 && anElem->GetType() != SMDSAbs_Edge )
|
||||||
|
{
|
||||||
|
int anId = anElem->GetID();
|
||||||
|
|
||||||
|
if ( anIter->more() ) // i.e. first node
|
||||||
|
aMap.Add( anId );
|
||||||
|
else if ( aMap.Contains( anId ) )
|
||||||
|
aResult++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return aResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
using namespace SMESH::Controls;
|
||||||
|
|
||||||
|
/*
|
||||||
|
FUNCTORS
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : NumericalFunctor
|
||||||
|
Description : Base class for numerical functors
|
||||||
|
*/
|
||||||
|
NumericalFunctor::NumericalFunctor():
|
||||||
|
myMesh(NULL)
|
||||||
|
{}
|
||||||
|
|
||||||
|
void NumericalFunctor::SetMesh( SMDS_Mesh* theMesh )
|
||||||
|
{
|
||||||
|
myMesh = theMesh;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool NumericalFunctor::getPoints( const int theId,
|
||||||
|
TColgp_SequenceOfXYZ& theRes ) const
|
||||||
|
{
|
||||||
|
theRes.Clear();
|
||||||
|
|
||||||
|
if ( myMesh == 0 )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// Get nodes of the face
|
||||||
|
const SMDS_MeshElement* anElem = myMesh->FindElement( theId );
|
||||||
|
if ( anElem == 0 || anElem->GetType() != GetType() )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
int nbNodes = anElem->NbNodes();
|
||||||
|
|
||||||
|
SMDS_ElemIteratorPtr anIter = anElem->nodesIterator();
|
||||||
|
if ( anIter != 0 )
|
||||||
|
{
|
||||||
|
while( anIter->more() )
|
||||||
|
{
|
||||||
|
const SMDS_MeshNode* aNode = (SMDS_MeshNode*)anIter->next();
|
||||||
|
if ( aNode != 0 )
|
||||||
|
theRes.Append( gp_XYZ( aNode->X(), aNode->Y(), aNode->Z() ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : MinimumAngle
|
||||||
|
Description : Functor for calculation of minimum angle
|
||||||
|
*/
|
||||||
|
double MinimumAngle::GetValue( long theId )
|
||||||
|
{
|
||||||
|
TColgp_SequenceOfXYZ P;
|
||||||
|
if ( !getPoints( theId, P ) || P.Length() != 3 && P.Length() != 4 )
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
double aMin;
|
||||||
|
|
||||||
|
if ( P.Length() == 3 )
|
||||||
|
{
|
||||||
|
double A0 = getAngle( P( 3 ), P( 1 ), P( 2 ) );
|
||||||
|
double A1 = getAngle( P( 1 ), P( 2 ), P( 3 ) );
|
||||||
|
double A2 = getAngle( P( 2 ), P( 3 ), P( 1 ) );
|
||||||
|
|
||||||
|
aMin = Min( A0, Min( A1, A2 ) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
double A0 = getAngle( P( 4 ), P( 1 ), P( 2 ) );
|
||||||
|
double A1 = getAngle( P( 1 ), P( 2 ), P( 3 ) );
|
||||||
|
double A2 = getAngle( P( 2 ), P( 3 ), P( 4 ) );
|
||||||
|
double A3 = getAngle( P( 3 ), P( 4 ), P( 1 ) );
|
||||||
|
|
||||||
|
aMin = Min( Min( A0, A1 ), Min( A2, A3 ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
return aMin * 180 / PI;
|
||||||
|
}
|
||||||
|
|
||||||
|
SMDSAbs_ElementType MinimumAngle::GetType() const
|
||||||
|
{
|
||||||
|
return SMDSAbs_Face;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : AspectRatio
|
||||||
|
Description : Functor for calculating aspect ratio
|
||||||
|
*/
|
||||||
|
double AspectRatio::GetValue( long theId )
|
||||||
|
{
|
||||||
|
TColgp_SequenceOfXYZ P;
|
||||||
|
if ( !getPoints( theId, P ) || P.Length() != 3 && P.Length() != 4 )
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
int nbNodes = P.Length();
|
||||||
|
|
||||||
|
// Compute lengths of the sides
|
||||||
|
|
||||||
|
double aLen[ nbNodes ];
|
||||||
|
for ( int i = 0; i < nbNodes - 1; i++ )
|
||||||
|
aLen[ i ] = getDistance( P( i + 1 ), P( i + 2 ) );
|
||||||
|
aLen[ nbNodes - 1 ] = getDistance( P( 1 ), P( nbNodes ) );
|
||||||
|
|
||||||
|
// Compute aspect ratio
|
||||||
|
|
||||||
|
if ( nbNodes == 3 )
|
||||||
|
{
|
||||||
|
double aMaxLen = Max( aLen[ 0 ], Max( aLen[ 1 ], aLen[ 2 ] ) );
|
||||||
|
double anArea = getArea( P( 1 ), P( 2 ), P( 3 ) );
|
||||||
|
static double aCoef = sqrt( 3. ) / 4;
|
||||||
|
|
||||||
|
return anArea != 0 ? aCoef * aMaxLen * aMaxLen / anArea : 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
double aMaxLen = Max( Max( aLen[ 0 ], aLen[ 1 ] ), Max( aLen[ 2 ], aLen[ 3 ] ) );
|
||||||
|
double aMinLen = Min( Min( aLen[ 0 ], aLen[ 1 ] ), Min( aLen[ 2 ], aLen[ 3 ] ) );
|
||||||
|
|
||||||
|
return aMinLen != 0 ? aMaxLen / aMinLen : 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SMDSAbs_ElementType AspectRatio::GetType() const
|
||||||
|
{
|
||||||
|
return SMDSAbs_Face;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : Warping
|
||||||
|
Description : Functor for calculating warping
|
||||||
|
*/
|
||||||
|
double Warping::GetValue( long theId )
|
||||||
|
{
|
||||||
|
TColgp_SequenceOfXYZ P;
|
||||||
|
if ( !getPoints( theId, P ) || P.Length() != 4 )
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
gp_XYZ G = ( P( 1 ) + P( 2 ) + P( 3 ) + P( 4 ) ) / 4;
|
||||||
|
|
||||||
|
double A1 = ComputeA( P( 1 ), P( 2 ), P( 3 ), G );
|
||||||
|
double A2 = ComputeA( P( 2 ), P( 3 ), P( 4 ), G );
|
||||||
|
double A3 = ComputeA( P( 3 ), P( 4 ), P( 1 ), G );
|
||||||
|
double A4 = ComputeA( P( 4 ), P( 1 ), P( 2 ), G );
|
||||||
|
|
||||||
|
return Max( Max( A1, A2 ), Max( A3, A4 ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
double Warping::ComputeA( const gp_XYZ& thePnt1,
|
||||||
|
const gp_XYZ& thePnt2,
|
||||||
|
const gp_XYZ& thePnt3,
|
||||||
|
const gp_XYZ& theG ) const
|
||||||
|
{
|
||||||
|
double aLen1 = gp_Pnt( thePnt1 ).Distance( gp_Pnt( thePnt2 ) );
|
||||||
|
double aLen2 = gp_Pnt( thePnt2 ).Distance( gp_Pnt( thePnt3 ) );
|
||||||
|
double L = Min( aLen1, aLen2 ) * 0.5;
|
||||||
|
|
||||||
|
gp_XYZ GI = ( thePnt2 - thePnt1 ) / 2. - theG;
|
||||||
|
gp_XYZ GJ = ( thePnt3 - thePnt2 ) / 2. - theG;
|
||||||
|
gp_XYZ N = GI.Crossed( GJ );
|
||||||
|
N.Normalize();
|
||||||
|
|
||||||
|
double H = gp_Vec( thePnt2 - theG ).Dot( gp_Vec( N ) );
|
||||||
|
return asin( fabs( H / L ) ) * 180 / PI;
|
||||||
|
}
|
||||||
|
|
||||||
|
SMDSAbs_ElementType Warping::GetType() const
|
||||||
|
{
|
||||||
|
return SMDSAbs_Face;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : Taper
|
||||||
|
Description : Functor for calculating taper
|
||||||
|
*/
|
||||||
|
double Taper::GetValue( long theId )
|
||||||
|
{
|
||||||
|
TColgp_SequenceOfXYZ P;
|
||||||
|
if ( !getPoints( theId, P ) || P.Length() != 4 )
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
// Compute taper
|
||||||
|
double J1 = getArea( P( 4 ), P( 1 ), P( 2 ) ) / 2;
|
||||||
|
double J2 = getArea( P( 3 ), P( 1 ), P( 2 ) ) / 2;
|
||||||
|
double J3 = getArea( P( 2 ), P( 3 ), P( 4 ) ) / 2;
|
||||||
|
double J4 = getArea( P( 3 ), P( 4 ), P( 1 ) ) / 2;
|
||||||
|
|
||||||
|
double JA = 0.25 * ( J1 + J2 + J3 + J4 );
|
||||||
|
|
||||||
|
double T1 = fabs( ( J1 - JA ) / JA );
|
||||||
|
double T2 = fabs( ( J2 - JA ) / JA );
|
||||||
|
double T3 = fabs( ( J3 - JA ) / JA );
|
||||||
|
double T4 = fabs( ( J4 - JA ) / JA );
|
||||||
|
|
||||||
|
return Max( Max( T1, T2 ), Max( T3, T4 ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
SMDSAbs_ElementType Taper::GetType() const
|
||||||
|
{
|
||||||
|
return SMDSAbs_Face;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : Skew
|
||||||
|
Description : Functor for calculating skew in degrees
|
||||||
|
*/
|
||||||
|
static inline double skewAngle( const gp_XYZ& p1, const gp_XYZ& p2, const gp_XYZ& p3 )
|
||||||
|
{
|
||||||
|
gp_XYZ p12 = ( p2 + p1 ) / 2;
|
||||||
|
gp_XYZ p23 = ( p3 + p2 ) / 2;
|
||||||
|
gp_XYZ p31 = ( p3 + p1 ) / 2;
|
||||||
|
|
||||||
|
return gp_Vec( p31 - p2 ).Angle( p12 - p23 );
|
||||||
|
}
|
||||||
|
|
||||||
|
double Skew::GetValue( long theId )
|
||||||
|
{
|
||||||
|
TColgp_SequenceOfXYZ P;
|
||||||
|
if ( !getPoints( theId, P ) || P.Length() != 3 && P.Length() != 4 )
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
// Compute skew
|
||||||
|
static double PI2 = PI / 2;
|
||||||
|
if ( P.Length() == 3 )
|
||||||
|
{
|
||||||
|
double A0 = fabs( PI2 - skewAngle( P( 3 ), P( 1 ), P( 2 ) ) );
|
||||||
|
double A1 = fabs( PI2 - skewAngle( P( 1 ), P( 2 ), P( 3 ) ) );
|
||||||
|
double A2 = fabs( PI2 - skewAngle( P( 2 ), P( 3 ), P( 1 ) ) );
|
||||||
|
|
||||||
|
return Max( A0, Max( A1, A2 ) ) * 180 / PI;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gp_XYZ p12 = ( P( 1 ) + P( 2 ) ) / 2;
|
||||||
|
gp_XYZ p23 = ( P( 2 ) + P( 3 ) ) / 2;
|
||||||
|
gp_XYZ p34 = ( P( 3 ) + P( 4 ) ) / 2;
|
||||||
|
gp_XYZ p41 = ( P( 4 ) + P( 1 ) ) / 2;
|
||||||
|
|
||||||
|
double A = fabs( PI2 - gp_Vec( p34 - p12 ).Angle( p23 - p41 ) );
|
||||||
|
|
||||||
|
return A * 180 / PI;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SMDSAbs_ElementType Skew::GetType() const
|
||||||
|
{
|
||||||
|
return SMDSAbs_Face;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : Area
|
||||||
|
Description : Functor for calculating area
|
||||||
|
*/
|
||||||
|
double Area::GetValue( long theId )
|
||||||
|
{
|
||||||
|
TColgp_SequenceOfXYZ P;
|
||||||
|
if ( !getPoints( theId, P ) || P.Length() != 3 && P.Length() != 4 )
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if ( P.Length() == 3 )
|
||||||
|
return getArea( P( 1 ), P( 2 ), P( 3 ) );
|
||||||
|
else
|
||||||
|
return getArea( P( 1 ), P( 2 ), P( 3 ) ) + getArea( P( 1 ), P( 3 ), P( 4 ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
SMDSAbs_ElementType Area::GetType() const
|
||||||
|
{
|
||||||
|
return SMDSAbs_Face;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : Length
|
||||||
|
Description : Functor for calculating length off edge
|
||||||
|
*/
|
||||||
|
double Length::GetValue( long theId )
|
||||||
|
{
|
||||||
|
TColgp_SequenceOfXYZ P;
|
||||||
|
return getPoints( theId, P ) && P.Length() == 2 ? getDistance( P( 1 ), P( 2 ) ) : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
SMDSAbs_ElementType Length::GetType() const
|
||||||
|
{
|
||||||
|
return SMDSAbs_Edge;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : MultiConnection
|
||||||
|
Description : Functor for calculating number of faces conneted to the edge
|
||||||
|
*/
|
||||||
|
double MultiConnection::GetValue( long theId )
|
||||||
|
{
|
||||||
|
return getNbMultiConnection( myMesh, theId );
|
||||||
|
}
|
||||||
|
|
||||||
|
SMDSAbs_ElementType MultiConnection::GetType() const
|
||||||
|
{
|
||||||
|
return SMDSAbs_Edge;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
PREDICATES
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : FreeBorders
|
||||||
|
Description : Predicate for free borders
|
||||||
|
*/
|
||||||
|
|
||||||
|
FreeBorders::FreeBorders()
|
||||||
|
{
|
||||||
|
myMesh = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FreeBorders::SetMesh( SMDS_Mesh* theMesh )
|
||||||
|
{
|
||||||
|
myMesh = theMesh;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool FreeBorders::IsSatisfy( long theId )
|
||||||
|
{
|
||||||
|
return getNbMultiConnection( myMesh, theId ) == 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
SMDSAbs_ElementType FreeBorders::GetType() const
|
||||||
|
{
|
||||||
|
return SMDSAbs_Edge;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : FreeEdges
|
||||||
|
Description : Predicate for free Edges
|
||||||
|
*/
|
||||||
|
FreeEdges::FreeEdges()
|
||||||
|
{
|
||||||
|
myMesh = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FreeEdges::SetMesh( SMDS_Mesh* theMesh )
|
||||||
|
{
|
||||||
|
myMesh = theMesh;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool FreeEdges::IsSatisfy( long theId )
|
||||||
|
{
|
||||||
|
return getNbMultiConnection( myMesh, theId ) == 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
SMDSAbs_ElementType FreeEdges::GetType() const
|
||||||
|
{
|
||||||
|
return SMDSAbs_Face;
|
||||||
|
}
|
||||||
|
|
||||||
|
FreeEdges::Border::Border(long thePntId1, long thePntId2){
|
||||||
|
PntId[0] = thePntId1; PntId[1] = thePntId2;
|
||||||
|
if(thePntId1 > thePntId2){
|
||||||
|
PntId[1] = thePntId1; PntId[0] = thePntId2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//bool operator<(const FreeEdges::Border& x, const FreeEdges::Border& y){
|
||||||
|
// if(x.PntId[0] < y.PntId[0]) return true;
|
||||||
|
// if(x.PntId[0] == y.PntId[0])
|
||||||
|
// if(x.PntId[1] < y.PntId[1]) return true;
|
||||||
|
// return false;
|
||||||
|
//}
|
||||||
|
|
||||||
|
namespace SMESH{
|
||||||
|
namespace Controls{
|
||||||
|
struct EdgeBorder: public FreeEdges::Border{
|
||||||
|
long ElemId;
|
||||||
|
EdgeBorder(long theElemId, long thePntId1, long thePntId2):
|
||||||
|
FreeEdges::Border(thePntId1,thePntId2),
|
||||||
|
ElemId(theElemId)
|
||||||
|
{}
|
||||||
|
};
|
||||||
|
|
||||||
|
bool operator<(const FreeEdges::Border& x, const FreeEdges::Border& y){
|
||||||
|
if(x.PntId[0] < y.PntId[0]) return true;
|
||||||
|
if(x.PntId[0] == y.PntId[0])
|
||||||
|
if(x.PntId[1] < y.PntId[1]) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef std::set<EdgeBorder> EdgeBorderS;
|
||||||
|
|
||||||
|
inline void UpdateBorders(const EdgeBorder& theBorder,
|
||||||
|
EdgeBorderS& theRegistry,
|
||||||
|
EdgeBorderS& theContainer)
|
||||||
|
{
|
||||||
|
if(theRegistry.find(theBorder) == theRegistry.end()){
|
||||||
|
theRegistry.insert(theBorder);
|
||||||
|
theContainer.insert(theBorder);
|
||||||
|
}else{
|
||||||
|
theContainer.erase(theBorder);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FreeEdges::GetBoreders(Borders& theBorders)
|
||||||
|
{
|
||||||
|
EdgeBorderS aRegistry;
|
||||||
|
EdgeBorderS aContainer;
|
||||||
|
SMDS_FaceIteratorPtr anIter = myMesh->facesIterator();
|
||||||
|
for(; anIter->more(); ){
|
||||||
|
const SMDS_MeshFace* anElem = anIter->next();
|
||||||
|
long anElemId = anElem->GetID();
|
||||||
|
SMDS_ElemIteratorPtr aNodesIter = anElem->nodesIterator();
|
||||||
|
long aNodeId[2];
|
||||||
|
const SMDS_MeshElement* aNode;
|
||||||
|
if(aNodesIter->more()){
|
||||||
|
aNode = aNodesIter->next();
|
||||||
|
aNodeId[0] = aNodeId[1] = aNode->GetID();
|
||||||
|
}
|
||||||
|
for(; aNodesIter->more(); ){
|
||||||
|
aNode = aNodesIter->next();
|
||||||
|
EdgeBorder aBorder(anElemId,aNodeId[1],aNode->GetID());
|
||||||
|
aNodeId[1] = aNode->GetID();
|
||||||
|
//std::cout<<aBorder.PntId[0]<<"; "<<aBorder.PntId[1]<<"; "<<aBorder.ElemId<<"\n";
|
||||||
|
UpdateBorders(aBorder,aRegistry,aContainer);
|
||||||
|
}
|
||||||
|
EdgeBorder aBorder(anElemId,aNodeId[0],aNodeId[1]);
|
||||||
|
UpdateBorders(aBorder,aRegistry,aContainer);
|
||||||
|
}
|
||||||
|
//std::cout<<"aContainer.size() = "<<aContainer.size()<<"\n";
|
||||||
|
if(aContainer.size()){
|
||||||
|
EdgeBorderS::const_iterator anIter = aContainer.begin();
|
||||||
|
for(; anIter != aContainer.end(); anIter++){
|
||||||
|
const EdgeBorder& aBorder = *anIter;
|
||||||
|
//std::cout<<aBorder.PntId[0]<<"; "<<aBorder.PntId[1]<<"; "<<aBorder.ElemId<<"\n";
|
||||||
|
theBorders.insert(Borders::value_type(aBorder.ElemId,aBorder));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : Comparator
|
||||||
|
Description : Base class for comparators
|
||||||
|
*/
|
||||||
|
Comparator::Comparator():
|
||||||
|
myMargin(0)
|
||||||
|
{}
|
||||||
|
|
||||||
|
Comparator::~Comparator()
|
||||||
|
{}
|
||||||
|
|
||||||
|
void Comparator::SetMesh( SMDS_Mesh* theMesh )
|
||||||
|
{
|
||||||
|
if ( myFunctor )
|
||||||
|
myFunctor->SetMesh( theMesh );
|
||||||
|
}
|
||||||
|
|
||||||
|
void Comparator::SetMargin( double theValue )
|
||||||
|
{
|
||||||
|
myMargin = theValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Comparator::SetNumFunctor( NumericalFunctorPtr theFunct )
|
||||||
|
{
|
||||||
|
myFunctor = theFunct;
|
||||||
|
}
|
||||||
|
|
||||||
|
SMDSAbs_ElementType Comparator::GetType() const
|
||||||
|
{
|
||||||
|
return myFunctor ? myFunctor->GetType() : SMDSAbs_All;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : LessThan
|
||||||
|
Description : Comparator "<"
|
||||||
|
*/
|
||||||
|
bool LessThan::IsSatisfy( long theId )
|
||||||
|
{
|
||||||
|
return myFunctor && myFunctor->GetValue( theId ) < myMargin;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : MoreThan
|
||||||
|
Description : Comparator ">"
|
||||||
|
*/
|
||||||
|
bool MoreThan::IsSatisfy( long theId )
|
||||||
|
{
|
||||||
|
return myFunctor && myFunctor->GetValue( theId ) > myMargin;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : EqualTo
|
||||||
|
Description : Comparator "="
|
||||||
|
*/
|
||||||
|
EqualTo::EqualTo():
|
||||||
|
myToler(Precision::Confusion())
|
||||||
|
{}
|
||||||
|
|
||||||
|
bool EqualTo::IsSatisfy( long theId )
|
||||||
|
{
|
||||||
|
return myFunctor && fabs( myFunctor->GetValue( theId ) - myMargin ) < myToler;
|
||||||
|
}
|
||||||
|
|
||||||
|
void EqualTo::SetTolerance( double theToler )
|
||||||
|
{
|
||||||
|
myToler = theToler;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : LogicalNOT
|
||||||
|
Description : Logical NOT predicate
|
||||||
|
*/
|
||||||
|
LogicalNOT::LogicalNOT()
|
||||||
|
{}
|
||||||
|
|
||||||
|
LogicalNOT::~LogicalNOT()
|
||||||
|
{}
|
||||||
|
|
||||||
|
bool LogicalNOT::IsSatisfy( long theId )
|
||||||
|
{
|
||||||
|
return myPredicate && !myPredicate->IsSatisfy( theId );
|
||||||
|
}
|
||||||
|
|
||||||
|
void LogicalNOT::SetMesh( SMDS_Mesh* theMesh )
|
||||||
|
{
|
||||||
|
if ( myPredicate )
|
||||||
|
myPredicate->SetMesh( theMesh );
|
||||||
|
}
|
||||||
|
|
||||||
|
void LogicalNOT::SetPredicate( PredicatePtr thePred )
|
||||||
|
{
|
||||||
|
myPredicate = thePred;
|
||||||
|
}
|
||||||
|
|
||||||
|
SMDSAbs_ElementType LogicalNOT::GetType() const
|
||||||
|
{
|
||||||
|
return myPredicate ? myPredicate->GetType() : SMDSAbs_All;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : LogicalBinary
|
||||||
|
Description : Base class for binary logical predicate
|
||||||
|
*/
|
||||||
|
LogicalBinary::LogicalBinary()
|
||||||
|
{}
|
||||||
|
|
||||||
|
LogicalBinary::~LogicalBinary()
|
||||||
|
{}
|
||||||
|
|
||||||
|
void LogicalBinary::SetMesh( SMDS_Mesh* theMesh )
|
||||||
|
{
|
||||||
|
if ( myPredicate1 )
|
||||||
|
myPredicate1->SetMesh( theMesh );
|
||||||
|
|
||||||
|
if ( myPredicate2 )
|
||||||
|
myPredicate2->SetMesh( theMesh );
|
||||||
|
}
|
||||||
|
|
||||||
|
void LogicalBinary::SetPredicate1( PredicatePtr thePredicate )
|
||||||
|
{
|
||||||
|
myPredicate1 = thePredicate;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LogicalBinary::SetPredicate2( PredicatePtr thePredicate )
|
||||||
|
{
|
||||||
|
myPredicate2 = thePredicate;
|
||||||
|
}
|
||||||
|
|
||||||
|
SMDSAbs_ElementType LogicalBinary::GetType() const
|
||||||
|
{
|
||||||
|
if ( !myPredicate1 || !myPredicate2 )
|
||||||
|
return SMDSAbs_All;
|
||||||
|
|
||||||
|
SMDSAbs_ElementType aType1 = myPredicate1->GetType();
|
||||||
|
SMDSAbs_ElementType aType2 = myPredicate2->GetType();
|
||||||
|
|
||||||
|
return aType1 == aType2 ? aType1 : SMDSAbs_All;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : LogicalAND
|
||||||
|
Description : Logical AND
|
||||||
|
*/
|
||||||
|
bool LogicalAND::IsSatisfy( long theId )
|
||||||
|
{
|
||||||
|
return
|
||||||
|
myPredicate1 &&
|
||||||
|
myPredicate2 &&
|
||||||
|
myPredicate1->IsSatisfy( theId ) &&
|
||||||
|
myPredicate2->IsSatisfy( theId );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : LogicalOR
|
||||||
|
Description : Logical OR
|
||||||
|
*/
|
||||||
|
bool LogicalOR::IsSatisfy( long theId )
|
||||||
|
{
|
||||||
|
return
|
||||||
|
myPredicate1 &&
|
||||||
|
myPredicate2 &&
|
||||||
|
myPredicate1->IsSatisfy( theId ) ||
|
||||||
|
myPredicate2->IsSatisfy( theId );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
FILTER
|
||||||
|
*/
|
||||||
|
|
||||||
|
Filter::Filter()
|
||||||
|
{}
|
||||||
|
|
||||||
|
Filter::~Filter()
|
||||||
|
{}
|
||||||
|
|
||||||
|
void Filter::SetPredicate( PredicatePtr thePredicate )
|
||||||
|
{
|
||||||
|
myPredicate = thePredicate;
|
||||||
|
}
|
||||||
|
|
||||||
|
Filter::TIdSequence
|
||||||
|
Filter::GetElementsId( SMDS_Mesh* theMesh )
|
||||||
|
{
|
||||||
|
TIdSequence aSequence;
|
||||||
|
if ( !theMesh || !myPredicate ) return aSequence;
|
||||||
|
|
||||||
|
myPredicate->SetMesh( theMesh );
|
||||||
|
|
||||||
|
SMDSAbs_ElementType aType = myPredicate->GetType();
|
||||||
|
switch(aType){
|
||||||
|
case SMDSAbs_Edge:{
|
||||||
|
SMDS_EdgeIteratorPtr anIter = theMesh->edgesIterator();
|
||||||
|
if ( anIter != 0 ) {
|
||||||
|
while( anIter->more() ) {
|
||||||
|
const SMDS_MeshElement* anElem = anIter->next();
|
||||||
|
long anId = anElem->GetID();
|
||||||
|
if ( myPredicate->IsSatisfy( anId ) )
|
||||||
|
aSequence.push_back( anId );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case SMDSAbs_Face:{
|
||||||
|
SMDS_FaceIteratorPtr anIter = theMesh->facesIterator();
|
||||||
|
if ( anIter != 0 ) {
|
||||||
|
while( anIter->more() ) {
|
||||||
|
const SMDS_MeshElement* anElem = anIter->next();
|
||||||
|
long anId = anElem->GetID();
|
||||||
|
if ( myPredicate->IsSatisfy( anId ) )
|
||||||
|
aSequence.push_back( anId );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return aSequence;
|
||||||
|
}
|
340
src/Controls/SMESH_Controls.hxx
Normal file
@ -0,0 +1,340 @@
|
|||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
|
||||||
|
#ifndef _SMESH_CONTROLS_HXX_
|
||||||
|
#define _SMESH_CONTROLS_HXX_
|
||||||
|
|
||||||
|
#include <map>
|
||||||
|
#include <vector>
|
||||||
|
#include <boost/shared_ptr.hpp>
|
||||||
|
#include "SMDSAbs_ElementType.hxx"
|
||||||
|
|
||||||
|
class SMDS_Mesh;
|
||||||
|
class gp_Pnt;
|
||||||
|
class gp_XYZ;
|
||||||
|
class TColgp_SequenceOfXYZ;
|
||||||
|
|
||||||
|
namespace SMESH{
|
||||||
|
namespace Controls{
|
||||||
|
class Functor{
|
||||||
|
public:
|
||||||
|
~Functor(){}
|
||||||
|
virtual void SetMesh( SMDS_Mesh* theMesh ) = 0;
|
||||||
|
};
|
||||||
|
typedef boost::shared_ptr<Functor> FunctorPtr;
|
||||||
|
|
||||||
|
class NumericalFunctor: public virtual Functor{
|
||||||
|
public:
|
||||||
|
NumericalFunctor();
|
||||||
|
virtual void SetMesh( SMDS_Mesh* theMesh );
|
||||||
|
virtual double GetValue( long theElementId ) = 0;
|
||||||
|
virtual SMDSAbs_ElementType GetType() const = 0;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool getPoints( const int theId,
|
||||||
|
TColgp_SequenceOfXYZ& theRes ) const;
|
||||||
|
protected:
|
||||||
|
SMDS_Mesh* myMesh;
|
||||||
|
};
|
||||||
|
typedef boost::shared_ptr<NumericalFunctor> NumericalFunctorPtr;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : SMESH_MinimumAngle
|
||||||
|
Description : Functor for calculation of minimum angle
|
||||||
|
*/
|
||||||
|
class MinimumAngle: public virtual NumericalFunctor{
|
||||||
|
public:
|
||||||
|
virtual double GetValue( long theElementId );
|
||||||
|
virtual SMDSAbs_ElementType GetType() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : AspectRatio
|
||||||
|
Description : Functor for calculating aspect ratio
|
||||||
|
*/
|
||||||
|
class AspectRatio: public virtual NumericalFunctor{
|
||||||
|
public:
|
||||||
|
virtual double GetValue( long theElementId );
|
||||||
|
virtual SMDSAbs_ElementType GetType() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : Warping
|
||||||
|
Description : Functor for calculating warping
|
||||||
|
*/
|
||||||
|
class Warping: public virtual NumericalFunctor{
|
||||||
|
public:
|
||||||
|
virtual double GetValue( long theElementId );
|
||||||
|
virtual SMDSAbs_ElementType GetType() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
double ComputeA( const gp_XYZ&, const gp_XYZ&,
|
||||||
|
const gp_XYZ&, const gp_XYZ& ) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : Taper
|
||||||
|
Description : Functor for calculating taper
|
||||||
|
*/
|
||||||
|
class Taper: public virtual NumericalFunctor{
|
||||||
|
public:
|
||||||
|
virtual double GetValue( long theElementId );
|
||||||
|
virtual SMDSAbs_ElementType GetType() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : Skew
|
||||||
|
Description : Functor for calculating skew in degrees
|
||||||
|
*/
|
||||||
|
class Skew: public virtual NumericalFunctor{
|
||||||
|
public:
|
||||||
|
virtual double GetValue( long theElementId );
|
||||||
|
virtual SMDSAbs_ElementType GetType() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : Area
|
||||||
|
Description : Functor for calculating area
|
||||||
|
*/
|
||||||
|
class Area: public virtual NumericalFunctor{
|
||||||
|
public:
|
||||||
|
virtual double GetValue( long theElementId );
|
||||||
|
virtual SMDSAbs_ElementType GetType() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : Length
|
||||||
|
Description : Functor for calculating length of edge
|
||||||
|
*/
|
||||||
|
class Length: public virtual NumericalFunctor{
|
||||||
|
public:
|
||||||
|
virtual double GetValue( long theElementId );
|
||||||
|
virtual SMDSAbs_ElementType GetType() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : MultiConnection
|
||||||
|
Description : Functor for calculating number of faces conneted to the edge
|
||||||
|
*/
|
||||||
|
class MultiConnection: public virtual NumericalFunctor{
|
||||||
|
public:
|
||||||
|
virtual double GetValue( long theElementId );
|
||||||
|
virtual SMDSAbs_ElementType GetType() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
PREDICATES
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
Class : Predicate
|
||||||
|
Description : Base class for all predicates
|
||||||
|
*/
|
||||||
|
class Predicate: public virtual Functor{
|
||||||
|
public:
|
||||||
|
virtual bool IsSatisfy( long theElementId ) = 0;
|
||||||
|
virtual SMDSAbs_ElementType GetType() const = 0;
|
||||||
|
};
|
||||||
|
typedef boost::shared_ptr<Predicate> PredicatePtr;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : FreeBorders
|
||||||
|
Description : Predicate for free borders
|
||||||
|
*/
|
||||||
|
class FreeBorders: public virtual Predicate{
|
||||||
|
public:
|
||||||
|
FreeBorders();
|
||||||
|
virtual void SetMesh( SMDS_Mesh* theMesh );
|
||||||
|
virtual bool IsSatisfy( long theElementId );
|
||||||
|
virtual SMDSAbs_ElementType GetType() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
SMDS_Mesh* myMesh;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : FreeEdges
|
||||||
|
Description : Predicate for free Edges
|
||||||
|
*/
|
||||||
|
class FreeEdges: public virtual Predicate{
|
||||||
|
public:
|
||||||
|
FreeEdges();
|
||||||
|
virtual void SetMesh( SMDS_Mesh* theMesh );
|
||||||
|
virtual bool IsSatisfy( long theElementId );
|
||||||
|
virtual SMDSAbs_ElementType GetType() const;
|
||||||
|
struct Border{
|
||||||
|
long PntId[2];
|
||||||
|
Border(long thePntId1, long thePntId2);
|
||||||
|
};
|
||||||
|
typedef long TElemId;
|
||||||
|
typedef std::map<TElemId,Border> Borders;
|
||||||
|
void GetBoreders(Borders& theBorders);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
SMDS_Mesh* myMesh;
|
||||||
|
};
|
||||||
|
typedef boost::shared_ptr<FreeEdges> FreeEdgesPtr;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : Comparator
|
||||||
|
Description : Base class for comparators
|
||||||
|
*/
|
||||||
|
class Comparator: public virtual Predicate{
|
||||||
|
public:
|
||||||
|
Comparator();
|
||||||
|
virtual ~Comparator();
|
||||||
|
virtual void SetMesh( SMDS_Mesh* theMesh );
|
||||||
|
virtual void SetMargin(double theValue);
|
||||||
|
virtual void SetNumFunctor(NumericalFunctorPtr theFunct);
|
||||||
|
virtual bool IsSatisfy( long theElementId ) = 0;
|
||||||
|
virtual SMDSAbs_ElementType GetType() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
double myMargin;
|
||||||
|
NumericalFunctorPtr myFunctor;
|
||||||
|
};
|
||||||
|
typedef boost::shared_ptr<Comparator> ComparatorPtr;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : LessThan
|
||||||
|
Description : Comparator "<"
|
||||||
|
*/
|
||||||
|
class LessThan: public virtual Comparator{
|
||||||
|
public:
|
||||||
|
virtual bool IsSatisfy( long theElementId );
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : MoreThan
|
||||||
|
Description : Comparator ">"
|
||||||
|
*/
|
||||||
|
class MoreThan: public virtual Comparator{
|
||||||
|
public:
|
||||||
|
virtual bool IsSatisfy( long theElementId );
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : EqualTo
|
||||||
|
Description : Comparator "="
|
||||||
|
*/
|
||||||
|
class EqualTo: public virtual Comparator{
|
||||||
|
public:
|
||||||
|
EqualTo();
|
||||||
|
virtual bool IsSatisfy( long theElementId );
|
||||||
|
virtual void SetTolerance( double theTol );
|
||||||
|
|
||||||
|
private:
|
||||||
|
double myToler;
|
||||||
|
};
|
||||||
|
typedef boost::shared_ptr<EqualTo> EqualToPtr;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : LogicalNOT
|
||||||
|
Description : Logical NOT predicate
|
||||||
|
*/
|
||||||
|
class LogicalNOT: public virtual Predicate{
|
||||||
|
public:
|
||||||
|
LogicalNOT();
|
||||||
|
virtual ~LogicalNOT();
|
||||||
|
virtual bool IsSatisfy( long theElementId );
|
||||||
|
virtual void SetMesh( SMDS_Mesh* theMesh );
|
||||||
|
virtual void SetPredicate(PredicatePtr thePred);
|
||||||
|
virtual SMDSAbs_ElementType GetType() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
PredicatePtr myPredicate;
|
||||||
|
};
|
||||||
|
typedef boost::shared_ptr<LogicalNOT> LogicalNOTPtr;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : LogicalBinary
|
||||||
|
Description : Base class for binary logical predicate
|
||||||
|
*/
|
||||||
|
class LogicalBinary: public virtual Predicate{
|
||||||
|
public:
|
||||||
|
LogicalBinary();
|
||||||
|
virtual ~LogicalBinary();
|
||||||
|
virtual void SetMesh( SMDS_Mesh* theMesh );
|
||||||
|
virtual void SetPredicate1(PredicatePtr thePred);
|
||||||
|
virtual void SetPredicate2(PredicatePtr thePred);
|
||||||
|
virtual SMDSAbs_ElementType GetType() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
PredicatePtr myPredicate1;
|
||||||
|
PredicatePtr myPredicate2;
|
||||||
|
};
|
||||||
|
typedef boost::shared_ptr<LogicalBinary> LogicalBinaryPtr;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : LogicalAND
|
||||||
|
Description : Logical AND
|
||||||
|
*/
|
||||||
|
class LogicalAND: public virtual LogicalBinary{
|
||||||
|
public:
|
||||||
|
virtual bool IsSatisfy( long theElementId );
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : LogicalOR
|
||||||
|
Description : Logical OR
|
||||||
|
*/
|
||||||
|
class LogicalOR: public virtual LogicalBinary{
|
||||||
|
public:
|
||||||
|
virtual bool IsSatisfy( long theElementId );
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
FILTER
|
||||||
|
*/
|
||||||
|
class Filter{
|
||||||
|
public:
|
||||||
|
Filter();
|
||||||
|
virtual ~Filter();
|
||||||
|
virtual void SetPredicate(PredicatePtr thePred);
|
||||||
|
typedef std::vector<long> TIdSequence;
|
||||||
|
virtual TIdSequence GetElementsId( SMDS_Mesh* theMesh );
|
||||||
|
|
||||||
|
protected:
|
||||||
|
PredicatePtr myPredicate;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
@ -38,16 +38,3 @@ void Document_Reader::SetDocument(SMESHDS_Document * aDoc)
|
|||||||
{
|
{
|
||||||
myDocument = aDoc;
|
myDocument = aDoc;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Document_Reader::Read()
|
|
||||||
{
|
|
||||||
int myMeshId = myDocument->NewMesh();
|
|
||||||
SMDS_Mesh * myMesh = myDocument->GetMesh(myMeshId);
|
|
||||||
myReader->SetMesh(myMesh);
|
|
||||||
myReader->SetFile(myFile);
|
|
||||||
myReader->Read();
|
|
||||||
}
|
|
||||||
|
|
||||||
Document_Reader::Document_Reader(Mesh_Reader* reader): myReader(reader)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
@ -28,22 +28,17 @@
|
|||||||
#define _INCLUDE_DOCUMENT_READER
|
#define _INCLUDE_DOCUMENT_READER
|
||||||
|
|
||||||
#include "SMESHDS_Document.hxx"
|
#include "SMESHDS_Document.hxx"
|
||||||
#include "Mesh_Reader.h"
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
class Document_Reader
|
class Document_Reader
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual void Read();
|
virtual void Read() = 0;
|
||||||
void SetFile(string);
|
void SetFile(string);
|
||||||
void SetDocument(SMESHDS_Document *);
|
void SetDocument(SMESHDS_Document *);
|
||||||
Document_Reader(Mesh_Reader*);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
SMESHDS_Document * myDocument;
|
SMESHDS_Document * myDocument;
|
||||||
string myFile;
|
string myFile;
|
||||||
|
|
||||||
private:
|
|
||||||
Mesh_Reader* myReader;
|
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
@ -18,9 +18,14 @@
|
|||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
//
|
//
|
||||||
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// File : Document_Writer.cxx
|
||||||
|
// Module : SMESH
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
#include "Document_Writer.h"
|
#include "Document_Writer.h"
|
||||||
#include "utilities.h"
|
|
||||||
|
|
||||||
void Document_Writer::SetFile(string aFile)
|
void Document_Writer::SetFile(string aFile)
|
||||||
{
|
{
|
||||||
@ -31,28 +36,3 @@ void Document_Writer::SetDocument(SMESHDS_Document * aDoc)
|
|||||||
{
|
{
|
||||||
myDocument = aDoc;
|
myDocument = aDoc;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Document_Writer::Write()
|
|
||||||
{
|
|
||||||
SCRUTE(myFile);
|
|
||||||
SMESHDS_Mesh * myMesh;
|
|
||||||
int nb_of_meshes = myDocument->NbMeshes(); //voir avec Yves
|
|
||||||
SCRUTE(nb_of_meshes);
|
|
||||||
|
|
||||||
int numero = 0;
|
|
||||||
|
|
||||||
myDocument->InitMeshesIterator();
|
|
||||||
while(myDocument->MoreMesh())
|
|
||||||
{
|
|
||||||
numero++;
|
|
||||||
myMesh = myDocument->NextMesh();
|
|
||||||
myWriter->SetMesh(myMesh);
|
|
||||||
myWriter->SetFile(myFile);
|
|
||||||
myWriter->SetMeshId(numero);
|
|
||||||
myWriter->Add();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Document_Writer::Document_Writer(Mesh_Writer* writer): myWriter(writer)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
@ -28,21 +28,17 @@
|
|||||||
#define _INCLUDE_DOCUMENT_WRITER
|
#define _INCLUDE_DOCUMENT_WRITER
|
||||||
|
|
||||||
#include "SMESHDS_Document.hxx"
|
#include "SMESHDS_Document.hxx"
|
||||||
#include "Mesh_Writer.h"
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
class Document_Writer
|
class Document_Writer
|
||||||
{
|
{
|
||||||
|
|
||||||
public:virtual void Write();
|
public:virtual void Write() = 0;
|
||||||
void SetFile(string);
|
void SetFile(string);
|
||||||
void SetDocument(SMESHDS_Document *);
|
void SetDocument(SMESHDS_Document *);
|
||||||
Document_Writer(Mesh_Writer* );
|
|
||||||
|
|
||||||
protected:
|
protected: SMESHDS_Document * myDocument;
|
||||||
SMESHDS_Document * myDocument;
|
|
||||||
string myFile;
|
string myFile;
|
||||||
Mesh_Writer * myWriter;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
36
src/Driver/Driver_Document.cxx
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
|
||||||
|
#include "Driver_Document.h"
|
||||||
|
|
||||||
|
Driver_Document::Driver_Document():
|
||||||
|
myDocument(NULL)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
void Driver_Document::SetFile(const std::string& theFileName)
|
||||||
|
{
|
||||||
|
myFile = theFileName;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Driver_Document::SetDocument(SMESHDS_Document * theDocument)
|
||||||
|
{
|
||||||
|
myDocument = theDocument;
|
||||||
|
}
|
44
src/Driver/Driver_Document.h
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
|
||||||
|
#ifndef _INCLUDE_DRIVER_DOCUMENT
|
||||||
|
#define _INCLUDE_DRIVER_DOCUMENT
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class SMESHDS_Document;
|
||||||
|
|
||||||
|
class Driver_Document
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Driver_Document();
|
||||||
|
virtual ~Driver_Document(){}
|
||||||
|
|
||||||
|
virtual void Perform() = 0;
|
||||||
|
void SetFile(const std::string& theFileName);
|
||||||
|
void SetDocument(SMESHDS_Document *theDocument);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
SMESHDS_Document * myDocument;
|
||||||
|
std::string myFile;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
46
src/Driver/Driver_Mesh.cxx
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
// SMESH Driver : implementaion of driver for reading and writing
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// File : Mesh_Reader.cxx
|
||||||
|
// Module : SMESH
|
||||||
|
|
||||||
|
#include "Driver_Mesh.h"
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
Driver_Mesh::Driver_Mesh():
|
||||||
|
myFile(""),
|
||||||
|
myMeshId(-1)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
void Driver_Mesh::SetMeshId(int theMeshId)
|
||||||
|
{
|
||||||
|
myMeshId = theMeshId;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Driver_Mesh::SetFile(const std::string& theFileName)
|
||||||
|
{
|
||||||
|
myFile = theFileName;
|
||||||
|
}
|
57
src/Driver/Driver_Mesh.h
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
// SMESH Driver : implementaion of driver for reading and writing
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// File : Mesh_Reader.h
|
||||||
|
// Module : SMESH
|
||||||
|
|
||||||
|
#ifndef _INCLUDE_DRIVER_MESH
|
||||||
|
#define _INCLUDE_DRIVER_MESH
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class Driver_Mesh
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Driver_Mesh();
|
||||||
|
virtual ~Driver_Mesh(){}
|
||||||
|
|
||||||
|
enum Status {
|
||||||
|
DRS_OK,
|
||||||
|
DRS_EMPTY, // a file contains no mesh with the given name
|
||||||
|
DRS_WARN_RENUMBER, // a file has overlapped ranges of element numbers,
|
||||||
|
// so the numbers from the file are ignored
|
||||||
|
DRS_WARN_SKIP_ELEM, // some elements were skipped due to incorrect file data
|
||||||
|
DRS_FAIL // general failure (exception etc.)
|
||||||
|
};
|
||||||
|
|
||||||
|
virtual Status Perform() = 0;
|
||||||
|
void SetMeshId(int theMeshId);
|
||||||
|
void SetFile(const std::string& theFileName);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
std::string myFile;
|
||||||
|
int myMeshId;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
31
src/Driver/Driver_SMDS_Mesh.cxx
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
|
||||||
|
#include "Driver_SMDS_Mesh.h"
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
Driver_SMDS_Mesh::Driver_SMDS_Mesh():
|
||||||
|
myMesh(NULL)
|
||||||
|
{}
|
||||||
|
|
||||||
|
void Driver_SMDS_Mesh::SetMesh(SMDS_Mesh *theMesh)
|
||||||
|
{
|
||||||
|
myMesh = theMesh;
|
||||||
|
}
|
38
src/Driver/Driver_SMDS_Mesh.h
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
|
||||||
|
#ifndef _INCLUDE_DRIVER_SMDS_MESH
|
||||||
|
#define _INCLUDE_DRIVER_SMDS_MESH
|
||||||
|
|
||||||
|
#include "Driver_Mesh.h"
|
||||||
|
|
||||||
|
class SMDS_Mesh;
|
||||||
|
|
||||||
|
class Driver_SMDS_Mesh: public Driver_Mesh
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Driver_SMDS_Mesh();
|
||||||
|
void SetMesh(SMDS_Mesh *theMesh);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
SMDS_Mesh *myMesh;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
31
src/Driver/Driver_SMESHDS_Mesh.cxx
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
|
||||||
|
#include "Driver_SMESHDS_Mesh.h"
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
Driver_SMESHDS_Mesh::Driver_SMESHDS_Mesh():
|
||||||
|
myMesh(NULL)
|
||||||
|
{}
|
||||||
|
|
||||||
|
void Driver_SMESHDS_Mesh::SetMesh(SMESHDS_Mesh *theMesh)
|
||||||
|
{
|
||||||
|
myMesh = theMesh;
|
||||||
|
}
|
38
src/Driver/Driver_SMESHDS_Mesh.h
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
|
||||||
|
#ifndef _INCLUDE_DRIVER_SMESHDS_MESH
|
||||||
|
#define _INCLUDE_DRIVER_SMESHDS_MESH
|
||||||
|
|
||||||
|
#include "Driver_Mesh.h"
|
||||||
|
|
||||||
|
class SMESHDS_Mesh;
|
||||||
|
|
||||||
|
class Driver_SMESHDS_Mesh: public Driver_Mesh
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Driver_SMESHDS_Mesh();
|
||||||
|
void SetMesh(SMESHDS_Mesh *theMesh);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
SMESHDS_Mesh *myMesh;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
@ -35,28 +35,18 @@ VPATH=.:@srcdir@
|
|||||||
@COMMENCE@
|
@COMMENCE@
|
||||||
|
|
||||||
# header files
|
# header files
|
||||||
EXPORT_HEADERS = \
|
EXPORT_HEADERS= Document_Reader.h Document_Writer.h Mesh_Reader.h Mesh_Writer.h
|
||||||
SMESHDriver.h \
|
|
||||||
Document_Reader.h \
|
|
||||||
Document_Writer.h \
|
|
||||||
Mesh_Reader.h \
|
|
||||||
Mesh_Writer.h
|
|
||||||
|
|
||||||
# Libraries targets
|
# Libraries targets
|
||||||
LIB = libMeshDriver.la
|
LIB = libMeshDriver.la
|
||||||
LIB_SRC = \
|
LIB_SRC = Document_Reader.cxx Document_Writer.cxx Mesh_Reader.cxx Mesh_Writer.cxx
|
||||||
SMESHDriver.cxx \
|
|
||||||
Document_Reader.cxx \
|
|
||||||
Document_Writer.cxx
|
|
||||||
# Mesh_Reader.cxx \
|
|
||||||
# Mesh_Writer.cxx \
|
|
||||||
|
|
||||||
LIB_CLIENT_IDL =
|
LIB_CLIENT_IDL =
|
||||||
|
|
||||||
LIB_SERVER_IDL =
|
LIB_SERVER_IDL =
|
||||||
|
|
||||||
# additionnal information to compil and link file
|
# additionnal information to compil and link file
|
||||||
CPPFLAGS += $(OCC_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome
|
CPPFLAGS += $(OCC_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome $(BOOST_CPPFLAGS)
|
||||||
CXXFLAGS += $(OCC_CXXFLAGS) $(MED2_INCLUDES) -rdynamic -ldl -I${KERNEL_ROOT_DIR}/include/salome
|
CXXFLAGS += $(OCC_CXXFLAGS) $(MED2_INCLUDES) -rdynamic -ldl -I${KERNEL_ROOT_DIR}/include/salome
|
||||||
|
|
||||||
LDFLAGS += $(MED2_LIBS) -lSMESHDS -lSMDS
|
LDFLAGS += $(MED2_LIBS) -lSMESHDS -lSMDS
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// SMESH Driver : implementation of driver for reading and writing
|
// SMESH Driver : implementaion of driver for reading and writing
|
||||||
//
|
//
|
||||||
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
@ -18,97 +18,122 @@
|
|||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
//
|
//
|
||||||
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// File : SMESHDriver.cxx
|
||||||
|
// Module : SMESH
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
#include "SMESHDriver.h"
|
#include "SMESHDriver.h"
|
||||||
|
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
#include <utilities.h>
|
#include <utilities.h>
|
||||||
|
|
||||||
Document_Reader* SMESHDriver::GetDocumentReader(string Extension)
|
//A enlever
|
||||||
{
|
#include "DriverMED_R_SMESHDS_Document.h"
|
||||||
// if there is not document reader in the driver create a default
|
#include "DriverMED_R_SMESHDS_Mesh.h"
|
||||||
// one with the mesh reader.
|
#include "DriverMED_R_SMDS_Mesh.h"
|
||||||
Document_Reader * docReader=
|
#include "DriverMED_W_SMESHDS_Document.h"
|
||||||
(Document_Reader*)getMeshDocumentDriver(Extension);
|
#include "DriverMED_W_SMESHDS_Mesh.h"
|
||||||
|
#include "DriverMED_W_SMDS_Mesh.h"
|
||||||
|
|
||||||
|
#include "DriverDAT_R_SMESHDS_Document.h"
|
||||||
|
#include "DriverDAT_R_SMESHDS_Mesh.h"
|
||||||
|
#include "DriverDAT_R_SMDS_Mesh.h"
|
||||||
|
#include "DriverDAT_W_SMESHDS_Document.h"
|
||||||
|
#include "DriverDAT_W_SMESHDS_Mesh.h"
|
||||||
|
#include "DriverDAT_W_SMDS_Mesh.h"
|
||||||
|
//
|
||||||
|
|
||||||
|
Document_Reader* SMESHDriver::GetDocumentReader(string Extension, string Class) {
|
||||||
|
if (Extension==string("MED")) {
|
||||||
|
DriverMED_R_SMESHDS_Document* myDriver = new DriverMED_R_SMESHDS_Document();
|
||||||
|
return (myDriver);
|
||||||
|
}
|
||||||
|
else if (Extension==string("DAT")) {
|
||||||
|
DriverDAT_R_SMESHDS_Document* myDriver = new DriverDAT_R_SMESHDS_Document();
|
||||||
|
return (myDriver);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
MESSAGE("No driver known for this extension");
|
||||||
|
return (Document_Reader*)NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if(docReader==NULL)
|
|
||||||
{
|
|
||||||
Mesh_Reader * reader=GetMeshReader(Extension);
|
|
||||||
if(reader==NULL)
|
|
||||||
{
|
|
||||||
MESSAGE("No driver known for this extension");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
return new Document_Reader(reader);
|
|
||||||
}
|
|
||||||
else return docReader;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Document_Writer* SMESHDriver::GetDocumentWriter(string Extension)
|
Document_Writer* SMESHDriver::GetDocumentWriter(string Extension, string Class) {
|
||||||
{
|
if (Extension==string("MED")) {
|
||||||
Mesh_Writer * writer=GetMeshWriter(Extension);
|
DriverMED_W_SMESHDS_Document* myDriver = new DriverMED_W_SMESHDS_Document();
|
||||||
if(writer==NULL)
|
return (myDriver);
|
||||||
{
|
}
|
||||||
MESSAGE("No driver known for this extension");
|
else if (Extension==string("DAT")) {
|
||||||
return NULL;
|
DriverDAT_W_SMESHDS_Document* myDriver = new DriverDAT_W_SMESHDS_Document();
|
||||||
}
|
return (myDriver);
|
||||||
return new Document_Writer(writer);
|
}
|
||||||
|
else {
|
||||||
|
MESSAGE("No driver known for this extension");
|
||||||
|
return (Document_Writer*)NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Mesh_Reader* SMESHDriver::GetMeshReader(string extension)
|
Mesh_Reader* SMESHDriver::GetMeshReader(string Extension, string Class) {
|
||||||
{
|
if (Extension==string("MED")) {
|
||||||
void * driver = getMeshDriver(extension, string("Reader"));
|
|
||||||
return (Mesh_Reader*)driver;
|
if (strcmp(Class.c_str(),"SMESHDS_Mesh")==0) {
|
||||||
|
DriverMED_R_SMESHDS_Mesh* myDriver = new DriverMED_R_SMESHDS_Mesh();
|
||||||
|
return (myDriver);
|
||||||
|
}
|
||||||
|
else if (strcmp(Class.c_str(),"SMDS_Mesh")==0) {
|
||||||
|
DriverMED_R_SMDS_Mesh* myDriver = new DriverMED_R_SMDS_Mesh();
|
||||||
|
return (myDriver);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (Extension==string("DAT")) {
|
||||||
|
|
||||||
|
if (strcmp(Class.c_str(),"SMESHDS_Mesh")==0) {
|
||||||
|
DriverDAT_R_SMESHDS_Mesh* myDriver = new DriverDAT_R_SMESHDS_Mesh();
|
||||||
|
return (myDriver);
|
||||||
|
}
|
||||||
|
else if (strcmp(Class.c_str(),"SMDS_Mesh")==0) {
|
||||||
|
DriverDAT_R_SMDS_Mesh* myDriver = new DriverDAT_R_SMDS_Mesh();
|
||||||
|
return (myDriver);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Mesh_Writer* SMESHDriver::GetMeshWriter(string extension)
|
Mesh_Writer* SMESHDriver::GetMeshWriter(string Extension, string Class) {
|
||||||
{
|
if (Extension==string("MED")) {
|
||||||
void * driver = getMeshDriver(extension, string("Writer"));
|
|
||||||
return (Mesh_Writer*)driver;
|
if (strcmp(Class.c_str(),"SMESHDS_Mesh")==0) {
|
||||||
|
DriverMED_W_SMESHDS_Mesh* myDriver = new DriverMED_W_SMESHDS_Mesh();
|
||||||
|
return (myDriver);
|
||||||
|
}
|
||||||
|
else if (strcmp(Class.c_str(),"SMDS_Mesh")==0) {
|
||||||
|
DriverMED_W_SMDS_Mesh* myDriver = new DriverMED_W_SMDS_Mesh();
|
||||||
|
return (myDriver);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (Extension==string("DAT")) {
|
||||||
|
|
||||||
|
if (strcmp(Class.c_str(),"SMESHDS_Mesh")==0) {
|
||||||
|
DriverDAT_W_SMESHDS_Mesh* myDriver = new DriverDAT_W_SMESHDS_Mesh();
|
||||||
|
return (myDriver);
|
||||||
|
}
|
||||||
|
else if (strcmp(Class.c_str(),"SMDS_Mesh")==0) {
|
||||||
|
DriverDAT_W_SMDS_Mesh* myDriver = new DriverDAT_W_SMDS_Mesh();
|
||||||
|
return (myDriver);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void * SMESHDriver::getMeshDriver(string extension, string type)
|
|
||||||
{
|
|
||||||
string libName = string("libMeshDriver")+extension+string(".so");
|
|
||||||
void * handle = dlopen(libName.c_str(), RTLD_LAZY);
|
|
||||||
if(!handle)
|
|
||||||
{
|
|
||||||
cerr << dlerror() << endl;
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
void * (*factory)();
|
|
||||||
string symbol = string("SMESH_create")+extension+string("Mesh")+type;
|
|
||||||
factory = (void * (*)()) dlsym(handle, symbol.c_str());
|
|
||||||
if(factory==NULL)
|
|
||||||
{
|
|
||||||
cerr << dlerror() << endl;
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
else return factory();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void * SMESHDriver::getMeshDocumentDriver(string extension)
|
|
||||||
{
|
|
||||||
string libName = string("libMeshDriver")+extension+string(".so");
|
|
||||||
void * handle = dlopen(libName.c_str(), RTLD_LAZY);
|
|
||||||
if(!handle)
|
|
||||||
{
|
|
||||||
cerr << dlerror() << endl;
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
void * (*factory)();
|
|
||||||
string symbol = string("SMESH_create")+extension+string("DocumentReader");
|
|
||||||
factory = (void * (*)()) dlsym(handle, symbol.c_str());
|
|
||||||
if(factory==NULL)
|
|
||||||
{
|
|
||||||
cerr << dlerror() << endl;
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
else return factory();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -32,17 +32,14 @@
|
|||||||
#include "Mesh_Reader.h"
|
#include "Mesh_Reader.h"
|
||||||
#include "Mesh_Writer.h"
|
#include "Mesh_Writer.h"
|
||||||
|
|
||||||
class SMESHDriver
|
class SMESHDriver {
|
||||||
{
|
|
||||||
public :
|
public :
|
||||||
static Document_Reader* GetDocumentReader(string Extension);
|
static Document_Reader* GetDocumentReader(string Extension, string Class);
|
||||||
static Document_Writer* GetDocumentWriter(string Extension);
|
static Document_Writer* GetDocumentWriter(string Extension, string Class);
|
||||||
|
|
||||||
static Mesh_Reader* GetMeshReader(string Extension);
|
static Mesh_Reader* GetMeshReader(string Extension, string Class);
|
||||||
static Mesh_Writer* GetMeshWriter(string Extension);
|
static Mesh_Writer* GetMeshWriter(string Extension, string Class);
|
||||||
|
|
||||||
private:
|
|
||||||
static void * getMeshDriver(string Extension, string type);
|
|
||||||
static void * getMeshDocumentDriver(string Extension);
|
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
28
src/DriverDAT/DAT_Test.cxx
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
|
||||||
|
#include "DriverDAT_R_SMDS_Mesh.h"
|
||||||
|
#include "DriverDAT_W_SMDS_Mesh.h"
|
||||||
|
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
DriverDAT_R_SMDS_Mesh aR;
|
||||||
|
DriverDAT_W_SMDS_Mesh aW;
|
||||||
|
return 1;
|
||||||
|
}
|
@ -24,21 +24,11 @@
|
|||||||
// File : DriverDAT_R_SMDS_Mesh.cxx
|
// File : DriverDAT_R_SMDS_Mesh.cxx
|
||||||
// Module : SMESH
|
// Module : SMESH
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
#include "DriverDAT_R_SMDS_Mesh.h"
|
#include "DriverDAT_R_SMDS_Mesh.h"
|
||||||
|
|
||||||
#include "utilities.h"
|
#include "utilities.h"
|
||||||
|
|
||||||
extern "C"
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Factory function which will be called by SMESHDriver
|
|
||||||
*/
|
|
||||||
void * SMESH_createDATMeshReader()
|
|
||||||
{
|
|
||||||
return new DriverDAT_R_SMDS_Mesh();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
DriverDAT_R_SMDS_Mesh::DriverDAT_R_SMDS_Mesh()
|
DriverDAT_R_SMDS_Mesh::DriverDAT_R_SMDS_Mesh()
|
||||||
{
|
{
|
||||||
;
|
;
|
||||||
|
@ -24,25 +24,17 @@
|
|||||||
// File : DriverDAT_W_SMDS_Mesh.cxx
|
// File : DriverDAT_W_SMDS_Mesh.cxx
|
||||||
// Module : SMESH
|
// Module : SMESH
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
#include "DriverDAT_W_SMDS_Mesh.h"
|
#include "DriverDAT_W_SMDS_Mesh.h"
|
||||||
|
|
||||||
#include "SMDS_MeshElement.hxx"
|
#include "SMDS_MeshElement.hxx"
|
||||||
#include "SMDS_MeshNode.hxx"
|
#include "SMDS_MeshNode.hxx"
|
||||||
|
|
||||||
#include "utilities.h"
|
#include "utilities.h"
|
||||||
|
|
||||||
extern "C"
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Factory function which will be called by SMESHDriver
|
|
||||||
*/
|
|
||||||
void * SMESH_createDATMeshWriter()
|
|
||||||
{
|
|
||||||
return new DriverDAT_W_SMDS_Mesh();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
DriverDAT_W_SMDS_Mesh::DriverDAT_W_SMDS_Mesh()
|
DriverDAT_W_SMDS_Mesh::DriverDAT_W_SMDS_Mesh()
|
||||||
{
|
{
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
DriverDAT_W_SMDS_Mesh::~DriverDAT_W_SMDS_Mesh()
|
DriverDAT_W_SMDS_Mesh::~DriverDAT_W_SMDS_Mesh()
|
||||||
@ -72,12 +64,12 @@ void DriverDAT_W_SMDS_Mesh::SetMeshId(int aMeshId)
|
|||||||
|
|
||||||
void DriverDAT_W_SMDS_Mesh::Add()
|
void DriverDAT_W_SMDS_Mesh::Add()
|
||||||
{
|
{
|
||||||
MESSAGE("Adding a mesh to a DAT document. As DAT do not support more than one mesh in a file, the previous mesh is deleted");
|
;
|
||||||
Write();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DriverDAT_W_SMDS_Mesh::Write()
|
void DriverDAT_W_SMDS_Mesh::Write()
|
||||||
{
|
{
|
||||||
|
|
||||||
int nbNodes, nbCells;
|
int nbNodes, nbCells;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@ -88,7 +80,7 @@ void DriverDAT_W_SMDS_Mesh::Write()
|
|||||||
fprintf(stderr, ">> ERREUR : ouverture du fichier %s \n", file2Read);
|
fprintf(stderr, ">> ERREUR : ouverture du fichier %s \n", file2Read);
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
SCRUTE(myMesh);
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* NOMBRES D'OBJETS *
|
* NOMBRES D'OBJETS *
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@ -105,6 +97,9 @@ void DriverDAT_W_SMDS_Mesh::Write()
|
|||||||
nb_of_faces = myMesh->NbFaces();
|
nb_of_faces = myMesh->NbFaces();
|
||||||
nb_of_volumes = myMesh->NbVolumes();
|
nb_of_volumes = myMesh->NbVolumes();
|
||||||
nbCells = nb_of_edges + nb_of_faces + nb_of_volumes;
|
nbCells = nb_of_edges + nb_of_faces + nb_of_volumes;
|
||||||
|
SCRUTE(nb_of_edges);
|
||||||
|
SCRUTE(nb_of_faces);
|
||||||
|
SCRUTE(nb_of_volumes);
|
||||||
|
|
||||||
fprintf(stdout, "%d %d\n", nbNodes, nbCells);
|
fprintf(stdout, "%d %d\n", nbNodes, nbCells);
|
||||||
fprintf(myFileId, "%d %d\n", nbNodes, nbCells);
|
fprintf(myFileId, "%d %d\n", nbNodes, nbCells);
|
||||||
@ -116,15 +111,14 @@ void DriverDAT_W_SMDS_Mesh::Write()
|
|||||||
fprintf(stdout, "(* NOEUDS DU MAILLAGE : *)\n");
|
fprintf(stdout, "(* NOEUDS DU MAILLAGE : *)\n");
|
||||||
fprintf(stdout, "(************************)\n");
|
fprintf(stdout, "(************************)\n");
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshNode *> * itNodes=myMesh->nodesIterator();
|
SMDS_NodeIteratorPtr itNodes=myMesh->nodesIterator();
|
||||||
while(itNodes->more())
|
while(itNodes->more())
|
||||||
{
|
{
|
||||||
const SMDS_MeshNode * node = itNodes->next();
|
const SMDS_MeshNode * node = itNodes->next();
|
||||||
fprintf(myFileId, "%d %e %e %e\n", node->GetID(), node->X(),
|
fprintf(myFileId, "%d %e %e %e\n", node->GetID(), node->X(),
|
||||||
node->Y(), node->Z());
|
node->Y(), node->Z());
|
||||||
}
|
}
|
||||||
delete itNodes;
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* ECRITURE DES ELEMENTS *
|
* ECRITURE DES ELEMENTS *
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@ -133,10 +127,10 @@ void DriverDAT_W_SMDS_Mesh::Write()
|
|||||||
fprintf(stdout, "(**************************)");
|
fprintf(stdout, "(**************************)");
|
||||||
/* Ecriture des connectivites, noms, numeros des mailles */
|
/* Ecriture des connectivites, noms, numeros des mailles */
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshEdge*> * itEdges=myMesh->edgesIterator();
|
SMDS_EdgeIteratorPtr itEdges=myMesh->edgesIterator();
|
||||||
while(itEdges->more())
|
while(itEdges->more())
|
||||||
{
|
{
|
||||||
const SMDS_MeshEdge * elem = itEdges->next();
|
const SMDS_MeshElement * elem = itEdges->next();
|
||||||
|
|
||||||
switch (elem->NbNodes())
|
switch (elem->NbNodes())
|
||||||
{
|
{
|
||||||
@ -152,15 +146,13 @@ void DriverDAT_W_SMDS_Mesh::Write()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshElement *> * itNodes=elem->nodesIterator();
|
SMDS_ElemIteratorPtr it=elem->nodesIterator();
|
||||||
while(itNodes->more())
|
while(it->more()) fprintf(myFileId, "%d ", it->next()->GetID());
|
||||||
fprintf(myFileId, "%d ", itNodes->next()->GetID());
|
|
||||||
|
|
||||||
fprintf(myFileId, "\n");
|
fprintf(myFileId, "\n");
|
||||||
}
|
}
|
||||||
delete itEdges;
|
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshFace *> * itFaces=myMesh->facesIterator();
|
SMDS_FaceIteratorPtr itFaces=myMesh->facesIterator();
|
||||||
while(itFaces->more())
|
while(itFaces->more())
|
||||||
{
|
{
|
||||||
const SMDS_MeshElement * elem = itFaces->next();
|
const SMDS_MeshElement * elem = itFaces->next();
|
||||||
@ -184,16 +176,13 @@ void DriverDAT_W_SMDS_Mesh::Write()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshElement *> * itNodes=elem->nodesIterator();
|
SMDS_ElemIteratorPtr it=elem->nodesIterator();
|
||||||
while(itNodes->more())
|
while(it->more()) fprintf(myFileId, "%d ", it->next()->GetID());
|
||||||
fprintf(myFileId, "%d ", itNodes->next()->GetID());
|
|
||||||
delete itNodes;
|
|
||||||
|
|
||||||
fprintf(myFileId, "\n");
|
fprintf(myFileId, "\n");
|
||||||
}
|
}
|
||||||
delete itFaces;
|
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshVolume*> * itVolumes=myMesh->volumesIterator();
|
SMDS_VolumeIteratorPtr itVolumes=myMesh->volumesIterator();
|
||||||
while(itVolumes->more())
|
while(itVolumes->more())
|
||||||
{
|
{
|
||||||
const SMDS_MeshElement * elem = itVolumes->next();
|
const SMDS_MeshElement * elem = itVolumes->next();
|
||||||
@ -207,14 +196,11 @@ void DriverDAT_W_SMDS_Mesh::Write()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshElement *> * itNodes=elem->nodesIterator();
|
SMDS_ElemIteratorPtr it=elem->nodesIterator();
|
||||||
while(itNodes->more())
|
while(it->more()) fprintf(myFileId, "%d ", it->next()->GetID());
|
||||||
fprintf(myFileId, "%d ", itNodes->next()->GetID());
|
|
||||||
delete itNodes;
|
|
||||||
|
|
||||||
fprintf(myFileId, "\n");
|
fprintf(myFileId, "\n");
|
||||||
}
|
}
|
||||||
delete itVolumes;
|
|
||||||
|
|
||||||
fclose(myFileId);
|
fclose(myFileId);
|
||||||
}
|
}
|
||||||
|
@ -125,14 +125,13 @@ void DriverDAT_W_SMESHDS_Mesh::Add()
|
|||||||
fprintf(stdout, "(* NOEUDS DU MAILLAGE : *)\n");
|
fprintf(stdout, "(* NOEUDS DU MAILLAGE : *)\n");
|
||||||
fprintf(stdout, "(************************)\n");
|
fprintf(stdout, "(************************)\n");
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshNode *> * itNodes=myMesh->nodesIterator();
|
SMDS_NodeIteratorPtr itNodes=myMesh->nodesIterator();
|
||||||
while(itNodes->more())
|
while(itNodes->more())
|
||||||
{
|
{
|
||||||
const SMDS_MeshNode * node = itNodes->next();
|
const SMDS_MeshNode * node = itNodes->next();
|
||||||
fprintf(myFileId, "%d %e %e %e\n", node->GetID(), node->X(),
|
fprintf(myFileId, "%d %e %e %e\n", node->GetID(), node->X(),
|
||||||
node->Y(), node->Z());
|
node->Y(), node->Z());
|
||||||
}
|
}
|
||||||
delete itNodes;
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* ECRITURE DES ELEMENTS *
|
* ECRITURE DES ELEMENTS *
|
||||||
@ -142,7 +141,7 @@ void DriverDAT_W_SMESHDS_Mesh::Add()
|
|||||||
fprintf(stdout, "(**************************)");
|
fprintf(stdout, "(**************************)");
|
||||||
/* Ecriture des connectivites, noms, numeros des mailles */
|
/* Ecriture des connectivites, noms, numeros des mailles */
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshEdge*> * itEdges=myMesh->edgesIterator();
|
SMDS_EdgeIteratorPtr itEdges=myMesh->edgesIterator();
|
||||||
while(itEdges->more())
|
while(itEdges->more())
|
||||||
{
|
{
|
||||||
const SMDS_MeshEdge * elem = itEdges->next();
|
const SMDS_MeshEdge * elem = itEdges->next();
|
||||||
@ -161,15 +160,14 @@ void DriverDAT_W_SMESHDS_Mesh::Add()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshElement *> * itNodes=elem->nodesIterator();
|
SMDS_ElemIteratorPtr itNodes=elem->nodesIterator();
|
||||||
while(itNodes->more())
|
while(itNodes->more())
|
||||||
fprintf(myFileId, "%d ", itNodes->next()->GetID());
|
fprintf(myFileId, "%d ", itNodes->next()->GetID());
|
||||||
|
|
||||||
fprintf(myFileId, "\n");
|
fprintf(myFileId, "\n");
|
||||||
}
|
}
|
||||||
delete itEdges;
|
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshFace *> * itFaces=myMesh->facesIterator();
|
SMDS_FaceIteratorPtr itFaces=myMesh->facesIterator();
|
||||||
while(itFaces->more())
|
while(itFaces->more())
|
||||||
{
|
{
|
||||||
const SMDS_MeshElement * elem = itFaces->next();
|
const SMDS_MeshElement * elem = itFaces->next();
|
||||||
@ -193,16 +191,14 @@ void DriverDAT_W_SMESHDS_Mesh::Add()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshElement *> * itNodes=elem->nodesIterator();
|
SMDS_ElemIteratorPtr itNodes=elem->nodesIterator();
|
||||||
while(itNodes->more())
|
while(itNodes->more())
|
||||||
fprintf(myFileId, "%d ", itNodes->next()->GetID());
|
fprintf(myFileId, "%d ", itNodes->next()->GetID());
|
||||||
delete itNodes;
|
|
||||||
|
|
||||||
fprintf(myFileId, "\n");
|
fprintf(myFileId, "\n");
|
||||||
}
|
}
|
||||||
delete itFaces;
|
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshVolume*> * itVolumes=myMesh->volumesIterator();
|
SMDS_VolumeIteratorPtr itVolumes=myMesh->volumesIterator();
|
||||||
while(itVolumes->more())
|
while(itVolumes->more())
|
||||||
{
|
{
|
||||||
const SMDS_MeshElement * elem = itVolumes->next();
|
const SMDS_MeshElement * elem = itVolumes->next();
|
||||||
@ -216,14 +212,12 @@ void DriverDAT_W_SMESHDS_Mesh::Add()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshElement *> * itNodes=elem->nodesIterator();
|
SMDS_ElemIteratorPtr itNodes=elem->nodesIterator();
|
||||||
while(itNodes->more())
|
while(itNodes->more())
|
||||||
fprintf(myFileId, "%d ", itNodes->next()->GetID());
|
fprintf(myFileId, "%d ", itNodes->next()->GetID());
|
||||||
delete itNodes;
|
|
||||||
|
|
||||||
fprintf(myFileId, "\n");
|
fprintf(myFileId, "\n");
|
||||||
}
|
}
|
||||||
delete itVolumes;
|
|
||||||
|
|
||||||
fclose(myFileId);
|
fclose(myFileId);
|
||||||
}
|
}
|
||||||
|
@ -35,30 +35,18 @@ VPATH=.:@srcdir@
|
|||||||
@COMMENCE@
|
@COMMENCE@
|
||||||
|
|
||||||
# header files
|
# header files
|
||||||
EXPORT_HEADERS = \
|
EXPORT_HEADERS= DriverDAT_R_SMDS_Mesh.h DriverDAT_R_SMESHDS_Mesh.h DriverDAT_R_SMESHDS_Document.h DriverDAT_W_SMDS_Mesh.h DriverDAT_W_SMESHDS_Mesh.h DriverDAT_W_SMESHDS_Document.h
|
||||||
DriverDAT_R_SMDS_Mesh.h \
|
|
||||||
DriverDAT_R_SMESHDS_Mesh.h \
|
|
||||||
DriverDAT_W_SMDS_Mesh.h \
|
|
||||||
DriverDAT_W_SMESHDS_Mesh.h
|
|
||||||
# DriverDAT_W_SMESHDS_Document.h \
|
|
||||||
# DriverDAT_R_SMESHDS_Document.h \
|
|
||||||
|
|
||||||
# Libraries targets
|
# Libraries targets
|
||||||
LIB = libMeshDriverDAT.la
|
LIB = libMeshDriverDAT.la
|
||||||
LIB_SRC = \
|
LIB_SRC = DriverDAT_R_SMDS_Mesh.cxx DriverDAT_R_SMESHDS_Mesh.cxx DriverDAT_R_SMESHDS_Document.cxx DriverDAT_W_SMDS_Mesh.cxx DriverDAT_W_SMESHDS_Mesh.cxx DriverDAT_W_SMESHDS_Document.cxx
|
||||||
DriverDAT_R_SMDS_Mesh.cxx \
|
|
||||||
DriverDAT_R_SMESHDS_Mesh.cxx \
|
|
||||||
DriverDAT_W_SMDS_Mesh.cxx \
|
|
||||||
DriverDAT_W_SMESHDS_Mesh.cxx
|
|
||||||
#DriverDAT_W_SMESHDS_Document.cxx \
|
|
||||||
#DriverDAT_R_SMESHDS_Document.cxx \
|
|
||||||
|
|
||||||
LIB_CLIENT_IDL =
|
LIB_CLIENT_IDL =
|
||||||
|
|
||||||
LIB_SERVER_IDL =
|
LIB_SERVER_IDL =
|
||||||
|
|
||||||
# additionnal information to compil and link file
|
# additionnal information to compil and link file
|
||||||
CPPFLAGS += $(OCC_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome
|
CPPFLAGS += $(OCC_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome $(BOOST_CPPFLAGS)
|
||||||
CXXFLAGS += $(OCC_CXXFLAGS) $(MED2_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome
|
CXXFLAGS += $(OCC_CXXFLAGS) $(MED2_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome
|
||||||
LDFLAGS += $(MED2_LIBS) -lMeshDriver
|
LDFLAGS += $(MED2_LIBS) -lMeshDriver
|
||||||
|
|
||||||
|
367
src/DriverMED/DriverMED_Family.cxx
Normal file
@ -0,0 +1,367 @@
|
|||||||
|
// SMESH DriverMED : tool to split groups on families
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003 CEA
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// File : DriverMED_Family.cxx
|
||||||
|
// Author : Julia DOROVSKIKH
|
||||||
|
// Module : SMESH
|
||||||
|
// $Header$
|
||||||
|
|
||||||
|
#include "DriverMED_Family.h"
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* Split each group from list <aGroups> on some parts (families)
|
||||||
|
* on the basis of the elements membership in other groups from this list.
|
||||||
|
* Resulting families have no common elements.
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
list<DriverMED_FamilyPtr> DriverMED_Family::MakeFamilies
|
||||||
|
(const map <int, SMESHDS_SubMesh*>& theSubMeshes,
|
||||||
|
const list<SMESHDS_Group*>& theGroups,
|
||||||
|
const bool doGroupOfNodes,
|
||||||
|
const bool doGroupOfEdges,
|
||||||
|
const bool doGroupOfFaces,
|
||||||
|
const bool doGroupOfVolumes)
|
||||||
|
{
|
||||||
|
list<DriverMED_FamilyPtr> aFamilies;
|
||||||
|
|
||||||
|
string anAllNodesGroupName = "Group_Of_All_Nodes";
|
||||||
|
string anAllEdgesGroupName = "Group_Of_All_Edges";
|
||||||
|
string anAllFacesGroupName = "Group_Of_All_Faces";
|
||||||
|
string anAllVolumesGroupName = "Group_Of_All_Volumes";
|
||||||
|
|
||||||
|
// Reserve four ids for families of free elements
|
||||||
|
// (1 - nodes, -1 - edges, -2 - faces, -3 - volumes).
|
||||||
|
// 'Free' means here not belonging to any group.
|
||||||
|
int aNodeFamId = FIRST_NODE_FAMILY;
|
||||||
|
int aElemFamId = FIRST_ELEM_FAMILY;
|
||||||
|
|
||||||
|
// Process sub-meshes
|
||||||
|
map<int, SMESHDS_SubMesh*>::const_iterator aSMIter = theSubMeshes.begin();
|
||||||
|
for (; aSMIter != theSubMeshes.end(); aSMIter++)
|
||||||
|
{
|
||||||
|
list<DriverMED_FamilyPtr> aSMFams = SplitByType((*aSMIter).second, (*aSMIter).first);
|
||||||
|
list<DriverMED_FamilyPtr>::iterator aSMFamsIter = aSMFams.begin();
|
||||||
|
for (; aSMFamsIter != aSMFams.end(); aSMFamsIter++)
|
||||||
|
{
|
||||||
|
DriverMED_FamilyPtr aFam2 = (*aSMFamsIter);
|
||||||
|
|
||||||
|
list<DriverMED_FamilyPtr>::iterator aFamsIter = aFamilies.begin();
|
||||||
|
while (aFamsIter != aFamilies.end())
|
||||||
|
{
|
||||||
|
DriverMED_FamilyPtr aFam1 = *aFamsIter;
|
||||||
|
list<DriverMED_FamilyPtr>::iterator aCurrIter = aFamsIter++;
|
||||||
|
if (aFam1->myType == aFam2->myType)
|
||||||
|
{
|
||||||
|
DriverMED_FamilyPtr aCommon (new DriverMED_Family);
|
||||||
|
aFam1->Split(aFam2, aCommon);
|
||||||
|
if (!aCommon->IsEmpty())
|
||||||
|
{
|
||||||
|
aFamilies.push_back(aCommon);
|
||||||
|
}
|
||||||
|
if (aFam1->IsEmpty())
|
||||||
|
{
|
||||||
|
aFamilies.erase(aCurrIter);
|
||||||
|
}
|
||||||
|
if (aFam2->IsEmpty()) break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// The rest elements of family
|
||||||
|
if (!aFam2->IsEmpty())
|
||||||
|
{
|
||||||
|
aFamilies.push_back(aFam2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Process groups
|
||||||
|
list<SMESHDS_Group*>::const_iterator aGroupsIter = theGroups.begin();
|
||||||
|
for (; aGroupsIter != theGroups.end(); aGroupsIter++)
|
||||||
|
{
|
||||||
|
DriverMED_FamilyPtr aFam2 (new DriverMED_Family);
|
||||||
|
aFam2->Init(*aGroupsIter);
|
||||||
|
|
||||||
|
list<DriverMED_FamilyPtr>::iterator aFamsIter = aFamilies.begin();
|
||||||
|
while (aFamsIter != aFamilies.end())
|
||||||
|
{
|
||||||
|
DriverMED_FamilyPtr aFam1 = *aFamsIter;
|
||||||
|
list<DriverMED_FamilyPtr>::iterator aCurrIter = aFamsIter++;
|
||||||
|
if (aFam1->myType == aFam2->myType)
|
||||||
|
{
|
||||||
|
DriverMED_FamilyPtr aCommon (new DriverMED_Family);
|
||||||
|
aFam1->Split(aFam2, aCommon);
|
||||||
|
if (!aCommon->IsEmpty())
|
||||||
|
{
|
||||||
|
aFamilies.push_back(aCommon);
|
||||||
|
}
|
||||||
|
if (aFam1->IsEmpty())
|
||||||
|
{
|
||||||
|
aFamilies.erase(aCurrIter);
|
||||||
|
}
|
||||||
|
if (aFam2->IsEmpty()) break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// The rest elements of group
|
||||||
|
if (!aFam2->IsEmpty())
|
||||||
|
{
|
||||||
|
aFamilies.push_back(aFam2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
list<DriverMED_FamilyPtr>::iterator aFamsIter = aFamilies.begin();
|
||||||
|
for (; aFamsIter != aFamilies.end(); aFamsIter++)
|
||||||
|
{
|
||||||
|
DriverMED_FamilyPtr aFam = *aFamsIter;
|
||||||
|
if (aFam->myType == SMDSAbs_Node) {
|
||||||
|
aFam->SetId(aNodeFamId++);
|
||||||
|
if (doGroupOfNodes) aFam->myGroupNames.insert(anAllNodesGroupName);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
aFam->SetId(aElemFamId--);
|
||||||
|
if (aFam->myType == SMDSAbs_Edge) {
|
||||||
|
if (doGroupOfEdges) aFam->myGroupNames.insert(anAllEdgesGroupName);
|
||||||
|
}
|
||||||
|
else if (aFam->myType == SMDSAbs_Face) {
|
||||||
|
if (doGroupOfFaces) aFam->myGroupNames.insert(anAllFacesGroupName);
|
||||||
|
}
|
||||||
|
else if (aFam->myType == SMDSAbs_Volume) {
|
||||||
|
if (doGroupOfVolumes) aFam->myGroupNames.insert(anAllVolumesGroupName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create families for elements, not belonging to any group
|
||||||
|
if (doGroupOfNodes)
|
||||||
|
{
|
||||||
|
DriverMED_FamilyPtr aFreeNodesFam (new DriverMED_Family);
|
||||||
|
aFreeNodesFam->SetId(REST_NODES_FAMILY);
|
||||||
|
aFreeNodesFam->myType = SMDSAbs_Node;
|
||||||
|
aFreeNodesFam->myGroupNames.insert(anAllNodesGroupName);
|
||||||
|
aFamilies.push_back(aFreeNodesFam);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (doGroupOfEdges)
|
||||||
|
{
|
||||||
|
DriverMED_FamilyPtr aFreeEdgesFam (new DriverMED_Family);
|
||||||
|
aFreeEdgesFam->SetId(REST_EDGES_FAMILY);
|
||||||
|
aFreeEdgesFam->myType = SMDSAbs_Edge;
|
||||||
|
aFreeEdgesFam->myGroupNames.insert(anAllEdgesGroupName);
|
||||||
|
aFamilies.push_back(aFreeEdgesFam);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (doGroupOfFaces)
|
||||||
|
{
|
||||||
|
DriverMED_FamilyPtr aFreeFacesFam (new DriverMED_Family);
|
||||||
|
aFreeFacesFam->SetId(REST_FACES_FAMILY);
|
||||||
|
aFreeFacesFam->myType = SMDSAbs_Face;
|
||||||
|
aFreeFacesFam->myGroupNames.insert(anAllFacesGroupName);
|
||||||
|
aFamilies.push_back(aFreeFacesFam);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (doGroupOfVolumes)
|
||||||
|
{
|
||||||
|
DriverMED_FamilyPtr aFreeVolumesFam (new DriverMED_Family);
|
||||||
|
aFreeVolumesFam->SetId(REST_VOLUMES_FAMILY);
|
||||||
|
aFreeVolumesFam->myType = SMDSAbs_Volume;
|
||||||
|
aFreeVolumesFam->myGroupNames.insert(anAllVolumesGroupName);
|
||||||
|
aFamilies.push_back(aFreeVolumesFam);
|
||||||
|
}
|
||||||
|
|
||||||
|
DriverMED_FamilyPtr aNullFam (new DriverMED_Family);
|
||||||
|
aNullFam->SetId(0);
|
||||||
|
aNullFam->myType = SMDSAbs_All;
|
||||||
|
aFamilies.push_back(aNullFam);
|
||||||
|
|
||||||
|
return aFamilies;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* Create TFamilyInfo for this family
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
MEDA::PFamilyInfo DriverMED_Family::GetFamilyInfo
|
||||||
|
(const MEDA::PMeshInfo& theMeshInfo) const
|
||||||
|
{
|
||||||
|
string aValue;
|
||||||
|
ostringstream aStr;
|
||||||
|
aStr << myId;
|
||||||
|
aValue = aStr.str();
|
||||||
|
MED::TStringVector anAttrDescs (1, ""); // 1 attribute with empty description,
|
||||||
|
MED::TIntVector anAttrIds (1, myId); // Id=0,
|
||||||
|
MED::TIntVector anAttrVals (1, myId); // Value=0
|
||||||
|
|
||||||
|
MEDA::PFamilyInfo anInfo = MEDA::TWrapper::CrFamilyInfo(theMeshInfo,
|
||||||
|
aValue,
|
||||||
|
myId,
|
||||||
|
myGroupNames,
|
||||||
|
anAttrDescs,anAttrIds,anAttrVals);
|
||||||
|
|
||||||
|
// cout << endl;
|
||||||
|
// cout << "Groups: ";
|
||||||
|
// set<string>::iterator aGrIter = myGroupNames.begin();
|
||||||
|
// for (; aGrIter != myGroupNames.end(); aGrIter++)
|
||||||
|
// {
|
||||||
|
// cout << " " << *aGrIter;
|
||||||
|
// }
|
||||||
|
// cout << endl;
|
||||||
|
//
|
||||||
|
// cout << "Elements: ";
|
||||||
|
// set<const SMDS_MeshElement *>::iterator anIter = myElements.begin();
|
||||||
|
// for (; anIter != myElements.end(); anIter++)
|
||||||
|
// {
|
||||||
|
// cout << " " << (*anIter)->GetID();
|
||||||
|
// }
|
||||||
|
// cout << endl;
|
||||||
|
|
||||||
|
return anInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* Initialize the tool by SMESHDS_Group
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
void DriverMED_Family::Init (SMESHDS_Group* group)
|
||||||
|
{
|
||||||
|
// Elements
|
||||||
|
myElements.clear();
|
||||||
|
group->InitIterator();
|
||||||
|
while (group->More())
|
||||||
|
{
|
||||||
|
myElements.insert(group->Next());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Type
|
||||||
|
myType = group->GetType();
|
||||||
|
|
||||||
|
// Groups list
|
||||||
|
myGroupNames.clear();
|
||||||
|
myGroupNames.insert(string(group->GetStoreName()));
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* Split <theSubMesh> on some parts (families)
|
||||||
|
* on the basis of the elements type.
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
list<DriverMED_FamilyPtr> DriverMED_Family::SplitByType (SMESHDS_SubMesh* theSubMesh,
|
||||||
|
const int theId)
|
||||||
|
{
|
||||||
|
list<DriverMED_FamilyPtr> aFamilies;
|
||||||
|
DriverMED_FamilyPtr aNodesFamily (new DriverMED_Family);
|
||||||
|
DriverMED_FamilyPtr anEdgesFamily (new DriverMED_Family);
|
||||||
|
DriverMED_FamilyPtr aFacesFamily (new DriverMED_Family);
|
||||||
|
DriverMED_FamilyPtr aVolumesFamily (new DriverMED_Family);
|
||||||
|
|
||||||
|
char submeshGrpName[ 30 ];
|
||||||
|
sprintf( submeshGrpName, "SubMesh %d", theId );
|
||||||
|
|
||||||
|
SMDS_NodeIteratorPtr aNodesIter = theSubMesh->GetNodes();
|
||||||
|
while (aNodesIter->more())
|
||||||
|
{
|
||||||
|
const SMDS_MeshNode* aNode = aNodesIter->next();
|
||||||
|
aNodesFamily->AddElement(aNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
SMDS_ElemIteratorPtr anElemsIter = theSubMesh->GetElements();
|
||||||
|
while (anElemsIter->more())
|
||||||
|
{
|
||||||
|
const SMDS_MeshElement* anElem = anElemsIter->next();
|
||||||
|
switch (anElem->GetType())
|
||||||
|
{
|
||||||
|
case SMDSAbs_Edge:
|
||||||
|
anEdgesFamily->AddElement(anElem);
|
||||||
|
break;
|
||||||
|
case SMDSAbs_Face:
|
||||||
|
aFacesFamily->AddElement(anElem);
|
||||||
|
break;
|
||||||
|
case SMDSAbs_Volume:
|
||||||
|
aVolumesFamily->AddElement(anElem);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!aNodesFamily->IsEmpty()) {
|
||||||
|
aNodesFamily->SetType(SMDSAbs_Node);
|
||||||
|
aNodesFamily->AddGroupName(submeshGrpName);
|
||||||
|
aFamilies.push_back(aNodesFamily);
|
||||||
|
}
|
||||||
|
if (!anEdgesFamily->IsEmpty()) {
|
||||||
|
anEdgesFamily->SetType(SMDSAbs_Edge);
|
||||||
|
anEdgesFamily->AddGroupName(submeshGrpName);
|
||||||
|
aFamilies.push_back(anEdgesFamily);
|
||||||
|
}
|
||||||
|
if (!aFacesFamily->IsEmpty()) {
|
||||||
|
aFacesFamily->SetType(SMDSAbs_Face);
|
||||||
|
aFacesFamily->AddGroupName(submeshGrpName);
|
||||||
|
aFamilies.push_back(aFacesFamily);
|
||||||
|
}
|
||||||
|
if (!aVolumesFamily->IsEmpty()) {
|
||||||
|
aVolumesFamily->SetType(SMDSAbs_Volume);
|
||||||
|
aVolumesFamily->AddGroupName(submeshGrpName);
|
||||||
|
aFamilies.push_back(aVolumesFamily);
|
||||||
|
}
|
||||||
|
|
||||||
|
return aFamilies;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* Remove from <myElements> elements, common with <by>,
|
||||||
|
* Remove from <by> elements, common with <myElements>,
|
||||||
|
* Create family <common> from common elements, with combined groups list.
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
void DriverMED_Family::Split (DriverMED_FamilyPtr by,
|
||||||
|
DriverMED_FamilyPtr common)
|
||||||
|
{
|
||||||
|
// Elements
|
||||||
|
set<const SMDS_MeshElement *>::iterator anIter = by->myElements.begin();
|
||||||
|
for (; anIter != by->myElements.end(); anIter++)
|
||||||
|
{
|
||||||
|
if (myElements.find(*anIter) != myElements.end())
|
||||||
|
{
|
||||||
|
common->myElements.insert(*anIter);
|
||||||
|
myElements.erase(*anIter);
|
||||||
|
by->myElements.erase(*anIter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!common->IsEmpty())
|
||||||
|
{
|
||||||
|
// Groups list
|
||||||
|
common->myGroupNames = myGroupNames;
|
||||||
|
set<string>::iterator aGrNamesIter = by->myGroupNames.begin();
|
||||||
|
for (; aGrNamesIter != by->myGroupNames.end(); aGrNamesIter++)
|
||||||
|
{
|
||||||
|
common->myGroupNames.insert(*aGrNamesIter);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Type
|
||||||
|
common->myType = myType;
|
||||||
|
}
|
||||||
|
}
|
121
src/DriverMED/DriverMED_Family.h
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
// SMESH DriverMED : tool to split groups on families
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003 CEA
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// File : DriverMED_Family.hxx
|
||||||
|
// Author : Julia DOROVSKIKH
|
||||||
|
// Module : SMESH
|
||||||
|
// $Header$
|
||||||
|
|
||||||
|
#ifndef _INCLUDE_DRIVERMED_FAMILY
|
||||||
|
#define _INCLUDE_DRIVERMED_FAMILY
|
||||||
|
|
||||||
|
#include "SMDS_Mesh.hxx"
|
||||||
|
#include "SMESHDS_Group.hxx"
|
||||||
|
#include "SMESHDS_SubMesh.hxx"
|
||||||
|
#include "MEDA_Wrapper.hxx"
|
||||||
|
|
||||||
|
#include <boost/shared_ptr.hpp>
|
||||||
|
#include <set>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
#define REST_NODES_FAMILY 1
|
||||||
|
#define REST_EDGES_FAMILY -1
|
||||||
|
#define REST_FACES_FAMILY -2
|
||||||
|
#define REST_VOLUMES_FAMILY -3
|
||||||
|
#define FIRST_NODE_FAMILY 2
|
||||||
|
#define FIRST_ELEM_FAMILY -4
|
||||||
|
|
||||||
|
class DriverMED_Family;
|
||||||
|
typedef boost::shared_ptr<DriverMED_Family> DriverMED_FamilyPtr;
|
||||||
|
|
||||||
|
class DriverMED_Family
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
// Methods for groups storing to MED
|
||||||
|
|
||||||
|
static list<DriverMED_FamilyPtr> MakeFamilies (const map <int, SMESHDS_SubMesh*>& theSubMeshes,
|
||||||
|
const list<SMESHDS_Group*>& theGroups,
|
||||||
|
const bool doGroupOfNodes,
|
||||||
|
const bool doGroupOfEdges,
|
||||||
|
const bool doGroupOfFaces,
|
||||||
|
const bool doGroupOfVolumes);
|
||||||
|
// Split each group from list <theGroups> and each sub-mesh from list <theSubMeshes>
|
||||||
|
// on some parts (families) on the basis of the elements membership in other groups
|
||||||
|
// from <theGroups> and other sub-meshes from <theSubMeshes>.
|
||||||
|
// Resulting families have no common elements.
|
||||||
|
|
||||||
|
MEDA::PFamilyInfo GetFamilyInfo (const MEDA::PMeshInfo& theMeshInfo) const;
|
||||||
|
// Create TFamilyInfo for this family
|
||||||
|
|
||||||
|
const set<const SMDS_MeshElement *>& GetElements () const { return myElements; }
|
||||||
|
// Returns elements of this family
|
||||||
|
|
||||||
|
int GetId () const { return myId; }
|
||||||
|
// Returns a family ID
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
// Methods for groups reading from MED
|
||||||
|
|
||||||
|
void AddElement (const SMDS_MeshElement* theElement) { myElements.insert(theElement); }
|
||||||
|
|
||||||
|
void AddGroupName (string theGroupName) { myGroupNames.insert(theGroupName); }
|
||||||
|
|
||||||
|
void SetType (const SMDSAbs_ElementType theType) { myType = theType; }
|
||||||
|
SMDSAbs_ElementType GetType () { return myType; }
|
||||||
|
|
||||||
|
bool MemberOf (string theGroupName) const
|
||||||
|
{ return (myGroupNames.find(theGroupName) != myGroupNames.end()); }
|
||||||
|
|
||||||
|
const MED::TStringSet& GetGroupNames () const { return myGroupNames; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
void Init (SMESHDS_Group* group);
|
||||||
|
// Initialize the tool by SMESHDS_Group
|
||||||
|
|
||||||
|
static list<DriverMED_FamilyPtr> SplitByType (SMESHDS_SubMesh* theSubMesh,
|
||||||
|
const int theId);
|
||||||
|
// Split <theSubMesh> on some parts (families)
|
||||||
|
// on the basis of the elements type.
|
||||||
|
|
||||||
|
void Split (DriverMED_FamilyPtr by,
|
||||||
|
DriverMED_FamilyPtr common);
|
||||||
|
// Remove from <Elements> elements, common with <by>,
|
||||||
|
// Remove from <by> elements, common with <Elements>,
|
||||||
|
// Create family <common> from common elements, with combined groups list.
|
||||||
|
|
||||||
|
void SetId (const int theId) { myId = theId; }
|
||||||
|
// Sets a family ID
|
||||||
|
|
||||||
|
bool IsEmpty () const { return myElements.empty(); }
|
||||||
|
// Check, if this family has empty list of elements
|
||||||
|
|
||||||
|
private:
|
||||||
|
int myId;
|
||||||
|
SMDSAbs_ElementType myType;
|
||||||
|
set<const SMDS_MeshElement *> myElements;
|
||||||
|
MED::TStringSet myGroupNames;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
@ -31,14 +31,13 @@ using namespace std;
|
|||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
void * SMESH_createMEDDocumentReader()
|
Document_Reader *maker()
|
||||||
{
|
{
|
||||||
return new DriverMED_R_SMESHDS_Document;
|
return new DriverMED_R_SMESHDS_Document;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DriverMED_R_SMESHDS_Document::DriverMED_R_SMESHDS_Document()
|
DriverMED_R_SMESHDS_Document::DriverMED_R_SMESHDS_Document()
|
||||||
:Document_Reader(new DriverMED_R_SMESHDS_Mesh())
|
|
||||||
{
|
{
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
@ -61,6 +60,8 @@ void DriverMED_R_SMESHDS_Document::Read()
|
|||||||
|
|
||||||
int myMeshId;
|
int myMeshId;
|
||||||
|
|
||||||
|
//string myFile = string("/home/home_users/cai/projects/salome_prev04/SALOME_ROOT/data/fra1.med");
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* OUVERTURE DU FICHIER EN LECTURE *
|
* OUVERTURE DU FICHIER EN LECTURE *
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
@ -29,34 +29,60 @@
|
|||||||
|
|
||||||
#include "SMESHDS_Mesh.hxx"
|
#include "SMESHDS_Mesh.hxx"
|
||||||
#include "Mesh_Reader.h"
|
#include "Mesh_Reader.h"
|
||||||
|
#include "DriverMED_Family.h"
|
||||||
|
|
||||||
#include <vector>
|
#include <list>
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
#include <med.h>
|
#include <med.h>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
class SMESHDS_Group;
|
||||||
|
class SMESHDS_SubMesh;
|
||||||
|
|
||||||
class DriverMED_R_SMESHDS_Mesh:public Mesh_Reader
|
class DriverMED_R_SMESHDS_Mesh:public Mesh_Reader
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
public:DriverMED_R_SMESHDS_Mesh();
|
DriverMED_R_SMESHDS_Mesh();
|
||||||
~DriverMED_R_SMESHDS_Mesh();
|
~DriverMED_R_SMESHDS_Mesh();
|
||||||
|
|
||||||
void Read();
|
enum ReadStatus {
|
||||||
void ReadMySelf();
|
DRS_OK,
|
||||||
void Add();
|
DRS_EMPTY, // a MED file contains no mesh with the given name
|
||||||
|
DRS_WARN_RENUMBER, // a MED file has overlapped ranges of element numbers,
|
||||||
|
// so the numbers from the file are ignored
|
||||||
|
DRS_WARN_SKIP_ELEM, // some elements were skipped due to incorrect file data
|
||||||
|
DRS_FAIL // general failure (exception etc.)
|
||||||
|
};
|
||||||
|
|
||||||
void SetMesh(SMDS_Mesh * aMesh);
|
void Read();
|
||||||
void SetFile(string);
|
ReadStatus ReadMySelf();
|
||||||
void SetFileId(med_idt);
|
void Add();
|
||||||
void SetMeshId(int);
|
|
||||||
|
|
||||||
void LinkMeshToShape(string, string, vector < int >);
|
list<string> GetGroupNames();
|
||||||
|
void GetGroup(SMESHDS_Group* theGroup);
|
||||||
|
void CreateAllSubMeshes();
|
||||||
|
void GetSubMesh(SMESHDS_SubMesh* theSubMesh, const int theId);
|
||||||
|
|
||||||
private: SMDS_Mesh * myMesh;
|
list<string> GetMeshNames();
|
||||||
string myFile;
|
|
||||||
med_idt myFileId;
|
void SetMesh(SMDS_Mesh * aMesh);
|
||||||
int myMeshId;
|
void SetFile(string);
|
||||||
|
void SetFileId(med_idt);
|
||||||
|
void SetMeshId(int);
|
||||||
|
void SetMeshName(string theMeshName);
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
SMDS_Mesh * myMesh;
|
||||||
|
string myFile;
|
||||||
|
med_idt myFileId;
|
||||||
|
int myMeshId;
|
||||||
|
string myMeshName;
|
||||||
|
map<int, DriverMED_FamilyPtr> myFamilies;
|
||||||
|
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
@ -207,7 +207,7 @@ void DriverMED_W_SMDS_Mesh::Write()
|
|||||||
for (i = 0; i < MED_NBR_GEOMETRIE_MAILLE; i++)
|
for (i = 0; i < MED_NBR_GEOMETRIE_MAILLE; i++)
|
||||||
nmailles[i] = 0;
|
nmailles[i] = 0;
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshFace *> * itFaces=myMesh->facesIterator();
|
SMDS_FaceIteratorPtr itFaces=myMesh->facesIterator();
|
||||||
int nb_of_nodes, nb_of_faces;
|
int nb_of_nodes, nb_of_faces;
|
||||||
nb_of_faces = myMesh->NbFaces();
|
nb_of_faces = myMesh->NbFaces();
|
||||||
//SCRUTE(nb_of_faces);
|
//SCRUTE(nb_of_faces);
|
||||||
@ -251,7 +251,7 @@ void DriverMED_W_SMDS_Mesh::Write()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshVolume*> * itVolumes=myMesh->volumesIterator();
|
SMDS_VolumeIteratorPtr itVolumes=myMesh->volumesIterator();
|
||||||
while(itVolumes->more())
|
while(itVolumes->more())
|
||||||
{
|
{
|
||||||
const SMDS_MeshVolume * elem = itVolumes->next();
|
const SMDS_MeshVolume * elem = itVolumes->next();
|
||||||
@ -295,7 +295,7 @@ void DriverMED_W_SMDS_Mesh::Write()
|
|||||||
nomnoe = "";
|
nomnoe = "";
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
SMDS_Iterator<const SMDS_MeshNode *> * itNodes=myMesh->nodesIterator();
|
SMDS_NodeIteratorPtr itNodes=myMesh->nodesIterator();
|
||||||
while(itNodes->more())
|
while(itNodes->more())
|
||||||
{
|
{
|
||||||
const SMDS_MeshNode * node = itNodes->next();
|
const SMDS_MeshNode * node = itNodes->next();
|
||||||
@ -370,8 +370,7 @@ void DriverMED_W_SMDS_Mesh::Write()
|
|||||||
//elem_id=*(numele+j);
|
//elem_id=*(numele+j);
|
||||||
//fprintf(stdout,"%d \n",myId);
|
//fprintf(stdout,"%d \n",myId);
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshElement *> * itNode=
|
SMDS_ElemIteratorPtr itNode= elem->nodesIterator();
|
||||||
elem->nodesIterator();
|
|
||||||
|
|
||||||
while(itNode->more())
|
while(itNode->more())
|
||||||
{
|
{
|
||||||
|
@ -31,32 +31,66 @@
|
|||||||
#include "Mesh_Writer.h"
|
#include "Mesh_Writer.h"
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <list>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
#include <med.h>
|
#include <med.h>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
class SMESHDS_Group;
|
||||||
|
class SMESHDS_SubMesh;
|
||||||
|
|
||||||
class DriverMED_W_SMESHDS_Mesh:public Mesh_Writer
|
class DriverMED_W_SMESHDS_Mesh:public Mesh_Writer
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
public:DriverMED_W_SMESHDS_Mesh();
|
DriverMED_W_SMESHDS_Mesh();
|
||||||
~DriverMED_W_SMESHDS_Mesh();
|
~DriverMED_W_SMESHDS_Mesh();
|
||||||
|
|
||||||
void Add();
|
/*! sets file name; only for usage with Add(), not Write()
|
||||||
void Write();
|
*/
|
||||||
void SetMesh(SMDS_Mesh * aMesh);
|
void SetFile(string);
|
||||||
void SetFile(string);
|
void AddGroupOfNodes();
|
||||||
|
void AddGroupOfEdges();
|
||||||
|
void AddGroupOfFaces();
|
||||||
|
void AddGroupOfVolumes();
|
||||||
|
|
||||||
void SetFileId(med_idt);
|
/*! functions to prepare adding one mesh
|
||||||
void SetMeshId(int);
|
*/
|
||||||
|
void SetMesh(SMDS_Mesh * aMesh);
|
||||||
|
void SetMeshId(int);
|
||||||
|
void SetMeshName(string theMeshName);
|
||||||
|
void AddGroup(SMESHDS_Group* theGroup);
|
||||||
|
void AddAllSubMeshes();
|
||||||
|
void AddSubMesh(SMESHDS_SubMesh* theSubMesh, int theID);
|
||||||
|
|
||||||
void CreateFamily(char *, char *, int, med_int);
|
/*! add one mesh
|
||||||
|
*/
|
||||||
|
void Add();
|
||||||
|
|
||||||
private: SMDS_Mesh * myMesh;
|
/*! functions to write via DriverMED_W_SMDS_Mesh (no groups)
|
||||||
string myFile;
|
*/
|
||||||
med_idt myFileId;
|
void SetFileId(med_idt);
|
||||||
int myMeshId;
|
void Write();
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
SMDS_Mesh * myMesh;
|
||||||
|
string myFile;
|
||||||
|
med_idt myFileId;
|
||||||
|
int myMeshId;
|
||||||
|
string myMeshName;
|
||||||
|
list<SMESHDS_Group*> myGroups;
|
||||||
|
bool myAllSubMeshes;
|
||||||
|
map<int,SMESHDS_SubMesh*> mySubMeshes;
|
||||||
|
bool myDoGroupOfNodes;
|
||||||
|
bool myDoGroupOfEdges;
|
||||||
|
bool myDoGroupOfFaces;
|
||||||
|
bool myDoGroupOfVolumes;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
28
src/DriverMED/MED_Test.cxx
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
|
||||||
|
#include "DriverMED_R_SMESHDS_Mesh.h"
|
||||||
|
#include "DriverMED_W_SMESHDS_Mesh.h"
|
||||||
|
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
DriverMED_R_SMESHDS_Mesh aR;
|
||||||
|
DriverMED_W_SMESHDS_Mesh aW;
|
||||||
|
return 1;
|
||||||
|
}
|
@ -19,9 +19,12 @@
|
|||||||
#
|
#
|
||||||
# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
#
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
# File : Makefile.in
|
# File : Makefile.in
|
||||||
# Author : Marc Tajchman (CEA)
|
# Author : Marc Tajchman (CEA)
|
||||||
# Module : SMESH
|
# Module : SMESH
|
||||||
|
# $Header$
|
||||||
|
|
||||||
top_srcdir=@top_srcdir@
|
top_srcdir=@top_srcdir@
|
||||||
top_builddir=../..
|
top_builddir=../..
|
||||||
@ -33,29 +36,28 @@ VPATH=.:@srcdir@
|
|||||||
|
|
||||||
# header files
|
# header files
|
||||||
EXPORT_HEADERS = \
|
EXPORT_HEADERS = \
|
||||||
DriverMED_R_SMESHDS_Mesh.h \
|
DriverMED_R_SMDS_Mesh.h DriverMED_R_SMESHDS_Mesh.h DriverMED_R_SMESHDS_Document.h \
|
||||||
DriverMED_R_SMESHDS_Document.h \
|
DriverMED_W_SMDS_Mesh.h DriverMED_W_SMESHDS_Mesh.h DriverMED_W_SMESHDS_Document.h \
|
||||||
DriverMED_R_SMDS_Mesh.h \
|
DriverMED_Family.h
|
||||||
DriverMED_W_SMESHDS_Mesh.h
|
|
||||||
#DriverMED_W_SMDS_Mesh.h \
|
|
||||||
#DriverMED_W_SMESHDS_Document.h
|
|
||||||
|
|
||||||
# Libraries targets
|
# Libraries targets
|
||||||
LIB = libMeshDriverMED.la
|
LIB = libMeshDriverMED.la
|
||||||
LIB_SRC = \
|
LIB_SRC = \
|
||||||
|
DriverMED_R_SMDS_Mesh.cxx \
|
||||||
DriverMED_R_SMESHDS_Mesh.cxx \
|
DriverMED_R_SMESHDS_Mesh.cxx \
|
||||||
DriverMED_R_SMESHDS_Document.cxx \
|
DriverMED_R_SMESHDS_Document.cxx \
|
||||||
DriverMED_R_SMDS_Mesh.cxx \
|
DriverMED_W_SMDS_Mesh.cxx \
|
||||||
DriverMED_W_SMESHDS_Mesh.cxx
|
DriverMED_W_SMESHDS_Document.cxx \
|
||||||
#DriverMED_W_SMDS_Mesh.cxx \
|
DriverMED_W_SMESHDS_Mesh.cxx \
|
||||||
#DriverMED_W_SMESHDS_Document.cxx
|
DriverMED_Family.cxx
|
||||||
|
|
||||||
LIB_CLIENT_IDL =
|
LIB_CLIENT_IDL =
|
||||||
LIB_SERVER_IDL =
|
LIB_SERVER_IDL =
|
||||||
|
|
||||||
# additionnal information to compil and link file
|
# additionnal information to compil and link file
|
||||||
CPPFLAGS += $(OCC_INCLUDES) $(QT_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome
|
CPPFLAGS += $(OCC_INCLUDES) $(QT_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome $(BOOST_CPPFLAGS)
|
||||||
CXXFLAGS += $(OCC_CXXFLAGS) $(MED2_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome
|
CXXFLAGS += $(OCC_CXXFLAGS) $(MED2_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome
|
||||||
LDFLAGS += $(MED2_LIBS) -lMeshDriver -lmed
|
LDFLAGS += $(MED2_LIBS) -lMeshDriver -L${KERNEL_ROOT_DIR}/lib/salome -lMEDWrapper
|
||||||
|
|
||||||
%_moc.cxx: %.h
|
%_moc.cxx: %.h
|
||||||
$(MOC) $< -o $@
|
$(MOC) $< -o $@
|
||||||
|
@ -3,20 +3,6 @@ using namespace std;
|
|||||||
|
|
||||||
#include "utilities.h"
|
#include "utilities.h"
|
||||||
|
|
||||||
|
|
||||||
extern "C"
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Factory function which will be called by SMESHDriver
|
|
||||||
*/
|
|
||||||
void * SMESH_createUNVMeshReader()
|
|
||||||
{
|
|
||||||
return new DriverUNV_R_SMDS_Mesh();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
DriverUNV_R_SMDS_Mesh::DriverUNV_R_SMDS_Mesh()
|
DriverUNV_R_SMDS_Mesh::DriverUNV_R_SMDS_Mesh()
|
||||||
{
|
{
|
||||||
;
|
;
|
||||||
|
@ -1,7 +1,13 @@
|
|||||||
|
using namespace std;
|
||||||
#include "DriverUNV_W_SMDS_Mesh.h"
|
#include "DriverUNV_W_SMDS_Mesh.h"
|
||||||
|
|
||||||
#include "SMDS_MeshElement.hxx"
|
#include "SMDS_MeshElement.hxx"
|
||||||
#include "SMDS_MeshNode.hxx"
|
#include "SMDS_MeshNode.hxx"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include <utilities.h>
|
#include <utilities.h>
|
||||||
|
|
||||||
#define sNODE_UNV_ID " 2411"
|
#define sNODE_UNV_ID " 2411"
|
||||||
@ -13,19 +19,6 @@
|
|||||||
#define sELT_BEAM_DESC1 "%10d %2d 1 1 7 %1d\n"
|
#define sELT_BEAM_DESC1 "%10d %2d 1 1 7 %1d\n"
|
||||||
#define sELT_BEAM_DESC2 " 0 1 1\n"
|
#define sELT_BEAM_DESC2 " 0 1 1\n"
|
||||||
|
|
||||||
extern "C"
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Factory function which will be called by SMESHDriver
|
|
||||||
*/
|
|
||||||
void * SMESH_createUNVMeshWriter()
|
|
||||||
{
|
|
||||||
return new DriverUNV_W_SMDS_Mesh();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
DriverUNV_W_SMDS_Mesh::DriverUNV_W_SMDS_Mesh()
|
DriverUNV_W_SMDS_Mesh::DriverUNV_W_SMDS_Mesh()
|
||||||
{
|
{
|
||||||
;
|
;
|
||||||
@ -96,6 +89,7 @@ void DriverUNV_W_SMDS_Mesh::Write()
|
|||||||
SCRUTE(nb_of_volumes);
|
SCRUTE(nb_of_volumes);
|
||||||
|
|
||||||
fprintf(stdout, "%d %d\n", nbNodes, nbCells);
|
fprintf(stdout, "%d %d\n", nbNodes, nbCells);
|
||||||
|
fprintf(myFileId, "%d %d\n", nbNodes, nbCells);
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* ECRITURE DES NOEUDS *
|
* ECRITURE DES NOEUDS *
|
||||||
@ -107,7 +101,7 @@ void DriverUNV_W_SMDS_Mesh::Write()
|
|||||||
fprintf(myFileId, "%s\n", sUNV_SEPARATOR);
|
fprintf(myFileId, "%s\n", sUNV_SEPARATOR);
|
||||||
fprintf(myFileId, "%s\n", sNODE_UNV_ID);
|
fprintf(myFileId, "%s\n", sNODE_UNV_ID);
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshNode *> * itNodes=myMesh->nodesIterator();
|
SMDS_NodeIteratorPtr itNodes=myMesh->nodesIterator();
|
||||||
while(itNodes->more())
|
while(itNodes->more())
|
||||||
{
|
{
|
||||||
const SMDS_MeshNode * node = itNodes->next();
|
const SMDS_MeshNode * node = itNodes->next();
|
||||||
@ -116,7 +110,6 @@ void DriverUNV_W_SMDS_Mesh::Write()
|
|||||||
fprintf(myFileId, "%25.16E%25.16E%25.16E\n", node->X(), node->Y(),
|
fprintf(myFileId, "%25.16E%25.16E%25.16E\n", node->X(), node->Y(),
|
||||||
node->Z());
|
node->Z());
|
||||||
}
|
}
|
||||||
delete itNodes;
|
|
||||||
fprintf(myFileId, "%s\n", sUNV_SEPARATOR);
|
fprintf(myFileId, "%s\n", sUNV_SEPARATOR);
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -130,11 +123,11 @@ void DriverUNV_W_SMDS_Mesh::Write()
|
|||||||
fprintf(myFileId, "%s\n", sUNV_SEPARATOR);
|
fprintf(myFileId, "%s\n", sUNV_SEPARATOR);
|
||||||
fprintf(myFileId, "%s\n", sELT_UNV_ID);
|
fprintf(myFileId, "%s\n", sELT_UNV_ID);
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshEdge *> * itEdges=myMesh->edgesIterator();
|
SMDS_EdgeIteratorPtr itEdges=myMesh->edgesIterator();
|
||||||
while(itEdges->more())
|
while(itEdges->more())
|
||||||
{
|
{
|
||||||
const SMDS_MeshElement * elem = itEdges->next();
|
const SMDS_MeshElement * elem = itEdges->next();
|
||||||
SMDS_Iterator<const SMDS_MeshElement*> *itn=elem->nodesIterator();
|
SMDS_ElemIteratorPtr itn=elem->nodesIterator();
|
||||||
|
|
||||||
switch (elem->NbNodes())
|
switch (elem->NbNodes())
|
||||||
{
|
{
|
||||||
@ -155,11 +148,9 @@ void DriverUNV_W_SMDS_Mesh::Write()
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
delete itn;
|
|
||||||
}
|
}
|
||||||
delete itEdges;
|
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshFace*> * itFaces=myMesh->facesIterator();
|
SMDS_FaceIteratorPtr itFaces=myMesh->facesIterator();
|
||||||
while(itFaces->more())
|
while(itFaces->more())
|
||||||
{
|
{
|
||||||
const SMDS_MeshElement * elem = itFaces->next();
|
const SMDS_MeshElement * elem = itFaces->next();
|
||||||
@ -190,15 +181,13 @@ void DriverUNV_W_SMDS_Mesh::Write()
|
|||||||
fprintf(myFileId, "element not registered\n");
|
fprintf(myFileId, "element not registered\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshElement*> *itn=elem->nodesIterator();
|
SMDS_ElemIteratorPtr itn=elem->nodesIterator();
|
||||||
while(itn->more()) fprintf(myFileId, "%10d", itn->next()->GetID());
|
while(itn->more()) fprintf(myFileId, "%10d", itn->next()->GetID());
|
||||||
delete itn;
|
|
||||||
|
|
||||||
fprintf(myFileId, "\n");
|
fprintf(myFileId, "\n");
|
||||||
}
|
}
|
||||||
delete itFaces;
|
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshVolume*> * itVolumes=myMesh->volumesIterator();
|
SMDS_VolumeIteratorPtr itVolumes=myMesh->volumesIterator();
|
||||||
while(itVolumes->more())
|
while(itVolumes->more())
|
||||||
{
|
{
|
||||||
const SMDS_MeshElement * elem = itVolumes->next();
|
const SMDS_MeshElement * elem = itVolumes->next();
|
||||||
@ -222,13 +211,11 @@ void DriverUNV_W_SMDS_Mesh::Write()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshElement*> *itn=elem->nodesIterator();
|
SMDS_ElemIteratorPtr itn=elem->nodesIterator();
|
||||||
while(itn->more()) fprintf(myFileId, "%10d", itn->next()->GetID());
|
while(itn->more()) fprintf(myFileId, "%10d", itn->next()->GetID());
|
||||||
delete itn;
|
|
||||||
|
|
||||||
fprintf(myFileId, "\n");
|
fprintf(myFileId, "\n");
|
||||||
}
|
}
|
||||||
delete itVolumes;
|
|
||||||
|
|
||||||
fprintf(myFileId, "%s\n", sUNV_SEPARATOR);
|
fprintf(myFileId, "%s\n", sUNV_SEPARATOR);
|
||||||
|
|
||||||
|
@ -112,7 +112,7 @@ void DriverUNV_W_SMESHDS_Mesh::Add()
|
|||||||
fprintf(myFileId, "%s\n", sUNV_SEPARATOR);
|
fprintf(myFileId, "%s\n", sUNV_SEPARATOR);
|
||||||
fprintf(myFileId, "%s\n", sNODE_UNV_ID);
|
fprintf(myFileId, "%s\n", sNODE_UNV_ID);
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshNode *> * itNodes=myMesh->nodesIterator();
|
SMDS_NodeIteratorPtr itNodes=myMesh->nodesIterator();
|
||||||
while(itNodes->more())
|
while(itNodes->more())
|
||||||
{
|
{
|
||||||
const SMDS_MeshNode * node = itNodes->next();
|
const SMDS_MeshNode * node = itNodes->next();
|
||||||
@ -121,7 +121,6 @@ void DriverUNV_W_SMESHDS_Mesh::Add()
|
|||||||
fprintf(myFileId, "%25.16E%25.16E%25.16E\n", node->X(), node->Y(),
|
fprintf(myFileId, "%25.16E%25.16E%25.16E\n", node->X(), node->Y(),
|
||||||
node->Z());
|
node->Z());
|
||||||
}
|
}
|
||||||
delete itNodes;
|
|
||||||
fprintf(myFileId, "%s\n", sUNV_SEPARATOR);
|
fprintf(myFileId, "%s\n", sUNV_SEPARATOR);
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -135,11 +134,11 @@ void DriverUNV_W_SMESHDS_Mesh::Add()
|
|||||||
fprintf(myFileId, "%s\n", sUNV_SEPARATOR);
|
fprintf(myFileId, "%s\n", sUNV_SEPARATOR);
|
||||||
fprintf(myFileId, "%s\n", sELT_UNV_ID);
|
fprintf(myFileId, "%s\n", sELT_UNV_ID);
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshEdge *> * itEdges=myMesh->edgesIterator();
|
SMDS_EdgeIteratorPtr itEdges=myMesh->edgesIterator();
|
||||||
while(itEdges->more())
|
while(itEdges->more())
|
||||||
{
|
{
|
||||||
const SMDS_MeshEdge * elem = itEdges->next();
|
const SMDS_MeshEdge * elem = itEdges->next();
|
||||||
SMDS_Iterator<const SMDS_MeshElement*> *itn=elem->nodesIterator();
|
SMDS_ElemIteratorPtr itn=elem->nodesIterator();
|
||||||
|
|
||||||
switch (elem->NbNodes())
|
switch (elem->NbNodes())
|
||||||
{
|
{
|
||||||
@ -159,11 +158,9 @@ void DriverUNV_W_SMESHDS_Mesh::Add()
|
|||||||
itn->next()->GetID(), itn->next()->GetID());
|
itn->next()->GetID(), itn->next()->GetID());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
delete itn;
|
|
||||||
}
|
}
|
||||||
delete itEdges;
|
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshFace*> * itFaces=myMesh->facesIterator();
|
SMDS_FaceIteratorPtr itFaces=myMesh->facesIterator();
|
||||||
while(itFaces->more())
|
while(itFaces->more())
|
||||||
{
|
{
|
||||||
const SMDS_MeshElement * elem = itFaces->next();
|
const SMDS_MeshElement * elem = itFaces->next();
|
||||||
@ -194,15 +191,13 @@ void DriverUNV_W_SMESHDS_Mesh::Add()
|
|||||||
fprintf(myFileId, "element not registered\n");
|
fprintf(myFileId, "element not registered\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshElement*> *itn=elem->nodesIterator();
|
SMDS_ElemIteratorPtr itn=elem->nodesIterator();
|
||||||
while(itn->more()) fprintf(myFileId, "%10d", itn->next()->GetID());
|
while(itn->more()) fprintf(myFileId, "%10d", itn->next()->GetID());
|
||||||
delete itn;
|
|
||||||
|
|
||||||
fprintf(myFileId, "\n");
|
fprintf(myFileId, "\n");
|
||||||
}
|
}
|
||||||
delete itFaces;
|
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshVolume*> * itVolumes=myMesh->volumesIterator();
|
SMDS_VolumeIteratorPtr itVolumes=myMesh->volumesIterator();
|
||||||
while(itVolumes->more())
|
while(itVolumes->more())
|
||||||
{
|
{
|
||||||
const SMDS_MeshElement * elem = itVolumes->next();
|
const SMDS_MeshElement * elem = itVolumes->next();
|
||||||
@ -226,13 +221,11 @@ void DriverUNV_W_SMESHDS_Mesh::Add()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
SMDS_Iterator<const SMDS_MeshElement*> *itn=elem->nodesIterator();
|
SMDS_ElemIteratorPtr itn=elem->nodesIterator();
|
||||||
while(itn->more()) fprintf(myFileId, "%10d", itn->next()->GetID());
|
while(itn->more()) fprintf(myFileId, "%10d", itn->next()->GetID());
|
||||||
delete itn;
|
|
||||||
|
|
||||||
fprintf(myFileId, "\n");
|
fprintf(myFileId, "\n");
|
||||||
}
|
}
|
||||||
delete itVolumes;
|
|
||||||
fprintf(myFileId, "%s\n", sUNV_SEPARATOR);
|
fprintf(myFileId, "%s\n", sUNV_SEPARATOR);
|
||||||
|
|
||||||
fclose(myFileId);
|
fclose(myFileId);
|
||||||
|
@ -35,30 +35,25 @@ VPATH=.:@srcdir@
|
|||||||
@COMMENCE@
|
@COMMENCE@
|
||||||
|
|
||||||
# header files
|
# header files
|
||||||
EXPORT_HEADERS = \
|
EXPORT_HEADERS= DriverUNV_R_SMDS_Mesh.h DriverUNV_R_SMESHDS_Mesh.h DriverUNV_R_SMESHDS_Document.h \
|
||||||
DriverUNV_R_SMDS_Mesh.h \
|
DriverUNV_W_SMDS_Mesh.h DriverUNV_W_SMESHDS_Mesh.h DriverUNV_W_SMESHDS_Document.h
|
||||||
DriverUNV_W_SMDS_Mesh.h
|
|
||||||
#DriverUNV_W_SMESHDS_Mesh.h \
|
|
||||||
#DriverUNV_W_SMESHDS_Document.h \
|
|
||||||
#DriverUNV_R_SMESHDS_Mesh.h \
|
|
||||||
#DriverUNV_R_SMESHDS_Document.h \
|
|
||||||
|
|
||||||
# Libraries targets
|
# Libraries targets
|
||||||
LIB = libMeshDriverUNV.la
|
LIB = libMeshDriverUNV.la
|
||||||
LIB_SRC = \
|
LIB_SRC = \
|
||||||
DriverUNV_R_SMDS_Mesh.cxx \
|
DriverUNV_R_SMDS_Mesh.cxx \
|
||||||
DriverUNV_W_SMDS_Mesh.cxx
|
DriverUNV_R_SMESHDS_Mesh.cxx \
|
||||||
#DriverUNV_W_SMESHDS_Mesh.cxx \
|
DriverUNV_R_SMESHDS_Document.cxx \
|
||||||
#DriverUNV_R_SMESHDS_Mesh.cxx \
|
DriverUNV_W_SMESHDS_Document.cxx \
|
||||||
#DriverUNV_R_SMESHDS_Document.cxx \
|
DriverUNV_W_SMDS_Mesh.cxx \
|
||||||
#DriverUNV_W_SMESHDS_Document.cxx \
|
DriverUNV_W_SMESHDS_Mesh.cxx
|
||||||
|
|
||||||
LIB_CLIENT_IDL =
|
LIB_CLIENT_IDL =
|
||||||
|
|
||||||
LIB_SERVER_IDL =
|
LIB_SERVER_IDL =
|
||||||
|
|
||||||
# additionnal information to compil and link file
|
# additionnal information to compil and link file
|
||||||
CPPFLAGS += $(OCC_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome
|
CPPFLAGS += $(OCC_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome $(BOOST_CPPFLAGS)
|
||||||
CXXFLAGS += $(OCC_CXXFLAGS) $(MED2_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome
|
CXXFLAGS += $(OCC_CXXFLAGS) $(MED2_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome
|
||||||
LDFLAGS += $(MED2_LIBS) -lMeshDriver
|
LDFLAGS += $(MED2_LIBS) -lMeshDriver
|
||||||
|
|
||||||
|
123
src/DriverUNV/UNV2411_Structure.cxx
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
|
#include "UNV2411_Structure.hxx"
|
||||||
|
#include "UNV_Utilities.hxx"
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
using namespace UNV;
|
||||||
|
using namespace UNV2411;
|
||||||
|
|
||||||
|
#ifdef _DEBUG_
|
||||||
|
static int MYDEBUG = 1;
|
||||||
|
#else
|
||||||
|
static int MYDEBUG = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static string _label_dataset = "2411";
|
||||||
|
|
||||||
|
UNV2411::TRecord::TRecord():
|
||||||
|
exp_coord_sys_num(0),
|
||||||
|
disp_coord_sys_num(0),
|
||||||
|
color(0)
|
||||||
|
{}
|
||||||
|
|
||||||
|
void UNV2411::Read(std::ifstream& in_stream, TDataSet& theDataSet)
|
||||||
|
{
|
||||||
|
if(!in_stream.good())
|
||||||
|
EXCEPTION(runtime_error,"ERROR: Input file not good.");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* adjust the \p istream to our
|
||||||
|
* position
|
||||||
|
*/
|
||||||
|
if(!beginning_of_dataset(in_stream,_label_dataset))
|
||||||
|
EXCEPTION(runtime_error,"ERROR: Could not find "<<_label_dataset<<" dataset!");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* always 3 coordinates in the UNV file, no matter
|
||||||
|
* which dimensionality libMesh is in
|
||||||
|
*/
|
||||||
|
TNodeLab aLabel;
|
||||||
|
std::string num_buf;
|
||||||
|
for(; !in_stream.eof();){
|
||||||
|
in_stream >> aLabel ;
|
||||||
|
if(aLabel == -1){
|
||||||
|
// end of dataset is reached
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
TRecord aRec;
|
||||||
|
in_stream>>aRec.exp_coord_sys_num;
|
||||||
|
in_stream>>aRec.disp_coord_sys_num;
|
||||||
|
in_stream>>aRec.color;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* take care of the
|
||||||
|
* floating-point data
|
||||||
|
*/
|
||||||
|
for(int d = 0; d < 3; d++){
|
||||||
|
in_stream>>num_buf;
|
||||||
|
aRec.coord[d] = D_to_e(num_buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
theDataSet.insert(TDataSet::value_type(aLabel,aRec));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void UNV2411::Write(std::ofstream& out_stream, const TDataSet& theDataSet)
|
||||||
|
{
|
||||||
|
if(!out_stream.good())
|
||||||
|
EXCEPTION(runtime_error,"ERROR: Output file not good.");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Write beginning of dataset
|
||||||
|
*/
|
||||||
|
out_stream<<" -1\n";
|
||||||
|
out_stream<<" "<<_label_dataset<<"\n";
|
||||||
|
|
||||||
|
TDataSet::const_iterator anIter = theDataSet.begin();
|
||||||
|
for(; anIter != theDataSet.end(); anIter++){
|
||||||
|
const TNodeLab& aLabel = anIter->first;
|
||||||
|
const TRecord& aRec = anIter->second;
|
||||||
|
char buf[78];
|
||||||
|
sprintf(buf, "%10d%10d%10d%10d\n",
|
||||||
|
aLabel,
|
||||||
|
aRec.exp_coord_sys_num,
|
||||||
|
aRec.disp_coord_sys_num,
|
||||||
|
aRec.color);
|
||||||
|
out_stream<<buf;
|
||||||
|
|
||||||
|
// the coordinates
|
||||||
|
sprintf(buf, "%25.16E%25.16E%25.16E\n",
|
||||||
|
aRec.coord[0],
|
||||||
|
aRec.coord[1],
|
||||||
|
aRec.coord[2]);
|
||||||
|
out_stream<<buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Write end of dataset
|
||||||
|
*/
|
||||||
|
out_stream<<" -1\n";
|
||||||
|
}
|
46
src/DriverUNV/UNV2411_Structure.hxx
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
|
||||||
|
#ifndef UNV2411_Structure_HeaderFile
|
||||||
|
#define UNV2411_Structure_HeaderFile
|
||||||
|
|
||||||
|
#include <map>
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
|
namespace UNV2411{
|
||||||
|
|
||||||
|
struct TRecord{
|
||||||
|
TRecord();
|
||||||
|
int exp_coord_sys_num; // export coordinate system number
|
||||||
|
int disp_coord_sys_num; // displacement coordinate system number
|
||||||
|
int color; // color
|
||||||
|
double coord[3]; // node coordinates in the part coordinate system
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef int TNodeLab; // type of node label
|
||||||
|
typedef std::map<TNodeLab,TRecord> TDataSet;
|
||||||
|
|
||||||
|
void Read(std::ifstream& in_stream, TDataSet& theDataSet);
|
||||||
|
|
||||||
|
void Write(std::ofstream& out_stream, const TDataSet& theDataSet);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
202
src/DriverUNV/UNV2412_Structure.cxx
Normal file
@ -0,0 +1,202 @@
|
|||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
|
||||||
|
#include <fstream>
|
||||||
|
#include <iomanip>
|
||||||
|
|
||||||
|
#include "UNV2412_Structure.hxx"
|
||||||
|
#include "UNV_Utilities.hxx"
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
using namespace UNV;
|
||||||
|
using namespace UNV2412;
|
||||||
|
|
||||||
|
#ifdef _DEBUG_
|
||||||
|
static int MYDEBUG = 1;
|
||||||
|
#else
|
||||||
|
static int MYDEBUG = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static string _label_dataset = "2412";
|
||||||
|
|
||||||
|
UNV2412::TRecord::TRecord():
|
||||||
|
phys_prop_tab_num(2),
|
||||||
|
mat_prop_tab_num(1),
|
||||||
|
color(7),
|
||||||
|
beam_orientation(0),
|
||||||
|
beam_fore_end(0),
|
||||||
|
beam_aft_end(0)
|
||||||
|
{}
|
||||||
|
|
||||||
|
void UNV2412::Read(std::ifstream& in_stream, TDataSet& theDataSet)
|
||||||
|
{
|
||||||
|
if(!in_stream.good())
|
||||||
|
EXCEPTION(runtime_error,"ERROR: Input file not good.");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* adjust the \p istream to our
|
||||||
|
* position
|
||||||
|
*/
|
||||||
|
if(!beginning_of_dataset(in_stream,_label_dataset))
|
||||||
|
EXCEPTION(runtime_error,"ERROR: Could not find "<<_label_dataset<<" dataset!");
|
||||||
|
|
||||||
|
TElementLab aLabel;
|
||||||
|
for(; !in_stream.eof();){
|
||||||
|
in_stream >> aLabel ;
|
||||||
|
if(aLabel == -1){
|
||||||
|
// end of dataset is reached
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
int n_nodes;
|
||||||
|
TRecord aRec;
|
||||||
|
in_stream>>aRec.fe_descriptor_id;
|
||||||
|
in_stream>>aRec.phys_prop_tab_num;
|
||||||
|
in_stream>>aRec.mat_prop_tab_num;
|
||||||
|
in_stream>>aRec.color;
|
||||||
|
in_stream>>n_nodes;
|
||||||
|
|
||||||
|
if(IsBeam(aRec.fe_descriptor_id)){
|
||||||
|
in_stream>>aRec.beam_orientation;
|
||||||
|
in_stream>>aRec.beam_fore_end;
|
||||||
|
in_stream>>aRec.beam_aft_end;
|
||||||
|
}
|
||||||
|
|
||||||
|
aRec.node_labels.resize(n_nodes);
|
||||||
|
for(int j=0; j < n_nodes; j++){
|
||||||
|
// read node labels
|
||||||
|
in_stream>>aRec.node_labels[j];
|
||||||
|
}
|
||||||
|
|
||||||
|
theDataSet.insert(TDataSet::value_type(aLabel,aRec));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void UNV2412::Write(std::ofstream& out_stream, const TDataSet& theDataSet)
|
||||||
|
{
|
||||||
|
if(!out_stream.good())
|
||||||
|
EXCEPTION(runtime_error,"ERROR: Output file not good.");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Write beginning of dataset
|
||||||
|
*/
|
||||||
|
out_stream<<" -1\n";
|
||||||
|
out_stream<<" "<<_label_dataset<<"\n";
|
||||||
|
|
||||||
|
TDataSet::const_iterator anIter = theDataSet.begin();
|
||||||
|
for(; anIter != theDataSet.end(); anIter++){
|
||||||
|
const TElementLab& aLabel = anIter->first;
|
||||||
|
const TRecord& aRec = anIter->second;
|
||||||
|
out_stream<<std::setw(10)<<aLabel; /* element ID */
|
||||||
|
out_stream<<std::setw(10)<<aRec.fe_descriptor_id; /* type of element */
|
||||||
|
out_stream<<std::setw(10)<<aRec.phys_prop_tab_num;
|
||||||
|
out_stream<<std::setw(10)<<aRec.mat_prop_tab_num;
|
||||||
|
out_stream<<std::setw(10)<<aRec.color;
|
||||||
|
out_stream<<std::setw(10)<<aRec.node_labels.size()<<std::endl; /* No. of nodes per element */
|
||||||
|
|
||||||
|
if(IsBeam(aRec.fe_descriptor_id)){
|
||||||
|
out_stream<<std::setw(10)<<aRec.beam_orientation;
|
||||||
|
out_stream<<std::setw(10)<<aRec.beam_fore_end;
|
||||||
|
out_stream<<std::setw(10)<<aRec.beam_aft_end<<std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
int n_nodes = aRec.node_labels.size();
|
||||||
|
int iEnd = (n_nodes-1)/8 + 1;
|
||||||
|
for(int i = 0, k = 0; i < iEnd; i++){
|
||||||
|
int jEnd = n_nodes - 8*(i+1);
|
||||||
|
if(jEnd < 0)
|
||||||
|
jEnd = 8 + jEnd;
|
||||||
|
else
|
||||||
|
jEnd = 8;
|
||||||
|
for(int j = 0; j < jEnd ; k++, j++){
|
||||||
|
out_stream<<std::setw(10)<<aRec.node_labels[k];
|
||||||
|
}
|
||||||
|
out_stream<<std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Write end of dataset
|
||||||
|
*/
|
||||||
|
out_stream<<" -1\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool UNV2412::IsBeam(int theFeDescriptorId){
|
||||||
|
switch (theFeDescriptorId){
|
||||||
|
case 11:
|
||||||
|
case 21:
|
||||||
|
case 22:
|
||||||
|
case 24:
|
||||||
|
case 25:
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool UNV2412::IsFace(int theFeDescriptorId){
|
||||||
|
switch (theFeDescriptorId){
|
||||||
|
|
||||||
|
case 71: // TRI3
|
||||||
|
case 72:
|
||||||
|
case 74:
|
||||||
|
|
||||||
|
case 41: // Plane Stress Linear Triangle - TRI3
|
||||||
|
case 91: // Thin Shell Linear Triangle - TRI3
|
||||||
|
|
||||||
|
case 42: // Plane Stress Quadratic Triangle - TRI6
|
||||||
|
case 92: // Thin Shell Quadratic Triangle - TRI6
|
||||||
|
|
||||||
|
case 43: // Plane Stress Cubic Triangle
|
||||||
|
|
||||||
|
case 44: // Plane Stress Linear Quadrilateral - QUAD4
|
||||||
|
case 94: // Thin Shell Linear Quadrilateral - QUAD4
|
||||||
|
|
||||||
|
case 45: // Plane Stress Quadratic Quadrilateral - QUAD8
|
||||||
|
case 95: // Thin Shell Quadratic Quadrilateral - QUAD8
|
||||||
|
|
||||||
|
case 46: // Plane Stress Cubic Quadrilateral
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool UNV2412::IsVolume(int theFeDescriptorId){
|
||||||
|
//if(!IsBeam(theFeDescriptorId) && !IsFace(theFeDescriptorId))
|
||||||
|
// return true;
|
||||||
|
switch (theFeDescriptorId){
|
||||||
|
|
||||||
|
case 111: // Solid Linear Tetrahedron - TET4
|
||||||
|
case 118: // Solid Quadratic Tetrahedron - TET10
|
||||||
|
|
||||||
|
case 112: // Solid Linear Prism - PRISM6
|
||||||
|
|
||||||
|
case 115: // Solid Linear Brick - HEX8
|
||||||
|
case 116: // Solid Quadratic Brick - HEX20
|
||||||
|
|
||||||
|
case 117: // Solid Cubic Brick
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
59
src/DriverUNV/UNV2412_Structure.hxx
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
|
||||||
|
#ifndef UNV2412_Structure_HeaderFile
|
||||||
|
#define UNV2412_Structure_HeaderFile
|
||||||
|
|
||||||
|
#include <map>
|
||||||
|
#include <vector>
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
|
|
||||||
|
namespace UNV2412{
|
||||||
|
|
||||||
|
struct TRecord{
|
||||||
|
TRecord();
|
||||||
|
|
||||||
|
int fe_descriptor_id; // FE descriptor id
|
||||||
|
int phys_prop_tab_num; // physical property table number
|
||||||
|
int mat_prop_tab_num; // material property table number
|
||||||
|
int color; // color
|
||||||
|
std::vector<int> node_labels; // node labels defining element
|
||||||
|
|
||||||
|
//FOR BEAM ELEMENTS ONLY
|
||||||
|
int beam_orientation; // beam orientation node number
|
||||||
|
int beam_fore_end; // beam fore-end cross section number
|
||||||
|
int beam_aft_end; // beam aft-end cross section number
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef int TElementLab; // type of element label
|
||||||
|
typedef std::map<TElementLab,TRecord> TDataSet;
|
||||||
|
|
||||||
|
void Read(std::ifstream& in_stream, TDataSet& theDataSet);
|
||||||
|
|
||||||
|
void Write(std::ofstream& out_stream, const TDataSet& theDataSet);
|
||||||
|
|
||||||
|
bool IsBeam(int theFeDescriptorId);
|
||||||
|
bool IsFace(int theFeDescriptorId);
|
||||||
|
bool IsVolume(int theFeDescriptorId);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
69
src/DriverUNV/UNV_Test.cxx
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
|
||||||
|
#include "UNV2411_Structure.hxx"
|
||||||
|
#include "UNV2412_Structure.hxx"
|
||||||
|
#include "UNV_Utilities.hxx"
|
||||||
|
|
||||||
|
#include "DriverUNV_R_SMDS_Mesh.h"
|
||||||
|
#include "DriverUNV_W_SMDS_Mesh.h"
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
static int MYDEBUG = 1;
|
||||||
|
#else
|
||||||
|
static int MYDEBUG = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
void ReadMed(const char* theFileName){
|
||||||
|
std::ifstream in_stream(theFileName);
|
||||||
|
|
||||||
|
UNV2411::TDataSet aDataSet2411;
|
||||||
|
UNV2411::Read(in_stream,aDataSet2411);
|
||||||
|
|
||||||
|
in_stream.seekg(0);
|
||||||
|
UNV2412::TDataSet aDataSet2412;
|
||||||
|
UNV2412::Read(in_stream,aDataSet2412);
|
||||||
|
|
||||||
|
string aFileName(theFileName);
|
||||||
|
aFileName += "-";
|
||||||
|
std::ofstream out_stream(aFileName.c_str());
|
||||||
|
|
||||||
|
UNV2411::Write(out_stream,aDataSet2411);
|
||||||
|
UNV2412::Write(out_stream,aDataSet2412);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char** argv){
|
||||||
|
DriverUNV_R_SMDS_Mesh aR;
|
||||||
|
DriverUNV_W_SMDS_Mesh aW;
|
||||||
|
try{
|
||||||
|
if(argc > 1){
|
||||||
|
ReadMed(argv[1]);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}catch(std::exception& exc){
|
||||||
|
cout<<"Follow exception was accured :\n"<<exc.what()<<endl;
|
||||||
|
}catch(...){
|
||||||
|
cout<<"Unknown exception was accured !!!"<<endl;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
37
src/DriverUNV/UNV_Utilities.cxx
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
// Copyright (C) 2003 CEA/DEN, EDF R&D
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// File : VISU_DatConvertor.cxx
|
||||||
|
// Author : Alexey PETROV
|
||||||
|
// Module : VISU
|
||||||
|
|
||||||
|
#include "UNV_Utilities.hxx"
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
#ifdef _DEBUG_
|
||||||
|
static int MYDEBUG = 1;
|
||||||
|
#else
|
||||||
|
static int MYDEBUG = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
int UNV::PrefixPrinter::myCounter = 0;
|
||||||
|
|
||||||
|
UNV::PrefixPrinter::PrefixPrinter()
|
||||||
|
{
|
||||||
|
myCounter++;
|
||||||
|
}
|
||||||
|
|
||||||
|
UNV::PrefixPrinter::~PrefixPrinter()
|
||||||
|
{
|
||||||
|
myCounter--;
|
||||||
|
}
|
||||||
|
|
||||||
|
string UNV::PrefixPrinter::GetPrefix()
|
||||||
|
{
|
||||||
|
if(myCounter)
|
||||||
|
return string(myCounter*2,' ');
|
||||||
|
return "";
|
||||||
|
}
|
104
src/DriverUNV/UNV_Utilities.hxx
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
// Copyright (C) 2003 CEA/DEN, EDF R&D
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// File : VISU_DatConvertor.hxx
|
||||||
|
// Author : Alexey PETROV
|
||||||
|
// Module : VISU
|
||||||
|
|
||||||
|
#ifndef MED_Utilities_HeaderFile
|
||||||
|
#define MED_Utilities_HeaderFile
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <sstream>
|
||||||
|
#include <string>
|
||||||
|
#include <stdexcept>
|
||||||
|
|
||||||
|
|
||||||
|
namespace UNV{
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
class PrefixPrinter{
|
||||||
|
static int myCounter;
|
||||||
|
public:
|
||||||
|
PrefixPrinter();
|
||||||
|
~PrefixPrinter();
|
||||||
|
|
||||||
|
static string GetPrefix();
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @returns \p false when error occured, \p true otherwise.
|
||||||
|
* Adjusts the \p in_stream to the beginning of the
|
||||||
|
* dataset \p ds_name.
|
||||||
|
*/
|
||||||
|
inline bool beginning_of_dataset(std::istream& in_file, const std::string& ds_name)
|
||||||
|
{
|
||||||
|
assert (in_file.good());
|
||||||
|
assert (!ds_name.empty());
|
||||||
|
|
||||||
|
std::string olds, news;
|
||||||
|
|
||||||
|
while(true){
|
||||||
|
in_file >> olds >> news;
|
||||||
|
/*
|
||||||
|
* a "-1" followed by a number means the beginning of a dataset
|
||||||
|
* stop combing at the end of the file
|
||||||
|
*/
|
||||||
|
while( ((olds != "-1") || (news == "-1") ) && !in_file.eof() ){
|
||||||
|
olds = news;
|
||||||
|
in_file >> news;
|
||||||
|
}
|
||||||
|
if(in_file.eof())
|
||||||
|
return false;
|
||||||
|
if (news == ds_name)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// should never end up here
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method for converting exponential notation
|
||||||
|
* from "D" to "e", for example
|
||||||
|
* \p 3.141592654D+00 \p --> \p 3.141592654e+00
|
||||||
|
* in order to make it readable for C++.
|
||||||
|
*/
|
||||||
|
inline double D_to_e(std::string& number)
|
||||||
|
{
|
||||||
|
/* find "D" in string, start looking at
|
||||||
|
* 6th element, to improve speed.
|
||||||
|
* We dont expect a "D" earlier
|
||||||
|
*/
|
||||||
|
const int position = number.find("D",6);
|
||||||
|
if(position != std::string::npos){
|
||||||
|
number.replace(position, 1, "e");
|
||||||
|
}
|
||||||
|
return atof (number.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef MESSAGE
|
||||||
|
|
||||||
|
#define MESSAGE(msg) std::cout<<__FILE__<<"["<<__LINE__<<"]::"<<msg<<endl;
|
||||||
|
|
||||||
|
#define BEGMSG(msg) std::cout<<UNV::PrefixPrinter::GetPrefix()<<msg
|
||||||
|
|
||||||
|
#define ADDMSG(msg) std::cout<<msg
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef EXCEPTION
|
||||||
|
|
||||||
|
#define EXCEPTION(TYPE, MSG) {\
|
||||||
|
std::ostringstream aStream;\
|
||||||
|
aStream<<__FILE__<<"["<<__LINE__<<"]::"<<MSG;\
|
||||||
|
throw TYPE(aStream.str());\
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
@ -31,14 +31,9 @@ VPATH=.:@srcdir@
|
|||||||
|
|
||||||
@COMMENCE@
|
@COMMENCE@
|
||||||
|
|
||||||
SUBDIRS = OBJECT SMDS SMESHDS Driver DriverMED DriverDAT DriverUNV MEFISTO2 \
|
SUBDIRS = \
|
||||||
SMESH SMESH_I SMESHFiltersSelection SMESHGUI \
|
SMDS SMESHDS Driver DriverMED DriverDAT DriverUNV \
|
||||||
SMESH_SWIG
|
SMESH SMESH_I OBJECT SMESHFiltersSelection SMESHGUI SMESH_SWIG \
|
||||||
|
MEFISTO2 StdMeshers StdMeshers_I StdMeshersGUI
|
||||||
ifeq (@WITHNETGEN@,yes)
|
|
||||||
SUBDIRS = OBJECT SMDS SMESHDS Driver DriverMED DriverDAT DriverUNV MEFISTO2 \
|
|
||||||
NETGEN SMESH SMESH_I SMESHFiltersSelection SMESHGUI \
|
|
||||||
SMESH_SWIG
|
|
||||||
endif
|
|
||||||
|
|
||||||
@MODULE@
|
@MODULE@
|
||||||
|
67
src/NETGENPlugin/Makefile.in
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
# SMESH NETGENPlugin : implementaion of SMESH idl descriptions
|
||||||
|
#
|
||||||
|
# Copyright (C) 2004 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
#
|
||||||
|
# This library is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
|
# License as published by the Free Software Foundation; either
|
||||||
|
# version 2.1 of the License.
|
||||||
|
#
|
||||||
|
# This library 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
|
||||||
|
# Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public
|
||||||
|
# License along with this library; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
#
|
||||||
|
# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# File : Makefile.in
|
||||||
|
# Author : Julia DOROVSKIKH
|
||||||
|
# Module : SMESH
|
||||||
|
# $Header$
|
||||||
|
|
||||||
|
top_srcdir=@top_srcdir@
|
||||||
|
top_builddir=../..
|
||||||
|
srcdir=@srcdir@
|
||||||
|
VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_builddir)/idl:
|
||||||
|
|
||||||
|
|
||||||
|
@COMMENCE@
|
||||||
|
|
||||||
|
EXPORT_PYSCRIPTS =
|
||||||
|
|
||||||
|
# .po files to transform in .qm
|
||||||
|
PO_FILES = NETGENPlugin_icons.po
|
||||||
|
|
||||||
|
# Libraries targets
|
||||||
|
LIB = libNETGENEngine.la
|
||||||
|
LIB_SRC = \
|
||||||
|
NETGENPlugin_NETGEN_3D.cxx \
|
||||||
|
NETGENPlugin_NETGEN_3D_i.cxx \
|
||||||
|
NETGENPlugin_i.cxx
|
||||||
|
|
||||||
|
LIB_SERVER_IDL = SMESH_NetgenAlgorithm.idl
|
||||||
|
|
||||||
|
LIB_CLIENT_IDL = SMESH_Gen.idl SMESH_Mesh.idl SMESH_Group.idl
|
||||||
|
|
||||||
|
# Executables targets
|
||||||
|
BIN =
|
||||||
|
BIN_SRC =
|
||||||
|
|
||||||
|
# additionnal information to compil and link file
|
||||||
|
NETGEN_INCLUDES=@NETGEN_INCLUDES@
|
||||||
|
|
||||||
|
CPPFLAGS+= $(OCC_INCLUDES) $(HDF5_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome \
|
||||||
|
-I${GEOM_ROOT_DIR}/include/salome $(NETGEN_INCLUDES) $(BOOST_CPPFLAGS)
|
||||||
|
CXXFLAGS+= $(OCC_CXXFLAGS) $(HDF5_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome \
|
||||||
|
-I${GEOM_ROOT_DIR}/include/salome $(NETGEN_INCLUDES)
|
||||||
|
|
||||||
|
LDFLAGS+= $(HDF5_LIBS) -lSMESHimpl -lSMESHEngine -lStdMeshers -lStdMeshersEngine -lNETGEN -L${KERNEL_ROOT_DIR}/lib/salome -L${GEOM_ROOT_DIR}/lib/salome -lSalomeGenericObj
|
||||||
|
|
||||||
|
@CONCLUDE@
|
1064
src/NETGENPlugin/NETGENPlugin_NETGEN_3D.cxx
Normal file
43
src/NETGENPlugin/NETGENPlugin_NETGEN_3D.hxx
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
//=============================================================================
|
||||||
|
// File : NETGENPlugin_NETGEN_3D.hxx
|
||||||
|
// Moved here from SMESH_NETGEN_3D.hxx
|
||||||
|
// Created : lundi 27 Janvier 2003
|
||||||
|
// Author : Nadir BOUHAMOU (CEA)
|
||||||
|
// Project : SALOME
|
||||||
|
// Copyright : CEA 2003
|
||||||
|
// $Header$
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
#ifndef _NETGENPlugin_NETGEN_3D_HXX_
|
||||||
|
#define _NETGENPlugin_NETGEN_3D_HXX_
|
||||||
|
|
||||||
|
#include "SMESH_3D_Algo.hxx"
|
||||||
|
#include "SMESH_Mesh.hxx"
|
||||||
|
#include "StdMeshers_MaxElementVolume.hxx"
|
||||||
|
#include "Utils_SALOME_Exception.hxx"
|
||||||
|
|
||||||
|
class NETGENPlugin_NETGEN_3D: public SMESH_3D_Algo
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
NETGENPlugin_NETGEN_3D(int hypId, int studyId, SMESH_Gen* gen);
|
||||||
|
virtual ~NETGENPlugin_NETGEN_3D();
|
||||||
|
|
||||||
|
virtual bool CheckHypothesis(SMESH_Mesh& aMesh,
|
||||||
|
const TopoDS_Shape& aShape,
|
||||||
|
SMESH_Hypothesis::Hypothesis_Status& aStatus);
|
||||||
|
|
||||||
|
virtual bool Compute(SMESH_Mesh& aMesh,
|
||||||
|
const TopoDS_Shape& aShape);
|
||||||
|
|
||||||
|
ostream & SaveTo(ostream & save);
|
||||||
|
istream & LoadFrom(istream & load);
|
||||||
|
friend ostream & operator << (ostream & save, NETGENPlugin_NETGEN_3D & hyp);
|
||||||
|
friend istream & operator >> (istream & load, NETGENPlugin_NETGEN_3D & hyp);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
double _maxElementVolume;
|
||||||
|
|
||||||
|
const StdMeshers_MaxElementVolume* _hypMaxElementVolume;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
85
src/NETGENPlugin/NETGENPlugin_NETGEN_3D_i.cxx
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
// SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// File : NETGENPlugin_NETGEN_3D_i.cxx
|
||||||
|
// Moved here from SMESH_NETGEN_3D_i.cxx
|
||||||
|
// Author : Nadir Bouhamou CEA
|
||||||
|
// Module : SMESH
|
||||||
|
// $Header$
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
#include "NETGENPlugin_NETGEN_3D_i.hxx"
|
||||||
|
#include "SMESH_Gen.hxx"
|
||||||
|
|
||||||
|
#include "Utils_CorbaException.hxx"
|
||||||
|
#include "utilities.h"
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* NETGENPlugin_NETGEN_3D_i::NETGENPlugin_NETGEN_3D_i
|
||||||
|
*
|
||||||
|
* Constructor
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
NETGENPlugin_NETGEN_3D_i::NETGENPlugin_NETGEN_3D_i( PortableServer::POA_ptr thePOA,
|
||||||
|
int theStudyId,
|
||||||
|
::SMESH_Gen* theGenImpl )
|
||||||
|
: SALOME::GenericObj_i( thePOA ),
|
||||||
|
SMESH_Hypothesis_i( thePOA ),
|
||||||
|
SMESH_Algo_i( thePOA ),
|
||||||
|
SMESH_3D_Algo_i( thePOA )
|
||||||
|
{
|
||||||
|
MESSAGE( "NETGENPlugin_NETGEN_3D_i::NETGENPlugin_NETGEN_3D_i" );
|
||||||
|
myBaseImpl = new ::NETGENPlugin_NETGEN_3D( theGenImpl->GetANewId(),
|
||||||
|
theStudyId,
|
||||||
|
theGenImpl );
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* NETGENPlugin_NETGEN_3D_i::~NETGENPlugin_NETGEN_3D_i
|
||||||
|
*
|
||||||
|
* Destructor
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
NETGENPlugin_NETGEN_3D_i::~NETGENPlugin_NETGEN_3D_i()
|
||||||
|
{
|
||||||
|
MESSAGE( "NETGENPlugin_NETGEN_3D_i::~NETGENPlugin_NETGEN_3D_i" );
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* NETGENPlugin_NETGEN_3D_i::GetImpl
|
||||||
|
*
|
||||||
|
* Get implementation
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
::NETGENPlugin_NETGEN_3D* NETGENPlugin_NETGEN_3D_i::GetImpl()
|
||||||
|
{
|
||||||
|
MESSAGE( "NETGENPlugin_NETGEN_3D_i::GetImpl" );
|
||||||
|
return ( ::NETGENPlugin_NETGEN_3D* )myBaseImpl;
|
||||||
|
}
|
||||||
|
|
58
src/NETGENPlugin/NETGENPlugin_NETGEN_3D_i.hxx
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
// SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// File : NETGENPlugin_NETGEN_3D_i.hxx
|
||||||
|
// Moved here from SMESH_NETGEN_3D_i.hxx
|
||||||
|
// Author : Nadir Bouhamou CEA
|
||||||
|
// Module : SMESH
|
||||||
|
// $Header$
|
||||||
|
|
||||||
|
#ifndef _NETGENPlugin_NETGEN_3D_I_HXX_
|
||||||
|
#define _NETGENPlugin_NETGEN_3D_I_HXX_
|
||||||
|
|
||||||
|
#include <SALOMEconfig.h>
|
||||||
|
#include CORBA_SERVER_HEADER(SMESH_NetgenAlgorithm)
|
||||||
|
|
||||||
|
#include "SMESH_3D_Algo_i.hxx"
|
||||||
|
#include "NETGENPlugin_NETGEN_3D.hxx"
|
||||||
|
|
||||||
|
// ======================================================
|
||||||
|
// NETGEN 3d algorithm
|
||||||
|
// ======================================================
|
||||||
|
class NETGENPlugin_NETGEN_3D_i:
|
||||||
|
public virtual POA_NETGENPlugin::NETGENPlugin_NETGEN_3D,
|
||||||
|
public virtual SMESH_3D_Algo_i
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// Constructor
|
||||||
|
NETGENPlugin_NETGEN_3D_i( PortableServer::POA_ptr thePOA,
|
||||||
|
int theStudyId,
|
||||||
|
::SMESH_Gen* theGenImpl );
|
||||||
|
// Destructor
|
||||||
|
virtual ~NETGENPlugin_NETGEN_3D_i();
|
||||||
|
|
||||||
|
// Get implementation
|
||||||
|
::NETGENPlugin_NETGEN_3D* GetImpl();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
@ -1,4 +1,4 @@
|
|||||||
// SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
|
// SMESH NETGENPlugin : implementaion of SMESH idl descriptions
|
||||||
//
|
//
|
||||||
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
@ -21,40 +21,40 @@
|
|||||||
//
|
//
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// File : SMESH_HypothesisFactory_i.hxx
|
// File : NETGENPlugin.cxx
|
||||||
// Author : Paul RASCLE, EDF
|
// Author : Julia DOROVSKIKH
|
||||||
// Module : SMESH
|
// Module : SMESH
|
||||||
// $Header$
|
// $Header$
|
||||||
|
|
||||||
#ifndef _SMESH_HYPOTHESISFACTORY_I_HXX_
|
|
||||||
#define _SMESH_HYPOTHESISFACTORY_I_HXX_
|
|
||||||
|
|
||||||
#include "SMESH_Hypothesis_i.hxx"
|
|
||||||
#include <map>
|
|
||||||
#include <string>
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
#include "SMESH_Hypothesis_i.hxx"
|
||||||
|
#include "SMESH_Gen_i.hxx"
|
||||||
|
|
||||||
class GenericHypothesisCreator_i
|
#include "utilities.h"
|
||||||
|
|
||||||
|
#include "NETGENPlugin_NETGEN_3D_i.hxx"
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
extern "C"
|
||||||
{
|
{
|
||||||
public:
|
GenericHypothesisCreator_i* GetHypothesisCreator (const char* aHypName)
|
||||||
virtual SMESH_Hypothesis_i* Create(const char* anHyp,
|
{
|
||||||
int studyId,
|
MESSAGE("GetHypothesisCreator " << aHypName);
|
||||||
::SMESH_Gen* genImpl) = 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
class SMESH_HypothesisFactory_i
|
GenericHypothesisCreator_i* aCreator = 0;
|
||||||
{
|
|
||||||
public:
|
|
||||||
SMESH_HypothesisFactory_i();
|
|
||||||
virtual ~SMESH_HypothesisFactory_i();
|
|
||||||
|
|
||||||
SMESH_Hypothesis_i* Create(const char* anHyp,
|
// Hypotheses
|
||||||
CORBA::Long studyId,
|
|
||||||
::SMESH_Gen* genImpl)
|
|
||||||
throw (SALOME::SALOME_Exception);
|
|
||||||
|
|
||||||
private:
|
// Algorithms
|
||||||
map<string, GenericHypothesisCreator_i*> _creatorMap;
|
if (strcmp(aHypName, "NETGEN_3D") == 0)
|
||||||
};
|
aCreator = new HypothesisCreator_i<NETGENPlugin_NETGEN_3D_i>;
|
||||||
|
else ;
|
||||||
|
|
||||||
#endif
|
return aCreator;
|
||||||
|
}
|
||||||
|
}
|
20
src/NETGENPlugin/NETGENPlugin_icons.po
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# This is a Qt message file in .po format. Each msgid starts with
|
||||||
|
# a scope. This scope should *NOT* be translated - eg. "Foo::Bar"
|
||||||
|
# would be translated to "Pub", not "Foo::Pub".
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
|
"POT-Creation-Date: 2002-05-28 10:57:43 AM CEST\n"
|
||||||
|
"PO-Revision-Date: YYYY-MM-DD\n"
|
||||||
|
"Last-Translator: FULLNAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Content-Type: text/plain; charset=iso-8859-1\n"
|
||||||
|
|
||||||
|
|
||||||
|
#-----------------------------------------------------------
|
||||||
|
# ObjectBrowser
|
||||||
|
#-----------------------------------------------------------
|
||||||
|
|
||||||
|
#mesh_tree_algo_netgen
|
||||||
|
msgid "ICON_SMESH_TREE_ALGO_NETGEN_3D"
|
||||||
|
msgstr "mesh_tree_algo_tetra.png"
|
||||||
|
#msgstr "mesh_tree_algo_netgen.png"
|
@ -27,31 +27,32 @@
|
|||||||
top_srcdir=@top_srcdir@
|
top_srcdir=@top_srcdir@
|
||||||
top_builddir=../..
|
top_builddir=../..
|
||||||
srcdir=@srcdir@
|
srcdir=@srcdir@
|
||||||
VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_builddir)/idl:${KERNEL_ROOT_DIR}/idl/salome:${MED_ROOT_DIR}/idl/salome
|
VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_builddir)/idl
|
||||||
|
|
||||||
@COMMENCE@
|
@COMMENCE@
|
||||||
|
|
||||||
EXPORT_HEADERS = SMESH_Actor.h \
|
EXPORT_HEADERS = SMESH_Actor.h SMESH_Object.h
|
||||||
SMESH_Grid.h
|
|
||||||
|
|
||||||
|
|
||||||
# Libraries targets
|
# Libraries targets
|
||||||
|
|
||||||
LIB = libSMESHObject.la
|
LIB = libSMESHObject.la
|
||||||
LIB_SRC = SMESH_Actor.cxx \
|
LIB_SRC = SMESH_Object.cxx SMESH_DeviceActor.cxx SMESH_Actor.cxx
|
||||||
SMESH_Grid.cxx
|
|
||||||
|
LIB_CLIENT_IDL = SALOME_Exception.idl \
|
||||||
|
SALOME_GenericObj.idl \
|
||||||
|
SMESH_Mesh.idl \
|
||||||
|
SMESH_Filter.idl \
|
||||||
|
SMESH_Group.idl
|
||||||
|
|
||||||
LIB_CLIENT_IDL =
|
|
||||||
|
|
||||||
# Executables targets
|
# Executables targets
|
||||||
BIN =
|
BIN =
|
||||||
BIN_SRC =
|
BIN_SRC =
|
||||||
|
|
||||||
CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome
|
CPPFLAGS+=$(OCC_INCLUDES) $(VTK_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome \
|
||||||
LDFLAGS+=$(QT_MT_LIBS) $(OCC_KERNEL_LIBS) $(VTK_LIBS) $(OGL_LIBS) $(PYTHON_LIBS) -lSalomeObject -L${KERNEL_ROOT_DIR}/lib/salome
|
$(BOOST_CPPFLAGS) $(QT_INCLUDES)
|
||||||
|
LDFLAGS+=$(OCC_KERNEL_LIBS) $(VTK_LIBS) -L${KERNEL_ROOT_DIR}/lib/salome -lSMDS \
|
||||||
%_moc.cxx: %.h
|
-lSalomeGUI -lSalomeObject -lOpUtil
|
||||||
$(MOC) $< -o $@
|
|
||||||
|
|
||||||
|
|
||||||
@CONCLUDE@
|
@CONCLUDE@
|
||||||
|
@ -30,126 +30,205 @@
|
|||||||
#define SMESH_ACTOR_H
|
#define SMESH_ACTOR_H
|
||||||
|
|
||||||
#include "SALOME_Actor.h"
|
#include "SALOME_Actor.h"
|
||||||
|
#include "SMESH_Object.h"
|
||||||
|
|
||||||
// VTK Includes
|
class vtkProperty;
|
||||||
#include <vtkActor.h>
|
class vtkShrinkFilter;
|
||||||
#include <vtkDataSetMapper.h>
|
class vtkPolyDataMapper;
|
||||||
#include <vtkUnstructuredGridReader.h>
|
class vtkUnstructuredGrid;
|
||||||
|
class vtkMergeFilter;
|
||||||
|
class vtkPolyData;
|
||||||
|
|
||||||
// Open CASCADE Includes
|
class vtkMapper;
|
||||||
#include <TColStd_IndexedMapOfInteger.hxx>
|
class vtkActor2D;
|
||||||
#include <TColStd_DataMapOfIntegerInteger.hxx>
|
class vtkMaskPoints;
|
||||||
|
class vtkLabeledDataMapper;
|
||||||
|
class vtkSelectVisiblePoints;
|
||||||
|
|
||||||
typedef struct rgbStruct
|
class vtkScalarBarActor;
|
||||||
{
|
class vtkLookupTable;
|
||||||
float r;
|
|
||||||
float g;
|
|
||||||
float b;
|
|
||||||
} RGBStruct;
|
|
||||||
|
|
||||||
class SMESH_Actor : public SALOME_Actor {
|
class SMESH_DeviceActor;
|
||||||
|
class SALOME_ExtractUnstructuredGrid;
|
||||||
|
|
||||||
|
|
||||||
|
class SMESH_Actor : public SALOME_Actor{
|
||||||
|
friend class SMESH_VisualObj;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
vtkTypeMacro(SMESH_Actor,SALOME_Actor);
|
vtkTypeMacro(SMESH_Actor,SALOME_Actor);
|
||||||
|
static SMESH_Actor* New(TVisualObjPtr theVisualObj,
|
||||||
|
SMESH::FilterManager_ptr theFilterMgr,
|
||||||
|
const char* theEntry,
|
||||||
|
const char* theName,
|
||||||
|
int theIsClear);
|
||||||
|
|
||||||
|
virtual void ReleaseGraphicsResources(vtkWindow *renWin);
|
||||||
|
virtual int RenderOpaqueGeometry(vtkViewport *viewport);
|
||||||
|
virtual int RenderTranslucentGeometry(vtkViewport *viewport);
|
||||||
|
virtual void Render(vtkRenderer *ren);
|
||||||
|
|
||||||
static SMESH_Actor* New();
|
virtual void AddToRender(vtkRenderer* theRenderer);
|
||||||
|
virtual void RemoveFromRender(vtkRenderer* theRenderer);
|
||||||
|
|
||||||
// Description:
|
|
||||||
// This causes the actor to be rendered. It, in turn, will render the actor`s
|
|
||||||
// property and then mapper.
|
|
||||||
virtual void Render(vtkRenderer *, vtkMapper *);
|
|
||||||
|
|
||||||
// Description:
|
|
||||||
// This method is used internally by the rendering process.
|
|
||||||
// We overide the superclass method to properly set the estimated render time.
|
|
||||||
int RenderOpaqueGeometry(vtkViewport *viewport);
|
|
||||||
|
|
||||||
void ShallowCopy(vtkProp *prop);
|
|
||||||
|
|
||||||
void setReader(vtkUnstructuredGridReader* r) ;
|
|
||||||
vtkUnstructuredGridReader* getReader();
|
|
||||||
|
|
||||||
// Highlight
|
|
||||||
virtual bool hasHighlight() { return true; }
|
virtual bool hasHighlight() { return true; }
|
||||||
|
virtual void highlight(Standard_Boolean highlight);
|
||||||
|
virtual void SetPreSelected(Standard_Boolean presel = Standard_False);
|
||||||
|
|
||||||
vtkMapper* getMapper();
|
virtual bool IsInfinitive();
|
||||||
|
|
||||||
void setDisplayMode(int);
|
virtual void SetOpacity(float theValue);
|
||||||
|
virtual float GetOpacity();
|
||||||
|
|
||||||
void SetColor(float r,float g,float b);
|
void SetSufaceColor(float r,float g,float b);
|
||||||
void GetColor(float& r,float& g,float& b);
|
void GetSufaceColor(float& r,float& g,float& b);
|
||||||
void SetHighlightColor(float r,float g,float b);
|
|
||||||
void GetHighlightColor(float& r,float& g,float& b);
|
void SetBackSufaceColor(float r,float g,float b);
|
||||||
void SetPreselectedColor(float r,float g,float b);
|
void GetBackSufaceColor(float& r,float& g,float& b);
|
||||||
void GetPreselectedColor(float& r,float& g,float& b);
|
|
||||||
|
|
||||||
void SetEdgeColor(float r,float g,float b);
|
void SetEdgeColor(float r,float g,float b);
|
||||||
void GetEdgeColor(float& r,float& g,float& b);
|
void GetEdgeColor(float& r,float& g,float& b);
|
||||||
void SetEdgeHighlightColor(float r,float g,float b);
|
|
||||||
void GetEdgeHighlightColor(float& r,float& g,float& b);
|
|
||||||
void SetEdgePreselectedColor(float r,float g,float b);
|
|
||||||
void GetEdgePreselectedColor(float& r,float& g,float& b);
|
|
||||||
|
|
||||||
void SetNodeColor(float r,float g,float b);
|
void SetNodeColor(float r,float g,float b);
|
||||||
void GetNodeColor(float& r,float& g,float& b);
|
void GetNodeColor(float& r,float& g,float& b);
|
||||||
|
|
||||||
|
void SetHighlightColor(float r,float g,float b);
|
||||||
|
void GetHighlightColor(float& r,float& g,float& b);
|
||||||
|
|
||||||
|
void SetPreHighlightColor(float r,float g,float b);
|
||||||
|
void GetPreHighlightColor(float& r,float& g,float& b);
|
||||||
|
|
||||||
void SetNodeSize(int size) ;
|
float GetLineWidth();
|
||||||
int GetNodeSize() ;
|
void SetLineWidth(float theVal);
|
||||||
|
|
||||||
|
void SetNodeSize(float size) ;
|
||||||
|
float GetNodeSize() ;
|
||||||
|
|
||||||
void ClearNode();
|
virtual int GetObjId(int theVtkID);
|
||||||
void ClearElement();
|
virtual TVectorId GetVtkId(int theObjID);
|
||||||
|
|
||||||
void RemoveNode(int idSMESHDSnode);
|
virtual int GetNodeObjId(int theVtkID);
|
||||||
void RemoveElement(int idSMESHDSelement);
|
virtual TVectorId GetNodeVtkId(int theObjID);
|
||||||
|
|
||||||
void AddNode(int idSMESHDSnode, int idVTKnode);
|
virtual int GetElemObjId(int theVtkID);
|
||||||
void AddElement(int idSMESHDSelement, int idVTKelement);
|
virtual TVectorId GetElemVtkId(int theObjID);
|
||||||
|
|
||||||
int GetIdVTKNode(int idSMESHDSnode);
|
virtual int GetObjDimension( const int theObjId );
|
||||||
int GetIdVTKElement(int idSMESHDSelement);
|
|
||||||
|
|
||||||
int GetIdSMESHDSNode(int idVTKnode);
|
virtual void SetVisibility(int theMode);
|
||||||
int GetIdSMESHDSElement(int idVTKelement);
|
|
||||||
|
|
||||||
void SetIdsVTKNode(const TColStd_DataMapOfIntegerInteger& mapVTK);
|
enum EReperesent { ePoint, eEdge, eSurface};
|
||||||
void SetIdsSMESHDSNode(const TColStd_DataMapOfIntegerInteger& mapSMESHDS);
|
virtual void SetRepresentation(int theMode);
|
||||||
|
void SetPointRepresentation(int theIsPointsVisible);
|
||||||
|
bool GetPointRepresentation(){ return myIsPointsVisible;}
|
||||||
|
|
||||||
void SetIdsVTKElement(const TColStd_DataMapOfIntegerInteger& mapVTK);
|
virtual vtkPolyData* GetPolyDataInput();
|
||||||
void SetIdsSMESHDSElement(const TColStd_DataMapOfIntegerInteger& mapSMESHDS);
|
virtual void SetTransform(SALOME_Transform* theTransform);
|
||||||
|
|
||||||
vtkDataSet* DataSource;
|
vtkUnstructuredGrid* GetUnstructuredGrid();
|
||||||
vtkActor* EdgeDevice;
|
virtual vtkMapper* GetMapper();
|
||||||
vtkActor* EdgeShrinkDevice;
|
|
||||||
|
|
||||||
float GetShrinkFactor();
|
float GetShrinkFactor();
|
||||||
void SetShrinkFactor(float value );
|
void SetShrinkFactor(float value );
|
||||||
|
|
||||||
void GetChildActors(vtkActorCollection*);
|
bool IsShrunkable() { return myIsShrinkable;}
|
||||||
|
bool IsShrunk() { return myIsShrunk;}
|
||||||
|
void SetShrink();
|
||||||
|
void UnShrink();
|
||||||
|
|
||||||
void SetVisibility(bool visibility);
|
void SetPointsLabeled(bool theIsPointsLabeled);
|
||||||
|
bool GetPointsLabeled(){ return myIsPointsLabeled;}
|
||||||
|
|
||||||
|
void SetCellsLabeled(bool theIsCellsLabeled);
|
||||||
|
bool GetCellsLabeled(){ return myIsCellsLabeled;}
|
||||||
|
|
||||||
|
enum eControl{eNone, eLengthEdges, eFreeBorders, eMultiConnection,
|
||||||
|
eArea, eTaper, eAspectRatio, eMinimumAngle, eWarping, eSkew};
|
||||||
|
void SetControlMode(eControl theMode);
|
||||||
|
eControl GetControlMode(){ return myColorMode;}
|
||||||
|
|
||||||
|
enum e1DControl{e1DNone, e1DColored, e1DHighlited};
|
||||||
|
e1DControl Get1DControlMode(){ return my1DColorMode;}
|
||||||
|
|
||||||
|
vtkScalarBarActor* GetScalarBarActor(){ return myScalarBarActor;}
|
||||||
|
|
||||||
|
TVisualObjPtr GetObject() { return myVisualObj;}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
TVisualObjPtr myVisualObj;
|
||||||
|
|
||||||
|
SMESH::FilterManager_var myFilterMgr;
|
||||||
|
vtkScalarBarActor* myScalarBarActor;
|
||||||
|
vtkLookupTable* myLookupTable;
|
||||||
|
|
||||||
|
vtkProperty* mySurfaceProp;
|
||||||
|
vtkProperty* myBackSurfaceProp;
|
||||||
|
vtkProperty* myEdgeProp;
|
||||||
|
vtkProperty* myNodeProp;
|
||||||
|
|
||||||
|
SMESH_DeviceActor* myBaseActor;
|
||||||
|
SMESH_DeviceActor* myNodeActor;
|
||||||
|
SMESH_DeviceActor* myPickableActor;
|
||||||
|
|
||||||
|
vtkProperty* myHighlightProp;
|
||||||
|
vtkProperty* myPreselectProp;
|
||||||
|
SMESH_DeviceActor* myHighlitableActor;
|
||||||
|
|
||||||
|
eControl myColorMode;
|
||||||
|
SMESH_DeviceActor* my2DActor;
|
||||||
|
SMESH_DeviceActor* my3DActor;
|
||||||
|
SMESH_DeviceActor* myControlActor;
|
||||||
|
|
||||||
|
e1DControl my1DColorMode;
|
||||||
|
vtkProperty* my1DProp;
|
||||||
|
SMESH_DeviceActor* my1DActor;
|
||||||
|
vtkProperty* my1DExtProp;
|
||||||
|
SMESH_DeviceActor* my1DExtActor;
|
||||||
|
|
||||||
|
bool myIsPointsVisible;
|
||||||
|
|
||||||
|
bool myIsShrinkable;
|
||||||
|
bool myIsShrunk;
|
||||||
|
|
||||||
|
bool myIsPointsLabeled;
|
||||||
|
vtkUnstructuredGrid* myPointsNumDataSet;
|
||||||
|
vtkActor2D *myPointLabels;
|
||||||
|
vtkMaskPoints* myPtsMaskPoints;
|
||||||
|
vtkLabeledDataMapper* myPtsLabeledDataMapper;
|
||||||
|
vtkSelectVisiblePoints* myPtsSelectVisiblePoints;
|
||||||
|
|
||||||
|
bool myIsCellsLabeled;
|
||||||
|
vtkUnstructuredGrid* myCellsNumDataSet;
|
||||||
|
vtkActor2D *myCellsLabels;
|
||||||
|
vtkMaskPoints* myClsMaskPoints;
|
||||||
|
vtkCellCenters* myCellCenters;
|
||||||
|
vtkLabeledDataMapper* myClsLabeledDataMapper;
|
||||||
|
vtkSelectVisiblePoints* myClsSelectVisiblePoints;
|
||||||
|
|
||||||
SMESH_Actor();
|
SMESH_Actor();
|
||||||
~SMESH_Actor();
|
~SMESH_Actor();
|
||||||
SMESH_Actor(const SMESH_Actor&) {};
|
|
||||||
void operator=(const SMESH_Actor&) {};
|
|
||||||
|
|
||||||
vtkUnstructuredGridReader* myReader;
|
void Init(TVisualObjPtr theVisualObj,
|
||||||
|
SMESH::FilterManager_ptr theFilterMgr,
|
||||||
|
const char* theEntry,
|
||||||
|
const char* theName,
|
||||||
|
int theIsClear);
|
||||||
|
|
||||||
float myShrinkFactor;
|
void SetUnstructuredGrid(vtkUnstructuredGrid* theGrid);
|
||||||
|
void SetIsShrunkable(bool theShrunkable);
|
||||||
|
void UpdateHighlight();
|
||||||
|
|
||||||
RGBStruct edgeColor;
|
private:
|
||||||
RGBStruct edgeHighlightColor;
|
// hide the two parameter Render() method from the user and the compiler.
|
||||||
RGBStruct edgePreselectedColor;
|
virtual void Render(vtkRenderer *, vtkMapper *) {};
|
||||||
|
virtual void ShallowCopy(vtkProp *prop);
|
||||||
RGBStruct actorColor;
|
virtual void SetMapper(vtkMapper *);
|
||||||
RGBStruct actorHighlightColor;
|
static SMESH_Actor* New();
|
||||||
RGBStruct actorPreselectedColor;
|
|
||||||
|
|
||||||
RGBStruct actorNodeColor; // LPN
|
|
||||||
int actorNodeSize; // LPN
|
|
||||||
|
|
||||||
|
// Not implemented.
|
||||||
|
SMESH_Actor(const SMESH_Actor&);
|
||||||
|
void operator=(const SMESH_Actor&);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif //SMESH_ACTOR_H
|
#endif //SMESH_ACTOR_H
|
||||||
|
357
src/OBJECT/SMESH_DeviceActor.cxx
Normal file
@ -0,0 +1,357 @@
|
|||||||
|
// SMESH OBJECT : interactive object for SMESH visualization
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// File : SMESH_Actor.cxx
|
||||||
|
// Author : Nicolas REJNERI
|
||||||
|
// Module : SMESH
|
||||||
|
// $Header$
|
||||||
|
|
||||||
|
|
||||||
|
#include "SMESH_DeviceActor.h"
|
||||||
|
|
||||||
|
#include "SALOME_Transform.h"
|
||||||
|
#include "SALOME_TransformFilter.h"
|
||||||
|
#include "SALOME_PassThroughFilter.h"
|
||||||
|
#include "SALOME_ExtractUnstructuredGrid.h"
|
||||||
|
|
||||||
|
#include "utilities.h"
|
||||||
|
|
||||||
|
// VTK Includes
|
||||||
|
#include <vtkObjectFactory.h>
|
||||||
|
#include <vtkShrinkFilter.h>
|
||||||
|
#include <vtkShrinkPolyData.h>
|
||||||
|
|
||||||
|
#include <vtkProperty.h>
|
||||||
|
#include <vtkPolyData.h>
|
||||||
|
#include <vtkMergeFilter.h>
|
||||||
|
#include <vtkPolyDataMapper.h>
|
||||||
|
#include <vtkUnstructuredGrid.h>
|
||||||
|
|
||||||
|
#ifdef _DEBUG_
|
||||||
|
static int MYDEBUG = 0;
|
||||||
|
static int MYDEBUGWITHFILES = 0;
|
||||||
|
#else
|
||||||
|
static int MYDEBUG = 0;
|
||||||
|
static int MYDEBUGWITHFILES = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
|
||||||
|
vtkStandardNewMacro(SMESH_DeviceActor);
|
||||||
|
|
||||||
|
|
||||||
|
SMESH_DeviceActor::SMESH_DeviceActor(){
|
||||||
|
if(MYDEBUG) MESSAGE("SMESH_DeviceActor");
|
||||||
|
myIsShrunk = false;
|
||||||
|
myIsShrinkable = false;
|
||||||
|
myRepresentation = eSurface;
|
||||||
|
|
||||||
|
myProperty = vtkProperty::New();
|
||||||
|
myMapper = vtkPolyDataMapper::New();
|
||||||
|
|
||||||
|
vtkMapper::GetResolveCoincidentTopologyPolygonOffsetParameters(myPolygonOffsetFactor,
|
||||||
|
myPolygonOffsetUnits);
|
||||||
|
//myMapper->SetResolveCoincidentTopologyToShiftZBuffer();
|
||||||
|
//myMapper->SetResolveCoincidentTopologyZShift(0.02);
|
||||||
|
|
||||||
|
myMapper->UseLookupTableScalarRangeOn();
|
||||||
|
myMapper->SetColorModeToMapScalars();
|
||||||
|
|
||||||
|
myShrinkFilter = vtkShrinkFilter::New();
|
||||||
|
|
||||||
|
myExtractUnstructuredGrid = SALOME_ExtractUnstructuredGrid::New();
|
||||||
|
myExtractUnstructuredGrid->SetStoreMapping(true);
|
||||||
|
|
||||||
|
myMergeFilter = vtkMergeFilter::New();
|
||||||
|
|
||||||
|
myStoreMapping = false;
|
||||||
|
myGeomFilter = SALOME_GeometryFilter::New();
|
||||||
|
|
||||||
|
myTransformFilter = SALOME_TransformFilter::New();
|
||||||
|
|
||||||
|
for(int i = 0; i < 6; i++)
|
||||||
|
myPassFilter.push_back(SALOME_PassThroughFilter::New());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SMESH_DeviceActor::~SMESH_DeviceActor(){
|
||||||
|
if(MYDEBUG) MESSAGE("~SMESH_DeviceActor");
|
||||||
|
myProperty->Delete();
|
||||||
|
|
||||||
|
myMapper->RemoveAllInputs();
|
||||||
|
myMapper->Delete();
|
||||||
|
|
||||||
|
myShrinkFilter->UnRegisterAllOutputs();
|
||||||
|
myShrinkFilter->Delete();
|
||||||
|
|
||||||
|
myExtractUnstructuredGrid->UnRegisterAllOutputs();
|
||||||
|
myExtractUnstructuredGrid->Delete();
|
||||||
|
|
||||||
|
myMergeFilter->UnRegisterAllOutputs();
|
||||||
|
myMergeFilter->Delete();
|
||||||
|
|
||||||
|
myGeomFilter->UnRegisterAllOutputs();
|
||||||
|
myGeomFilter->Delete();
|
||||||
|
|
||||||
|
myTransformFilter->UnRegisterAllOutputs();
|
||||||
|
myTransformFilter->Delete();
|
||||||
|
|
||||||
|
for(int i = 0, iEnd = myPassFilter.size(); i < iEnd; i++){
|
||||||
|
myPassFilter[i]->UnRegisterAllOutputs();
|
||||||
|
myPassFilter[i]->Delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SMESH_DeviceActor::SetStoreMapping(int theStoreMapping){
|
||||||
|
myStoreMapping = theStoreMapping;
|
||||||
|
Modified();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SMESH_DeviceActor::SetUnstructuredGrid(vtkUnstructuredGrid* theGrid){
|
||||||
|
if(theGrid){
|
||||||
|
//myIsShrinkable = theGrid->GetNumberOfCells() > 10;
|
||||||
|
myIsShrinkable = true;
|
||||||
|
|
||||||
|
myExtractUnstructuredGrid->SetInput(theGrid);
|
||||||
|
myMergeFilter->SetGeometry(myExtractUnstructuredGrid->GetOutput());
|
||||||
|
|
||||||
|
theGrid = static_cast<vtkUnstructuredGrid*>(myMergeFilter->GetOutput());
|
||||||
|
|
||||||
|
int anId = 0;
|
||||||
|
myPassFilter.at( anId )->SetInput( theGrid );
|
||||||
|
myPassFilter.at( anId + 1)->SetInput( myPassFilter.at( anId )->GetOutput() );
|
||||||
|
|
||||||
|
anId++; // 1
|
||||||
|
myGeomFilter->SetStoreMapping( myStoreMapping );
|
||||||
|
myGeomFilter->SetInput( myPassFilter.at( anId )->GetOutput() );
|
||||||
|
|
||||||
|
anId++; // 2
|
||||||
|
myPassFilter.at( anId )->SetInput( myGeomFilter->GetOutput() );
|
||||||
|
myPassFilter.at( anId + 1 )->SetInput( myPassFilter.at( anId )->GetOutput() );
|
||||||
|
|
||||||
|
anId++; // 3
|
||||||
|
myTransformFilter->SetInput( myPassFilter.at( anId )->GetPolyDataOutput() );
|
||||||
|
|
||||||
|
anId++; // 4
|
||||||
|
myPassFilter.at( anId )->SetInput( myTransformFilter->GetOutput() );
|
||||||
|
myPassFilter.at( anId + 1 )->SetInput( myPassFilter.at( anId )->GetOutput() );
|
||||||
|
|
||||||
|
anId++; // 5
|
||||||
|
myMapper->SetInput( myPassFilter.at( anId )->GetPolyDataOutput() );
|
||||||
|
|
||||||
|
vtkLODActor::SetMapper( myMapper );
|
||||||
|
Modified();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SALOME_ExtractUnstructuredGrid* SMESH_DeviceActor::GetExtractUnstructuredGrid(){
|
||||||
|
return myExtractUnstructuredGrid;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
vtkUnstructuredGrid* SMESH_DeviceActor::GetUnstructuredGrid(){
|
||||||
|
myExtractUnstructuredGrid->Update();
|
||||||
|
return myExtractUnstructuredGrid->GetOutput();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
vtkMergeFilter* SMESH_DeviceActor::GetMergeFilter(){
|
||||||
|
return myMergeFilter;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
vtkPolyData* SMESH_DeviceActor::GetPolyDataInput(){
|
||||||
|
return myPassFilter.back()->GetPolyDataOutput();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
unsigned long int SMESH_DeviceActor::GetMTime(){
|
||||||
|
unsigned long mTime = this->Superclass::GetMTime();
|
||||||
|
mTime = max(mTime,myExtractUnstructuredGrid->GetMTime());
|
||||||
|
mTime = max(mTime,myMergeFilter->GetMTime());
|
||||||
|
mTime = max(mTime,myGeomFilter->GetMTime());
|
||||||
|
mTime = max(mTime,myTransformFilter->GetMTime());
|
||||||
|
return mTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SMESH_DeviceActor::SetTransform(SALOME_Transform* theTransform){
|
||||||
|
myTransformFilter->SetTransform(theTransform);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SMESH_DeviceActor::SetShrink()
|
||||||
|
{
|
||||||
|
if ( !myIsShrinkable ) return;
|
||||||
|
if ( vtkDataSet* aDataSet = myPassFilter.at( 0 )->GetOutput() )
|
||||||
|
{
|
||||||
|
myShrinkFilter->SetInput( aDataSet );
|
||||||
|
myPassFilter.at( 1 )->SetInput( myShrinkFilter->GetOutput() );
|
||||||
|
myIsShrunk = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SMESH_DeviceActor::UnShrink()
|
||||||
|
{
|
||||||
|
if ( !myIsShrunk ) return;
|
||||||
|
if ( vtkDataSet* aDataSet = myPassFilter.at( 0 )->GetOutput() )
|
||||||
|
{
|
||||||
|
myPassFilter.at( 1 )->SetInput( aDataSet );
|
||||||
|
myPassFilter.at( 1 )->Modified();
|
||||||
|
myIsShrunk = false;
|
||||||
|
Modified();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SMESH_DeviceActor::SetRepresentation(EReperesent theMode){
|
||||||
|
switch(theMode){
|
||||||
|
case ePoint:
|
||||||
|
myGeomFilter->SetInside(true);
|
||||||
|
GetProperty()->SetRepresentation(0);
|
||||||
|
break;
|
||||||
|
case eInsideframe:
|
||||||
|
myGeomFilter->SetInside(true);
|
||||||
|
GetProperty()->SetRepresentation(1);
|
||||||
|
break;
|
||||||
|
default :
|
||||||
|
GetProperty()->SetRepresentation(theMode);
|
||||||
|
myGeomFilter->SetInside(false);
|
||||||
|
}
|
||||||
|
myRepresentation = theMode;
|
||||||
|
myMapper->Modified();
|
||||||
|
Modified();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SMESH_DeviceActor::SetVisibility(int theMode){
|
||||||
|
if(!myExtractUnstructuredGrid->GetInput() || GetUnstructuredGrid()->GetNumberOfCells()){
|
||||||
|
vtkLODActor::SetVisibility(theMode);
|
||||||
|
}else{
|
||||||
|
vtkLODActor::SetVisibility(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int SMESH_DeviceActor::GetVisibility(){
|
||||||
|
if(!GetUnstructuredGrid()->GetNumberOfCells()){
|
||||||
|
vtkLODActor::SetVisibility(false);
|
||||||
|
}
|
||||||
|
return vtkLODActor::GetVisibility();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int SMESH_DeviceActor::GetObjId(int theVtkID){
|
||||||
|
if (GetRepresentation() == ePoint){
|
||||||
|
return GetNodeObjId(theVtkID);
|
||||||
|
}else{
|
||||||
|
return GetElemObjId(theVtkID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SMESH_DeviceActor::TVectorId SMESH_DeviceActor::GetVtkId(int theObjID){
|
||||||
|
if (GetRepresentation() == ePoint){
|
||||||
|
return GetNodeVtkId(theObjID);
|
||||||
|
}else{
|
||||||
|
return GetElemVtkId(theObjID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int SMESH_DeviceActor::GetNodeObjId(int theVtkID){
|
||||||
|
vtkIdType aRetID = myVisualObj->GetNodeObjId(theVtkID);
|
||||||
|
if(MYDEBUG) MESSAGE("GetNodeObjId - theVtkID = "<<theVtkID<<"; aRetID = "<<aRetID);
|
||||||
|
return aRetID;
|
||||||
|
}
|
||||||
|
|
||||||
|
SMESH_DeviceActor::TVectorId SMESH_DeviceActor::GetNodeVtkId(int theObjID){
|
||||||
|
SMESH_DeviceActor::TVectorId aVecId;
|
||||||
|
vtkIdType anID = myVisualObj->GetNodeVTKId(theObjID);
|
||||||
|
if(anID < 0)
|
||||||
|
return aVecId;
|
||||||
|
aVecId.push_back(anID);
|
||||||
|
return aVecId;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int SMESH_DeviceActor::GetElemObjId(int theVtkID){
|
||||||
|
vtkIdType aGridID = myGeomFilter->GetObjId(theVtkID);
|
||||||
|
if(aGridID < 0)
|
||||||
|
return -1;
|
||||||
|
vtkIdType anExtractID = myExtractUnstructuredGrid->GetOutId(aGridID);
|
||||||
|
if(anExtractID < 0)
|
||||||
|
return -1;
|
||||||
|
vtkIdType aRetID = myVisualObj->GetElemObjId(anExtractID);
|
||||||
|
if(MYDEBUG)
|
||||||
|
MESSAGE("GetElemObjId - theVtkID = "<<theVtkID<<"; anExtractID = "<<anExtractID<<"; aGridID = "<<aGridID<<"; aRetID = "<<aRetID);
|
||||||
|
return aRetID;
|
||||||
|
}
|
||||||
|
|
||||||
|
SMESH_DeviceActor::TVectorId SMESH_DeviceActor::GetElemVtkId(int theObjID){
|
||||||
|
TVectorId aVecId;
|
||||||
|
vtkIdType aGridID = myVisualObj->GetElemVTKId(theObjID);
|
||||||
|
if(aGridID < 0)
|
||||||
|
return aVecId;
|
||||||
|
aVecId = myGeomFilter->GetVtkId(aGridID);
|
||||||
|
if(MYDEBUG)
|
||||||
|
MESSAGE("GetElemVtkId - theObjID = "<<theObjID<<"; aGridID = "<<aGridID<<"; aGridID = "<<aGridID<<"; aVecId[0] = "<<aVecId[0]);
|
||||||
|
return aVecId;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
float SMESH_DeviceActor::GetShrinkFactor(){
|
||||||
|
return myShrinkFilter->GetShrinkFactor();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SMESH_DeviceActor::SetShrinkFactor(float theValue){
|
||||||
|
theValue = theValue > 0.1? theValue: 0.8;
|
||||||
|
myShrinkFilter->SetShrinkFactor(theValue);
|
||||||
|
Modified();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SMESH_DeviceActor::Render(vtkRenderer *ren, vtkMapper* m){
|
||||||
|
int aResolveCoincidentTopology = vtkMapper::GetResolveCoincidentTopology();
|
||||||
|
float aFactor, aUnit;
|
||||||
|
vtkMapper::GetResolveCoincidentTopologyPolygonOffsetParameters(aFactor,aUnit);
|
||||||
|
|
||||||
|
vtkMapper::SetResolveCoincidentTopologyToPolygonOffset();
|
||||||
|
vtkMapper::SetResolveCoincidentTopologyPolygonOffsetParameters(myPolygonOffsetFactor,
|
||||||
|
myPolygonOffsetUnits);
|
||||||
|
vtkLODActor::Render(ren,m);
|
||||||
|
|
||||||
|
vtkMapper::SetResolveCoincidentTopologyPolygonOffsetParameters(aFactor,aUnit);
|
||||||
|
vtkMapper::SetResolveCoincidentTopology(aResolveCoincidentTopology);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SMESH_DeviceActor::SetPolygonOffsetParameters(float factor, float units){
|
||||||
|
myPolygonOffsetFactor = factor;
|
||||||
|
myPolygonOffsetUnits = units;
|
||||||
|
}
|
||||||
|
|
133
src/OBJECT/SMESH_DeviceActor.h
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
// SMESH OBJECT : interactive object for SMESH visualization
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// File : SMESH_Actor.h
|
||||||
|
// Author : Nicolas REJNERI
|
||||||
|
// Module : SMESH
|
||||||
|
// $Header$
|
||||||
|
|
||||||
|
#ifndef SMESH_DEVICE_ACTOR_H
|
||||||
|
#define SMESH_DEVICE_ACTOR_H
|
||||||
|
|
||||||
|
#include "SALOME_GeometryFilter.h"
|
||||||
|
#include "SMESH_Object.h"
|
||||||
|
|
||||||
|
#include <vtkLODActor.h>
|
||||||
|
|
||||||
|
class vtkProperty;
|
||||||
|
class vtkMergeFilter;
|
||||||
|
class vtkShrinkFilter;
|
||||||
|
class vtkPolyDataMapper;
|
||||||
|
class vtkUnstructuredGrid;
|
||||||
|
|
||||||
|
class SALOME_Transform;
|
||||||
|
class SALOME_TransformFilter;
|
||||||
|
class SALOME_PassThroughFilter;
|
||||||
|
class SALOME_ExtractUnstructuredGrid;
|
||||||
|
|
||||||
|
|
||||||
|
class SMESH_DeviceActor: public vtkLODActor{
|
||||||
|
friend class SMESH_Actor;
|
||||||
|
|
||||||
|
public:
|
||||||
|
vtkTypeMacro(SMESH_DeviceActor,vtkLODActor);
|
||||||
|
static SMESH_DeviceActor* New();
|
||||||
|
|
||||||
|
void SetStoreMapping(int theStoreMapping);
|
||||||
|
int GetStoreMapping(){ return myStoreMapping;}
|
||||||
|
|
||||||
|
typedef SALOME_GeometryFilter::TVectorId TVectorId;
|
||||||
|
int GetObjId(int theVtkID);
|
||||||
|
TVectorId GetVtkId(int theObjID);
|
||||||
|
|
||||||
|
int GetNodeObjId(int theVtkID);
|
||||||
|
TVectorId GetNodeVtkId(int theObjID);
|
||||||
|
|
||||||
|
int GetElemObjId(int theVtkID);
|
||||||
|
TVectorId GetElemVtkId(int theObjID);
|
||||||
|
|
||||||
|
vtkPolyData* GetPolyDataInput();
|
||||||
|
|
||||||
|
virtual void SetTransform(SALOME_Transform* theTransform);
|
||||||
|
virtual unsigned long int GetMTime();
|
||||||
|
|
||||||
|
float GetShrinkFactor();
|
||||||
|
void SetShrinkFactor(float value);
|
||||||
|
|
||||||
|
bool IsShrunkable() { return myIsShrinkable;}
|
||||||
|
bool IsShrunk() { return myIsShrunk;}
|
||||||
|
void SetShrink();
|
||||||
|
void UnShrink();
|
||||||
|
|
||||||
|
enum EReperesent { ePoint, eWireframe, eSurface, eInsideframe};
|
||||||
|
EReperesent GetRepresentation(){ return myRepresentation;}
|
||||||
|
void SetRepresentation(EReperesent theMode);
|
||||||
|
|
||||||
|
virtual void SetVisibility(int theMode);
|
||||||
|
virtual int GetVisibility();
|
||||||
|
|
||||||
|
SALOME_ExtractUnstructuredGrid* GetExtractUnstructuredGrid();
|
||||||
|
vtkUnstructuredGrid* GetUnstructuredGrid();
|
||||||
|
vtkMergeFilter* GetMergeFilter();
|
||||||
|
|
||||||
|
virtual void Render(vtkRenderer *, vtkMapper *);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void SetUnstructuredGrid(vtkUnstructuredGrid* theGrid);
|
||||||
|
|
||||||
|
vtkPolyDataMapper *myMapper;
|
||||||
|
TVisualObjPtr myVisualObj;
|
||||||
|
|
||||||
|
vtkProperty *myProperty;
|
||||||
|
EReperesent myRepresentation;
|
||||||
|
|
||||||
|
vtkMergeFilter* myMergeFilter;
|
||||||
|
SALOME_ExtractUnstructuredGrid* myExtractUnstructuredGrid;
|
||||||
|
|
||||||
|
bool myStoreMapping;
|
||||||
|
SALOME_GeometryFilter *myGeomFilter;
|
||||||
|
SALOME_TransformFilter *myTransformFilter;
|
||||||
|
std::vector<SALOME_PassThroughFilter*> myPassFilter;
|
||||||
|
|
||||||
|
vtkShrinkFilter* myShrinkFilter;
|
||||||
|
bool myIsShrinkable;
|
||||||
|
bool myIsShrunk;
|
||||||
|
|
||||||
|
float myPolygonOffsetFactor;
|
||||||
|
float myPolygonOffsetUnits;
|
||||||
|
|
||||||
|
void SetPolygonOffsetParameters(float factor, float units);
|
||||||
|
void GetPolygonOffsetParameters(float& factor, float& units){
|
||||||
|
factor = myPolygonOffsetFactor;
|
||||||
|
units = myPolygonOffsetUnits;
|
||||||
|
}
|
||||||
|
|
||||||
|
SMESH_DeviceActor();
|
||||||
|
~SMESH_DeviceActor();
|
||||||
|
SMESH_DeviceActor(const SMESH_DeviceActor&) {};
|
||||||
|
void operator=(const SMESH_DeviceActor&) {};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif //SMESH_ACTOR_H
|
1037
src/OBJECT/SMESH_Object.cxx
Normal file
207
src/OBJECT/SMESH_Object.h
Normal file
@ -0,0 +1,207 @@
|
|||||||
|
// SMESH OBJECT : interactive object for SMESH visualization
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library 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
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// File : SMESH_Object.h
|
||||||
|
// Author : Nicolas REJNERI
|
||||||
|
// Module : SMESH
|
||||||
|
// $Header$
|
||||||
|
|
||||||
|
#ifndef SMESH_OBJECT_H
|
||||||
|
#define SMESH_OBJECT_H
|
||||||
|
|
||||||
|
// IDL Headers
|
||||||
|
#include <SALOMEconfig.h>
|
||||||
|
#include CORBA_SERVER_HEADER(SMESH_Mesh)
|
||||||
|
#include CORBA_SERVER_HEADER(SMESH_Group)
|
||||||
|
#include CORBA_SERVER_HEADER(SMESH_Filter)
|
||||||
|
|
||||||
|
#include <map>
|
||||||
|
#include <list>
|
||||||
|
#include <boost/shared_ptr.hpp>
|
||||||
|
#include <vtkSystemIncludes.h>
|
||||||
|
|
||||||
|
class vtkUnstructuredGrid;
|
||||||
|
class vtkPoints;
|
||||||
|
class SALOME_ExtractUnstructuredGrid;
|
||||||
|
|
||||||
|
class SMESH_Actor;
|
||||||
|
class SMDS_Mesh;
|
||||||
|
class SMDS_MeshNode;
|
||||||
|
class SMDS_MeshElement;
|
||||||
|
|
||||||
|
class SMESH_VisualObj;
|
||||||
|
typedef boost::shared_ptr<SMESH_VisualObj> TVisualObjPtr;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : SMESH_VisualObj
|
||||||
|
Description : Base class for all mesh objects to be visuilised
|
||||||
|
*/
|
||||||
|
|
||||||
|
class SMESH_VisualObj
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
|
||||||
|
typedef std::list<const SMDS_MeshElement*> TEntityList;
|
||||||
|
typedef std::map<vtkIdType,vtkIdType> TMapOfIds;
|
||||||
|
|
||||||
|
public:
|
||||||
|
SMESH_VisualObj();
|
||||||
|
virtual ~SMESH_VisualObj();
|
||||||
|
|
||||||
|
virtual void Update( int theIsClear = true ) = 0;
|
||||||
|
virtual void UpdateFunctor( SMESH::Functor_ptr theFunctor ) = 0;
|
||||||
|
virtual int GetElemDimension( const int theObjId ) = 0;
|
||||||
|
|
||||||
|
virtual int GetNbEntities( const SMESH::ElementType) const = 0;
|
||||||
|
virtual int GetEntities( const SMESH::ElementType, TEntityList& ) const = 0;
|
||||||
|
virtual bool IsNodePrs() const = 0;
|
||||||
|
|
||||||
|
vtkUnstructuredGrid* GetUnstructuredGrid() { return myGrid; }
|
||||||
|
|
||||||
|
vtkIdType GetNodeObjId( int theVTKID );
|
||||||
|
vtkIdType GetNodeVTKId( int theObjID );
|
||||||
|
vtkIdType GetElemObjId( int theVTKID );
|
||||||
|
vtkIdType GetElemVTKId( int theObjID );
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
void createPoints( vtkPoints* );
|
||||||
|
void buildPrs();
|
||||||
|
void buildNodePrs();
|
||||||
|
void buildElemPrs();
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
TMapOfIds mySMDS2VTKNodes;
|
||||||
|
TMapOfIds myVTK2SMDSNodes;
|
||||||
|
TMapOfIds mySMDS2VTKElems;
|
||||||
|
TMapOfIds myVTK2SMDSElems;
|
||||||
|
|
||||||
|
vtkUnstructuredGrid* myGrid;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : SMESH_MeshObj
|
||||||
|
Description : Class for visualisation of mesh
|
||||||
|
*/
|
||||||
|
|
||||||
|
class SMESH_MeshObj: public SMESH_VisualObj
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
SMESH_MeshObj( SMESH::SMESH_Mesh_ptr );
|
||||||
|
virtual ~SMESH_MeshObj();
|
||||||
|
|
||||||
|
virtual void Update( int theIsClear = true );
|
||||||
|
|
||||||
|
virtual int GetNbEntities( const SMESH::ElementType) const;
|
||||||
|
virtual int GetEntities( const SMESH::ElementType, TEntityList& ) const;
|
||||||
|
virtual bool IsNodePrs() const;
|
||||||
|
|
||||||
|
virtual int GetElemDimension( const int theObjId );
|
||||||
|
|
||||||
|
virtual void UpdateFunctor( SMESH::Functor_ptr f );
|
||||||
|
|
||||||
|
SMESH::SMESH_Mesh_ptr GetMeshServer() { return myMeshServer.in(); }
|
||||||
|
SMDS_Mesh* GetMesh() { return myMesh; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
SMESH::SMESH_Mesh_var myMeshServer;
|
||||||
|
SMDS_Mesh* myMesh;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : SMESH_SubMeshObj
|
||||||
|
Description : Base class for visualisation of submeshes and groups
|
||||||
|
*/
|
||||||
|
|
||||||
|
class SMESH_SubMeshObj: public SMESH_VisualObj
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
SMESH_SubMeshObj(SMESH_MeshObj* theMeshObj);
|
||||||
|
virtual ~SMESH_SubMeshObj();
|
||||||
|
|
||||||
|
virtual void Update( int theIsClear = true );
|
||||||
|
|
||||||
|
virtual void UpdateFunctor( SMESH::Functor_ptr );
|
||||||
|
virtual int GetElemDimension( const int theObjId );
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
SMESH_MeshObj* myMeshObj;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : SMESH_GroupObj
|
||||||
|
Description : Class for visualisation of groups
|
||||||
|
*/
|
||||||
|
|
||||||
|
class SMESH_GroupObj: public SMESH_SubMeshObj
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
SMESH_GroupObj( SMESH::SMESH_Group_ptr, SMESH_MeshObj* );
|
||||||
|
virtual ~SMESH_GroupObj();
|
||||||
|
|
||||||
|
virtual int GetNbEntities( const SMESH::ElementType) const;
|
||||||
|
virtual int GetEntities( const SMESH::ElementType, TEntityList& ) const;
|
||||||
|
virtual bool IsNodePrs() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
SMESH::SMESH_Group_var myGroupServer;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : SMESH_subMeshObj
|
||||||
|
Description : Class for visualisation of submeshes
|
||||||
|
*/
|
||||||
|
|
||||||
|
class SMESH_subMeshObj : public SMESH_SubMeshObj
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
SMESH_subMeshObj( SMESH::SMESH_subMesh_ptr,
|
||||||
|
SMESH_MeshObj* );
|
||||||
|
virtual ~SMESH_subMeshObj();
|
||||||
|
|
||||||
|
virtual int GetNbEntities( const SMESH::ElementType) const;
|
||||||
|
virtual int GetEntities( const SMESH::ElementType, TEntityList& ) const;
|
||||||
|
virtual bool IsNodePrs() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
SMESH::SMESH_subMesh_var mySubMeshServer;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
extern void WriteUnstructuredGrid(vtkUnstructuredGrid* theGrid, const char* theFileName);
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|