--- /dev/null
+This is the version 3.2.0 of BLSURFPLUGIN
+Compatible with :
+ - KERNEL 3.2.0
+ - GUI 3.2.0
+ - SMESH 3.2.0
--- /dev/null
+# Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS, L3S, LJLL, MENSI
+#
+# 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/
+#
+# -* Makefile *-
+#
+# Author : Patrick GOLDBRONN (CEA)
+# Date : 28/06/2001
+#
+
+# source path
+top_srcdir=@top_srcdir@
+top_builddir=.
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/bin:@top_srcdir@/resources:./bin:@top_srcdir@/idl
+
+
+@COMMENCE@
+
+SUBDIRS = idl src adm_local
+
+RESOURCES_FILES = \
+ BLSURFPlugin.xml \
+ mesh_algo_BLSURF.png \
+ mesh_hypo_BLSURF.png \
+ mesh_tree_algo_BLSURF.png \
+ mesh_tree_hypo_BLSURF.png \
+ BLSURF.png
+
+BIN_SCRIPT = VERSION
+
+# copy header files in common directory ------------
+
+ifeq ($(HAVE_SSTREAM),yes)
+ include_list=include/salome/SALOMEconfig.h
+else
+ include_list=include/salome/SALOMEconfig.h include/salome/sstream
+endif
+
+inc: idl $(include_list)
+
+include/salome/SALOMEconfig.h: salome_adm/unix/SALOMEconfig.ref
+ -$(RM) $@
+ $(LN_S) ../../$< $@
+
+# test if SALOMEconfig.h has changed (contents)
+salome_adm/unix/SALOMEconfig.ref: salome_adm/unix/SALOMEconfig.h
+ @if ! [ -a $@ ]; then \
+ cp -p -f $< $@; \
+ fi; \
+ if ! cmp $< $@; then \
+ cp -p -f $< $@; \
+ fi; \
+
+include/salome/sstream: salome_adm/unix/sstream
+ -$(RM) $@
+ $(LN_S) ../../$< $@
+
+# install script in $(bindir) :
+install-bin: $(BIN_SCRIPT)
+ $(INSTALL) -d $(bindir)
+ if test $(BIN_SCRIPT)X != X; then \
+ $(INSTALL_PROGRAM) $^ $(bindir); \
+ fi
+
+# CLEAN --------------------
+
+distclean: distclean-other
+
+distclean-other:
+ -$(RM) salome_adm/unix/*~ salome_adm/unix/*% salome_adm/unix/*.bak salome_adm/unix/*.new salome_adm/unix/*.old
+ -$(RM) salome_adm/unix/make_*
+ -$(RM) salome_adm/unix/depend salome_adm/unix/SALOMEconfig.h
+ -$(RM) config.cache config.log config.status
+
+@MODULE@
+
+install: install-bin
--- /dev/null
+1) Hypothèses
+ ----------
+
+a) Une version de SALOME est installée dans le répertoire : <salome>
+
+b) Le produit BLSURF est installé dans le répertoire <salome>/BLSurf
+
+c) Le produit "decimesh" doit être dans la variable d'environnement PATH
+
+2) tgz
+ ---
+
+cd <salome>
+tar zxf BLSURFPLUGIN_SRC.tgz
+
+3) Construire le plugin BLSURF
+ ---------------------------
+
+bash
+cd <salome>
+source env_build.sh
+source BLSURFPLUGIN_SRC_3.2.4/env_blsurf.sh
+
+cd BLSURFPLUGIN_SRC_3.2.4
+./build_configure
+
+cd ..
+mkdir BLSURFPLUGIN_BUILD
+mkdir BLSURFPLUGIN_INSTALL
+cd BLSURFPLUGIN_BUILD
+../BLSURFPLUGIN_SRC_3.2.4/configure --prefix=<salome>/BLSURFPLUGIN_INSTALL
+
+# Dans les traces chercher la rubrique "Summary",
+# et vérifier que toutes les réponses sont à yes.
+# S'il y a au moins 1 "no", il faut résoudre cela avant de poursuivre.
+
+make
+make install
+
+exit
+
+4) Lancer SALOME avec BLSURF
+ -------------------------
+
+bash
+cd <salome>
+
+cp BLSURFPLUGIN_SRC_3.2.4/SalomeApprc.3.2.4 ~/.SalomeApprc.<version de salome>
+# Cette copie est à faire une fois
+
+source env_products.sh
+source BLSURFPLUGIN_SRC_3.2.4/env_blsurf.sh
+
+runSalome
+
+5) Session interactive
+ -------------------
+
+a) Aller dans le module de géométrie et construire une figure simple
+
+b) Aller dans le module de maillage
+
+c) Aller dans le menu de création d'un maillage
+
+d) Choisir la figure simple comme géométrie à mailler
+
+e) Aller dans l'onglet 2D
+
+f) Choisir BLSURF
+
+g) Cliquer dans le bouton parametre, une boite de dialogue apparait, cette boite n'est pas terminée.
+ Seul la case à cocher "optimize" est signifiante:
+ - décochée: uniquement BLSURF
+ - cochée : BLSURF + decimesh
+
+h) Cliquer OK
+
+i) Aller dans le menu de maillage et lancer l'item "Compute"
+
+j) Résultat: un maillage créer par BLSURF et visualiser dans SALOME
+
+k) Pour paramétrer BLSURF: il faut pour l'instant créer un fichier blsurf.env dans le répertoire de lancement de SALOME
+
+l) fin
--- /dev/null
+<!DOCTYPE document>
+<document>
+ <section name="ExternalBrowser" >
+ <parameter value="" name="parameters" />
+ <parameter value="/usr/bin/mozilla" name="application" />
+ </section>
+ <section name="FileDlg" >
+ <parameter value="/home/kloss/CEA/IOLS/Beton;/export/home/kloss/Salome_3.2.4/SAMPLES_SRC_3.2.4" name="QuickDirList" />
+ </section>
+ <section name="Geometry" >
+ <parameter value="1" name="display_mode" />
+ </section>
+ <section name="OCCViewer" >
+ <parameter value="35, 136, 145" name="background" />
+ <parameter value="100" name="trihedron_size" />
+ <parameter value="0" name="iso_number_u" />
+ <parameter value="0" name="iso_number_v" />
+ </section>
+ <section name="ObjectBrowser" >
+ <parameter value="false" name="auto_size" />
+ <parameter value="true" name="auto_size_first" />
+ <parameter value="true" name="visibility_column_0" />
+ <parameter value="false" name="visibility_column_1" />
+ <parameter value="false" name="visibility_column_2" />
+ <parameter value="false" name="visibility_column_3" />
+ </section>
+ <section name="Plot2d" >
+ <parameter value="255, 255, 255" name="Background" />
+ <parameter value="1" name="CurveType" />
+ <parameter value="0" name="HorScaleMode" />
+ <parameter value="1" name="LegendPos" />
+ <parameter value="9" name="MarkerSize" />
+ <parameter value="true" name="ShowLegend" />
+ <parameter value="0" name="VerScaleMode" />
+ </section>
+ <section name="PyConsole" >
+ <parameter value="Helvetic;Helvetica;Helvetica[Adobe];Times;Times[Adobe];Sans Serif;Serif;Monospace;Lucida" name="additional_families" />
+ <parameter value="Helvetica,12" name="font" />
+ </section>
+ <section name="SMESH" >
+ <parameter value="NETGENPlugin,GHS3DPlugin,HexoticPLUGIN,BLSURFPlugin" name="plugins" />
+ </section>
+ <section name="SUPERVGraph" >
+ <parameter value="144, 208, 211" name="Background" />
+ <parameter value="63, 213, 255" name="Title" />
+ <parameter value="255, 249, 147" name="NodeBody" />
+ </section>
+ <section name="Study" >
+ <parameter value="false" name="multi_file" />
+ <parameter value="false" name="ascii_file" />
+ <parameter value="false" name="store_positions" />
+ <parameter value="false" name="store_visual_state" />
+ </section>
+ <section name="VISU" >
+ <parameter value="2" name="scalar_bar_position_num" />
+ </section>
+ <section name="VTKViewer" >
+ <parameter value="0, 0, 0" name="background" />
+ <parameter value="105" name="trihedron_size" />
+ <parameter value="true" name="relative_size" />
+ </section>
+ <section name="desktop" >
+ <parameter value="0" name="pos_x" />
+ <parameter value="0" name="pos_y" />
+ <parameter value="1270" name="width" />
+ <parameter value="944" name="height" />
+ <parameter value="2" name="state" />
+ </section>
+ <section name="language" >
+ <parameter value="en" name="language" />
+ <parameter value="%P_msg_%L.qm|%PM_msg_%L.qm|%P_icons.qm|%P_images.qm|%PM_images.qm" name="translators" />
+ </section>
+ <section name="launch" >
+ <parameter value="yes" name="gui" />
+ <parameter value="yes" name="splash" />
+ <parameter value="no" name="file" />
+ <parameter value="no" name="key" />
+ <parameter value="no" name="interp" />
+ <parameter value="no" name="logger" />
+ <parameter value="no" name="xterm" />
+ <parameter value="no" name="portkill" />
+ <parameter value="no" name="killall" />
+ <parameter value="no" name="noexcepthandler" />
+ <parameter value="GEOM,SMESH,VISU,SUPERV,MED,COMPONENT,PYCALCULATOR" name="modules" />
+ <parameter value="" name="pyModules" />
+ <parameter value="SalomeAppEngine,study,cppContainer,registry,moduleCatalog" name="embedded" />
+ <parameter value="pyContainer,supervContainer" name="standalone" />
+ </section>
+ <section name="resources" >
+ <parameter value="${GUI_ROOT_DIR}/share/salome/resources/gui" name="SUIT" />
+ <parameter value="${GUI_ROOT_DIR}/share/salome/resources/gui" name="STD" />
+ <parameter value="${GUI_ROOT_DIR}/share/salome/resources/gui" name="Plot2d" />
+ <parameter value="${GUI_ROOT_DIR}/share/salome/resources/gui" name="SPlot2d" />
+ <parameter value="${GUI_ROOT_DIR}/share/salome/resources/gui" name="GLViewer" />
+ <parameter value="${GUI_ROOT_DIR}/share/salome/resources/gui" name="OCCViewer" />
+ <parameter value="${GUI_ROOT_DIR}/share/salome/resources/gui" name="VTKViewer" />
+ <parameter value="${GUI_ROOT_DIR}/share/salome/resources/gui" name="SVTK" />
+ <parameter value="${GUI_ROOT_DIR}/share/salome/resources/gui" name="LightApp" />
+ <parameter value="${GUI_ROOT_DIR}/share/salome/resources/gui" name="SalomeApp" />
+ <parameter value="${GUI_ROOT_DIR}/share/salome/resources/gui" name="OB" />
+ <parameter value="${GUI_ROOT_DIR}/share/salome/resources/gui" name="CAM" />
+ <parameter value="${GUI_ROOT_DIR}/share/salome/resources/gui" name="SUPERVGraph" />
+ <parameter value="${GUI_ROOT_DIR}/share/salome/resources/gui" name="ToolsGUI" />
+ <parameter value="${NETGENPLUGIN_ROOT_DIR}/share/salome/resources/netgenplugin" name="NETGENPlugin" />
+ <parameter value="${GHS3DPLUGIN_ROOT_DIR}/share/salome/resources/ghs3dplugin" name="GHS3DPlugin" />
+ <parameter value="${HexoticPLUGIN_ROOT_DIR}/share/salome/resources" name="HexoticPLUGIN" />
+ <parameter value="${BLSURFPLUGIN_ROOT_DIR}/share/salome/resources" name="BLSURFPlugin" />
+ </section>
+ <section name="splash" >
+ <parameter value="${GUI_ROOT_DIR}/share/salome/resources/gui/icon_about.png" name="image" />
+ <parameter value="%V" name="info" />
+ <parameter value="#543AA9|#FFFFFF" name="text_colors" />
+ <parameter value="#0A4E5F|#B2EFED|1" name="progress_colors" />
+ </section>
+</document>
--- /dev/null
+# Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS, L3S, LJLL, MENSI
+#
+# 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/
+#
+# source path
+top_srcdir=@top_srcdir@
+top_builddir=..
+srcdir=@srcdir@
+VPATH=.:$(srcdir)/adm_local
+
+
+all: resources
+
+install:
+ cp -rf @top_srcdir@/adm_local @prefix@
+
+bin:
+
+resources :
+ cp -rf @top_srcdir@/adm_local $(top_builddir)
+
+inc:
+
+lib:
+
+depend:
+
+depend_idl:
+
+install-end:
+
+install-include:
+
+install-bin:
+
+uninstall:
+
+uninstall-idl:
+
+distclean:
+
+clean:
+
+distclean-other:
+
--- /dev/null
+AC_DEFUN([CHECK_BLSURF],[
+
+AC_REQUIRE([AC_PROG_CXX])dnl
+AC_REQUIRE([AC_PROG_CXXCPP])dnl
+
+AC_CHECKING(for BLSURF comercial product)
+
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+
+AC_ARG_WITH(,
+ [ --with-BLSURF=DIR root directory path of BLSUF installation],
+ BLSURF_HOME=$withval,BLSURF_HOME="")
+
+BLSURF_INCLUDES=""
+BLSURF_LIBS=""
+
+BLSURF_ok=no
+
+if test "x$BLSURF_HOME" == "x" ; then
+
+# no --with-BLSURF option used
+ if test "x$BLSURFHOME" != "x" ; then
+
+ # BLSURFHOME environment variable defined
+ BLSURF_HOME=$BLSURFHOME
+
+ fi
+#
+fi
+
+if test "x$BLSURF_HOME" != "x"; then
+
+ echo
+ echo -------------------------------------------------
+ echo You are about to choose to use somehow the
+ echo BLSURF commercial product to generate 2D mesh.
+ echo
+
+
+
+ BLSURF_INCLUDES="-I$BLSURF_HOME/include"
+ BLSURF_LIBS="-L$BLSURF_HOME/lib -lBLSURF"
+
+ CPPFLAGS_old="$CPPFLAGS"
+ CXXFLAGS_old="$CXXFLAGS"
+ LDFLAGS_old="$LDFLAGS"
+
+ CPPFLAGS="$BLSURF_INCLUDES $CPPFLAGS"
+ CXXFLAGS="$BLSURF_INCLUDES $CXXFLAGS"
+ LDFLAGS="-L. -$BLSURF_LIBS $LDFLAGS"
+
+ AC_MSG_CHECKING(for BLSURF header file)
+
+ AC_CHECK_HEADER(blshare.h,BLSURF_ok=yes,BLSURF_ok=no)
+ if test "x$BLSURF_ok" == "xyes"; then
+
+ AC_MSG_CHECKING(for BLSURF library)
+
+ AC_TRY_COMPILE(#include "blshare.h",
+ BLSURF_init();
+ ,BLSURF_ok=yes;
+ $CXX -shared -o linopt.o -c
+ ,BLSURF_ok=no)
+
+ fi
+
+ CPPFLAGS="$CPPFLAGS_old"
+ CXXFLAGS="$CXXFLAGS_old"
+ LDFLAGS="$LDFLAGS_old"
+
+ if test "x$BLSURF_ok" == xno ; then
+ AC_MSG_RESULT(no)
+ AC_MSG_WARN(BLSURF includes or libraries are not found or are not properly installed)
+ else
+ AC_MSG_RESULT(yes)
+ fi
+
+fi
+
+AC_SUBST(BLSURF_INCLUDES)
+AC_SUBST(BLSURF_LIBS)
+
+AC_LANG_RESTORE
+
+])dnl
--- /dev/null
+# common directories to put headerfiles
+inc_builddir=$(top_builddir)/include/salome
+
+@SET_MAKE@
+SHELL=/bin/sh
+
+# header missing
+
+HAVE_SSTREAM=@HAVE_SSTREAM@
+
+
+LIBS=@LIBS@
+LDFLAGS=@LDFLAGS@ -L$(top_builddir)/lib/salome -Xlinker -rpath-link -Xlinker $(top_builddir)/lib/salome
+# add libstdc++ to link c++ library with libtool !
+LDFLAGS+= -lstdc++
+
+CP=@CP@
+
+# CPP
+
+CPP=@CPP@
+CXXCPP=@CXXCPP@
+CPPFLAGS=@CPPFLAGS@ -I$(inc_builddir) -I$(srcdir) -I.
+
+# C
+
+CC = @CC@
+CFLAGS = @CFLAGS@
+C_DEPEND_FLAG = @C_DEPEND_FLAG@
+
+# C++
+
+CXX = @CXX@
+CXXFLAGS = @CXXFLAGS@
+CXX_DEPEND_FLAG = @CXX_DEPEND_FLAG@
+
+# BOOST Library
+
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+
+# JAVA
+
+JAVA_INCLUDES = @JAVA_INCLUDES@
+JAVA_LIBS = @JAVA_LIBS@
+JAVA_LDPATH = @JAVA_LDPATH@
+
+# PYTHON
+
+PYTHON = @PYTHON@
+PYTHONHOME = @PYTHONHOME@
+PYTHON_INCLUDES = @PYTHON_INCLUDES@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_VERSION = @PYTHON_VERSION@
+PYTHON_SITE = @PYTHON_SITE@
+PYTHON_SITE_INSTALL = @PYTHON_SITE_INSTALL@
+
+# QT
+
+QT_ROOT = @QT_ROOT@
+QT_INCLUDES = @QT_INCLUDES@
+QT_MT_INCLUDES = @QT_INCLUDES@ -DQT_THREAD_SUPPORT
+QT_LIBS = @QT_LIBS@
+QT_MT_LIBS = @QT_MT_LIBS@
+
+MOC = @MOC@
+UIC = @UIC@
+MSG2QM = @MSG2QM@
+
+#QWT
+
+QWT_INCLUDES=@QWT_INCLUDES@
+QWT_LIBS=@QWT_LIBS@
+
+# SIP
+SIP = @SIP@
+SIP_INCLUDES = @SIP_INCLUDES@
+SIP_LIBS = @SIP_LIBS@
+
+# PYQT
+PYQT_SIPS = @PYQT_SIPS@
+PYQT_LIBS = @PYQT_LIBS@
+
+# openGL
+OGL_INCLUDES=@OGL_INCLUDES@
+OGL_LIBS=@OGL_LIBS@
+
+# VTK
+VTK_INCLUDES=@VTK_INCLUDES@
+VTK_LIBS=@VTK_LIBS@
+
+# HDF5
+
+HDF5_INCLUDES=@HDF5_INCLUDES@
+HDF5_LIBS=@HDF5_LIBS@
+HDF5_MT_LIBS=@HDF5_MT_LIBS@
+
+# OpenCasCade
+
+OCC_INCLUDES=@CAS_CPPFLAGS@
+OCC_CXXFLAGS=@CAS_CXXFLAGS@
+
+OCC_KERNEL_LIBS=@CAS_KERNEL@
+OCC_OCAF_LIBS=@CAS_OCAF@
+OCC_VIEWER_LIBS=@CAS_VIEWER@
+OCC_MODELER_LIBS=@CAS_MODELER@
+OCC_DATAEXCHANGE_LIBS=@CAS_DATAEXCHANGE@
+OCC_LIBS=@CAS_LDFLAGS@
+OCC_LDPATH=@CAS_LDPATH@
+
+# MPICH
+
+MPICH_INCLUDES=@MPICH_INCLUDES@
+MPICH_LIBS=@MPICH_LIBS@
+
+# Swig C++ Python
+
+SWIG = @SWIG@
+SWIG_FLAGS = @SWIG_FLAGS@ -I$(inc_builddir) -I$(srcdir) -I.
+
+# OMNIORB
+
+OMNIORB_ROOT = @OMNIORB_ROOT@
+OMNIORB_INCLUDES = @OMNIORB_INCLUDES@
+OMNIORB_LIBS = @OMNIORB_LIBS@
+OMNIORB_CXXFLAGS = @OMNIORB_CXXFLAGS@
+
+OMNIORB_IDL = @OMNIORB_IDL@
+OMNIORB_IDLCXXFLAGS = @OMNIORB_IDLCXXFLAGS@
+OMNIORB_IDLPYFLAGS = @OMNIORB_IDLPYFLAGS@ -I$(srcdir) -I$(KERNEL_ROOT_DIR)/idl/salome \
+ -I$(GEOM_ROOT_DIR)/idl/salome -I$(MED_ROOT_DIR)/idl/salome\
+ -I$(SMESH_ROOT_DIR)/idl/salome
+
+OMNIORB_IDL_CLN_H = @OMNIORB_IDL_CLN_H@
+OMNIORB_IDL_CLN_CXX = @OMNIORB_IDL_CLN_CXX@
+OMNIORB_IDL_CLN_OBJ = @OMNIORB_IDL_CLN_OBJ@
+
+OMNIORB_IDL_SRV_H = @OMNIORB_IDL_SRV_H@
+OMNIORB_IDL_SRV_CXX = @OMNIORB_IDL_SRV_CXX@
+OMNIORB_IDL_SRV_OBJ = @OMNIORB_IDL_SRV_OBJ@
+
+# Default ORB
+
+CORBA_ROOT = @CORBA_ROOT@
+CORBA_INCLUDES = @CORBA_INCLUDES@
+CORBA_LIBS = @CORBA_LIBS@
+CORBA_CXXFLAGS = @CORBA_CXXFLAGS@
+
+IDLCXXFLAGS = -bcxx @IDLCXXFLAGS@ -I$(srcdir) -I$(KERNEL_ROOT_DIR)/idl/salome \
+ -I$(GEOM_ROOT_DIR)/idl/salome -I$(MED_ROOT_DIR)/idl/salome\
+ -I$(SMESH_ROOT_DIR)/idl/salome
+IDLPYFLAGS = @IDLPYFLAGS@
+
+IDL = @IDL@
+
+IDL_CLN_H = @IDL_CLN_H@
+IDL_CLN_CXX = @IDL_CLN_CXX@
+IDL_CLN_OBJ = @IDL_CLN_OBJ@
+
+IDL_SRV_H = @IDL_SRV_H@
+IDL_SRV_CXX = @IDL_SRV_CXX@
+IDL_SRV_OBJ = @IDL_SRV_OBJ@
+
+CPPFLAGS+= $(CORBA_INCLUDES)
+CXXFLAGS+= $(CORBA_CXXFLAGS)
+
+# SALOME
+
+SALOME_INCLUDES = \
+ -I$(KERNEL_ROOT_DIR)/include/salome \
+ -I$(GEOM_ROOT_DIR)/include/salome \
+ -I$(SMESH_ROOT_DIR)/include/salome
+
+CPPFLAGS += -DSOLIDGEOM -DLINUX $(OCC_INCLUDES) $(SALOME_INCLUDES) $(BOOST_CPPFLAGS)
+CXXFLAGS += -DSOLIDGEOM -DLINUX $(OCC_CXXFLAGS) $(SALOME_INCLUDES)
+
+LDFLAGS += -L${KERNEL_ROOT_DIR}/lib@LIB_LOCATION_SUFFIX@/salome -L${SMESH_ROOT_DIR}/lib@LIB_LOCATION_SUFFIX@/salome -L${GEOM_ROOT_DIR}/lib@LIB_LOCATION_SUFFIX@/salome -lSMESHimpl -lSMESHEngine -lStdMeshers -lStdMeshersEngine -lSalomeGenericObj
+
+# add corba libs when link salome application !
+#LDFLAGS+= $(CORBA_LIBS)
+LIBS+=$(CORBA_LIBS)
+
+## Shared libraries
+LT_STATIC_EXEC=@LT_STATIC_EXEC@
+DYNAMIC_DIRS=@DYNAMIC_DIRS@
+LT_LIB=libtool
+LT=$(top_builddir)/libtool
+LT_COMPILE=$(LT) --mode=compile $(CC)
+LT_LINK_LIB=$(LT_LIB) --mode=link $(CC) -rpath $(libdir)
+LT_LINK_EXE=$(LT) --mode=link $(CC) $(LT_STATIC_EXEC) -dlopen self -rpath $(bindir) $(DYNAMIC_DIRS)
+LT_RUN=$(LT) --mode=execute
+LT_INSTALL_PROG=$(LT) --mode=install $(INSTALL_PROGRAM)
+LT_INSTALL_LIB=$(LT) --mode=install $(INSTALL_DATA)
+LT_UNINSTALL=$(LT) --mode=uninstall $(RM)
+
+INSTALL=@INSTALL@
+INSTALL_PROGRAM=@INSTALL_PROGRAM@
+INSTALL_DATA=@INSTALL_DATA@
+
+# create a symbolic link (or a copie ?)
+LN_S=@LN_S@
+
+## Installation points
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+bindir=@bindir@/salome
+libdir=@libdir@/salome
+# warning : if user give this path in configure we could have salome/salome :-(
+includedir=@includedir@/salome
+datadir=@datadir@/salome
+idldir=$(prefix)/idl/salome
+sharedpydir=@libdir@/python$(PYTHON_VERSION)/site-packages/salome/shared_modules
+
+docdir=${prefix}/doc/salome
+
+#
+# begin of package rules
+#
+
+.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
+
+all:
+ $(MAKE) inc
+ $(MAKE) depend_idl
+ $(MAKE) depend
+ $(MAKE) lib
+ $(MAKE) bin
+ $(MAKE) resources
+
+#
+# add target to build administrative files
+#
+
+Makefile: $(top_builddir)/config.status $(srcdir)/Makefile.in
+ cd $(top_builddir) ; ./config.status
+
+LOCAL_MAKE = make_commence make_omniorb
+
+KERNEL_MAKE = make_module make_conclude depend SALOMEconfig.h F77config.h sstream envScript
+
+$(top_builddir)/config.status: $(top_srcdir)/configure \
+ $(LOCAL_MAKE:%=$(top_srcdir)/adm_local/unix/%.in) \
+ $(KERNEL_MAKE:%=$(KERNEL_ROOT_DIR)/salome_adm/unix/%.in)
+ cd $(top_builddir) ; ./config.status --recheck
+
+# VPATH contain $(srcdir), so make configure is good in top_srcdir and we must add target configure otherwise :-)
+ifneq ($(top_srcdir),$(srcdir))
+configure: $(top_srcdir)/configure
+endif
+
+$(top_srcdir)/configure: $(top_srcdir)/configure.in $(top_srcdir)/aclocal.m4
+ cd $(top_srcdir) ; autoconf
+
+$(top_srcdir)/configure.in: $(top_srcdir)/configure.in.base
+ cd $(top_srcdir) && ./build_configure
+
+
+ACLOCAL_KERNEL = \
+ac_cxx_bool.m4 check_corba.m4 \
+ac_cxx_depend_flag.m4 check_hdf5.m4 enable_pthreads.m4 \
+ac_cxx_mutable.m4 check_mico.m4 libtool.m4 \
+ac_cxx_namespaces.m4 check_omniorb.m4 pyembed.m4 \
+ac_cxx_partial_specialization.m4 python.m4 \
+ac_cxx_typename.m4 check_pthreads.m4 check_cas.m4 \
+ac_cc_warnings.m4 check_swig.m4 check_boost.m4
+
+ACLOCAL_GUI = \
+check_vtk.m4 check_opengl.m4 check_qt.m4 \
+check_GUI.m4 check_corba_in_GUI.m4
+
+ACLOCAL_GEOM = check_GEOM.m4
+
+ACLOCAL_SMESH = check_SMESH.m4
+
+$(top_srcdir)/aclocal.m4: $(ACLOCAL_KERNEL%=@KERNEL_ROOT_DIR@/salome_adm/unix/config_files/%) \
+ $(ACLOCAL_GUI:%=@GUI_ROOT_DIR@/adm_local/unix/config_files/%) \
+ $(ACLOCAL_GEOM:%=@GEOM_ROOT_DIR@/adm_local/unix/config_files/%) \
+ $(ACLOCAL_SMESH:%=@SMESH_ROOT_DIR@/adm_local/unix/config_files/%)
+ cd $(top_srcdir) ; aclocal -I adm_local/unix/config_files -I @KERNEL_ROOT_DIR@/salome_adm/unix/config_files \
+ -I @GUI_ROOT_DIR@/adm_local/unix/config_files \
+ -I @GEOM_ROOT_DIR@/adm_local/unix/config_files \
+ -I @SMESH_ROOT_DIR@/adm_local/unix/config_files
+
--- /dev/null
+#=======================================================================
+# Begin specific part to omniorb
+# (include from file adm/unix/make_omniorb generated by
+# adm/unix/make_omniorb.in)
+#=======================================================================
+# -* Makefile *-
+#
+# Author : Patrick GOLDBRONN (CEA)
+# Date : 29/06/2001
+#
+
+# Client and server object are the same with omniorb
+# There are one header file and one source file generate
+
+#IDLOBJ=$(IDLSRC:%.idl=%$(IDL_CLN_OBJ))
+
+# dependancies between idl and it's generated files
+%$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${KERNEL_ROOT_DIR}/idl/salome/%.idl
+ $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
+
+%$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${GEOM_ROOT_DIR}/idl/salome/%.idl
+ $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
+
+#%$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${MED_ROOT_DIR}/idl/salome/%.idl
+# $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
+
+%$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${SMESH_ROOT_DIR}/idl/salome/%.idl
+ $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
+
+%$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${top_builddir}/idl/salome/%.idl
+ $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
+
+# dependncies between idl files
+depend_idl: .depidl
+
+# we use cpp to generate dependencies between idl files.
+# we change cpp output to keep only idl file and transform it to get a suitable rule
+.depidl: $(IDL_FILES)
+ @touch $@
+ @for dep in $? dummy; do \
+ if [ $$dep != "dummy" ]; then \
+ echo Building dependencies for $$dep; \
+ basedep=`basename $$dep .idl`; \
+ header="$$basedep"$(IDL_CLN_H); \
+ sed '\%^'"$$header"':%,\%[^\\]$$%d' <$@ >$@- && mv $@- $@; \
+ $(CPP) $(C_DEPEND_FLAG) -I$(srcdir) $$dep 2>/dev/null | \
+ sed `echo "s%$$basedep\\.idl%$$header:%g"` | \
+ sed 's% $(srcdir)/% %g' | \
+ sed 's% $(top_srcdir)/% %g' | \
+ sed 's% $(top_builddir)/% %g' | \
+ sed 's%^.*:\.o: *%%' | sed 's%^ *\\ *%%'| sed 's%^ *\(.*\):%\1:%' | \
+ sed 's/\.idl/$(IDL_CLN_H)/' >>$@; \
+ echo '' >>$@; \
+ fi; \
+ done ;
+
+-include .depidl
+
+#=======================================================================
+# End specific part to omniorb
+#=======================================================================
--- /dev/null
+THIS IS SALOME - BLSURFPLUGIN VERSION: 3.2.0
--- /dev/null
+#!/bin/bash
+
+#
+# Tool for updating list of .in file for the SALOME project
+# and regenerating configure script
+#
+# Author : Marc Tajchman - CEA
+# Date : 10/10/2002
+#
+
+ORIG_DIR=`pwd`
+CONF_DIR=`echo $0 | sed -e "s,[^/]*$,,;s,/$,,;s,^$,.,"`
+
+########################################################################
+# Test if the KERNEL_ROOT_DIR is set correctly
+
+if test ! -d "${KERNEL_ROOT_DIR}"; then
+ echo "failed : KERNEL_ROOT_DIR variable is not correct !"
+ exit
+fi
+
+# Test if the KERNEL_SRC is set correctly
+
+#if test ! -d "${KERNEL_SRC}"; then
+# echo "failed : KERNEL_SRC variable is not correct !"
+# exit
+#fi
+########################################################################
+# Test if the GUI_ROOT_DIR is set correctly
+
+if test ! -d "${GUI_ROOT_DIR}"; then
+ echo "failed : GUI_ROOT_DIR variable is not correct !"
+ exit
+fi
+
+########################################################################
+# Test if the MED_ROOT_DIR is set correctly
+
+if test ! -d "${MED_ROOT_DIR}"; then
+ echo "failed : MED_ROOT_DIR variable is not correct !"
+ exit
+fi
+
+########################################################################
+# Test if the GEOM_ROOT_DIR is set correctly
+
+if test ! -d "${GEOM_ROOT_DIR}"; then
+ echo "failed : GEOM_ROOT_DIR variable is not correct !"
+ exit
+fi
+
+########################################################################
+# Test if the SMESH_ROOT_DIR is set correctly
+
+if test ! -d "${SMESH_ROOT_DIR}"; then
+ echo "failed : SMESH_ROOT_DIR variable is not correct !"
+ exit
+fi
+
+########################################################################
+# find_in - utility function
+#
+# usage :
+# find_in directory filename
+#
+# Finds files following the *.in pattern, recursively in the
+# directory (first argument).
+# Results are appended into the file (second argument)
+#
+# Difference from the standard unix find is that files are tested
+# before directories
+#
+
+find_in()
+{
+ local i
+ local f=$2
+
+# if the first argument is not a directory, returns
+
+ if [ ! -d "$1" ] ; then
+ return
+ fi
+
+# dont look in the CVS directories
+
+ case $1 in
+ */CVS) return ;;
+ */adm_local/*) return ;;
+ *) ;;
+ esac
+
+# for each regular file contained in the directory
+# test if it's a .in file
+
+ for i in "$1"/*
+ do
+ if [ -f "$i" ] ; then
+ case $i in
+ *.in) echo " "$i" \\" >> $f;;
+ *) ;;
+ esac
+ fi
+ done
+
+# for each subdirectory of the first argument, proceeds recursively
+
+ for i in "$1"/*
+ do
+ if [ -d "$i" ] ; then
+ find_in "$i" "$f"
+ fi
+ done
+}
+
+
+#######################################################################
+# Generate list of .in files (Makefile.in, config.h.in, etc)
+# appending it in file configure.in
+
+cd ${CONF_DIR}
+ABS_CONF_DIR=`pwd`
+
+#
+# Common part of the configure.in file
+#
+chmod u+w configure.in.base
+if ! \cp -f configure.in.base configure.in_tmp1
+then
+ echo
+ echo "error : can't create files in" ${CONF_DIR}
+ echo "aborting ..."
+ chmod u-w configure.in.base
+ exit
+fi
+chmod u-w configure.in.base
+
+if [ -e "${CONF_DIR}/salome_adm" ] ; then
+ \rm -f ${CONF_DIR}/salome_adm
+fi
+
+# make a link allowing AC_OUTPUT to find the salome_adm/.../*.in files
+echo "" >> configure.in_tmp1
+echo 'ln -fs ${KERNEL_ROOT_DIR}/salome_adm ${ROOT_SRCDIR}/.' >> configure.in_tmp1
+
+echo "" >> configure.in_tmp1
+echo "AC_OUTPUT([ \\" >> configure.in_tmp1
+
+#
+# List of .in files in the adm/unix directory
+# These files MUST be on top of AC_OUTPUT list so we
+# put them "manually"
+#
+
+echo " ./salome_adm/unix/SALOMEconfig.h \\" >> configure.in_tmp1
+echo " ./salome_adm/unix/F77config.h \\" >> configure.in_tmp1
+echo " ./salome_adm/unix/sstream \\" >> configure.in_tmp1
+echo " ./salome_adm/unix/depend \\" >> configure.in_tmp1
+echo " ./adm_local/unix/make_omniorb:${ABS_CONF_DIR}/adm_local/unix/make_omniorb.in \\" >> configure.in_tmp1
+echo " ./salome_adm/unix/envScript \\" >> configure.in_tmp1
+echo " ./adm_local/unix/make_commence:${ABS_CONF_DIR}/adm_local/unix/make_commence.in \\" >> configure.in_tmp1
+echo " ./salome_adm/unix/make_conclude \\" >> configure.in_tmp1
+echo " ./salome_adm/unix/make_module \\" >> configure.in_tmp1
+
+\rm -f configure.in_tmp2 configure.in_tmp3
+touch configure.in_tmp2
+find_in . configure.in_tmp2
+sed -e '/^...salome_adm/d' configure.in_tmp2 > configure.in_tmp3
+sed -e '/^...adm_local.unix.make_omniorb/d' configure.in_tmp3 configure.in_tmp2
+sed -e '/^...adm_local.unix.make_commence/d' configure.in_tmp2 > configure.in_tmp3
+sed -e '/configure.in/d' configure.in_tmp3 > configure.in_tmp2
+sed -e 's/.in / /' configure.in_tmp2 >> configure.in_tmp1
+#sed '/^.salome_adm/d' configure.in_tmp2 > configure.in_tmp3
+#sed '/configure.in/d' configure.in_tmp3 > configure.in_tmp2
+#sed 's/.in / /' configure.in_tmp2 >> configure.in_tmp1
+
+echo "])" >> configure.in_tmp1
+
+# delete the link created for AC_OUTPUT
+echo "" >> configure.in_tmp1
+#echo 'rm -f ${ROOT_SRCDIR}/salome_adm' >> configure.in_tmp1
+\mv configure.in_tmp1 configure.in_new
+\rm -f configure.in_tmp2 configure.in_tmp3
+
+
+########################################################################
+# Create new (or replace old) configure.in file
+# Print a message if the file is write protected
+#
+
+echo
+if test ! -f configure.in
+then
+ echo -n "Creating new file 'configure.in' ... "
+ if \mv configure.in_new configure.in >& /dev/null
+ then
+ echo "done"
+ else
+ echo "error, check your file permissions"
+ fi
+else
+ echo -n "Updating 'configure.in' file ... "
+ if ! \cp configure.in configure.in_old >& /dev/null
+ then
+ echo
+ echo
+ echo "Can't backup previous configure.in"
+ echo -n "Continue (you will not be able to revert) - (Y/N) ? "
+ read R
+ case "x$R" in
+ xn*) exit;;
+ xN*) exit;;
+ esac
+ echo
+ echo -n " "
+ fi
+ if \cp configure.in_new configure.in >& /dev/null
+ then
+ echo "done"
+ else
+ echo
+ echo "error, can't update previous configure.in"
+ fi
+fi
+
+########################################################################
+# Use autoconf to rebuild the configure script
+#
+
+if test -f configure
+then
+ echo -n "Updating 'configure' script ... "
+else
+ echo -n "Creating 'configure' script ... "
+fi
+
+aclocal -I adm_local/unix/config_files -I ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files \
+ -I ${GUI_ROOT_DIR}/adm_local/unix/config_files \
+ -I ${MED_ROOT_DIR}/adm_local/unix/config_files \
+ -I ${GEOM_ROOT_DIR}/adm_local/unix/config_files \
+ -I ${SMESH_ROOT_DIR}/adm_local/unix/config_files
+if autoconf
+then
+ echo "done"
+else
+ echo "failed (check file permissions and/or user quotas ...)"
+fi
+
+cd ${ORIG_DIR}
+
+echo
--- /dev/null
+#
+# PLEASE DO NOT MODIFY configure.in FILE
+#
+# ALL CHANGES WILL BE DISCARDED BY THE NEXT
+# build_configure COMMAND
+#
+# CHANGES MUST BE MADE IN configure.in.base FILE
+#
+#
+# Author : Marc Tajchman (CEA)
+# Date : 28/06/2001
+# Modified by : Patrick GOLDBRONN (CEA)
+# Modified by : Marc Tajchman (CEA)
+#
+# Created from configure.in.base
+#
+
+AC_INIT(src)
+AC_CONFIG_AUX_DIR(${KERNEL_ROOT_DIR}/salome_adm/unix/config_files)
+AC_CANONICAL_HOST
+
+PACKAGE=salome
+AC_SUBST(PACKAGE)
+
+VERSION=0.0.1
+AC_SUBST(VERSION)
+
+dnl
+dnl Initialize source and build root directories
+dnl
+
+ROOT_BUILDDIR=`pwd`
+ROOT_SRCDIR=`echo $0 | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
+cd $ROOT_SRCDIR
+ROOT_SRCDIR=`pwd`
+cd $ROOT_BUILDDIR
+
+AC_SUBST(ROOT_SRCDIR)
+AC_SUBST(ROOT_BUILDDIR)
+
+echo
+echo Source root directory : $ROOT_SRCDIR
+echo Build root directory : $ROOT_BUILDDIR
+echo
+echo
+
+if test -z "$AR"; then
+ AC_CHECK_PROGS(AR,ar xar,:,$PATH)
+fi
+AC_SUBST(AR)
+
+dnl Export the AR macro so that it will be placed in the libtool file
+dnl correctly.
+export AR
+
+echo
+echo ---------------------------------------------
+echo testing make
+echo ---------------------------------------------
+echo
+
+AC_PROG_MAKE_SET
+AC_PROG_INSTALL
+dnl
+dnl libtool macro check for CC, LD, NM, LN_S, RANLIB, STRIP + pour les librairies dynamiques !
+
+AC_ENABLE_DEBUG(yes)
+AC_DISABLE_PRODUCTION
+
+echo ---------------------------------------------
+echo testing libtool
+echo ---------------------------------------------
+
+dnl first, we set static to no!
+dnl if we want it, use --enable-static
+AC_ENABLE_STATIC(no)
+
+AC_LIBTOOL_DLOPEN
+AC_PROG_LIBTOOL
+
+dnl Fix up the INSTALL macro if it s a relative path. We want the
+dnl full-path to the binary instead.
+case "$INSTALL" in
+ *install-sh*)
+ INSTALL='\${KERNEL_ROOT_DIR}'/salome_adm/unix/config_files/install-sh
+ ;;
+esac
+
+echo
+echo ---------------------------------------------
+echo testing C/C++
+echo ---------------------------------------------
+echo
+
+cc_ok=no
+dnl inutil car libtool
+dnl AC_PROG_CC
+AC_PROG_CXX
+AC_DEPEND_FLAG
+# AC_CC_WARNINGS([ansi])
+cc_ok=yes
+
+dnl Library libdl :
+AC_CHECK_LIB(dl,dlopen)
+
+dnl add library libm :
+AC_CHECK_LIB(m,ceil)
+
+dnl
+dnl Well we use sstream which is not in gcc pre-2.95.3
+dnl We must test if it exists. If not, add it in include !
+dnl
+
+AC_CXX_HAVE_SSTREAM
+
+dnl
+dnl ---------------------------------------------
+dnl testing MPICH
+dnl ---------------------------------------------
+dnl
+
+CHECK_MPICH
+
+echo
+echo ---------------------------------------------
+echo testing LEX \& YACC
+echo ---------------------------------------------
+echo
+
+lex_yacc_ok=no
+AC_PROG_YACC
+AC_PROG_LEX
+lex_yacc_ok=yes
+
+echo
+echo ---------------------------------------------
+echo testing python
+echo ---------------------------------------------
+echo
+
+CHECK_PYTHON
+
+echo
+echo ---------------------------------------------
+echo BOOST Library
+echo ---------------------------------------------
+echo
+
+CHECK_BOOST
+
+dnl echo
+dnl echo ---------------------------------------------
+dnl echo testing java
+dnl echo ---------------------------------------------
+dnl echo
+
+dnl CHECK_JAVA
+
+echo
+echo ---------------------------------------------
+echo testing swig
+echo ---------------------------------------------
+echo
+
+CHECK_SWIG
+
+echo
+echo ---------------------------------------------
+echo testing threads
+echo ---------------------------------------------
+echo
+
+ENABLE_PTHREADS
+
+echo
+echo ---------------------------------------------
+echo testing omniORB
+echo ---------------------------------------------
+echo
+
+CHECK_OMNIORB
+
+dnl echo
+dnl echo ---------------------------------------------
+dnl echo testing mico
+dnl echo ---------------------------------------------
+dnl echo
+
+dnl CHECK_MICO
+
+echo
+echo ---------------------------------------------
+echo default ORB : omniORB
+echo ---------------------------------------------
+echo
+
+DEFAULT_ORB=omniORB
+CHECK_CORBA
+
+AC_SUBST_FILE(CORBA)
+corba=make_$ORB
+CORBA=adm_local/unix/$corba
+
+echo
+echo ---------------------------------------------
+echo testing openGL
+echo ---------------------------------------------
+echo
+
+CHECK_OPENGL
+
+echo
+echo ---------------------------------------------
+echo testing QT
+echo ---------------------------------------------
+echo
+
+CHECK_QT
+
+echo
+echo ---------------------------------------------
+echo testing MSG2QM
+echo ---------------------------------------------
+echo
+
+CHECK_MSG2QM
+
+echo
+echo ---------------------------------------------
+echo testing VTK
+echo ---------------------------------------------
+echo
+
+CHECK_VTK
+
+echo
+echo ---------------------------------------------
+echo testing HDF5
+echo ---------------------------------------------
+echo
+
+CHECK_HDF5
+
+echo
+echo ---------------------------------------------
+echo Testing OpenCascade
+echo ---------------------------------------------
+echo
+
+CHECK_CAS
+
+echo
+echo ---------------------------------------------
+echo Testing html generators
+echo ---------------------------------------------
+echo
+
+CHECK_HTML_GENERATORS
+
+echo
+echo ---------------------------------------------
+echo Testing GUI
+echo ---------------------------------------------
+echo
+
+CHECK_SALOME_GUI
+
+echo
+echo ---------------------------------------------
+echo Testing full GUI
+echo ---------------------------------------------
+echo
+
+CHECK_CORBA_IN_GUI
+if test "x${CORBA_IN_GUI}" != "xyes"; then
+ echo "failed : For configure BLSURFPLUGIN module necessary full GUI !"
+ exit
+fi
+
+echo
+echo ---------------------------------------------
+echo Testing Kernel
+echo ---------------------------------------------
+echo
+
+CHECK_KERNEL
+
+echo
+echo ---------------------------------------------
+echo Testing Geom
+echo ---------------------------------------------
+echo
+
+CHECK_GEOM
+
+# echo
+# echo ---------------------------------------------
+# echo Testing Med
+# echo ---------------------------------------------
+# echo
+#
+# CHECK_MED
+
+echo
+echo ---------------------------------------------
+echo Testing BLSURF
+echo ---------------------------------------------
+echo
+
+CHECK_BLSURF
+
+echo
+echo ---------------------------------------------
+echo Testing SMesh
+echo ---------------------------------------------
+echo
+
+CHECK_SMESH
+
+echo
+echo ---------------------------------------------
+echo Summary
+echo ---------------------------------------------
+echo
+
+echo Configure
+variables="cc_ok boost_ok lex_yacc_ok python_ok swig_ok threads_ok OpenGL_ok qt_ok vtk_ok hdf5_ok omniORB_ok occ_ok doxygen_ok graphviz_ok Kernel_ok Geom_ok SMesh_ok BLSURF_ok"
+
+for var in $variables
+do
+ printf " %10s : " `echo \$var | sed -e "s,_ok,,"`
+ eval echo \$$var
+done
+
+echo
+echo "Default ORB : $DEFAULT_ORB"
+echo
+
+dnl generals files which could be included in every makefile
+
+AC_SUBST_FILE(COMMENCE) COMMENCE=adm_local/unix/make_commence
+AC_SUBST_FILE(CONCLUDE) CONCLUDE=salome_adm/unix/make_conclude
+AC_SUBST_FILE(MODULE) MODULE=salome_adm/unix/make_module
+
+dnl les dependences
+AC_SUBST_FILE(DEPEND) DEPEND=salome_adm/unix/depend
+
+dnl We don t need to say when we re entering directories if we re using
+dnl GNU make becuase make does it for us.
+if test "X$GMAKE" = "Xyes"; then
+ AC_SUBST(SETX) SETX=":"
+else
+ AC_SUBST(SETX) SETX="set -x"
+fi
+
+# make other build directories
+for rep in salome_adm adm_local doc bin/salome include/salome lib${LIB_LOCATION_SUFFIX}/salome share/salome/resources idl
+do
+# if test ! -d $rep ; then
+# eval mkdir $rep
+# fi
+ $INSTALL -d $rep
+done
+
+echo
+echo ---------------------------------------------
+echo copying resource files, shell scripts, and
+echo xml files
+echo ---------------------------------------------
+echo
+
+
+dnl copy resources directories
+
+#for i in `find $ROOT_SRCDIR -name 'resources' -print`
+#do
+# local_res=`echo $i | sed -e "s,$ROOT_SRCDIR,.,"`
+# local_res_dir=`echo $local_res | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
+# mkdir -p $local_res_dir
+# cd $local_res_dir
+# ln -fs $i
+# echo $local_res
+# cd $ROOT_BUILDDIR
+#done
+
+dnl copy shells and utilities contained in the bin directory
+dnl excluding .in files (treated in AC-OUTPUT below) and CVS
+dnl directory
+
+#mkdir -p bin/salome
+#cd bin/salome
+#for i in $ROOT_SRCDIR/bin/*
+#do
+# local_bin=`echo $i | sed -e "s,$ROOT_SRCDIR,.,"`
+# case "$local_bin" in
+# *.in | *~) ;;
+# ./bin/CVS | ./bin/salome) ;;
+# *) /usr/bin/install -C $i .; echo $local_bin ;;
+# esac
+#done
+#cd $ROOT_BUILDDIR
+
+AC_SUBST_FILE(ENVSCRIPT) ENVSCRIPT=salome_adm/unix/envScript
+
+dnl copy xml files to the build tree (lib directory)
+dnl pourquoi ????
+
+#cd lib
+#for i in `find $ROOT_SRCDIR -name "*.xml" -print`
+#do
+# ln -fs $i
+# echo `echo $i | sed -e "s,$ROOT_SRCDIR,.,"`
+#done
+#cd $ROOT_BUILDDIR
+
+
+echo
+echo ---------------------------------------------
+echo generating Makefiles and configure files
+echo ---------------------------------------------
+echo
+
+#AC_OUTPUT_COMMANDS([ \
+# chmod +x ./bin/* \
+#])
+
+## do not delete this line
--- /dev/null
+#------ BLSURFplugin-Src ------
+export BLSURFPLUGIN_SRC_DIR=${INSTALL_ROOT}/BLSURFPLUGIN_SRC
+##
--- /dev/null
+#------ Licence Distene ------
+export DISTENE_LICENSE_FILE=${INSTALL_ROOT}/dlim8.key
+##
+#------ BLSURF ------
+export BLSURFHOME=${INSTALL_ROOT/BLSurf
+##
+#------ BLSURFplugin-Src ------
+export BLSURFPLUGIN_SRC_DIR=${INSTALL_ROOT}/BLSURFPLUGIN_SRC_3.2.4
+##
+#------ BLSURFplugin-Bin ------
+export BLSURFPLUGIN_ROOT_DIR=${INSTALL_ROOT}/BLSURFPLUGIN_INSTALL
+if [ -n "${ENV_FOR_LAUNCH}" ] ; then
+ if [ "${ENV_FOR_LAUNCH}" == "1" ] ; then
+ exportp LD_LIBRARY_PATH ${BLSURFPLUGIN_ROOT_DIR}/lib/salome:${BLSURFHOME}/lib
+ exportp PYTHONPATH ${BLSURFPLUGIN_ROOT_DIR}/lib64/salome:${BLSURFPLUGIN_ROOT_DIR}/lib64/python${PYTHON_VERSION}/site-packages/salome
+ fi
+fi
+##
--- /dev/null
+// 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 : BLSURFPlugin_Algorithm.idl
+// Authors : Francis KLOSS (OCC) & Patrick LAUG (INRIA) & Lioka RAZAFINDRAZAKA (CEA)
+
+#ifndef _SMESH_BLSURFALGORITHM_IDL_
+#define _SMESH_BLSURFALGORITHM_IDL_
+
+#include "SMESH_Hypothesis.idl"
+
+/*!
+ * BLSURFPlugin: interfaces to BLSURF related hypotheses and algorithms
+ */
+module BLSURFPlugin
+{
+ /*!
+ * BLSURFPlugin_BLSURF: interface of BLSURF algorithm
+ */
+ interface BLSURFPlugin_BLSURF : SMESH::SMESH_2D_Algo
+ {
+ };
+
+ /*!
+ * BLSURFPlugin_Hypothesis: interface of "BLSURF parameters" hypothesis
+ */
+ interface BLSURFPlugin_Hypothesis : SMESH::SMESH_Hypothesis
+ {
+ void SetPhysicalMesh(in long value);
+ long GetPhysicalMesh();
+
+ void SetPhySize(in double value);
+ double GetPhySize();
+
+ void SetGeometricMesh(in long value);
+ long GetGeometricMesh();
+
+ void SetAngleMeshS(in double value);
+ double GetAngleMeshS();
+
+ void SetGradation(in double value);
+ double GetGradation();
+
+ void SetQuadAllowed(in boolean value);
+ boolean GetQuadAllowed();
+
+ void SetDecimesh(in boolean value);
+ boolean GetDecimesh();
+ };
+
+};
+
+#endif
--- /dev/null
+# Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS, L3S, LJLL, MENSI
+#
+# 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/
+#
+#
+# generate dependencies for idl file :
+#
+
+# source path
+top_srcdir=@top_srcdir@
+top_builddir=..
+srcdir=@srcdir@
+VPATH=.:${KERNEL_ROOT_DIR}/idl/salome:${GEOM_ROOT_DIR}/idl/salome :${SMESH_ROOT_DIR}/idl/salome
+#:${MED_ROOT_DIR}/idl/salome
+
+@COMMENCE@
+
+IDL_FILES = BLSURFPlugin_Algorithm.idl
+
+
+# copy all idl file in $(top_builddir)/idl
+inc: $(top_builddir)/idl/salome $(IDL_FILES:%=$(top_builddir)/idl/salome/%)
+
+$(top_builddir)/idl/salome:
+ $(INSTALL) -d $@
+
+$(IDL_FILES:%=$(top_builddir)/idl/salome/%):$(IDL_FILES:%=$(top_srcdir)/idl/%)
+ cp -f $^ $(top_builddir)/idl/salome
+
+
+# python wrap
+lib: pyidl
+
+PYTHON_BUILD_SITE=$(top_builddir)/lib/python$(PYTHON_VERSION)/site-packages/@PACKAGE@
+
+pyidl: $(PYTHON_BUILD_SITE) $(IDL_FILES:%.idl=$(PYTHON_BUILD_SITE)/%_idl.py)
+
+$(PYTHON_BUILD_SITE):
+ $(INSTALL) -d $@
+
+$(PYTHON_BUILD_SITE)/%_idl.py: $(top_builddir)/idl/salome/%.idl
+ $(OMNIORB_IDL) $(OMNIORB_IDLPYFLAGS) -C$(PYTHON_BUILD_SITE) $<
+
+
+# install python client (generated from idl file)
+install: $(IDL_FILES:%=$(top_builddir)/idl/salome/%)
+ $(INSTALL) -d $(idldir) $(PYTHON_SITE_INSTALL)
+ $(INSTALL_DATA) $^ $(idldir)
+ @for file in $^ dummy; do \
+ if [ $$file != "dummy" ]; then \
+ $(OMNIORB_IDL) $(OMNIORB_IDLPYFLAGS) -C$(PYTHON_SITE_INSTALL) $$file ; \
+ fi ; \
+ done ;
+
+uninstall:
+ -$(RM) $(IDL_FILES:%=$(idldir)/%)
+ -$(RM) $(IDL_FILES:%.idl=$(PYTHON_SITE_INSTALL)/%_idl.py)
+
+# clean
+cleandep:
+ -$(RM) .dep*
+
+clean: cleandep
+ -$(RM) $(top_builddir)/idl/salome/*.idl
+ -$(RM) $(PYTHON_BUILD_SITE)/*.py
+
+distclean: clean
+ -$(RM) Makefile
+
--- /dev/null
+<?xml version='1.0' encoding='us-ascii'?>
+<!DOCTYPE meshers PUBLIC "" "desktop.dtd">
+
+<!-- GUI customization for BLSURF Plugin -->
+
+<meshers>
+
+<meshers-group name="BLSURF"
+ resources="BLSURFPlugin"
+ server-lib="libBLSURFEngine.so"
+ gui-lib="libBLSURFPluginGUI.so">
+ <hypotheses>
+ <hypothesis type="BLSURF_Parameters"
+ label-id="BLSURF Parameters"
+ icon-id="mesh_hypo_BLSURF.png"
+ dim="2"/>
+ </hypotheses>
+ <algorithms>
+ <algorithm type="BLSURF"
+ label-id="BLSURF"
+ icon-id="mesh_algo_BLSURF.png"
+ hypos="BLSURF_Parameters"
+ output="TRIA,QUAD"
+ dim="2"/>
+ </algorithms>
+</meshers-group>
+
+</meshers>
--- /dev/null
+// BLSURFPlugin : C++ implementation
+//
+// Copyright (C) 2006 OPEN CASCADE, CEA/DEN, EDF R&D
+//
+// 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 : BLSURFPlugin_BLSURF.cxx
+// Authors : Francis KLOSS (OCC) & Patrick LAUG (INRIA) & Lioka RAZAFINDRAZAKA (CEA)
+// Date : 20/03/2006
+// Project : SALOME
+//=============================================================================
+using namespace std;
+
+#include "BLSURFPlugin_BLSURF.hxx"
+#include "BLSURFPlugin_Hypothesis.hxx"
+
+#include <SMESH_Gen.hxx>
+#include <SMESH_Mesh.hxx>
+#include <SMESH_ControlsDef.hxx>
+
+#include <SMESHDS_Mesh.hxx>
+#include <SMDS_MeshElement.hxx>
+#include <SMDS_MeshNode.hxx>
+
+#include <utilities.h>
+
+#include <list>
+#include <vector>
+
+#include <BRep_Tool.hxx>
+#include <TopExp.hxx>
+#include <TopExp_Explorer.hxx>
+#include <TopoDS.hxx>
+#include <NCollection_Map.hxx>
+
+#include <cad_occ.h>
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+
+BLSURFPlugin_BLSURF::BLSURFPlugin_BLSURF(int hypId, int studyId,
+ SMESH_Gen* gen)
+ : SMESH_2D_Algo(hypId, studyId, gen)
+{
+ MESSAGE("BLSURFPlugin_BLSURF::BLSURFPlugin_BLSURF");
+
+ _name = "BLSURF";
+ _shapeType = (1 << TopAbs_FACE); // 1 bit /shape type
+ _compatibleHypothesis.push_back("BLSURF_Parameters");
+ _requireDescretBoundary = false;
+ _onlyUnaryInput = false;
+ _hypothesis = NULL;
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+
+BLSURFPlugin_BLSURF::~BLSURFPlugin_BLSURF()
+{
+ MESSAGE("BLSURFPlugin_BLSURF::~BLSURFPlugin_BLSURF");
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+
+bool BLSURFPlugin_BLSURF::CheckHypothesis
+ (SMESH_Mesh& aMesh,
+ const TopoDS_Shape& aShape,
+ SMESH_Hypothesis::Hypothesis_Status& aStatus)
+{
+ _hypothesis = NULL;
+
+ list<const SMESHDS_Hypothesis*>::const_iterator itl;
+ const SMESHDS_Hypothesis* theHyp;
+
+ const list<const SMESHDS_Hypothesis*>& hyps = GetUsedHypothesis(aMesh, aShape);
+ int nbHyp = hyps.size();
+ if (!nbHyp)
+ {
+ aStatus = SMESH_Hypothesis::HYP_OK;
+ return true; // can work with no hypothesis
+ }
+
+ itl = hyps.begin();
+ theHyp = (*itl); // use only the first hypothesis
+
+ string hypName = theHyp->GetName();
+
+ if (hypName == "BLSURF_Parameters")
+ {
+ _hypothesis = static_cast<const BLSURFPlugin_Hypothesis*> (theHyp);
+ ASSERT(_hypothesis);
+ aStatus = SMESH_Hypothesis::HYP_OK;
+ }
+ else
+ aStatus = SMESH_Hypothesis::HYP_INCOMPATIBLE;
+
+ return aStatus == SMESH_Hypothesis::HYP_OK;
+}
+
+//=============================================================================
+/*!
+ * Pass parameters to BLSURF
+ */
+//=============================================================================
+
+void BLSURFPlugin_BLSURF::SetParameters(const BLSURFPlugin_Hypothesis* hyp) {
+ if (hyp) {
+ MESSAGE("BLSURFPlugin_BLSURF::SetParameters");
+ _physicalMesh = (int) hyp->GetPhysicalMesh();
+ _phySize = hyp->GetPhySize();
+ _geometricMesh = (int) hyp->GetGeometricMesh();
+ _angleMeshS = hyp->GetAngleMeshS();
+ _gradation = hyp->GetGradation();
+ _quadAllowed = hyp->GetQuadAllowed();
+ _decimesh = hyp->GetDecimesh();
+ }
+
+ bool BlsurfEnvFile = true;
+
+ if ( BlsurfEnvFile ) {
+ TCollection_AsciiString SalomeExecDir;
+
+ char * Dir = getenv("PWD");
+ SalomeExecDir = Dir;
+ SalomeExecDir += "/blsurf.env";
+
+ ofstream theBlsurfEnv ( SalomeExecDir.ToCString() , ios::out);
+ theBlsurfEnv << "verb 10" << endl;
+ theBlsurfEnv << "hphy_flag " << _physicalMesh << endl;
+ theBlsurfEnv << "hphydef " << _phySize << endl;
+ theBlsurfEnv << "hgeo_flag " << _geometricMesh << endl;
+ theBlsurfEnv << "angle_meshs " << _angleMeshS << endl;
+ theBlsurfEnv << "gradation " << _gradation << endl;
+ theBlsurfEnv << "topo_points 1" << endl;
+ theBlsurfEnv << "topo_project 1" << endl;
+ theBlsurfEnv << "topo_curves 1" << endl;
+ theBlsurfEnv << "surforient 1" << endl;
+ theBlsurfEnv << "decim " << _decimesh << endl;
+ theBlsurfEnv.close();
+ }
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+
+bool BLSURFPlugin_BLSURF::Compute(SMESH_Mesh& aMesh, const TopoDS_Shape& aShape) {
+
+ SetParameters(_hypothesis);
+
+ MESSAGE("BLSURFPlugin_BLSURF::Compute");
+
+ if (aShape.ShapeType() == TopAbs_COMPOUND) {
+ cout << " the shape is a COMPOUND" << endl;
+ }
+ else {
+ cout << " the shape is UNKNOWN" << endl;
+ };
+
+ int i=0;
+ if (1) {
+ for (TopExp_Explorer expf(aShape, TopAbs_FACE); expf.More(); expf.Next()) {
+ const TopoDS_Shape& face = expf.Current();
+ i++;
+ int j=0;
+ for (TopExp_Explorer expe(face, TopAbs_EDGE); expe.More(); expe.Next()) {
+ const TopoDS_Shape& edge = expe.Current();
+ j++;
+ int k=0;
+ for (TopExp_Explorer expv(edge, TopAbs_VERTEX); expv.More(); expv.Next()) {
+ k++;
+ }
+ // cout << " face " << i << " and its edge " << j << " has " << k << " vertices" << endl;
+ }
+ // cout << " face " << i << " has " << j << " edges" << endl;
+ }
+ // cout << " total number of faces = " << i << endl;
+ }
+
+ BL_SURF mesh;
+ blw_* blw;
+
+ cout << endl;
+ cout << "Beginning of Surface Mesh generation" << endl;
+ cout << endl;
+ if (!mesh.init(aShape))
+ return(false);
+ cout << endl;
+ cout << "End of Surface Mesh generation" << endl;
+ cout << endl;
+ mesh.get_blw(blw);
+
+ SMESHDS_Mesh* meshDS = aMesh.GetMeshDS();
+
+ if ( !_decimesh ) {
+ /* cf. export_mesh_all */
+ int j, ip, ic, nptri, is, oriented, iF, nF, idom, ndom, v[5], verb;
+ double centre[3];
+ char element[8];
+
+ verb = blw->env.verb;
+ blw->env.verb = 0;
+ assign_bls_mesh_num(blw);
+ blw->env.verb = verb;
+
+ FOR (j, 0, 2) {
+ centre[j] = (blw->bls_glo.xyzmin[j] + blw->bls_glo.xyzmax[j]) * 0.5;
+ cout << "centre[" << j << "] : " << centre[j] << endl;
+ }
+
+ /* points sommets des edges et des triangles */
+ nptri = blw->bls_mesh_num.number_of_nodes;
+ if (blw->env.verb >= 10)
+ fprintf(blw->out, "export_salome: surface mesh contains %d vertices\n", nptri);
+ SMDS_MeshNode** nodes = new SMDS_MeshNode*[nptri+1];
+ j = 0;
+ FOR (ip, 1, nptri) {
+ if (blw->bls_glo.vertices_xyz[3*ip-3] == BLHUGE) {
+ if (++j <= 10) {
+ fprintf(blw->out, "export_salome: unconnected vertex %d\n", ip);
+ if (j == 10) fprintf(blw->out, "export_salome: ...\n");
+ }
+ nodes[ip] = meshDS->AddNode(centre[0], centre[1], centre[2]);
+ }
+ else {
+ double floatVal = blw->bls_glo.vertices_xyz[3*ip-3];
+ // cout << "j : " << j << " node nmuber : " << ip << " --> first coordinate = " << floatVal << " != " << BLHUGE << endl;
+ nodes[ip] = meshDS->AddNode(blw->bls_glo.vertices_xyz[3*ip-3], blw->bls_glo.vertices_xyz[3*ip-2], blw->bls_glo.vertices_xyz[3*ip-1]);
+ // cout << "nodes[" << ip << "] : " << blw->bls_glo.vertices_xyz[3*ip-3] << ", "
+ // << blw->bls_glo.vertices_xyz[3*ip-2] << ", "
+ // << blw->bls_glo.vertices_xyz[3*ip-1] << endl;
+ }
+ }
+
+ /* edges */
+ int nbEdges = C3D.number_of_curves;
+ cout << "Number Of Edges : " << nbEdges << endl;
+ FOR (ic, 1, C3D.number_of_curves) {
+ //TopoDS_Edge topo_edge = mesh.all_edges[ic-1]->topology;
+ int np = C3D.TC[ic].number_of_points;
+ cout << "Number Of Nodes for edge " << ic << " : " << np << endl;
+ FOR (ip, 1, np-1) {
+ meshDS->AddEdge(nodes[C3D.TC[ic].iglopc[ip]], nodes[C3D.TC[ic].iglopc[ip+1]]);
+ }
+ }
+
+ /* faces (triangles or quadrilaterals) */
+ SMDS_MeshFace* face;
+ if (blw->bls_glo.number_of_patches <= 0) {
+ strcpy(element, "p1");
+ }
+ else {
+ strcpy(element, TC2D[1].ms2d.element);
+ }
+ cout << endl;
+ cout << "Number_of_patches : " << blw->bls_glo.number_of_patches << endl;
+ cout << "Element : " << element << endl;
+ cout << "TC2D[1].ms2d.element : " << TC2D[1].ms2d.element << endl;
+ cout << endl;
+ if (STREQUAL(element, "p1")) {
+ if (blw->env.verb >= 10)
+ fprintf(blw->out, "export_salome: surface mesh contains %d triangles\n", blw->bls_mesh_num.ntri);
+ FOR (is, 1, blw->bls_glo.number_of_patches) {
+ TopoDS_Face topo_face = mesh.surfaces[is-1]->topology;
+ oriented = (TC2D[is].surforient >= 0);
+ // cout << endl;
+ // cout << "TC2D[is].surforient : " << TC2D[is].surforient << " --> oriented : " << oriented << endl;
+ nF = TC2D[is].ms2d.jmax_F;
+ ndom = TC2D[is].ms2d.ndom;
+ // cout << "nF : " << nF << endl;
+ // cout << "ndom : " << ndom << endl;
+ // cout << endl;
+ FOR (iF, 1, nF) {
+ idom = TC2D[is].ms2d.FRef[iF];
+ if (!(1 <= idom && idom <= ndom))
+ continue;
+ v[0] = TC2D[is].iglops[TC2D[is].ms2d.F[3*iF-3]];
+ v[1] = TC2D[is].iglops[TC2D[is].ms2d.F[3*iF-2]];
+ v[2] = TC2D[is].iglops[TC2D[is].ms2d.F[3*iF-1]];
+ if (v[0]==v[1] || v[1]==v[2] || v[2]==v[0])
+ continue; /* triangle degenere */
+ // cout << "Triangle " << iF << " of face " << is;
+ if ( oriented) {
+ // cout << " doesn't need to be re-oriented" << endl;
+ face = meshDS->AddFace(nodes[v[2]], nodes[v[1]], nodes[v[0]]);
+ }
+ else {
+ // cout << " needs to be re-oriented" << endl;
+ face = meshDS->AddFace(nodes[v[0]], nodes[v[1]], nodes[v[2]]);
+ }
+ meshDS->SetMeshElementOnShape(face, topo_face);
+ }
+ }
+ }
+ delete nodes;
+ }
+ else {
+ cout << "decimesh is started" << endl;
+ system("decimesh");
+ cout << "decimesh is finished" << endl;
+
+ FILE* fic = fopen("x_h100.mesh", "r");
+ char buf[200];
+ do {
+ fscanf(fic, "%s\n", buf);
+ }
+ while (strcmp(buf, "Vertices")!=0);
+ int n_vtx;
+ fscanf(fic, "%d\n", &n_vtx);
+ cout << "number of vertices: " << n_vtx << endl;
+
+ SMDS_MeshNode** nodes = new SMDS_MeshNode*[n_vtx+1];
+ double coo_x, coo_y, coo_z;
+ for (int i=1; i<=n_vtx; i++) {
+ fscanf(fic, "%lf %lf %lf %*d\n", &coo_x, &coo_y, &coo_z);
+ nodes[i] = meshDS->AddNode(coo_x, coo_y, coo_z);
+ }
+ cout << "nodes are updated" << endl;
+
+ fscanf(fic, "%*s\n");
+ int n_tri, n1, n2, n3, iFace;
+ SMDS_MeshFace* face;
+ fscanf(fic, "%d\n", &n_tri);
+ cout << "number of triangles: " << n_tri << endl;
+ for (int i=0; i<n_tri; i++) {
+ fscanf(fic, "%d %d %d %d\n", &n1, &n2, &n3, &iFace);
+ face = meshDS->AddFace(nodes[n3], nodes[n2], nodes[n1]);
+ }
+ cout << "triangles are updated" << endl;
+
+ char *keyWord;
+ fscanf(fic, "%s\n", keyWord);
+ cout << "keyWord : " << keyWord << endl;
+ int n_edges;
+ SMDS_MeshEdge* edge;
+ fscanf(fic, "%d\n", &n_edges);
+ cout << "number of edges: " << n_edges << endl;
+ for (int i=0; i<n_edges; i++) {
+ fscanf(fic, "%d %d %*d\n", &n1, &n2);
+ edge = meshDS->AddEdge(nodes[n1], nodes[n2]);
+ //meshDS->SetMeshElementOnShape(edge, topo_edge);
+ }
+ cout << "edges are updated, and finished" << endl;
+
+ fscanf(fic, "%s\n", keyWord); cout << "keyWord : " << keyWord << endl;
+ fscanf(fic, "%s\n", keyWord); cout << "keyWord : " << keyWord << endl;
+ fscanf(fic, "%s\n", keyWord); cout << "keyWord : " << keyWord << endl;
+ fscanf(fic, "%s\n", keyWord); cout << "keyWord : " << keyWord << endl;
+ fscanf(fic, "%s\n", keyWord); cout << "keyWord : " << keyWord << endl;
+ fscanf(fic, "%s\n", keyWord); cout << "keyWord : " << keyWord << endl;
+
+ int number = fscanf(fic, "%lf %lf %*lf\n", &coo_x, &coo_y);
+ cout << "coo_x : " << coo_x << endl;
+ cout << "coo_y : " << coo_y << endl;
+ cout << "number : " << number << endl;
+
+ fclose(fic);
+ }
+
+ bool b = mesh.end();
+ return(b);
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+
+ostream & BLSURFPlugin_BLSURF::SaveTo(ostream & save)
+{
+ return save;
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+
+istream & BLSURFPlugin_BLSURF::LoadFrom(istream & load)
+{
+ return load;
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+
+ostream & operator << (ostream & save, BLSURFPlugin_BLSURF & hyp)
+{
+ return hyp.SaveTo( save );
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+
+istream & operator >> (istream & load, BLSURFPlugin_BLSURF & hyp)
+{
+ return hyp.LoadFrom( load );
+}
--- /dev/null
+// BLSURFPlugin : C++ implementation
+//
+// Copyright (C) 2006 OPEN CASCADE, CEA/DEN, EDF R&D
+//
+// 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 : BLSURFPlugin_BLSURF.hxx
+// Authors : Francis KLOSS (OCC) & Patrick LAUG (INRIA) & Lioka RAZAFINDRAZAKA (CEA)
+// Date : 20/03/2006
+// Project : SALOME
+//=============================================================================
+
+#ifndef _BLSURFPlugin_BLSURF_HXX_
+#define _BLSURFPlugin_BLSURF_HXX_
+
+#include "SMESH_2D_Algo.hxx"
+#include "SMESH_Mesh.hxx"
+#include "Utils_SALOME_Exception.hxx"
+
+class BLSURFPlugin_Hypothesis;
+
+class BLSURFPlugin_BLSURF: public SMESH_2D_Algo {
+ public:
+ BLSURFPlugin_BLSURF(int hypId, int studyId, SMESH_Gen* gen);
+
+ virtual ~BLSURFPlugin_BLSURF();
+
+ virtual bool CheckHypothesis(SMESH_Mesh& aMesh,
+ const TopoDS_Shape& aShape,
+ SMESH_Hypothesis::Hypothesis_Status& aStatus);
+
+ void SetParameters(const BLSURFPlugin_Hypothesis* hyp);
+
+ virtual bool Compute(SMESH_Mesh& aMesh, const TopoDS_Shape& aShape);
+
+ ostream & SaveTo(ostream & save);
+ istream & LoadFrom(istream & load);
+ friend ostream & operator << (ostream & save, BLSURFPlugin_BLSURF & hyp);
+ friend istream & operator >> (istream & load, BLSURFPlugin_BLSURF & hyp);
+
+ protected:
+ const BLSURFPlugin_Hypothesis* _hypothesis;
+
+ private:
+ int _physicalMesh;
+ double _phySize;
+ int _geometricMesh;
+ double _angleMeshS;
+ double _gradation;
+ bool _quadAllowed;
+ bool _decimesh;
+};
+
+#endif
--- /dev/null
+// BLSURFPlugin : idl implementation
+//
+// Copyright (C) 2006 OPEN CASCADE, CEA/DEN, EDF R&D
+//
+// 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 : BLSURFPlugin_BLSURF_i.cxx
+// Authors : Francis KLOSS (OCC) & Patrick LAUG (INRIA)
+// Module : BLSURFPlugin
+
+using namespace std;
+#include "BLSURFPlugin_BLSURF_i.hxx"
+#include "SMESH_Gen.hxx"
+
+#include "Utils_CorbaException.hxx"
+#include "utilities.h"
+
+//=============================================================================
+/*!
+ * BLSURFPlugin_BLSURF_i::BLSURFPlugin_BLSURF_i
+ *
+ * Constructor
+ */
+//=============================================================================
+
+BLSURFPlugin_BLSURF_i::BLSURFPlugin_BLSURF_i( PortableServer::POA_ptr thePOA,
+ int theStudyId,
+ ::SMESH_Gen* theGenImpl )
+ : SALOME::GenericObj_i( thePOA ),
+ SMESH_Hypothesis_i( thePOA ),
+ SMESH_Algo_i( thePOA ),
+ SMESH_2D_Algo_i( thePOA )
+{
+ MESSAGE( "BLSURFPlugin_BLSURF_i::BLSURFPlugin_BLSURF_i" );
+ myBaseImpl = new ::BLSURFPlugin_BLSURF( theGenImpl->GetANewId(),
+ theStudyId,
+ theGenImpl );
+}
+
+//=============================================================================
+/*!
+ * BLSURFPlugin_BLSURF_i::~BLSURFPlugin_BLSURF_i
+ *
+ * Destructor
+ */
+//=============================================================================
+
+BLSURFPlugin_BLSURF_i::~BLSURFPlugin_BLSURF_i()
+{
+ MESSAGE( "BLSURFPlugin_BLSURF_i::~BLSURFPlugin_BLSURF_i" );
+}
+
+//=============================================================================
+/*!
+ * BLSURFPlugin_BLSURF_i::GetImpl
+ *
+ * Get implementation
+ */
+//=============================================================================
+
+::BLSURFPlugin_BLSURF* BLSURFPlugin_BLSURF_i::GetImpl()
+{
+ MESSAGE( "BLSURFPlugin_BLSURF_i::GetImpl" );
+ return ( ::BLSURFPlugin_BLSURF* )myBaseImpl;
+}
--- /dev/null
+// BLSURFPlugin : idl implementation
+//
+// Copyright (C) 2006 OPEN CASCADE, CEA/DEN, EDF R&D
+//
+// 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 : BLSURFPlugin_BLSURF_2D_i.hxx
+// Authors : Francis KLOSS (OCC) & Patrick LAUG (INRIA)
+// Module : BLSURFPlugin
+
+#ifndef _BLSURFPlugin_BLSURF_I_HXX_
+#define _BLSURFPlugin_BLSURF_I_HXX_
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(BLSURFPlugin_Algorithm)
+
+#include "SMESH_2D_Algo_i.hxx"
+#include "BLSURFPlugin_BLSURF.hxx"
+
+// ======================================================
+// BLSUF 2d algorithm
+// ======================================================
+class BLSURFPlugin_BLSURF_i:
+ public virtual POA_BLSURFPlugin::BLSURFPlugin_BLSURF,
+ public virtual SMESH_2D_Algo_i
+{
+public:
+ // Constructor
+ BLSURFPlugin_BLSURF_i( PortableServer::POA_ptr thePOA,
+ int theStudyId,
+ ::SMESH_Gen* theGenImpl );
+ // Destructor
+ virtual ~BLSURFPlugin_BLSURF_i();
+
+ // Get implementation
+ ::BLSURFPlugin_BLSURF* GetImpl();
+};
+
+#endif
--- /dev/null
+// BLSURFPlugin : C++ implementation
+//
+// Copyright (C) 2006 OPEN CASCADE, CEA/DEN, EDF R&D
+//
+// 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 : BLSURFPlugin_Hypothesis.cxx
+// Authors : Francis KLOSS (OCC) & Patrick LAUG (INRIA) & Lioka RAZAFINDRAZAKA (CEA)
+// Date : 28/03/2006
+// Project : SALOME
+//=============================================================================
+
+using namespace std;
+#include <BLSURFPlugin_Hypothesis.hxx>
+#include <utilities.h>
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+BLSURFPlugin_Hypothesis::BLSURFPlugin_Hypothesis (int hypId, int studyId,
+ SMESH_Gen * gen)
+ : SMESH_Hypothesis(hypId, studyId, gen),
+ _physicalMesh(GetDefaultPhysicalMesh()),
+ _phySize(GetDefaultPhySize()),
+ _geometricMesh(GetDefaultGeometricMesh()),
+ _angleMeshS(GetDefaultAngleMeshS()),
+ _gradation(GetDefaultGradation()),
+ _quadAllowed(GetDefaultQuadAllowed()),
+ _decimesh(GetDefaultDecimesh())
+{
+ _name = "BLSURF_Parameters";
+ _param_algo_dim = 2;
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+void BLSURFPlugin_Hypothesis::SetPhysicalMesh(PhysicalMesh thePhysicalMesh)
+{
+ if (thePhysicalMesh != _physicalMesh) {
+ _physicalMesh = thePhysicalMesh;
+ switch( _physicalMesh ) {
+ case DefaultSize:
+ default:
+ _phySize = GetDefaultPhySize();
+ break;
+ }
+ NotifySubMeshesHypothesisModification();
+ }
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+void BLSURFPlugin_Hypothesis::SetPhySize(double theVal)
+{
+ if (theVal != _phySize) {
+ _phySize = theVal;
+ NotifySubMeshesHypothesisModification();
+ }
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+void BLSURFPlugin_Hypothesis::SetGeometricMesh(GeometricMesh theGeometricMesh)
+{
+ if (theGeometricMesh != _geometricMesh) {
+ _geometricMesh = theGeometricMesh;
+ switch( _geometricMesh ) {
+ case DefaultGeom:
+ default:
+ _angleMeshS = GetDefaultAngleMeshS();
+ _gradation = GetDefaultGradation();
+ break;
+ }
+ NotifySubMeshesHypothesisModification();
+ }
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+void BLSURFPlugin_Hypothesis::SetAngleMeshS(double theVal)
+{
+ if (theVal != _angleMeshS) {
+ _angleMeshS = theVal;
+ NotifySubMeshesHypothesisModification();
+ }
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+void BLSURFPlugin_Hypothesis::SetGradation(double theVal)
+{
+ if (theVal != _gradation) {
+ _gradation = theVal;
+ NotifySubMeshesHypothesisModification();
+ }
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+void BLSURFPlugin_Hypothesis::SetQuadAllowed(bool theVal)
+{
+ if (theVal != _quadAllowed) {
+ _quadAllowed = theVal;
+ NotifySubMeshesHypothesisModification();
+ }
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+void BLSURFPlugin_Hypothesis::SetDecimesh(bool theVal)
+{
+ if (theVal != _decimesh) {
+ _decimesh = theVal;
+ NotifySubMeshesHypothesisModification();
+ }
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+ostream & BLSURFPlugin_Hypothesis::SaveTo(ostream & save)
+{
+// save << _maxSize << " " << _fineness;
+
+// if (_fineness == UserDefined)
+// save << " " << _growthRate << " " << _nbSegPerEdge << " " << _nbSegPerRadius;
+
+// save << " " << (int)_secondOrder << " " << (int)_optimize;
+
+ return save;
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+istream & BLSURFPlugin_Hypothesis::LoadFrom(istream & load)
+{
+// bool isOK = true;
+// int is;
+// double val;
+
+// isOK = (load >> val);
+// if (isOK)
+// _maxSize = val;
+// else
+// load.clear(ios::badbit | load.rdstate());
+
+// isOK = (load >> is);
+// if (isOK)
+// SetFineness((Fineness) is);
+// else
+// load.clear(ios::badbit | load.rdstate());
+
+// if (_fineness == UserDefined)
+// {
+// isOK = (load >> val);
+// if (isOK)
+// _growthRate = val;
+// else
+// load.clear(ios::badbit | load.rdstate());
+
+// isOK = (load >> val);
+// if (isOK)
+// _nbSegPerEdge = val;
+// else
+// load.clear(ios::badbit | load.rdstate());
+
+// isOK = (load >> val);
+// if (isOK)
+// _nbSegPerRadius = val;
+// else
+// load.clear(ios::badbit | load.rdstate());
+// }
+
+// isOK = (load >> is);
+// if (isOK)
+// _secondOrder = (bool) is;
+// else
+// load.clear(ios::badbit | load.rdstate());
+
+// isOK = (load >> is);
+// if (isOK)
+// _optimize = (bool) is;
+// else
+// load.clear(ios::badbit | load.rdstate());
+ return load;
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+ostream & operator <<(ostream & save, BLSURFPlugin_Hypothesis & hyp)
+{
+ return hyp.SaveTo( save );
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+istream & operator >>(istream & load, BLSURFPlugin_Hypothesis & hyp)
+{
+ return hyp.LoadFrom( load );
+}
+
+
+//================================================================================
+/*!
+ * \brief Does nothing
+ * \param theMesh - the built mesh
+ * \param theShape - the geometry of interest
+ * \retval bool - always false
+ */
+//================================================================================
+bool BLSURFPlugin_Hypothesis::SetParametersByMesh(const SMESH_Mesh* theMesh,
+ const TopoDS_Shape& theShape)
+{
+ return false;
+}
+
+//=============================================================================
+BLSURFPlugin_Hypothesis::PhysicalMesh BLSURFPlugin_Hypothesis::GetDefaultPhysicalMesh()
+{
+ return PhysicalUserDefined;
+}
+
+//=============================================================================
+double BLSURFPlugin_Hypothesis::GetDefaultPhySize()
+{
+ return 10;
+}
+
+//=============================================================================
+BLSURFPlugin_Hypothesis::GeometricMesh BLSURFPlugin_Hypothesis::GetDefaultGeometricMesh()
+{
+ return DefaultGeom;
+}
+
+//=============================================================================
+double BLSURFPlugin_Hypothesis::GetDefaultAngleMeshS()
+{
+ return 8;
+}
+
+//=============================================================================
+double BLSURFPlugin_Hypothesis::GetDefaultGradation()
+{
+ return 1.1;
+}
+
+//=============================================================================
+bool BLSURFPlugin_Hypothesis::GetDefaultQuadAllowed()
+{
+ return false;
+}
+
+//=============================================================================
+bool BLSURFPlugin_Hypothesis::GetDefaultDecimesh()
+{
+ return false;
+}
--- /dev/null
+// BLSURFPlugin : C++ implementation
+//
+// Copyright (C) 2006 OPEN CASCADE, CEA/DEN, EDF R&D
+//
+// 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 : BLSURFPlugin_Hypothesis.hxx
+// Authors : Francis KLOSS (OCC) & Patrick LAUG (INRIA) & Lioka RAZAFINDRAZAKA (CEA)
+// Date : 27/03/2006
+// Project : SALOME
+// $Header$
+//=============================================================================
+
+#ifndef _BLSURFPlugin_Hypothesis_HXX_
+#define _BLSURFPlugin_Hypothesis_HXX_
+
+#include "SMESH_Hypothesis.hxx"
+#include "Utils_SALOME_Exception.hxx"
+
+// Parameters for work of BLSURF
+
+class BLSURFPlugin_Hypothesis: public SMESH_Hypothesis
+{
+public:
+ BLSURFPlugin_Hypothesis(int hypId, int studyId, SMESH_Gen * gen);
+
+ enum PhysicalMesh {
+ DefaultSize,
+ PhysicalUserDefined
+ };
+
+ enum GeometricMesh {
+ DefaultGeom,
+ UserDefined
+ };
+
+ void SetPhysicalMesh(PhysicalMesh thePhysicalMesh);
+ PhysicalMesh GetPhysicalMesh() const { return _physicalMesh; }
+
+ void SetPhySize(double thePhySize);
+ double GetPhySize() const { return _phySize; }
+
+ void SetGeometricMesh(GeometricMesh theGeometricMesh);
+ GeometricMesh GetGeometricMesh() const { return _geometricMesh; }
+
+ void SetAngleMeshS(double theAngle);
+ double GetAngleMeshS() const { return _angleMeshS; }
+
+ void SetGradation(double theGradation);
+ double GetGradation() const { return _gradation; }
+
+ void SetQuadAllowed(bool theVal);
+ bool GetQuadAllowed() const { return _quadAllowed; }
+
+ void SetDecimesh(bool theVal);
+ bool GetDecimesh() const { return _decimesh; }
+
+ static PhysicalMesh GetDefaultPhysicalMesh();
+ static double GetDefaultPhySize();
+ static GeometricMesh GetDefaultGeometricMesh();
+ static double GetDefaultAngleMeshS();
+ static double GetDefaultGradation();
+ static bool GetDefaultQuadAllowed();
+ static bool GetDefaultDecimesh();
+
+ // Persistence
+ virtual ostream & SaveTo(ostream & save);
+ virtual istream & LoadFrom(istream & load);
+ friend ostream & operator <<(ostream & save, BLSURFPlugin_Hypothesis & hyp);
+ friend istream & operator >>(istream & load, BLSURFPlugin_Hypothesis & hyp);
+
+ /*!
+ * \brief Does nothing
+ * \param theMesh - the built mesh
+ * \param theShape - the geometry of interest
+ * \retval bool - always false
+ */
+ virtual bool SetParametersByMesh(const SMESH_Mesh* theMesh, const TopoDS_Shape& theShape);
+
+private:
+ PhysicalMesh _physicalMesh;
+ double _phySize;
+ GeometricMesh _geometricMesh;
+ double _angleMeshS;
+ double _gradation;
+ bool _quadAllowed;
+ bool _decimesh;
+};
+
+#endif
--- /dev/null
+// BLSURFPlugin : C++ implementation
+//
+// Copyright (C) 2006 OPEN CASCADE, CEA/DEN, EDF R&D
+//
+// 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 : BLSURFPlugin_Hypothesis_i.cxx
+// Authors : Francis KLOSS (OCC) & Patrick LAUG (INRIA) & Lioka RAZAFINDRAZAKA (CEA)
+// Date : 03/04/2006
+// Project : SALOME
+//=============================================================================
+using namespace std;
+
+#include "BLSURFPlugin_Hypothesis_i.hxx"
+#include "SMESH_Gen.hxx"
+#include "SMESH_PythonDump.hxx"
+
+#include "Utils_CorbaException.hxx"
+#include "utilities.h"
+
+//=============================================================================
+/*!
+ * BLSURFPlugin_Hypothesis_i::BLSURFPlugin_Hypothesis_i
+ *
+ * Constructor
+ */
+//=============================================================================
+BLSURFPlugin_Hypothesis_i::
+BLSURFPlugin_Hypothesis_i (PortableServer::POA_ptr thePOA,
+ int theStudyId,
+ ::SMESH_Gen* theGenImpl)
+ : SALOME::GenericObj_i( thePOA ),
+ SMESH_Hypothesis_i( thePOA )
+{
+ MESSAGE( "BLSURFPlugin_Hypothesis_i::BLSURFPlugin_Hypothesis_i" );
+ myBaseImpl = new ::BLSURFPlugin_Hypothesis (theGenImpl->GetANewId(),
+ theStudyId,
+ theGenImpl);
+}
+
+//=============================================================================
+/*!
+ * BLSURFPlugin_Hypothesis_i::~BLSURFPlugin_Hypothesis_i
+ *
+ * Destructor
+ */
+//=============================================================================
+BLSURFPlugin_Hypothesis_i::~BLSURFPlugin_Hypothesis_i()
+{
+ MESSAGE( "BLSURFPlugin_Hypothesis_i::~BLSURFPlugin_Hypothesis_i" );
+}
+
+//=============================================================================
+/*!
+ * BLSURFPlugin_Hypothesis_i::SetPhysicalMesh
+ *
+ * Set PhysicalMesh
+ */
+
+//=============================================================================
+void BLSURFPlugin_Hypothesis_i::SetPhysicalMesh (CORBA::Long theValue)
+{
+ // MESSAGE("BLSURFPlugin_Hypothesis_i::SetPhysicalMesh");
+ ASSERT(myBaseImpl);
+ this->GetImpl()->SetPhysicalMesh((::BLSURFPlugin_Hypothesis::PhysicalMesh)theValue);
+ SMESH::TPythonDump() << _this() << ".SetPhysicalMesh( " << theValue << " )";
+}
+
+//=============================================================================
+/*!
+ * BLSURFPlugin_Hypothesis_i::GetPhysicalMesh
+ *
+ * Get PhysicalMesh
+ */
+//=============================================================================
+CORBA::Long BLSURFPlugin_Hypothesis_i::GetPhysicalMesh()
+{
+ // MESSAGE("BLSURFPlugin_Hypothesis_i::GetPhysicalMesh");
+ ASSERT(myBaseImpl);
+ return this->GetImpl()->GetPhysicalMesh();
+}
+
+//=============================================================================
+/*!
+ * BLSURFPlugin_Hypothesis_i::SetPhySize
+ *
+ * Set PhySize
+ */
+//=============================================================================
+void BLSURFPlugin_Hypothesis_i::SetPhySize (CORBA::Double theValue)
+{
+ // MESSAGE("BLSURFPlugin_Hypothesis_i::SetPhySize");
+ ASSERT(myBaseImpl);
+ this->GetImpl()->SetPhySize(theValue);
+ SMESH::TPythonDump() << _this() << ".SetPhySize( " << theValue << " )";
+}
+
+//=============================================================================
+/*!
+ * BLSURFPlugin_Hypothesis_i::GetPhySize
+ *
+ * Get PhySize
+ */
+//=============================================================================
+CORBA::Double BLSURFPlugin_Hypothesis_i::GetPhySize()
+{
+ // MESSAGE("BLSURFPlugin_Hypothesis_i::GetPhySize");
+ ASSERT(myBaseImpl);
+ return this->GetImpl()->GetPhySize();
+}
+
+//=============================================================================
+/*!
+ * BLSURFPlugin_Hypothesis_i::SetGeometricMesh
+ *
+ * Set GeometricMesh
+ */
+
+//=============================================================================
+void BLSURFPlugin_Hypothesis_i::SetGeometricMesh (CORBA::Long theValue)
+{
+ // MESSAGE("BLSURFPlugin_Hypothesis_i::SetGeometricMesh");
+ ASSERT(myBaseImpl);
+ this->GetImpl()->SetGeometricMesh((::BLSURFPlugin_Hypothesis::GeometricMesh)theValue);
+ SMESH::TPythonDump() << _this() << ".SetGeometricMesh( " << theValue << " )";
+}
+
+//=============================================================================
+/*!
+ * BLSURFPlugin_Hypothesis_i::GetGeometricMesh
+ *
+ * Get GeometricMesh
+ */
+//=============================================================================
+CORBA::Long BLSURFPlugin_Hypothesis_i::GetGeometricMesh()
+{
+ // MESSAGE("BLSURFPlugin_Hypothesis_i::GetGeometricMesh");
+ ASSERT(myBaseImpl);
+ return this->GetImpl()->GetGeometricMesh();
+}
+
+//=============================================================================
+/*!
+ * BLSURFPlugin_Hypothesis_i::SetAngleMeshS
+ *
+ * Set AngleMeshS
+ */
+//=============================================================================
+void BLSURFPlugin_Hypothesis_i::SetAngleMeshS (CORBA::Double theValue)
+{
+ // MESSAGE("BLSURFPlugin_Hypothesis_i::SetAngleMeshS");
+ ASSERT(myBaseImpl);
+ this->GetImpl()->SetAngleMeshS(theValue);
+ SMESH::TPythonDump() << _this() << ".SetAngleMeshS( " << theValue << " )";
+}
+
+//=============================================================================
+/*!
+ * BLSURFPlugin_Hypothesis_i::GetAngleMeshS
+ *
+ * Get AngleMeshS
+ */
+//=============================================================================
+CORBA::Double BLSURFPlugin_Hypothesis_i::GetAngleMeshS()
+{
+ // MESSAGE("BLSURFPlugin_Hypothesis_i::GetAngleMeshS");
+ ASSERT(myBaseImpl);
+ return this->GetImpl()->GetAngleMeshS();
+}
+
+//=============================================================================
+/*!
+ * BLSURFPlugin_Hypothesis_i::SetGradation
+ *
+ * Set Gradation
+ */
+//=============================================================================
+void BLSURFPlugin_Hypothesis_i::SetGradation (CORBA::Double theValue)
+{
+ // MESSAGE("BLSURFPlugin_Hypothesis_i::SetGradation");
+ ASSERT(myBaseImpl);
+ this->GetImpl()->SetGradation(theValue);
+ SMESH::TPythonDump() << _this() << ".SetGradation( " << theValue << " )";
+}
+
+//=============================================================================
+/*!
+ * BLSURFPlugin_Hypothesis_i::GetGradation
+ *
+ * Get Gradation
+ */
+//=============================================================================
+CORBA::Double BLSURFPlugin_Hypothesis_i::GetGradation()
+{
+ // MESSAGE("BLSURFPlugin_Hypothesis_i::GetGradation");
+ ASSERT(myBaseImpl);
+ return this->GetImpl()->GetGradation();
+}
+
+//=============================================================================
+/*!
+ * BLSURFPlugin_Hypothesis_i::SetQuadAllowed
+ *
+ * Set true or false
+ */
+//=============================================================================
+void BLSURFPlugin_Hypothesis_i::SetQuadAllowed (CORBA::Boolean theValue)
+{
+ // MESSAGE("BLSURFPlugin_Hypothesis_i::SetQuadAllowed");
+ ASSERT(myBaseImpl);
+ this->GetImpl()->SetQuadAllowed(theValue);
+ SMESH::TPythonDump() << _this() << ".SetQuadAllowed( " << theValue << " )";
+}
+
+//=============================================================================
+/*!
+ * BLSURFPlugin_Hypothesis_i::GetQuadAllowed
+ *
+ * Get true or false
+ */
+//=============================================================================
+CORBA::Boolean BLSURFPlugin_Hypothesis_i::GetQuadAllowed()
+{
+ // MESSAGE("BLSURFPlugin_Hypothesis_i::GetQuadAllowed");
+ ASSERT(myBaseImpl);
+ return this->GetImpl()->GetQuadAllowed();
+}
+
+//=============================================================================
+/*!
+ * BLSURFPlugin_Hypothesis_i::SetDecimesh
+ *
+ * Set true or false
+ */
+//=============================================================================
+void BLSURFPlugin_Hypothesis_i::SetDecimesh (CORBA::Boolean theValue)
+{
+ // MESSAGE("BLSURFPlugin_Hypothesis_i::SetDecimesh");
+ ASSERT(myBaseImpl);
+ this->GetImpl()->SetDecimesh(theValue);
+ SMESH::TPythonDump() << _this() << ".SetDecimesh( " << theValue << " )";
+}
+
+//=============================================================================
+/*!
+ * BLSURFPlugin_Hypothesis_i::GetDecimesh
+ *
+ * Get true or false
+ */
+//=============================================================================
+CORBA::Boolean BLSURFPlugin_Hypothesis_i::GetDecimesh()
+{
+ // MESSAGE("BLSURFPlugin_Hypothesis_i::GetDecimesh");
+ ASSERT(myBaseImpl);
+ return this->GetImpl()->GetDecimesh();
+}
+
+//=============================================================================
+/*!
+ * BLSURFPlugin_Hypothesis_i::GetImpl
+ *
+ * Get implementation
+ */
+//=============================================================================
+::BLSURFPlugin_Hypothesis* BLSURFPlugin_Hypothesis_i::GetImpl()
+{
+ // MESSAGE("BLSURFPlugin_Hypothesis_i::GetImpl");
+ return (::BLSURFPlugin_Hypothesis*)myBaseImpl;
+}
+
+//================================================================================
+/*!
+ * \brief Verify whether hypothesis supports given entity type
+ * \param type - dimension (see SMESH::Dimension enumeration)
+ * \retval CORBA::Boolean - TRUE if dimension is supported, FALSE otherwise
+ *
+ * Verify whether hypothesis supports given entity type (see SMESH::Dimension enumeration)
+ */
+//================================================================================
+CORBA::Boolean BLSURFPlugin_Hypothesis_i::IsDimSupported( SMESH::Dimension type )
+{
+ return type == SMESH::DIM_2D;
+}
--- /dev/null
+// BLSURFPlugin : C++ implementation
+//
+// Copyright (C) 2006 OPEN CASCADE, CEA/DEN, EDF R&D
+//
+// 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 : BLSURFPlugin_Hypothesis_i.hxx
+// Authors : Francis KLOSS (OCC) & Patrick LAUG (INRIA) & Lioka RAZAFINDRAZAKA (CEA)
+// Date : 03/04/2006
+// Project : SALOME
+//=============================================================================
+
+#ifndef _BLSURFPlugin_Hypothesis_i_HXX_
+#define _BLSURFPlugin_Hypothesis_i_HXX_
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(BLSURFPlugin_Algorithm)
+
+#include "SMESH_Hypothesis_i.hxx"
+#include "BLSURFPlugin_Hypothesis.hxx"
+
+class SMESH_Gen;
+
+// BLSURFPlugin parameters hypothesis
+
+class BLSURFPlugin_Hypothesis_i:
+ public virtual POA_BLSURFPlugin::BLSURFPlugin_Hypothesis,
+ public virtual SMESH_Hypothesis_i
+{
+ public:
+ // Constructor
+ BLSURFPlugin_Hypothesis_i (PortableServer::POA_ptr thePOA,
+ int theStudyId,
+ ::SMESH_Gen* theGenImpl);
+ // Destructor
+ virtual ~BLSURFPlugin_Hypothesis_i();
+
+ void SetPhysicalMesh(CORBA::Long theValue);
+ CORBA::Long GetPhysicalMesh();
+
+ void SetPhySize(CORBA::Double theValue);
+ CORBA::Double GetPhySize();
+
+ void SetGeometricMesh(CORBA::Long theValue);
+ CORBA::Long GetGeometricMesh();
+
+ void SetAngleMeshS(CORBA::Double theValue);
+ CORBA::Double GetAngleMeshS();
+
+ void SetGradation(CORBA::Double theValue);
+ CORBA::Double GetGradation();
+
+ void SetQuadAllowed(CORBA::Boolean theValue);
+ CORBA::Boolean GetQuadAllowed();
+
+ void SetDecimesh(CORBA::Boolean theValue);
+ CORBA::Boolean GetDecimesh();
+
+ // Get implementation
+ ::BLSURFPlugin_Hypothesis* GetImpl();
+
+ // Verify whether hypothesis supports given entity type
+ CORBA::Boolean IsDimSupported( SMESH::Dimension type );
+};
+
+#endif
--- /dev/null
+// SMESH BLSURFPlugin : implementaion of SMESH idl descriptions
+//
+// 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 : BLSURFPlugin_i.cxx
+// Authors : Francis KLOSS (OCC) & Patrick LAUG (INRIA)
+// Module : SMESH
+
+using namespace std;
+#include "utilities.h"
+
+#include "BLSURFPlugin_BLSURF_i.hxx"
+#include "BLSURFPlugin_Hypothesis_i.hxx"
+
+template <class T> class BLSURFPlugin_Creator_i:public HypothesisCreator_i<T>
+{
+ // as we have 'module BLSURFPlugin' in BLSURFPlugin_Algorithm.idl
+ virtual std::string GetModuleName() { return "BLSURFPlugin"; }
+};
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+
+extern "C"
+{
+ GenericHypothesisCreator_i* GetHypothesisCreator (const char* aHypName)
+ {
+ MESSAGE("GetHypothesisCreator " << aHypName);
+
+ GenericHypothesisCreator_i* aCreator = 0;
+
+ // Algorithms
+ if (strcmp(aHypName, "BLSURF") == 0)
+ aCreator = new BLSURFPlugin_Creator_i<BLSURFPlugin_BLSURF_i>;
+ // Hypotheses
+ else if (strcmp(aHypName, "BLSURF_Parameters") == 0)
+ aCreator = new BLSURFPlugin_Creator_i<BLSURFPlugin_Hypothesis_i>;
+ else ;
+
+ return aCreator;
+ }
+}
--- /dev/null
+# Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS, L3S, LJLL, MENSI
+#
+# 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/
+#
+# -* Makefile *-
+#
+# Author : Edward AGAPOV (OCC)
+# Module : BLSURFPLUGIN
+# Date : 10/01/2004
+#
+#
+
+# source path
+top_srcdir=@top_srcdir@
+top_builddir=../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_builddir)/idl:${KERNEL_ROOT_DIR}/idl/salome:${GUI_ROOT_DIR}/idl/salome:${GEOM_ROOT_DIR}/idl/salome:${SMESH_ROOT_DIR}/idl/salome:${MED_ROOT_DIR}/idl/salome
+
+@COMMENCE@
+
+LIB_SRC = \
+ BLSURFPlugin_BLSURF.cxx \
+ BLSURFPlugin_BLSURF_i.cxx \
+ BLSURFPlugin_Hypothesis.cxx \
+ BLSURFPlugin_Hypothesis_i.cxx \
+ BLSURFPlugin_i.cxx \
+ cad_occ.cxx
+
+LIB_SERVER_IDL = BLSURFPlugin_Algorithm.idl
+
+LIB_CLIENT_IDL = \
+ SALOME_Component.idl \
+ SALOME_Comm.idl \
+ GEOM_Gen.idl \
+ MED.idl
+
+# Libraries targets
+LIB = libBLSURFEngine.la
+
+BLSURF_INCLUDES = @BLSURF_INCLUDES@
+BLSURF_LIBS = "@BLSURF_LIBS@"
+CPPFLAGS += $(BLSURF_INCLUDES)
+CXXFLAGS += $(BLSURF_INCLUDES)
+LDFLAGS += $(BLSURF_LIBS)
+
+@CONCLUDE@
--- /dev/null
+// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org\r
+//\r
+//\r
+// File : BLSURFlugin_Mesher.cxx\r
+// Authors : Francis KLOSS (OCC) & Patrick LAUG (INRIA)\r
+// Date : 31/03/2006\r
+// Project : SALOME\r
+//=============================================================================\r
+// using namespace std;\r
+\r
+// #include "BLSURFPlugin_Mesher.hxx"\r
+// #include "BLSURFPlugin_Hypothesis.hxx"\r
+\r
+// #include <SMESHDS_Mesh.hxx>\r
+// #include <SMDS_MeshElement.hxx>\r
+// #include <SMDS_MeshNode.hxx>\r
+// #include <utilities.h>\r
+\r
+// #include <vector>\r
+\r
+// #include <BRep_Tool.hxx>\r
+// #include <TopExp.hxx>\r
+// #include <TopExp_Explorer.hxx>\r
+// #include <TopoDS.hxx>\r
+// #include <NCollection_Map.hxx>\r
+\r
+#include <iostream>\r
+#include <fstream>\r
+\r
+#include <Occ_utility.h>\r
+#include <TDataStd_Name.hxx>\r
+#include <TPrsStd_AISPresentation.hxx>\r
+#include <TNaming_NamedShape.hxx>\r
+#include <TopExp_Explorer.hxx>\r
+#include <AIS_InteractiveObject.hxx>\r
+#include <ShapeFix_Edge.hxx>\r
+#include <TopoDS.hxx>\r
+#include <TopLoc_Location.hxx>\r
+#include <Geom_Surface.hxx>\r
+#include <Handle_Geom_Surface.hxx>\r
+#include <BRep_Tool.hxx>\r
+#include <Geom_ElementarySurface.hxx>\r
+#include <Geom_BoundedSurface.hxx>\r
+#include <Geom_OffsetSurface.hxx>\r
+#include <Geom_SweptSurface.hxx>\r
+#include <Geom_RectangularTrimmedSurface.hxx>\r
+#include <Geom_BezierSurface.hxx>\r
+#include <GeomAPI_ProjectPointOnCurve.hxx>\r
+#include <GeomAPI_ProjectPointOnSurf.hxx>\r
+#include <Geom_ConicalSurface.hxx>\r
+#include <Geom_CylindricalSurface.hxx>\r
+#include <Geom_Plane.hxx>\r
+#include <Geom_SphericalSurface.hxx>\r
+#include <Geom_ToroidalSurface.hxx>\r
+#include <Geom_SurfaceOfLinearExtrusion.hxx>\r
+#include <Geom_SurfaceOfRevolution.hxx>\r
+#include <ShapeUpgrade_ClosedFaceDivide.hxx>\r
+#include <ShapeUpgrade_ShapeDivide.hxx>\r
+#include <TNaming_Builder.hxx>\r
+#include <TDataStd_Integer.hxx>\r
+#include <cad_occ.h>\r
+\r
+#include <GProp_GProps.hxx>\r
+#include <BRepGProp.hxx>\r
+#include <BRepAlgoAPI_Common.hxx>\r
+\r
+#include <BRep_ListIteratorOfListOfCurveRepresentation.hxx>\r
+#include <BRep_TEdge.hxx>\r
+#include <Handle_BRep_TEdge.hxx>\r
+#include <BRep_GCurve.hxx>\r
+#include <Handle_BRep_GCurve.hxx>\r
+#include <ShapeFix_Edge.hxx>\r
+#include <BRep_Tool.hxx>\r
+#include <TopoDS_Vertex.hxx>\r
+#include <TopoDS_Wire.hxx>\r
+#include <TopTools_IndexedMapOfShape.hxx>\r
+\r
+#define TSMO blw->bls_glo.tsmo\r
+\r
+bool BL_SURF::init(const TopoDS_Shape& _shape) {\r
+ cout << "BLSURF_init: begin" << endl;\r
+\r
+ if (_shape.ShapeType() == TopAbs_COMPOUND) {\r
+ cout << "BLSURF_init: the shape is a COMPOUND" << endl;\r
+ } else {\r
+ cout << "BLSURF_init: the shape is UNKNOWN" << endl;\r
+ }\r
+\r
+ cout << "BLSURF_init: exploring faces and edges " << endl;\r
+ int i=0;\r
+ for (TopExp_Explorer expf(_shape, TopAbs_FACE); expf.More(); expf.Next()) {\r
+ const TopoDS_Shape& face = expf.Current();\r
+ i++;\r
+ int j=0;\r
+ for (TopExp_Explorer expe(face, TopAbs_EDGE); expe.More(); expe.Next()) {\r
+ // const TopoDS_Shape& edge = expe.Current(); -> warning: unused variable 'edge'\r
+ j++;\r
+ }\r
+ // cout << "BLSURF_init: face " << i << " has " << j << " edges" << endl;\r
+ }\r
+ cout << "BLSURF_init: total number of faces = " << i << endl;\r
+\r
+ TopoDS_Shape the_shape;\r
+ the_shape = _shape;\r
+\r
+ // return(true);\r
+ return(run(the_shape));\r
+}\r
+\r
+// #define TC2D blw.bls_glo.TC2dNew\r
+\r
+void BL_SURF::get_blw(blw_*& blw_param) {\r
+ blw_param = &blw;\r
+}\r
+\r
+bool BL_SURF::end() {\r
+ bls_free(&blw);\r
+ if (blw.error[0]) {\r
+ return(false);\r
+ } else {\r
+ return(true);\r
+ }\r
+}\r
+\r
+double norm(vector<double> v)\r
+{\r
+ double res=0.;\r
+ for (int i=0;i<v.size();i++) res+=POW2(v[i]);\r
+ return(sqrt(res));\r
+}\r
+\r
+vector<double> operator-(vector<double> v1, vector<double> v2)\r
+{\r
+ assert(v1.size()==v2.size());\r
+ vector<double> res(v1.size(),0.);\r
+ for (int i=0;i<v1.size();i++) res[i]=v1[i]-v2[i];\r
+ return(res);\r
+}\r
+\r
+bool BL_SURF::run(TopoDS_Shape &s)\r
+{\r
+ the_object=s;\r
+ return(run());\r
+}\r
+\r
+bool BL_SURF::run()\r
+{\r
+ active_blsurf = this;\r
+ build_surfaces(the_object);\r
+ int ret = bls_main(&blw);\r
+ active_blsurf = NULL;\r
+ if (ret == 0) {\r
+ return(true);\r
+ } else {\r
+ return(false);\r
+ }\r
+}\r
+\r
+void BL_SURF::build_surfaces(TopoDS_Shape &shape)\r
+{\r
+ int i, iface;\r
+\r
+//\r
+// Explore the whole shape to extract surfaces, and build BL objects\r
+//\r
+\r
+ for (i=0;i<surfaces.size();i++) delete(surfaces[i]);\r
+ surfaces.resize(0);\r
+\r
+ TopTools_IndexedMapOfShape fmap;\r
+ fmap.Clear();\r
+ iface = 0;\r
+ for (TopExp_Explorer ex_face(shape,TopAbs_FACE);ex_face.More();ex_face.Next()) {\r
+ TopoDS_Face f=TopoDS::Face(ex_face.Current());\r
+ if (fmap.FindIndex(f) <= 0) {\r
+ fmap.Add(f);\r
+ iface++;\r
+ BL_SURFACE *bl_surface=new BL_SURFACE(f);\r
+ if(bl_surface->build()) {\r
+ surfaces.push_back(bl_surface);\r
+ } else {\r
+ cout<<"Weird surface detected !"<<endl;\r
+ delete(bl_surface);\r
+ }\r
+ }\r
+ }\r
+}\r
+\r
+BL_SURFACE::BL_SURFACE(TopoDS_Face &f) \r
+{ \r
+ sizer=NULL;\r
+ topology=f;\r
+ geometry=BRep_Tool::Surface(f);\r
+}\r
+\r
+BL_SURFACE::~BL_SURFACE() \r
+{ \r
+ for (int i=0;i<edges.size();i++) delete(edges[i]);\r
+}\r
+\r
+bool BL_SURFACE::build()\r
+{\r
+//\r
+// Explore the surface to extract all edges\r
+//\r
+ for (TopExp_Explorer ex_face(topology,TopAbs_EDGE);ex_face.More();ex_face.Next()) {\r
+ TopoDS_Edge e=TopoDS::Edge(ex_face.Current());\r
+ if(!add(e)) return(false);\r
+ }\r
+ return(true);\r
+}\r
+\r
+void BL_SURFACE::add(double u, double v)\r
+{\r
+ points.push_back(new BL_POINT(this,u,v));\r
+}\r
+\r
+bool BL_SURFACE::add(TopoDS_Edge &edge)\r
+{\r
+//\r
+// add an edge ( make some checks, and build the associated BL_EDGE object )\r
+//\r
+ Handle(Geom2d_Curve) pargeo;\r
+ double tmin,tmax;\r
+\r
+ pargeo=BRep_Tool::CurveOnSurface(edge,topology,tmin,tmax);\r
+\r
+ BL_EDGE *bl_edge=new BL_EDGE(edge,this,pargeo,tmin,tmax);\r
+ edges.push_back(bl_edge);\r
+ return(true);\r
+}\r
+\r
+BL_EDGE::BL_EDGE(TopoDS_Edge &ed,BL_SURFACE *b, Handle(Geom2d_Curve) pargeo, double tmin, double tmax)\r
+{\r
+ sizer=NULL;\r
+ refc=-1;\r
+ typc=1;\r
+ topology=ed; boss=b;\r
+ parametric_geometry=pargeo;\r
+ parametric_min=tmin; parametric_max=tmax;\r
+}\r
+\r
+BL_EDGE::~BL_EDGE() { }\r
+\r
+void BL_EDGE::method_curv0(const double &t, double *C)\r
+{\r
+ gp_Pnt2d P;\r
+\r
+ P=parametric_geometry->Value(t);\r
+ C[0]=P.X(); C[1]=P.Y();\r
+}\r
+\r
+void BL_EDGE::method_curv1(const double &t, double *C)\r
+{\r
+ gp_Vec2d V1;\r
+\r
+ V1=parametric_geometry->DN(t,1);\r
+ C[0]=V1.X(); C[1]=V1.Y();\r
+}\r
+\r
+void BL_EDGE::method_curv2(const double &t, double *C)\r
+{\r
+ gp_Vec2d V2;\r
+\r
+ V2=parametric_geometry->DN(t,2);\r
+ C[0]=V2.X(); C[1]=V2.Y();\r
+}\r
+\r
+void BL_SURFACE::method_surf0(const double *UV, double *S)\r
+{\r
+ gp_Pnt P;\r
+\r
+ P=geometry->Value(UV[0],UV[1]); // S.D0(U,V,P);\r
+ S[0]=P.X(); S[1]=P.Y(); S[2]=P.Z();\r
+}\r
+\r
+void BL_SURFACE::method_surf1(const double *UV, double *Su, double *Sv)\r
+{\r
+ gp_Pnt P;\r
+ gp_Vec D1U,D1V;\r
+\r
+ geometry->D1(UV[0],UV[1],P,D1U,D1V);\r
+ Su[0]=D1U.X(); Su[1]=D1U.Y(); Su[2]=D1U.Z();\r
+ Sv[0]=D1V.X(); Sv[1]=D1V.Y(); Sv[2]=D1V.Z();\r
+} \r
+\r
+void BL_SURFACE::method_surf2(const double *UV, double *Suu, double *Suv, double *Svv)\r
+{\r
+ gp_Pnt P;\r
+ gp_Vec D1U,D1V;\r
+ gp_Vec D2U,D2V,D2UV;\r
+\r
+ geometry->D2(UV[0],UV[1],P,D1U,D1V,D2U,D2V,D2UV);\r
+ Suu[0]=D2U.X(); Suu[1]=D2U.Y(); Suu[2]=D2U.Z();\r
+ Suv[0]=D2UV.X(); Suv[1]=D2UV.Y(); Suv[2]=D2UV.Z();\r
+ Svv[0]=D2V.X(); Svv[1]=D2V.Y(); Svv[2]=D2V.Z();\r
+}\r
+\r
+static vector<BL_SURFACE*> *current_list_of_faces=NULL;\r
+BL_SURF* BL_SURF::active_blsurf=NULL;\r
+\r
+void cad_surf0 (blw_ *blw, int *refs, double *uv, double *S)\r
+{\r
+ BL_SURFACE *surf=(*current_list_of_faces)[*refs-1];\r
+ surf->method_surf0(uv,S);\r
+}\r
+\r
+void cad_surf1 (blw_ *blw, int *refs, double *uv, double *Su, double *Sv)\r
+{\r
+ BL_SURFACE *surf=(*current_list_of_faces)[*refs-1];\r
+ surf->method_surf1(uv,Su,Sv);\r
+}\r
+\r
+// calcul discret\r
+// double du, dv, uvg[2], uvd[2], uvb[2], uvh[2], Sg[3], Sd[3], Sb[3], Sh[3];\r
+// double Sucont[3], Svcont[3];\r
+// if (*refs == 33) {\r
+// Sucont[0] = Su[0]; Sucont[1] = Su[1]; Sucont[2] = Su[2];\r
+// Svcont[0] = Sv[0]; Svcont[1] = Sv[1]; Svcont[2] = Sv[2];\r
+// BL_SURFACE *surf=(*current_list_of_faces)[*refs-1];\r
+// du = (TSMO[*refs].uvmax[0] - TSMO[*refs].uvmin[0]) * 0.08;\r
+// dv = (TSMO[*refs].uvmax[1] - TSMO[*refs].uvmin[1]) * 0.08;\r
+// uvg[0] = uv[0]-du;\r
+// uvg[1] = uv[1];\r
+// uvd[0] = uv[0]+du;\r
+// uvd[1] = uv[1];\r
+// uvb[0] = uv[0];\r
+// uvb[1] = uv[1]-dv;\r
+// uvh[0] = uv[0];\r
+// uvh[1] = uv[1]+dv;\r
+// if (uvg[0] < TSMO[*refs].uvmin[0]) uvg[0] = TSMO[*refs].uvmin[0];\r
+// if (uvd[0] > TSMO[*refs].uvmax[0]) uvd[0] = TSMO[*refs].uvmax[0];\r
+// if (uvb[1] < TSMO[*refs].uvmin[1]) uvb[1] = TSMO[*refs].uvmin[1];\r
+// if (uvh[1] > TSMO[*refs].uvmax[1]) uvh[1] = TSMO[*refs].uvmax[1];\r
+// surf->method_surf0(uvg,Sg);\r
+// surf->method_surf0(uvd,Sd);\r
+// surf->method_surf0(uvb,Sb);\r
+// surf->method_surf0(uvh,Sh);\r
+// du = uvd[0] - uvg[0];\r
+// dv = uvh[1] - uvb[1];\r
+// Su[0] = (Sd[0] - Sg[0]) / du;\r
+// Su[1] = (Sd[1] - Sg[1]) / du;\r
+// Su[2] = (Sd[2] - Sg[2]) / du;\r
+// Sv[0] = (Sh[0] - Sb[0]) / dv;\r
+// Sv[1] = (Sh[1] - Sb[1]) / dv;\r
+// Sv[2] = (Sh[2] - Sb[2]) / dv;\r
+// fprintf(blw->out, "Su cont %g %g %g\n", Sucont[0], Sucont[1], Sucont[2]);\r
+// fprintf(blw->out, "Su disc %g %g %g\n", Su[0], Su[1], Su[2]);\r
+// fprintf(blw->out, "Sv cont %g %g %g\n", Svcont[0], Svcont[1], Svcont[2]);\r
+// fprintf(blw->out, "Sv disc %g %g %g\n", Sv[0], Sv[1], Sv[2]);\r
+// }\r
+\r
+void cad_surf2 (blw_ *blw, int *refs, double uv[2], double Suu[3], double Suv[3], double Svv[3])\r
+{\r
+ BL_SURFACE *surf=(*current_list_of_faces)[*refs-1];\r
+ surf->method_surf2(uv,Suu,Suv,Svv);\r
+\r
+// // calcul discret\r
+// double du, dv, uvg[2], uvd[2], uvb[2], uvh[2], Sug[3], Sud[3], Sub[3], Suh[3], Svg[3], Svd[3], Svb[3], Svh[3];\r
+// double Suucont[3], Suvcont[3], Svvcont[3];\r
+// if (*refs >= 0) {\r
+// Suucont[0] = Suu[0]; Suucont[1] = Suu[1]; Suucont[2] = Suu[2];\r
+// Suvcont[0] = Suv[0]; Suvcont[1] = Suv[1]; Suvcont[2] = Suv[2];\r
+// Svvcont[0] = Svv[0]; Svvcont[1] = Svv[1]; Svvcont[2] = Svv[2];\r
+// du = (TSMO[*refs].uvmax[0] - TSMO[*refs].uvmin[0]) * 0.08;\r
+// dv = (TSMO[*refs].uvmax[1] - TSMO[*refs].uvmin[1]) * 0.08;\r
+// uvg[0] = uv[0]-du;\r
+// uvg[1] = uv[1];\r
+// uvd[0] = uv[0]+du;\r
+// uvd[1] = uv[1];\r
+// uvb[0] = uv[0];\r
+// uvb[1] = uv[1]-dv;\r
+// uvh[0] = uv[0];\r
+// uvh[1] = uv[1]+dv;\r
+// if (uvg[0] < TSMO[*refs].uvmin[0]) uvg[0] = TSMO[*refs].uvmin[0];\r
+// if (uvd[0] > TSMO[*refs].uvmax[0]) uvd[0] = TSMO[*refs].uvmax[0];\r
+// if (uvb[1] < TSMO[*refs].uvmin[1]) uvb[1] = TSMO[*refs].uvmin[1];\r
+// if (uvh[1] > TSMO[*refs].uvmax[1]) uvh[1] = TSMO[*refs].uvmax[1];\r
+// surf->method_surf1(uvg,Sug,Svg);\r
+// surf->method_surf1(uvd,Sud,Svd);\r
+// surf->method_surf1(uvb,Sub,Svb);\r
+// surf->method_surf1(uvh,Suh,Svh);\r
+// du = uvd[0] - uvg[0];\r
+// dv = uvh[1] - uvb[1];\r
+// Suu[0] = (Sud[0] - Sug[0]) / du;\r
+// Suu[1] = (Sud[1] - Sug[1]) / du;\r
+// Suu[2] = (Sud[2] - Sug[2]) / du;\r
+// Svv[0] = (Svh[0] - Svb[0]) / dv;\r
+// Svv[1] = (Svh[1] - Svb[1]) / dv;\r
+// Svv[2] = (Svh[2] - Svb[2]) / dv;\r
+// Suv[0] = ((Suh[0] - Sub[0]) / dv + (Svd[0] - Svg[0]) / du) * 0.5;\r
+// Suv[1] = ((Suh[1] - Sub[1]) / dv + (Svd[1] - Svg[1]) / du) * 0.5;\r
+// Suv[2] = ((Suh[2] - Sub[2]) / dv + (Svd[2] - Svg[2]) / du) * 0.5;\r
+// // fprintf(blw->out, "disc uv %g %g Suu %g %g %g\n", uv[0], uv[1], Suu[0], Suu[1], Suu[2]);\r
+// // fprintf(blw->out, "Suv disc %g %g %g\n", Suv[0], Suv[1], Suv[2]);\r
+// // fprintf(blw->out, "Svv disc %g %g %g\n", Svv[0], Svv[1], Svv[2]);\r
+// }\r
+}\r
+\r
+void cad_curvint (blw_ *blw, int *refs, int *ic, double *a, double *b)\r
+{\r
+ *a=(*current_list_of_faces)[*refs-1]->edges[*ic-1]->parametric_min;\r
+ *b=(*current_list_of_faces)[*refs-1]->edges[*ic-1]->parametric_max;\r
+}\r
+\r
+void cad_curv0 (blw_ *blw, int *refs, int *ic, double *t, double *C)\r
+{\r
+ (*current_list_of_faces)[*refs-1]->edges[*ic-1]->method_curv0(*t,C);\r
+}\r
+\r
+void cad_curv1 (blw_ *blw, int *refs, int *ic, double *t, double *Ct)\r
+{\r
+ (*current_list_of_faces)[*refs-1]->edges[*ic-1]->method_curv1(*t,Ct);\r
+}\r
+\r
+void cad_curv2 (blw_ *blw, int *refs, int *ic, double *t, double *Ctt)\r
+{\r
+ (*current_list_of_faces)[*refs-1]->edges[*ic-1]->method_curv2(*t,Ctt);\r
+}\r
+\r
+void cad_hphys (blw_ *blw, int *refs, double *uv, double *h) {}\r
+void cad_hphyc (blw_ *blw, int *refs, int *ic, double *t, double *h) {}\r
+void cad_hphyp (blw_ *blw, int *refp, double *h) {}\r
+\r
+void cad_rads (blw_ *blw, int *refs, double *uv, double *rhos) {\r
+ sprintf(blw->error, "cad_rads should not be called\n");\r
+}\r
+\r
+void cad_radc (blw_ *blw, int *refs, int *ic, double *t, double *rhoc) {\r
+ sprintf(blw->error, "cad_radc should not be called");\r
+}\r
+\r
+void cad_hageos(blw_ *blw, int *refs, double uv[2], double hageos[6]) {\r
+ sprintf(blw->error, "cad_hageos should not be called\n");\r
+}\r
+\r
+void cad_refphyc(blw_ *blw, int *refc, int *phyc) {\r
+ *phyc = *refc;\r
+}\r
+\r
+void cad_refphyp(blw_ *blw, int *refp, int *phyp) {\r
+ *phyp = *refp;\r
+}\r
+\r
+void cad_refphys(blw_ *blw, int *refs, int *phys) {\r
+ *phys = *refs;\r
+}\r
+\r
+void cad_edgetag(blw_ *blw, int *refc, int *required) {\r
+ *required = 1;\r
+}\r
+\r
+void cad_curvparam(blw_ *blw, int *refs, int *ic, int *n, double tab[]) {\r
+ *n = 0;\r
+}\r
+\r
+void BL_SURF::init_tsmo(blw_ *blw) { /* cf. bls_read_pardom */\r
+ int is, ns, ic, nc, j, igloP, igloQ, isurf;\r
+ TopoDS_Vertex v;\r
+ gp_Pnt p;\r
+ double a, b, uv[2], xyz[3], xyzP[3], xyzQ[3];\r
+\r
+ ns = surfaces.size();\r
+ if (blw->env.verb >= 10) fprintf(blw->out, "\ninit_tsmo: %d surfaces\n", ns);\r
+ if (ns <= 0) {\r
+ TSMO = NULL;\r
+ blw->bls_glo.number_of_patches = 0;\r
+ return;\r
+ }\r
+\r
+ TopTools_IndexedMapOfShape fmap_edges;\r
+ TopTools_IndexedMapOfShape fmap_points;\r
+ fmap_edges.Clear();\r
+ fmap_points.Clear();\r
+ for (isurf=0; isurf<ns; isurf++) {\r
+ TopoDS_Face face = surfaces[isurf]->topology;\r
+ for (TopExp_Explorer ex_face(face ,TopAbs_EDGE); ex_face.More(); ex_face.Next()) {\r
+ TopoDS_Edge e = TopoDS::Edge(ex_face.Current());\r
+ if (fmap_edges.FindIndex(e) <= 0) { /* not found => FindIndex = 0, found => FindIndex > 0 */\r
+ fmap_edges.Add(e);\r
+ j = 0;\r
+ for (TopExp_Explorer ex_edge(e ,TopAbs_VERTEX); ex_edge.More(); ex_edge.Next()) {\r
+ v = TopoDS::Vertex(ex_edge.Current());\r
+ ++j;\r
+ if (fmap_points.FindIndex(v) <= 0) fmap_points.Add(v);\r
+ }\r
+ if (j != 2) {\r
+ sprintf(blw->error, "init_tsmo: surface is=%d: an edge has %d != 2 extremities\n", isurf+1, j); return;\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ MALLOC(surface_, TSMO, ns+1); if (blw->error[0]) return;\r
+ blw->bls_glo.number_of_patches = ns;\r
+ for (isurf=0; isurf<ns; isurf++) {\r
+ is = isurf+1;\r
+ nc = surfaces[isurf]->edges.size();\r
+ if (blw->env.verb >= 70) fprintf(blw->out, "init_tsmo: surface is=%d: %d curves\n", is, nc);\r
+\r
+ bls_init_surface(blw, &(TSMO[is]), nc);\r
+ TSMO[is].iglos = is;\r
+ TSMO[is].pardom_side = 0;\r
+ TSMO[is].surforient = +1;\r
+ for (int icurv=0;icurv<nc;icurv++) {\r
+ ic = icurv+1;\r
+ TSMO[is].TC[ic].typc = 1;\r
+ BL_EDGE* curve = surfaces[isurf]->edges[icurv];\r
+ TopoDS_Edge edge = curve->topology;\r
+ TSMO[is].TC[ic].igloc = fmap_edges.FindIndex(edge);\r
+\r
+ TopExp_Explorer ex_edge(edge, TopAbs_VERTEX);\r
+ v = TopoDS::Vertex(ex_edge.Current());\r
+ p = BRep_Tool::Pnt(v);\r
+ xyzP[0] = p.X(); xyzP[1] = p.Y(); xyzP[2] = p.Z();\r
+ igloP = fmap_points.FindIndex(v);\r
+\r
+ ex_edge.Next();\r
+ v = TopoDS::Vertex(ex_edge.Current());\r
+ p = BRep_Tool::Pnt(v);\r
+ xyzQ[0] = p.X(); xyzQ[1] = p.Y(); xyzQ[2] = p.Z();\r
+ igloQ = fmap_points.FindIndex(v);\r
+\r
+ cad_curvint (blw, &is, &ic, &a, &b);\r
+ cad_curv0 (blw, &is, &ic, &a, uv);\r
+ cad_surf0 (blw, &is, uv, xyz); \r
+ xyzP[0] -= xyz[0]; xyzP[1] -= xyz[1]; xyzP[2] -= xyz[2];\r
+ xyzQ[0] -= xyz[0]; xyzQ[1] -= xyz[1]; xyzQ[2] -= xyz[2];\r
+ if (NORM3DPOW2(xyzP) <= NORM3DPOW2(xyzQ)) {\r
+ TSMO[is].TC[ic].iglope[0] = igloP;\r
+ TSMO[is].TC[ic].iglope[1] = igloQ;\r
+ } else {\r
+ TSMO[is].TC[ic].iglope[0] = igloQ;\r
+ TSMO[is].TC[ic].iglope[1] = igloP;\r
+ }\r
+ }\r
+ }\r
+}\r
+\r
+int BL_SURF::bls_main(blw_ *blw) {\r
+ FILE *file;\r
+\r
+ /* banner */\r
+ blw->out = stdout;\r
+ bls_banner(blw, 1);\r
+ \r
+ /* initialiser l'environnement de BLSURF */\r
+ init_blsenv(blw);\r
+\r
+ /* lire l'environnement de BLSURF */\r
+ /* par defaut : strcpy(blw->dirname, ""); */\r
+ /* sinon : strcpy(blw->dirname, "C:\\Documents and Settings\\xxx\\"); */\r
+ sprintf(blw->filename, "%sblsurf.env", blw->dirname);\r
+ FOPEN(file, "r");\r
+ if (blw->error[0]) {\r
+ fprintf(blw->out, "File blsurf.env not found. Default values will be used.\n");\r
+ blw->error[0] = 0;\r
+ } else {\r
+ read_blsenv(blw, file);\r
+ FCLOSE(file);\r
+ if (blw->error[0]) goto error; /* read_blsenv: unknown keyword */\r
+ }\r
+\r
+ /* copier les variables communes entre "bl2denv" et blsenv (en particulier verb) */\r
+ copy_common_env(blw);\r
+\r
+ /* imprimer l'environnement de BLSURF */\r
+ if (blw->env.verb >= 70) print_blsenv(blw);\r
+\r
+ /* initialiser TSMO */\r
+ current_list_of_faces = &surfaces;\r
+ BL_SURF::init_tsmo(blw); if (blw->error[0]) goto error;\r
+\r
+ /* generer le maillage surfacique */\r
+ bls_init(blw); if (blw->error[0]) goto error;\r
+ bls_mesh(blw); if (blw->error[0]) goto error;\r
+ bls_surforient(blw); if (blw->error[0]) goto error;\r
+ bls_export(blw); if (blw->error[0]) goto error;\r
+ /* a voir : les tableaux pointes par current_list_of_faces sont liberes ? handles ? */\r
+\r
+ bls_banner(blw, 2);\r
+ return(0);\r
+\r
+ error:\r
+ fprintf(blw->out, "\nBLSURF ERROR MESSAGE:\n%s\n", blw->error);\r
+ bls_banner(blw, 2);\r
+ return(1);\r
+}\r
--- /dev/null
+#ifndef __BL_SURF__\r
+#define __BL_SURF__\r
+\r
+#include <list>\r
+#include <vector>\r
+#include <string>\r
+\r
+#include <Handle_Geom_Surface.hxx>\r
+#include <Handle_Geom2d_Curve.hxx>\r
+#include <Handle_Geom_Curve.hxx>\r
+#include <Handle_AIS_InteractiveObject.hxx>\r
+#include <TopoDS_Edge.hxx>\r
+#include <TopoDS_Face.hxx>\r
+\r
+#include <blshare.h>\r
+\r
+class BL_SURFACE;\r
+class BL_CURVE_SIZER;\r
+class BL_SURFACE_SIZER;\r
+class BL_POINT_SIZER;\r
+\r
+class BL_EDGE \r
+{\r
+ public :\r
+ Handle(Geom2d_Curve) parametric_geometry;\r
+ Handle(Geom_Curve) space_geometry;\r
+ TopoDS_Edge topology;\r
+ BL_SURFACE *boss;\r
+ BL_CURVE_SIZER *sizer;\r
+ bool splitted_closed;\r
+ int splitted_part;\r
+ vector<double> P1,P2,MP;\r
+ string name;\r
+ int i_P1,i_P2;\r
+ int typc,refc;\r
+ \r
+ double parametric_min,parametric_max;\r
+ double space_min,space_max;\r
+\r
+ BL_EDGE(TopoDS_Edge&,BL_SURFACE*,Handle(Geom2d_Curve),double,double);\r
+ ~BL_EDGE();\r
+\r
+ bool verification();\r
+\r
+ void method_curv0(const double&, double*);\r
+ void method_curv1(const double&, double*);\r
+ void method_curv2(const double&, double*);\r
+};\r
+\r
+class BL_POINT {\r
+ public :\r
+ BL_POINT_SIZER *sizer;\r
+ BL_SURFACE *boss;\r
+ double u,v;\r
+\r
+ BL_POINT() { u=v=0.; boss=NULL; sizer=NULL; }\r
+ BL_POINT(BL_SURFACE *b, double du, double dv) { u=du; v=dv; boss=b; sizer=NULL; }\r
+ BL_POINT(double du, double dv) { u=du; v=dv; boss=NULL; sizer=NULL; }\r
+ ~BL_POINT() { }\r
+\r
+ BL_POINT& operator=(BL_POINT p) { u=p.u; v=p.v; return(*this); }\r
+ bool operator==(BL_POINT p) { return((u==p.u)&&(v==p.v)); }\r
+};\r
+\r
+class BL_SURFACE {\r
+ public :\r
+ Handle(Geom_Surface) geometry;\r
+ TopoDS_Face topology;\r
+ bool to_delete;\r
+\r
+ BL_SURFACE_SIZER *sizer;\r
+ vector<BL_EDGE*> edges;\r
+ vector<BL_POINT*> points;\r
+\r
+ BL_SURFACE(TopoDS_Face&);\r
+ ~BL_SURFACE();\r
+ \r
+ bool build();\r
+ bool verification();\r
+\r
+ void method_surf0(double const*, double*);\r
+ void method_surf1(double const*, double*, double*);\r
+ void method_surf2(double const*, double*, double*, double*);\r
+\r
+ bool add(TopoDS_Edge&);\r
+ void add(double u, double v);\r
+};\r
+\r
+class BL_SURF \r
+{\r
+ protected:\r
+\r
+ // void build_blsurf_data_file();\r
+ void init_tsmo(blw_ *blw);\r
+ int bls_main(blw_ *blw);\r
+\r
+ // void set_reference_points();\r
+ void build_surfaces(TopoDS_Shape&);\r
+ // void build_from_occ_references(TopoDS_Shape&);\r
+\r
+ void analyse_identical_faces();\r
+\r
+ public:\r
+ static BL_SURF *active_blsurf;\r
+ TopoDS_Shape the_object;\r
+\r
+ vector<BL_EDGE*> all_edges;\r
+ vector<BL_SURFACE*> surfaces;\r
+\r
+ vector<BL_POINT> internal_points;\r
+ vector<TopoDS_Face> internal_face_points;\r
+\r
+ vector<TopoDS_Edge> internal_edges;\r
+ vector<TopoDS_Face> internal_faces;\r
+\r
+ vector<TopoDS_Face> conforming_source_face;\r
+ vector<TopoDS_Face> conforming_dest_face;\r
+\r
+ vector< vector<TopoDS_Face>* > faces_to_merge;\r
+ vector< vector<int>* > vertices_tags;\r
+ vector< vector<int>* > edges_tags;\r
+\r
+ // string blsurf_fname;\r
+ // bool mesh_2D, auto_merge, use_occ_refs;\r
+\r
+ // enum WHAT_MESH { SURFACE_MESH=0, VOLUME_MESH=1 };\r
+ // enum MESH_ORDER { LINEAR=0, QUADRATIC=1 };\r
+\r
+ blw_ blw;\r
+ // int auto_connectivity;\r
+ // int Verbosity;\r
+ // int hphy_flag;\r
+ // int hinterpol_flag,hmean_flag;\r
+ // int eps_glue_flag,eps_ends_flag,eps_collapse_flag;\r
+ // double eps_glue,eps_ends,eps_collapse,shockmax;\r
+ // double angle_mesh,angle_smo;\r
+ // WHAT_MESH WhatMesh;\r
+ // MESH_ORDER MeshOrder;\r
+ // int ComponentToMesh;\r
+ \r
+ // double Pmin,Pmax;\r
+ // double Gmin,Gmax;\r
+ // vector<int> Poptions; // Goptions\r
+\r
+ // vector<TopoDS_Shape> remaining_faces;\r
+\r
+ BL_SURF() {\r
+ // Verbosity=25;\r
+ // hphy_flag=0; \r
+ // hinterpol_flag=0;\r
+ // hmean_flag=0;\r
+ // auto_connectivity=1; // PL valait 0\r
+ // use_occ_refs=false;\r
+ // Poptions.resize(1); Poptions[0]=0; \r
+ // WhatMesh=SURFACE_MESH;\r
+ // MeshOrder=LINEAR;\r
+ // mesh_2D=false;\r
+ // eps_glue=eps_ends=eps_collapse=1e-8;\r
+ // eps_glue_flag=eps_ends_flag=eps_collapse_flag=0;\r
+ // shockmax=1.e100;\r
+ // blsurf_fname="";\r
+ // auto_merge=false;\r
+ // ComponentToMesh=0;\r
+ // angle_mesh=8.; angle_smo=1.;\r
+ }\r
+ ~BL_SURF() { }\r
+\r
+ bool init(const TopoDS_Shape&);\r
+ // int vertices(double*&);\r
+ void get_blw(blw_*&);\r
+ // int number_of_patches();\r
+ // bool all_triangles();\r
+ // void face_mesh(int is, int*& F, int*& FRef, int*& iglops, int& nF, int& ndom, int& surforient);\r
+ bool end();\r
+\r
+ bool run(TopoDS_Shape&);\r
+ bool run();\r
+ void reset();\r
+};\r
+\r
+#endif\r
+\r
+// PL Gmin, Gmax, hgeo_flag, Goptions ont deja ete elimines\r
+// PL hphy_flag, Poptions, ... sont a eliminer aussi\r
+// bls.Gmin=0.01;\r
+// bls.Gmax=1000;\r
+// bls.hgeo_flag=1;\r
+// bls.Goptions[0]=1;\r
--- /dev/null
+// BLSURFPlugin GUI: GUI for plugged-in mesher BLSURFPlugin
+//
+// 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 : BLSURFPluginGUI.cxx
+// Authors : Francis KLOSS (OCC) & Patrick LAUG (INRIA)
+// Module : BLSURFPlugin
+
+#include "BLSURFPluginGUI_HypothesisCreator.h"
+
+//=============================================================================
+/*! GetHypothesisCreator
+ *
+ */
+//=============================================================================
+extern "C"
+{
+ SMESHGUI_GenericHypothesisCreator* GetHypothesisCreator( const QString& aHypType )
+ {
+ SMESHGUI_GenericHypothesisCreator* aCreator = NULL;
+ if( aHypType=="BLSURF_Parameters" )
+ aCreator = new BLSURFPluginGUI_HypothesisCreator( aHypType );
+ return aCreator;
+ }
+}
--- /dev/null
+// BLSURFPlugin GUI: GUI for plugged-in mesher BLSURFPlugin
+//
+// 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 : BLSURFPluginGUI_HypothesisCreator.cxx
+// Authors : Francis KLOSS (OCC) & Patrick LAUG (INRIA) & Lioka RAZAFINDRAZAKA (CEA)
+// Module : BLSURFPlugin
+// $Header:
+
+#include "BLSURFPluginGUI_HypothesisCreator.h"
+
+#include <SMESHGUI_Utils.h>
+#include <SMESHGUI_HypothesesUtils.h>
+
+#include CORBA_SERVER_HEADER(BLSURFPlugin_Algorithm)
+
+#include <SUIT_Session.h>
+
+#include <SalomeApp_Tools.h>
+
+#include <QtxDblSpinBox.h>
+#include <QtxComboBox.h>
+
+#include <qlabel.h>
+#include <qgroupbox.h>
+#include <qframe.h>
+#include <qlayout.h>
+#include <qlineedit.h>
+#include <qcheckbox.h>
+#include <qpixmap.h>
+
+enum PhysicalMesh
+ {
+ DefaultSize,
+ PhysicalUserDefined
+ };
+
+enum GeometricMesh
+ {
+ DefaultGeom,
+ UserDefined
+ };
+
+BLSURFPluginGUI_HypothesisCreator::BLSURFPluginGUI_HypothesisCreator( const QString& theHypType )
+: SMESHGUI_GenericHypothesisCreator( theHypType ),
+ myIs2D(true)
+{
+}
+
+BLSURFPluginGUI_HypothesisCreator::~BLSURFPluginGUI_HypothesisCreator()
+{
+}
+
+bool BLSURFPluginGUI_HypothesisCreator::checkParams() const
+{
+ BlsurfHypothesisData data_old, data_new;
+ readParamsFromHypo( data_old );
+ readParamsFromWidgets( data_new );
+ bool res = storeParamsToHypo( data_new );
+ return res;
+}
+
+QFrame* BLSURFPluginGUI_HypothesisCreator::buildFrame()
+{
+ QFrame* fr = new QFrame( 0, "myframe" );
+ QVBoxLayout* lay = new QVBoxLayout( fr, 5, 0 );
+
+ QGroupBox* GroupC1 = new QGroupBox( 2, Qt::Horizontal, fr, "GroupC1" );
+ lay->addWidget( GroupC1 );
+
+ GroupC1->setTitle( tr( "SMESH_ARGUMENTS" ) );
+ GroupC1->layout()->setSpacing( 6 );
+ GroupC1->layout()->setMargin( 11 );
+
+ myName = 0;
+ if( isCreation() ) {
+ new QLabel( tr( "SMESH_NAME" ), GroupC1 );
+ myName = new QLineEdit( GroupC1 );
+ }
+
+ new QLabel( tr( "BLSURF_PHY_MESH" ), GroupC1 );
+ myPhysicalMesh = new QtxComboBox( GroupC1 );
+ QStringList physicalTypes;
+ physicalTypes.append( QObject::tr( "BLSURF_DEFAULT_USER" ) );
+ physicalTypes.append( QObject::tr( "BLSURF_CUSTOM_USER" ) );
+ myPhysicalMesh->insertStringList( physicalTypes );
+
+ new QLabel( tr( "BLSURF_HPHYDEF" ), GroupC1 );
+ myPhySize = new QtxDblSpinBox( GroupC1 );
+ myPhySize->setMinValue( 1e-02 );
+ myPhySize->setMaxValue( 1e+02 );
+ myPhySize->setLineStep( 1 );
+
+ new QLabel( tr( "BLSURF_GEOM_MESH" ), GroupC1 );
+ myGeometricMesh = new QtxComboBox( GroupC1 );
+ QStringList types;
+ types.append( QObject::tr( "BLSURF_DEFAULT_GEOM" ) );
+ types.append( QObject::tr( "BLSURF_CUSTOM_GEOM" ) );
+ myGeometricMesh->insertStringList( types );
+
+// new QLabel( tr( "BLSURF_GROWTH_RATE" ), GroupC1 );
+// myGrowthRate = new QtxDblSpinBox( GroupC1 );
+// myGrowthRate->setMinValue( 0.1 );
+// myGrowthRate->setMaxValue( 10 );
+// myGrowthRate->setLineStep( 0.1 );
+
+ new QLabel( tr( "BLSURF_ANGLE_MESH_S" ), GroupC1 );
+ myAngleMeshS = new QtxDblSpinBox( GroupC1 );
+ myAngleMeshS->setMinValue( 0 );
+ myAngleMeshS->setMaxValue( 16 );
+ myAngleMeshS->setLineStep( 0.5 );
+
+ new QLabel( tr( "BLSURF_GRADATION" ), GroupC1 );
+ myGradation = new QtxDblSpinBox( GroupC1 );
+ myGradation->setMinValue( 1.1 );
+ myGradation->setMaxValue( 1.5 );
+ myGradation->setLineStep( 0.1 );
+
+// new QLabel( tr( "BLSURF_SEG_PER_RADIUS" ), GroupC1 );
+// myNbSegPerRadius = new QtxDblSpinBox( GroupC1 );
+// myNbSegPerRadius->setMinValue( 0.2 );
+// myNbSegPerRadius->setMaxValue( 5.0 );
+
+ myAllowQuadrangles = new QCheckBox( tr( "BLSURF_ALLOW_QUADRANGLES" ), GroupC1 );
+ GroupC1->addSpace(0);
+// myIs2D = true;
+
+ myDecimesh = new QCheckBox( tr( "BLSURF_DECIMESH" ), GroupC1 );
+ GroupC1->addSpace(0);
+
+ connect( myGeometricMesh, SIGNAL( activated( int ) ), this, SLOT( onGeometricMeshChanged() ) );
+ connect( myPhysicalMesh, SIGNAL( activated( int ) ), this, SLOT( onPhysicalMeshChanged() ) );
+
+ return fr;
+}
+
+void BLSURFPluginGUI_HypothesisCreator::retrieveParams() const
+{
+ BlsurfHypothesisData data;
+ readParamsFromHypo( data );
+
+ if( myName )
+ myName->setText( data.myName );
+ myPhysicalMesh->setCurrentItem( data.myPhysicalMesh );
+ myPhySize->setValue( data.myPhySize );
+ myGeometricMesh->setCurrentItem( data.myGeometricMesh );
+ myAngleMeshS->setValue( data.myAngleMeshS);
+ myGradation->setValue( data.myGradation);
+ myAllowQuadrangles->setChecked( data.myAllowQuadrangles );
+ myDecimesh->setChecked( data.myDecimesh );
+
+ // update widgets
+
+ bool isPhysicalCustom = (myPhysicalMesh->currentItem() == PhysicalUserDefined);
+ myPhySize->setEnabled(isPhysicalCustom);
+
+ bool isCustom = (myGeometricMesh->currentItem() == UserDefined);
+ myAngleMeshS->setEnabled(isCustom);
+ myGradation->setEnabled(isCustom);
+}
+
+QString BLSURFPluginGUI_HypothesisCreator::storeParams() const
+{
+ BlsurfHypothesisData data;
+ readParamsFromWidgets( data );
+ storeParamsToHypo( data );
+
+ QString guiHyp;
+ guiHyp += tr("BLSURF_PHY_MESH") + " = " + QString::number( data.myPhysicalMesh ) + "; ";
+ guiHyp += tr("BLSURF_HPHYDEF") + " = " + QString::number( data.myPhySize ) + "; ";
+ guiHyp += tr("BLSURF_GEOM_MESH") + " = " + QString::number( data.myGeometricMesh ) + "; ";
+ guiHyp += tr("BLSURF_ANGLE_MESH_S") + " = " + QString::number( data.myAngleMeshS ) + "; ";
+ guiHyp += tr("BLSURF_GRADATION") + " = " + QString::number( data.myGradation ) + "; ";
+ guiHyp += tr("BLSURF_ALLOW_QUADRANGLES") + " = " + QString(data.myAllowQuadrangles ? "yes" : "no") + "; ";
+ guiHyp += tr("BLSURF_DECIMESH") + " = " + QString(data.myDecimesh ? "yes" : "no") + "; ";
+
+ cout << "guiHyp : " << guiHyp << endl;
+
+ return guiHyp;
+}
+
+bool BLSURFPluginGUI_HypothesisCreator::readParamsFromHypo( BlsurfHypothesisData& h_data ) const
+{
+ BLSURFPlugin::BLSURFPlugin_Hypothesis_var h =
+ BLSURFPlugin::BLSURFPlugin_Hypothesis::_narrow( initParamsHypothesis() );
+
+ HypothesisData* data = SMESH::GetHypothesisData( hypType() );
+ h_data.myName = isCreation() && data ? data->Label : "";
+
+ h_data.myPhysicalMesh = (int) h->GetPhysicalMesh();
+ h_data.myPhySize = h->GetPhySize();
+ h_data.myGeometricMesh = (int) h->GetGeometricMesh();
+ h_data.myAngleMeshS = h->GetAngleMeshS();
+ h_data.myGradation = h->GetGradation();
+ h_data.myAllowQuadrangles = h->GetQuadAllowed();
+ h_data.myDecimesh = h->GetDecimesh();
+
+ return true;
+}
+
+bool BLSURFPluginGUI_HypothesisCreator::storeParamsToHypo( const BlsurfHypothesisData& h_data ) const
+{
+ BLSURFPlugin::BLSURFPlugin_Hypothesis_var h =
+ BLSURFPlugin::BLSURFPlugin_Hypothesis::_narrow( hypothesis() );
+
+ bool ok = true;
+ try
+ {
+ if( isCreation() )
+ SMESH::SetName( SMESH::FindSObject( h ), h_data.myName.latin1() );
+
+ h->SetPhysicalMesh( (int) h_data.myPhysicalMesh );
+ h->SetPhySize( h_data.myPhySize );
+ h->SetGeometricMesh( (int) h_data.myGeometricMesh );
+ h->SetGradation( h_data.myGradation );
+ h->SetQuadAllowed( h_data.myAllowQuadrangles );
+ h->SetDecimesh( h_data.myDecimesh );
+
+ if( (int) h_data.myPhysicalMesh == PhysicalUserDefined )
+ h->SetPhySize( h_data.myPhySize );
+
+ if( (int) h_data.myGeometricMesh == UserDefined )
+ h->SetAngleMeshS( h_data.myAngleMeshS );
+ }
+ catch(const SALOME::SALOME_Exception& ex)
+ {
+ SalomeApp_Tools::QtCatchCorbaException(ex);
+ ok = false;
+ }
+ return ok;
+}
+
+bool BLSURFPluginGUI_HypothesisCreator::readParamsFromWidgets( BlsurfHypothesisData& h_data ) const
+{
+ h_data.myName = myName ? myName->text() : "";
+ h_data.myPhysicalMesh = myPhysicalMesh->currentItem();
+ h_data.myPhySize = myPhySize->value();
+ h_data.myGeometricMesh = myGeometricMesh->currentItem();
+ h_data.myAngleMeshS = myAngleMeshS->value();
+ h_data.myGradation = myGradation->value();
+ h_data.myAllowQuadrangles = myAllowQuadrangles->isChecked();
+ h_data.myDecimesh = myDecimesh->isChecked();
+
+ return true;
+}
+
+void BLSURFPluginGUI_HypothesisCreator::onPhysicalMeshChanged() {
+ bool isCustom = (myPhysicalMesh->currentItem() == PhysicalUserDefined);
+ myPhySize->setEnabled(isCustom);
+
+ if ( ! isCustom ) {
+ double aPhySize;
+ switch( myPhysicalMesh->currentItem() ) {
+ case DefaultSize:
+ default:
+ aPhySize = 10;
+ break;
+ }
+ myPhySize->setValue( aPhySize );
+ }
+}
+
+void BLSURFPluginGUI_HypothesisCreator::onGeometricMeshChanged() {
+ bool isCustom = (myGeometricMesh->currentItem() == UserDefined);
+ myAngleMeshS->setEnabled(isCustom);
+ myGradation->setEnabled(isCustom);
+
+ if ( ! isCustom ) {
+ double aAngleMeshS, aGradation;
+ switch( myGeometricMesh->currentItem() ) {
+ case DefaultGeom:
+ default:
+ aAngleMeshS = 8;
+ aGradation = 1.1;
+ break;
+ }
+ myAngleMeshS->setValue( aAngleMeshS );
+ myGradation->setValue( aGradation );
+ }
+}
+
+QString BLSURFPluginGUI_HypothesisCreator::caption() const
+{
+ return tr( QString( "BLSURF_%1_TITLE" ).arg(myIs2D?QString("2D"):QString("3D")) );
+}
+
+QPixmap BLSURFPluginGUI_HypothesisCreator::icon() const
+{
+ QString hypIconName = tr( QString("ICON_DLG_BLSURF_PARAMETERS%1").arg(myIs2D?QString(""):QString("")) );
+ return SUIT_Session::session()->resourceMgr()->loadPixmap( "BLSURFPlugin", hypIconName );
+}
+
+QString BLSURFPluginGUI_HypothesisCreator::type() const
+{
+ return tr( QString( "BLSURF_%1_HYPOTHESIS" ).arg(myIs2D?QString("2D"):QString("3D")) );
+}
--- /dev/null
+// BLSURFPlugin GUI: GUI for plugged-in mesher BLSURFPlugin
+//
+// 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 : BLSURFPluginGUI_HypothesisCreator.h
+// Authors : Francis KLOSS (OCC) & Patrick LAUG (INRIA) & Lioka RAZAFINDRAZAKA (CEA)
+// Module : BLSURFPlugin
+// $Header:
+
+#ifndef BLSURFPLUGINGUI_HypothesisCreator_HeaderFile
+#define BLSURFPLUGINGUI_HypothesisCreator_HeaderFile
+
+#include <SMESHGUI_Hypotheses.h>
+
+class QtxDblSpinBox;
+class QtxComboBox;
+class QCheckBox;
+class QLineEdit;
+
+typedef struct
+{
+ int myPhysicalMesh, myGeometricMesh;
+ double myPhySize, myAngleMeshS, myGradation;
+ bool myAllowQuadrangles, myDecimesh;
+ QString myName;
+} BlsurfHypothesisData;
+
+/*!
+ * \brief Class for creation of BLSURF hypotheses
+*/
+
+class BLSURFPlugin_Hypothesis;
+
+class BLSURFPluginGUI_HypothesisCreator : public SMESHGUI_GenericHypothesisCreator
+{
+ Q_OBJECT
+
+public:
+ BLSURFPluginGUI_HypothesisCreator( const QString& );
+ virtual ~BLSURFPluginGUI_HypothesisCreator();
+
+ virtual bool checkParams() const;
+
+protected:
+ virtual QFrame* buildFrame ();
+ virtual void retrieveParams() const;
+ virtual QString storeParams () const;
+
+ virtual QString caption() const;
+ virtual QPixmap icon() const;
+ virtual QString type() const;
+
+protected slots:
+ virtual void onPhysicalMeshChanged();
+ virtual void onGeometricMeshChanged();
+
+private:
+ bool readParamsFromHypo( BlsurfHypothesisData& ) const;
+ bool readParamsFromWidgets( BlsurfHypothesisData& ) const;
+ bool storeParamsToHypo( const BlsurfHypothesisData& ) const;
+
+private:
+ QLineEdit* myName;
+ QtxComboBox* myPhysicalMesh;
+ QtxDblSpinBox* myPhySize;
+ QtxComboBox* myGeometricMesh;
+ QtxDblSpinBox* myAngleMeshS;
+ QtxDblSpinBox* myGradation;
+ QCheckBox* myAllowQuadrangles;
+ QCheckBox* myDecimesh;
+
+ bool myIs2D;
+};
+
+#endif
--- /dev/null
+# Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS, L3S, LJLL, MENSI
+#
+# 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/
+#
+# 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"
+
+
+#-----------------------------------------------------------
+# Hypothesis
+#-----------------------------------------------------------
+
+msgid "ICON_DLG_BLSURF_PARAMETERS"
+msgstr "mesh_hypo_BLSURF.png"
+
+msgid "ICON_DLG_BLSURF_PARAMETERS_2D"
+msgstr "mesh_hypo_BLSURF.png"
+
+#-----------------------------------------------------------
+# ObjectBrowser
+#-----------------------------------------------------------
+
+msgid "ICON_SMESH_TREE_ALGO_BLSURF_3D"
+msgstr "mesh_tree_algo_tetra.png"
+
+msgid "ICON_SMESH_TREE_ALGO_BLSURF_2D"
+msgstr "mesh_tree_algo_BLSURF.png"
+
+msgid "ICON_SMESH_TREE_ALGO_BLSURF_2D3D"
+msgstr "mesh_tree_algo_BLSURF.png"
+
+msgid "ICON_SMESH_TREE_HYPO_BLSURF_Parameters"
+msgstr "mesh_tree_hypo_BLSURF.png"
+
+msgid "ICON_SMESH_TREE_HYPO_BLSURF_Parameters_2D"
+msgstr "mesh_tree_hypo_BLSURF.png"
--- /dev/null
+# Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS, L3S, LJLL, MENSI
+#
+# 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/
+#
+# 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".
+//
+// File : BLSURFPlugin_msg_en.po
+// Authors : Francis KLOSS (OCC) & Patrick LAUG (INRIA) & Lioka RAZAFINDRAZAKA (CEA)
+// Date : 28/03/2006
+// Project : SALOME
+//=============================================================================
+
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"POT-Creation-Date: 2002-05-28 10:46:48 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"
+
+msgid "BLSURF_2D_HYPOTHESIS"
+msgstr "BLSURF 2D"
+
+msgid "BLSURF_PHY_MESH"
+msgstr "Physical Mesh"
+
+msgid "BLSURF_DEFAULT_USER"
+msgstr "Default"
+
+msgid "BLSURF_CUSTOM_USER"
+msgstr "Custom"
+
+msgid "BLSURF_HPHYDEF"
+msgstr "User Size"
+
+msgid "BLSURF_GEOM_MESH"
+msgstr "Geometrical Mesh"
+
+msgid "BLSURF_DEFAULT_GEOM"
+msgstr "Default"
+
+msgid "BLSURF_CUSTOM_GEOM"
+msgstr "Custom"
+
+msgid "BLSURF_ANGLE_MESH_S"
+msgstr "Angle Mesh S"
+
+msgid "BLSURF_GRADATION"
+msgstr "Gradation"
+
+msgid "BLSURF_DECIMESH"
+msgstr "Decimesh"
+
+msgid "BLSURF_ALLOW_QUADRANGLES"
+msgstr "Allow Quadrangles"
+
+msgid "BLSURF_2D_TITLE"
+msgstr "Hypothesis Construction"
+
+msgid "BLSURF_3D_TITLE"
+msgstr "Hypothesis Construction"
--- /dev/null
+# Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS, L3S, LJLL, MENSI
+#
+# 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/
+#
+# File : Makefile.in
+// Authors : Francis KLOSS (OCC) & Patrick LAUG (INRIA)
+# Module : BLSURFPLUGIN
+
+top_srcdir=@top_srcdir@
+top_builddir=../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_builddir)/idl:${KERNEL_ROOT_DIR}/idl/salome:${GUI_ROOT_DIR}/idl/salome:${GEOM_ROOT_DIR}/idl/salome:${SMESH_ROOT_DIR}/idl/salome:${MED_ROOT_DIR}/idl/salome
+
+@COMMENCE@
+
+# .po files to transform in .qm
+PO_FILES = \
+ BLSURFPlugin_images.po \
+ BLSURFPlugin_msg_en.po
+
+# Libraries targets
+LIB = libBLSURFPluginGUI.la
+
+LIB_SRC = \
+ BLSURFPluginGUI.cxx \
+ BLSURFPluginGUI_HypothesisCreator.cxx
+
+LIB_MOC = \
+ BLSURFPluginGUI_HypothesisCreator.h
+
+LIB_CLIENT_IDL = \
+ SALOME_Exception.idl \
+ SALOME_GenericObj.idl \
+ SALOME_Component.idl \
+ SALOME_Comm.idl \
+ GEOM_Gen.idl \
+ MED.idl \
+ SMESH_Gen.idl \
+ SMESH_Mesh.idl \
+ SMESH_Group.idl \
+ BLSURFPlugin_Algorithm.idl
+
+LIB_SERVER_IDL =
+
+# additionnal information to compil and link file
+
+CPPFLAGS += $(QT_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) \
+ -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome \
+ -I${GEOM_ROOT_DIR}/include/salome -I${SMESH_ROOT_DIR}/include/salome \
+ $(BOOST_CPPFLAGS)
+CXXFLAGS += -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome \
+ -I${GEOM_ROOT_DIR}/include/salome -I${SMESH_ROOT_DIR}/include/salome
+
+LDFLAGS += -lSMESH $(OCC_KERNEL_LIBS) -L${KERNEL_ROOT_DIR}/lib/salome \
+ -L${GUI_ROOT_DIR}/lib/salome -L${GEOM_ROOT_DIR}/lib/salome \
+ -L${SMESH_ROOT_DIR}/lib/salome
+
+@CONCLUDE@
--- /dev/null
+# 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
+# Author : Patrick GOLDBRONN (CEA)
+# Module : SMESH
+
+top_srcdir=@top_srcdir@
+top_builddir=..
+srcdir=@srcdir@
+VPATH=.:@srcdir@
+
+@COMMENCE@
+
+SUBDIRS = BLSURFPlugin GUI
+
+@MODULE@