diff --git a/src/BasicGUI/GEOM_BasicGUI.hxx b/src/BasicGUI/GEOM_BasicGUI.hxx new file mode 100755 index 000000000..ba917e55d --- /dev/null +++ b/src/BasicGUI/GEOM_BasicGUI.hxx @@ -0,0 +1,47 @@ +// 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 : GEOM_BasicGUI.hxx +// Author : Alexander A. BORODIN +// Module : GEOM + +#ifndef _GEOM_BasicGUI_HXX_ +#define _GEOM_BasicGUI_HXX_ + +#ifdef WNT + #if defined BASICGUI_EXPORTS + #if defined WIN32 + #define GEOM_BASICGUI_EXPORT __declspec( dllexport ) + #else + #define GEOM_BASICGUI_EXPORT + #endif + #else + #if defined WIN32 + #define GEOM_BASICGUI_EXPORT __declspec( dllimport ) + #else + #define GEOM_BASICGUI_EXPORT + #endif + #endif +#else + #define GEOM_BASICGUI_EXPORT +#endif + +#endif diff --git a/src/BlocksGUI/GEOM_BlocksGUI.hxx b/src/BlocksGUI/GEOM_BlocksGUI.hxx new file mode 100755 index 000000000..83f6cbc64 --- /dev/null +++ b/src/BlocksGUI/GEOM_BlocksGUI.hxx @@ -0,0 +1,47 @@ +// 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 : GEOM_BlocksGUI.hxx +// Author : Alexander A. BORODIN +// Module : GEOM + +#ifndef _GEOM_BlocksGUI_HXX_ +#define _GEOM_BlocksGUI_HXX_ + +#ifdef WNT + #if defined BLOCKSGUI_EXPORTS + #if defined WIN32 + #define GEOM_BLOCKSGUI_EXPORT __declspec( dllexport ) + #else + #define GEOM_BLOCKSGUI_EXPORT + #endif + #else + #if defined WIN32 + #define GEOM_BLOCKSGUI_EXPORT __declspec( dllimport ) + #else + #define GEOM_BLOCKSGUI_EXPORT + #endif + #endif +#else + #define GEOM_BLOCKSGUI_EXPORT +#endif + +#endif diff --git a/src/BuildGUI/GEOM_BuildGUI.hxx b/src/BuildGUI/GEOM_BuildGUI.hxx new file mode 100755 index 000000000..7a36f8552 --- /dev/null +++ b/src/BuildGUI/GEOM_BuildGUI.hxx @@ -0,0 +1,47 @@ +// 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 : GEOM_BuildGUI.hxx +// Author : Alexander A. BORODIN +// Module : GEOM + +#ifndef _GEOM_BuildGUI_HXX_ +#define _GEOM_BuildGUI_HXX_ + +#ifdef WNT + #if defined BUILDGUI_EXPORTS + #if defined WIN32 + #define GEOM_BUILDGUI_EXPORT __declspec( dllexport ) + #else + #define GEOM_BUILDGUI_EXPORT + #endif + #else + #if defined WIN32 + #define GEOM_BUILDGUI_EXPORT __declspec( dllimport ) + #else + #define GEOM_BUILDGUI_EXPORT + #endif + #endif +#else + #define GEOM_BUILDGUI_EXPORT +#endif + +#endif diff --git a/src/DlgRef/DlgRef_2Sel1List_QTD.cxx b/src/DlgRef/DlgRef_2Sel1List_QTD.cxx new file mode 100644 index 000000000..ec428c3fe --- /dev/null +++ b/src/DlgRef/DlgRef_2Sel1List_QTD.cxx @@ -0,0 +1,125 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/**************************************************************************** +** Form implementation generated from reading ui file 'DlgRef_4Sel1List_QTD.ui' +** +** Created: lun oct 31 17:21:04 2006 +** by: The User Interface Compiler (uic) +** +** WARNING! All changes made in this file will be lost! +****************************************************************************/ +#include "DlgRef_2Sel1List_QTD.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * Constructs a DlgRef_2Sel1List_QTD which is a child of 'parent', with the + * name 'name' and widget flags set to 'f'. + */ +DlgRef_2Sel1List_QTD::DlgRef_2Sel1List_QTD( QWidget* parent, const char* name, WFlags fl ) + : QWidget( parent, name, fl ) +{ + if ( !name ) + setName( "DlgRef_2Sel1List_QTD" ); + resize( 129, 175 ); + setCaption( trUtf8( "DlgRef_2Sel1List_QTD" ) ); + DlgRef_2Sel1List_QTDLayout = new QGridLayout( this, 1, 1, 0, 6, "DlgRef_2Sel1List_QTDLayout"); + + GroupBox1 = new QGroupBox( this, "GroupBox1" ); + GroupBox1->setTitle( trUtf8( "" ) ); + GroupBox1->setColumnLayout(0, Qt::Vertical ); + GroupBox1->layout()->setSpacing( 6 ); + GroupBox1->layout()->setMargin( 11 ); + GroupBox1Layout = new QGridLayout( GroupBox1->layout() ); + GroupBox1Layout->setAlignment( Qt::AlignTop ); + + Layout1 = new QGridLayout( 0, 1, 1, 0, 6, "Layout1"); + + TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); + TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); + TextLabel1->setText( trUtf8( "TL1" ) ); + + Layout1->addWidget( TextLabel1, 0, 0 ); + + PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); + PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); + PushButton1->setText( trUtf8( "" ) ); + + Layout1->addWidget( PushButton1, 0, 1 ); + + LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); + + Layout1->addWidget( LineEdit1, 0, 2 ); + + + TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); + TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); + TextLabel2->setText( trUtf8( "TL2" ) ); + + Layout1->addWidget( TextLabel2, 1, 0 ); + + PushButton2 = new QPushButton( GroupBox1, "PushButton2" ); + PushButton2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton2->sizePolicy().hasHeightForWidth() ) ); + PushButton2->setText( trUtf8( "" ) ); + + Layout1->addWidget( PushButton2, 1, 1 ); + + LineEdit2 = new QLineEdit( GroupBox1, "LineEdit2" ); + + Layout1->addWidget( LineEdit2, 1, 2 ); + + + TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); + TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); + TextLabel3->setText( trUtf8( "TL3" ) ); + + Layout1->addMultiCellWidget( TextLabel3, 2, 2, 0, 1 ); + + ComboBox1 = new QComboBox( FALSE, GroupBox1, "ComboBox1" ); + ComboBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, ComboBox1->sizePolicy().hasHeightForWidth() ) ); + + Layout1->addWidget( ComboBox1, 2, 2 ); + + + GroupBox1Layout->addLayout( Layout1, 0, 0 ); + + DlgRef_2Sel1List_QTDLayout->addWidget( GroupBox1, 0, 0 ); + + QSpacerItem* spacer = new QSpacerItem( 0, 80, QSizePolicy::Minimum, QSizePolicy::Expanding ); + Layout1->addItem( spacer, 5, 2 ); + +} + +/* + * Destroys the object and frees any allocated resources + */ +DlgRef_2Sel1List_QTD::~DlgRef_2Sel1List_QTD() +{ + // no need to delete child widgets, Qt does it all for us +} + diff --git a/src/DlgRef/DlgRef_2Sel1List_QTD.h b/src/DlgRef/DlgRef_2Sel1List_QTD.h new file mode 100644 index 000000000..a5665797e --- /dev/null +++ b/src/DlgRef/DlgRef_2Sel1List_QTD.h @@ -0,0 +1,69 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +/**************************************************************************** +** Form interface generated from reading ui file 'DlgRef_2Sel1List_QTD.ui' +** +** Created: lun oct 31 17:21:03 2006 +** by: The User Interface Compiler (uic) +** +** WARNING! All changes made in this file will be lost! +****************************************************************************/ +#ifndef DLGREF_2SEL1LIST_QTD_H +#define DLGREF_2SEL1LIST_QTD_H + +#include "GEOM_DlgRef.hxx" + +#include +#include +class QVBoxLayout; +class QHBoxLayout; +class QGridLayout; +class QComboBox; +class QGroupBox; +class QLabel; +class QLineEdit; +class QPushButton; + +class GEOM_DLGREF_EXPORT DlgRef_2Sel1List_QTD : public QWidget +{ + Q_OBJECT + +public: + DlgRef_2Sel1List_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); + ~DlgRef_2Sel1List_QTD(); + + QGroupBox* GroupBox1; + QLineEdit* LineEdit2; + QPushButton* PushButton1; + QPushButton* PushButton2; + QLabel* TextLabel1; + QLineEdit* LineEdit1; + QLabel* TextLabel2; + QComboBox* ComboBox1; + QLabel* TextLabel3; + + +protected: + QGridLayout* DlgRef_2Sel1List_QTDLayout; + QGridLayout* GroupBox1Layout; + QGridLayout* Layout1; +}; + +#endif // DLGREF_2SEL1LIST_QTD_H diff --git a/src/DlgRef/DlgRef_4Sel1Spin2Check.cxx b/src/DlgRef/DlgRef_4Sel1Spin2Check.cxx new file mode 100644 index 000000000..8fc0e900a --- /dev/null +++ b/src/DlgRef/DlgRef_4Sel1Spin2Check.cxx @@ -0,0 +1,106 @@ +// GEOM GEOMGUI : GUI for Geometry component +// +// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// +// +// File : DlgRef_4Sel1Spin2Check.cxx +// Author : Damien COQUERET +// Module : GEOM +// $Header: + +#include "DlgRef_4Sel1Spin2Check.h" + +#include +#include +#include +#include +#include +#include +#include + +/* + * Constructs a DlgRef_4Sel1Spin2Check which is a child of 'parent', with the + * name 'name' and widget flags set to 'f' + */ +DlgRef_4Sel1Spin2Check::DlgRef_4Sel1Spin2Check(QWidget* parent, const char* name, WFlags fl) + :DlgRef_4Sel1Spin2Check_QTD(parent, name, fl) +{ + SpinBox1->close(TRUE); + SpinBox_DX = new DlgRef_SpinBox(GroupBox1, "SpinBox_DX"); + Layout1->addWidget(SpinBox_DX, 4, 2); +} + + +/* + * Destroys the object and frees any allocated resources + */ +DlgRef_4Sel1Spin2Check::~DlgRef_4Sel1Spin2Check() +{ + // no need to delete child widgets, Qt does it all for us +} + +void DlgRef_4Sel1Spin2Check::ShowRows(int fromRow, int toRow, bool toShow) +{ + typedef void (QWidget::* ShowFun)(); + ShowFun pShowFun; + + if (toShow) + pShowFun = &QWidget::show; + else + pShowFun = &QWidget::hide; + + if (fromRow >= 0 && toRow >= 0 && toRow >= fromRow) + { + if ( fromRow == 0) + { + (TextLabel1->*pShowFun)(); + (PushButton1->*pShowFun)(); + (LineEdit1->*pShowFun)(); + } + if ( fromRow <= 1 && 1 <= toRow) + { + (TextLabel2->*pShowFun)(); + (PushButton2->*pShowFun)(); + (LineEdit2->*pShowFun)(); + } + if ( fromRow <= 2 && 2 <= toRow) + { + (TextLabel4->*pShowFun)(); + (PushButton4->*pShowFun)(); + (LineEdit4->*pShowFun)(); + } + if ( fromRow <= 3 && 3 <= toRow) + { + (TextLabel5->*pShowFun)(); + (PushButton5->*pShowFun)(); + (LineEdit5->*pShowFun)(); + } + if ( fromRow <= 4 && 4 <= toRow) + { + (TextLabel3->*pShowFun)(); + (SpinBox_DX->*pShowFun)(); + (CheckButton2->*pShowFun)(); + } + if ( fromRow <= 5 && 5 <= toRow) + (CheckButton1->*pShowFun)(); + } +} + diff --git a/src/DlgRef/DlgRef_4Sel1Spin2Check.h b/src/DlgRef/DlgRef_4Sel1Spin2Check.h new file mode 100644 index 000000000..ab366bac6 --- /dev/null +++ b/src/DlgRef/DlgRef_4Sel1Spin2Check.h @@ -0,0 +1,51 @@ +// GEOM GEOMGUI : GUI for Geometry component +// +// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// +// +// File : DlgRef_4Sel1Spin2Check.h +// Author : Damien COQUERET +// Module : GEOM +// $Header: + +#ifndef DLGREF_4SEL1SPIN2CHECK_H +#define DLGREF_4SEL1SPIN2CHECK_H + +#include "GEOM_DlgRef.hxx" + +#include "DlgRef_4Sel1Spin2Check_QTD.h" +#include "DlgRef_SpinBox.h" + +class GEOM_DLGREF_EXPORT DlgRef_4Sel1Spin2Check : public DlgRef_4Sel1Spin2Check_QTD +{ + Q_OBJECT + +public: + DlgRef_4Sel1Spin2Check(QWidget* parent = 0, const char* name = 0, WFlags fl = 0); + ~DlgRef_4Sel1Spin2Check(); + + DlgRef_SpinBox* SpinBox_DX; + + void ShowRows(int fromRow, int toRow, bool toShow = true); + +}; + +#endif // DLGREF_4SEL1SPIN2CHECK_H diff --git a/src/DlgRef/DlgRef_4Sel1Spin2Check_QTD.cxx b/src/DlgRef/DlgRef_4Sel1Spin2Check_QTD.cxx new file mode 100644 index 000000000..0039c9d26 --- /dev/null +++ b/src/DlgRef/DlgRef_4Sel1Spin2Check_QTD.cxx @@ -0,0 +1,158 @@ +/**************************************************************************** +** Form implementation generated from reading ui file 'DlgRef_4Sel1Spin2Check_QTD.ui' +** +** Created: Wed Oct 25 20:32:42 2006 +** by: The User Interface Compiler ($Id$) +** +** WARNING! All changes made in this file will be lost! +****************************************************************************/ + +#include "DlgRef_4Sel1Spin2Check_QTD.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * Constructs a DlgRef_4Sel1Spin2Check_QTD as a child of 'parent', with the + * name 'name' and widget flags set to 'f'. + */ +DlgRef_4Sel1Spin2Check_QTD::DlgRef_4Sel1Spin2Check_QTD( QWidget* parent, const char* name, WFlags fl ) + : QWidget( parent, name, fl ) +{ + if ( !name ) + setName( "DlgRef_4Sel1Spin2Check_QTD" ); + DlgRef_4Sel1Spin2Check_QTDLayout = new QVBoxLayout( this, 0, 6, "DlgRef_4Sel1Spin2Check_QTDLayout"); + + GroupBox1 = new QGroupBox( this, "GroupBox1" ); + GroupBox1->setColumnLayout(0, Qt::Vertical ); + GroupBox1->layout()->setSpacing( 6 ); + GroupBox1->layout()->setMargin( 11 ); + GroupBox1Layout = new QVBoxLayout( GroupBox1->layout() ); + GroupBox1Layout->setAlignment( Qt::AlignTop ); + + Layout1 = new QGridLayout( 0, 1, 1, 6, 6, "Layout1"); + + CheckButton2 = new QCheckBox( GroupBox1, "CheckButton2" ); + + Layout1->addWidget( CheckButton2, 4, 3 ); + + PushButton2 = new QPushButton( GroupBox1, "PushButton2" ); + PushButton2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton2->sizePolicy().hasHeightForWidth() ) ); + + Layout1->addWidget( PushButton2, 1, 1 ); + + LineEdit5 = new QLineEdit( GroupBox1, "LineEdit5" ); + + Layout1->addMultiCellWidget( LineEdit5, 3, 3, 2, 3 ); + + TextLabel5 = new QLabel( GroupBox1, "TextLabel5" ); + TextLabel5->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel5->sizePolicy().hasHeightForWidth() ) ); + + Layout1->addWidget( TextLabel5, 3, 0 ); + + TextLabel1 = new QLabel( GroupBox1, "TextLabel1" ); + TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) ); + + Layout1->addWidget( TextLabel1, 0, 0 ); + + LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" ); + + Layout1->addMultiCellWidget( LineEdit1, 0, 0, 2, 3 ); + + SpinBox1 = new QSpinBox( GroupBox1, "SpinBox1" ); + SpinBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, SpinBox1->sizePolicy().hasHeightForWidth() ) ); + + Layout1->addWidget( SpinBox1, 4, 2 ); + + CheckButton1 = new QCheckBox( GroupBox1, "CheckButton1" ); + + Layout1->addMultiCellWidget( CheckButton1, 5, 5, 0, 2 ); + + TextLabel2 = new QLabel( GroupBox1, "TextLabel2" ); + TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) ); + + Layout1->addWidget( TextLabel2, 1, 0 ); + + PushButton5 = new QPushButton( GroupBox1, "PushButton5" ); + PushButton5->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton5->sizePolicy().hasHeightForWidth() ) ); + + Layout1->addWidget( PushButton5, 3, 1 ); + + PushButton4 = new QPushButton( GroupBox1, "PushButton4" ); + PushButton4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton4->sizePolicy().hasHeightForWidth() ) ); + + Layout1->addWidget( PushButton4, 2, 1 ); + + TextLabel4 = new QLabel( GroupBox1, "TextLabel4" ); + TextLabel4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel4->sizePolicy().hasHeightForWidth() ) ); + + Layout1->addWidget( TextLabel4, 2, 0 ); + + PushButton1 = new QPushButton( GroupBox1, "PushButton1" ); + PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) ); + + Layout1->addWidget( PushButton1, 0, 1 ); + + LineEdit4 = new QLineEdit( GroupBox1, "LineEdit4" ); + + Layout1->addMultiCellWidget( LineEdit4, 2, 2, 2, 3 ); + + LineEdit2 = new QLineEdit( GroupBox1, "LineEdit2" ); + + Layout1->addMultiCellWidget( LineEdit2, 1, 1, 2, 3 ); + + TextLabel3 = new QLabel( GroupBox1, "TextLabel3" ); + TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) ); + + Layout1->addWidget( TextLabel3, 4, 0 ); + GroupBox1Layout->addLayout( Layout1 ); + DlgRef_4Sel1Spin2Check_QTDLayout->addWidget( GroupBox1 ); + languageChange(); + resize( QSize(261, 198).expandedTo(minimumSizeHint()) ); + clearWState( WState_Polished ); + + // tab order + setTabOrder( PushButton1, LineEdit1 ); + setTabOrder( LineEdit1, PushButton2 ); + setTabOrder( PushButton2, LineEdit2 ); + setTabOrder( LineEdit2, SpinBox1 ); + setTabOrder( SpinBox1, CheckButton2 ); +} + +/* + * Destroys the object and frees any allocated resources + */ +DlgRef_4Sel1Spin2Check_QTD::~DlgRef_4Sel1Spin2Check_QTD() +{ + // no need to delete child widgets, Qt does it all for us +} + +/* + * Sets the strings of the subwidgets using the current + * language. + */ +void DlgRef_4Sel1Spin2Check_QTD::languageChange() +{ + setCaption( tr( "DlgRef_4Sel1Spin2Check_QTD" ) ); + GroupBox1->setTitle( QString::null ); + CheckButton2->setText( QString::null ); + PushButton2->setText( QString::null ); + TextLabel5->setText( tr( "TL5" ) ); + TextLabel1->setText( tr( "TL1" ) ); + CheckButton1->setText( QString::null ); + TextLabel2->setText( tr( "TL2" ) ); + PushButton5->setText( QString::null ); + PushButton4->setText( QString::null ); + TextLabel4->setText( tr( "TL4" ) ); + PushButton1->setText( QString::null ); + TextLabel3->setText( tr( "TL3" ) ); +} + diff --git a/src/DlgRef/DlgRef_4Sel1Spin2Check_QTD.h b/src/DlgRef/DlgRef_4Sel1Spin2Check_QTD.h new file mode 100644 index 000000000..0d1e1d459 --- /dev/null +++ b/src/DlgRef/DlgRef_4Sel1Spin2Check_QTD.h @@ -0,0 +1,65 @@ +/**************************************************************************** +** Form interface generated from reading ui file 'DlgRef_4Sel1Spin2Check_QTD.ui' +** +** Created: Wed Oct 25 20:32:41 2006 +** by: The User Interface Compiler ($Id$) +** +** WARNING! All changes made in this file will be lost! +****************************************************************************/ + +#ifndef DLGREF_4SEL1SPIN2CHECK_QTD_H +#define DLGREF_4SEL1SPIN2CHECK_QTD_H + +#include "GEOM_DlgRef.hxx" + +#include +#include + +class QVBoxLayout; +class QHBoxLayout; +class QGridLayout; +class QSpacerItem; +class QGroupBox; +class QCheckBox; +class QPushButton; +class QLineEdit; +class QLabel; +class QSpinBox; + +class GEOM_DLGREF_EXPORT DlgRef_4Sel1Spin2Check_QTD : public QWidget +{ + Q_OBJECT + +public: + DlgRef_4Sel1Spin2Check_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); + ~DlgRef_4Sel1Spin2Check_QTD(); + + QGroupBox* GroupBox1; + QCheckBox* CheckButton2; + QPushButton* PushButton2; + QLineEdit* LineEdit5; + QLabel* TextLabel5; + QLabel* TextLabel1; + QLineEdit* LineEdit1; + QSpinBox* SpinBox1; + QCheckBox* CheckButton1; + QLabel* TextLabel2; + QPushButton* PushButton5; + QPushButton* PushButton4; + QLabel* TextLabel4; + QPushButton* PushButton1; + QLineEdit* LineEdit4; + QLineEdit* LineEdit2; + QLabel* TextLabel3; + +protected: + QVBoxLayout* DlgRef_4Sel1Spin2Check_QTDLayout; + QVBoxLayout* GroupBox1Layout; + QGridLayout* Layout1; + +protected slots: + virtual void languageChange(); + +}; + +#endif // DLGREF_4SEL1SPIN2CHECK_QTD_H diff --git a/src/DlgRef/GEOM_DlgRef.hxx b/src/DlgRef/GEOM_DlgRef.hxx new file mode 100755 index 000000000..f0497ac78 --- /dev/null +++ b/src/DlgRef/GEOM_DlgRef.hxx @@ -0,0 +1,47 @@ +// 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 : GEOM_DlgRef.hxx +// Author : Alexander A. BORODIN +// Module : GEOM + +#ifndef _GEOM_DlgRef_HXX_ +#define _GEOM_DlgRef_HXX_ + +#ifdef WNT + #if defined DLGREF_EXPORTS + #if defined WIN32 + #define GEOM_DLGREF_EXPORT __declspec( dllexport ) + #else + #define GEOM_DLGREF_EXPORT + #endif + #else + #if defined WIN32 + #define GEOM_DLGREF_EXPORT __declspec( dllimport ) + #else + #define GEOM_DLGREF_EXPORT + #endif + #endif +#else + #define GEOM_DLGREF_EXPORT +#endif + +#endif diff --git a/src/DlgRef/UIFiles/DlgRef_4Sel1Spin2Check_QTD.ui b/src/DlgRef/UIFiles/DlgRef_4Sel1Spin2Check_QTD.ui new file mode 100644 index 000000000..2d23f60c5 --- /dev/null +++ b/src/DlgRef/UIFiles/DlgRef_4Sel1Spin2Check_QTD.ui @@ -0,0 +1,264 @@ + +DlgRef_4Sel1Spin2Check_QTD + + + DlgRef_4Sel1Spin2Check_QTD + + + + 0 + 0 + 261 + 198 + + + + DlgRef_4Sel1Spin2Check_QTD + + + + unnamed + + + 0 + + + 6 + + + + GroupBox1 + + + + + + + unnamed + + + 11 + + + 6 + + + + Layout1 + + + + unnamed + + + 6 + + + + CheckButton2 + + + + + + + + PushButton2 + + + + 0 + 0 + 0 + 0 + + + + + + + + + LineEdit5 + + + + + TextLabel5 + + + + 0 + 0 + 0 + 0 + + + + TL5 + + + + + TextLabel1 + + + + 0 + 0 + 0 + 0 + + + + TL1 + + + + + LineEdit1 + + + + + SpinBox1 + + + + 7 + 0 + 0 + 0 + + + + + + CheckButton1 + + + + + + + + TextLabel2 + + + + 0 + 0 + 0 + 0 + + + + TL2 + + + + + PushButton5 + + + + 0 + 0 + 0 + 0 + + + + + + + + + PushButton4 + + + + 0 + 0 + 0 + 0 + + + + + + + + + TextLabel4 + + + + 0 + 0 + 0 + 0 + + + + TL4 + + + + + PushButton1 + + + + 0 + 0 + 0 + 0 + + + + + + + + + LineEdit4 + + + + + LineEdit2 + + + + + TextLabel3 + + + + 0 + 0 + 0 + 0 + + + + TL3 + + + + + + + + + + PushButton1 + LineEdit1 + PushButton2 + LineEdit2 + SpinBox1 + CheckButton2 + + + diff --git a/src/EntityGUI/GEOM_EntityGUI.hxx b/src/EntityGUI/GEOM_EntityGUI.hxx new file mode 100755 index 000000000..2a42f3423 --- /dev/null +++ b/src/EntityGUI/GEOM_EntityGUI.hxx @@ -0,0 +1,47 @@ +// 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 : GEOM_EntityGUI.hxx +// Author : Alexander A. BORODIN +// Module : GEOM + +#ifndef _GEOM_EntityGUI_HXX_ +#define _GEOM_EntityGUI_HXX_ + +#ifdef WNT + #if defined ENTITYGUI_EXPORTS + #if defined WIN32 + #define GEOM_ENTITYGUI_EXPORT __declspec( dllexport ) + #else + #define GEOM_ENTITYGUI_EXPORT + #endif + #else + #if defined WIN32 + #define GEOM_ENTITYGUI_EXPORT __declspec( dllimport ) + #else + #define GEOM_ENTITYGUI_EXPORT + #endif + #endif +#else + #define GEOM_ENTITYGUI_EXPORT +#endif + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_Builder.cdl b/src/GEOMAlgo/GEOMAlgo_Builder.cdl new file mode 100755 index 000000000..42eb89e86 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Builder.cdl @@ -0,0 +1,247 @@ +-- Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +-- +-- File: GEOMAlgo_Builder.cdl +-- Created: +-- Author: Peter KURNEV + + +class Builder from GEOMAlgo + inherits BuilderShape from GEOMAlgo + + ---Purpose: + +uses + ShapeEnum from TopAbs, + Shape from TopoDS, + + ListOfShape from TopTools, + IndexedDataMapOfShapeListOfShape from TopTools, + IndexedDataMapOfShapeShape from TopTools, + MapOfShape from TopTools, + Image from BRepAlgo, + + DSFiller from NMTTools, + PDSFiller from NMTTools + +--raises + +is + + Create + ---Purpose: Empty constructor + returns Builder from GEOMAlgo; + ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_Builder();" + + Perform(me:out) + ---Purpose: Performs calculations + is redefined; + + PerformWithFiller(me:out; + theDSF: DSFiller from NMTTools) + ---Purpose: Performs calculations using prepared DSFiller + -- object theDSF + is virtual; + + AddShape (me:out; + theShape: Shape from TopoDS) + ---Purpose: Adds argument theShape of the operation + is virtual; + + Clear(me:out) + ---Purpose: Clears internal fields and arguments + is virtual; + + Shapes(me) + ---Purpose: Returns the arguments of the operation + returns ListOfShape from TopTools; + ---C++: return const & + -- + -- History support + -- + Generated (me:out; + theS : Shape from TopoDS) + ---Purpose: Returns the list of shapes generated from the + -- shape theS. + returns ListOfShape from TopTools + is redefined; + ---C++: return const & + + Modified (me:out; + theS : Shape from TopoDS) + ---Purpose: Returns the list of shapes modified from the shape + -- theS. + returns ListOfShape from TopTools + is redefined; + ---C++: return const & + + IsDeleted (me:out; + theS : Shape from TopoDS) + ---Purpose: Returns true if the shape theS has been deleted. + returns Boolean from Standard + is redefined; + -- + -- protected methods + -- + PrepareHistory (me:out) + ---Purpose: Prepare information for history support + is redefined protected; + + ClearInternals(me:out) + ---Purpose: Clears internal fields + is virtual protected; + + Prepare(me:out) + ---Purpose: Provides preparing actions + is virtual protected; + + PostTreat(me:out) + ---Purpose: Provides post-tratment actions + is virtual protected; + + AddShape1 (me:out; + theShape: Shape from TopoDS) + ---Purpose: Append the argument theShape to + -- typified lists of arguments myShapes1 + is protected; + + BuildResult(me:out; + theType: ShapeEnum from TopAbs) + ---Purpose: Build the resulting shapes of type theType + is virtual protected; + + -- Vertices + FillImagesVertices(me:out) + ---Purpose: Fill Images for vertices + is protected; + + -- Edges + FillImagesEdges(me:out) + ---Purpose: Fill Images for edges + is protected; + -- + -- Faces + FillImagesFaces(me:out) + ---Purpose: Fill Images for faces + is protected; + + FillIn2DParts(me:out) + ---Purpose: For each interferred face find split edges + -- that are in 2-D domain of the face + is protected; + + BuildSplitFaces(me:out) + ---Purpose: Build draft faces + is protected; + + FillSameDomainFaces(me:out) + ---Purpose: Among draft faces find same domain faces + is protected; + + FillImagesFaces1(me:out) + ---Purpose: Fill Images for faces + -- taking into account same domain faces + is protected; + + FillInternalVertices(me:out) + ---Purpose: Update Images for faces by + -- internal vertices + is protected; + -- + -- Wires, Shells, Compsolids, Compounds + FillImagesContainers(me:out; + theType:ShapeEnum from TopAbs) + ---Purpose: Fill Images for Wires, Shells, Compsolids, Compounds + is protected; + -- + -- Solids + FillImagesSolids(me:out) + ---Purpose: Fill Images for solids + is protected; + + FillIn3DParts(me:out) + ---Purpose: For each interferred solid find split faces + -- that are in 3-D domain of the solid + is protected; + + BuildSplitSolids(me:out) + ---Purpose: Build draft solids + is protected; + + FillInternalShapes(me:out) + ---Purpose: Update draft solids by + -- internal shells, edges, vertices + is protected; + + BuildDraftSolid(me:out; + theSolid: Shape from TopoDS; + theDraftSolid: out Shape from TopoDS; + theInternalFaces: out ListOfShape from TopTools) + ---Purpose: Build solid theDraftSolid that consists of + -- non-internal split faces of the solid + -- theSolid. + -- All splits of internal faces of + -- theSolid are in the list: theInternalFaces + is protected; + -- + -- debug methods + -- + AddCompound (me:out; + theShape: Shape from TopoDS); + ---Purpose: Adds arguments of the operation as + -- shapes of upper level of container shape theShape + Shapes1(me; + theType: Integer from Standard) + ---Purpose: Returns list of arguments of type theType + returns ListOfShape from TopTools; + ---C++: return const & + + Images(me) + ---Purpose: Returns image shapes + returns Image from BRepAlgo; + ---C++: return const & + + InParts(me; + theShape:Shape from TopoDS) + ---Purpose: Returns split-parts of shapes that have + -- state IN for the domain of shape theShape + returns ListOfShape from TopTools; + ---C++: return const & + + -- ===================================================== + +fields + myDSFiller : PDSFiller from NMTTools is protected; + myShapes : ListOfShape from TopTools is protected; + -- Common usage + myNbTypes : Integer from Standard is protected; + myMapFence : MapOfShape from TopTools is protected; + myShapes1 : ListOfShape from TopTools[9] is protected; + myImages : Image from BRepAlgo is protected; + myInParts : IndexedDataMapOfShapeListOfShape from TopTools is protected; + + -- Faces + mySplitFaces : Image from BRepAlgo is protected; + mySameDomainShapes: IndexedDataMapOfShapeShape from TopTools is protected; + -- solids + myDraftSolids : IndexedDataMapOfShapeShape from TopTools is protected; + + -- +end Builder; + diff --git a/src/GEOMAlgo/GEOMAlgo_Builder.cxx b/src/GEOMAlgo/GEOMAlgo_Builder.cxx new file mode 100755 index 000000000..0ab651cde --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Builder.cxx @@ -0,0 +1,389 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: GEOMAlgo_Builder.cxx +// Created: +// Author: Peter KURNEV + + +#include + +#include + +#include +#include +#include + +#include + +#include +#include +#include + +#include + +#include + +#include + +//======================================================================= +//function : +//purpose : +//======================================================================= + GEOMAlgo_Builder::GEOMAlgo_Builder() +: + GEOMAlgo_BuilderShape() +{ + myNbTypes=9; + myDSFiller=NULL; +} +//======================================================================= +//function : ~ +//purpose : +//======================================================================= + GEOMAlgo_Builder::~GEOMAlgo_Builder() +{ +} +//======================================================================= +//function : AddCompound +//purpose : +//======================================================================= + void GEOMAlgo_Builder::AddCompound(const TopoDS_Shape& theShape) +{ + TopoDS_Iterator aIt; + // + aIt.Initialize(theShape); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aS=aIt.Value(); + AddShape(aS); + } +} +//======================================================================= +//function : AddShape +//purpose : +//======================================================================= + void GEOMAlgo_Builder::AddShape(const TopoDS_Shape& theShape) +{ + if (myMapFence.Add(theShape)) { + myShapes.Append(theShape); + } +} +//======================================================================= +//function : Shapes +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_Builder::Shapes()const +{ + return myShapes; +} +//======================================================================= +//function : Clear +//purpose : +//======================================================================= + void GEOMAlgo_Builder::Clear() +{ + myShapes.Clear(); + ClearInternals(); +} +//======================================================================= +//function : ClearInternals +//purpose : +//======================================================================= + void GEOMAlgo_Builder::ClearInternals() +{ + Standard_Integer i; + // + for (i=0; iSetCompositeShape(aCS); + pDSF->Perform(); + // + PerformWithFiller(*pDSF); +} +//======================================================================= +//function : PerformWithFiller +//purpose : +//======================================================================= + void GEOMAlgo_Builder::PerformWithFiller(const NMTTools_DSFiller& theDSF) +{ + myErrorStatus=0; + // + Standard_Boolean bIsDone; + // + // 0. myDSFiller + myDSFiller=(NMTTools_DSFiller *)&theDSF; + // + bIsDone=myDSFiller->IsDone(); + if (!bIsDone) { + myErrorStatus=2; // DSFiller is failed + return; + } + // + // 1. Clear Internal fields + ClearInternals(); + // + // 2. Prepare + Prepare(); + if (myErrorStatus) { + return; + } + // + // 3. Fill Images + // + // 3.1 Vertices + FillImagesVertices(); + if (myErrorStatus) { + return; + } + // + BuildResult(TopAbs_VERTEX); + if (myErrorStatus) { + return; + } + // 3.2 Edges + FillImagesEdges(); + if (myErrorStatus) { + return; + } + + BuildResult(TopAbs_EDGE); + if (myErrorStatus) { + return; + } + // 3.3 Wires + FillImagesContainers(TopAbs_WIRE); + if (myErrorStatus) { + return; + } + + BuildResult(TopAbs_WIRE); + if (myErrorStatus) { + return; + } + + // 3.4 Faces + FillImagesFaces(); + if (myErrorStatus) { + return; + } + + BuildResult(TopAbs_FACE); + if (myErrorStatus) { + return; + } + // 3.5 Shells + + FillImagesContainers(TopAbs_SHELL); + if (myErrorStatus) { + return; + } + + BuildResult(TopAbs_SHELL); + if (myErrorStatus) { + return; + } + // 3.6 Solids + FillImagesSolids(); + if (myErrorStatus) { + return; + } + + BuildResult(TopAbs_SOLID); + if (myErrorStatus) { + return; + } + // 3.7 CompSolids + FillImagesContainers(TopAbs_COMPSOLID); + if (myErrorStatus) { + return; + } + + BuildResult(TopAbs_COMPSOLID); + if (myErrorStatus) { + return; + } + // 3.8 Compounds + FillImagesContainers(TopAbs_COMPOUND); + if (myErrorStatus) { + return; + } + + BuildResult(TopAbs_COMPOUND); + if (myErrorStatus) { + return; + } + // + // 4.History + PrepareHistory(); + // + // 5 Post-treatment + PostTreat(); +} +// +// myErrorStatus +// +// 0 - Ok +// 1 - The object is just initialized +// 2 - DSFiller is failed +// 10 - No shapes to process +// 30 - SolidBuilder failed diff --git a/src/GEOMAlgo/GEOMAlgo_Builder.hxx b/src/GEOMAlgo/GEOMAlgo_Builder.hxx new file mode 100644 index 000000000..b6bc2e9e1 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Builder.hxx @@ -0,0 +1,245 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_Builder_HeaderFile +#define _GEOMAlgo_Builder_HeaderFile + +#ifndef _NMTTools_PDSFiller_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _TopTools_MapOfShape_HeaderFile +#include +#endif +#ifndef _BRepAlgo_Image_HeaderFile +#include +#endif +#ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile +#include +#endif +#ifndef _TopTools_IndexedDataMapOfShapeShape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_BuilderShape_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +#ifndef _TopAbs_ShapeEnum_HeaderFile +#include +#endif +class NMTTools_DSFiller; +class TopoDS_Shape; +class TopTools_ListOfShape; +class BRepAlgo_Image; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class GEOMAlgo_Builder : public GEOMAlgo_BuilderShape { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + +//! Empty constructor
+Standard_EXPORT GEOMAlgo_Builder(); +Standard_EXPORT virtual ~GEOMAlgo_Builder(); + +//! Performs calculations
+Standard_EXPORT virtual void Perform() ; + +//! Performs calculations using prepared DSFiller
+//! object theDSF
+Standard_EXPORT virtual void PerformWithFiller(const NMTTools_DSFiller& theDSF) ; + +//! Adds argument theShape of the operation
+Standard_EXPORT virtual void AddShape(const TopoDS_Shape& theShape) ; + +//! Clears internal fields and arguments
+Standard_EXPORT virtual void Clear() ; + +//! Returns the arguments of the operation
+Standard_EXPORT const TopTools_ListOfShape& Shapes() const; + +//! Returns the list of shapes generated from the
+//! shape theS.
+Standard_EXPORT virtual const TopTools_ListOfShape& Generated(const TopoDS_Shape& theS) ; + +//! Returns the list of shapes modified from the shape
+//! theS.
+Standard_EXPORT virtual const TopTools_ListOfShape& Modified(const TopoDS_Shape& theS) ; + +//! Returns true if the shape theS has been deleted.
+Standard_EXPORT virtual Standard_Boolean IsDeleted(const TopoDS_Shape& theS) ; + +//! Adds arguments of the operation as
+//! shapes of upper level of container shape theShape
+Standard_EXPORT void AddCompound(const TopoDS_Shape& theShape) ; + +//! Returns list of arguments of type theType
+Standard_EXPORT const TopTools_ListOfShape& Shapes1(const Standard_Integer theType) const; + +//! Returns image shapes
+Standard_EXPORT const BRepAlgo_Image& Images() const; + +//! Returns split-parts of shapes that have
+//! state IN for the domain of shape theShape
+Standard_EXPORT const TopTools_ListOfShape& InParts(const TopoDS_Shape& theShape) const; + + + + + +protected: + + // Methods PROTECTED + // + +//! Prepare information for history support
+Standard_EXPORT virtual void PrepareHistory() ; + +//! Clears internal fields
+Standard_EXPORT virtual void ClearInternals() ; + +//! Provides preparing actions
+Standard_EXPORT virtual void Prepare() ; + +//! Provides post-tratment actions
+Standard_EXPORT virtual void PostTreat() ; + +//! Append the argument theShape to
+//! typified lists of arguments myShapes1
+Standard_EXPORT void AddShape1(const TopoDS_Shape& theShape) ; + +//! Build the resulting shapes of type theType
+Standard_EXPORT virtual void BuildResult(const TopAbs_ShapeEnum theType) ; + +//! Fill Images for vertices
+Standard_EXPORT void FillImagesVertices() ; + +//! Fill Images for edges
+Standard_EXPORT void FillImagesEdges() ; + +//! Fill Images for faces
+Standard_EXPORT void FillImagesFaces() ; + +//! For each interferred face find split edges
+//! that are in 2-D domain of the face
+Standard_EXPORT void FillIn2DParts() ; + +//! Build draft faces
+Standard_EXPORT void BuildSplitFaces() ; + +//! Among draft faces find same domain faces
+Standard_EXPORT void FillSameDomainFaces() ; + +//! Fill Images for faces
+//! taking into account same domain faces
+Standard_EXPORT void FillImagesFaces1() ; + +//! Update Images for faces by
+//! internal vertices
+Standard_EXPORT void FillInternalVertices() ; + +//! Fill Images for Wires, Shells, Compsolids, Compounds
+Standard_EXPORT void FillImagesContainers(const TopAbs_ShapeEnum theType) ; + +//! Fill Images for solids
+Standard_EXPORT void FillImagesSolids() ; + +//! For each interferred solid find split faces
+//! that are in 3-D domain of the solid
+Standard_EXPORT void FillIn3DParts() ; + +//! Build draft solids
+Standard_EXPORT void BuildSplitSolids() ; + +//! Update draft solids by
+//! internal shells, edges, vertices
+Standard_EXPORT void FillInternalShapes() ; + +//! Build solid theDraftSolid that consists of
+//! non-internal split faces of the solid
+//! theSolid.
+//! All splits of internal faces of
+//! theSolid are in the list: theInternalFaces
+Standard_EXPORT void BuildDraftSolid(const TopoDS_Shape& theSolid,TopoDS_Shape& theDraftSolid,TopTools_ListOfShape& theInternalFaces) ; + + + // Fields PROTECTED + // +NMTTools_PDSFiller myDSFiller; +TopTools_ListOfShape myShapes; +Standard_Integer myNbTypes; +TopTools_MapOfShape myMapFence; +TopTools_ListOfShape myShapes1[9]; +BRepAlgo_Image myImages; +TopTools_IndexedDataMapOfShapeListOfShape myInParts; +BRepAlgo_Image mySplitFaces; +TopTools_IndexedDataMapOfShapeShape mySameDomainShapes; +TopTools_IndexedDataMapOfShapeShape myDraftSolids; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_Builder.ixx b/src/GEOMAlgo/GEOMAlgo_Builder.ixx new file mode 100644 index 000000000..510e49dd6 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Builder.ixx @@ -0,0 +1,24 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_Builder.jxx b/src/GEOMAlgo/GEOMAlgo_Builder.jxx new file mode 100644 index 000000000..1965f5ec7 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Builder.jxx @@ -0,0 +1,34 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTTools_DSFiller_HeaderFile +#include +#endif +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _BRepAlgo_Image_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_Builder_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderArea.cdl b/src/GEOMAlgo/GEOMAlgo_BuilderArea.cdl new file mode 100755 index 000000000..48ef49f20 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderArea.cdl @@ -0,0 +1,101 @@ +-- Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +-- +-- File: ModGlue_BuilderArea.cdl +-- Created: +-- Author: Peter KURNEV + +deferred class BuilderArea from GEOMAlgo + inherits Algo from GEOMAlgo + + ---Purpose: The root class for algorithms to build + -- faces/solids from set of edges/faces + +uses + Shape from TopoDS, + ListOfShape from TopTools, + MapOfOrientedShape from TopTools, + Context from IntTools, + PContext from IntTools + +--raises + +is + Initialize + ---Purpose: Empty constructor + returns BuilderArea from GEOMAlgo; + ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_BuilderArea();" + + SetContext(me:out; + theContext:Context from IntTools); + ---Purpose: Sets cashed geometrical tools + + SetShapes(me:out; + theLS:ListOfShape from TopTools); + ---Purpose: Sets edges/faces to process + + Shapes(me) + ---Purpose: Returns edges/faces to process + returns ListOfShape from TopTools; + ---C++: return const & + + Loops(me) + ---Purpose: Returns wires/shells that have been built + returns ListOfShape from TopTools; + ---C++: return const & + + Areas(me) + ---Purpose: Returns faces/solids that have been built + returns ListOfShape from TopTools; + ---C++: return const & + + PerformShapesToAvoid(me:out) + ---Purpose: Collect the edges/faces that + -- a) are internal + -- b) are the same and have different orientation + is virtual protected; + + PerformLoops(me:out) + ---Purpose: Build draft faces/shells + -- a)myLoops - draft faces/shells that consist of + -- boundary edges/faces + -- b)myLoopsInternal - draft faces/shells that contains + -- inner edges/faces + is virtual protected; + + PerformAreas(me:out) + ---Purpose: Build draft faces/solids that contains boundary faces + is virtual protected; + + PerformInternalShapes(me:out) + ---Purpose: Build finalized faces/solids with internal wires/shells + is virtual protected; + + +fields + myShapes : ListOfShape from TopTools is protected; + myLoops : ListOfShape from TopTools is protected; + myLoopsInternal : ListOfShape from TopTools is protected; + myShapesToAvoid : MapOfOrientedShape from TopTools is protected; + myAreas : ListOfShape from TopTools is protected; + -- + myContext : PContext from IntTools is protected; + +end BuilderArea; + diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderArea.cxx b/src/GEOMAlgo/GEOMAlgo_BuilderArea.cxx new file mode 100755 index 000000000..98a63c169 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderArea.cxx @@ -0,0 +1,122 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: GEOMAlgo_BuilderArea.cxx +// Created: +// Author: Peter KURNEV + + +#include + +#include +#include + +//======================================================================= +//function : +//purpose : +//======================================================================= + GEOMAlgo_BuilderArea::GEOMAlgo_BuilderArea() +: + GEOMAlgo_Algo() +{ + myContext=NULL; +} +//======================================================================= +//function : ~ +//purpose : +//======================================================================= + GEOMAlgo_BuilderArea::~GEOMAlgo_BuilderArea() +{ +} +//======================================================================= +//function : SetContext +//purpose : +//======================================================================= + void GEOMAlgo_BuilderArea::SetContext(const IntTools_Context& theContext) +{ + myContext=(IntTools_Context*)&theContext; +} +//======================================================================= +//function : SetShapes +//purpose : +//======================================================================= + void GEOMAlgo_BuilderArea::SetShapes(const TopTools_ListOfShape& theLF) +{ + TopTools_ListIteratorOfListOfShape aIt; + // + myShapes.Clear(); + aIt.Initialize(theLF); + for(; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aF=aIt.Value(); + myShapes.Append(aF); + } +} +//======================================================================= +//function : Shapes +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_BuilderArea::Shapes()const +{ + return myShapes; +} +//======================================================================= +//function : Loops +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_BuilderArea::Loops()const +{ + return myLoops; +} +//======================================================================= +//function : Solids +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_BuilderArea::Areas()const +{ + return myAreas; +} +//======================================================================= +//function :PerformShapesToAvoid +//purpose : +//======================================================================= + void GEOMAlgo_BuilderArea::PerformShapesToAvoid() +{ +} +//======================================================================= +//function : PerformLoops +//purpose : +//======================================================================= + void GEOMAlgo_BuilderArea::PerformLoops() +{ +} +//======================================================================= +//function : PerformAreas +//purpose : +//======================================================================= + void GEOMAlgo_BuilderArea::PerformAreas() +{ +} +//======================================================================= +//function : PerformInternalShapes +//purpose : +//======================================================================= + void GEOMAlgo_BuilderArea::PerformInternalShapes() +{ +} + diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderArea.hxx b/src/GEOMAlgo/GEOMAlgo_BuilderArea.hxx new file mode 100644 index 000000000..0a3af4928 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderArea.hxx @@ -0,0 +1,144 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_BuilderArea_HeaderFile +#define _GEOMAlgo_BuilderArea_HeaderFile + +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _TopTools_MapOfOrientedShape_HeaderFile +#include +#endif +#ifndef _IntTools_PContext_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_Algo_HeaderFile +#include +#endif +class IntTools_Context; +class TopTools_ListOfShape; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + +//! The root class for algorithms to build
+//! faces/solids from set of edges/faces
+class GEOMAlgo_BuilderArea : public GEOMAlgo_Algo { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + +//! Sets cashed geometrical tools
+Standard_EXPORT void SetContext(const IntTools_Context& theContext) ; + +//! Sets edges/faces to process
+Standard_EXPORT void SetShapes(const TopTools_ListOfShape& theLS) ; + +//! Returns edges/faces to process
+Standard_EXPORT const TopTools_ListOfShape& Shapes() const; + +//! Returns wires/shells that have been built
+Standard_EXPORT const TopTools_ListOfShape& Loops() const; + +//! Returns faces/solids that have been built
+Standard_EXPORT const TopTools_ListOfShape& Areas() const; + + + + + +protected: + + // Methods PROTECTED + // + +//! Empty constructor
+Standard_EXPORT GEOMAlgo_BuilderArea(); +Standard_EXPORT virtual ~GEOMAlgo_BuilderArea(); + +//! Collect the edges/faces that
+//! a) are internal
+//! b) are the same and have different orientation
+Standard_EXPORT virtual void PerformShapesToAvoid() ; + +//! Build draft faces/shells
+//! a)myLoops - draft faces/shells that consist of
+//! boundary edges/faces
+//! b)myLoopsInternal - draft faces/shells that contains
+//! inner edges/faces
+Standard_EXPORT virtual void PerformLoops() ; + +//! Build draft faces/solids that contains boundary faces
+Standard_EXPORT virtual void PerformAreas() ; + +//! Build finalized faces/solids with internal wires/shells
+Standard_EXPORT virtual void PerformInternalShapes() ; + + + // Fields PROTECTED + // +TopTools_ListOfShape myShapes; +TopTools_ListOfShape myLoops; +TopTools_ListOfShape myLoopsInternal; +TopTools_MapOfOrientedShape myShapesToAvoid; +TopTools_ListOfShape myAreas; +IntTools_PContext myContext; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderArea.ixx b/src/GEOMAlgo/GEOMAlgo_BuilderArea.ixx new file mode 100644 index 000000000..0ec206278 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderArea.ixx @@ -0,0 +1,24 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderArea.jxx b/src/GEOMAlgo/GEOMAlgo_BuilderArea.jxx new file mode 100644 index 000000000..df13a88bf --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderArea.jxx @@ -0,0 +1,28 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _IntTools_Context_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_BuilderArea_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderFace.cdl b/src/GEOMAlgo/GEOMAlgo_BuilderFace.cdl new file mode 100755 index 000000000..542a828f3 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderFace.cdl @@ -0,0 +1,82 @@ +-- Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +-- +-- File: GEOMAlgo_BuilderFace.cdl +-- Created: +-- Author: Peter KURNEV + + + +class BuilderFace from GEOMAlgo + inherits BuilderArea from GEOMAlgo + + ---Purpose: The algorithm to build faces from set of edges + +uses + Face from TopoDS + +--raises + +is + Create + ---Purpose: Empty constructor + returns BuilderFace from GEOMAlgo; + ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_BuilderFace();" + + SetFace(me:out; + theFace:Face from TopoDS); + ---Purpose: Sets the face generatix + + Face(me) + ---Purpose: Returns the face generatix + returns Face from TopoDS; + ---C++: return const & + + Perform(me:out) + ---Purpose: Performs the algorithm + is redefined; + + PerformShapesToAvoid(me:out) + ---Purpose: Collect the edges that + -- a) are internal + -- b) are the same and have different orientation + is redefined protected; + + PerformLoops(me:out) + ---Purpose: Build draft wires + -- a)myLoops - draft wires that consist of + -- boundary edges + -- b)myLoopsInternal - draft wires that contains + -- inner edges + is redefined protected; + + PerformAreas(me:out) + ---Purpose: Build draft faces that contains boundary edges + is redefined protected; + + PerformInternalShapes(me:out) + ---Purpose: Build finalized faces with internals + is redefined protected; + + +fields + myFace : Face from TopoDS is protected; + +end BuilderFace; + diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderFace.cxx b/src/GEOMAlgo/GEOMAlgo_BuilderFace.cxx new file mode 100755 index 000000000..a6661075f --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderFace.cxx @@ -0,0 +1,676 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: GEOMAlgo_BuilderFace.cxx +// Created: +// Author: Peter KURNEV + +#include + +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include + +// +static + Standard_Boolean IsGrowthWire(const TopoDS_Shape& , + + const TopTools_IndexedMapOfShape& ); + +static + Standard_Boolean IsInside(const TopoDS_Shape& , + const TopoDS_Shape& , + IntTools_PContext& ); +static + void MakeInternalWires(const TopTools_MapOfShape& , + TopTools_ListOfShape& ); + +//======================================================================= +//function : +//purpose : +//======================================================================= + GEOMAlgo_BuilderFace::GEOMAlgo_BuilderFace() +: + GEOMAlgo_BuilderArea() +{ +} +//======================================================================= +//function : ~ +//purpose : +//======================================================================= + GEOMAlgo_BuilderFace::~GEOMAlgo_BuilderFace() +{ +} +//======================================================================= +//function : SetFace +//purpose : +//======================================================================= + void GEOMAlgo_BuilderFace::SetFace(const TopoDS_Face& theFace) +{ + myFace=theFace; +} +//======================================================================= +//function : Face +//purpose : +//======================================================================= + const TopoDS_Face& GEOMAlgo_BuilderFace::Face()const +{ + return myFace; +} +//======================================================================= +//function : Perform +//purpose : +//======================================================================= + void GEOMAlgo_BuilderFace::Perform() +{ + myErrorStatus=0; + // + if (myContext==NULL) { + myErrorStatus=11;// Null Context + return; + } + // + if (myFace.IsNull()) { + myErrorStatus=12;// Null face generix + return; + } + // + PerformShapesToAvoid(); + if (myErrorStatus) { + return; + } + // + PerformLoops(); + if (myErrorStatus) { + return; + } + // + PerformAreas(); + if (myErrorStatus) { + return; + } + // + PerformInternalShapes(); + if (myErrorStatus) { + return; + } +} +//======================================================================= +//function :PerformShapesToAvoid +//purpose : +//======================================================================= + void GEOMAlgo_BuilderFace::PerformShapesToAvoid() +{ + Standard_Boolean bFound; + Standard_Integer i, iCnt, aNbV, aNbE; + TopTools_IndexedDataMapOfShapeListOfShape aMVE; + TopTools_ListIteratorOfListOfShape aIt; + // + myShapesToAvoid.Clear(); + // + iCnt=0; + while (1) { + ++iCnt; + bFound=Standard_False; + // + // 1. MEF + aMVE.Clear(); + aIt.Initialize (myShapes); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aE=aIt.Value(); + if (!myShapesToAvoid.Contains(aE)) { + TopExp::MapShapesAndAncestors(aE, TopAbs_VERTEX, TopAbs_EDGE, aMVE); + } + else { + int a=0; + } + } + aNbV=aMVE.Extent(); + // + // 2. myEdgesToAvoid + for (i=1; i<=aNbV; ++i) { + const TopoDS_Vertex& aV=TopoDS::Vertex(aMVE.FindKey(i)); + // + TopTools_ListOfShape& aLE=aMVE.ChangeFromKey(aV); + aNbE=aLE.Extent(); + if (!aNbE) { + continue; + } + // + const TopoDS_Edge& aE1=TopoDS::Edge(aLE.First()); + if (aNbE==1) { + if (BRep_Tool::Degenerated(aE1)) { + continue; + } + if (aV.Orientation()==TopAbs_INTERNAL) { + continue; + } + bFound=Standard_True; + myShapesToAvoid.Add(aE1); + } + else if (aNbE==2) { + const TopoDS_Edge& aE2=TopoDS::Edge(aLE.Last()); + if (aE2.IsSame(aE1)) { + TopoDS_Vertex aV1x, aV2x; + // + TopExp::Vertices(aE1, aV1x, aV2x); + if (aV1x.IsSame(aV2x)) { + continue; + } + bFound=Standard_True; + myShapesToAvoid.Add(aE1); + myShapesToAvoid.Add(aE2); + } + } + }// for (i=1; i<=aNbE; ++i) { + // + if (!bFound) { + break; + } + // + }//while (1) + //printf(" EdgesToAvoid=%d, iCnt=%d\n", EdgesToAvoid.Extent(), iCnt); +} +//======================================================================= +//function : PerformLoops +//purpose : +//======================================================================= + void GEOMAlgo_BuilderFace::PerformLoops() +{ + myErrorStatus=0; + // + Standard_Boolean bFlag; + Standard_Integer aNbEA; + TopTools_ListIteratorOfListOfShape aIt; + TopTools_MapIteratorOfMapOfOrientedShape aItM; + TopTools_IndexedDataMapOfShapeListOfShape aVEMap; + TopTools_MapOfOrientedShape aMAdded; + BRep_Builder aBB; + GEOMAlgo_WireEdgeSet aWES; + GEOMAlgo_WESCorrector aWESCor; + // + // 1. Usual Wires + myLoops.Clear(); + aWES.SetFace(myFace); + // + aIt.Initialize (myShapes); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aE=aIt.Value(); + if (!myShapesToAvoid.Contains(aE)) { + aWES.AddStartElement(aE); + } + } + // + aWESCor.SetWES(aWES); + aWESCor.Perform(); + // + GEOMAlgo_WireEdgeSet& aWESN=aWESCor.NewWES(); + const TopTools_ListOfShape& aLW=aWESN.Shapes(); + // + aIt.Initialize (aLW); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aW=aIt.Value(); + myLoops.Append(aW); + } + // + // 2. Internal Wires + myLoopsInternal.Clear(); + // + aNbEA=myShapesToAvoid.Extent(); + aItM.Initialize(myShapesToAvoid); + for (; aItM.More(); aItM.Next()) { + const TopoDS_Shape& aEE=aItM.Key(); + TopExp::MapShapesAndAncestors(aEE, TopAbs_VERTEX, TopAbs_EDGE, aVEMap); + } + // + bFlag=Standard_True; + aItM.Initialize(myShapesToAvoid); + for (; aItM.More()&&bFlag; aItM.Next()) { + const TopoDS_Shape& aEE=aItM.Key(); + if (!aMAdded.Add(aEE)) { + continue; + } + // + // make new wire + TopoDS_Wire aW; + aBB.MakeWire(aW); + aBB.Add(aW, aEE); + // + TopoDS_Iterator aItW (aW); + for (; aItW.More()&&bFlag; aItW.Next()) { + const TopoDS_Edge& aE=TopoDS::Edge(aItW.Value()); + // + TopoDS_Iterator aItE(aE); + for (; aItE.More()&&bFlag; aItE.Next()) { + const TopoDS_Vertex& aV = TopoDS::Vertex(aItE.Value()); + const TopTools_ListOfShape& aLE=aVEMap.FindFromKey(aV); + aIt.Initialize(aLE); + for (; aIt.More()&&bFlag; aIt.Next()) { + const TopoDS_Shape& aEx=aIt.Value(); + if (aMAdded.Add(aEx)) { + aBB.Add(aW, aEx); + if(aMAdded.Extent()==aNbEA) { + bFlag=!bFlag; + } + } + }//for (; aIt.More(); aIt.Next()) { + }//for (; aItE.More(); aItE.Next()) { + }//for (; aItW.More(); aItW.Next()) { + myLoopsInternal.Append(aW); + }//for (; aItM.More(); aItM.Next()) { +} +//======================================================================= +//function : PerformAreas +//purpose : +//======================================================================= + void GEOMAlgo_BuilderFace::PerformAreas() +{ + myErrorStatus=0; + // + Standard_Boolean bIsGrowth, bIsHole; + Standard_Real aTol; + TopTools_ListOfShape aNewFaces, aHoleWires; + TopoDS_Shape anInfinitePointShape; + TopTools_DataMapOfShapeShape aInOutMap; + TopTools_DataMapOfShapeListOfShape aMSH; + TopTools_DataMapIteratorOfDataMapOfShapeListOfShape aItMSH; + TopTools_ListIteratorOfListOfShape aIt1, aIt2; + TopTools_IndexedMapOfShape aMHE; + BRep_Builder aBB; + Handle(Geom_Surface) aS; + TopLoc_Location aLoc; + // + aTol=BRep_Tool::Tolerance(myFace); + aS=BRep_Tool::Surface(myFace, aLoc); + // + myAreas.Clear(); + // + // Draft faces [aNewFaces] + aIt1.Initialize(myLoops); + for ( ; aIt1.More(); aIt1.Next()) { + const TopoDS_Shape& aWire=aIt1.Value(); + // + bIsGrowth=IsGrowthWire(aWire, aMHE); + if (bIsGrowth) { + // make a growth face from a wire + TopoDS_Face aFace; + aBB.MakeFace(aFace, aS, aLoc, aTol); + aBB.Add (aFace, aWire); + // + aNewFaces.Append (aFace); + } + else{ + // check if a wire is a hole + //XX + //bIsHole=IsHole(aWire, myFace, myContext); + bIsHole=GEOMAlgo_BuilderTools::IsHole(aWire, myFace); + //XX + if (bIsHole) { + aHoleWires.Append(aWire); + TopExp::MapShapes(aWire, TopAbs_EDGE, aMHE); + } + else { + // make a growth face from a wire + TopoDS_Face aFace; + aBB.MakeFace(aFace, aS, aLoc, aTol); + aBB.Add (aFace, aWire); + // + aNewFaces.Append (aFace); + } + } + } + // + // 2. Find outer growth shell that is most close to each hole shell + aIt2.Initialize(aHoleWires); + for (; aIt2.More(); aIt2.Next()) { + const TopoDS_Shape& aHole = aIt2.Value(); + // + aIt1.Initialize(aNewFaces); + for ( ; aIt1.More(); aIt1.Next()) { + const TopoDS_Shape& aF=aIt1.Value(); + // + if (!IsInside(aHole, aF, myContext)){ + continue; + } + // + if ( aInOutMap.IsBound (aHole)){ + const TopoDS_Shape& aF2=aInOutMap(aHole); + if (IsInside(aF, aF2, myContext)) { + aInOutMap.UnBind(aHole); + aInOutMap.Bind (aHole, aF); + } + } + else{ + aInOutMap.Bind (aHole, aF); + } + } + // + // Add aHole to a map Face/ListOfHoles [aMSH] + if (aInOutMap.IsBound(aHole)){ + const TopoDS_Shape& aF=aInOutMap(aHole); + if (aMSH.IsBound(aF)) { + TopTools_ListOfShape& aLH=aMSH.ChangeFind(aF); + aLH.Append(aHole); + } + else { + TopTools_ListOfShape aLH; + aLH.Append(aHole); + aMSH.Bind(aF, aLH); + } + } + }// for (; aIt2.More(); aIt2.Next()) + // + // 3. Add aHoles to Faces + aItMSH.Initialize(aMSH); + for (; aItMSH.More(); aItMSH.Next()) { + TopoDS_Face aF=TopoDS::Face(aItMSH.Key()); + // + const TopTools_ListOfShape& aLH=aItMSH.Value(); + aIt2.Initialize(aLH); + for (; aIt2.More(); aIt2.Next()) { + const TopoDS_Shape& aHole = aIt2.Value(); + aBB.Add (aF, aHole); + } + // + // update classifier + aTol=BRep_Tool::Tolerance(aF); + IntTools_FClass2d& aClsf=myContext->FClass2d(aF); + aClsf.Init(aF, aTol); + } + // + // These aNewFaces are draft faces that + // do not contain any internal shapes + // + myAreas.Append(aNewFaces); +} +//======================================================================= +//function : PerformInternalShapes +//purpose : +//======================================================================= + void GEOMAlgo_BuilderFace::PerformInternalShapes() +{ + myErrorStatus=0; + // + Standard_Integer aNbWI=myLoopsInternal.Extent(); + if (!aNbWI) {// nothing to do + return; + } + // + //Standard_Real aTol; + BRep_Builder aBB; + TopTools_ListIteratorOfListOfShape aIt1, aIt2; + TopoDS_Iterator aIt; + TopTools_MapOfShape aME, aMEP; + TopTools_MapIteratorOfMapOfShape aItME; + TopTools_IndexedDataMapOfShapeListOfShape aMVE; + TopTools_ListOfShape aLSI; + // + // 1. All internal edges + aIt1.Initialize(myLoopsInternal); + for (; aIt1.More(); aIt1.Next()) { + const TopoDS_Shape& aWire=aIt1.Value(); + aIt.Initialize(aWire); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aE=aIt.Value(); + aME.Add(aE); + } + } + aNbWI=aME.Extent(); + // + // 2 Process faces + aIt2.Initialize(myAreas); + for ( ; aIt2.More(); aIt2.Next()) { + TopoDS_Face& aF=TopoDS::Face(aIt2.Value()); + // + aMVE.Clear(); + TopExp::MapShapesAndAncestors(aF, TopAbs_VERTEX, TopAbs_EDGE, aMVE); + // + // 2.1 Separate faces to process aMEP + aMEP.Clear(); + aItME.Initialize(aME); + for (; aItME.More(); aItME.Next()) { + const TopoDS_Edge& aE=TopoDS::Edge(aItME.Key()); + if (IsInside(aE, aF, myContext)) { + aMEP.Add(aE); + } + } + // + // 2.2 Make Internal Wires + aLSI.Clear(); + MakeInternalWires(aMEP, aLSI); + // + // 2.3 Add them to aF + aIt1.Initialize(aLSI); + for (; aIt1.More(); aIt1.Next()) { + const TopoDS_Shape& aSI=aIt1.Value(); + aBB.Add (aF, aSI); + } + // + // 2.4 Remove faces aMFP from aMF + aItME.Initialize(aMEP); + for (; aItME.More(); aItME.Next()) { + const TopoDS_Shape& aE=aItME.Key(); + aME.Remove(aE); + } + // + aNbWI=aME.Extent(); + if (!aNbWI) { + break; + } + } //for ( ; aIt2.More(); aIt2.Next()) { +} +//======================================================================= +//function : MakeInternalWires +//purpose : +//======================================================================= +void MakeInternalWires(const TopTools_MapOfShape& theME, + TopTools_ListOfShape& theWires) +{ + TopTools_MapIteratorOfMapOfShape aItM; + TopTools_MapOfShape aAddedMap; + TopTools_ListIteratorOfListOfShape aItE; + TopTools_IndexedDataMapOfShapeListOfShape aMVE; + BRep_Builder aBB; + // + aItM.Initialize(theME); + for (; aItM.More(); aItM.Next()) { + const TopoDS_Shape& aE=aItM.Key(); + TopExp::MapShapesAndAncestors(aE, TopAbs_VERTEX, TopAbs_EDGE, aMVE); + } + // + aItM.Initialize(theME); + for (; aItM.More(); aItM.Next()) { + TopoDS_Shape aEE=aItM.Key(); + if (!aAddedMap.Add(aEE)) { + continue; + } + // + // make a new shell + TopoDS_Wire aW; + aBB.MakeWire(aW); + aEE.Orientation(TopAbs_INTERNAL); + aBB.Add(aW, aEE); + // + TopoDS_Iterator aItAdded (aW); + for (; aItAdded.More(); aItAdded.Next()) { + const TopoDS_Shape& aE =aItAdded.Value(); + // + TopExp_Explorer aExp(aE, TopAbs_VERTEX); + for (; aExp.More(); aExp.Next()) { + const TopoDS_Shape& aV =aExp.Current(); + const TopTools_ListOfShape& aLE=aMVE.FindFromKey(aV); + aItE.Initialize(aLE); + for (; aItE.More(); aItE.Next()) { + TopoDS_Shape aEL=aItE.Value(); + if (aAddedMap.Add(aEL)){ + aEL.Orientation(TopAbs_INTERNAL); + aBB.Add(aW, aEL); + } + } + } + } + theWires.Append(aW); + } +} + +//======================================================================= +//function : IsInside +//purpose : +//======================================================================= +Standard_Boolean IsInside(const TopoDS_Shape& theHole, + const TopoDS_Shape& theF2, + IntTools_PContext& theContext) +{ + Standard_Real aT, aU, aV; + TopExp_Explorer aExp; + TopAbs_State aState=TopAbs_UNKNOWN; + gp_Pnt2d aP2D; + // + const TopoDS_Face& aF2=TopoDS::Face(theF2); + // + aExp.Init(theHole, TopAbs_EDGE); + if (aExp.More()){ + const TopoDS_Edge& aE = TopoDS::Edge(aExp.Current()); + aT=BOPTools_Tools2D::IntermediatePoint(aE); + BOPTools_Tools2D::PointOnSurface(aE, aF2, aT, aU, aV); + aP2D.SetCoord(aU, aV); + // + IntTools_FClass2d& aClsf=theContext->FClass2d(aF2); + aState=aClsf.Perform(aP2D); + } + return (aState==TopAbs_IN); +} +//======================================================================= +//function : IsGrowthWire +//purpose : +//======================================================================= +Standard_Boolean IsGrowthWire(const TopoDS_Shape& theWire, + const TopTools_IndexedMapOfShape& theMHE) +{ + Standard_Boolean bRet; + TopoDS_Iterator aIt; + // + bRet=Standard_False; + if (theMHE.Extent()) { + aIt.Initialize(theWire); + for(; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aE=aIt.Value(); + if (theMHE.Contains(aE)) { + return !bRet; + } + } + } + return bRet; +} +//modified by NIZNHY-PKV Mon Sep 18 13:18:27 2006f +/* +static + Standard_Boolean IsHole(const TopoDS_Shape& , + const TopoDS_Face& , + IntTools_PContext& ); +*/ +//modified by NIZNHY-PKV Mon Sep 18 13:18:34 2006t +//modified by NIZNHY-PKV Mon Sep 18 13:18:13 2006f +/* +//======================================================================= +//function : IsHole +//purpose : +//======================================================================= +Standard_Boolean IsHole(const TopoDS_Shape& theS2, + const TopoDS_Face& theFace, + IntTools_PContext& theContext) +{ + Standard_Boolean bIsHole; + Standard_Real aTol; + Handle(Geom_Surface) aS; + TopLoc_Location aLoc; + TopoDS_Face aF; + BRep_Builder aBB; + // + aTol=BRep_Tool::Tolerance(theFace); + aS=BRep_Tool::Surface(theFace, aLoc); + aBB.MakeFace(aF, aS, aLoc, aTol); + aBB.Add (aF, theS2); + // + IntTools_FClass2d& aClsf=theContext->FClass2d(aF); + // + bIsHole=aClsf.IsHole(); + // + return bIsHole; + // +} +*/ +//modified by NIZNHY-PKV Mon Sep 18 13:18:06 2006t + +//BRepTools::Write(aFF, "ff"); +// +// ErrorStatus : +// 11 - Null Context +// 12 - Null face generix + diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderFace.hxx b/src/GEOMAlgo/GEOMAlgo_BuilderFace.hxx new file mode 100644 index 000000000..758cc7072 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderFace.hxx @@ -0,0 +1,125 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_BuilderFace_HeaderFile +#define _GEOMAlgo_BuilderFace_HeaderFile + +#ifndef _TopoDS_Face_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_BuilderArea_HeaderFile +#include +#endif +class TopoDS_Face; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + +//! The algorithm to build faces from set of edges
+class GEOMAlgo_BuilderFace : public GEOMAlgo_BuilderArea { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + +//! Empty constructor
+Standard_EXPORT GEOMAlgo_BuilderFace(); +Standard_EXPORT virtual ~GEOMAlgo_BuilderFace(); + +//! Sets the face generatix
+Standard_EXPORT void SetFace(const TopoDS_Face& theFace) ; + +//! Returns the face generatix
+Standard_EXPORT const TopoDS_Face& Face() const; + +//! Performs the algorithm
+Standard_EXPORT virtual void Perform() ; + + + + + +protected: + + // Methods PROTECTED + // + +//! Collect the edges that
+//! a) are internal
+//! b) are the same and have different orientation
+Standard_EXPORT virtual void PerformShapesToAvoid() ; + +//! Build draft wires
+//! a)myLoops - draft wires that consist of
+//! boundary edges
+//! b)myLoopsInternal - draft wires that contains
+//! inner edges
+Standard_EXPORT virtual void PerformLoops() ; + +//! Build draft faces that contains boundary edges
+Standard_EXPORT virtual void PerformAreas() ; + +//! Build finalized faces with internals
+Standard_EXPORT virtual void PerformInternalShapes() ; + + + // Fields PROTECTED + // +TopoDS_Face myFace; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderFace.ixx b/src/GEOMAlgo/GEOMAlgo_BuilderFace.ixx new file mode 100644 index 000000000..66adde68b --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderFace.ixx @@ -0,0 +1,24 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderFace.jxx b/src/GEOMAlgo/GEOMAlgo_BuilderFace.jxx new file mode 100644 index 000000000..8e533eed8 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderFace.jxx @@ -0,0 +1,25 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _TopoDS_Face_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_BuilderFace_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderShape.cdl b/src/GEOMAlgo/GEOMAlgo_BuilderShape.cdl new file mode 100755 index 000000000..b699831c7 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderShape.cdl @@ -0,0 +1,114 @@ +-- Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +-- +-- File: GEOMAlgo_BuilderShape.cdl +-- Created: +-- Author: Peter KURNEV + + + +deferred class BuilderShape from GEOMAlgo + inherits Algo from GEOMAlgo + + ---Purpose: Root class for algorithms that has shape as result + +uses + Shape from TopoDS, + ListOfShape from TopTools, + MapOfShape from TopTools, + IndexedDataMapOfShapeListOfShape from TopTools + +--raises + +is + Initialize + ---Purpose: Empty constructor + returns BuilderShape from GEOMAlgo; + ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_BuilderShape();" + + Shape(me) + ---Purpose: Returns the result of algorithm + returns Shape from TopoDS; + ---C++: return const & + + + ------------------------------------------------------------------ + --- The following methods are not implemented at this level. + -- An empty list is returned. + --- They are optional and can be redefined. + ------------------------------------------------------------------ + Generated (me:out; + theS : Shape from TopoDS) + ---Purpose: Returns the list of shapes generated from the + -- shape theS. + returns ListOfShape from TopTools + is virtual; + ---C++: return const & + + Modified (me:out; + theS : Shape from TopoDS) + ---Purpose: Returns the list of shapes modified from the + -- shape theS. + returns ListOfShape from TopTools + is virtual; + ---C++: return const & + + IsDeleted (me:out; + theS : Shape from TopoDS) + ---Purpose: Returns true if the shape theS has been deleted. + returns Boolean from Standard + is virtual; + + HasDeleted (me) + ---Purpose: Returns true if the at least one shape(or subshape) + -- of arguments has been deleted. + returns Boolean from Standard; + + HasGenerated (me) + ---Purpose: Returns true if the at least one shape(or subshape) + -- of arguments has generated shapes. + returns Boolean from Standard; + + HasModified (me) + ---Purpose: Returns true if the at least one shape(or subshape) + -- of arguments has modified shapes. + returns Boolean from Standard; + + PrepareHistory (me:out) + ---Purpose: Prepare information for history support + is virtual protected; + +--modified by NIZNHY-PKV Thu Dec 7 11:13:17 2006f + ImagesResult(me) + returns IndexedDataMapOfShapeListOfShape from TopTools; + ---C++: return const & +--modified by NIZNHY-PKV Thu Dec 7 11:13:20 2006t +fields + myShape : Shape from TopoDS is protected; + -- + myHistShapes : ListOfShape from TopTools is protected; + myMapShape : MapOfShape from TopTools is protected; + myHasDeleted : Boolean from Standard is protected; + myHasGenerated : Boolean from Standard is protected; + myHasModified : Boolean from Standard is protected; +--modified by NIZNHY-PKV Thu Dec 7 11:13:10 2006f + myImagesResult : IndexedDataMapOfShapeListOfShape from TopTools is protected; +--modified by NIZNHY-PKV Thu Dec 7 11:13:13 2006t +end BuilderShape; + diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderShape.cxx b/src/GEOMAlgo/GEOMAlgo_BuilderShape.cxx new file mode 100755 index 000000000..9f7cdd501 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderShape.cxx @@ -0,0 +1,131 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: GEOMAlgo_BuilderShape.cxx +// Created: +// Author: Peter KURNEV + + +#include +//======================================================================= +//function : +//purpose : +//======================================================================= + GEOMAlgo_BuilderShape::GEOMAlgo_BuilderShape() +: + GEOMAlgo_Algo() +{ + myHasDeleted=Standard_False; + myHasGenerated=Standard_False; + myHasModified=Standard_False; +} +//======================================================================= +//function : ~ +//purpose : +//======================================================================= + GEOMAlgo_BuilderShape::~GEOMAlgo_BuilderShape() +{ +} +//======================================================================= +//function : Shape +//purpose : +//======================================================================= + const TopoDS_Shape& GEOMAlgo_BuilderShape::Shape() const +{ + return myShape; +} +// +//======================================================================= +//function : Generated +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_BuilderShape::Generated(const TopoDS_Shape& ) +{ + myHistShapes.Clear(); + return myHistShapes; +} +//======================================================================= +//function : Modified +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_BuilderShape::Modified(const TopoDS_Shape& ) +{ + myHistShapes.Clear(); + return myHistShapes; +} +//======================================================================= +//function : IsDeleted +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_BuilderShape::IsDeleted(const TopoDS_Shape& theS) +{ + Standard_Boolean bRet; + // + bRet=!myMapShape.Contains(theS); + return bRet; +} +//======================================================================= +//function : HasDeleted +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_BuilderShape::HasDeleted()const +{ + return myHasDeleted; +} +//======================================================================= +//function : HasGenerated +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_BuilderShape::HasGenerated()const +{ + return myHasGenerated; +} +//======================================================================= +//function : HasModified +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_BuilderShape::HasModified()const +{ + return myHasModified; +} +//======================================================================= +//function : PrepareHistory +//purpose : +//======================================================================= + void GEOMAlgo_BuilderShape::PrepareHistory() +{ + myHistShapes.Clear(); + myMapShape.Clear(); + myHasDeleted=Standard_False; + myHasGenerated=Standard_False; + myHasModified=Standard_False; + //modified by NIZNHY-PKV Thu Dec 7 11:14:15 2006 + myImagesResult.Clear(); + //modified by NIZNHY-PKV Thu Dec 7 11:14:17 2006t +} +//modified by NIZNHY-PKV Thu Dec 7 11:57:00 2006f +//======================================================================= +//function : ImagesResult +//purpose : +//======================================================================= + const TopTools_IndexedDataMapOfShapeListOfShape& GEOMAlgo_BuilderShape::ImagesResult()const +{ + return myImagesResult; +} +//modified by NIZNHY-PKV Thu Dec 7 11:57:04 2006t diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderShape.hxx b/src/GEOMAlgo/GEOMAlgo_BuilderShape.hxx new file mode 100644 index 000000000..8639f22a8 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderShape.hxx @@ -0,0 +1,152 @@ +// File generated by CPPExt (Value) +// +// Copyright (C) 1991 - 2000 by +// Matra Datavision SA. All rights reserved. +// +// Copyright (C) 2001 - 2004 by +// Open CASCADE SA. All rights reserved. +// +// This file is part of the Open CASCADE Technology software. +// +// This software may be distributed and/or modified under the terms and +// conditions of the Open CASCADE Public License as defined by Open CASCADE SA +// and appearing in the file LICENSE included in the packaging of this file. +// +// This software is distributed on an "AS IS" basis, without warranty of any +// kind, and Open CASCADE SA hereby disclaims all such warranties, +// including without limitation, any warranties of merchantability, fitness +// for a particular purpose or non-infringement. Please see the License for +// the specific terms and conditions governing rights and limitations under the +// License. + +#ifndef _GEOMAlgo_BuilderShape_HeaderFile +#define _GEOMAlgo_BuilderShape_HeaderFile + +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _TopTools_MapOfShape_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +#ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_Algo_HeaderFile +#include +#endif +class TopoDS_Shape; +class TopTools_ListOfShape; +class TopTools_IndexedDataMapOfShapeListOfShape; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + +//! Root class for algorithms that has shape as result
+class GEOMAlgo_BuilderShape : public GEOMAlgo_Algo { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + +//! Returns the result of algorithm
+Standard_EXPORT const TopoDS_Shape& Shape() const; + +//! Returns the list of shapes generated from the
+//! shape theS.
+Standard_EXPORT virtual const TopTools_ListOfShape& Generated(const TopoDS_Shape& theS) ; + +//! Returns the list of shapes modified from the
+//! shape theS.
+Standard_EXPORT virtual const TopTools_ListOfShape& Modified(const TopoDS_Shape& theS) ; + +//! Returns true if the shape theS has been deleted.
+Standard_EXPORT virtual Standard_Boolean IsDeleted(const TopoDS_Shape& theS) ; + +//! Returns true if the at least one shape(or subshape)
+//! of arguments has been deleted.
+Standard_EXPORT Standard_Boolean HasDeleted() const; + +//! Returns true if the at least one shape(or subshape)
+//! of arguments has generated shapes.
+Standard_EXPORT Standard_Boolean HasGenerated() const; + +//! Returns true if the at least one shape(or subshape)
+//! of arguments has modified shapes.
+Standard_EXPORT Standard_Boolean HasModified() const; + + +Standard_EXPORT const TopTools_IndexedDataMapOfShapeListOfShape& ImagesResult() const; + + + + + +protected: + + // Methods PROTECTED + // + +//! Empty constructor
+Standard_EXPORT GEOMAlgo_BuilderShape(); +Standard_EXPORT virtual ~GEOMAlgo_BuilderShape(); + +//! Prepare information for history support
+Standard_EXPORT virtual void PrepareHistory() ; + + + // Fields PROTECTED + // +TopoDS_Shape myShape; +TopTools_ListOfShape myHistShapes; +TopTools_MapOfShape myMapShape; +Standard_Boolean myHasDeleted; +Standard_Boolean myHasGenerated; +Standard_Boolean myHasModified; +TopTools_IndexedDataMapOfShapeListOfShape myImagesResult; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderShape.ixx b/src/GEOMAlgo/GEOMAlgo_BuilderShape.ixx new file mode 100644 index 000000000..b8d037aa1 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderShape.ixx @@ -0,0 +1,24 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderShape.jxx b/src/GEOMAlgo/GEOMAlgo_BuilderShape.jxx new file mode 100644 index 000000000..516c355b2 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderShape.jxx @@ -0,0 +1,28 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_BuilderShape_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderSolid.cdl b/src/GEOMAlgo/GEOMAlgo_BuilderSolid.cdl new file mode 100755 index 000000000..7cbebaf80 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderSolid.cdl @@ -0,0 +1,67 @@ +-- Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +-- +-- File: GEOMAlgo_BuilderSolid.cdl +-- Created: +-- Author: Peter KURNEV + +class BuilderSolid from GEOMAlgo + inherits BuilderArea from GEOMAlgo + + ---Purpose: The algorithm to build solids from set of faces + +--uses +--raises + +is + Create + ---Purpose: Empty constructor + returns BuilderSolid from GEOMAlgo; + ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_BuilderSolid();" + + + Perform(me:out) + ---Purpose: Performs the algorithm + is redefined; + + PerformShapesToAvoid(me:out) + ---Purpose: Collect the faces that + -- a) are internal + -- b) are the same and have different orientation + is redefined protected; + + PerformLoops(me:out) + ---Purpose: Build draft shells + -- a)myLoops - draft shells that consist of + -- boundary faces + -- b)myLoopsInternal - draft shells that contains + -- inner faces + is redefined protected; + + PerformAreas(me:out) + ---Purpose: Build draft solids that contains boundary faces + is redefined protected; + + PerformInternalShapes(me:out) + ---Purpose: Build finalized solids with internal shells + is redefined protected; + +--fields + +end BuilderSolid; diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderSolid.cxx b/src/GEOMAlgo/GEOMAlgo_BuilderSolid.cxx new file mode 100755 index 000000000..1701f3e38 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderSolid.cxx @@ -0,0 +1,737 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: GEOMAlgo_BuilderSolid.cxx +// Created: +// Author: Peter KURNEV + + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include +#include +#include + +#include +#include + +// +static + Standard_Boolean IsGrowthShell(const TopoDS_Shape& , + const TopTools_IndexedMapOfShape& ); +static + Standard_Boolean IsHole(const TopoDS_Shape& , + IntTools_PContext& ); +static + Standard_Boolean IsInside(const TopoDS_Shape& , + const TopoDS_Shape& , + IntTools_PContext& ); +static + void MakeInternalShells(const TopTools_MapOfShape& , + TopTools_ListOfShape& ); + + + +//======================================================================= +//function : +//purpose : +//======================================================================= + GEOMAlgo_BuilderSolid::GEOMAlgo_BuilderSolid() +: + GEOMAlgo_BuilderArea() +{ +} +//======================================================================= +//function : ~ +//purpose : +//======================================================================= + GEOMAlgo_BuilderSolid::~GEOMAlgo_BuilderSolid() +{ +} +//======================================================================= +//function : Perform +//purpose : +//======================================================================= + void GEOMAlgo_BuilderSolid::Perform() +{ + myErrorStatus=0; + // + // + TopoDS_Compound aC; + BRep_Builder aBB; + TopTools_ListIteratorOfListOfShape aIt; + + aBB.MakeCompound(aC); + aIt.Initialize(myShapes); + for(; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aF=aIt.Value(); + aBB.Add(aC, aF); + } + // + // + if (myContext==NULL) { + myErrorStatus=11;// Null Context + return; + } + // + PerformShapesToAvoid(); + if (myErrorStatus) { + return; + } + // + PerformLoops(); + if (myErrorStatus) { + return; + } + PerformAreas(); + if (myErrorStatus) { + return; + } + PerformInternalShapes(); + if (myErrorStatus) { + return; + } +} +//======================================================================= +//function :PerformShapesToAvoid +//purpose : +//======================================================================= + void GEOMAlgo_BuilderSolid::PerformShapesToAvoid() +{ + Standard_Boolean bFound; + Standard_Integer i, iCnt, aNbE, aNbF; + TopAbs_Orientation aOrE; + TopTools_IndexedDataMapOfShapeListOfShape aMEF; + TopTools_ListIteratorOfListOfShape aIt; + // + myShapesToAvoid.Clear(); + // + iCnt=0; + while (1) { + ++iCnt; + bFound=Standard_False; + // + // 1. MEF + aMEF.Clear(); + aIt.Initialize (myShapes); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aF=aIt.Value(); + if (!myShapesToAvoid.Contains(aF)) { + TopExp::MapShapesAndAncestors(aF, TopAbs_EDGE, TopAbs_FACE, aMEF); + } + else { + int a=0; + } + } + aNbE=aMEF.Extent(); + // + // 2. myFacesToAvoid + for (i=1; i<=aNbE; ++i) { + const TopoDS_Edge& aE=TopoDS::Edge(aMEF.FindKey(i)); + if (BRep_Tool::Degenerated(aE)) { + continue; + } + // + TopTools_ListOfShape& aLF=aMEF.ChangeFromKey(aE); + // + aNbF=aLF.Extent(); + if (!aNbF) { + continue; + } + // + aOrE=aE.Orientation(); + // + const TopoDS_Face& aF1=TopoDS::Face(aLF.First()); + if (aNbF==1) { + if (aOrE==TopAbs_INTERNAL) { + continue; + } + bFound=Standard_True; + myShapesToAvoid.Add(aF1); + } + else if (aNbF==2) { + const TopoDS_Face& aF2=TopoDS::Face(aLF.Last()); + if (aF2.IsSame(aF1)) { + if (BRep_Tool::IsClosed(aE, aF1)) { + continue; + } + // + if (aOrE==TopAbs_INTERNAL) { + continue; + } + // + bFound=Standard_True; + myShapesToAvoid.Add(aF1); + myShapesToAvoid.Add(aF2); + } + } + }// for (i=1; i<=aNbE; ++i) { + // + if (!bFound) { + break; + } + // + }//while (1) +} +//======================================================================= +//function : PerformLoops +//purpose : +//======================================================================= + void GEOMAlgo_BuilderSolid::PerformLoops() +{ + myErrorStatus=0; + // + myLoops.Clear(); + // + Standard_Integer aNbLF, aNbOff, aNbFP; + TopAbs_Orientation anOr; + TopoDS_Edge aEL; + BRep_Builder aBB; + NMTTools_CoupleOfShape aCSOff; + TopTools_MapOfOrientedShape AddedFacesMap; + TopTools_IndexedDataMapOfShapeListOfShape aEFMap, aMEFP; + TopTools_ListIteratorOfListOfShape aItF; + // + //================================================= + // + // 1. Shells Usual + // + aItF.Initialize (myShapes); + for (; aItF.More(); aItF.Next()) { + const TopoDS_Shape& aFF = aItF.Value(); + TopExp::MapShapesAndAncestors(aFF, TopAbs_EDGE, TopAbs_FACE, aEFMap); + } + // + aItF.Initialize (myShapes); + for (; aItF.More(); aItF.Next()) { + const TopoDS_Shape& aFF = aItF.Value(); + if (myShapesToAvoid.Contains(aFF)) { + continue; + } + if (!AddedFacesMap.Add(aFF)) { + continue; + } + // + // make a new shell + TopoDS_Shell aShell; + aBB.MakeShell(aShell); + aBB.Add(aShell, aFF); + // + aMEFP.Clear(); + TopExp::MapShapesAndAncestors(aFF, TopAbs_EDGE, TopAbs_FACE, aMEFP); + // + // loop on faces added to Shell; add their neighbor faces to Shell and so on + TopoDS_Iterator aItAddedF (aShell); + for (; aItAddedF.More(); aItAddedF.Next()) { + const TopoDS_Face& aF = TopoDS::Face(aItAddedF.Value()); + // + // loop on edges of aF; find a good neighbor face of aF by aE + TopExp_Explorer aEdgeExp(aF, TopAbs_EDGE); + for (; aEdgeExp.More(); aEdgeExp.Next()) { + const TopoDS_Edge& aE = TopoDS::Edge(aEdgeExp.Current()); + // + //1 + if (aMEFP.Contains(aE)) { + const TopTools_ListOfShape& aLFP=aMEFP.FindFromKey(aE); + aNbFP=aLFP.Extent(); + if (aNbFP>1) { + continue; + } + } + //2 + anOr=aE.Orientation(); + if (anOr==TopAbs_INTERNAL) { + continue; + } + //3 + if (BRep_Tool::Degenerated(aE)) { + continue; + } + // + // candidate faces list + const TopTools_ListOfShape& aLF=aEFMap.FindFromKey(aE); + aNbLF=aLF.Extent(); + if (!aNbLF) { + continue; + } + // + // try to select one of neighbors + // check if a face already added to Shell shares E + Standard_Boolean bFound; + TopTools_ListIteratorOfListOfShape aItLF; + NMTTools_ListOfCoupleOfShape aLCSOff; + // + aItLF.Initialize(aLF); + for (; aItLF.More(); aItLF.Next()) { + const TopoDS_Face& aFL=TopoDS::Face(aItLF.Value()); + if (myShapesToAvoid.Contains(aFL)) { + continue; + } + if (aF.IsSame(aFL)) { + continue; + } + if (AddedFacesMap.Contains(aFL)){ + continue; + } + // + bFound=GEOMAlgo_Tools3D::GetEdgeOff(aE, aFL, aEL); + if (!bFound) { + continue; + } + // + aCSOff.SetShape1(aEL); + aCSOff.SetShape2(aFL); + aLCSOff.Append(aCSOff); + }//for (; aItLF.More(); aItLF.Next()) { + // + aNbOff=aLCSOff.Extent(); + if (!aNbOff){ + continue; + } + // + TopoDS_Face aSelF; + if (aNbOff==1) { + aSelF=TopoDS::Face(aLCSOff.First().Shape2()); + } + else if (aNbOff>1){ + GEOMAlgo_Tools3D::GetFaceOff(aE, aF, aLCSOff, aSelF); + } + // + if (!aSelF.IsNull() && AddedFacesMap.Add(aSelF)) { + aBB.Add(aShell, aSelF); + TopExp::MapShapesAndAncestors(aSelF, TopAbs_EDGE, TopAbs_FACE, aMEFP); + } + } // for (; aEdgeExp.More(); aEdgeExp.Next()) { + } //for (; aItAddedF.More(); aItAddedF.Next()) { + myLoops.Append(aShell); + } // for (; aItF.More(); aItF.Next()) { + //================================================= + // + // 2.Internal Shells + // + myLoopsInternal.Clear(); + // + Standard_Integer aNbFA; + TopTools_MapIteratorOfMapOfOrientedShape aItM; + // + aEFMap.Clear(); + AddedFacesMap.Clear(); + // + aNbFA=myShapesToAvoid.Extent(); + // + aItM.Initialize(myShapesToAvoid); + for (; aItM.More(); aItM.Next()) { + const TopoDS_Shape& aFF=aItM.Key(); + TopExp::MapShapesAndAncestors(aFF, TopAbs_EDGE, TopAbs_FACE, aEFMap); + } + // + aItM.Initialize(myShapesToAvoid); + for (; aItM.More(); aItM.Next()) { + const TopoDS_Shape& aFF=aItM.Key(); + if (!AddedFacesMap.Add(aFF)) { + continue; + } + // + // make a new shell + TopoDS_Shell aShell; + aBB.MakeShell(aShell); + aBB.Add(aShell, aFF); + // + TopoDS_Iterator aItAddedF (aShell); + for (; aItAddedF.More(); aItAddedF.Next()) { + const TopoDS_Face& aF = TopoDS::Face(aItAddedF.Value()); + // + TopExp_Explorer aEdgeExp(aF, TopAbs_EDGE); + for (; aEdgeExp.More(); aEdgeExp.Next()) { + const TopoDS_Edge& aE = TopoDS::Edge(aEdgeExp.Current()); + const TopTools_ListOfShape& aLF=aEFMap.FindFromKey(aE); + aItF.Initialize(aLF); + for (; aItF.More(); aItF.Next()) { + const TopoDS_Face& aFL=TopoDS::Face(aItF.Value()); + if (AddedFacesMap.Add(aFL)){ + aBB.Add(aShell, aFL); + } + } + } + } + myLoopsInternal.Append(aShell); + } +} +//======================================================================= +//function : PerformAreas +//purpose : +//======================================================================= + void GEOMAlgo_BuilderSolid::PerformAreas() +{ + myErrorStatus=0; + // + Standard_Boolean bIsGrowthShell, bIsHole; + TopTools_ListOfShape aNewSolids, aHoleShells; + TopoDS_Shape anInfinitePointShape; + TopTools_DataMapOfShapeShape aInOutMap; + TopTools_DataMapOfShapeListOfShape aMSH; + TopTools_DataMapIteratorOfDataMapOfShapeListOfShape aItMSH; + TopTools_ListIteratorOfListOfShape aShellIt, aSolidIt; + TopTools_IndexedMapOfShape aMHF; + BRep_Builder aBB; + // + myAreas.Clear(); + // + // Draft solids [aNewSolids] + aShellIt.Initialize(myLoops); + for ( ; aShellIt.More(); aShellIt.Next()) { + const TopoDS_Shape& aShell = aShellIt.Value(); + // + bIsGrowthShell=IsGrowthShell(aShell, aMHF); + if (bIsGrowthShell) { + // make a growth solid from a shell + TopoDS_Solid Solid; + aBB.MakeSolid(Solid); + aBB.Add (Solid, aShell); + // + aNewSolids.Append (Solid); + } + else{ + // check if a shell is a hole + //XX + bIsHole=IsHole(aShell, myContext); + //bIsHole=GEOMAlgo_BuilderTools::IsHole(aShell); + //XX + if (bIsHole) { + aHoleShells.Append(aShell); + TopExp::MapShapes(aShell, TopAbs_FACE, aMHF); + } + else { + // make a growth solid from a shell + TopoDS_Solid Solid; + aBB.MakeSolid(Solid); + aBB.Add (Solid, aShell); + // + aNewSolids.Append (Solid); + } + } + } + // + // 2. Find outer growth shell that is most close to each hole shell + aShellIt.Initialize(aHoleShells); + for (; aShellIt.More(); aShellIt.Next()) { + const TopoDS_Shape& aHole = aShellIt.Value(); + // + aSolidIt.Initialize(aNewSolids); + for ( ; aSolidIt.More(); aSolidIt.Next()) { + const TopoDS_Shape& aSolid = aSolidIt.Value(); + // + if (!IsInside(aHole, aSolid, myContext)){ + continue; + } + // + if ( aInOutMap.IsBound (aHole)){ + const TopoDS_Shape& aSolid2 = aInOutMap(aHole); + if (IsInside(aSolid, aSolid2, myContext)) { + aInOutMap.UnBind(aHole); + aInOutMap.Bind (aHole, aSolid); + } + } + else{ + aInOutMap.Bind (aHole, aSolid); + } + } + // + // Add aHole to a map Solid/ListOfHoles [aMSH] + if (aInOutMap.IsBound(aHole)){ + const TopoDS_Shape& aSolid=aInOutMap(aHole); + if (aMSH.IsBound(aSolid)) { + TopTools_ListOfShape& aLH=aMSH.ChangeFind(aSolid); + aLH.Append(aHole); + } + else { + TopTools_ListOfShape aLH; + aLH.Append(aHole); + aMSH.Bind(aSolid, aLH); + } + //aBB.Add (aSolid, aHole); + } + }// for (; aShellIt.More(); aShellIt.Next()) { + // + // 3. Add aHoles to Solids + aItMSH.Initialize(aMSH); + for (; aItMSH.More(); aItMSH.Next()) { + TopoDS_Solid aSolid=TopoDS::Solid(aItMSH.Key()); + // + const TopTools_ListOfShape& aLH=aItMSH.Value(); + aShellIt.Initialize(aLH); + for (; aShellIt.More(); aShellIt.Next()) { + const TopoDS_Shape& aHole = aShellIt.Value(); + aBB.Add (aSolid, aHole); + } + // + // update classifier + BRepClass3d_SolidClassifier& aSC=myContext->SolidClassifier(aSolid); + aSC.Load(aSolid); + // + } + // + // These aNewSolids are draft solids that + // do not contain any internal shapes + // + myAreas.Append(aNewSolids); +} +//======================================================================= +//function : PerformInternalShapes +//purpose : +//======================================================================= + void GEOMAlgo_BuilderSolid::PerformInternalShapes() +{ + myErrorStatus=0; + // + Standard_Integer aNbFI=myLoopsInternal.Extent(); + if (!aNbFI) {// nothing to do + return; + } + // + BRep_Builder aBB; + TopTools_ListIteratorOfListOfShape aShellIt, aSolidIt; + TopoDS_Iterator aIt; + TopTools_MapOfShape aMF, aMFP; + TopTools_MapIteratorOfMapOfShape aItMF; + TopTools_IndexedDataMapOfShapeListOfShape aMEF; + TopTools_ListOfShape aLSI; + // + // 1. All internal faces + aShellIt.Initialize(myLoopsInternal); + for (; aShellIt.More(); aShellIt.Next()) { + const TopoDS_Shape& aShell=aShellIt.Value(); + aIt.Initialize(aShell); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aF=aIt.Value(); + aMF.Add(aF); + } + } + aNbFI=aMF.Extent(); + // + // 2 Process solids + aSolidIt.Initialize(myAreas); + for ( ; aSolidIt.More(); aSolidIt.Next()) { + TopoDS_Solid& aSolid=TopoDS::Solid(aSolidIt.Value()); + // + aMEF.Clear(); + TopExp::MapShapesAndAncestors(aSolid, TopAbs_EDGE, TopAbs_FACE, aMEF); + // + // 2.1 Separate faces to process aMFP + aMFP.Clear(); + aItMF.Initialize(aMF); + for (; aItMF.More(); aItMF.Next()) { + const TopoDS_Face& aF=TopoDS::Face(aItMF.Key()); + if (GEOMAlgo_Tools3D::IsInternalFace(aF, aSolid, aMEF, 1.e-14, *myContext)) { + aMFP.Add(aF); + } + } + // + // 2.2 Make Internal Shells + aLSI.Clear(); + MakeInternalShells(aMFP, aLSI); + // + // 2.3 Add them to aSolid + aShellIt.Initialize(aLSI); + for (; aShellIt.More(); aShellIt.Next()) { + const TopoDS_Shape& aSI=aShellIt.Value(); + aBB.Add (aSolid, aSI); + } + // + // 2.4 Remove faces aMFP from aMF + aItMF.Initialize(aMFP); + for (; aItMF.More(); aItMF.Next()) { + const TopoDS_Shape& aF=aItMF.Key(); + aMF.Remove(aF); + } + // + aNbFI=aMF.Extent(); + if (!aNbFI) { + break; + } + } //for ( ; aSolidIt.More(); aSolidIt.Next()) { +} + +//======================================================================= +//function : MakeInternalShells +//purpose : +//======================================================================= +void MakeInternalShells(const TopTools_MapOfShape& theMF, + TopTools_ListOfShape& theShells) +{ + TopTools_MapIteratorOfMapOfShape aItM; + TopTools_MapOfShape aAddedFacesMap; + TopTools_ListIteratorOfListOfShape aItF; + TopTools_IndexedDataMapOfShapeListOfShape aMEF; + BRep_Builder aBB; + // + aItM.Initialize(theMF); + for (; aItM.More(); aItM.Next()) { + const TopoDS_Shape& aF=aItM.Key(); + TopExp::MapShapesAndAncestors(aF, TopAbs_EDGE, TopAbs_FACE, aMEF); + } + // + aItM.Initialize(theMF); + for (; aItM.More(); aItM.Next()) { + TopoDS_Shape aFF=aItM.Key(); + if (!aAddedFacesMap.Add(aFF)) { + continue; + } + // + // make a new shell + TopoDS_Shell aShell; + aBB.MakeShell(aShell); + aFF.Orientation(TopAbs_INTERNAL); + aBB.Add(aShell, aFF); + // + TopoDS_Iterator aItAddedF (aShell); + for (; aItAddedF.More(); aItAddedF.Next()) { + const TopoDS_Shape& aF =aItAddedF.Value(); + // + TopExp_Explorer aEdgeExp(aF, TopAbs_EDGE); + for (; aEdgeExp.More(); aEdgeExp.Next()) { + const TopoDS_Shape& aE =aEdgeExp.Current(); + const TopTools_ListOfShape& aLF=aMEF.FindFromKey(aE); + aItF.Initialize(aLF); + for (; aItF.More(); aItF.Next()) { + TopoDS_Shape aFL=aItF.Value(); + if (aAddedFacesMap.Add(aFL)){ + aFL.Orientation(TopAbs_INTERNAL); + aBB.Add(aShell, aFL); + } + } + } + } + theShells.Append(aShell); + } +} +//======================================================================= +//function : IsHole +//purpose : +//======================================================================= +Standard_Boolean IsHole(const TopoDS_Shape& theS2, + IntTools_PContext& theContext) +{ + TopoDS_Solid *pS2=(TopoDS_Solid *)&theS2; + BRepClass3d_SolidClassifier& aClsf=theContext->SolidClassifier(*pS2); + // + aClsf.PerformInfinitePoint(::RealSmall()); + // + return (aClsf.State()==TopAbs_IN); +} +//======================================================================= +//function : IsInside +//purpose : +//======================================================================= +Standard_Boolean IsInside(const TopoDS_Shape& theS1, + const TopoDS_Shape& theS2, + IntTools_PContext& theContext) +{ + TopExp_Explorer aExp; + TopAbs_State aState; + // + TopoDS_Solid *pS2=(TopoDS_Solid *)&theS2; + // + aExp.Init(theS1, TopAbs_FACE); + if (!aExp.More()){ + BRepClass3d_SolidClassifier& aClsf=theContext->SolidClassifier(*pS2); + aClsf.PerformInfinitePoint(::RealSmall()); + aState=aClsf.State(); + } + else { + TopTools_IndexedMapOfShape aBounds; + const TopoDS_Face& aF = TopoDS::Face(aExp.Current()); + aState=GEOMAlgo_Tools3D::ComputeState(aF, *pS2, 1.e-14, aBounds, *theContext); + } + return (aState==TopAbs_IN); +} +//======================================================================= +//function : IsGrowthShell +//purpose : +//======================================================================= +Standard_Boolean IsGrowthShell(const TopoDS_Shape& theShell, + const TopTools_IndexedMapOfShape& theMHF) +{ + Standard_Boolean bRet; + TopoDS_Iterator aIt; + // + bRet=Standard_False; + if (theMHF.Extent()) { + aIt.Initialize(theShell); + for(; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aF=aIt.Value(); + if (theMHF.Contains(aF)) { + return !bRet; + } + } + } + return bRet; +} + +//BRepTools::Write(aFF, "ff"); +// +// ErrorStatus : +// 11 - Null Context diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderSolid.hxx b/src/GEOMAlgo/GEOMAlgo_BuilderSolid.hxx new file mode 100644 index 000000000..d317a5cdc --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderSolid.hxx @@ -0,0 +1,114 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_BuilderSolid_HeaderFile +#define _GEOMAlgo_BuilderSolid_HeaderFile + +#ifndef _GEOMAlgo_BuilderArea_HeaderFile +#include +#endif + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + +//! The algorithm to build solids from set of faces
+class GEOMAlgo_BuilderSolid : public GEOMAlgo_BuilderArea { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + +//! Empty constructor
+Standard_EXPORT GEOMAlgo_BuilderSolid(); +Standard_EXPORT virtual ~GEOMAlgo_BuilderSolid(); + +//! Performs the algorithm
+Standard_EXPORT virtual void Perform() ; + + + + + +protected: + + // Methods PROTECTED + // + +//! Collect the faces that
+//! a) are internal
+//! b) are the same and have different orientation
+Standard_EXPORT virtual void PerformShapesToAvoid() ; + +//! Build draft shells
+//! a)myLoops - draft shells that consist of
+//! boundary faces
+//! b)myLoopsInternal - draft shells that contains
+//! inner faces
+Standard_EXPORT virtual void PerformLoops() ; + +//! Build draft solids that contains boundary faces
+Standard_EXPORT virtual void PerformAreas() ; + +//! Build finalized solids with internal shells
+Standard_EXPORT virtual void PerformInternalShapes() ; + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderSolid.ixx b/src/GEOMAlgo/GEOMAlgo_BuilderSolid.ixx new file mode 100644 index 000000000..1d54ca3ce --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderSolid.ixx @@ -0,0 +1,24 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderSolid.jxx b/src/GEOMAlgo/GEOMAlgo_BuilderSolid.jxx new file mode 100644 index 000000000..db2175f6c --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderSolid.jxx @@ -0,0 +1,22 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_BuilderSolid_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderTools.cdl b/src/GEOMAlgo/GEOMAlgo_BuilderTools.cdl new file mode 100755 index 000000000..949e81d5a --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderTools.cdl @@ -0,0 +1,47 @@ +-- Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +-- +-- File: GEOMAlgo_BuilderTools.cdl +-- Created: +-- Author: Peter KURNEV +-- + + +class BuilderTools from GEOMAlgo + + ---Purpose: + +uses + Shape from TopoDS + +--raises + +is + IsHole(myclass; + aW: Shape from TopoDS; + aF: Shape from TopoDS) + returns Boolean from Standard; + + IsHole(myclass; + aShell: Shape from TopoDS) + returns Boolean from Standard; + +--fields + +end BuilderTools; diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderTools.cxx b/src/GEOMAlgo/GEOMAlgo_BuilderTools.cxx new file mode 100755 index 000000000..0d537dff2 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderTools.cxx @@ -0,0 +1,278 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: GEOMAlgo_BuilderTools.cxx +// Created: +// Author: Peter KURNEV +// + + +#include + +#include + +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +static + Standard_Integer ComputeProps(const TopoDS_Face& aF, + Standard_Real& aA, + Standard_Real& aV); +static + void BuildTriangulation(const TopoDS_Face& aF); + +//======================================================================= +//function : IsHole +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_BuilderTools::IsHole(const TopoDS_Shape& aW, + const TopoDS_Shape& aFace) +{ + Standard_Boolean bIsHole; + Standard_Integer i, aNbS; + Standard_Real aT1, aT2, aS; + Standard_Real aU1, aU2, aU, dU; + Standard_Real aX1, aY1, aX0, aY0; + TopAbs_Orientation aOr; + + gp_Pnt2d aP2D0, aP2D1; + Handle(Geom2d_Curve) aC2D; + TopoDS_Face aF, aFF; + TopoDS_Iterator aItW; + // + bIsHole=Standard_False; + // + aF=TopoDS::Face(aFace); + aFF=aF; + aFF.Orientation(TopAbs_FORWARD); + // + aS=0.; + aItW.Initialize(aW); + for (; aItW.More(); aItW.Next()) { + const TopoDS_Edge& aE=TopoDS::Edge(aItW.Value()); + aOr=aE.Orientation(); + if (!(aOr==TopAbs_FORWARD || + aOr==TopAbs_REVERSED)) { + continue; + } + // + aC2D=BRep_Tool::CurveOnSurface(aE, aFF, aT1, aT2); + if (aC2D.IsNull()) { + break; //xx + } + // + BRepAdaptor_Curve2d aBAC2D(aE, aFF); + aNbS=Geom2dInt_Geom2dCurveTool::NbSamples(aBAC2D); + if (aNbS>2) { + aNbS*=4; + } + // + dU=(aT2-aT1)/(Standard_Real)(aNbS-1); + aU =aT1; + aU1=aT1; + aU2=aT2; + if (aOr==TopAbs_REVERSED) { + aU =aT2; + aU1=aT2; + aU2=aT1; + dU=-dU; + } + // + aC2D->D0(aU, aP2D0); + for(i=2; i<=aNbS; i++) { + aU=aU1+(i-1)*dU; + aC2D->D0(aU, aP2D1); + aP2D0.Coord(aX0, aY0); + aP2D1.Coord(aX1, aY1); + // + aS=aS+(aY0+aY1)*(aX1-aX0); + // + aP2D0=aP2D1; + } + }//for (; aItW.More(); aItW.Next()) { + bIsHole=(aS>0.); + return bIsHole; +} +//======================================================================= +//function : IsHole +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_BuilderTools::IsHole(const TopoDS_Shape& aShell) +{ + Standard_Boolean bIsHole; + Standard_Integer iRet; + Standard_Real aAi, aA, aV, aVi; + TopExp_Explorer aExp; + // + aA=0.; + aV=0.; + aExp.Init(aShell, TopAbs_FACE); + for (; aExp.More(); aExp.Next()) { + const TopoDS_Face& aF=TopoDS::Face(aExp.Current()); + iRet=ComputeProps(aF, aAi, aVi); + if (!iRet) { + aA+=aAi; + aV+=aVi; + } + } + // + bIsHole=aV<0.; + return bIsHole; +} +//======================================================================= +//function : ComputeProps +//purpose : +//======================================================================= +Standard_Integer ComputeProps(const TopoDS_Face& aF, + Standard_Real& aA, + Standard_Real& aV) +{ + Standard_Integer j, i, i1, i2, aNbNodes, aNbTrigs, n[3]; + Standard_Real aAi, aVi; + gp_Pnt aP[3], aGC, aGC1; + TopLoc_Location aLoc; + TopAbs_Orientation aOr; + Handle(Poly_Triangulation) aTri; + // + aA=0.; + aV=0.; + // + aTri=BRep_Tool::Triangulation(aF, aLoc); + if(aTri.IsNull()) { + BuildTriangulation(aF); + aTri=BRep_Tool::Triangulation(aF, aLoc); + if(aTri.IsNull()) { + return 1;// a face is without triangulation + } + } + // + aNbNodes=aTri->NbNodes(); + aNbTrigs=aTri->NbTriangles(); + if (!aNbTrigs){ + return 2;//no triangles + } + // + aOr=aF.Orientation(); + // + const TColgp_Array1OfPnt& aNodes=aTri->Nodes(); + const Poly_Array1OfTriangle& aTriangles=aTri->Triangles(); + // + i1=aTriangles.Lower(); + i2=aTriangles.Upper(); + // + for (i=i1; i<=i2; ++i){ + const Poly_Triangle& aTriangle=aTriangles.Value(i); + aTriangle.Get(n[0], n[1], n[2]); + aGC.SetCoord(0.,0.,0.); + for (j=0; j<3; ++j) { + aP[j]=aNodes.Value(n[j]); + aGC.ChangeCoord()+=aP[j].XYZ(); + } + aGC.ChangeCoord()*=0.333333333333; + // + // Normal + gp_Vec aV01(aP[0], aP[1]); + gp_Vec aV12(aP[1], aP[2]); + gp_Vec aVN=aV01^aV12; + aAi=aVN.Magnitude(); + aA=aA+aAi; + // + if (aAi>0.0000001) { + Standard_Real aSx, aZx; + gp_Dir aDN(aVN); + if (aOr==TopAbs_REVERSED) { + aDN.Reverse(); + } + // + aSx=aAi*aDN.Z(); + aZx=aGC.Z(); + aVi=aZx*aSx; + aV=aV+aVi; + } + } + return 0; +} +//======================================================================= +//function : BuildTriangulation +//purpose : +//======================================================================= +void BuildTriangulation(const TopoDS_Face& aF) +{ + Standard_Boolean bWithShare; + Standard_Real aDiscret, aXmin, aYmin, aZmin, aXmax, aYmax, aZmax; + Standard_Real dX, dY, dZ, dMax, aCoeff, aAngle; + Bnd_Box aBox; + // + bWithShare=Standard_False; + aAngle=0.5; + // + BRepBndLib::Add(aF, aBox); + // + // aDiscret + aBox.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax); + dX=aXmax-aXmin; + dY=aYmax-aYmin; + dZ=aZmax-aZmin; + dMax=dX; + if (dY>dMax) { + dMax=dY; + } + if (dZ>dMax) { + dMax=dZ; + } + // + aCoeff=0.1; + aDiscret=aCoeff*dMax; + // + BRepMesh_FastDiscret aMesher(aDiscret, + aAngle, + aBox, + bWithShare, + Standard_True, + Standard_False, + Standard_True); + aMesher.Add(aF); +} diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderTools.hxx b/src/GEOMAlgo/GEOMAlgo_BuilderTools.hxx new file mode 100644 index 000000000..43bd9486f --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderTools.hxx @@ -0,0 +1,96 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_BuilderTools_HeaderFile +#define _GEOMAlgo_BuilderTools_HeaderFile + +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class TopoDS_Shape; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class GEOMAlgo_BuilderTools { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT static Standard_Boolean IsHole(const TopoDS_Shape& aW,const TopoDS_Shape& aF) ; + + +Standard_EXPORT static Standard_Boolean IsHole(const TopoDS_Shape& aShell) ; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderTools.ixx b/src/GEOMAlgo/GEOMAlgo_BuilderTools.ixx new file mode 100644 index 000000000..352fdb068 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderTools.ixx @@ -0,0 +1,24 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_BuilderTools.jxx b/src/GEOMAlgo/GEOMAlgo_BuilderTools.jxx new file mode 100644 index 000000000..fc2050189 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_BuilderTools.jxx @@ -0,0 +1,25 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_BuilderTools_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_Builder_0.cxx b/src/GEOMAlgo/GEOMAlgo_Builder_0.cxx new file mode 100644 index 000000000..72a8b39dc --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Builder_0.cxx @@ -0,0 +1,61 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//======================================================================= +//function : Shapes1 +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_Builder::Shapes1(const Standard_Integer theType)const +{ + return myShapes1[theType]; +} +//======================================================================= +//function : Images +//purpose : +//======================================================================= + const BRepAlgo_Image& GEOMAlgo_Builder::Images()const +{ + return myImages; +} +//======================================================================= +//function : InParts +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_Builder::InParts(const TopoDS_Shape& theS)const +{ + static TopTools_ListOfShape sLS; + // + if (myInParts.Contains(theS)) { + return myInParts.FindFromKey(theS); + } + return sLS; +} diff --git a/src/GEOMAlgo/GEOMAlgo_Builder_1.cxx b/src/GEOMAlgo/GEOMAlgo_Builder_1.cxx new file mode 100755 index 000000000..d42da67e2 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Builder_1.cxx @@ -0,0 +1,354 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: GEOMAlgo_Builder_1.cxx +// Created: +// Author: Peter KURNEV + +#include +// +#include + +#include +#include +#include +#include +#include +#include +// +#include +#include +#include +#include +// +#include +#include +// +#include +#include +#include +#include +// +#include +// +#include +#include +#include +#include +#include +#include +#include +#include +// +#include +#include + + + +static + void FillImagesCompounds(const TopTools_MapOfShape& , + BRepAlgo_Image& ); + +static + void FillImagesCompound(const TopoDS_Shape& , + BRepAlgo_Image& , + TopTools_MapOfShape& ); + +//======================================================================= +//function : FillImagesVertices +//purpose : +//======================================================================= + void GEOMAlgo_Builder::FillImagesVertices() +{ + myErrorStatus=0; + // + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + // + Standard_Integer i, aNb, iV; + // + aNb=aDS.NumberOfShapesOfTheObject(); + for (i=1; i<=aNb; ++i) { + const TopoDS_Shape& aV=aDS.Shape(i); + if (aV.ShapeType()==TopAbs_VERTEX) { + iV=pPF->FindSDVertex(i); + if (iV) { + const TopoDS_Shape& aVSD=aDS.Shape(iV); + if (!myImages.HasImage(aV)) { + myImages.Bind(aV, aVSD); + // + mySameDomainShapes.Add(aV, aVSD); + // + } + } + } + } +} +//======================================================================= +// function: FillImagesEdges +// purpose: +//======================================================================= + void GEOMAlgo_Builder::FillImagesEdges() +{ + myErrorStatus=0; + // + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + const BOPTools_SplitShapesPool& aSSP=pPF->SplitShapesPool(); + NMTTools_CommonBlockPool& aCBP=pPF->ChangeCommonBlockPool(); + IntTools_Context& aCtx=pPF->ChangeContext(); + // + Standard_Boolean bToReverse; + Standard_Integer i, aNb, aNbSp, nSp, nSpR, nSpx; + TColStd_ListIteratorOfListOfInteger aItLB; + TColStd_ListOfInteger aLB; + TopoDS_Edge aEE, aESpR; + TopTools_MapOfShape aMFence; + TopTools_ListOfShape aLSp; + TopTools_ListIteratorOfListOfShape aIt1; + BOPTools_ListIteratorOfListOfPaveBlock aIt; + // + aNb=aDS.NumberOfShapesOfTheObject(); + for (i=1; i<=aNb; ++i) { + const TopoDS_Shape& aE=aDS.Shape(i); + if (aE.ShapeType()!=TopAbs_EDGE) { + continue; + } + // + if (!aMFence.Add(aE)) { + continue; + } + // + const BOPTools_ListOfPaveBlock& aLPB=aSSP(aDS.RefEdge(i)); + aNbSp=aLPB.Extent(); + if (!aNbSp) { + continue; + } + // + aEE=TopoDS::Edge(aE); + aLSp.Clear(); + // + if (aNbSp==1) { + const BOPTools_PaveBlock& aPB=aLPB.First(); + nSp=aPB.Edge(); + const TopoDS_Shape& aSp=aDS.Shape(nSp); + // + const BOPTools_PaveBlock& aPBR=pPF->RealPaveBlock(aPB, aLB); + nSpR=aPBR.Edge(); + const TopoDS_Shape& aSpR=aDS.Shape(nSpR); + if (aSpR.IsSame(aSp) && aSpR.IsSame(aE)) { + continue; + } + // + aESpR=TopoDS::Edge(aSpR); + bToReverse=GEOMAlgo_Tools3D::IsSplitToReverse(aESpR, aEE, aCtx); + if (bToReverse) { + aESpR.Reverse(); + } + aLSp.Append(aESpR); + // + aItLB.Initialize(aLB); + for (; aItLB.More(); aItLB.Next()) { + nSpx=aItLB.Value(); + const TopoDS_Shape& aSpx=aDS.Shape(nSpx); + mySameDomainShapes.Add(aSpx ,aSpR); + } + // + // + }// if (aNbSp==1) { + else { + aIt.Initialize(aLPB); + for (; aIt.More(); aIt.Next()) { + const BOPTools_PaveBlock& aPB=aIt.Value(); + const BOPTools_PaveBlock& aPBR=pPF->RealPaveBlock(aPB, aLB); + nSpR=aPBR.Edge(); + const TopoDS_Shape& aSpR=aDS.Shape(nSpR); + // + aESpR=TopoDS::Edge(aSpR); + bToReverse=GEOMAlgo_Tools3D::IsSplitToReverse(aESpR, aEE, aCtx); + if (bToReverse) { + aESpR.Reverse(); + } + aLSp.Append(aESpR); + // + aItLB.Initialize(aLB); + for (; aItLB.More(); aItLB.Next()) { + nSpx=aItLB.Value(); + const TopoDS_Shape& aSpx=aDS.Shape(nSpx); + mySameDomainShapes.Add(aSpx ,aSpR); + } + // + } + } + // + myImages.Bind(aE, aLSp); + + }//for (i=1; i<=aNb; ++i) +} +//======================================================================= +// function: FillImagesContainers +// purpose: +//======================================================================= + void GEOMAlgo_Builder::FillImagesContainers(const TopAbs_ShapeEnum theType) +{ + myErrorStatus=0; + // + Standard_Boolean bInterferred, bToReverse; + Standard_Integer i, aNbS; + TopAbs_ShapeEnum aType; + BRep_Builder aBB; + TopoDS_Iterator aIt; + TopTools_ListIteratorOfListOfShape aItIm; + TopTools_MapOfShape aMS; + TopTools_MapIteratorOfMapOfShape aItS; + // + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + IntTools_Context& aCtx= pPF->ChangeContext(); + // + aNbS=aDS.NumberOfShapesOfTheObject(); + for (i=1; i<=aNbS; ++i) { + const TopoDS_Shape& aC=aDS.Shape(i); + aType=aC.ShapeType(); + if (aType==theType) { + aMS.Add(aC); + } + } + // + if (theType==TopAbs_COMPOUND) { + FillImagesCompounds(aMS, myImages); + return; + } + // + aItS.Initialize(aMS); + for (; aItS.More(); aItS.Next()) { + const TopoDS_Shape& aC=aItS.Key(); + // whether the shape has image + bInterferred=Standard_False; + aIt.Initialize(aC); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aF=aIt.Value(); + if (myImages.HasImage(aF)) { + bInterferred=!bInterferred; + break; + } + } + if (!bInterferred){ + continue; + } + // + TopoDS_Shape aCIm; + GEOMAlgo_Tools3D::MakeContainer(theType, aCIm); + // + aIt.Initialize(aC); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aF=aIt.Value(); + if (myImages.HasImage(aF)) { + const TopTools_ListOfShape& aLFIm=myImages.Image(aF); + aItIm.Initialize(aLFIm); + for (; aItIm.More(); aItIm.Next()) { + TopoDS_Shape aFIm=aItIm.Value(); + // + bToReverse=GEOMAlgo_Tools3D::IsSplitToReverse(aFIm, aF, aCtx); + if (bToReverse) { + aFIm.Reverse(); + } + aBB.Add(aCIm, aFIm); + } + } + else { + aBB.Add(aCIm, aF); + } + } + myImages.Bind(aC, aCIm); + }// for (; aItS.More(); aItS.Next()) { +} +//======================================================================= +// function: FillImagesCompounds +// purpose: +//======================================================================= +void FillImagesCompounds(const TopTools_MapOfShape& theMS, + BRepAlgo_Image& theImages) +{ + TopTools_MapOfShape aMFP; + TopTools_MapIteratorOfMapOfShape aItS; + // + aItS.Initialize(theMS); + for (; aItS.More(); aItS.Next()) { + const TopoDS_Shape& aC=aItS.Key(); + FillImagesCompound(aC, theImages, aMFP); + } +} +//======================================================================= +//function : FillImagesCompound +//purpose : +//======================================================================= +void FillImagesCompound(const TopoDS_Shape& theS, + BRepAlgo_Image& theImages, + TopTools_MapOfShape& theMFP) +{ + Standard_Boolean bInterferred; + TopAbs_ShapeEnum aTypeX; + TopAbs_Orientation aOrX; + TopoDS_Iterator aIt; + BRep_Builder aBB; + TopTools_ListIteratorOfListOfShape aItIm; + // + if (!theMFP.Add(theS)) { + return; + } + // + bInterferred=Standard_False; + aIt.Initialize(theS); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aSX=aIt.Value(); + aTypeX=aSX.ShapeType(); + if (aTypeX==TopAbs_COMPOUND) { + FillImagesCompound(aSX, theImages, theMFP); + } + if (theImages.HasImage(aSX)) { + bInterferred=Standard_True; + } + } + if (!bInterferred){ + return; + } + // + TopoDS_Shape aCIm; + GEOMAlgo_Tools3D::MakeContainer(TopAbs_COMPOUND, aCIm); + // + aIt.Initialize(theS); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aSX=aIt.Value(); + aOrX=aSX.Orientation(); + if (theImages.HasImage(aSX)) { + const TopTools_ListOfShape& aLFIm=theImages.Image(aSX); + aItIm.Initialize(aLFIm); + for (; aItIm.More(); aItIm.Next()) { + TopoDS_Shape aSXIm=aItIm.Value(); + aSXIm.Orientation(aOrX); + aBB.Add(aCIm, aSXIm); + } + } + else { + aBB.Add(aCIm, aSX); + } + } + theImages.Bind(theS, aCIm); +} diff --git a/src/GEOMAlgo/GEOMAlgo_Builder_2.cxx b/src/GEOMAlgo/GEOMAlgo_Builder_2.cxx new file mode 100755 index 000000000..068fbc564 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Builder_2.cxx @@ -0,0 +1,783 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: GEOMAlgo_Builder_2.cxx +// Created: +// Author: Peter KURNEV + +#include + +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// +#include +#include +#include + +static + void UpdateCandidates(const Standard_Integer , + const Standard_Integer , + NMTTools_IndexedDataMapOfIndexedMapOfInteger& ); + +//======================================================================= +//function : FillImagesFaces +//purpose : +//======================================================================= + void GEOMAlgo_Builder::FillImagesFaces() +{ + myErrorStatus=0; + // + FillIn2DParts(); + BuildSplitFaces(); + FillSameDomainFaces(); + FillImagesFaces1(); + FillInternalVertices(); +} +//======================================================================= +// function: FillIn2DParts +// purpose: +//======================================================================= + void GEOMAlgo_Builder::FillIn2DParts() +{ + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + BOPTools_InterferencePool* pIP=(BOPTools_InterferencePool*)&myDSFiller->InterfPool(); + BOPTools_CArray1OfSSInterference& aFFs=pIP->SSInterferences(); + NMTTools_CommonBlockPool& aCBP=pPF->ChangeCommonBlockPool(); + // + Standard_Integer j, nSpIn, nSpSc, aNbCurves; + Standard_Integer aNbS, nF, aNbCBP, n1, n2, aNbFFs, aNbSpIn; + TopTools_MapOfShape aMFence; + TopTools_ListOfShape aLSpIn; + TopoDS_Face aF; + NMTTools_ListIteratorOfListOfCommonBlock aItCB; + BOPTools_ListIteratorOfListOfPaveBlock aItPB; + // + myInParts.Clear(); + // + aNbFFs=aFFs.Extent(); + aNbCBP=aCBP.Extent(); + // + aNbS=aDS.NumberOfShapesOfTheObject(); + for (nF=1; nF<=aNbS; ++nF) { + if (aDS.GetShapeType(nF)!=TopAbs_FACE) { + continue; + } + // + aF=TopoDS::Face(aDS.Shape(nF)); + // + aMFence.Clear(); + aLSpIn.Clear(); + // + // 1. In Parts + for (j=1; j<=aNbCBP; ++j) { + NMTTools_ListOfCommonBlock& aLCB=aCBP(j); + aItCB.Initialize(aLCB); + for (; aItCB.More(); aItCB.Next()) { + NMTTools_CommonBlock& aCB=aItCB.Value(); + if (aCB.IsPaveBlockOnFace(nF)) { + const BOPTools_PaveBlock& aPB1=aCB.PaveBlock1(); + nSpIn=aPB1.Edge(); + const TopoDS_Shape& aSpIn=aDS.Shape(nSpIn); + if (aMFence.Add(aSpIn)){ + aLSpIn.Append(aSpIn); + } + } + } + } + // + // 2. Section Parts + for (j=1; j<=aNbFFs; ++j) { + BOPTools_SSInterference& aFF=aFFs(j); + aFF.Indices(n1, n2); + if (!(n1==nF || n2==nF)) { + continue; + } + BOPTools_SequenceOfCurves& aSC=aFF.Curves(); + aNbCurves=aSC.Length(); + if (!aNbCurves) { + continue; + } + // + const BOPTools_Curve& aBC=aSC(1); + const BOPTools_ListOfPaveBlock& aLPB=aBC.NewPaveBlocks(); + aItPB.Initialize(aLPB); + for (; aItPB.More(); aItPB.Next()) { + const BOPTools_PaveBlock& aPBSc=aItPB.Value(); + nSpSc=aPBSc.Edge(); + const TopoDS_Shape& aSpSc=aDS.Shape(nSpSc); + if (aMFence.Add(aSpSc)){ + aLSpIn.Append(aSpSc); + } + } + } + aNbSpIn=aLSpIn.Extent(); + if (aNbSpIn) { + myInParts.Add(aF, aLSpIn); + } + }//for (nF=1; nF<=aNbS; ++nF) { +} +//======================================================================= +// function: BuildSplitFaces +// purpose: +//======================================================================= + void GEOMAlgo_Builder::BuildSplitFaces() +{ + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + BOPTools_InterferencePool* pIP=(BOPTools_InterferencePool*)&myDSFiller->InterfPool(); + BOPTools_CArray1OfSSInterference& aFFs=pIP->SSInterferences(); + IntTools_Context& aCtx= pPF->ChangeContext(); + // + Standard_Boolean bToReverse, bIsClosed, bIsDegenerated; + Standard_Integer i, aNb, aNbF, nF; + TopTools_MapOfShape aMFence; + TColStd_IndexedMapOfInteger aMFP; + TopExp_Explorer anExp; + TopoDS_Face aFF; + TopoDS_Edge aSp, aEE; + TopTools_ListIteratorOfListOfShape aIt; + TopAbs_Orientation anOriF, anOriE; + // + mySplitFaces.Clear(); + // + // 1. Select Faces to process (MFP) + aNb=aDS.NumberOfShapesOfTheObject(); + for (i=1; i<=aNb; ++i) { + const TopoDS_Shape& aF=aDS.Shape(i); + if (aF.ShapeType()!=TopAbs_FACE) { + continue; + } + if (!aMFence.Add(aF)) { + continue; + } + // + if (myInParts.Contains(aF)) { + aMFP.Add(i); + continue; + } + // + anExp.Init(aF, TopAbs_EDGE); + for (; anExp.More(); anExp.Next()) { + const TopoDS_Shape& aE=anExp.Current(); + if (myImages.HasImage(aE)) { + aMFP.Add(i); + break; + } + } + // + //=== + { + Standard_Integer aNbFFs, aNbSE, j, n1, n2; + // + aNbFFs=aFFs.Extent(); + for (j=1; j<=aNbFFs; ++j) { + BOPTools_SSInterference& aFFj=aFFs(j); + aFFj.Indices(n1, n2); + if (!(n1==i || n2==i)) { + continue; + } + // + const TColStd_ListOfInteger& aLSE=aFFj.SharedEdges(); + aNbSE=aLSE.Extent(); + if (aNbSE) { + aMFP.Add(i); + } + } + } + //=== + // + }// for (i=1; i<=aNb; ++i) + // + // 2. ProcessFaces + aNbF=aMFP.Extent(); + for (i=1; i<=aNbF; ++i) { + nF=aMFP(i); + const TopoDS_Face& aF=TopoDS::Face(aDS.Shape(nF)); + anOriF=aF.Orientation(); + aFF=aF; + aFF.Orientation(TopAbs_FORWARD); + // + aMFence.Clear(); + // + // 2.1. Fill WES + GEOMAlgo_WireEdgeSet aWES; + aWES.SetFace(aFF); + // + // 2.1.1. Add Split parts + anExp.Init(aFF, TopAbs_EDGE); + for (; anExp.More(); anExp.Next()) { + const TopoDS_Edge& aE=TopoDS::Edge(anExp.Current()); + anOriE=aE.Orientation(); + // + if (!myImages.HasImage(aE)) { + if (anOriE==TopAbs_INTERNAL) { + aEE=aE; + aEE.Orientation(TopAbs_FORWARD); + aWES.AddStartElement(aEE); + aEE.Orientation(TopAbs_REVERSED); + aWES.AddStartElement(aEE); + } + else { + aWES.AddStartElement(aE); + } + continue; + } + // + bIsDegenerated=BRep_Tool::Degenerated(aE); + bIsClosed=BRep_Tool::IsClosed(aE, aF); + // + const TopTools_ListOfShape& aLIE=myImages.Image(aE); + aIt.Initialize(aLIE); + for (; aIt.More(); aIt.Next()) { + aSp=TopoDS::Edge(aIt.Value()); + // + if (bIsDegenerated) { + aSp.Orientation(anOriE); + aWES.AddStartElement(aSp); + continue; + } + // + if (anOriE==TopAbs_INTERNAL) { + aSp.Orientation(TopAbs_FORWARD); + aWES.AddStartElement(aSp); + aSp.Orientation(TopAbs_REVERSED); + aWES.AddStartElement(aSp); + continue; + } + // + if (bIsClosed){ + if (aMFence.Add(aSp)) { + // + if (!BRep_Tool::IsClosed(aSp, aF)){ + BOPTools_Tools3D::DoSplitSEAMOnFace(aSp, aF); + } + // + aSp.Orientation(TopAbs_FORWARD); + aWES.AddStartElement(aSp); + aSp.Orientation(TopAbs_REVERSED); + aWES.AddStartElement(aSp); + } + continue; + }// if (aMFence.Add(aSp)) + // + aSp.Orientation(anOriE); + bToReverse=BOPTools_Tools3D::IsSplitToReverse1(aSp, aE, aCtx); + if (bToReverse) { + aSp.Reverse(); + } + aWES.AddStartElement(aSp); + }// for (; aIt.More(); aIt.Next()) { + }// for (; anExp.More(); anExp.Next()) { + // + // 2.1.2. Add In2D Parts + if (myInParts.Contains(aF)) { + const TopTools_ListOfShape& aLE=myInParts.FindFromKey(aF); + aIt.Initialize(aLE); + for (; aIt.More(); aIt.Next()) { + aSp=TopoDS::Edge(aIt.Value()); + // + aSp.Orientation(TopAbs_FORWARD); + aWES.AddStartElement(aSp); + // + aSp.Orientation(TopAbs_REVERSED); + aWES.AddStartElement(aSp); + } + } + // + // 2.2. Build images Faces + GEOMAlgo_BuilderFace aBF; + // + aBF.SetFace(aFF); + aBF.SetContext(aCtx); + const TopTools_ListOfShape& aSE=aWES.StartElements(); + aBF.SetShapes(aSE); + // + aBF.Perform(); + // + const TopTools_ListOfShape& aLF=aBF.Areas(); + // + TopTools_ListOfShape aLFR; + // + aIt.Initialize(aLF); + for (; aIt.More(); aIt.Next()) { + TopoDS_Shape& aFR=aIt.Value(); + if (anOriF==TopAbs_REVERSED) { + aFR.Orientation(TopAbs_REVERSED); + } + aLFR.Append(aFR); + } + // + // 2.3. Collect draft images Faces + mySplitFaces.Bind(aF, aLFR); + }//for (i=1; i<=aNbF; ++i) +} +//======================================================================= +// function: FillSameDomainFaces +// purpose: +//======================================================================= + void GEOMAlgo_Builder::FillSameDomainFaces() +{ + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + BOPTools_InterferencePool* pIP=(BOPTools_InterferencePool*)&myDSFiller->InterfPool(); + BOPTools_CArray1OfSSInterference& aFFs=pIP->SSInterferences(); + IntTools_Context& aCtx= pPF->ChangeContext(); + // + Standard_Boolean bIsSDF; + Standard_Integer i, j, aNbFF, nF1, nF2, aNbPBInOn, aNbC, aNbSE; + TopTools_MapOfShape aMFence; + TopTools_ListIteratorOfListOfShape aItF1, aItF2; + NMTTools_ListOfCoupleOfShape aLCS; + // + //mySameDomainShapes.Clear(); + // + // 1. For each FF find among images of faces + // all pairs of same domain faces (SDF) [=> aLCS] + aNbFF=aFFs.Extent(); + for (i=1; i<=aNbFF; ++i) { + BOPTools_SSInterference& aFF=aFFs(i); + aFF.Indices(nF1, nF2); + // + const TopoDS_Face& aF1=TopoDS::Face(aDS.Shape(nF1)); + const TopoDS_Face& aF2=TopoDS::Face(aDS.Shape(nF2)); + // + // if there are no in/on 2D split parts the faces nF1, nF2 + // can not be SDF + const BOPTools_ListOfPaveBlock& aLPBInOn=aFF.PaveBlocks(); + aNbPBInOn=aLPBInOn.Extent(); + // + //=== + const TColStd_ListOfInteger& aLSE=aFF.SharedEdges(); + aNbSE=aLSE.Extent(); + if (!aNbPBInOn && !aNbSE) { + continue; + } + //=== + // + // if there is at least one section edge between faces nF1, nF2 + // they can not be SDF + BOPTools_SequenceOfCurves& aSC=aFF.Curves(); + aNbC=aSC.Length(); + if (aNbC) { + continue; + } + // + // the faces are suspected to be SDF. + // Try to find SDF among images of nF1, nF2 + aMFence.Clear(); + const TopTools_ListOfShape& aLF1=mySplitFaces.Image(aF1); + const TopTools_ListOfShape& aLF2=mySplitFaces.Image(aF2); + // + aItF1.Initialize(aLF1); + for (; aItF1.More(); aItF1.Next()) { + const TopoDS_Face& aF1x=TopoDS::Face(aItF1.Value()); + // + aItF2.Initialize(aLF2); + for (; aItF2.More(); aItF2.Next()) { + const TopoDS_Face& aF2y=TopoDS::Face(aItF2.Value()); + bIsSDF=NMTTools_Tools::AreFacesSameDomain(aF1x, aF2y, aCtx); + if (bIsSDF) { + if (aMFence.Contains(aF1x) || + aMFence.Contains(aF2y)) { + continue; + } + aMFence.Add(aF1x); + aMFence.Add(aF2y); + // + NMTTools_CoupleOfShape aCS; + // + aCS.SetShape1(aF1x); + aCS.SetShape2(aF2y); + aLCS.Append(aCS); + // + if (aF1x==aF1) { + if (!mySplitFaces.HasImage(aF1)) { + mySplitFaces.Bind(aF1, aF1); + } + } + if (aF2y==aF2) { + if (!mySplitFaces.HasImage(aF2)) { + mySplitFaces.Bind(aF2, aF2); + } + } + // + + } + } + } + }//for (i=1; i<=aNbFF; ++i) + // + aNbC=aLCS.Extent(); + if (!aNbC) { + return; + } + // + // 2. Find Chains + NMTTools_IndexedDataMapOfShapeIndexedMapOfShape aMC; + // + NMTTools_Tools::FindChains(aLCS, aMC); + // + // 3. Fill the map of SDF mySameDomainFaces + aNbC=aMC.Extent(); + for (i=1; i<=aNbC; ++i) { + const TopoDS_Shape& aF=aMC.FindKey(i); + const TopTools_IndexedMapOfShape& aMSDF=aMC(i); + // + aNbFF=aMSDF.Extent(); + for (j=1; j<=aNbFF; ++j) { + const TopoDS_Shape& aFSD=aMSDF(j); + mySameDomainShapes.Add(aFSD, aF); + } + } + // +} +//======================================================================= +// function: FillImagesFaces1 +// purpose: +//======================================================================= + void GEOMAlgo_Builder::FillImagesFaces1() +{ + Standard_Integer i, aNb, iSense; + TopoDS_Face aF, aFSp, aFSD; + TopTools_ListOfShape aLFx; + TopTools_ListIteratorOfListOfShape aIt; + // + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + // + aNb=aDS.NumberOfShapesOfTheObject(); + for (i=1; i<=aNb; ++i) { + const TopoDS_Shape& aS=aDS.Shape(i); + if (aS.ShapeType()!=TopAbs_FACE) { + continue; + } + // + if (!mySplitFaces.HasImage(aS)) { + continue; + } + // + aF=TopoDS::Face(aS); + // + aLFx.Clear(); + const TopTools_ListOfShape& aLF=mySplitFaces.Image(aF); + aIt.Initialize(aLF); + for (; aIt.More(); aIt.Next()) { + aFSp=TopoDS::Face(aIt.Value()); + if (!mySameDomainShapes.Contains(aFSp)) { + aLFx.Append(aFSp); + } + else { + const TopoDS_Shape& aSx=mySameDomainShapes.FindFromKey(aFSp); + aFSD=TopoDS::Face(aSx); + iSense=GEOMAlgo_Tools3D::Sense(aFSp, aFSD); + if (iSense<0) { + aFSD.Reverse(); + } + aLFx.Append(aFSD); + } + } + if (!myImages.HasImage(aF)) {//XX + myImages.Bind(aF, aLFx); + } + } +} +//======================================================================= +// function: FillInternalVertices +// purpose: +//======================================================================= + void GEOMAlgo_Builder::FillInternalVertices() +{ + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + BOPTools_InterferencePool* pIP=(BOPTools_InterferencePool*)&myDSFiller->InterfPool(); + IntTools_Context& aCtx= pPF->ChangeContext(); + // + BOPTools_CArray1OfSSInterference& aFFs=pIP->SSInterferences(); + BOPTools_CArray1OfVSInterference& aVFs=pIP->VSInterferences(); + BOPTools_CArray1OfESInterference& aEFs=pIP->ESInterferences(); + const NMTTools_IndexedDataMapOfIndexedMapOfInteger& aMAV=pPF->AloneVertices(); + // + Standard_Boolean bHasImage; + Standard_Integer i, j, nF, aNbS, nV, nVSD, n1, n2, iFlag; + Standard_Integer aNbVFs, aNbAVF, aNbEFs, aNbVC, aNbE, aNbV; + Standard_Real aU1, aU2, aTol; + NMTTools_IndexedDataMapOfIndexedMapOfInteger aMFMV; + TopTools_MapOfShape aMFence; + TopTools_ListIteratorOfListOfShape aIt, aItV; + BRep_Builder aBB; + // + // 1. Collect face-vertex candidates [aMFMV] + // + // 1.1. VFs + aNbVFs=aVFs.Extent(); + for (i=1; i<=aNbVFs; ++i) { + const BOPTools_VSInterference& aVS=aVFs(i); + aVS.Indices(n1, n2); + nF=n2; + nV=n1; + if (aDS.Shape(n1).ShapeType()==TopAbs_FACE) { + nF=n1; + nV=n2; + } + nVSD=pPF->FindSDVertex(nV); + if (nVSD) { + nV=nVSD; + } + // + UpdateCandidates(nF, nV, aMFMV); + } + // + // 1.2 EFs + aNbEFs=aEFs.Extent(); + for (i=1; i<=aNbEFs; ++i) { + const BOPTools_ESInterference& aEF=aEFs(i); + aEF.Indices(n1, n2); + nV=aEF.NewShape(); + if (!nV) { + continue; + } + const TopoDS_Shape& aSnew=aDS.Shape(nV); + if (aSnew.ShapeType()!=TopAbs_VERTEX) { + continue; + } + // + nF=(aDS.Shape(n1).ShapeType()==TopAbs_FACE) ? n1 : n2; + nVSD=pPF->FindSDVertex(nV); + if (nVSD) { + nV=nVSD; + } + UpdateCandidates(nF, nV, aMFMV); + } + // + aNbS=aDS.NumberOfShapesOfTheObject(); + for (nF=1; nF<=aNbS; ++nF) { + const TopoDS_Shape& aF=aDS.Shape(nF); + // + if (aF.ShapeType()!=TopAbs_FACE) { + continue; + } + if (!aMFence.Add(aF)) { + continue; + } + // + const TopoDS_Face& aFF=TopoDS::Face(aF); + aTol=BRep_Tool::Tolerance(aFF); + // + // 1.3 FFs + if (aMAV.Contains(nF)) { + const TColStd_IndexedMapOfInteger& aMAVF=aMAV.FindFromKey(nF); + aNbAVF=aMAVF.Extent(); + for (j=1; j<=aNbAVF; ++j) { + nV=aMAVF(j); + nVSD=pPF->FindSDVertex(nV); + if (nVSD) { + nV=nVSD; + } + // + UpdateCandidates(nF, nV, aMFMV); + } + } + // + // 1.4 Internal vertices of the face nF + BooleanOperations_OnceExplorer aExp(aDS); + aExp.Init(nF, TopAbs_VERTEX); + for (; aExp.More(); aExp.Next()) { + nV=aExp.Current(); + const TopoDS_Shape& aV=aDS.Shape(nV); + if (aV.Orientation()==TopAbs_INTERNAL) { + nVSD=pPF->FindSDVertex(nV); + if (nVSD) { + nV=nVSD; + } + // + UpdateCandidates(nF, nV, aMFMV); + } + } + // + // 2. Process face nF + if (!aMFMV.Contains(nF)) { + continue; + } + // + const TColStd_IndexedMapOfInteger& aMVC=aMFMV.FindFromKey(nF); + aNbVC=aMVC.Extent(); + if (!aNbVC) { + continue; + } + // + // 2.1 Refine candidates + TopTools_IndexedDataMapOfShapeListOfShape aMVE; + TopTools_ListOfShape aLV; + // + bHasImage=myImages.HasImage(aF); + if (bHasImage) { + const TopTools_ListOfShape& aLFx=myImages.Image(aF); + aIt.Initialize(aLFx); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aFx=aIt.Value(); + TopExp::MapShapesAndAncestors(aFx, TopAbs_VERTEX, TopAbs_EDGE, aMVE); + } + } + else { + Standard_Boolean bFaceToProcess; + // + TopExp::MapShapesAndAncestors(aF, TopAbs_VERTEX, TopAbs_EDGE, aMVE); + bFaceToProcess=Standard_False; + for (j=1; j<=aNbVC; ++j) { + nV=aMVC(j); + const TopoDS_Shape& aV=aDS.Shape(nV); + if (!aMVE.Contains(aV)) { + bFaceToProcess=!bFaceToProcess; + break; + } + } + if (!bFaceToProcess) { + continue; + } + }// else + // + for (j=1; j<=aNbVC; ++j) { + nV=aMVC(j); + const TopoDS_Shape& aV=aDS.Shape(nV); + if (aMVE.Contains(aV)) { + const TopTools_ListOfShape& aLE=aMVE.FindFromKey(aV); + aNbE=aLE.Extent(); + if (aNbE) { + continue; + } + } + aLV.Append(aV); + } + // + aNbV=aLV.Extent(); + if (aNbV) { + // 3. Try to put vertices into the face(s) + aItV.Initialize(aLV); + for (; aItV.More(); aItV.Next()) { + TopoDS_Vertex aV=TopoDS::Vertex(aItV.Value()); + aV.Orientation(TopAbs_INTERNAL); + // + bHasImage=myImages.HasImage(aF); + if (bHasImage) { + const TopTools_ListOfShape& aLFx=myImages.Image(aF); + aIt.Initialize(aLFx); + for (; aIt.More(); aIt.Next()) { + TopoDS_Face aFx=TopoDS::Face(aIt.Value()); + // update classifier + IntTools_FClass2d& aClsf=aCtx.FClass2d(aFx); + aClsf.Init(aFx, aTol); + // + iFlag=aCtx.ComputeVS (aV, aFx, aU1, aU2); + if (!iFlag) { + aBB.Add(aFx, aV); + break; + } + } + } + else { + const TopoDS_Face& aFx=TopoDS::Face(aF); + // update classifier + IntTools_FClass2d& aClsf=aCtx.FClass2d(aFx); + aClsf.Init(aFx, aTol); + // + iFlag=aCtx.ComputeVS (aV, aFx, aU1, aU2); + if (!iFlag) { + TopoDS_Face aFz; + // + GEOMAlgo_Tools3D::CopyFace(aFx, aFz); + aBB.Add(aFz, aV); + myImages.Bind(aF, aFz); + } + } + }// for (; aItV.More(); aItV.Next()) { + }// if (aNbV) { + }// for (nF=1; nF<=aNb; ++nF) { +} +//======================================================================= +// function: UpdateCandidates +// purpose: +//======================================================================= +void UpdateCandidates(const Standard_Integer theNF, + const Standard_Integer theNV, + NMTTools_IndexedDataMapOfIndexedMapOfInteger& theMFMV) +{ + if (theMFMV.Contains(theNF)) { + TColStd_IndexedMapOfInteger& aMV=theMFMV.ChangeFromKey(theNF); + aMV.Add(theNV); + } + else { + TColStd_IndexedMapOfInteger aMV; + aMV.Add(theNV); + theMFMV.Add(theNF, aMV); + } +} diff --git a/src/GEOMAlgo/GEOMAlgo_Builder_3.cxx b/src/GEOMAlgo/GEOMAlgo_Builder_3.cxx new file mode 100755 index 000000000..220cc453f --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Builder_3.cxx @@ -0,0 +1,796 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: GEOMAlgo_Builder_3.cxx +// Created: +// Author: Peter KURNEV + +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include + + + +static + void OwnInternalShapes(const TopoDS_Shape& , + TopTools_IndexedMapOfShape& ); + +//======================================================================= +//function : FillImagesSolids +//purpose : +//======================================================================= + void GEOMAlgo_Builder::FillImagesSolids() +{ + myErrorStatus=0; + // + FillIn3DParts(); + BuildSplitSolids(); + FillInternalShapes(); +} +//======================================================================= +//function : BuildDraftSolid +//purpose : +//======================================================================= + void GEOMAlgo_Builder::BuildDraftSolid(const TopoDS_Shape& theSolid, + TopoDS_Shape& theDraftSolid, + TopTools_ListOfShape& theLIF) +{ + myErrorStatus=0; + // + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + IntTools_Context& aCtx= pPF->ChangeContext(); + // + Standard_Boolean bToReverse; + Standard_Integer iFlag; + TopAbs_Orientation aOrF, aOrSh, aOrSd; + TopoDS_Iterator aIt1, aIt2; + TopTools_ListIteratorOfListOfShape aItS; + BRep_Builder aBB; + TopoDS_Shell aShD; + TopoDS_Shape aFSDx, aFx; + // + aOrSd=theSolid.Orientation(); + theDraftSolid.Orientation(aOrSd); + // + aIt1.Initialize(theSolid); + for (; aIt1.More(); aIt1.Next()) { + const TopoDS_Shape& aSh=aIt1.Value(); + if(aSh.ShapeType()!=TopAbs_SHELL) { + continue; // mb internal edges,vertices + } + // + aOrSh=aSh.Orientation(); + aBB.MakeShell(aShD); + aShD.Orientation(aOrSh); + iFlag=0; + // + aIt2.Initialize(aSh); + for (; aIt2.More(); aIt2.Next()) { + const TopoDS_Shape& aF=aIt2.Value(); + aOrF=aF.Orientation(); + // + if (myImages.HasImage(aF)) { + const TopTools_ListOfShape& aLSp=myImages.Image(aF); + aItS.Initialize(aLSp); + for (; aItS.More(); aItS.Next()) { + aFx=aItS.Value(); + // + if (mySameDomainShapes.Contains(aFx)) { + aFSDx=mySameDomainShapes.FindFromKey(aFx); + // + if (aOrF==TopAbs_INTERNAL) { + aFSDx.Orientation(aOrF); + theLIF.Append(aFSDx); + } + else { + bToReverse=GEOMAlgo_Tools3D::IsSplitToReverse(aFSDx, aF, aCtx); + if (bToReverse) { + aFSDx.Reverse(); + } + // + iFlag=1; + aBB.Add(aShD, aFSDx); + } + }// if (mySameDomainShapes.Contains(aFx)) { + else { + aFx.Orientation(aOrF); + if (aOrF==TopAbs_INTERNAL) { + theLIF.Append(aFx); + } + else{ + iFlag=1; + aBB.Add(aShD, aFx); + } + } + } + } //if (myImages.HasImage(aF)) { + // + else { + if (aOrF==TopAbs_INTERNAL) { + theLIF.Append(aF); + } + else{ + iFlag=1; + aBB.Add(aShD, aF); + } + } + } //for (; aIt2.More(); aIt2.Next()) { + // + if (iFlag) { + aBB.Add(theDraftSolid, aShD); + } + } //for (; aIt1.More(); aIt1.Next()) { +} +//======================================================================= +//function : FillIn3DParts +//purpose : +//======================================================================= + void GEOMAlgo_Builder::FillIn3DParts() +{ + myErrorStatus=0; + // + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + IntTools_Context& aCtx= pPF->ChangeContext(); + // + Standard_Boolean bIsIN, bHasImage; + Standard_Integer aNbS, aNbSolids, i, j, aNbFaces, aNbFP, aNbFPx, aNbFIN, aNbLIF;// k, + TopAbs_ShapeEnum aType; + TopAbs_State aState; + TopTools_IndexedMapOfShape aMSolids, aMS, aMFaces, aMFIN; + TopTools_MapOfShape aMFDone; + TopTools_IndexedDataMapOfShapeListOfShape aMEF; + TopTools_ListIteratorOfListOfShape aItS; + TopoDS_Iterator aIt, aItF; + BRep_Builder aBB; + TopoDS_Solid aSolidSp; + TopoDS_Face aFP; + // + myDraftSolids.Clear(); + // + aNbS=aDS.NumberOfShapesOfTheObject(); + for (i=1; i<=aNbS; ++i) { + const TopoDS_Shape& aS=aDS.Shape(i); + // + aType=aS.ShapeType(); + if (aType==TopAbs_SOLID) { + // all solids from DS + aMSolids.Add(aS); + } + else if (aType==TopAbs_FACE) { + // all faces (originals from DS or theirs images) + if (myImages.HasImage(aS)) { + const TopTools_ListOfShape& aLS=myImages.Image(aS); + aItS.Initialize(aLS); + for (; aItS.More(); aItS.Next()) { + const TopoDS_Shape& aFx=aItS.Value(); + // + if (mySameDomainShapes.Contains(aFx)) { + const TopoDS_Shape& aFSDx=mySameDomainShapes.FindFromKey(aFx); + aMFaces.Add(aFSDx); + } + else { + aMFaces.Add(aFx); + } + } + } + else { + if (mySameDomainShapes.Contains(aS)) { + const TopoDS_Shape& aFSDx=mySameDomainShapes.FindFromKey(aS); + aMFaces.Add(aFSDx); + } + else { + aMFaces.Add(aS); + } + } + } + } + // + aNbFaces=aMFaces.Extent(); + aNbSolids=aMSolids.Extent(); + // + for (i=1; i<=aNbSolids; ++i) { + const TopoDS_Solid& aSolid=TopoDS::Solid(aMSolids(i)); + aMFDone.Clear(); + aMFIN.Clear(); + aMEF.Clear(); + // + aBB.MakeSolid(aSolidSp); + // + TopTools_ListOfShape aLIF; + // + BuildDraftSolid(aSolid, aSolidSp, aLIF); + aNbLIF=aLIF.Extent(); + // + // 1 all faces/edges from aSolid [ aMS ] + bHasImage=Standard_False; + aMS.Clear(); + aIt.Initialize(aSolid); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aShell=aIt.Value(); + // + if (myImages.HasImage(aShell)) { + bHasImage=Standard_True; + // + const TopTools_ListOfShape& aLS=myImages.Image(aShell); + aItS.Initialize(aLS); + for (; aItS.More(); aItS.Next()) { + const TopoDS_Shape& aSx=aItS.Value(); + aMS.Add(aSx); + TopExp::MapShapes(aSx, TopAbs_FACE, aMS); + TopExp::MapShapes(aSx, TopAbs_EDGE, aMS); + TopExp::MapShapesAndAncestors(aSx, TopAbs_EDGE, TopAbs_FACE, aMEF); + } + } + else { + //aMS.Add(aShell); + TopExp::MapShapes(aShell, TopAbs_FACE, aMS); + TopExp::MapShapesAndAncestors(aShell, TopAbs_EDGE, TopAbs_FACE, aMEF); + } + } + // + // 2 all faces that are not from aSolid [ aLFP1 ] + Standard_Integer aNbEFP; + TopTools_IndexedDataMapOfShapeListOfShape aMEFP; + TopTools_ListIteratorOfListOfShape aItFP, aItEx; + TopTools_MapOfShape aMFence; + TopTools_ListOfShape aLFP1, aLFP2, aLFP, aLCBF, aLFIN, aLEx;//*pLFP, + // + // for all non-solid faces build EF map [ aMEFP ] + for (j=1; j<=aNbFaces; ++j) { + const TopoDS_Shape& aFace=aMFaces(j); + if (!aMS.Contains(aFace)) { + TopExp::MapShapesAndAncestors(aFace, TopAbs_EDGE, TopAbs_FACE, aMEFP); + } + } + // + // among all faces from aMEFP select these that have same edges + // with the solid (i.e aMEF). These faces will be treated first + // to prevent the usage of 3D classifier. + // The full list of faces to process is aLFP1. + aNbEFP=aMEFP.Extent(); + for (j=1; j<=aNbEFP; ++j) { + const TopoDS_Shape& aE=aMEFP.FindKey(j); + // + if (aMEF.Contains(aE)) { // !! + const TopTools_ListOfShape& aLF=aMEFP(j); + aItFP.Initialize(aLF); + for (; aItFP.More(); aItFP.Next()) { + const TopoDS_Shape& aF=aItFP.Value(); + if (aMFence.Add(aF)) { + aLFP1.Append(aF); + } + } + } + else { + aLEx.Append(aE); + } + } + // + aItEx.Initialize(aLEx); + for (; aItEx.More(); aItEx.Next()) { + const TopoDS_Shape& aE=aItEx.Value(); + const TopTools_ListOfShape& aLF=aMEFP.FindFromKey(aE); + aItFP.Initialize(aLF); + for (; aItFP.More(); aItFP.Next()) { + const TopoDS_Shape& aF=aItFP.Value(); + if (aMFence.Add(aF)) { + aLFP2.Append(aF); + } + } + } + aLFP1.Append(aLFP2); + //========== + // + // 3 Process faces aLFP1 + aNbFP=aLFP1.Extent(); + aItFP.Initialize(aLFP1); + for (; aItFP.More(); aItFP.Next()) { + const TopoDS_Shape& aSP=aItFP.Value(); + if (!aMFDone.Add(aSP)) { + continue; + } + + // + // first face to process + aFP=TopoDS::Face(aSP); + bIsIN= GEOMAlgo_Tools3D::IsInternalFace(aFP, aSolidSp, aMEF, 1.e-14, aCtx); + aState=(bIsIN) ? TopAbs_IN : TopAbs_OUT; + // + // collect faces to process [ aFP is the first ] + aLFP.Clear(); + aLFP.Append(aFP); + aItS.Initialize(aLFP1); + for (; aItS.More(); aItS.Next()) { + const TopoDS_Shape& aSk=aItS.Value(); + if (!aMFDone.Contains(aSk)) { + aLFP.Append(aSk); + } + } + // + // Connexity Block that spreads from aFP the Bound + // or till the end of the block itself + aLCBF.Clear(); + GEOMAlgo_Tools3D::MakeConnexityBlock(aLFP, aMS, aLCBF); + // + // fill states for the Connexity Block + aItS.Initialize(aLCBF); + for (; aItS.More(); aItS.Next()) { + const TopoDS_Shape& aSx=aItS.Value(); + aMFDone.Add(aSx); + if (aState==TopAbs_IN) { + aMFIN.Add(aSx); + } + } + // + aNbFPx=aMFDone.Extent(); + if (aNbFPx==aNbFP) { + break; + } + }//for (; aItFP.More(); aItFP.Next()) + // + // faces Inside aSolid + aLFIN.Clear(); + aNbFIN=aMFIN.Extent(); + if (aNbFIN || aNbLIF) { + for (j=1; j<=aNbFIN; ++j) { + const TopoDS_Shape& aFIN=aMFIN(j); + aLFIN.Append(aFIN); + } + // + aItS.Initialize(aLIF); + for (; aItS.More(); aItS.Next()) { + const TopoDS_Shape& aFIN=aItS.Value(); + aLFIN.Append(aFIN); + } + // + myInParts.Add(aSolid, aLFIN); + } + if (aNbFIN || bHasImage) { + myDraftSolids.Add(aSolid, aSolidSp); + } + }//for (i=1; i<=aNbSolids; ++i) { // next solid +} +//======================================================================= +//function : BuildSplitSolids +//purpose : +//======================================================================= + void GEOMAlgo_Builder::BuildSplitSolids() +{ + myErrorStatus=0; + // + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + IntTools_Context& aCtx= pPF->ChangeContext(); + // + Standard_Integer i, aNbS, iErr; + TopExp_Explorer aExp; + TopTools_ListOfShape aSFS, aLSEmpty; + TopTools_MapOfShape aMFence; + TopTools_ListIteratorOfListOfShape aIt; + GEOMAlgo_BuilderSolid aSB; + GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet aItSS; + GEOMAlgo_DataMapOfShapeShapeSet aMSS; + GEOMAlgo_ShapeSet aSSi; + // + //modified by NIZNHY-PKV Wed Dec 6 17:08:03 2006f + // + // 0. Find same domain solids for non-interferred solids + aNbS=aDS.NumberOfShapesOfTheObject(); + for (i=1; i<=aNbS; ++i) { + const TopoDS_Shape& aS=aDS.Shape(i); + if (aS.ShapeType()!=TopAbs_SOLID) { + continue; + } + if (!aMFence.Add(aS)) { + continue; + } + if(myDraftSolids.Contains(aS)) { + continue; + } + // + aSSi.Clear(); + aSSi.Add(aS, TopAbs_FACE); + // + aMSS.Bind(aS, aSSi); + } //for (i=1; i<=aNbS; ++i) + // + //modified by NIZNHY-PKV Wed Dec 6 17:08:09 2006t + // + // 1. Build solids for interferred source solids + // + aSB.SetContext(aCtx); + aNbS=myDraftSolids.Extent(); + for (i=1; i<=aNbS; ++i) { + const TopoDS_Shape& aS =myDraftSolids.FindKey(i); + const TopoDS_Shape& aSD=myDraftSolids.FindFromIndex(i); + const TopTools_ListOfShape& aLFIN= + (myInParts.Contains(aS)) ? myInParts.FindFromKey(aS) : aLSEmpty; + // + // 1.1 Fill Shell Faces Set + aSFS.Clear(); + + aExp.Init(aSD, TopAbs_FACE); + for (; aExp.More(); aExp.Next()) { + const TopoDS_Shape& aF=aExp.Current(); + aSFS.Append(aF); + } + // + aIt.Initialize(aLFIN); + for (; aIt.More(); aIt.Next()) { + TopoDS_Shape aF=aIt.Value(); + // + aF.Orientation(TopAbs_FORWARD); + aSFS.Append(aF); + aF.Orientation(TopAbs_REVERSED); + aSFS.Append(aF); + } + // + Standard_Integer aNbSFS; + aNbSFS=aSFS.Extent(); + // + // 1.2 + // Check whether aSFS contains a subsets of faces + // of solids that have been already built. + // If yes, shrink aSFS by these subsets. + aSSi.Clear(); + aSSi.Add(aSFS); + // + aItSS.Initialize(aMSS); + for (; aItSS.More(); aItSS.Next()) { + const TopoDS_Shape& aSR=aItSS.Key(); + const GEOMAlgo_ShapeSet& aSSR=aItSS.Value(); + if (aSSi.Contains(aSSR)) { + // the aSR is SD solid for aS + aSSi.Subtract(aSSR); + // update images + if(myImages.HasImage(aS)) { + myImages.Add(aS, aSR); + } + else { + myImages.Bind(aS, aSR); + } + // + // update SD Shapes + mySameDomainShapes.Add(aSR, aSR); + } + } + const TopTools_ListOfShape& aSFS1=aSSi.GetSet(); + aNbSFS=aSFS1.Extent(); + // + // 1.3 Build new solids + aSB.SetShapes(aSFS1); + aSB.Perform(); + iErr=aSB.ErrorStatus(); + if (iErr) { + myErrorStatus=30; // SolidBuilder failed + return; + } + // + const TopTools_ListOfShape& aLSR=aSB.Areas(); + // + // 1.4 Collect resulting solids and theirs set of faces + aIt.Initialize(aLSR); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aSR=aIt.Value(); + // + aSSi.Clear(); + aExp.Init(aSR, TopAbs_FACE); + for (; aExp.More(); aExp.Next()) { + const TopoDS_Shape& aF=aExp.Current(); + aSSi.Add(aF); + } + aMSS.Bind(aSR, aSSi); + } + // + // Update images + if (myImages.HasImage(aS)) { + myImages.Add(aS, aLSR); + } + else { + myImages.Bind(aS, aLSR); + } + } // for (i=1; i<=aNbS; ++i) { + //modified by NIZNHY-PKV Wed Dec 6 17:07:47 2006f + /* + // + // 2. Find same domain solids for non-interferred solids + aNbS=aDS.NumberOfShapesOfTheObject(); + for (i=1; i<=aNbS; ++i) { + const TopoDS_Shape& aS=aDS.Shape(i); + if (aS.ShapeType()!=TopAbs_SOLID) { + continue; + } + if (!aMFence.Add(aS)) { + continue; + } + if(myImages.HasImage(aS)) { + continue; + } + // + aSSi.Clear(); + aSSi.Add(aS, TopAbs_FACE); + // + aItSS.Initialize(aMSS); + for (; aItSS.More(); aItSS.Next()) { + const TopoDS_Shape& aSR=aItSS.Key(); + const GEOMAlgo_ShapeSet& aSSR=aItSS.Value(); + if (aSSi.Contains(aSSR)) { + myImages.Bind(aS, aSR); + break; + } + } + } //for (i=1; i<=aNbS; ++i) + */ + //modified by NIZNHY-PKV Wed Dec 6 17:07:55 2006t +} +//======================================================================= +//function :FillInternalShapes +//purpose : +//======================================================================= + void GEOMAlgo_Builder::FillInternalShapes() +{ + myErrorStatus=0; + // + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + IntTools_Context& aCtx= pPF->ChangeContext(); + // + //Standard_Boolean bHasImage; + Standard_Integer i, j, jT, aNbS, aNbSI, aNbSx, aNbSd; + TopAbs_ShapeEnum aType, aT[]={ TopAbs_VERTEX, TopAbs_EDGE }; + TopAbs_State aState; + TopTools_ListIteratorOfListOfShape aIt, aIt1; + TopTools_IndexedDataMapOfShapeListOfShape aMSx; + TopTools_IndexedMapOfShape aMx; + TopTools_MapOfShape aMSI, aMFence, aMSOr; + TopTools_MapIteratorOfMapOfShape aItM; + TopTools_ListOfShape aLSI, aLSd; + TopoDS_Iterator aItS; + BRep_Builder aBB; + // + // 1. Shapes to process + // + // 1.1 Shapes from pure arguments aMSI + // 1.1.1 vertex, edge + for (i=0; i<2; ++i) { + jT=(Standard_Integer)aT[i]; + const TopTools_ListOfShape &aLS=myShapes1[jT]; + aIt.Initialize(aLS); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aS=aIt.Value(); + if (aMFence.Add(aS)) { + aLSI.Append(aS); + } + } + } + // 1.1.2 wire + { + jT=(Standard_Integer)TopAbs_WIRE; + const TopTools_ListOfShape &aLW=myShapes1[jT]; + aIt.Initialize(aLW); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aW=aIt.Value(); + aItS.Initialize(aW); + for (; aItS.More(); aItS.Next()) { + const TopoDS_Shape& aE=aItS.Value(); + if (aMFence.Add(aE)) { + aLSI.Append(aE); + } + } + } + } + // 1.1.3 theirs images/sources + aIt1.Initialize(aLSI); + for (; aIt1.More(); aIt1.Next()) { + const TopoDS_Shape& aS=aIt1.Value(); + if (myImages.HasImage(aS)) { + const TopTools_ListOfShape &aLSp=myImages.Image(aS); + aIt.Initialize(aLSp); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aSI=aIt.Value(); + aMSI.Add(aSI); + } + } + else { + aMSI.Add(aS); + } + } + aLSI.Clear(); + aNbSI=aMSI.Extent(); + // + // 2. Internal vertices, edges from source solids + aMFence.Clear(); + aLSd.Clear(); + // + aNbS=aDS.NumberOfShapesOfTheObject(); + for (i=1; i<=aNbS; ++i) { + const TopoDS_Shape& aS=aDS.Shape(i); + aType=aS.ShapeType(); + if (aType==TopAbs_SOLID) { + // + aMx.Clear(); + OwnInternalShapes(aS, aMx); + // + aNbSx=aMx.Extent(); + for (j=1; j<=aNbSx; ++j) { + const TopoDS_Shape& aSI=aMx(j); + if (myImages.HasImage(aSI)) { + const TopTools_ListOfShape &aLSp=myImages.Image(aSI); + aIt.Initialize(aLSp); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aSp=aIt.Value(); + aMSI.Add(aSp); + } + } + else { + aMSI.Add(aSI); + } + } + // + // build aux map from splits of solids + if (myImages.HasImage(aS)) { + const TopTools_ListOfShape &aLSp=myImages.Image(aS); + aIt.Initialize(aLSp); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aSp=aIt.Value(); + if (aMFence.Add(aSp)) { + TopExp::MapShapesAndAncestors(aSp, TopAbs_VERTEX, TopAbs_EDGE, aMSx); + TopExp::MapShapesAndAncestors(aSp, TopAbs_VERTEX, TopAbs_FACE, aMSx); + TopExp::MapShapesAndAncestors(aSp, TopAbs_EDGE , TopAbs_FACE, aMSx); + aLSd.Append(aSp); + } + } + } + else { + if (aMFence.Add(aS)) { + TopExp::MapShapesAndAncestors(aS, TopAbs_VERTEX, TopAbs_EDGE, aMSx); + TopExp::MapShapesAndAncestors(aS, TopAbs_VERTEX, TopAbs_FACE, aMSx); + TopExp::MapShapesAndAncestors(aS, TopAbs_EDGE , TopAbs_FACE, aMSx); + aLSd.Append(aS); + aMSOr.Add(aS); + } + } + }//if (aType==TopAbs_SOLID) + } + // + aNbSd=aLSd.Extent(); + // + // 3. Some shapes of aMSI can be already tied with faces of + // split solids + aItM.Initialize(aMSI); + for (; aItM.More(); aItM.Next()) { + const TopoDS_Shape& aSI=aItM.Key(); + if (aMSx.Contains(aSI)) { + const TopTools_ListOfShape &aLSx=aMSx.FindFromKey(aSI); + aNbSx=aLSx.Extent(); + if (aNbSx) { + aMSI.Remove(aSI); + } + } + } + // + // 4. Just check it + aNbSI=aMSI.Extent(); + if (!aNbSI) { + return; + } + // + // 5 Settle internal vertices and edges into solids + aMx.Clear(); + aIt.Initialize(aLSd); + for (; aIt.More(); aIt.Next()) { + TopoDS_Solid aSd=TopoDS::Solid(aIt.Value()); + // + aItM.Initialize(aMSI); + for (; aItM.More(); aItM.Next()) { + TopoDS_Shape aSI=aItM.Key(); + aSI.Orientation(TopAbs_INTERNAL); + // + aState=GEOMAlgo_Tools3D::ComputeStateByOnePoint(aSI, aSd, 1.e-11, aCtx); + if (aState==TopAbs_IN) { + // + if(aMSOr.Contains(aSd)) { + // + TopoDS_Solid aSdx; + // + aBB.MakeSolid(aSdx); + aItS.Initialize(aSd); + for (; aItS.More(); aItS.Next()) { + const TopoDS_Shape& aSh=aItS.Value(); + aBB.Add(aSdx, aSh); + } + // + aBB.Add(aSdx, aSI); + // + myImages.Bind(aSd, aSdx); + aMSOr.Remove(aSd); + aSd=aSdx; + } + else { + aBB.Add(aSd, aSI); + } + // + aMSI.Remove(aSI); + } //if (aState==TopAbs_IN) { + }// for (; aItM.More(); aItM.Next()) { + }//for (; aIt1.More(); aIt1.Next()) { +} +//======================================================================= +//function : OwnInternalShapes +//purpose : +//======================================================================= + void OwnInternalShapes(const TopoDS_Shape& theS, + TopTools_IndexedMapOfShape& theMx) +{ + TopoDS_Iterator aIt; + // + aIt.Initialize(theS); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aSx=aIt.Value(); + if (aSx.ShapeType()!=TopAbs_SHELL) { + theMx.Add(aSx); + } + } +} +// +// ErrorStatus +// 30 - SolidBuilder failed + diff --git a/src/GEOMAlgo/GEOMAlgo_Builder_4.cxx b/src/GEOMAlgo/GEOMAlgo_Builder_4.cxx new file mode 100755 index 000000000..080093803 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Builder_4.cxx @@ -0,0 +1,316 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: GEOMAlgo_Builder_4.cxx +// Created: +// Author: Peter KURNEV + +#include + +#include + +#include +#include +#include +#include + +#include + +#include + +#include +#include + +#include + +static + void MapShapes(const TopoDS_Shape& aS, + TopTools_MapOfShape& aM); + +//======================================================================= +//function : Generated +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_Builder::Generated(const TopoDS_Shape& theS) +{ + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + IntTools_Context& aCtx=pPF->ChangeContext(); + // + Standard_Boolean bHasImage, bToReverse; + TopAbs_ShapeEnum aType; + TopTools_ListIteratorOfListOfShape aIt; + // + myHistShapes.Clear(); + // + if (theS.IsNull()) { + return myHistShapes; + } + // + bHasImage=myImages.HasImage(theS); + if (!bHasImage) { + return myHistShapes; + } + // + aType=theS.ShapeType(); + // + if (aType==TopAbs_EDGE || aType==TopAbs_FACE || + aType==TopAbs_VERTEX || aType==TopAbs_SOLID) { + const TopTools_ListOfShape& aLSp=myImages.Image(theS); + aIt.Initialize(aLSp); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aSp=aIt.Value(); + if (mySameDomainShapes.Contains(aSp)) { + if (myMapShape.Contains(aSp)) { + TopoDS_Shape aSpR=mySameDomainShapes.FindFromKey(aSp); + // + if (aType==TopAbs_VERTEX || aType==TopAbs_SOLID) { + aSpR.Orientation(theS.Orientation()); + } + else { + bToReverse=GEOMAlgo_Tools3D::IsSplitToReverse(aSpR, theS, aCtx); + if (bToReverse) { + aSpR.Reverse(); + } + } + // + myHistShapes.Append(aSpR); + } + } + } + } + // + return myHistShapes; +} +//======================================================================= +//function : Modified +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_Builder::Modified(const TopoDS_Shape& theS) +{ + const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS(); + NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller()); + IntTools_Context& aCtx=pPF->ChangeContext(); + // + Standard_Boolean bHasImage, bToReverse; + TopAbs_ShapeEnum aType; + TopTools_ListIteratorOfListOfShape aIt; + // + myHistShapes.Clear(); + // + if (theS.IsNull()) { + return myHistShapes; + } + // + bHasImage=myImages.HasImage(theS); + if (!bHasImage) { + return myHistShapes; + } + // + aType=theS.ShapeType(); + // + if (aType==TopAbs_EDGE || aType==TopAbs_FACE || + aType==TopAbs_VERTEX || aType==TopAbs_SOLID) { + const TopTools_ListOfShape& aLSp=myImages.Image(theS); + aIt.Initialize(aLSp); + for (; aIt.More(); aIt.Next()) { + TopoDS_Shape aSp=aIt.Value(); + if (!mySameDomainShapes.Contains(aSp)) { + if (myMapShape.Contains(aSp)) { + // + if (aType==TopAbs_VERTEX || aType==TopAbs_SOLID) { + aSp.Orientation(theS.Orientation()); + } + else { + bToReverse=GEOMAlgo_Tools3D::IsSplitToReverse(aSp, theS, aCtx); + if (bToReverse) { + aSp.Reverse(); + } + } + // + myHistShapes.Append(aSp); + } + } + } + } + // + return myHistShapes; +} +//======================================================================= +//function : IsDeleted +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_Builder::IsDeleted(const TopoDS_Shape& theS) +{ + Standard_Boolean bRet, bHasImage, bContains; + TopAbs_ShapeEnum aType; + TopTools_ListIteratorOfListOfShape aIt; + // + bRet=Standard_False; + // + if (theS.IsNull()) { + return !bRet; //true + } + // + bContains=myMapShape.Contains(theS); + if (bContains) { + return bRet; //false + } + // + bHasImage=myImages.HasImage(theS); + if (!bHasImage) { + return !bRet; //true + } + // + aType=theS.ShapeType(); + if (aType==TopAbs_EDGE || aType==TopAbs_FACE || + aType==TopAbs_VERTEX || aType==TopAbs_SOLID) { + const TopTools_ListOfShape& aLSp=myImages.Image(theS); + aIt.Initialize(aLSp); + for (; aIt.More(); aIt.Next()) { + TopoDS_Shape aSp=aIt.Value(); + // + if (!mySameDomainShapes.Contains(aSp)) { + if (myMapShape.Contains(aSp)) { + return bRet; //false + } + } + else { + TopoDS_Shape aSpR=mySameDomainShapes.FindFromKey(aSp); + if (myMapShape.Contains(aSpR)) { + return bRet; //false + } + } + } + } + return !bRet; // true +} +//======================================================================= +//function : PrepareHistory +//purpose : +//======================================================================= + void GEOMAlgo_Builder::PrepareHistory() +{ + if(myShape.IsNull()) { + return; + } + // + Standard_Boolean bHasImage, bContainsSD; + TopAbs_ShapeEnum aType; + TopTools_MapOfShape aMS; + TopTools_ListIteratorOfListOfShape aIt; + TopTools_MapIteratorOfMapOfShape aItM; + // + // 1. Clearing + GEOMAlgo_BuilderShape::PrepareHistory(); + // + // 2. myMapShape - all shapes of result with theirs sub-shapes + MapShapes(myShape, myMapShape); + // + // 3. MS - all argument shapes with theirs sub-shapes + aIt.Initialize(myShapes); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aSx=aIt.Value(); + MapShapes(aSx, aMS); + } + // + // 4. Treatment + aItM.Initialize(aMS); + for (; aItM.More(); aItM.Next()) { + const TopoDS_Shape& aSx=aItM.Key(); + aType=aSx.ShapeType(); + //modified by NIZNHY-PKV Thu Dec 7 11:34:05 2006f + // + // 4.1 .myImagesResult + TopTools_ListOfShape aLSx; + // + bHasImage=myImages.HasImage(aSx); + if (!bHasImage) { + if (myMapShape.Contains(aSx)) { + aLSx.Append(aSx); + myImagesResult.Add(aSx, aLSx); + } + } + else { + const TopTools_ListOfShape& aLSp=myImages.Image(aSx); + aIt.Initialize(aLSp); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aSp=aIt.Value(); + if (myMapShape.Contains(aSp)) { + aLSx.Append(aSp); + } + } + myImagesResult.Add(aSx, aLSx); + } + // + //modified by NIZNHY-PKV Thu Dec 7 11:34:10 2006t + // + // 4.2 As it was + if (!myHasDeleted) { + myHasDeleted=IsDeleted(aSx);//xx + } + // + if (!myHasGenerated || !myHasModified) { + if (aType==TopAbs_EDGE || aType==TopAbs_FACE || + aType==TopAbs_VERTEX || aType==TopAbs_SOLID) { + //modified by NIZNHY-PKV Thu Dec 7 11:53:01 2006f + //bHasImage=myImages.HasImage(aSx); + //modified by NIZNHY-PKV Thu Dec 7 11:53:04 2006t + if (bHasImage) { + const TopTools_ListOfShape& aLSp=myImages.Image(aSx); + aIt.Initialize(aLSp); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aSp=aIt.Value(); + // + if (myMapShape.Contains(aSp)) { + bContainsSD=mySameDomainShapes.Contains(aSp); + // + if (!myHasGenerated) { + if (bContainsSD) { + myHasGenerated=Standard_True; + } + } + if (!myHasModified) { + if (!bContainsSD) { + myHasModified=Standard_True; + } + } + } // if (myMapShape.Contains(aSp)) + } + } + } + } + } + +} +//======================================================================= +//function : MapShapes +//purpose : +//======================================================================= + void MapShapes(const TopoDS_Shape& theS, + TopTools_MapOfShape& theM) +{ + theM.Add(theS); + TopoDS_Iterator anIt; + anIt.Initialize(theS); + for (; anIt.More(); anIt.Next()) { + const TopoDS_Shape& aSx=anIt.Value(); + MapShapes(aSx, theM); + } +} diff --git a/src/GEOMAlgo/GEOMAlgo_Clsf.cdl b/src/GEOMAlgo/GEOMAlgo_Clsf.cdl new file mode 100644 index 000000000..d32329d18 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Clsf.cdl @@ -0,0 +1,75 @@ +-- Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +-- +-- File: GEOMAlgo_Clsf.cdl +-- Created: Wed Nov 22 10:19:29 2006 +-- Author: Peter KURNEV +-- + + +deferred class Clsf from GEOMAlgo + inherits HAlgo from GEOMAlgo + + ---Purpose: + +uses + State from TopAbs, + Pnt from gp, + Curve from Geom, + Surface from Geom + +--raises + +is + Initialize + returns mutable Clsf from GEOMAlgo; + ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_Clsf();" + + SetPnt(me:mutable; + aP:Pnt from gp); + + Pnt(me) + returns Pnt from gp; + ---C++:return const& + + SetTolerance(me:mutable; + aT:Real from Standard); + + Tolerance(me) + returns Real from Standard; + + State(me) + returns State from TopAbs; + + CanBeON(me; + aCT:Curve from Geom) + returns Boolean from Standard + is virtual; + + CanBeON(me; + aST:Surface from Geom) + returns Boolean from Standard + is virtual; + +fields + myState :State from TopAbs is protected; + myPnt :Pnt from gp is protected; + myTolerance:Real from Standard is protected; + +end Clsf; diff --git a/src/GEOMAlgo/GEOMAlgo_Clsf.cxx b/src/GEOMAlgo/GEOMAlgo_Clsf.cxx new file mode 100644 index 000000000..91b1b2a07 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Clsf.cxx @@ -0,0 +1,102 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: GEOMAlgo_Classifier.cxx +// Created: Wed Nov 22 10:23:04 2006 +// Author: Peter KURNEV +// + + +#include + +//======================================================================= +//function : +//purpose : +//======================================================================= + GEOMAlgo_Clsf::GEOMAlgo_Clsf() +: + GEOMAlgo_HAlgo() +{ + myState=TopAbs_UNKNOWN; + myPnt.SetCoord(99.,99.,99.); + myTolerance=0.0001; +} +//======================================================================= +//function : ~ +//purpose : +//======================================================================= + GEOMAlgo_Clsf::~GEOMAlgo_Clsf() +{ +} +//======================================================================= +//function : SetTolerance +//purpose : +//======================================================================= + void GEOMAlgo_Clsf::SetTolerance(const Standard_Real aT) +{ + myTolerance=aT; +} +//======================================================================= +//function : Tolerance +//purpose : +//======================================================================= + Standard_Real GEOMAlgo_Clsf::Tolerance()const +{ + return myTolerance; +} +//======================================================================= +//function : SetPnt +//purpose : +//======================================================================= + void GEOMAlgo_Clsf::SetPnt(const gp_Pnt& aP) +{ + myPnt=aP; +} +//======================================================================= +//function : Pnt +//purpose : +//======================================================================= + const gp_Pnt& GEOMAlgo_Clsf::Pnt()const +{ + return myPnt; +} +//======================================================================= +//function : State +//purpose : +//======================================================================= + TopAbs_State GEOMAlgo_Clsf::State() const +{ + return myState; +} +//======================================================================= +//function : CanBeON +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_Clsf::CanBeON(const Handle(Geom_Curve)& ) const +{ + return Standard_True; +} +//======================================================================= +//function : CanBeON +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_Clsf::CanBeON(const Handle(Geom_Surface)& ) const +{ + return Standard_True; +} diff --git a/src/GEOMAlgo/GEOMAlgo_Clsf.hxx b/src/GEOMAlgo/GEOMAlgo_Clsf.hxx new file mode 100644 index 000000000..3b2c43abb --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Clsf.hxx @@ -0,0 +1,130 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_Clsf_HeaderFile +#define _GEOMAlgo_Clsf_HeaderFile + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Handle_GEOMAlgo_Clsf_HeaderFile +#include +#endif + +#ifndef _TopAbs_State_HeaderFile +#include +#endif +#ifndef _gp_Pnt_HeaderFile +#include +#endif +#ifndef _Standard_Real_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_HAlgo_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +#ifndef _Handle_Geom_Curve_HeaderFile +#include +#endif +#ifndef _Handle_Geom_Surface_HeaderFile +#include +#endif +class gp_Pnt; +class Geom_Curve; +class Geom_Surface; + + + +class GEOMAlgo_Clsf : public GEOMAlgo_HAlgo { + +public: + // Methods PUBLIC + // + + +Standard_EXPORT void SetPnt(const gp_Pnt& aP) ; + + +Standard_EXPORT const gp_Pnt& Pnt() const; + + +Standard_EXPORT void SetTolerance(const Standard_Real aT) ; + + +Standard_EXPORT Standard_Real Tolerance() const; + + +Standard_EXPORT TopAbs_State State() const; + + +Standard_EXPORT virtual Standard_Boolean CanBeON(const Handle(Geom_Curve)& aCT) const; + + +Standard_EXPORT virtual Standard_Boolean CanBeON(const Handle(Geom_Surface)& aST) const; +//Standard_EXPORT ~GEOMAlgo_Clsf(); + + + + + // Type management + // + Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + +protected: + + // Methods PROTECTED + // + + +Standard_EXPORT GEOMAlgo_Clsf(); +Standard_EXPORT virtual ~GEOMAlgo_Clsf(); + + + // Fields PROTECTED + // +TopAbs_State myState; +gp_Pnt myPnt; +Standard_Real myTolerance; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_Clsf.ixx b/src/GEOMAlgo/GEOMAlgo_Clsf.ixx new file mode 100644 index 000000000..bb7371ff2 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Clsf.ixx @@ -0,0 +1,73 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_TypeMismatch_HeaderFile +#include +#endif + +//GEOMAlgo_Clsf::~GEOMAlgo_Clsf() {} + + + +Standard_EXPORT Handle_Standard_Type& GEOMAlgo_Clsf_Type_() +{ + + static Handle_Standard_Type aType1 = STANDARD_TYPE(GEOMAlgo_HAlgo); + static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); + static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); + + + static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; + static Handle_Standard_Type _aType = new Standard_Type("GEOMAlgo_Clsf", + sizeof(GEOMAlgo_Clsf), + 1, + (Standard_Address)_Ancestors, + (Standard_Address)NULL); + + return _aType; +} + + +// DownCast method +// allow safe downcasting +// +const Handle(GEOMAlgo_Clsf) Handle(GEOMAlgo_Clsf)::DownCast(const Handle(Standard_Transient)& AnObject) +{ + Handle(GEOMAlgo_Clsf) _anOtherObject; + + if (!AnObject.IsNull()) { + if (AnObject->IsKind(STANDARD_TYPE(GEOMAlgo_Clsf))) { + _anOtherObject = Handle(GEOMAlgo_Clsf)((Handle(GEOMAlgo_Clsf)&)AnObject); + } + } + + return _anOtherObject ; +} +const Handle(Standard_Type)& GEOMAlgo_Clsf::DynamicType() const +{ + return STANDARD_TYPE(GEOMAlgo_Clsf) ; +} +//Standard_Boolean GEOMAlgo_Clsf::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(GEOMAlgo_Clsf) == AType || GEOMAlgo_HAlgo::IsKind(AType)); +//} +//Handle_GEOMAlgo_Clsf::~Handle_GEOMAlgo_Clsf() {} + diff --git a/src/GEOMAlgo/GEOMAlgo_Clsf.jxx b/src/GEOMAlgo/GEOMAlgo_Clsf.jxx new file mode 100644 index 000000000..775a63809 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Clsf.jxx @@ -0,0 +1,31 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _gp_Pnt_HeaderFile +#include +#endif +#ifndef _Geom_Curve_HeaderFile +#include +#endif +#ifndef _Geom_Surface_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_Clsf_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_ClsfBox.cdl b/src/GEOMAlgo/GEOMAlgo_ClsfBox.cdl new file mode 100644 index 000000000..21c385de7 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_ClsfBox.cdl @@ -0,0 +1,70 @@ +-- Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +-- +-- File: GEOMAlgo_ClsfBox.cdl +-- Created: Wed Nov 22 10:19:29 2006 +-- Author: Peter KURNEV +-- + + +class ClsfBox from GEOMAlgo + inherits Clsf from GEOMAlgo + + ---Purpose: + +uses + Shape from TopoDS, + Curve from Geom, + Surface from Geom, + Surface from GeomAdaptor + +--raises + +is + Create + returns mutable ClsfBox from GEOMAlgo; + ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_ClsfBox();" + + SetBox(me:mutable; + aS:Shape from TopoDS); + + Box(me) + returns Shape from TopoDS; + ---C++: return const & + + Perform(me:mutable) + is redefined; + + CheckData(me:mutable) + is redefined; + + CanBeON(me; + aC:Curve from Geom) + returns Boolean from Standard + is redefined; + + CanBeON(me; + aST:Surface from Geom) + returns Boolean from Standard + is redefined; + +fields + myBox : Shape from TopoDS is protected; + myGAS : Surface from GeomAdaptor [6] is protected; +end ClsfBox; diff --git a/src/GEOMAlgo/GEOMAlgo_ClsfBox.cxx b/src/GEOMAlgo/GEOMAlgo_ClsfBox.cxx new file mode 100644 index 000000000..1abad5406 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_ClsfBox.cxx @@ -0,0 +1,216 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: GEOMAlgo_ClsfSurf.cxx +// Created: Wed Nov 22 10:41:47 2006 +// Author: Peter KURNEV +// + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//======================================================================= +//function : +//purpose : +//======================================================================= + GEOMAlgo_ClsfBox::GEOMAlgo_ClsfBox() +: + GEOMAlgo_Clsf() +{ +} +//======================================================================= +//function : ~ +//purpose : +//======================================================================= + GEOMAlgo_ClsfBox::~GEOMAlgo_ClsfBox() +{ +} +//======================================================================= +//function : SetBox +//purpose : +//======================================================================= + void GEOMAlgo_ClsfBox::SetBox(const TopoDS_Shape& aBox) +{ + myBox=aBox; +} +//======================================================================= +//function : Box +//purpose : +//======================================================================= + const TopoDS_Shape& GEOMAlgo_ClsfBox::Box() const +{ + return myBox; +} +//======================================================================= +//function : CheckData +//purpose : +//======================================================================= + void GEOMAlgo_ClsfBox::CheckData() +{ + Standard_Integer i, aNbF; + TopAbs_ShapeEnum aTypeShape; + TopAbs_Orientation aOr; + GeomAbs_SurfaceType aType; + Handle(Geom_Surface) aS; + TopTools_IndexedMapOfShape aMF; + // + myErrorStatus=0; + // + if(myBox.IsNull()) { + myErrorStatus=10; // myBox=NULL + return; + } + // + aTypeShape=myBox.ShapeType(); + if (aTypeShape!=TopAbs_SOLID) { + myErrorStatus=11; // unallowed shape type + return; + } + // + TopExp::MapShapes(myBox, TopAbs_FACE, aMF); + aNbF=aMF.Extent(); + if (aNbF!=6) { + myErrorStatus=12; // wrong number of faces + return; + } + // + for (i=1; i<=aNbF; ++i) { + const TopoDS_Face& aF=TopoDS::Face(aMF(i)); + aOr=aF.Orientation(); + if (!(aOr==TopAbs_FORWARD || aOr==TopAbs_REVERSED)) { + myErrorStatus=12; // unallowed orientation of face + return; + } + // + aS=BRep_Tool::Surface(aF); + myGAS[i-1].Load(aS); + aType=myGAS[i-1].GetType(); + if (!aType==GeomAbs_Plane) { + myErrorStatus=13; // unallowed surface type + return; + } + // + if(aOr==TopAbs_REVERSED) { + gp_Ax1 aAx1; + gp_Pln aPln; + gp_Pnt aP; + gp_Dir aD; + Handle(Geom_Plane) aSR; + // + aPln=myGAS[i-1].Plane(); + aAx1=aPln.Axis(); + aP=aAx1.Location(); + aD=aAx1.Direction(); + aD.Reverse(); + aSR=new Geom_Plane(aP, aD); + myGAS[i-1].Load(aSR); + } + } +} +//======================================================================= +//function : Perform +//purpose : +//======================================================================= + void GEOMAlgo_ClsfBox::Perform() +{ + myErrorStatus=0; + // + const Standard_Integer aNbS=6; + Standard_Integer i, aNbON, aNbIN, iNext; + TopAbs_State aSt; + /* + CheckData(); + if(myErrorStatus) { + return; + } + */ + iNext=1; + aNbON=0; + aNbIN=0; + for(i=0; i +#endif +#ifndef _Handle_GEOMAlgo_ClsfBox_HeaderFile +#include +#endif + +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _GeomAdaptor_Surface_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_Clsf_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +#ifndef _Handle_Geom_Curve_HeaderFile +#include +#endif +#ifndef _Handle_Geom_Surface_HeaderFile +#include +#endif +class TopoDS_Shape; +class Geom_Curve; +class Geom_Surface; + + + +class GEOMAlgo_ClsfBox : public GEOMAlgo_Clsf { + +public: + // Methods PUBLIC + // + + +Standard_EXPORT GEOMAlgo_ClsfBox(); +Standard_EXPORT virtual ~GEOMAlgo_ClsfBox(); + + +Standard_EXPORT void SetBox(const TopoDS_Shape& aS) ; + + +Standard_EXPORT const TopoDS_Shape& Box() const; + + +Standard_EXPORT virtual void Perform() ; + + +Standard_EXPORT virtual void CheckData() ; + + +Standard_EXPORT virtual Standard_Boolean CanBeON(const Handle(Geom_Curve)& aC) const; + + +Standard_EXPORT virtual Standard_Boolean CanBeON(const Handle(Geom_Surface)& aST) const; +//Standard_EXPORT ~GEOMAlgo_ClsfBox(); + + + + + // Type management + // + Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // +TopoDS_Shape myBox; +GeomAdaptor_Surface myGAS[6]; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_ClsfBox.ixx b/src/GEOMAlgo/GEOMAlgo_ClsfBox.ixx new file mode 100644 index 000000000..8406273be --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_ClsfBox.ixx @@ -0,0 +1,74 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_TypeMismatch_HeaderFile +#include +#endif + +//GEOMAlgo_ClsfBox::~GEOMAlgo_ClsfBox() {} + + + +Standard_EXPORT Handle_Standard_Type& GEOMAlgo_ClsfBox_Type_() +{ + + static Handle_Standard_Type aType1 = STANDARD_TYPE(GEOMAlgo_Clsf); + static Handle_Standard_Type aType2 = STANDARD_TYPE(GEOMAlgo_HAlgo); + static Handle_Standard_Type aType3 = STANDARD_TYPE(MMgt_TShared); + static Handle_Standard_Type aType4 = STANDARD_TYPE(Standard_Transient); + + + static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,aType4,NULL}; + static Handle_Standard_Type _aType = new Standard_Type("GEOMAlgo_ClsfBox", + sizeof(GEOMAlgo_ClsfBox), + 1, + (Standard_Address)_Ancestors, + (Standard_Address)NULL); + + return _aType; +} + + +// DownCast method +// allow safe downcasting +// +const Handle(GEOMAlgo_ClsfBox) Handle(GEOMAlgo_ClsfBox)::DownCast(const Handle(Standard_Transient)& AnObject) +{ + Handle(GEOMAlgo_ClsfBox) _anOtherObject; + + if (!AnObject.IsNull()) { + if (AnObject->IsKind(STANDARD_TYPE(GEOMAlgo_ClsfBox))) { + _anOtherObject = Handle(GEOMAlgo_ClsfBox)((Handle(GEOMAlgo_ClsfBox)&)AnObject); + } + } + + return _anOtherObject ; +} +const Handle(Standard_Type)& GEOMAlgo_ClsfBox::DynamicType() const +{ + return STANDARD_TYPE(GEOMAlgo_ClsfBox) ; +} +//Standard_Boolean GEOMAlgo_ClsfBox::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(GEOMAlgo_ClsfBox) == AType || GEOMAlgo_Clsf::IsKind(AType)); +//} +//Handle_GEOMAlgo_ClsfBox::~Handle_GEOMAlgo_ClsfBox() {} + diff --git a/src/GEOMAlgo/GEOMAlgo_ClsfBox.jxx b/src/GEOMAlgo/GEOMAlgo_ClsfBox.jxx new file mode 100644 index 000000000..dfcc22957 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_ClsfBox.jxx @@ -0,0 +1,31 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _Geom_Curve_HeaderFile +#include +#endif +#ifndef _Geom_Surface_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_ClsfBox_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_ClsfSurf.cdl b/src/GEOMAlgo/GEOMAlgo_ClsfSurf.cdl new file mode 100644 index 000000000..15c0b69d4 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_ClsfSurf.cdl @@ -0,0 +1,70 @@ +-- Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +-- +-- File: GEOMAlgo_ClsfSurf.cdl +-- Created: Wed Nov 22 10:19:29 2006 +-- Author: Peter KURNEV +-- + + +class ClsfSurf from GEOMAlgo + inherits Clsf from GEOMAlgo + + ---Purpose: + +uses + Curve from Geom, + Surface from Geom, + Surface from GeomAdaptor + +--raises + +is + Create + returns mutable ClsfSurf from GEOMAlgo; + ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_ClsfSurf();" + + SetSurface(me:mutable; + aS:Surface from Geom); + + Surface(me) + returns Surface from Geom; + ---C++: return const & + + Perform(me:mutable) + is redefined; + + CheckData(me:mutable) + is redefined; + + CanBeON(me; + aC:Curve from Geom) + returns Boolean from Standard + is redefined; + + CanBeON(me; + aST:Surface from Geom) + returns Boolean from Standard + is redefined; + +fields + myS : Surface from Geom is protected; + myGAS : Surface from GeomAdaptor is protected; + +end ClsfSurf; diff --git a/src/GEOMAlgo/GEOMAlgo_ClsfSurf.cxx b/src/GEOMAlgo/GEOMAlgo_ClsfSurf.cxx new file mode 100644 index 000000000..a7b05096f --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_ClsfSurf.cxx @@ -0,0 +1,136 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: GEOMAlgo_ClsfSurf.cxx +// Created: Wed Nov 22 10:41:47 2006 +// Author: Peter KURNEV +// + + +#include +#include +#include +#include + +//======================================================================= +//function : +//purpose : +//======================================================================= + GEOMAlgo_ClsfSurf::GEOMAlgo_ClsfSurf() +: + GEOMAlgo_Clsf() +{ +} +//======================================================================= +//function : ~ +//purpose : +//======================================================================= + GEOMAlgo_ClsfSurf::~GEOMAlgo_ClsfSurf() +{ +} +//======================================================================= +//function : SetSurface +//purpose : +//======================================================================= + void GEOMAlgo_ClsfSurf::SetSurface(const Handle(Geom_Surface)& aS) +{ + myS=aS; +} +//======================================================================= +//function : Surface +//purpose : +//======================================================================= + const Handle(Geom_Surface)& GEOMAlgo_ClsfSurf::Surface() const +{ + return myS; +} +//======================================================================= +//function : CheckData +//purpose : +//======================================================================= + void GEOMAlgo_ClsfSurf::CheckData() +{ + GeomAbs_SurfaceType aType; + // + myErrorStatus=0; + // + if(myS.IsNull()) { + myErrorStatus=10; // mySurface=NULL + return; + } + // + myGAS.Load(myS); + aType=myGAS.GetType(); + if (!(aType==GeomAbs_Plane || + aType==GeomAbs_Cylinder || + aType==GeomAbs_Sphere)) { + myErrorStatus=11; // unallowed surface type + } +} +//======================================================================= +//function : Perform +//purpose : +//======================================================================= + void GEOMAlgo_ClsfSurf::Perform() +{ + myErrorStatus=0; + /* + CheckData(); + if(myErrorStatus) { + return; + } + */ + GEOMAlgo_SurfaceTools::GetState(myPnt, myGAS, myTolerance, myState); +} +//======================================================================= +//function : CanBeON +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_ClsfSurf::CanBeON(const Handle(Geom_Curve)& aC) const +{ + GeomAbs_SurfaceType aST; + GeomAbs_CurveType aCT; + GeomAdaptor_Curve aGAC; + // + aGAC.Load(aC); + aCT=aGAC.GetType(); + // + aST=myGAS.GetType(); + if (aCT==GeomAbs_Line && aST==GeomAbs_Sphere) { + return Standard_False; + } + return Standard_True; +} +//======================================================================= +//function : CanBeON +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_ClsfSurf::CanBeON(const Handle(Geom_Surface)& aS1) const +{ + Standard_Boolean bRet; + GeomAbs_SurfaceType aST, aST1; + GeomAdaptor_Surface aGAS1; + // + aST=myGAS.GetType(); + aGAS1.Load(aS1); + aST1=aGAS1.GetType(); + bRet=(aST1==aST); + // + return bRet; +} diff --git a/src/GEOMAlgo/GEOMAlgo_ClsfSurf.hxx b/src/GEOMAlgo/GEOMAlgo_ClsfSurf.hxx new file mode 100644 index 000000000..f35629562 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_ClsfSurf.hxx @@ -0,0 +1,119 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_ClsfSurf_HeaderFile +#define _GEOMAlgo_ClsfSurf_HeaderFile + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Handle_GEOMAlgo_ClsfSurf_HeaderFile +#include +#endif + +#ifndef _Handle_Geom_Surface_HeaderFile +#include +#endif +#ifndef _GeomAdaptor_Surface_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_Clsf_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +#ifndef _Handle_Geom_Curve_HeaderFile +#include +#endif +class Geom_Surface; +class Geom_Curve; + + + +class GEOMAlgo_ClsfSurf : public GEOMAlgo_Clsf { + +public: + // Methods PUBLIC + // + + +Standard_EXPORT GEOMAlgo_ClsfSurf(); +Standard_EXPORT virtual ~GEOMAlgo_ClsfSurf(); + + +Standard_EXPORT void SetSurface(const Handle(Geom_Surface)& aS) ; + + +Standard_EXPORT const Handle_Geom_Surface& Surface() const; + + +Standard_EXPORT virtual void Perform() ; + + +Standard_EXPORT virtual void CheckData() ; + + +Standard_EXPORT virtual Standard_Boolean CanBeON(const Handle(Geom_Curve)& aC) const; + + +Standard_EXPORT virtual Standard_Boolean CanBeON(const Handle(Geom_Surface)& aST) const; +//Standard_EXPORT ~GEOMAlgo_ClsfSurf(); + + + + + // Type management + // + Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // +Handle_Geom_Surface myS; +GeomAdaptor_Surface myGAS; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_ClsfSurf.ixx b/src/GEOMAlgo/GEOMAlgo_ClsfSurf.ixx new file mode 100644 index 000000000..dadf131a0 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_ClsfSurf.ixx @@ -0,0 +1,74 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_TypeMismatch_HeaderFile +#include +#endif + +//GEOMAlgo_ClsfSurf::~GEOMAlgo_ClsfSurf() {} + + + +Standard_EXPORT Handle_Standard_Type& GEOMAlgo_ClsfSurf_Type_() +{ + + static Handle_Standard_Type aType1 = STANDARD_TYPE(GEOMAlgo_Clsf); + static Handle_Standard_Type aType2 = STANDARD_TYPE(GEOMAlgo_HAlgo); + static Handle_Standard_Type aType3 = STANDARD_TYPE(MMgt_TShared); + static Handle_Standard_Type aType4 = STANDARD_TYPE(Standard_Transient); + + + static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,aType4,NULL}; + static Handle_Standard_Type _aType = new Standard_Type("GEOMAlgo_ClsfSurf", + sizeof(GEOMAlgo_ClsfSurf), + 1, + (Standard_Address)_Ancestors, + (Standard_Address)NULL); + + return _aType; +} + + +// DownCast method +// allow safe downcasting +// +const Handle(GEOMAlgo_ClsfSurf) Handle(GEOMAlgo_ClsfSurf)::DownCast(const Handle(Standard_Transient)& AnObject) +{ + Handle(GEOMAlgo_ClsfSurf) _anOtherObject; + + if (!AnObject.IsNull()) { + if (AnObject->IsKind(STANDARD_TYPE(GEOMAlgo_ClsfSurf))) { + _anOtherObject = Handle(GEOMAlgo_ClsfSurf)((Handle(GEOMAlgo_ClsfSurf)&)AnObject); + } + } + + return _anOtherObject ; +} +const Handle(Standard_Type)& GEOMAlgo_ClsfSurf::DynamicType() const +{ + return STANDARD_TYPE(GEOMAlgo_ClsfSurf) ; +} +//Standard_Boolean GEOMAlgo_ClsfSurf::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(GEOMAlgo_ClsfSurf) == AType || GEOMAlgo_Clsf::IsKind(AType)); +//} +//Handle_GEOMAlgo_ClsfSurf::~Handle_GEOMAlgo_ClsfSurf() {} + diff --git a/src/GEOMAlgo/GEOMAlgo_ClsfSurf.jxx b/src/GEOMAlgo/GEOMAlgo_ClsfSurf.jxx new file mode 100644 index 000000000..6d8048bd8 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_ClsfSurf.jxx @@ -0,0 +1,28 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _Geom_Surface_HeaderFile +#include +#endif +#ifndef _Geom_Curve_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_ClsfSurf_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape.hxx new file mode 100644 index 000000000..0864e681c --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape.hxx @@ -0,0 +1,115 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape_HeaderFile +#define _GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape_HeaderFile + +#ifndef _TCollection_BasicMapIterator_HeaderFile +#include +#endif +#ifndef _Standard_Real_HeaderFile +#include +#endif +#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_HeaderFile +#include +#endif +class Standard_NoSuchObject; +class TopTools_ListOfShape; +class TColStd_MapRealHasher; +class GEOMAlgo_DataMapOfRealListOfShape; +class GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape : public TCollection_BasicMapIterator { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape(); + + +Standard_EXPORT GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape(const GEOMAlgo_DataMapOfRealListOfShape& aMap); + + +Standard_EXPORT void Initialize(const GEOMAlgo_DataMapOfRealListOfShape& aMap) ; + + +Standard_EXPORT const Standard_Real& Key() const; + + +Standard_EXPORT const TopTools_ListOfShape& Value() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape_0.cxx new file mode 100644 index 000000000..6ad2f1860 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape_0.cxx @@ -0,0 +1,54 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _TColStd_MapRealHasher_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapOfRealListOfShape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_HeaderFile +#include +#endif + + +#define TheKey Standard_Real +#define TheKey_hxx +#define TheItem TopTools_ListOfShape +#define TheItem_hxx +#define Hasher TColStd_MapRealHasher +#define Hasher_hxx +#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape +#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_Type_() +#define TCollection_DataMap GEOMAlgo_DataMapOfRealListOfShape +#define TCollection_DataMap_hxx +#include + diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal.hxx new file mode 100644 index 000000000..bea5ce80f --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal.hxx @@ -0,0 +1,115 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal_HeaderFile +#define _GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal_HeaderFile + +#ifndef _TCollection_BasicMapIterator_HeaderFile +#include +#endif +#ifndef _Standard_Real_HeaderFile +#include +#endif +#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_HeaderFile +#include +#endif +class Standard_NoSuchObject; +class TopoDS_Shape; +class TopTools_ShapeMapHasher; +class GEOMAlgo_DataMapOfShapeReal; +class GEOMAlgo_DataMapNodeOfDataMapOfShapeReal; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal : public TCollection_BasicMapIterator { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal(); + + +Standard_EXPORT GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal(const GEOMAlgo_DataMapOfShapeReal& aMap); + + +Standard_EXPORT void Initialize(const GEOMAlgo_DataMapOfShapeReal& aMap) ; + + +Standard_EXPORT const TopoDS_Shape& Key() const; + + +Standard_EXPORT const Standard_Real& Value() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal_0.cxx new file mode 100644 index 000000000..0e1748b67 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal_0.cxx @@ -0,0 +1,54 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _TopTools_ShapeMapHasher_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapOfShapeReal_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_HeaderFile +#include +#endif + + +#define TheKey TopoDS_Shape +#define TheKey_hxx +#define TheItem Standard_Real +#define TheItem_hxx +#define Hasher TopTools_ShapeMapHasher +#define Hasher_hxx +#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfShapeReal +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal +#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_Type_() +#define TCollection_DataMap GEOMAlgo_DataMapOfShapeReal +#define TCollection_DataMap_hxx +#include + diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet.hxx new file mode 100644 index 000000000..67260a8a1 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet.hxx @@ -0,0 +1,113 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet_HeaderFile +#define _GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet_HeaderFile + +#ifndef _TCollection_BasicMapIterator_HeaderFile +#include +#endif +#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_HeaderFile +#include +#endif +class Standard_NoSuchObject; +class TopoDS_Shape; +class GEOMAlgo_ShapeSet; +class TopTools_ShapeMapHasher; +class GEOMAlgo_DataMapOfShapeShapeSet; +class GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet : public TCollection_BasicMapIterator { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet(); + + +Standard_EXPORT GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet(const GEOMAlgo_DataMapOfShapeShapeSet& aMap); + + +Standard_EXPORT void Initialize(const GEOMAlgo_DataMapOfShapeShapeSet& aMap) ; + + +Standard_EXPORT const TopoDS_Shape& Key() const; + + +Standard_EXPORT const GEOMAlgo_ShapeSet& Value() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet_0.cxx new file mode 100644 index 000000000..56f780149 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet_0.cxx @@ -0,0 +1,57 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_ShapeSet_HeaderFile +#include +#endif +#ifndef _TopTools_ShapeMapHasher_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapOfShapeShapeSet_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_HeaderFile +#include +#endif + + +#define TheKey TopoDS_Shape +#define TheKey_hxx +#define TheItem GEOMAlgo_ShapeSet +#define TheItem_hxx +#define Hasher TopTools_ShapeMapHasher +#define Hasher_hxx +#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet +#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_Type_() +#define TCollection_DataMap GEOMAlgo_DataMapOfShapeShapeSet +#define TCollection_DataMap_hxx +#include + diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx new file mode 100644 index 000000000..3d61106de --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx @@ -0,0 +1,131 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_HeaderFile +#define _GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_HeaderFile + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_HeaderFile +#include +#endif + +#ifndef _Standard_Real_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _TCollection_MapNode_HeaderFile +#include +#endif +#ifndef _TCollection_MapNodePtr_HeaderFile +#include +#endif +class TopTools_ListOfShape; +class TColStd_MapRealHasher; +class GEOMAlgo_DataMapOfRealListOfShape; +class GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape; + + + +class GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape : public TCollection_MapNode { + +public: + // Methods PUBLIC + // + +GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape(const Standard_Real& K,const TopTools_ListOfShape& I,const TCollection_MapNodePtr& n); + + Standard_Real& Key() const; + + TopTools_ListOfShape& Value() const; +//Standard_EXPORT ~GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape(); + + + + + // Type management + // + Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // +Standard_Real myKey; +TopTools_ListOfShape myValue; + + +}; + +#define TheKey Standard_Real +#define TheKey_hxx +#define TheItem TopTools_ListOfShape +#define TheItem_hxx +#define Hasher TColStd_MapRealHasher +#define Hasher_hxx +#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape +#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_Type_() +#define TCollection_DataMap GEOMAlgo_DataMapOfRealListOfShape +#define TCollection_DataMap_hxx + +#include + +#undef TheKey +#undef TheKey_hxx +#undef TheItem +#undef TheItem_hxx +#undef Hasher +#undef Hasher_hxx +#undef TCollection_DataMapNode +#undef TCollection_DataMapNode_hxx +#undef TCollection_DataMapIterator +#undef TCollection_DataMapIterator_hxx +#undef Handle_TCollection_DataMapNode +#undef TCollection_DataMapNode_Type_ +#undef TCollection_DataMap +#undef TCollection_DataMap_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_0.cxx new file mode 100644 index 000000000..39f3ac1dd --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_0.cxx @@ -0,0 +1,100 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_TypeMismatch_HeaderFile +#include +#endif + +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _TColStd_MapRealHasher_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapOfRealListOfShape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape_HeaderFile +#include +#endif +//GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape::~GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape() {} + + + +Standard_EXPORT Handle_Standard_Type& GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_Type_() +{ + + static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); + static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); + static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); + + + static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; + static Handle_Standard_Type _aType = new Standard_Type("GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape", + sizeof(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape), + 1, + (Standard_Address)_Ancestors, + (Standard_Address)NULL); + + return _aType; +} + + +// DownCast method +// allow safe downcasting +// +const Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape) Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape)::DownCast(const Handle(Standard_Transient)& AnObject) +{ + Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape) _anOtherObject; + + if (!AnObject.IsNull()) { + if (AnObject->IsKind(STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape))) { + _anOtherObject = Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape)((Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape)&)AnObject); + } + } + + return _anOtherObject ; +} +const Handle(Standard_Type)& GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape::DynamicType() const +{ + return STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape) ; +} +//Standard_Boolean GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape::~Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape() {} +#define TheKey Standard_Real +#define TheKey_hxx +#define TheItem TopTools_ListOfShape +#define TheItem_hxx +#define Hasher TColStd_MapRealHasher +#define Hasher_hxx +#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape +#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_Type_() +#define TCollection_DataMap GEOMAlgo_DataMapOfRealListOfShape +#define TCollection_DataMap_hxx +#include + diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx new file mode 100644 index 000000000..d2ac36be9 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx @@ -0,0 +1,131 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_HeaderFile +#define _GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_HeaderFile + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_HeaderFile +#include +#endif + +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _Standard_Real_HeaderFile +#include +#endif +#ifndef _TCollection_MapNode_HeaderFile +#include +#endif +#ifndef _TCollection_MapNodePtr_HeaderFile +#include +#endif +class TopoDS_Shape; +class TopTools_ShapeMapHasher; +class GEOMAlgo_DataMapOfShapeReal; +class GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal; + + + +class GEOMAlgo_DataMapNodeOfDataMapOfShapeReal : public TCollection_MapNode { + +public: + // Methods PUBLIC + // + +GEOMAlgo_DataMapNodeOfDataMapOfShapeReal(const TopoDS_Shape& K,const Standard_Real& I,const TCollection_MapNodePtr& n); + + TopoDS_Shape& Key() const; + + Standard_Real& Value() const; +//Standard_EXPORT ~GEOMAlgo_DataMapNodeOfDataMapOfShapeReal(); + + + + + // Type management + // + Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // +TopoDS_Shape myKey; +Standard_Real myValue; + + +}; + +#define TheKey TopoDS_Shape +#define TheKey_hxx +#define TheItem Standard_Real +#define TheItem_hxx +#define Hasher TopTools_ShapeMapHasher +#define Hasher_hxx +#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfShapeReal +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal +#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_Type_() +#define TCollection_DataMap GEOMAlgo_DataMapOfShapeReal +#define TCollection_DataMap_hxx + +#include + +#undef TheKey +#undef TheKey_hxx +#undef TheItem +#undef TheItem_hxx +#undef Hasher +#undef Hasher_hxx +#undef TCollection_DataMapNode +#undef TCollection_DataMapNode_hxx +#undef TCollection_DataMapIterator +#undef TCollection_DataMapIterator_hxx +#undef Handle_TCollection_DataMapNode +#undef TCollection_DataMapNode_Type_ +#undef TCollection_DataMap +#undef TCollection_DataMap_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_0.cxx new file mode 100644 index 000000000..f44a0c520 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_0.cxx @@ -0,0 +1,100 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_TypeMismatch_HeaderFile +#include +#endif + +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _TopTools_ShapeMapHasher_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapOfShapeReal_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal_HeaderFile +#include +#endif +//GEOMAlgo_DataMapNodeOfDataMapOfShapeReal::~GEOMAlgo_DataMapNodeOfDataMapOfShapeReal() {} + + + +Standard_EXPORT Handle_Standard_Type& GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_Type_() +{ + + static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); + static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); + static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); + + + static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; + static Handle_Standard_Type _aType = new Standard_Type("GEOMAlgo_DataMapNodeOfDataMapOfShapeReal", + sizeof(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal), + 1, + (Standard_Address)_Ancestors, + (Standard_Address)NULL); + + return _aType; +} + + +// DownCast method +// allow safe downcasting +// +const Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal) Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal)::DownCast(const Handle(Standard_Transient)& AnObject) +{ + Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal) _anOtherObject; + + if (!AnObject.IsNull()) { + if (AnObject->IsKind(STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal))) { + _anOtherObject = Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal)((Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal)&)AnObject); + } + } + + return _anOtherObject ; +} +const Handle(Standard_Type)& GEOMAlgo_DataMapNodeOfDataMapOfShapeReal::DynamicType() const +{ + return STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal) ; +} +//Standard_Boolean GEOMAlgo_DataMapNodeOfDataMapOfShapeReal::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal::~Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal() {} +#define TheKey TopoDS_Shape +#define TheKey_hxx +#define TheItem Standard_Real +#define TheItem_hxx +#define Hasher TopTools_ShapeMapHasher +#define Hasher_hxx +#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfShapeReal +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal +#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_Type_() +#define TCollection_DataMap GEOMAlgo_DataMapOfShapeReal +#define TCollection_DataMap_hxx +#include + diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx new file mode 100644 index 000000000..fdcdfb4bc --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx @@ -0,0 +1,132 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_HeaderFile +#define _GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_HeaderFile + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_HeaderFile +#include +#endif + +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_ShapeSet_HeaderFile +#include +#endif +#ifndef _TCollection_MapNode_HeaderFile +#include +#endif +#ifndef _TCollection_MapNodePtr_HeaderFile +#include +#endif +class TopoDS_Shape; +class GEOMAlgo_ShapeSet; +class TopTools_ShapeMapHasher; +class GEOMAlgo_DataMapOfShapeShapeSet; +class GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet; + + + +class GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet : public TCollection_MapNode { + +public: + // Methods PUBLIC + // + +GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet(const TopoDS_Shape& K,const GEOMAlgo_ShapeSet& I,const TCollection_MapNodePtr& n); + + TopoDS_Shape& Key() const; + + GEOMAlgo_ShapeSet& Value() const; +//Standard_EXPORT ~GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet(); + + + + + // Type management + // + Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // +TopoDS_Shape myKey; +GEOMAlgo_ShapeSet myValue; + + +}; + +#define TheKey TopoDS_Shape +#define TheKey_hxx +#define TheItem GEOMAlgo_ShapeSet +#define TheItem_hxx +#define Hasher TopTools_ShapeMapHasher +#define Hasher_hxx +#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet +#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_Type_() +#define TCollection_DataMap GEOMAlgo_DataMapOfShapeShapeSet +#define TCollection_DataMap_hxx + +#include + +#undef TheKey +#undef TheKey_hxx +#undef TheItem +#undef TheItem_hxx +#undef Hasher +#undef Hasher_hxx +#undef TCollection_DataMapNode +#undef TCollection_DataMapNode_hxx +#undef TCollection_DataMapIterator +#undef TCollection_DataMapIterator_hxx +#undef Handle_TCollection_DataMapNode +#undef TCollection_DataMapNode_Type_ +#undef TCollection_DataMap +#undef TCollection_DataMap_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_0.cxx new file mode 100644 index 000000000..6d4e37236 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_0.cxx @@ -0,0 +1,103 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_TypeMismatch_HeaderFile +#include +#endif + +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_ShapeSet_HeaderFile +#include +#endif +#ifndef _TopTools_ShapeMapHasher_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapOfShapeShapeSet_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet_HeaderFile +#include +#endif +//GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet::~GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet() {} + + + +Standard_EXPORT Handle_Standard_Type& GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_Type_() +{ + + static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); + static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); + static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); + + + static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; + static Handle_Standard_Type _aType = new Standard_Type("GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet", + sizeof(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet), + 1, + (Standard_Address)_Ancestors, + (Standard_Address)NULL); + + return _aType; +} + + +// DownCast method +// allow safe downcasting +// +const Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet) Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet)::DownCast(const Handle(Standard_Transient)& AnObject) +{ + Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet) _anOtherObject; + + if (!AnObject.IsNull()) { + if (AnObject->IsKind(STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet))) { + _anOtherObject = Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet)((Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet)&)AnObject); + } + } + + return _anOtherObject ; +} +const Handle(Standard_Type)& GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet::DynamicType() const +{ + return STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet) ; +} +//Standard_Boolean GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet::~Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet() {} +#define TheKey TopoDS_Shape +#define TheKey_hxx +#define TheItem GEOMAlgo_ShapeSet +#define TheItem_hxx +#define Hasher TopTools_ShapeMapHasher +#define Hasher_hxx +#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet +#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_Type_() +#define TCollection_DataMap GEOMAlgo_DataMapOfShapeShapeSet +#define TCollection_DataMap_hxx +#include + diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapOfRealListOfShape.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapOfRealListOfShape.hxx new file mode 100644 index 000000000..601edc17c --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapOfRealListOfShape.hxx @@ -0,0 +1,157 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_DataMapOfRealListOfShape_HeaderFile +#define _GEOMAlgo_DataMapOfRealListOfShape_HeaderFile + +#ifndef _TCollection_BasicMap_HeaderFile +#include +#endif +#ifndef _Standard_Real_HeaderFile +#include +#endif +#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class Standard_DomainError; +class Standard_NoSuchObject; +class TopTools_ListOfShape; +class TColStd_MapRealHasher; +class GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape; +class GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class GEOMAlgo_DataMapOfRealListOfShape : public TCollection_BasicMap { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT GEOMAlgo_DataMapOfRealListOfShape(const Standard_Integer NbBuckets = 1); + + +Standard_EXPORT GEOMAlgo_DataMapOfRealListOfShape& Assign(const GEOMAlgo_DataMapOfRealListOfShape& Other) ; + GEOMAlgo_DataMapOfRealListOfShape& operator =(const GEOMAlgo_DataMapOfRealListOfShape& Other) +{ + return Assign(Other); +} + + + +Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; + + +Standard_EXPORT void Clear() ; +~GEOMAlgo_DataMapOfRealListOfShape() +{ + Clear(); +} + + + +Standard_EXPORT Standard_Boolean Bind(const Standard_Real& K,const TopTools_ListOfShape& I) ; + + +Standard_EXPORT Standard_Boolean IsBound(const Standard_Real& K) const; + + +Standard_EXPORT Standard_Boolean UnBind(const Standard_Real& K) ; + + +Standard_EXPORT const TopTools_ListOfShape& Find(const Standard_Real& K) const; + const TopTools_ListOfShape& operator()(const Standard_Real& K) const +{ + return Find(K); +} + + + +Standard_EXPORT TopTools_ListOfShape& ChangeFind(const Standard_Real& K) ; + TopTools_ListOfShape& operator()(const Standard_Real& K) +{ + return ChangeFind(K); +} + + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + +Standard_EXPORT GEOMAlgo_DataMapOfRealListOfShape(const GEOMAlgo_DataMapOfRealListOfShape& Other); + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapOfRealListOfShape_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapOfRealListOfShape_0.cxx new file mode 100644 index 000000000..e1d5ca6e8 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapOfRealListOfShape_0.cxx @@ -0,0 +1,57 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_DomainError_HeaderFile +#include +#endif +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _TColStd_MapRealHasher_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape_HeaderFile +#include +#endif + + +#define TheKey Standard_Real +#define TheKey_hxx +#define TheItem TopTools_ListOfShape +#define TheItem_hxx +#define Hasher TColStd_MapRealHasher +#define Hasher_hxx +#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfRealListOfShape +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape +#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_Type_() +#define TCollection_DataMap GEOMAlgo_DataMapOfRealListOfShape +#define TCollection_DataMap_hxx +#include + diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeReal.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeReal.hxx new file mode 100644 index 000000000..94be38772 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeReal.hxx @@ -0,0 +1,157 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_DataMapOfShapeReal_HeaderFile +#define _GEOMAlgo_DataMapOfShapeReal_HeaderFile + +#ifndef _TCollection_BasicMap_HeaderFile +#include +#endif +#ifndef _Standard_Real_HeaderFile +#include +#endif +#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class Standard_DomainError; +class Standard_NoSuchObject; +class TopoDS_Shape; +class TopTools_ShapeMapHasher; +class GEOMAlgo_DataMapNodeOfDataMapOfShapeReal; +class GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class GEOMAlgo_DataMapOfShapeReal : public TCollection_BasicMap { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT GEOMAlgo_DataMapOfShapeReal(const Standard_Integer NbBuckets = 1); + + +Standard_EXPORT GEOMAlgo_DataMapOfShapeReal& Assign(const GEOMAlgo_DataMapOfShapeReal& Other) ; + GEOMAlgo_DataMapOfShapeReal& operator =(const GEOMAlgo_DataMapOfShapeReal& Other) +{ + return Assign(Other); +} + + + +Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; + + +Standard_EXPORT void Clear() ; +~GEOMAlgo_DataMapOfShapeReal() +{ + Clear(); +} + + + +Standard_EXPORT Standard_Boolean Bind(const TopoDS_Shape& K,const Standard_Real& I) ; + + +Standard_EXPORT Standard_Boolean IsBound(const TopoDS_Shape& K) const; + + +Standard_EXPORT Standard_Boolean UnBind(const TopoDS_Shape& K) ; + + +Standard_EXPORT const Standard_Real& Find(const TopoDS_Shape& K) const; + const Standard_Real& operator()(const TopoDS_Shape& K) const +{ + return Find(K); +} + + + +Standard_EXPORT Standard_Real& ChangeFind(const TopoDS_Shape& K) ; + Standard_Real& operator()(const TopoDS_Shape& K) +{ + return ChangeFind(K); +} + + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + +Standard_EXPORT GEOMAlgo_DataMapOfShapeReal(const GEOMAlgo_DataMapOfShapeReal& Other); + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeReal_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeReal_0.cxx new file mode 100644 index 000000000..06abae332 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeReal_0.cxx @@ -0,0 +1,57 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_DomainError_HeaderFile +#include +#endif +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _TopTools_ShapeMapHasher_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal_HeaderFile +#include +#endif + + +#define TheKey TopoDS_Shape +#define TheKey_hxx +#define TheItem Standard_Real +#define TheItem_hxx +#define Hasher TopTools_ShapeMapHasher +#define Hasher_hxx +#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfShapeReal +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeReal +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal +#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_Type_() +#define TCollection_DataMap GEOMAlgo_DataMapOfShapeReal +#define TCollection_DataMap_hxx +#include + diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeShapeSet.hxx b/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeShapeSet.hxx new file mode 100644 index 000000000..f7947802b --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeShapeSet.hxx @@ -0,0 +1,155 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_DataMapOfShapeShapeSet_HeaderFile +#define _GEOMAlgo_DataMapOfShapeShapeSet_HeaderFile + +#ifndef _TCollection_BasicMap_HeaderFile +#include +#endif +#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class Standard_DomainError; +class Standard_NoSuchObject; +class TopoDS_Shape; +class GEOMAlgo_ShapeSet; +class TopTools_ShapeMapHasher; +class GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet; +class GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class GEOMAlgo_DataMapOfShapeShapeSet : public TCollection_BasicMap { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT GEOMAlgo_DataMapOfShapeShapeSet(const Standard_Integer NbBuckets = 1); + + +Standard_EXPORT GEOMAlgo_DataMapOfShapeShapeSet& Assign(const GEOMAlgo_DataMapOfShapeShapeSet& Other) ; + GEOMAlgo_DataMapOfShapeShapeSet& operator =(const GEOMAlgo_DataMapOfShapeShapeSet& Other) +{ + return Assign(Other); +} + + + +Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; + + +Standard_EXPORT void Clear() ; +~GEOMAlgo_DataMapOfShapeShapeSet() +{ + Clear(); +} + + + +Standard_EXPORT Standard_Boolean Bind(const TopoDS_Shape& K,const GEOMAlgo_ShapeSet& I) ; + + +Standard_EXPORT Standard_Boolean IsBound(const TopoDS_Shape& K) const; + + +Standard_EXPORT Standard_Boolean UnBind(const TopoDS_Shape& K) ; + + +Standard_EXPORT const GEOMAlgo_ShapeSet& Find(const TopoDS_Shape& K) const; + const GEOMAlgo_ShapeSet& operator()(const TopoDS_Shape& K) const +{ + return Find(K); +} + + + +Standard_EXPORT GEOMAlgo_ShapeSet& ChangeFind(const TopoDS_Shape& K) ; + GEOMAlgo_ShapeSet& operator()(const TopoDS_Shape& K) +{ + return ChangeFind(K); +} + + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + +Standard_EXPORT GEOMAlgo_DataMapOfShapeShapeSet(const GEOMAlgo_DataMapOfShapeShapeSet& Other); + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeShapeSet_0.cxx b/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeShapeSet_0.cxx new file mode 100644 index 000000000..96d931bf2 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_DataMapOfShapeShapeSet_0.cxx @@ -0,0 +1,60 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_DomainError_HeaderFile +#include +#endif +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_ShapeSet_HeaderFile +#include +#endif +#ifndef _TopTools_ShapeMapHasher_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet_HeaderFile +#include +#endif + + +#define TheKey TopoDS_Shape +#define TheKey_hxx +#define TheItem GEOMAlgo_ShapeSet +#define TheItem_hxx +#define Hasher TopTools_ShapeMapHasher +#define Hasher_hxx +#define TCollection_DataMapNode GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator GEOMAlgo_DataMapIteratorOfDataMapOfShapeShapeSet +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet +#define TCollection_DataMapNode_Type_() GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_Type_() +#define TCollection_DataMap GEOMAlgo_DataMapOfShapeShapeSet +#define TCollection_DataMap_hxx +#include + diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.cdl b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.cdl new file mode 100644 index 000000000..c0a1b9253 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.cdl @@ -0,0 +1,138 @@ +-- Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +-- +-- File: GEOMAlgo_FinderShapeOn1.cdl +-- Created: Fri Mar 4 10:26:54 2005 +-- Author: Peter KURNEV +-- + + +class FinderShapeOn2 from GEOMAlgo + inherits ShapeAlgo from GEOMAlgo + + ---Purpose: + +uses + Pnt from gp, + ShapeEnum from TopAbs, + State from TopAbs, + Face from TopoDS, + Edge from TopoDS, + ListOfShape from TopTools, + + State from GEOMAlgo, + ListOfPnt from GEOMAlgo, + IndexedDataMapOfShapeState from GEOMAlgo, + Clsf from GEOMAlgo + +--raises + +is + Create + returns FinderShapeOn2 from GEOMAlgo; + ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_FinderShapeOn2();" + + SetClsf(me:out; + aClsf:Clsf from GEOMAlgo); + + Clsf(me) + returns Clsf from GEOMAlgo; + ---C++: return const & + + SetShapeType(me:out; + aST:ShapeEnum from TopAbs); + + ShapeType(me) + returns ShapeEnum from TopAbs; + + SetState(me:out; + aSF:State from GEOMAlgo); + + State(me) + returns State from GEOMAlgo; + + SetNbPntsMin(me:out; + aNb:Integer from Standard); + + NbPntsMin(me) + returns Integer from Standard; + + SetNbPntsMax(me:out; + aNb:Integer from Standard); + + NbPntsMax(me) + returns Integer from Standard; + + Perform(me:out) + is redefined; + + Shapes(me) + returns ListOfShape from TopTools; + ---C++: return const & + -- + -- protected methods + -- + CheckData(me:out) + is redefined protected; + + ProcessVertices(me:out) + is protected; + + ProcessEdges(me:out) + is protected; + + ProcessFaces(me:out) + is protected; + + ProcessSolids(me:out) + is protected; + + InnerPoints(me:out; + aF :Face from TopoDS; + aLP:out ListOfPnt from GEOMAlgo) + is protected; + + InnerPoints(me:out; + aE :Edge from TopoDS; + aLP:out ListOfPnt from GEOMAlgo) + is protected; + + InnerPoints(me:out; + aE :Edge from TopoDS; + aNbPnts: Integer from Standard; + aLP:out ListOfPnt from GEOMAlgo) + is protected; + + MSS (me) + returns IndexedDataMapOfShapeState from GEOMAlgo; + ---C++:return const & + + +fields + myShapeType : ShapeEnum from TopAbs is protected; + myState : State from GEOMAlgo is protected; + myNbPntsMin : Integer from Standard is protected; + myNbPntsMax : Integer from Standard is protected; + myClsf : Clsf from GEOMAlgo is protected; + -- + myLS : ListOfShape from TopTools is protected; + -- + myMSS : IndexedDataMapOfShapeState from GEOMAlgo is protected; + +end FinderShapeOn2; diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.cxx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.cxx new file mode 100644 index 000000000..8a386d0b8 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.cxx @@ -0,0 +1,821 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: GEOMAlgo_FinderShapeOn1.cxx +// Created: Fri Mar 4 10:31:06 2005 +// Author: Peter KURNEV +// + + +#include +#include + + +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include +#include + +#include + +#include +#include + +#include +#include +#include + +//======================================================================= +//function : GEOMAlgo_FinderShapeOn1 +//purpose : +//======================================================================= + GEOMAlgo_FinderShapeOn2::GEOMAlgo_FinderShapeOn2() +: + GEOMAlgo_ShapeAlgo() +{ + myTolerance=0.0001; + myShapeType=TopAbs_VERTEX; + myState=GEOMAlgo_ST_UNKNOWN; + myNbPntsMin=3; + myNbPntsMax=0; +} +//======================================================================= +//function : ~ +//purpose : +//======================================================================= + GEOMAlgo_FinderShapeOn2::~GEOMAlgo_FinderShapeOn2() +{ +} +//======================================================================= +//function : SetClsf +//purpose : +//======================================================================= + void GEOMAlgo_FinderShapeOn2::SetClsf(const Handle(GEOMAlgo_Clsf)& aClsf) +{ + myClsf=aClsf; +} +//======================================================================= +//function : Clsf +//purpose : +//======================================================================= + const Handle(GEOMAlgo_Clsf)& GEOMAlgo_FinderShapeOn2::Clsf() const +{ + return myClsf; +} +//======================================================================= +//function : SetShapeType +//purpose : +//======================================================================= + void GEOMAlgo_FinderShapeOn2::SetShapeType(const TopAbs_ShapeEnum aType) +{ + myShapeType=aType; +} +//======================================================================= +//function : ShapeType +//purpose : +//======================================================================= + TopAbs_ShapeEnum GEOMAlgo_FinderShapeOn2::ShapeType()const +{ + return myShapeType; +} +//======================================================================= +//function : SetState +//purpose : +//======================================================================= + void GEOMAlgo_FinderShapeOn2::SetState(const GEOMAlgo_State aState) +{ + myState=aState; +} +//======================================================================= +//function : State +//purpose : +//======================================================================= + GEOMAlgo_State GEOMAlgo_FinderShapeOn2::State() const +{ + return myState; +} +//======================================================================= +//function : SetNbPntsMin +//purpose : +//======================================================================= + void GEOMAlgo_FinderShapeOn2::SetNbPntsMin(const Standard_Integer aNb) +{ + myNbPntsMin=aNb; +} +//======================================================================= +//function : NbPntsMin +//purpose : +//======================================================================= + Standard_Integer GEOMAlgo_FinderShapeOn2::NbPntsMin()const +{ + return myNbPntsMin; +} +//======================================================================= +//function : SetNbPntsMax +//purpose : +//======================================================================= + void GEOMAlgo_FinderShapeOn2::SetNbPntsMax(const Standard_Integer aNb) +{ + myNbPntsMax=aNb; +} +//======================================================================= +//function : NbPntsMax +//purpose : +//======================================================================= + Standard_Integer GEOMAlgo_FinderShapeOn2::NbPntsMax()const +{ + return myNbPntsMax; +} +//======================================================================= +// function: MSS +// purpose: +//======================================================================= + const GEOMAlgo_IndexedDataMapOfShapeState& GEOMAlgo_FinderShapeOn2::MSS() const +{ + return myMSS; +} +//======================================================================= +// function: Shapes +// purpose: +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_FinderShapeOn2::Shapes() const +{ + Standard_Integer i, aNb; + TopTools_ListOfShape* pL; + // + pL=(TopTools_ListOfShape*) &myLS; + pL->Clear(); + // + aNb=myMSS.Extent(); + for (i=1; i<=aNb; ++i) { + const TopoDS_Shape& aS=myMSS.FindKey(i); + if (aS.ShapeType()==myShapeType) { + pL->Append(aS); + } + } + return myLS; +} +//======================================================================= +//function : Perform +//purpose : +//======================================================================= + void GEOMAlgo_FinderShapeOn2::Perform() +{ + myErrorStatus=0; + myWarningStatus=0; + myLS.Clear(); + myMSS.Clear(); + // + CheckData(); + if(myErrorStatus) { + return; + } + // + myClsf->SetTolerance(myTolerance); + // + // 1 + ProcessVertices(); + if(myErrorStatus) { + return; + } + if (myShapeType==TopAbs_VERTEX) { + return; + } + // + // 2 + ProcessEdges(); + if(myErrorStatus) { + return; + } + if (myShapeType==TopAbs_EDGE) { + return; + } + // + // 3 + ProcessFaces(); + if(myErrorStatus) { + return; + } + if (myShapeType==TopAbs_FACE) { + return; + } + // + // 4 + ProcessSolids(); + // +} +//======================================================================= +//function : CheckData +//purpose : +//======================================================================= + void GEOMAlgo_FinderShapeOn2::CheckData() +{ + Standard_Integer iErr; + // + myErrorStatus=0; + // + if(myClsf.IsNull()) { + myErrorStatus=10; // myClsf=NULL + return; + } + // + myClsf->CheckData(); + iErr=myClsf->ErrorStatus(); + if (iErr) { + myErrorStatus=41; // invalid data for classifier + return; + } + // + if (myShape.IsNull()) { + myErrorStatus=11; // myShape=NULL + return; + } + // + if (!(myShapeType==TopAbs_VERTEX || + myShapeType==TopAbs_EDGE || + myShapeType==TopAbs_FACE || + myShapeType==TopAbs_SOLID)) { + myErrorStatus=12; // unallowed subshape type + return; + } + // + if (myState==GEOMAlgo_ST_UNKNOWN || + myState==GEOMAlgo_ST_INOUT) { + myErrorStatus=13; // unallowed state type + return; + } +} +//======================================================================= +//function : ProcessVertices +//purpose : +//======================================================================= + void GEOMAlgo_FinderShapeOn2::ProcessVertices() +{ + myErrorStatus=0; + // + Standard_Boolean bIsConformState; + Standard_Integer i, aNb, iErr; + gp_Pnt aP; + TopTools_IndexedMapOfShape aM; + TopAbs_State aSt; + // + TopExp::MapShapes(myShape, TopAbs_VERTEX, aM); + aNb=aM.Extent(); + for (i=1; i<=aNb; ++i) { + const TopoDS_Vertex& aV=TopoDS::Vertex(aM(i)); + aP=BRep_Tool::Pnt(aV); + // + myClsf->SetPnt(aP); + myClsf->Perform(); + iErr=myClsf->ErrorStatus(); + if (iErr) { + myErrorStatus=40; // point can not be classified + return; + } + // + aSt=myClsf->State(); + bIsConformState=GEOMAlgo_SurfaceTools::IsConformState(aSt, myState); + // + if (myShapeType==TopAbs_VERTEX){ + if (bIsConformState) { + myMSS.Add(aV, aSt); + } + } + else if (bIsConformState || aSt==TopAbs_ON) { + myMSS.Add(aV, aSt); + } + } +} +//======================================================================= +//function : ProcessEdges +//purpose : +//======================================================================= + void GEOMAlgo_FinderShapeOn2::ProcessEdges() +{ + myErrorStatus=0; + // + Standard_Boolean bIsConformState, bIsToBreak; + Standard_Integer i, aNb, iCnt, iErr; + TopAbs_State aSt; + TopTools_IndexedMapOfShape aM; + TopExp_Explorer aExp; + GEOMAlgo_ListIteratorOfListOfPnt aIt; + // + TopExp::MapShapes(myShape, TopAbs_EDGE, aM); + aNb=aM.Extent(); + for (i=1; i<=aNb; ++i) { + GEOMAlgo_ListOfPnt aLP; + GEOMAlgo_StateCollector aSC; + // + const TopoDS_Edge& aE=TopoDS::Edge(aM(i)); + // + aExp.Init(aE, TopAbs_VERTEX); + for (; aExp.More(); aExp.Next()) { + const TopoDS_Shape& aV=aExp.Current(); + // + bIsConformState=myMSS.Contains(aV); + if (!bIsConformState) { + break;// vertex has non-conformed state + } + else { + aSt=myMSS.FindFromKey(aV); + aSC.AppendState(aSt); + } + } + // + if (!bIsConformState) { + continue; // vertex has non-conformed state,skip edge + } + // + if (BRep_Tool::Degenerated(aE)) { + myMSS.Add(aE, aSt); + continue; + } + // + if (myState==GEOMAlgo_ST_ON) { + Standard_Boolean bCanBeON; + Standard_Real aT1, aT2; + Handle(Geom_Curve) aC; + // + aC=BRep_Tool::Curve(aE, aT1, aT2); + bCanBeON=myClsf->CanBeON(aC); + if(!bCanBeON) { + continue; + } + } + // + InnerPoints(aE, aLP); + if (myErrorStatus) { + return; + } + // + bIsConformState=Standard_True; + aIt.Initialize(aLP); + for (iCnt=0; aIt.More(); aIt.Next(), ++iCnt) { + if (myNbPntsMax) { + if (iCnt > myNbPntsMax) { + break; + } + } + // + const gp_Pnt& aP=aIt.Value(); + // + myClsf->SetPnt(aP); + myClsf->Perform(); + iErr=myClsf->ErrorStatus(); + if (iErr) { + myErrorStatus=40; // point can not be classified + return; + } + // + aSt=myClsf->State(); + // + bIsToBreak=aSC.AppendState(aSt); + if (bIsToBreak) { + break; + } + } + // + aSt=aSC.State(); + // + bIsConformState=GEOMAlgo_SurfaceTools::IsConformState(aSt, myState); + if (myShapeType==TopAbs_EDGE) { + if (bIsConformState) { + myMSS.Add(aE, aSt); + } + } + else if (bIsConformState || aSt==TopAbs_ON) { + myMSS.Add(aE, aSt); + } + } // for (i=1; i<=aNb; ++i) next edge +} +//======================================================================= +//function : ProcessFaces +//purpose : +//======================================================================= + void GEOMAlgo_FinderShapeOn2::ProcessFaces() +{ + myErrorStatus=0; + // + Standard_Boolean bIsConformState, bIsToBreak, bCanBeON; + Standard_Integer i, aNbF, iCnt, iErr; + TopAbs_State aSt; + TopTools_IndexedMapOfShape aM; + TopExp_Explorer aExp; + GEOMAlgo_ListIteratorOfListOfPnt aIt; + // + TopExp::MapShapes(myShape, TopAbs_FACE, aM); + aNbF=aM.Extent(); + for (i=1; i<=aNbF; ++i) { + GEOMAlgo_StateCollector aSC; + GEOMAlgo_ListOfPnt aLP; + // + const TopoDS_Face& aF=TopoDS::Face(aM(i)); + // + if (myState==GEOMAlgo_ST_ON) { + Handle(Geom_Surface) aS; + // + aS=BRep_Tool::Surface(aF); + bCanBeON=myClsf->CanBeON(aS); + if(!bCanBeON) { + continue; + } + } + // + aExp.Init(aF, TopAbs_EDGE); + for (; aExp.More(); aExp.Next()) { + const TopoDS_Shape& aE=aExp.Current(); + bIsConformState=myMSS.Contains(aE); + if (!bIsConformState) { + break;// edge has non-conformed state + } + else { + aSt=myMSS.FindFromKey(aE); + aSC.AppendState(aSt); + } + } + // + if (!bIsConformState) { + continue; // edge has non-conformed state,skip face + } + // + InnerPoints(aF, aLP); + if (myErrorStatus) { + return; + } + // + bIsConformState=Standard_True; + aIt.Initialize(aLP); + for (iCnt=0; aIt.More(); aIt.Next(), ++iCnt) { + if (myNbPntsMax) { + if (iCnt > myNbPntsMax) { + break; + } + } + // + const gp_Pnt& aP=aIt.Value(); + // + myClsf->SetPnt(aP); + myClsf->Perform(); + iErr=myClsf->ErrorStatus(); + if (iErr) { + myErrorStatus=40; // point can not be classified + return; + } + // + aSt=myClsf->State(); + // + bIsToBreak=aSC.AppendState(aSt); + if (bIsToBreak) { + break; + } + } + // + aSt=aSC.State(); + // + bIsConformState=GEOMAlgo_SurfaceTools::IsConformState(aSt, myState); + if (myShapeType==TopAbs_FACE) { + if (bIsConformState) { + myMSS.Add(aF, aSt); + } + } + else if (bIsConformState || aSt==TopAbs_ON) { + myMSS.Add(aF, aSt); + } + }// for (i=1; i<=aNb; ++i) next face +} +//======================================================================= +//function : ProcessSolids +//purpose : +//======================================================================= + void GEOMAlgo_FinderShapeOn2::ProcessSolids() +{ + myErrorStatus=0; + // + Standard_Boolean bIsConformState; + Standard_Integer i, aNbS, j, aNbF; + TopTools_IndexedMapOfShape aM, aMF; + TopAbs_State aSt; + // + TopExp::MapShapes(myShape, TopAbs_SOLID, aM); + aNbS=aM.Extent(); + for (i=1; i<=aNbS; ++i) { + GEOMAlgo_StateCollector aSC; + // + const TopoDS_Shape& aSd=aM(i); + aMF.Clear(); + TopExp::MapShapes(aSd, TopAbs_FACE, aMF); + aNbF=aMF.Extent(); + for (j=1; j<=aNbF; ++j) { + const TopoDS_Shape& aF=aMF(j); + bIsConformState=myMSS.Contains(aF); + if (!bIsConformState) { + break;// face has non-conformed state + } + else { + aSt=myMSS.FindFromKey(aF); + aSC.AppendState(aSt); + } + } + // + if (!bIsConformState) { + continue; // face has non-conformed state,skip solid + } + // + aSt=aSC.State(); + // + bIsConformState=GEOMAlgo_SurfaceTools::IsConformState(aSt, myState); + if (bIsConformState) { + myMSS.Add(aSd, aSt); + } + } +} +// +//======================================================================= +//function : InnerPoints +//purpose : +//======================================================================= + void GEOMAlgo_FinderShapeOn2::InnerPoints(const TopoDS_Face& aF, + GEOMAlgo_ListOfPnt& aLP) +{ + myErrorStatus=0; + // + Standard_Integer j, j1, j2, k, n[4], aNbLinks, aNx, aNb, iCnt;//, aNbMax, *pIds; + TopLoc_Location aLoc; + Handle(Poly_Triangulation) aTRF; + TColStd_MapOfInteger aMBN; + GEOMAlgo_DataMapOfPassKeyInteger aMPKI; + GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyInteger aIt; + gp_Pnt aP, aP1, aP2; + // + aLP.Clear(); + // + aTRF=BRep_Tool::Triangulation(aF, aLoc); + if (aTRF.IsNull()) { + myErrorStatus=20; // no triangulation found + return; + } + // + const gp_Trsf& aTrsf=aLoc.Transformation(); + const Poly_Array1OfTriangle& aTrs=aTRF->Triangles(); + const TColgp_Array1OfPnt& aNodes=aTRF->Nodes(); + // + // map link/nbtriangles + j1=aTrs.Lower(); + j2=aTrs.Upper(); + for (j=j1; j<=j2; ++j) { + const Poly_Triangle& aTr=aTrs(j); + aTr.Get(n[0], n[1], n[2]); + n[3]=n[0]; + for (k=0; k<3; ++k) { + GEOMAlgo_PassKey aPK; + // + aPK.SetIds(n[k], n[k+1]); + if (aMPKI.IsBound(aPK)) { + Standard_Integer& iCntX=aMPKI.ChangeFind(aPK); + ++iCntX; + } + else { + aMPKI.Bind(aPK, 1); + } + } + } + // + // boundary nodes aMBN + aNbLinks=aMPKI.Extent(); + aIt.Initialize(aMPKI); + for (; aIt.More(); aIt.Next()) { + iCnt=aIt.Value(); + if (iCnt==1) { + const GEOMAlgo_PassKey& aPK=aIt.Key(); + //qf + /* + aNbMax=aPK.NbMax(); + pIds=(Standard_Integer*)aPK.Key(); + for (k=1; k<3; ++k) { + aNx=*(pIds+aNbMax-k); + aMBN.Add(aNx); + } + */ + aNx=(Standard_Integer)aPK.Id(1); + aMBN.Add(aNx); + aNx=(Standard_Integer)aPK.Id(2); + aMBN.Add(aNx); + //qt + } + } + // + // inner nodes=all_nodes - boundary_nodes + j1=aNodes.Lower(); + j2=aNodes.Upper(); + for (j=j1; j<=j2; ++j) { + if (!aMBN.Contains(j)) { + aP=aNodes(j).Transformed(aTrsf); + aLP.Append(aP); + } + } + // + aNb=aLP.Extent(); + // + if (!aNb && myNbPntsMin) { + // try to fill it yourself + Standard_Boolean bIsDone; + Standard_Integer aN1, aN2; + Handle(Geom_Surface) aS; + GeomAdaptor_Surface aGAS; + GeomAbs_SurfaceType aType; + // + aS=BRep_Tool::Surface(aF); + aGAS.Load(aS); + aType=aGAS.GetType(); + if (aType==GeomAbs_Plane || aType==GeomAbs_Cylinder) { + // inner links + aNbLinks=aMPKI.Extent(); + aIt.Initialize(aMPKI); + for (; aIt.More(); aIt.Next()) { + iCnt=aIt.Value(); + if (iCnt>1) { + // take the first having occured inner link + // and discretize it + const GEOMAlgo_PassKey& aPK=aIt.Key(); + //qf + /* + aNbMax=aPK.NbMax(); + pIds=(Standard_Integer*)aPK.Key(); + aN1=*(pIds+aNbMax-1); + aN2=*(pIds+aNbMax-2); + */ + // + aN1=(Standard_Integer)aPK.Id(1); + aN2=(Standard_Integer)aPK.Id(2); + //qt + aP1=aNodes(aN1).Transformed(aTrsf); + aP2=aNodes(aN2).Transformed(aTrsf); + // + if (aType==GeomAbs_Cylinder) { + Standard_Real aTolSM; + gp_Cylinder aCyl; + // + aTolSM=1.523e-6;//~1.-cos(0.1 deg) + aCyl=aGAS.Cylinder(); + if (!GEOMAlgo_SurfaceTools::IsCoaxial(aP1, aP2, aCyl, aTolSM)) { + continue; + } + } + // + BRepLib_MakeEdge aBME(aP1, aP2); + bIsDone=aBME.IsDone(); + if (!bIsDone) { + myErrorStatus=30; //can not obtain the line fron the link + return; + } + // + const TopoDS_Shape& aSx=aBME.Shape(); + const TopoDS_Edge& aE=TopoDS::Edge(aSx); + // + InnerPoints(aE, myNbPntsMin, aLP); + break; + }// if (iCnt>1) + }// for (; aIt.More(); aIt.Next()) + }// if (aType==GeomAbs_Plane || aType==GeomAbs_Cylinder) + }// if (!aNb && myNbPntsMin) { +} +//======================================================================= +//function : InnerPoints +//purpose : +//======================================================================= + void GEOMAlgo_FinderShapeOn2::InnerPoints(const TopoDS_Edge& aE, + GEOMAlgo_ListOfPnt& aLP) +{ + myErrorStatus=0; + // + Standard_Integer j, aNbNodes, aIndex, aNb; + Handle(Poly_PolygonOnTriangulation) aPTE; + Handle(Poly_Triangulation) aTRE; + TopLoc_Location aLoc; + gp_Pnt aP; + // + aLP.Clear(); + BRep_Tool::PolygonOnTriangulation(aE, aPTE, aTRE, aLoc); + if (aTRE.IsNull() || aPTE.IsNull()) { + myErrorStatus=20; // no triangulation found + return; + } + // + const gp_Trsf& aTrsf=aLoc.Transformation(); + const TColgp_Array1OfPnt& aNodes=aTRE->Nodes(); + // + aNbNodes=aPTE->NbNodes(); + const TColStd_Array1OfInteger& aInds=aPTE->Nodes(); + for (j=2; jD0(aT, aP); + aLP.Append(aP); + } +} + +// +// myErrorStatus : +// +// 10 -myClsf=NULL +// 11 -myShape=NULL +// 12 -unallowed type of subshapes +// 13 -unallowed state +// 15 -unallowed surface type +// 20- no triangulation found +// 30- can not obtain the line from the link +// 40- point can not be classified +// 41- invalid data for classifier + diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.hxx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.hxx new file mode 100644 index 000000000..1d467a51e --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.hxx @@ -0,0 +1,187 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_FinderShapeOn2_HeaderFile +#define _GEOMAlgo_FinderShapeOn2_HeaderFile + +#ifndef _TopAbs_ShapeEnum_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_State_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _Handle_GEOMAlgo_Clsf_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_IndexedDataMapOfShapeState_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_ShapeAlgo_HeaderFile +#include +#endif +class GEOMAlgo_Clsf; +class TopTools_ListOfShape; +class TopoDS_Face; +class GEOMAlgo_ListOfPnt; +class TopoDS_Edge; +class GEOMAlgo_IndexedDataMapOfShapeState; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class GEOMAlgo_FinderShapeOn2 : public GEOMAlgo_ShapeAlgo { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT GEOMAlgo_FinderShapeOn2(); +Standard_EXPORT virtual ~GEOMAlgo_FinderShapeOn2(); + + +Standard_EXPORT void SetClsf(const Handle(GEOMAlgo_Clsf)& aClsf) ; + + +Standard_EXPORT const Handle_GEOMAlgo_Clsf& Clsf() const; + + +Standard_EXPORT void SetShapeType(const TopAbs_ShapeEnum aST) ; + + +Standard_EXPORT TopAbs_ShapeEnum ShapeType() const; + + +Standard_EXPORT void SetState(const GEOMAlgo_State aSF) ; + + +Standard_EXPORT GEOMAlgo_State State() const; + + +Standard_EXPORT void SetNbPntsMin(const Standard_Integer aNb) ; + + +Standard_EXPORT Standard_Integer NbPntsMin() const; + + +Standard_EXPORT void SetNbPntsMax(const Standard_Integer aNb) ; + + +Standard_EXPORT Standard_Integer NbPntsMax() const; + + +Standard_EXPORT virtual void Perform() ; + + +Standard_EXPORT const TopTools_ListOfShape& Shapes() const; + + +Standard_EXPORT const GEOMAlgo_IndexedDataMapOfShapeState& MSS() const; + + + + + +protected: + + // Methods PROTECTED + // + + +Standard_EXPORT virtual void CheckData() ; + + +Standard_EXPORT void ProcessVertices() ; + + +Standard_EXPORT void ProcessEdges() ; + + +Standard_EXPORT void ProcessFaces() ; + + +Standard_EXPORT void ProcessSolids() ; + + +Standard_EXPORT void InnerPoints(const TopoDS_Face& aF,GEOMAlgo_ListOfPnt& aLP) ; + + +Standard_EXPORT void InnerPoints(const TopoDS_Edge& aE,GEOMAlgo_ListOfPnt& aLP) ; + + +Standard_EXPORT void InnerPoints(const TopoDS_Edge& aE,const Standard_Integer aNbPnts,GEOMAlgo_ListOfPnt& aLP) ; + + + // Fields PROTECTED + // +TopAbs_ShapeEnum myShapeType; +GEOMAlgo_State myState; +Standard_Integer myNbPntsMin; +Standard_Integer myNbPntsMax; +Handle_GEOMAlgo_Clsf myClsf; +TopTools_ListOfShape myLS; +GEOMAlgo_IndexedDataMapOfShapeState myMSS; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.ixx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.ixx new file mode 100644 index 000000000..9e17577cf --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.ixx @@ -0,0 +1,24 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.jxx b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.jxx new file mode 100644 index 000000000..62172c460 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_FinderShapeOn2.jxx @@ -0,0 +1,40 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_Clsf_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _TopoDS_Face_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_ListOfPnt_HeaderFile +#include +#endif +#ifndef _TopoDS_Edge_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_IndexedDataMapOfShapeState_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_FinderShapeOn2_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_HAlgo.cdl b/src/GEOMAlgo/GEOMAlgo_HAlgo.cdl new file mode 100644 index 000000000..0da634889 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_HAlgo.cdl @@ -0,0 +1,57 @@ +-- Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +-- +-- File: GEOMAlgo_Algo.cdl +-- Created: Sat Dec 04 12:37:56 2004 +-- Author: Peter KURNEV +-- + + +deferred class HAlgo from GEOMAlgo + inherits TShared from MMgt + ---Purpose: + +--uses +--raises + +is + Initialize + returns mutable HAlgo from GEOMAlgo; + ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_HAlgo();" + + Perform(me:mutable) + is deferred; + + CheckData(me:mutable) + is virtual; + + CheckResult(me:mutable) + is virtual; + + ErrorStatus (me) + returns Integer from Standard; + + WarningStatus (me) + returns Integer from Standard; + +fields + myErrorStatus : Integer from Standard is protected; + myWarningStatus : Integer from Standard is protected; + +end HAlgo; diff --git a/src/GEOMAlgo/GEOMAlgo_HAlgo.cxx b/src/GEOMAlgo/GEOMAlgo_HAlgo.cxx new file mode 100644 index 000000000..807929c73 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_HAlgo.cxx @@ -0,0 +1,78 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: GEOMAlgo_Algo.cxx +// Created: Sat Dec 04 12:39:47 2004 +// Author: Peter KURNEV +// + + +#include + +//======================================================================= +// function: +// purpose: +//======================================================================= + GEOMAlgo_HAlgo::GEOMAlgo_HAlgo() +: + myErrorStatus(1), + myWarningStatus(0) +{} +//======================================================================= +// function: ~ +// purpose: +//======================================================================= + GEOMAlgo_HAlgo::~GEOMAlgo_HAlgo() +{ +} +//======================================================================= +// function: CheckData +// purpose: +//======================================================================= + void GEOMAlgo_HAlgo::CheckData() +{ + myErrorStatus=0; +} +//======================================================================= +// function: CheckResult +// purpose: +//======================================================================= + void GEOMAlgo_HAlgo::CheckResult() +{ + myErrorStatus=0; +} +//======================================================================= +// function: ErrorStatus +// purpose: +//======================================================================= + Standard_Integer GEOMAlgo_HAlgo::ErrorStatus()const +{ + return myErrorStatus; +} +//======================================================================= +// function: WarningStatus +// purpose: +//======================================================================= + Standard_Integer GEOMAlgo_HAlgo::WarningStatus()const +{ + return myWarningStatus; +} +// myErrorStatus +// +// 1 - object is just initialized diff --git a/src/GEOMAlgo/GEOMAlgo_HAlgo.hxx b/src/GEOMAlgo/GEOMAlgo_HAlgo.hxx new file mode 100644 index 000000000..0f25b53de --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_HAlgo.hxx @@ -0,0 +1,105 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_HAlgo_HeaderFile +#define _GEOMAlgo_HAlgo_HeaderFile + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Handle_GEOMAlgo_HAlgo_HeaderFile +#include +#endif + +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _MMgt_TShared_HeaderFile +#include +#endif + + + +class GEOMAlgo_HAlgo : public MMgt_TShared { + +public: + // Methods PUBLIC + // + + +Standard_EXPORT virtual void Perform() = 0; + + +Standard_EXPORT virtual void CheckData() ; + + +Standard_EXPORT virtual void CheckResult() ; + + +Standard_EXPORT Standard_Integer ErrorStatus() const; + + +Standard_EXPORT Standard_Integer WarningStatus() const; +//Standard_EXPORT ~GEOMAlgo_HAlgo(); + + + + + // Type management + // + Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + +protected: + + // Methods PROTECTED + // + + +Standard_EXPORT GEOMAlgo_HAlgo(); +Standard_EXPORT virtual ~GEOMAlgo_HAlgo(); + + + // Fields PROTECTED + // +Standard_Integer myErrorStatus; +Standard_Integer myWarningStatus; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_HAlgo.ixx b/src/GEOMAlgo/GEOMAlgo_HAlgo.ixx new file mode 100644 index 000000000..96a32edb8 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_HAlgo.ixx @@ -0,0 +1,72 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_TypeMismatch_HeaderFile +#include +#endif + +//GEOMAlgo_HAlgo::~GEOMAlgo_HAlgo() {} + + + +Standard_EXPORT Handle_Standard_Type& GEOMAlgo_HAlgo_Type_() +{ + + static Handle_Standard_Type aType1 = STANDARD_TYPE(MMgt_TShared); + static Handle_Standard_Type aType2 = STANDARD_TYPE(Standard_Transient); + + + static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,NULL}; + static Handle_Standard_Type _aType = new Standard_Type("GEOMAlgo_HAlgo", + sizeof(GEOMAlgo_HAlgo), + 1, + (Standard_Address)_Ancestors, + (Standard_Address)NULL); + + return _aType; +} + + +// DownCast method +// allow safe downcasting +// +const Handle(GEOMAlgo_HAlgo) Handle(GEOMAlgo_HAlgo)::DownCast(const Handle(Standard_Transient)& AnObject) +{ + Handle(GEOMAlgo_HAlgo) _anOtherObject; + + if (!AnObject.IsNull()) { + if (AnObject->IsKind(STANDARD_TYPE(GEOMAlgo_HAlgo))) { + _anOtherObject = Handle(GEOMAlgo_HAlgo)((Handle(GEOMAlgo_HAlgo)&)AnObject); + } + } + + return _anOtherObject ; +} +const Handle(Standard_Type)& GEOMAlgo_HAlgo::DynamicType() const +{ + return STANDARD_TYPE(GEOMAlgo_HAlgo) ; +} +//Standard_Boolean GEOMAlgo_HAlgo::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(GEOMAlgo_HAlgo) == AType || MMgt_TShared::IsKind(AType)); +//} +//Handle_GEOMAlgo_HAlgo::~Handle_GEOMAlgo_HAlgo() {} + diff --git a/src/GEOMAlgo/GEOMAlgo_HAlgo.jxx b/src/GEOMAlgo/GEOMAlgo_HAlgo.jxx new file mode 100644 index 000000000..e6d20409d --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_HAlgo.jxx @@ -0,0 +1,22 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_HAlgo_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_PWireEdgeSet.hxx b/src/GEOMAlgo/GEOMAlgo_PWireEdgeSet.hxx new file mode 100644 index 000000000..1340244b4 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_PWireEdgeSet.hxx @@ -0,0 +1,27 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_PWireEdgeSet_HeaderFile +#define _GEOMAlgo_PWireEdgeSet_HeaderFile + +class GEOMAlgo_WireEdgeSet; + +typedef GEOMAlgo_WireEdgeSet* GEOMAlgo_PWireEdgeSet; + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyShapeMapHasher.cdl b/src/GEOMAlgo/GEOMAlgo_PassKeyShapeMapHasher.cdl new file mode 100644 index 000000000..393b7e78f --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_PassKeyShapeMapHasher.cdl @@ -0,0 +1,47 @@ +-- Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +-- +-- File: GEOMAlgo_PassKeyMapHasher.cdl +-- Created: +-- Author: Peter KURNEV +-- + + +class PassKeyShapeMapHasher from GEOMAlgo + + ---Purpose: + +uses + PassKeyShape from GEOMAlgo + +--raises + +is + HashCode(myclass; + aPKey : PassKeyShape from GEOMAlgo; + Upper : Integer from Standard) + returns Integer from Standard; + + + IsEqual(myclass; + aPKey1 : PassKeyShape from GEOMAlgo; + aPKey2 : PassKeyShape from GEOMAlgo) + returns Boolean from Standard; + +end PassKeyShapeMapHasher; diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyShapeMapHasher.cxx b/src/GEOMAlgo/GEOMAlgo_PassKeyShapeMapHasher.cxx new file mode 100644 index 000000000..70478af43 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_PassKeyShapeMapHasher.cxx @@ -0,0 +1,45 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: GEOMAlgo_PassKeyMapHasher.cxx +// Created: +// Author: Peter KURNEV +// + + +#include + +//======================================================================= +//function : HashCode +//purpose : +//======================================================================= + Standard_Integer GEOMAlgo_PassKeyShapeMapHasher::HashCode(const GEOMAlgo_PassKeyShape& aPK, + const Standard_Integer Upper) +{ + return aPK.HashCode(Upper); +} +//======================================================================= +//function :IsEqual +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_PassKeyShapeMapHasher::IsEqual(const GEOMAlgo_PassKeyShape& aPK1, + const GEOMAlgo_PassKeyShape& aPK2) +{ + return aPK1.IsEqual(aPK2); +} diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyShapeMapHasher.hxx b/src/GEOMAlgo/GEOMAlgo_PassKeyShapeMapHasher.hxx new file mode 100644 index 000000000..53caf6a70 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_PassKeyShapeMapHasher.hxx @@ -0,0 +1,99 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_PassKeyShapeMapHasher_HeaderFile +#define _GEOMAlgo_PassKeyShapeMapHasher_HeaderFile + +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class GEOMAlgo_PassKeyShape; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class GEOMAlgo_PassKeyShapeMapHasher { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT static Standard_Integer HashCode(const GEOMAlgo_PassKeyShape& aPKey,const Standard_Integer Upper) ; + + +Standard_EXPORT static Standard_Boolean IsEqual(const GEOMAlgo_PassKeyShape& aPKey1,const GEOMAlgo_PassKeyShape& aPKey2) ; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyShapeMapHasher.ixx b/src/GEOMAlgo/GEOMAlgo_PassKeyShapeMapHasher.ixx new file mode 100644 index 000000000..ae17ce089 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_PassKeyShapeMapHasher.ixx @@ -0,0 +1,24 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_PassKeyShapeMapHasher.jxx b/src/GEOMAlgo/GEOMAlgo_PassKeyShapeMapHasher.jxx new file mode 100644 index 000000000..99130d0ba --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_PassKeyShapeMapHasher.jxx @@ -0,0 +1,25 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_PassKeyShape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_PassKeyShapeMapHasher_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeSet.cdl b/src/GEOMAlgo/GEOMAlgo_ShapeSet.cdl new file mode 100755 index 000000000..49ee9295c --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_ShapeSet.cdl @@ -0,0 +1,78 @@ +-- Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +-- +-- File: GEOMAlgo_ShapeSet.cdl +-- Created: +-- Author: Peter KURNEV + +class ShapeSet from GEOMAlgo + + ---Purpose: Implementation some formal + -- opereations with Set of shapes + +uses + Shape from TopoDS, + MapOfOrientedShape from TopTools, + ListOfShape from TopTools, + ShapeEnum from TopAbs + +--raises + +is + Create + ---Purpose: Empty constructor + returns ShapeSet from GEOMAlgo; + + Add(me:out; + theLS:ListOfShape from TopTools); + ---Purpose: Adds shapes from the list theLS to the Set + + Add(me:out; + theShape:Shape from TopoDS); + ---Purpose: Adds shape theShape to the Set + + Add(me:out; + theShape:Shape from TopoDS; + theType :ShapeEnum from TopAbs); + ---Purpose: Adds sub-shapes of shape theShape, + -- that have type theType to the Set + + Subtract(me:out; + theSet:ShapeSet from GEOMAlgo); + ---Purpose: Removes shapes of theSet from the Set + + Clear(me:out); + ---Purpose: Clears internal fields + + Contains(me; + theSet:ShapeSet from GEOMAlgo) + ---Purpose: Returns True if the Set contains + -- all shapes of theSet + returns Boolean from Standard; + + GetSet(me) + ---Purpose: Returns the Set + returns ListOfShape from TopTools; + ---C++: return const & + +fields + myMap : MapOfOrientedShape from TopTools is protected; + myList : ListOfShape from TopTools is protected; + +end ShapeSet; diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeSet.cxx b/src/GEOMAlgo/GEOMAlgo_ShapeSet.cxx new file mode 100755 index 000000000..800e3eb3e --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_ShapeSet.cxx @@ -0,0 +1,167 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: GEOMAlgo_ShapeSet.cxx +// Created: +// Author: Peter KURNEV + + + +#include + +#include + +#include +#include + +//======================================================================= +//function : +//purpose : +//======================================================================= + GEOMAlgo_ShapeSet::GEOMAlgo_ShapeSet() +{ +} +//======================================================================= +//function : Clear +//purpose : +//======================================================================= + void GEOMAlgo_ShapeSet::Clear() +{ + myMap.Clear(); + myList.Clear(); +} +//======================================================================= +//function : Add +//purpose : +//======================================================================= + void GEOMAlgo_ShapeSet::Add(const TopoDS_Shape& theShape) +{ + if (myMap.Add(theShape)) { + myList.Append(theShape); + } +} +//======================================================================= +//function : Add +//purpose : +//======================================================================= + void GEOMAlgo_ShapeSet::Add(const TopoDS_Shape& theShape, + const TopAbs_ShapeEnum theType) +{ + TopExp_Explorer aExp; + // + aExp.Init(theShape, theType); + for (; aExp.More(); aExp.Next()) { + const TopoDS_Shape& aS=aExp.Current(); + if (myMap.Add(aS)) { + myList.Append(aS); + } + } +} +//======================================================================= +//function : Add +//purpose : +//======================================================================= + void GEOMAlgo_ShapeSet::Add(const TopTools_ListOfShape& theLS) +{ + TopTools_ListIteratorOfListOfShape aIt; + // + aIt.Initialize(theLS); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aS=aIt.Value(); + if (myMap.Add(aS)) { + myList.Append(aS); + } + } +} +//======================================================================= +//function :GetSet +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_ShapeSet::GetSet()const +{ + /* + TopTools_ListOfShape *pL; + TopTools_MapIteratorOfMapOfOrientedShape aIt; + // + pL=(TopTools_ListOfShape *)&myList; + pL->Clear(); + aIt.Initialize(myMap); + for (; aIt.More(); aIt.Next()) { + pL->Append(aIt.Key()); + } + */ + return myList; +} +//======================================================================= +//function : Contains +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_ShapeSet::Contains(const GEOMAlgo_ShapeSet& theOther)const +{ + Standard_Boolean bRet; + TopAbs_Orientation aOr; + TopTools_ListIteratorOfListOfShape aIt; + // + bRet=Standard_True; + const TopTools_ListOfShape& aLS=theOther.GetSet(); + aIt.Initialize(aLS); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aF=aIt.Value(); + aOr=aF.Orientation(); + if (aOr==TopAbs_FORWARD || aOr==TopAbs_REVERSED) { + bRet=myMap.Contains(aF); + if (!bRet) { + break; + } + } + } + return bRet; +} +//======================================================================= +//function : Subtract +//purpose : +//======================================================================= + void GEOMAlgo_ShapeSet::Subtract(const GEOMAlgo_ShapeSet& theOther) +{ + /* + TopTools_MapIteratorOfMapOfOrientedShape aIt; + // + aIt.Initialize(theOther.myMap); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aS=aIt.Key(); + myMap.Remove(aS); + } + */ + // + TopTools_ListIteratorOfListOfShape aIt; + TopTools_ListOfShape aLS; + // + myMap.Clear(); + aIt.Initialize(myList); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aS=aIt.Value(); + if (!theOther.myMap.Contains(aS)) { + if(myMap.Add(aS)){ + aLS.Append(aS); + } + } + } + // + myList=aLS; +} diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeSet.hxx b/src/GEOMAlgo/GEOMAlgo_ShapeSet.hxx new file mode 100644 index 000000000..98fb46415 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_ShapeSet.hxx @@ -0,0 +1,129 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_ShapeSet_HeaderFile +#define _GEOMAlgo_ShapeSet_HeaderFile + +#ifndef _TopTools_MapOfOrientedShape_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _TopAbs_ShapeEnum_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class TopTools_ListOfShape; +class TopoDS_Shape; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + +//! Implementation some formal
+//! opereations with Set of shapes
+class GEOMAlgo_ShapeSet { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + +//! Empty constructor
+Standard_EXPORT GEOMAlgo_ShapeSet(); + +//! Adds shapes from the list theLS to the Set
+Standard_EXPORT void Add(const TopTools_ListOfShape& theLS) ; + +//! Adds shape theShape to the Set
+Standard_EXPORT void Add(const TopoDS_Shape& theShape) ; + +//! Adds sub-shapes of shape theShape,
+//! that have type theType to the Set
+Standard_EXPORT void Add(const TopoDS_Shape& theShape,const TopAbs_ShapeEnum theType) ; + +//! Removes shapes of theSet from the Set
+Standard_EXPORT void Subtract(const GEOMAlgo_ShapeSet& theSet) ; + +//! Clears internal fields
+Standard_EXPORT void Clear() ; + +//! Returns True if the Set contains
+//! all shapes of theSet
+Standard_EXPORT Standard_Boolean Contains(const GEOMAlgo_ShapeSet& theSet) const; + +//! Returns the Set
+Standard_EXPORT const TopTools_ListOfShape& GetSet() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // +TopTools_MapOfOrientedShape myMap; +TopTools_ListOfShape myList; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeSet.ixx b/src/GEOMAlgo/GEOMAlgo_ShapeSet.ixx new file mode 100644 index 000000000..445af6936 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_ShapeSet.ixx @@ -0,0 +1,24 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_ShapeSet.jxx b/src/GEOMAlgo/GEOMAlgo_ShapeSet.jxx new file mode 100644 index 000000000..b76eeb906 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_ShapeSet.jxx @@ -0,0 +1,28 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_ShapeSet_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_Splitter.cdl b/src/GEOMAlgo/GEOMAlgo_Splitter.cdl new file mode 100755 index 000000000..a67c8e222 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Splitter.cdl @@ -0,0 +1,93 @@ +-- Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +-- +-- File: GEOMAlgo_Splitter.cdl +-- Created: +-- Author: Peter KURNEV +-- +-- Copyright: + +class Splitter from GEOMAlgo + inherits Builder from GEOMAlgo + + ---Purpose: Implementation of Gluing Operation Algorithm (GA) + +uses + + ShapeEnum from TopAbs, + Shape from TopoDS, + ListOfShape from TopTools, + MapOfShape from TopTools + +--raises + +is + + Create + ---Purpose: Empty constructor + returns Splitter from GEOMAlgo; + ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_Splitter();" + + Clear(me:out) + ---Purpose: Clears internal fields and arguments + is redefined; + + AddTool (me:out; + theShape: Shape from TopoDS) + ---Purpose: Adds Tool argument theShape of the operation + is virtual; + + Tools(me) + ---Purpose: Returns the arguments of the operation + returns ListOfShape from TopTools; + ---C++: return const & + + SetLimit(me:out; + aLimit:ShapeEnum from TopAbs); + + Limit(me) + returns ShapeEnum from TopAbs; + -- + -- Protected methods + -- + BuildResult(me:out; + theType: ShapeEnum from TopAbs) + ---Purpose: Build the resulting shapes of type theType + is redefined protected; + + PostTreat(me:out) + ---Purpose: Provides post-tratment actions + is redefined protected; + + -- ===================================================== + -- + -- Debug methods + -- + AddToolCompound (me:out; + theShape: Shape from TopoDS); + ---Purpose: Adds Tool arguments of the operation as + -- shapes of upper level of container shape theShape + -- ===================================================== + +fields + myTools : ListOfShape from TopTools is protected; + myMapTools : MapOfShape from TopTools is protected; + myLimit : ShapeEnum from TopAbs is protected; +end Splitter; + diff --git a/src/GEOMAlgo/GEOMAlgo_Splitter.cxx b/src/GEOMAlgo/GEOMAlgo_Splitter.cxx new file mode 100755 index 000000000..7ea27c32f --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Splitter.cxx @@ -0,0 +1,194 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: GEOMAlgo_Splitter.cxx +// Created: +// Author: Peter KURNEV +// + +#include + +#include + +#include +#include +#include + +#include + +#include +#include + +#include +#include +#include +#include + +#include + +#include + +//======================================================================= +//function : +//purpose : +//======================================================================= + GEOMAlgo_Splitter::GEOMAlgo_Splitter() +: + GEOMAlgo_Builder() +{ + myLimit=TopAbs_SHAPE; +} +//======================================================================= +//function : ~ +//purpose : +//======================================================================= + GEOMAlgo_Splitter::~GEOMAlgo_Splitter() +{ +} +//======================================================================= +//function : AddToolCompound +//purpose : +//======================================================================= + void GEOMAlgo_Splitter::AddToolCompound(const TopoDS_Shape& theShape) +{ + TopoDS_Iterator aIt; + // + aIt.Initialize(theShape); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aS=aIt.Value(); + AddTool(aS); + } +} +//======================================================================= +//function : AddTool +//purpose : +//======================================================================= + void GEOMAlgo_Splitter::AddTool(const TopoDS_Shape& theShape) +{ + if (myMapTools.Add(theShape)) { + myTools.Append(theShape); + // + AddShape(theShape); + } +} +//======================================================================= +//function : Tools +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_Splitter::Tools()const +{ + return myTools; +} +//======================================================================= +//function : SetLimit +//purpose : +//======================================================================= + void GEOMAlgo_Splitter::SetLimit(const TopAbs_ShapeEnum aLimit) +{ + myLimit=aLimit; +} +//======================================================================= +//function : Limit +//purpose : +//======================================================================= + TopAbs_ShapeEnum GEOMAlgo_Splitter::Limit()const +{ + return myLimit; +} +//======================================================================= +//function : Clear +//purpose : +//======================================================================= + void GEOMAlgo_Splitter::Clear() +{ + myTools.Clear(); + myMapTools.Clear(); + myLimit=TopAbs_SHAPE; + GEOMAlgo_Builder::Clear(); +} +//======================================================================= +//function : BuildResult +//purpose : +//======================================================================= + void GEOMAlgo_Splitter::BuildResult(const TopAbs_ShapeEnum theType) +{ + myErrorStatus=0; + // + TopAbs_ShapeEnum aType; + BRep_Builder aBB; + TopTools_MapOfShape aM; + TopTools_ListIteratorOfListOfShape aIt, aItIm; + // + aIt.Initialize(myShapes); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aS=aIt.Value(); + aType=aS.ShapeType(); + if (aType==theType && !myMapTools.Contains(aS)) { + if (myImages.HasImage(aS)) { + const TopTools_ListOfShape& aLSIm=myImages.Image(aS); + aItIm.Initialize(aLSIm); + for (; aItIm.More(); aItIm.Next()) { + const TopoDS_Shape& aSIm=aItIm.Value(); + if (aM.Add(aSIm)) { + aBB.Add(myShape, aSIm); + } + } + } + else { + if (aM.Add(aS)) { + aBB.Add(myShape, aS); + } + } + } + } +} +//======================================================================= +//function : PostTreat +//purpose : +//======================================================================= + void GEOMAlgo_Splitter::PostTreat() +{ + if (myLimit!=TopAbs_SHAPE) { + Standard_Integer i, aNbS; + BRep_Builder aBB; + TopoDS_Compound aC; + TopTools_IndexedMapOfShape aM; + // + aBB.MakeCompound(aC); + // + TopExp::MapShapes(myShape, myLimit, aM); + aNbS=aM.Extent(); + for (i=1; i<=aNbS; ++i) { + const TopoDS_Shape& aS=aM(i); + aBB.Add(aC, aS); + } + myShape=aC; + } + // + GEOMAlgo_Builder::PostTreat(); + // +} +// +// myErrorStatus +// +// 0 - Ok +// 1 - The object is just initialized +// 2 - DSFiller is failed +// 10 - No shapes to process +// 30 - SolidBuilder failed diff --git a/src/GEOMAlgo/GEOMAlgo_Splitter.hxx b/src/GEOMAlgo/GEOMAlgo_Splitter.hxx new file mode 100644 index 000000000..6ef1e92ac --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Splitter.hxx @@ -0,0 +1,133 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_Splitter_HeaderFile +#define _GEOMAlgo_Splitter_HeaderFile + +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _TopTools_MapOfShape_HeaderFile +#include +#endif +#ifndef _TopAbs_ShapeEnum_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_Builder_HeaderFile +#include +#endif +class TopoDS_Shape; +class TopTools_ListOfShape; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + +//! Implementation of Gluing Operation Algorithm (GA)
+class GEOMAlgo_Splitter : public GEOMAlgo_Builder { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + +//! Empty constructor
+Standard_EXPORT GEOMAlgo_Splitter(); +Standard_EXPORT virtual ~GEOMAlgo_Splitter(); + +//! Clears internal fields and arguments
+Standard_EXPORT virtual void Clear() ; + +//! Adds Tool argument theShape of the operation
+Standard_EXPORT virtual void AddTool(const TopoDS_Shape& theShape) ; + +//! Returns the arguments of the operation
+Standard_EXPORT const TopTools_ListOfShape& Tools() const; + + +Standard_EXPORT void SetLimit(const TopAbs_ShapeEnum aLimit) ; + + +Standard_EXPORT TopAbs_ShapeEnum Limit() const; + +//! Adds Tool arguments of the operation as
+//! shapes of upper level of container shape theShape
+//! =====================================================
+Standard_EXPORT void AddToolCompound(const TopoDS_Shape& theShape) ; + + + + + +protected: + + // Methods PROTECTED + // + +//! Build the resulting shapes of type theType
+Standard_EXPORT virtual void BuildResult(const TopAbs_ShapeEnum theType) ; + +//! Provides post-tratment actions
+Standard_EXPORT virtual void PostTreat() ; + + + // Fields PROTECTED + // +TopTools_ListOfShape myTools; +TopTools_MapOfShape myMapTools; +TopAbs_ShapeEnum myLimit; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_Splitter.ixx b/src/GEOMAlgo/GEOMAlgo_Splitter.ixx new file mode 100644 index 000000000..ed917a680 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Splitter.ixx @@ -0,0 +1,24 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_Splitter.jxx b/src/GEOMAlgo/GEOMAlgo_Splitter.jxx new file mode 100644 index 000000000..a15ed2864 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Splitter.jxx @@ -0,0 +1,28 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_Splitter_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_Tools3D.cdl b/src/GEOMAlgo/GEOMAlgo_Tools3D.cdl new file mode 100755 index 000000000..e781a9439 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Tools3D.cdl @@ -0,0 +1,236 @@ +-- Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +-- +-- File: GEOMAlgo_Tools3D.cdl +-- Created: +-- Author: Peter KURNEV + +class Tools3D from GEOMAlgo + + ---Purpose: Auxiliary tools for Algorithms + +uses + State from TopAbs, + ShapeEnum from TopAbs, + Pnt from gp, + Shape from TopoDS, + Vertex from TopoDS, + Edge from TopoDS, + Face from TopoDS, + Solid from TopoDS, + + ListOfShape from TopTools, + IndexedMapOfShape from TopTools, + IndexedDataMapOfShapeListOfShape from TopTools, + Context from IntTools, + ListOfCoupleOfShape from NMTTools + +--raises + +is + IsSplitToReverse(myclass; + theSplit : Shape from TopoDS; + theShape : Shape from TopoDS; + theContext:out Context from IntTools) + ---Purpose: Returns True if the shape theSplit has opposite + -- direction than theShape + -- theContext - cashed geometrical tools + returns Boolean from Standard; + + IsSplitToReverse(myclass; + theSplit : Face from TopoDS; + theShape : Face from TopoDS; + theContext:out Context from IntTools) + ---Purpose: Returns True if normal direction of the face + -- theShape is not the same as for the face + -- theSplit + -- theContext - cashed geometrical tools + returns Boolean from Standard; + + IsSplitToReverse(myclass; + theEdge : Edge from TopoDS; + theSplit : Edge from TopoDS; + theContext:out Context from IntTools) + ---Purpose: Returns True if tangent direction of the edge + -- theEdge is not the same as for the edge + -- theSplit + -- theContext - cashed geometrical tools + returns Boolean from Standard; + + Sense (myclass; + theF1: Face from TopoDS; + theF2: Face from TopoDS) + ---Purpose: For the couple of faces theF1, theF2 + -- computes sense value + -- Returns 0 if the faces are not sensible + -- Returns 1 if the faces have same sense + -- Returns 2 if the faces have opposite sense + returns Integer from Standard; + + CopyFace(myclass; + theF1: Face from TopoDS; + theF2:out Face from TopoDS); + ---Purpose: Makes new face theF2 from surface and wires + -- of the face theF1 + + MakeContainer(myclass; + theType:ShapeEnum from TopAbs; + theShape:out Shape from TopoDS); + ---Purpose: Makes empty shape theShape of the type theType + + + MakeConnexityBlock(myclass; + theLS :ListOfShape from TopTools; + theMapAvoid:IndexedMapOfShape from TopTools; + theLSCB :out ListOfShape from TopTools); + ---Purpose: For the list of faces theLS build block + -- theLSCB in terms of connexity by edges + -- theMapAvoid - set of edges to avoid for + -- the treatment + + ComputeStateByOnePoint(myclass; + theShape :Shape from TopoDS; + theSolid :Solid from TopoDS; + theTol :Real from Standard; + theContext:out Context from IntTools) + ---Purpose: Computes the 3-D state of the shape theShape + -- toward solid theSolid. + -- theTol - value of precision of computation + -- theContext- cahed geometrical tools + -- Returns 3-D state. + returns State from TopAbs; + + ComputeState(myclass; + thePoint :Pnt from gp; + theSolid :Solid from TopoDS; + theTol :Real from Standard; + theContext:out Context from IntTools) + ---Purpose: Computes the 3-D state of the point thePoint + -- toward solid theSolid. + -- theTol - value of precision of computation + -- theContext- cahed geometrical tools + -- Returns 3-D state. + returns State from TopAbs; + + ComputeState(myclass; + theVertex:Vertex from TopoDS; + theSolid :Solid from TopoDS; + theTol :Real from Standard; + theContext:out Context from IntTools) + ---Purpose: Computes the 3-D state of the vertex theVertex + -- toward solid theSolid. + -- theTol - value of precision of computation + -- theContext- cahed geometrical tools + -- Returns 3-D state. + returns State from TopAbs; + + ComputeState(myclass; + theEdge :Edge from TopoDS; + theSolid :Solid from TopoDS; + theTol :Real from Standard; + theContext:out Context from IntTools) + ---Purpose: Computes the 3-D state of the edge theEdge + -- toward solid theSolid. + -- theTol - value of precision of computation + -- theContext- cahed geometrical tools + -- Returns 3-D state. + returns State from TopAbs; + + ComputeState(myclass; + theFace :Face from TopoDS; + theSolid :Solid from TopoDS; + theTol :Real from Standard; + theBounds:IndexedMapOfShape from TopTools; + theContext:out Context from IntTools) + ---Purpose: Computes the 3-D state of the face theFace + -- toward solid theSolid. + -- theTol - value of precision of computation + -- theBounds - set of edges of theFace to avoid + -- theContext- cahed geometrical tools + -- Returns 3-D state. + returns State from TopAbs; + + IsInternalFace(myclass; + theFace :Face from TopoDS; + theEdge :Edge from TopoDS; + theFace1 :Face from TopoDS; + theFace2 :Face from TopoDS) + ---Purpose: Returns True if the face theFace is inside of the + -- couple of faces theFace1, theFace2. + -- The faces theFace, theFace1, theFace2 must + -- share the edge theEdge + returns Boolean from Standard; + + IsInternalFace(myclass; + theFace :Face from TopoDS; + theEdge :Edge from TopoDS; + theLF :ListOfShape from TopTools) + ---Purpose: Returns True if the face theFace is inside of the + -- appropriate couple of faces (from the set theLF) . + -- The faces of the set theLF and theFace must + -- share the edge theEdge + returns Boolean from Standard; + + IsInternalFace(myclass; + theFace :Face from TopoDS; + theSolid :Solid from TopoDS; + theMEF :IndexedDataMapOfShapeListOfShape from TopTools; + theTol :Real from Standard; + theContext:out Context from IntTools) + ---Purpose: Returns True if the face theFace is inside the + -- solid theSolid. + -- theMEF - Map Edge/Faces for theSolid + -- theTol - value of precision of computation + -- theContext- cahed geometrical tools + returns Boolean from Standard; + + + GetFaceOff(myclass; + theEdge :Edge from TopoDS; + theFace :Face from TopoDS; + theLCEF :ListOfCoupleOfShape from NMTTools; + theFaceOff :out Face from TopoDS); + ---Purpose: For the face theFace and its edge theEdge + -- finds the face suitable to produce shell. + -- theLCEF - set of faces to search. All faces + -- from theLCEF must share edge theEdge + + GetEdgeOnFace (myclass; + theEdge :Edge from TopoDS; + theFace :Face from TopoDS; + theEdgeOnF :out Edge from TopoDS) + ---Purpose: For the face theFace gets the edge theEdgeOnF + -- that is the same as theEdge + -- Returns True if such edge exists + -- Returns False if there is no such edge + returns Boolean from Standard; + + GetEdgeOff (myclass; + theEdge :Edge from TopoDS; + theFace :Face from TopoDS; + theEdgeOff :out Edge from TopoDS) + ---Purpose: Returns True if the face theFace contains + -- the edge theEdge but with opposite orientation. + -- If the method returns True theEdgeOff is the + -- edge founded + returns Boolean from Standard; + +--fields +end Tools3D; + diff --git a/src/GEOMAlgo/GEOMAlgo_Tools3D.cxx b/src/GEOMAlgo/GEOMAlgo_Tools3D.cxx new file mode 100755 index 000000000..6d97c6f61 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Tools3D.cxx @@ -0,0 +1,1155 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: GEOMAlgo_Tools3D.cxx +// Created: +// Author: Peter KURNEV + +#include + +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +// +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +// + +static + Standard_Boolean FindFacePairs (const TopoDS_Edge& , + const TopTools_ListOfShape& , + NMTTools_ListOfCoupleOfShape& ); + + +static + Standard_Real AngleWithRef(const gp_Dir& , + const gp_Dir& , + const gp_Dir& ); + +//======================================================================= +//function : IsInternalFace +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_Tools3D::IsInternalFace(const TopoDS_Face& theFace, + const TopoDS_Solid& theSolid, + const TopTools_IndexedDataMapOfShapeListOfShape& theMEF, + const Standard_Real theTol, + IntTools_Context& theContext) +{ + Standard_Boolean bRet; + Standard_Integer aNbF; + TopoDS_Edge aEL; + TopExp_Explorer aExp; + TopTools_ListIteratorOfListOfShape aItF; + // + bRet=Standard_False; + // + // 1 Try to find an edge from theFace in theMEF + aExp.Init(theFace, TopAbs_EDGE); + for(; aExp.More(); aExp.Next()) { + const TopoDS_Edge& aE=TopoDS::Edge(aExp.Current()); + if (!theMEF.Contains(aE)) { + continue; + } + // + const TopTools_ListOfShape& aLF=theMEF.FindFromKey(aE); + aNbF=aLF.Extent(); + if (!aNbF) { + return bRet; // it can not be so + } + else if (aNbF==1) { + // aE is internal edge on aLF.First() + const TopoDS_Face& aF1=TopoDS::Face(aLF.First()); + bRet=GEOMAlgo_Tools3D::IsInternalFace(theFace, aE, aF1, aF1); + return bRet; + } + else if (aNbF==2) { + const TopoDS_Face& aF1=TopoDS::Face(aLF.First()); + const TopoDS_Face& aF2=TopoDS::Face(aLF.Last()); + // + if (aF2.IsSame(aF1) && BRep_Tool::IsClosed(aE, aF1)) { + // treat as it was for 1 face + bRet=GEOMAlgo_Tools3D::IsInternalFace(theFace, aE, aF1, aF2); + return bRet; + } + } + if (aNbF%2) { + return bRet; // it can not be so + } + else { // aNbF=2,4,6,8,... + bRet=GEOMAlgo_Tools3D::IsInternalFace(theFace, aE, aLF); + return bRet; + } + }//for(; aExp.More(); aExp.Next()) { + // + //======================================== + // 2. Classify face using classifier + // + TopAbs_State aState; + TopTools_IndexedMapOfShape aBounds; + // + aState=GEOMAlgo_Tools3D::ComputeState(theFace, theSolid, theTol, aBounds, theContext); + bRet=(aState==TopAbs_IN); + // + return bRet; +} +//======================================================================= +//function : IsInternalFace +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_Tools3D::IsInternalFace(const TopoDS_Face& theFace, + const TopoDS_Edge& theEdge, + const TopTools_ListOfShape& theLF) +{ + Standard_Boolean bRet; + Standard_Boolean aNbF; + // + bRet=Standard_False; + // + aNbF=theLF.Extent(); + if (aNbF==2) { + const TopoDS_Face& aF1=TopoDS::Face(theLF.First()); + const TopoDS_Face& aF2=TopoDS::Face(theLF.Last()); + bRet=GEOMAlgo_Tools3D::IsInternalFace(theFace, theEdge, aF1, aF2); + return bRet; + } + // + else { + NMTTools_ListOfCoupleOfShape aLCFF; + NMTTools_ListIteratorOfListOfCoupleOfShape aIt; + // + FindFacePairs(theEdge, theLF, aLCFF); + // + aIt.Initialize(aLCFF); + for (; aIt.More(); aIt.Next()) { + const NMTTools_CoupleOfShape& aCSFF=aIt.Value(); + // + const TopoDS_Face& aF1=TopoDS::Face(aCSFF.Shape1()); + const TopoDS_Face& aF2=TopoDS::Face(aCSFF.Shape2()); + bRet=GEOMAlgo_Tools3D::IsInternalFace(theFace, theEdge, aF1, aF2); + if (bRet) { + return bRet; + } + } + } + return bRet; +} +//======================================================================= +//function : IsInternalFace +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_Tools3D::IsInternalFace(const TopoDS_Face& theFace, + const TopoDS_Edge& theEdge, + const TopoDS_Face& theFace1, + const TopoDS_Face& theFace2) +{ + Standard_Boolean bRet; + Standard_Real aT1, aT2, aT, aDt2D, aDt2Dx;//aD1, aD2, + gp_Pnt aPx, aPF, aPF1, aPF2; + gp_Pnt2d aP2D, aPF2D; + gp_Dir aDNF1, aDNF2; + TopoDS_Edge aE1, aE2; + Handle(Geom_Curve)aC3D; + // + aC3D =BRep_Tool::Curve(theEdge, aT1, aT2); + aT=BOPTools_Tools2D::IntermediatePoint(aT1, aT2); + aC3D->D0(aT, aPx); + // + // 1. PF + aDt2D=BOPTools_Tools3D::MinStepIn2d(); + aDt2Dx=10.*aDt2D; + BOPTools_Tools3D::PointNearEdge (theEdge, theFace, aT, aDt2Dx, aPF2D, aPF); + // + // 2. E1, E2 + GEOMAlgo_Tools3D::GetEdgeOnFace(theEdge, theFace1, aE1); + if (aE1.Orientation()==TopAbs_INTERNAL) { + aE2=aE1; + aE1.Orientation(TopAbs_FORWARD); + aE2.Orientation(TopAbs_REVERSED); + } + else if (theFace1==theFace2) { + aE2=aE1; + aE1.Orientation(TopAbs_FORWARD); + aE2.Orientation(TopAbs_REVERSED); + } + else { + GEOMAlgo_Tools3D::GetEdgeOnFace(theEdge, theFace2, aE2); + } + // + // 3 + bRet=Standard_False; + // + //modified by NIZNHY-PKV Mon Nov 13 12:12:53 2006f + // + BOPTools_Tools3D::GetApproxNormalToFaceOnEdge (aE1, theFace1, aT, aPF1, aDNF1); + BOPTools_Tools3D::GetApproxNormalToFaceOnEdge (aE2, theFace2, aT, aPF2, aDNF2); + // + { + Standard_Real aA12, aA1x, aTwoPI; + // + aTwoPI=2.*PI; + gp_Vec aVBF (aPx, aPF ); + gp_Vec aVBF1(aPx, aPF1); + gp_Vec aVBF2(aPx, aPF2); + // + gp_Dir aDTF1; + gp_Dir aDBF (aVBF); + gp_Dir aDBF1(aVBF1); + gp_Dir aDBF2(aVBF2); + // + aDTF1=aDNF1^aDBF1; + //aA12=aDBF1.AngleWithRef(aDBF2, aDTF1); + aA12=AngleWithRef(aDBF1, aDBF2, aDTF1); + if (aA12<0.) { + aA12=aA12+aTwoPI; + } + //aA1x=aDBF1.AngleWithRef(aDBF , aDTF1); + aA1x=AngleWithRef(aDBF1, aDBF , aDTF1); + if (aA1x<0.) { + aA1x=aA1x+aTwoPI; + } + // + if (aA1xD0(aT, aP3D); + } + // + aState=GEOMAlgo_Tools3D::ComputeState(aP3D, theRef, theTol, theCtx); + // + return aState; +} +//======================================================================= +// function: ComputeState +// purpose: +//======================================================================= + TopAbs_State GEOMAlgo_Tools3D::ComputeState(const gp_Pnt& theP, + const TopoDS_Solid& theRef, + const Standard_Real theTol, + IntTools_Context& theCtx) +{ + TopAbs_State aState; + // + BRepClass3d_SolidClassifier& aSC=theCtx.SolidClassifier(theRef); + aSC.Perform(theP, theTol); + // + aState=aSC.State(); + // + return aState; +} +//======================================================================= +// function: IsSplitToReverse +// purpose: +//======================================================================= + Standard_Boolean GEOMAlgo_Tools3D::IsSplitToReverse(const TopoDS_Shape& theSp, + const TopoDS_Shape& theSr, + IntTools_Context& theCtx) +{ + Standard_Boolean bRet; + TopAbs_ShapeEnum aType; + // + bRet=Standard_False; + // + aType=theSp.ShapeType(); + switch (aType) { + case TopAbs_EDGE: { + const TopoDS_Edge& aESp=TopoDS::Edge(theSp); + const TopoDS_Edge& aESr=TopoDS::Edge(theSr); + bRet=GEOMAlgo_Tools3D::IsSplitToReverse(aESp, aESr, theCtx); + } + break; + // + case TopAbs_FACE: { + const TopoDS_Face& aFSp=TopoDS::Face(theSp); + const TopoDS_Face& aFSr=TopoDS::Face(theSr); + bRet=GEOMAlgo_Tools3D::IsSplitToReverse(aFSp, aFSr, theCtx); + } + break; + // + default: + break; + } + return bRet; +} +//======================================================================= +//function :IsSplitToReverse +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_Tools3D::IsSplitToReverse(const TopoDS_Face& theFSp, + const TopoDS_Face& theFSr, + IntTools_Context& theContext) +{ + Standard_Boolean bRet, bFound, bInFace; + Standard_Real aT1, aT2, aT, aU, aV, aScPr; + gp_Pnt aPFSp, aPFSr; + gp_Dir aDNFSp; + gp_Vec aD1U, aD1V; + Handle(Geom_Surface) aSr, aSp; + TopAbs_Orientation aOrSr, aOrSp; + TopExp_Explorer anExp; + TopoDS_Edge aESp; + // + bRet=Standard_False; + // + aSr=BRep_Tool::Surface(theFSr); + aSp=BRep_Tool::Surface(theFSp); + if (aSr==aSp) { + aOrSr=theFSr.Orientation(); + aOrSp=theFSp.Orientation(); + bRet=(aOrSr!=aOrSp); + return bRet; + } + // + bFound=Standard_False; + anExp.Init(theFSp, TopAbs_EDGE); + for (; anExp.More(); anExp.Next()) { + aESp=TopoDS::Edge(anExp.Current()); + if (!BRep_Tool::Degenerated(aESp)) { + if (!BRep_Tool::IsClosed(aESp, theFSp)) { + bFound=!bFound; + break; + } + } + } + if (!bFound) { + return bRet; + } + // + BRep_Tool::Range(aESp, aT1, aT2); + aT=BOPTools_Tools2D::IntermediatePoint(aT1, aT2); + BOPTools_Tools3D::GetApproxNormalToFaceOnEdge(aESp, theFSp, aT, aPFSp, aDNFSp); + // + // Parts of theContext.ComputeVS(..) + GeomAPI_ProjectPointOnSurf& aProjector=theContext.ProjPS(theFSr); + aProjector.Perform(aPFSp); + if (!aProjector.IsDone()) { + return bRet; + } + // + aProjector.LowerDistanceParameters(aU, aV); + gp_Pnt2d aP2D(aU, aV); + bInFace=theContext.IsPointInFace (theFSr, aP2D); + if (!bInFace) { + return bRet; + } + // + aSr->D1(aU, aV, aPFSr, aD1U, aD1V); + gp_Dir aDD1U(aD1U); + gp_Dir aDD1V(aD1V); + gp_Dir aDNFSr=aDD1U^aDD1V; + if (theFSr.Orientation()==TopAbs_REVERSED){ + aDNFSr.Reverse(); + } + // + aScPr=aDNFSp*aDNFSr; + bRet=(aScPr<0.); + // + return bRet; +} +//======================================================================= +//function :IsSplitToReverse +//purpose : +//======================================================================= + Standard_Boolean GEOMAlgo_Tools3D::IsSplitToReverse(const TopoDS_Edge& theSplit, + const TopoDS_Edge& theEdge, + IntTools_Context& theContext) +{ + Standard_Boolean bRet, aFlag, bIsDegenerated; + Standard_Real aTE, aTS, aScPr, aTa, aTb, aT1, aT2; + TopAbs_Orientation aOrSr, aOrSp; + Handle(Geom_Curve) aCEdge, aCSplit; + gp_Vec aVE, aVS; + gp_Pnt aP; + // + bRet=Standard_False; + // + bIsDegenerated=(BRep_Tool::Degenerated(theSplit) || + BRep_Tool::Degenerated(theEdge)); + if (bIsDegenerated) { + return bRet; + } + // + aCEdge =BRep_Tool::Curve(theEdge , aT1, aT2); + aCSplit=BRep_Tool::Curve(theSplit, aTa, aTb); + // + if (aCEdge==aCSplit) { + aOrSr=theEdge.Orientation(); + aOrSp=theSplit.Orientation(); + bRet=(aOrSr!=aOrSp); + return bRet; + } + // + aTS=BOPTools_Tools2D::IntermediatePoint(aTa, aTb); + aCSplit->D0(aTS, aP); + aFlag=BOPTools_Tools2D::EdgeTangent(theSplit, aTS, aVS); + gp_Dir aDTS(aVS); + // + aFlag=theContext.ProjectPointOnEdge(aP, theEdge, aTE); + aFlag=BOPTools_Tools2D::EdgeTangent(theEdge, aTE, aVE); + gp_Dir aDTE(aVE); + // + aScPr=aDTS*aDTE; + bRet=(aScPr<0.); + // + return bRet; +} + +//======================================================================= +// function: Sense +// purpose: +//======================================================================= + Standard_Integer GEOMAlgo_Tools3D::Sense (const TopoDS_Face& theF1, + const TopoDS_Face& theF2) +{ + Standard_Integer iSense=0; + gp_Dir aDNF1, aDNF2; + TopoDS_Edge aE1, aE2; + TopExp_Explorer anExp; + // + anExp.Init(theF1, TopAbs_EDGE); + for (; anExp.More(); anExp.Next()) { + aE1=TopoDS::Edge(anExp.Current()); + if (!BRep_Tool::Degenerated(aE1)) { + if (!BRep_Tool::IsClosed(aE1, theF1)) { + break; + } + } + } + // + anExp.Init(theF2, TopAbs_EDGE); + for (; anExp.More(); anExp.Next()) { + aE2=TopoDS::Edge(anExp.Current()); + if (!BRep_Tool::Degenerated(aE2)) { + if (!BRep_Tool::IsClosed(aE2, theF2)) { + if (aE2.IsSame(aE1)) { + iSense=1; + break; + } + } + } + } + // + if (!iSense) { + return iSense; + } + // + BOPTools_Tools3D::GetNormalToFaceOnEdge(aE1, theF1, aDNF1); + BOPTools_Tools3D::GetNormalToFaceOnEdge(aE2, theF2, aDNF2); + // + iSense=BOPTools_Tools3D::SenseFlag(aDNF1, aDNF2); + // + return iSense; +} +//======================================================================= +// function: CopyFace +// purpose: +//======================================================================= + void GEOMAlgo_Tools3D::CopyFace (const TopoDS_Face& theF1, + TopoDS_Face& theF2) +{ + Standard_Real aTol; + TopLoc_Location aLoc; + TopAbs_Orientation aOr; + TopoDS_Iterator aIt; + BRep_Builder aBB; + // + Handle(Geom_Surface) aSurface=BRep_Tool::Surface(theF1, aLoc); + aTol=BRep_Tool::Tolerance(theF1); + aOr=theF1.Orientation(); + // + aBB.MakeFace (theF2, aSurface, aLoc, aTol); + theF2.Orientation(aOr); + // + aIt.Initialize(theF1); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aW=aIt.Value(); + aBB.Add(theF2, aW); + } +} +//======================================================================= +// function: MakeContainer +// purpose: +//======================================================================= + void GEOMAlgo_Tools3D::MakeContainer(const TopAbs_ShapeEnum theType, + TopoDS_Shape& theC) +{ + BRep_Builder aBB; + // + switch(theType) { + case TopAbs_COMPOUND:{ + TopoDS_Compound aC; + aBB.MakeCompound(aC); + theC=aC; + } + break; + // + case TopAbs_COMPSOLID:{ + TopoDS_CompSolid aCS; + aBB.MakeCompSolid(aCS); + theC=aCS; + } + break; + // + case TopAbs_SOLID:{ + TopoDS_Solid aSolid; + aBB.MakeSolid(aSolid); + theC=aSolid; + } + break; + // + // + case TopAbs_SHELL:{ + TopoDS_Shell aShell; + aBB.MakeShell(aShell); + theC=aShell; + } + break; + // + case TopAbs_WIRE: { + TopoDS_Wire aWire; + aBB.MakeWire(aWire); + theC=aWire; + } + break; + // + default: + break; + } +} +//======================================================================= +// function: MakeConnexityBlock. +// purpose: +//======================================================================= + void GEOMAlgo_Tools3D::MakeConnexityBlock (const TopTools_ListOfShape& theLFIn, + const TopTools_IndexedMapOfShape& theMEAvoid, + TopTools_ListOfShape& theLCB) +{ + Standard_Integer aNbF, aNbAdd1; + TopExp_Explorer aExp; + TopTools_IndexedDataMapOfShapeListOfShape aMEF; + TopTools_MapIteratorOfMapOfShape aItM, aItM1; + TopTools_MapOfShape aMCB, aMAdd, aMAdd1; + TopTools_ListIteratorOfListOfShape aIt; + // + // 1. aMEF + aNbF=theLFIn.Extent(); + aIt.Initialize(theLFIn); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aF=aIt.Value(); + TopExp::MapShapesAndAncestors(aF, TopAbs_EDGE, TopAbs_FACE, aMEF); + } + // + // 2. aMCB + const TopoDS_Shape& aF1=theLFIn.First(); + aMAdd.Add(aF1); + // + while(1) { + aMAdd1.Clear(); + aItM.Initialize(aMAdd); + for (; aItM.More(); aItM.Next()) { + const TopoDS_Shape& aF=aItM.Key(); + // + //aMAdd1.Clear(); + aExp.Init(aF, TopAbs_EDGE); + for (; aExp.More(); aExp.Next()) { + const TopoDS_Shape& aE=aExp.Current(); + if (theMEAvoid.Contains(aE)){ + continue; + } + // + const TopTools_ListOfShape& aLF=aMEF.FindFromKey(aE); + aIt.Initialize(aLF); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aFx=aIt.Value(); + if (aFx.IsSame(aF)) { + continue; + } + if (aMCB.Contains(aFx)) { + continue; + } + aMAdd1.Add(aFx); + } + }//for (; aExp.More(); aExp.Next()){ + aMCB.Add(aF); + }// for (; aItM.More(); aItM.Next()) { + // + aNbAdd1=aMAdd1.Extent(); + if (!aNbAdd1) { + break; + } + // + aMAdd.Clear(); + aItM1.Initialize(aMAdd1); + for (; aItM1.More(); aItM1.Next()) { + const TopoDS_Shape& aFAdd=aItM1.Key(); + aMAdd.Add(aFAdd); + } + // + }//while(1) { + + // + aNbF=aMCB.Extent(); + aItM.Initialize(aMCB); + for (; aItM.More(); aItM.Next()) { + const TopoDS_Shape& aF=aItM.Key(); + theLCB.Append(aF); + } +} + +//======================================================================= +//function : FindFacePairs +//purpose : +//======================================================================= +Standard_Boolean FindFacePairs (const TopoDS_Edge& theE, + const TopTools_ListOfShape& thLF, + NMTTools_ListOfCoupleOfShape& theLCFF) +{ + Standard_Boolean bFound; + Standard_Integer i, aNbCEF; + TopAbs_Orientation aOr, aOrC; + TopTools_MapOfShape aMFP; + TopoDS_Face aF1, aF2; + TopoDS_Edge aEL, aE1; + TopTools_ListIteratorOfListOfShape aItLF; + NMTTools_CoupleOfShape aCEF, aCFF; + NMTTools_ListOfCoupleOfShape aLCEF, aLCEFx; + NMTTools_ListIteratorOfListOfCoupleOfShape aIt; + // + bFound=Standard_True; + // + // Preface aLCEF + aItLF.Initialize(thLF); + for (; aItLF.More(); aItLF.Next()) { + const TopoDS_Face& aFL=TopoDS::Face(aItLF.Value()); + // + bFound=GEOMAlgo_Tools3D::GetEdgeOnFace(theE, aFL, aEL); + if (!bFound) { + return bFound; // it can not be so + } + // + aCEF.SetShape1(aEL); + aCEF.SetShape2(aFL); + aLCEF.Append(aCEF); + } + // + aNbCEF=aLCEF.Extent(); + while(aNbCEF) { + // + // aLCEFx + aLCEFx.Clear(); + aIt.Initialize(aLCEF); + for (i=0; aIt.More(); aIt.Next(), ++i) { + const NMTTools_CoupleOfShape& aCSx=aIt.Value(); + const TopoDS_Shape& aEx=aCSx.Shape1(); + const TopoDS_Shape& aFx=aCSx.Shape2(); + // + aOr=aEx.Orientation(); + // + if (!i) { + aOrC=TopAbs::Reverse(aOr); + aE1=TopoDS::Edge(aEx); + aF1=TopoDS::Face(aFx); + aMFP.Add(aFx); + continue; + } + // + if (aOr==aOrC) { + aLCEFx.Append(aCSx); + aMFP.Add(aFx); + } + } + // + // F2 + GEOMAlgo_Tools3D::GetFaceOff(aE1, aF1, aLCEFx, aF2); + // + aCFF.SetShape1(aF1); + aCFF.SetShape2(aF2); + theLCFF.Append(aCFF); + // + aMFP.Add(aF1); + aMFP.Add(aF2); + // + // refine aLCEF + aLCEFx.Clear(); + aLCEFx=aLCEF; + aLCEF.Clear(); + aIt.Initialize(aLCEFx); + for (; aIt.More(); aIt.Next()) { + const NMTTools_CoupleOfShape& aCSx=aIt.Value(); + const TopoDS_Shape& aFx=aCSx.Shape2(); + if (!aMFP.Contains(aFx)) { + aLCEF.Append(aCSx); + } + } + // + aNbCEF=aLCEF.Extent(); + }//while(aNbCEF) { + // + return bFound; +} +// +//======================================================================= +//function : AngleWithRef +//purpose : +//======================================================================= +Standard_Real AngleWithRef(const gp_Dir& theD1, + const gp_Dir& theD2, + const gp_Dir& theDRef) +{ + Standard_Real aCosinus, aSinus, aBeta, aHalfPI, aScPr; + gp_XYZ aXYZ; + // + aHalfPI=0.5*PI; + // + const gp_XYZ& aXYZ1=theD1.XYZ(); + const gp_XYZ& aXYZ2=theD2.XYZ(); + aXYZ=aXYZ1.Crossed(aXYZ2); + aSinus=aXYZ.Modulus(); + aCosinus=theD1*theD2; + // + aBeta=0.; + if (aSinus>=0.) { + aBeta=aHalfPI*(1.-aCosinus); + } + else { + aBeta=2.*PI-aHalfPI*(3.+aCosinus); + } + // + aScPr=aXYZ.Dot(theDRef.XYZ()); + if (aScPr<0.) { + aBeta=-aBeta; + } + return aBeta; +} +// +/* +static + void Path(const TopoDS_Shape& , + const TopoDS_Shape& , + const TopTools_IndexedDataMapOfShapeListOfShape& , + const TopTools_IndexedMapOfShape& , + TopTools_IndexedMapOfShape& ); + +//======================================================================= +// function: MakeConnexityBlock. +// purpose: +//======================================================================= + void GEOMAlgo_Tools3D::MakeConnexityBlock (const TopTools_ListOfShape& theLFIn, + const TopTools_IndexedMapOfShape& theMEAvoid, + TopTools_ListOfShape& theLCB) +{ + Standard_Integer j, aNbF; + TopTools_IndexedDataMapOfShapeListOfShape aEFMap; + TopTools_IndexedMapOfShape aMFP, aCBMap; + TopTools_ListIteratorOfListOfShape aIt; + TopExp_Explorer aExp; + TopAbs_ShapeEnum aType; + // + aIt.Initialize(theLFIn); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aF=aIt.Value(); + aType=aF.ShapeType(); + TopExp::MapShapesAndAncestors(aF, TopAbs_EDGE, TopAbs_FACE, aEFMap); + } + // + aCBMap.Clear(); + const TopoDS_Shape& aF=theLFIn.First(); + // + aCBMap.Add(aF); + // + aExp.Init(aF, TopAbs_EDGE); + for (; aExp.More(); aExp.Next()){ + const TopoDS_Shape& aE=aExp.Current(); + if (theMEAvoid.Contains(aE)){ + continue; + } + // + const TopTools_ListOfShape& aLF=aEFMap.FindFromKey(aE); + aIt.Initialize(aLF); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aF1=aIt.Value(); + if (!aF1.IsSame(aF)) { + Path (aE, aF1, aEFMap, theMEAvoid, aCBMap); + } + } + } + // + aNbF=aCBMap.Extent(); + for (j=1; j<=aNbF; ++j) { + const TopoDS_Shape& aFx=aCBMap(j); + theLCB.Append(aFx); + } +} +//======================================================================= +// function: Path +// purpose: +//======================================================================= +void Path(const TopoDS_Shape& theE1, + const TopoDS_Shape& theF1, + const TopTools_IndexedDataMapOfShapeListOfShape& theEFMap, + const TopTools_IndexedMapOfShape& theMEAvoid, + TopTools_IndexedMapOfShape& theCBMap) +{ + TopTools_ListIteratorOfListOfShape aIt; + TopExp_Explorer aExp; + // + if (theCBMap.Contains(theF1)){ + return; + } + theCBMap.Add(theF1); + // + aExp.Init(theF1, TopAbs_EDGE); + for (; aExp.More(); aExp.Next()){ + const TopoDS_Shape& aE=aExp.Current(); + if (!aE.IsSame(theE1)){ + if (theMEAvoid.Contains(aE)) { + continue; + } + // + const TopTools_ListOfShape& aLF=theEFMap.FindFromKey(aE); + aIt.Initialize(aLF); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aF=aIt.Value(); + Path (aE, aF, theEFMap, theMEAvoid, theCBMap); + } + } + } +} +*/ diff --git a/src/GEOMAlgo/GEOMAlgo_Tools3D.hxx b/src/GEOMAlgo/GEOMAlgo_Tools3D.hxx new file mode 100644 index 000000000..934cfa4fa --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Tools3D.hxx @@ -0,0 +1,222 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_Tools3D_HeaderFile +#define _GEOMAlgo_Tools3D_HeaderFile + +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _TopAbs_ShapeEnum_HeaderFile +#include +#endif +#ifndef _TopAbs_State_HeaderFile +#include +#endif +#ifndef _Standard_Real_HeaderFile +#include +#endif +class TopoDS_Shape; +class IntTools_Context; +class TopoDS_Face; +class TopoDS_Edge; +class TopTools_ListOfShape; +class TopTools_IndexedMapOfShape; +class TopoDS_Solid; +class gp_Pnt; +class TopoDS_Vertex; +class TopTools_IndexedDataMapOfShapeListOfShape; +class NMTTools_ListOfCoupleOfShape; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + +//! Auxiliary tools for Algorithms
+class GEOMAlgo_Tools3D { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + +//! Returns True if the shape theSplit has opposite
+//! direction than theShape
+//! theContext - cashed geometrical tools
+Standard_EXPORT static Standard_Boolean IsSplitToReverse(const TopoDS_Shape& theSplit,const TopoDS_Shape& theShape,IntTools_Context& theContext) ; + +//! Returns True if normal direction of the face
+//! theShape is not the same as for the face
+//! theSplit
+//! theContext - cashed geometrical tools
+Standard_EXPORT static Standard_Boolean IsSplitToReverse(const TopoDS_Face& theSplit,const TopoDS_Face& theShape,IntTools_Context& theContext) ; + +//! Returns True if tangent direction of the edge
+//! theEdge is not the same as for the edge
+//! theSplit
+//! theContext - cashed geometrical tools
+Standard_EXPORT static Standard_Boolean IsSplitToReverse(const TopoDS_Edge& theEdge,const TopoDS_Edge& theSplit,IntTools_Context& theContext) ; + +//! For the couple of faces theF1, theF2
+//! computes sense value
+//! Returns 0 if the faces are not sensible
+//! Returns 1 if the faces have same sense
+//! Returns 2 if the faces have opposite sense
+Standard_EXPORT static Standard_Integer Sense(const TopoDS_Face& theF1,const TopoDS_Face& theF2) ; + +//! Makes new face theF2 from surface and wires
+//! of the face theF1
+Standard_EXPORT static void CopyFace(const TopoDS_Face& theF1,TopoDS_Face& theF2) ; + +//! Makes empty shape theShape of the type theType
+Standard_EXPORT static void MakeContainer(const TopAbs_ShapeEnum theType,TopoDS_Shape& theShape) ; + +//! For the list of faces theLS build block
+//! theLSCB in terms of connexity by edges
+//! theMapAvoid - set of edges to avoid for
+//! the treatment
+Standard_EXPORT static void MakeConnexityBlock(const TopTools_ListOfShape& theLS,const TopTools_IndexedMapOfShape& theMapAvoid,TopTools_ListOfShape& theLSCB) ; + +//! Computes the 3-D state of the shape theShape
+//! toward solid theSolid.
+//! theTol - value of precision of computation
+//! theContext- cahed geometrical tools
+//! Returns 3-D state.
+Standard_EXPORT static TopAbs_State ComputeStateByOnePoint(const TopoDS_Shape& theShape,const TopoDS_Solid& theSolid,const Standard_Real theTol,IntTools_Context& theContext) ; + +//! Computes the 3-D state of the point thePoint
+//! toward solid theSolid.
+//! theTol - value of precision of computation
+//! theContext- cahed geometrical tools
+//! Returns 3-D state.
+Standard_EXPORT static TopAbs_State ComputeState(const gp_Pnt& thePoint,const TopoDS_Solid& theSolid,const Standard_Real theTol,IntTools_Context& theContext) ; + +//! Computes the 3-D state of the vertex theVertex
+//! toward solid theSolid.
+//! theTol - value of precision of computation
+//! theContext- cahed geometrical tools
+//! Returns 3-D state.
+Standard_EXPORT static TopAbs_State ComputeState(const TopoDS_Vertex& theVertex,const TopoDS_Solid& theSolid,const Standard_Real theTol,IntTools_Context& theContext) ; + +//! Computes the 3-D state of the edge theEdge
+//! toward solid theSolid.
+//! theTol - value of precision of computation
+//! theContext- cahed geometrical tools
+//! Returns 3-D state.
+Standard_EXPORT static TopAbs_State ComputeState(const TopoDS_Edge& theEdge,const TopoDS_Solid& theSolid,const Standard_Real theTol,IntTools_Context& theContext) ; + +//! Computes the 3-D state of the face theFace
+//! toward solid theSolid.
+//! theTol - value of precision of computation
+//! theBounds - set of edges of theFace to avoid
+//! theContext- cahed geometrical tools
+//! Returns 3-D state.
+Standard_EXPORT static TopAbs_State ComputeState(const TopoDS_Face& theFace,const TopoDS_Solid& theSolid,const Standard_Real theTol,const TopTools_IndexedMapOfShape& theBounds,IntTools_Context& theContext) ; + +//! Returns True if the face theFace is inside of the
+//! couple of faces theFace1, theFace2.
+//! The faces theFace, theFace1, theFace2 must
+//! share the edge theEdge
+Standard_EXPORT static Standard_Boolean IsInternalFace(const TopoDS_Face& theFace,const TopoDS_Edge& theEdge,const TopoDS_Face& theFace1,const TopoDS_Face& theFace2) ; + +//! Returns True if the face theFace is inside of the
+//! appropriate couple of faces (from the set theLF) .
+//! The faces of the set theLF and theFace must
+//! share the edge theEdge
+Standard_EXPORT static Standard_Boolean IsInternalFace(const TopoDS_Face& theFace,const TopoDS_Edge& theEdge,const TopTools_ListOfShape& theLF) ; + +//! Returns True if the face theFace is inside the
+//! solid theSolid.
+//! theMEF - Map Edge/Faces for theSolid
+//! theTol - value of precision of computation
+//! theContext- cahed geometrical tools
+Standard_EXPORT static Standard_Boolean IsInternalFace(const TopoDS_Face& theFace,const TopoDS_Solid& theSolid,const TopTools_IndexedDataMapOfShapeListOfShape& theMEF,const Standard_Real theTol,IntTools_Context& theContext) ; + +//! For the face theFace and its edge theEdge
+//! finds the face suitable to produce shell.
+//! theLCEF - set of faces to search. All faces
+//! from theLCEF must share edge theEdge
+Standard_EXPORT static void GetFaceOff(const TopoDS_Edge& theEdge,const TopoDS_Face& theFace,const NMTTools_ListOfCoupleOfShape& theLCEF,TopoDS_Face& theFaceOff) ; + +//! For the face theFace gets the edge theEdgeOnF
+//! that is the same as theEdge
+//! Returns True if such edge exists
+//! Returns False if there is no such edge
+Standard_EXPORT static Standard_Boolean GetEdgeOnFace(const TopoDS_Edge& theEdge,const TopoDS_Face& theFace,TopoDS_Edge& theEdgeOnF) ; + +//! Returns True if the face theFace contains
+//! the edge theEdge but with opposite orientation.
+//! If the method returns True theEdgeOff is the
+//! edge founded
+Standard_EXPORT static Standard_Boolean GetEdgeOff(const TopoDS_Edge& theEdge,const TopoDS_Face& theFace,TopoDS_Edge& theEdgeOff) ; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_Tools3D.ixx b/src/GEOMAlgo/GEOMAlgo_Tools3D.ixx new file mode 100644 index 000000000..52bb882c4 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Tools3D.ixx @@ -0,0 +1,24 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_Tools3D.jxx b/src/GEOMAlgo/GEOMAlgo_Tools3D.jxx new file mode 100644 index 000000000..22ac3268f --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_Tools3D.jxx @@ -0,0 +1,55 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _IntTools_Context_HeaderFile +#include +#endif +#ifndef _TopoDS_Face_HeaderFile +#include +#endif +#ifndef _TopoDS_Edge_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _TopTools_IndexedMapOfShape_HeaderFile +#include +#endif +#ifndef _TopoDS_Solid_HeaderFile +#include +#endif +#ifndef _gp_Pnt_HeaderFile +#include +#endif +#ifndef _TopoDS_Vertex_HeaderFile +#include +#endif +#ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile +#include +#endif +#ifndef _NMTTools_ListOfCoupleOfShape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_Tools3D_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_WESCorrector.cdl b/src/GEOMAlgo/GEOMAlgo_WESCorrector.cdl new file mode 100755 index 000000000..d9f19b9d7 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WESCorrector.cdl @@ -0,0 +1,82 @@ +-- Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +-- +-- File: GEOMAlgo_WESCorrector.cdl +-- Created: +-- Author: Peter KURNEV + + +class WESCorrector from GEOMAlgo + inherits Algo from GEOMAlgo + + ---Purpose: + --- The algorithm to change the Wire Edges Set (WES) contents. + -- The NewWES will contain only wires instead of wires and edges. + -- +uses + WireEdgeSet from GEOMAlgo, + PWireEdgeSet from GEOMAlgo, + ListOfConnexityBlock from BOP + +is + Create + returns WESCorrector from GEOMAlgo; + ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_WESCorrector();" + ---Purpose: + -- Empty constructor; + -- + + SetWES (me:out; + aWES: WireEdgeSet from GEOMAlgo); + ---Purpose: + -- Modifier + -- + Perform (me:out) + is redefined; + ---Purpose: + --- Performs the algorithm that consists of two steps + --- 1. Make conexity blocks ( DoConnexityBlocks() ) + --- 2. Make corrections ( DoCorrections() ) + --- + + WES (me:out) + returns WireEdgeSet from GEOMAlgo; + ---C++: return & + ---Purpose: + --- Selector + --- + NewWES (me:out) + returns WireEdgeSet from GEOMAlgo; + ---C++: return & + ---Purpose: + --- Selector + --- + DoConnexityBlocks(me:out) + is protected; + + DoCorrections(me:out) + is protected; + +fields + + myWES : PWireEdgeSet from GEOMAlgo is protected; + myNewWES : WireEdgeSet from GEOMAlgo is protected; + myConnexityBlocks : ListOfConnexityBlock from BOP is protected; + +end WESCorrector; diff --git a/src/GEOMAlgo/GEOMAlgo_WESCorrector.cxx b/src/GEOMAlgo/GEOMAlgo_WESCorrector.cxx new file mode 100755 index 000000000..8cac72b9e --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WESCorrector.cxx @@ -0,0 +1,330 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: NMTAlgo_WESCorrector.cxx +// Created: +// Author: Peter KURNEV +// + + +#include + +#include +#include +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + + +static + void MakeWire(const TopTools_ListOfShape& aLE, + TopoDS_Wire& newWire); + +//======================================================================= +// function: +// purpose: +//======================================================================= + GEOMAlgo_WESCorrector::GEOMAlgo_WESCorrector() +: + GEOMAlgo_Algo() +{ +} +//======================================================================= +// function: ~ +// purpose: +//======================================================================= + GEOMAlgo_WESCorrector::~GEOMAlgo_WESCorrector() +{ +} +//======================================================================= +// function: SetWES +// purpose: +//======================================================================= + void GEOMAlgo_WESCorrector::SetWES (const GEOMAlgo_WireEdgeSet& aWES) +{ + GEOMAlgo_WireEdgeSet* pWES=(GEOMAlgo_WireEdgeSet*) &aWES; + myWES=pWES; +} +//======================================================================= +// function: WES +// purpose: +//======================================================================= + GEOMAlgo_WireEdgeSet& GEOMAlgo_WESCorrector::WES () +{ + return *myWES; +} +//======================================================================= +// function: NewWES +// purpose: +//======================================================================= + GEOMAlgo_WireEdgeSet& GEOMAlgo_WESCorrector::NewWES () +{ + return myNewWES; +} +//======================================================================= +// function: Perform +// purpose: +//======================================================================= + void GEOMAlgo_WESCorrector::Perform() +{ + myErrorStatus=0; + // + DoConnexityBlocks(); + DoCorrections(); +} +//======================================================================= +// function: DoConnexityBlocks +// purpose: +//======================================================================= + void GEOMAlgo_WESCorrector::DoConnexityBlocks() +{ + Standard_Boolean bRegular; + Standard_Integer i, aNbV, j, aNbC, aNbVP, aNbVS; + TopTools_ListIteratorOfListOfShape aIt; + TopoDS_Iterator aItE; + TopoDS_Shape aER; + TopTools_IndexedMapOfShape aMER, aMEP, aMEC, aMVP; + TopTools_IndexedMapOfShape aMVS, aMVAdd; + TopTools_IndexedDataMapOfShapeListOfShape aMVE; + // + // 1. aMVE; + const TopTools_ListOfShape& aLSE=myWES->StartElements(); + aIt.Initialize(aLSE); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aE=aIt.Value(); + if (!aMEP.Contains(aE)) { + aMEP.Add(aE); + TopExp::MapShapesAndAncestors(aE, TopAbs_VERTEX, TopAbs_EDGE, aMVE); + } + else { + aMER.Add(aE); + } + } + // + // 2. + aNbV=aMVE.Extent(); + for (i=1; i<=aNbV; ++i) { + const TopoDS_Shape& aV=aMVE.FindKey(i); + // + aNbVS=aMVS.Extent(); + if (aNbVS==aNbV) { + break; + } + // + if (aMVS.Contains(aV)) { + continue; + } + aMVS.Add(aV); // aMVS - globally processed vertices + // + //------------------------------------- goal: aMEC + aMEC.Clear(); // aMEC - edges of CB + aMVP.Clear(); // aMVP - vertices to process right now + aMVAdd.Clear(); // aMVAdd vertices to process on next step of while(1) + // + aMVP.Add(aV); + // + while(1) { + aNbVP=aMVP.Extent(); + for (j=1; j<=aNbVP; ++j) { + const TopoDS_Shape& aVP=aMVP(j); + const TopTools_ListOfShape& aLE=aMVE.FindFromKey(aVP); + aIt.Initialize(aLE); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aE=aIt.Value(); + if (aMEC.Contains(aE)) { + continue; + } + aMEC.Add(aE); + // + aItE.Initialize(aE); + for (; aItE.More(); aItE.Next()) { + const TopoDS_Shape& aVE=aItE.Value(); + if (!aMVS.Contains(aVE)) { + aMVS.Add(aVE); + aMVAdd.Add(aVE); + } + } + } + }//for (j=1; j<=aNbVP; ++j) + // + aNbVP=aMVAdd.Extent(); + if (!aNbVP) { + break; // from while(1) + } + // + aMVP.Clear(); + for (j=1; j<=aNbVP; ++j) { + const TopoDS_Shape& aVE=aMVAdd(j); + aMVP.Add(aVE); + } + aMVAdd.Clear(); + }// while(1) { + //------------------------------------- + BOP_ConnexityBlock aCB; + TopTools_ListOfShape aLEC; + TopTools_IndexedDataMapOfShapeListOfShape aMVER; + // + bRegular=Standard_True; + + aNbC=aMEC.Extent(); + for (j=1; j<=aNbC; ++j) { + aER=aMEC(j); + // + if (aMER.Contains(aER)) { + Standard_Boolean bClosed; + // + aER.Orientation(TopAbs_FORWARD); + aLEC.Append(aER); + aER.Orientation(TopAbs_REVERSED); + aLEC.Append(aER); + // + bClosed=BRep_Tool::IsClosed(TopoDS::Edge(aER), myWES->Face()); + if (!bClosed) { + bRegular=Standard_False; + } + } + else { + aLEC.Append(aER); + } + // + if (bRegular) { + TopExp::MapShapesAndAncestors(aER, TopAbs_VERTEX, TopAbs_EDGE, aMVER); + } + }//for (j=1; j<=aNbC; ++j) { + // + if (bRegular) { + Standard_Integer k, aNbVR, aNbER; + // + aNbVR=aMVER.Extent(); + for (k=1; k<=aNbVR; ++k) { + const TopTools_ListOfShape& aLER=aMVER(k);//?? it was aMVE(k) + aNbER=aLER.Extent(); + if (aNbER==1) { + const TopoDS_Edge& aEx=TopoDS::Edge(aER); + if (!BRep_Tool::IsClosed(aEx, myWES->Face())) { + bRegular=!bRegular; + break; + } + } + if (aNbER>2) { + bRegular=!bRegular; + break; + } + } + } + // + aCB.SetShapes(aLEC); + aCB.SetRegularity(bRegular); + myConnexityBlocks.Append(aCB); + aMEC.Clear(); + }//for (i=1; i<=aNbV; ++i) { +} + +//======================================================================= +// function: DoCorrections +// purpose: +//======================================================================= + void GEOMAlgo_WESCorrector::DoCorrections() +{ + Standard_Boolean bIsRegular, bIsNothingToDo; + Standard_Integer iErr; + TopoDS_Wire aW; + BOP_ListIteratorOfListOfConnexityBlock aCBIt; + // + const TopoDS_Face& aF=myWES->Face(); + // + myNewWES.SetFace(aF); + aCBIt.Initialize(myConnexityBlocks); + for (; aCBIt.More(); aCBIt.Next()) { + const BOP_ConnexityBlock& aCB=aCBIt.Value(); + const TopTools_ListOfShape& aLE=aCB.Shapes(); + + bIsRegular=aCB.IsRegular(); + + if (bIsRegular) { + MakeWire(aLE, aW); + myNewWES.AddShape (aW); + continue; + } + // + GEOMAlgo_WireSplitter aWS; + // + aWS.SetFace(aF); + aWS.SetEdges(aLE); + // + aWS.Perform(); + iErr=aWS.ErrorStatus(); + if (iErr) { + continue; + } + bIsNothingToDo=aWS.IsNothingToDo(); + if (bIsNothingToDo) { + MakeWire(aLE, aW); + myNewWES.AddShape (aW); + continue; + } + // + const BOPTColStd_ListOfListOfShape& aSSS=aWS.Shapes(); + + BOPTColStd_ListIteratorOfListOfListOfShape aWireIt(aSSS); + for (; aWireIt.More(); aWireIt.Next()) { + const TopTools_ListOfShape& aLEx=aWireIt.Value(); + // + MakeWire(aLEx, aW); + myNewWES.AddShape (aW); + } + } +} +//======================================================================= +// function: MakeWire +// purpose: +//======================================================================= + void MakeWire(const TopTools_ListOfShape& aLE, + TopoDS_Wire& newWire) +{ + BRep_Builder aBB; + aBB.MakeWire(newWire); + + TopTools_ListIteratorOfListOfShape anIt(aLE); + for (; anIt.More(); anIt.Next()){ + const TopoDS_Edge& aE=TopoDS::Edge(anIt.Value()); + aBB.Add(newWire, aE); + } +} diff --git a/src/GEOMAlgo/GEOMAlgo_WESCorrector.hxx b/src/GEOMAlgo/GEOMAlgo_WESCorrector.hxx new file mode 100644 index 000000000..42e53af59 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WESCorrector.hxx @@ -0,0 +1,134 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_WESCorrector_HeaderFile +#define _GEOMAlgo_WESCorrector_HeaderFile + +#ifndef _GEOMAlgo_PWireEdgeSet_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_WireEdgeSet_HeaderFile +#include +#endif +#ifndef _BOP_ListOfConnexityBlock_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_Algo_HeaderFile +#include +#endif +class GEOMAlgo_WireEdgeSet; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +//! The algorithm to change the Wire Edges Set (WES) contents.
+//! The NewWES will contain only wires instead of wires and edges.
+class GEOMAlgo_WESCorrector : public GEOMAlgo_Algo { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +//! Empty constructor;
+//!
+Standard_EXPORT GEOMAlgo_WESCorrector(); +Standard_EXPORT virtual ~GEOMAlgo_WESCorrector(); + + +//! Modifier
+Standard_EXPORT void SetWES(const GEOMAlgo_WireEdgeSet& aWES) ; + + +//! Performs the algorithm that consists of two steps
+//! 1. Make conexity blocks ( DoConnexityBlocks() )
+//! 2. Make corrections ( DoCorrections() )
+Standard_EXPORT virtual void Perform() ; + + +//! Selector
+Standard_EXPORT GEOMAlgo_WireEdgeSet& WES() ; + + +//! Selector
+Standard_EXPORT GEOMAlgo_WireEdgeSet& NewWES() ; + + + + + +protected: + + // Methods PROTECTED + // + + +Standard_EXPORT void DoConnexityBlocks() ; + + +Standard_EXPORT void DoCorrections() ; + + + // Fields PROTECTED + // +GEOMAlgo_PWireEdgeSet myWES; +GEOMAlgo_WireEdgeSet myNewWES; +BOP_ListOfConnexityBlock myConnexityBlocks; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_WESCorrector.ixx b/src/GEOMAlgo/GEOMAlgo_WESCorrector.ixx new file mode 100644 index 000000000..a2b071b1f --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WESCorrector.ixx @@ -0,0 +1,24 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_WESCorrector.jxx b/src/GEOMAlgo/GEOMAlgo_WESCorrector.jxx new file mode 100644 index 000000000..236296f94 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WESCorrector.jxx @@ -0,0 +1,25 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_WireEdgeSet_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_WESCorrector_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.cdl b/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.cdl new file mode 100755 index 000000000..1fe60ad75 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.cdl @@ -0,0 +1,68 @@ +-- Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +-- +-- File: GEOMAlgo_WireEdgeSet.cdl +-- Created: +-- Author: Peter KURNEV +-- + + +class WireEdgeSet from GEOMAlgo + + ---Purpose: + +uses + Face from TopoDS, + Shape from TopoDS, + ListOfShape from TopTools +--raises + +is + Create + returns WireEdgeSet from GEOMAlgo; + + Clear(me:out); + + SetFace(me:out; + aF:Face from TopoDS); + + Face(me) + returns Face from TopoDS; + ---C++: return const & + + AddStartElement(me:out; + sS: Shape from TopoDS); + + StartElements(me) + returns ListOfShape from TopTools; + ---C++: return const & + + AddShape(me:out; + sS:Shape from TopoDS); + + Shapes(me) + returns ListOfShape from TopTools; + ---C++: return const & + +fields + myFace : Face from TopoDS is protected; + myStartShapes : ListOfShape from TopTools is protected; + myShapes : ListOfShape from TopTools is protected; + +end WireEdgeSet; diff --git a/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.cxx b/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.cxx new file mode 100755 index 000000000..bcae26b8f --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.cxx @@ -0,0 +1,92 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: GEOMAlgo_WireEdgeSet.cxx +// Created: +// Author: Peter KURNEV +// + +#include + +//======================================================================= +//function : +//purpose : +//======================================================================= + GEOMAlgo_WireEdgeSet::GEOMAlgo_WireEdgeSet() +{ + Clear(); +} + +//======================================================================= +//function : Clear +//purpose : +//======================================================================= + void GEOMAlgo_WireEdgeSet::Clear() +{ + myStartShapes.Clear(); + myShapes.Clear(); +} +//======================================================================= +//function : SetFace +//purpose : +//======================================================================= + void GEOMAlgo_WireEdgeSet::SetFace(const TopoDS_Face& aF) +{ + myFace=aF; +} +//======================================================================= +//function : Face +//purpose : +//======================================================================= + const TopoDS_Face& GEOMAlgo_WireEdgeSet::Face()const +{ + return myFace; +} +//======================================================================= +//function : AddStartElement +//purpose : +//======================================================================= + void GEOMAlgo_WireEdgeSet::AddStartElement(const TopoDS_Shape& aE) +{ + myStartShapes.Append(aE); +} +//======================================================================= +//function : StartElements +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_WireEdgeSet::StartElements()const +{ + return myStartShapes; +} +//======================================================================= +//function : AddShape +//purpose : +//======================================================================= + void GEOMAlgo_WireEdgeSet::AddShape(const TopoDS_Shape& aW) +{ + myShapes.Append(aW); +} +//======================================================================= +//function : Shapes +//purpose : +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_WireEdgeSet::Shapes()const +{ + return myShapes; +} diff --git a/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.hxx b/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.hxx new file mode 100644 index 000000000..0a0416438 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.hxx @@ -0,0 +1,122 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_WireEdgeSet_HeaderFile +#define _GEOMAlgo_WireEdgeSet_HeaderFile + +#ifndef _TopoDS_Face_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +class TopoDS_Face; +class TopoDS_Shape; +class TopTools_ListOfShape; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class GEOMAlgo_WireEdgeSet { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT GEOMAlgo_WireEdgeSet(); + + +Standard_EXPORT void Clear() ; + + +Standard_EXPORT void SetFace(const TopoDS_Face& aF) ; + + +Standard_EXPORT const TopoDS_Face& Face() const; + + +Standard_EXPORT void AddStartElement(const TopoDS_Shape& sS) ; + + +Standard_EXPORT const TopTools_ListOfShape& StartElements() const; + + +Standard_EXPORT void AddShape(const TopoDS_Shape& sS) ; + + +Standard_EXPORT const TopTools_ListOfShape& Shapes() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // +TopoDS_Face myFace; +TopTools_ListOfShape myStartShapes; +TopTools_ListOfShape myShapes; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.ixx b/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.ixx new file mode 100644 index 000000000..70dbac598 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.ixx @@ -0,0 +1,24 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.jxx b/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.jxx new file mode 100644 index 000000000..68885c47e --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WireEdgeSet.jxx @@ -0,0 +1,31 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _TopoDS_Face_HeaderFile +#include +#endif +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_WireEdgeSet_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_WireSplitter.cdl b/src/GEOMAlgo/GEOMAlgo_WireSplitter.cdl new file mode 100755 index 000000000..ed3669b25 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WireSplitter.cdl @@ -0,0 +1,87 @@ +-- Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +-- +-- File: GEOMAlgo_WireSplitter.cdl +-- Created: +-- Author: Peter KURNEV +-- + + +class WireSplitter from GEOMAlgo + inherits Algo from GEOMAlgo + + ---Purpose: + --- the algorithm to split multiconnexed set of edges + --- wires on a face onto simple connexed wires + --- . +uses + Face from TopoDS, + Vertex from TopoDS, + Edge from TopoDS, + + SequenceOfPnt2d from TColgp, + SequenceOfShape from TopTools, + ListOfShape from TopTools, + + ListOfListOfShape from BOPTColStd, + + EdgeInfo from BOP, + IndexedDataMapOfVertexListEdgeInfo from BOP + +--raises + +is + Create + returns WireSplitter from GEOMAlgo; + ---C++: alias "Standard_EXPORT virtual ~GEOMAlgo_WireSplitter();" + + SetFace (me:out; + aF: Face from TopoDS); + + SetEdges (me:out; + aLE:ListOfShape from TopTools); + + Edges (me) + returns ListOfShape from TopTools; + ---C++: return const & + + Perform (me:out) + is redefined; + + IsNothingToDo (me) + returns Boolean from Standard; + + Face (me) + returns Face from TopoDS; + ---C++: return const & + + Shapes (me) + returns ListOfListOfShape from BOPTColStd; + ---C++: return const & + +fields + myFace : Face from TopoDS is protected; + myIsDone : Boolean from Standard is protected; + myNothingToDo: Boolean from Standard is protected; + myShapes : ListOfListOfShape from BOPTColStd is protected; + mySmartMap : IndexedDataMapOfVertexListEdgeInfo from BOP is protected; + myEdges : ListOfShape from TopTools is protected; + +end WireSplitter; + diff --git a/src/GEOMAlgo/GEOMAlgo_WireSplitter.cxx b/src/GEOMAlgo/GEOMAlgo_WireSplitter.cxx new file mode 100755 index 000000000..3860f82fe --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WireSplitter.cxx @@ -0,0 +1,923 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: GEOMAlgo_WireSplitter.cxx +// Created: +// Author: Peter KURNEV +// + + +#include + +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + + +#include +#include +#include + +#include +#include + + + +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include + +static + void Path (const GeomAdaptor_Surface& aGAS, + const TopoDS_Face& myFace, + const TopoDS_Vertex& aVa, + const TopoDS_Edge& aEOuta, + BOP_EdgeInfo& anEdgeInfo, + TopTools_SequenceOfShape& aLS, + TopTools_SequenceOfShape& aVertVa, + TColgp_SequenceOfPnt2d& aCoordVa, + BOPTColStd_ListOfListOfShape& myShapes, + BOP_IndexedDataMapOfVertexListEdgeInfo& mySmartMap); + + +static + Standard_Real Angle (const gp_Dir2d& aDir2D); + + +static + void GetNextVertex(const TopoDS_Vertex& aV, + const TopoDS_Edge& aE, + TopoDS_Vertex& aV1); +static + Standard_Real ClockWiseAngle(const Standard_Real aAngleIn, + const Standard_Real aAngleOut); + +static + Standard_Real AngleIn(const TopoDS_Edge& aEIn, + const BOP_ListOfEdgeInfo& aLEInfo); + +static + Standard_Real Angle2D (const TopoDS_Vertex& aV, + const TopoDS_Edge& anEdge, + const TopoDS_Face& myFace, + const GeomAdaptor_Surface& aGAS, + const Standard_Boolean aFlag); +static + gp_Pnt2d Coord2d (const TopoDS_Vertex& aV1, + const TopoDS_Edge& aE1, + const TopoDS_Face& aF); +static + gp_Pnt2d Coord2dVf (const TopoDS_Edge& aE, + const TopoDS_Face& aF); +static + Standard_Real Tolerance2D (const TopoDS_Vertex& aV, + const GeomAdaptor_Surface& aGAS); + +static + Standard_Integer NbWaysOut(const BOP_ListOfEdgeInfo& ); +// + +//======================================================================= +// function: +// purpose: +//======================================================================= + GEOMAlgo_WireSplitter::GEOMAlgo_WireSplitter() +: + GEOMAlgo_Algo(), + myNothingToDo(Standard_False) +{ +} +//======================================================================= +// function: ~ +// purpose: +//======================================================================= + GEOMAlgo_WireSplitter::~GEOMAlgo_WireSplitter() +{ +} +//======================================================================= +// function: SetFace +// purpose: +//======================================================================= + void GEOMAlgo_WireSplitter::SetFace(const TopoDS_Face& aFace) +{ + myFace=aFace; +} +//======================================================================= +// function: Face +// purpose: +//======================================================================= + const TopoDS_Face& GEOMAlgo_WireSplitter::Face()const +{ + return myFace; +} +//======================================================================= +// function: SetEdges +// purpose: +//======================================================================= + void GEOMAlgo_WireSplitter::SetEdges(const TopTools_ListOfShape& aLE) +{ + TopTools_ListIteratorOfListOfShape anIt; + // + myEdges.Clear(); + anIt.Initialize(aLE); + for (; anIt.More(); anIt.Next()) { + const TopoDS_Shape& aE =anIt.Value(); + // + if (aE.Orientation()==TopAbs_INTERNAL){ + continue; + } + // + myEdges.Append(aE); + } +} +//======================================================================= +// function: Edges +// purpose: +//======================================================================= + const TopTools_ListOfShape& GEOMAlgo_WireSplitter::Edges()const +{ + return myEdges; +} +//======================================================================= +// function: IsNothingToDo +// purpose: +//======================================================================= + Standard_Boolean GEOMAlgo_WireSplitter::IsNothingToDo()const +{ + return myNothingToDo; +} +//======================================================================= +// function: Shapes +// purpose: +//======================================================================= + const BOPTColStd_ListOfListOfShape& GEOMAlgo_WireSplitter::Shapes()const +{ + return myShapes; +} +//======================================================================= +// function: Perform +// purpose: +//======================================================================= + void GEOMAlgo_WireSplitter::Perform() +{ + myErrorStatus=2; + myNothingToDo=Standard_True; + + Standard_Integer index, i, aNb, aCntIn, aCntOut; + Standard_Boolean anIsIn; + Standard_Real anAngle; + + BOP_ListOfEdgeInfo emptyInfo; + TopTools_ListIteratorOfListOfShape anItList; + // + // 1.Filling mySmartMap + mySmartMap.Clear(); + + anItList.Initialize(myEdges); + for (; anItList.More(); anItList.Next()) { + const TopoDS_Edge& anEdge = TopoDS::Edge(anItList.Value()); + // + if (!BOPTools_Tools2D::HasCurveOnSurface (anEdge, myFace)) { + continue; + } + // + TopExp_Explorer anExpVerts (anEdge, TopAbs_VERTEX); + for (; anExpVerts.More(); anExpVerts.Next()) { + const TopoDS_Shape& aVertex= anExpVerts.Current(); + + index = mySmartMap.FindIndex(aVertex); + if (!index) { + index=mySmartMap.Add(aVertex, emptyInfo); + } + + BOP_ListOfEdgeInfo& aListOfEInfo=mySmartMap(index); + + BOP_EdgeInfo aEInfo; + aEInfo.SetEdge(anEdge); + + TopAbs_Orientation anOr=aVertex.Orientation(); + + if (anOr==TopAbs_FORWARD) { + aEInfo.SetInFlag(Standard_False); + } + + else if (anOr==TopAbs_REVERSED) { + aEInfo.SetInFlag(Standard_True); + } + + aListOfEInfo.Append(aEInfo); + } + } + // + aNb=mySmartMap.Extent(); + // + // 2. myNothingToDo + myNothingToDo=Standard_True; + + for (i=1; i<=aNb; i++) { + aCntIn=0; + aCntOut=0; + const BOP_ListOfEdgeInfo& aLEInfo= mySmartMap(i); + BOP_ListIteratorOfListOfEdgeInfo anIt(aLEInfo); + for (; anIt.More(); anIt.Next()) { + const BOP_EdgeInfo& anEdgeInfo=anIt.Value(); + anIsIn=anEdgeInfo.IsIn(); + if (anIsIn) { + aCntIn++; + } + else { + aCntOut++; + } + } + if (aCntIn!=1 || aCntOut!=1) { + myNothingToDo=Standard_False; + break; + } + } + // + // Each vertex has one edge In and one - Out. Good. But it is not enought + // to consider that nothing to do with this. We must check edges on TShape + // coinsidence. If there are such edges there is something to do with. + // + if (myNothingToDo) { + Standard_Integer aNbE, aNbMapEE; + TopTools_IndexedDataMapOfShapeListOfShape aMapEE; + aNbE=myEdges.Extent(); + + anItList.Initialize(myEdges); + for (; anItList.More(); anItList.Next()) { + const TopoDS_Shape& aE = anItList.Value(); + + if (!aMapEE.Contains(aE)) { + TopTools_ListOfShape aLEx; + aLEx.Append(aE); + aMapEE.Add(aE, aLEx); + } + else { + TopTools_ListOfShape& aLEx=aMapEE.ChangeFromKey(aE); + aLEx.Append(aE); + } + } + + Standard_Boolean bFlag; + bFlag=Standard_True; + aNbMapEE=aMapEE.Extent(); + for (i=1; i<=aNbMapEE; i++) { + const TopTools_ListOfShape& aLEx=aMapEE(i); + aNbE=aLEx.Extent(); + if (aNbE==1) { + // usual case + continue; + } + else if (aNbE==2){ + const TopoDS_Shape& aE1=aLEx.First(); + const TopoDS_Shape& aE2=aLEx.Last(); + if (aE1.IsSame(aE2)) { + bFlag=Standard_False; + break; + } + } + else { + bFlag=Standard_False; + break; + } + } + myNothingToDo=myNothingToDo && bFlag; + } + // + // + if (myNothingToDo) { + myErrorStatus=0; + return; + } + // + // 3. Angles in mySmartMap + BRepAdaptor_Surface aBAS(myFace); + const GeomAdaptor_Surface& aGAS=aBAS.Surface(); + for (i=1; i<=aNb; i++) { + const TopoDS_Vertex& aV=TopoDS::Vertex (mySmartMap.FindKey(i)); + const BOP_ListOfEdgeInfo& aLEInfo= mySmartMap(i); + + BOP_ListIteratorOfListOfEdgeInfo anIt(aLEInfo); + for (; anIt.More(); anIt.Next()) { + BOP_EdgeInfo& anEdgeInfo=anIt.Value(); + const TopoDS_Edge& aE=anEdgeInfo.Edge(); + // + TopoDS_Vertex aVV=aV; + // + anIsIn=anEdgeInfo.IsIn(); + if (anIsIn) { + // + aVV.Orientation(TopAbs_REVERSED); + anAngle=Angle2D (aVV, aE, myFace, aGAS, Standard_True); + } + // + else { // OUT + // + aVV.Orientation(TopAbs_FORWARD); + anAngle=Angle2D (aVV, aE, myFace, aGAS, Standard_False); + } + anEdgeInfo.SetAngle(anAngle); + + } + } + // + // 4. Do + // + Standard_Boolean anIsOut, anIsNotPassed; + + TopTools_SequenceOfShape aLS, aVertVa; + TColgp_SequenceOfPnt2d aCoordVa; + + BOP_ListIteratorOfListOfEdgeInfo anIt; + + for (i=1; i<=aNb; i++) { + const TopoDS_Vertex aVa=TopoDS::Vertex (mySmartMap.FindKey(i)); + const BOP_ListOfEdgeInfo& aLEInfo=mySmartMap(i); + + anIt.Initialize(aLEInfo); + for (; anIt.More(); anIt.Next()) { + BOP_EdgeInfo& anEdgeInfo=anIt.Value(); + const TopoDS_Edge& aEOuta=anEdgeInfo.Edge(); + + anIsOut=!anEdgeInfo.IsIn(); + anIsNotPassed=!anEdgeInfo.Passed(); + + if (anIsOut && anIsNotPassed) { + // + aLS.Clear(); + aVertVa.Clear(); + aCoordVa.Clear(); + // + Path(aGAS, myFace, aVa, aEOuta, anEdgeInfo, aLS, + aVertVa, aCoordVa, myShapes, mySmartMap); + } + } + } + // + { + Standard_Integer aNbV, aNbE; + TopoDS_Vertex aV1, aV2; + BOPTColStd_ListOfListOfShape aShapes; + BOPTColStd_ListIteratorOfListOfListOfShape anItW(myShapes); + + for (; anItW.More(); anItW.Next()) { + TopTools_IndexedMapOfShape aMV, aME; + const TopTools_ListOfShape& aLE=anItW.Value(); + TopTools_ListIteratorOfListOfShape anItE(aLE); + for (; anItE.More(); anItE.Next()) { + const TopoDS_Edge& aE=TopoDS::Edge(anItE.Value()); + aME.Add(aE); + TopExp::Vertices(aE, aV1, aV2); + aMV.Add(aV1); + aMV.Add(aV2); + } + aNbV=aMV.Extent(); + aNbE=aME.Extent(); + if (aNbV<=aNbE) { + aShapes.Append(aLE); + } + } + // + myShapes.Clear(); + anItW.Initialize(aShapes); + for (; anItW.More(); anItW.Next()) { + const TopTools_ListOfShape& aLE=anItW.Value(); + myShapes.Append(aLE); + } + } + // + myErrorStatus=0; +} +//======================================================================= +// function: Path +// purpose: +//======================================================================= + void Path (const GeomAdaptor_Surface& aGAS, + const TopoDS_Face& myFace, + const TopoDS_Vertex& aVa, + const TopoDS_Edge& aEOuta, + BOP_EdgeInfo& anEdgeInfo, + TopTools_SequenceOfShape& aLS, + TopTools_SequenceOfShape& aVertVa, + TColgp_SequenceOfPnt2d& aCoordVa, + BOPTColStd_ListOfListOfShape& myShapes, + BOP_IndexedDataMapOfVertexListEdgeInfo& mySmartMap) + +{ + Standard_Integer i,j, aNb, aNbj; + Standard_Real aTol, anAngleIn, anAngleOut, anAngle, aMinAngle; + Standard_Real aTol2D, aTol2D2; + Standard_Real aTol2, aD2;//, aTolUVb, aTolVVb; + Standard_Boolean anIsSameV2d, anIsSameV, anIsFound, anIsOut, anIsNotPassed; + BOP_ListIteratorOfListOfEdgeInfo anIt; + TopoDS_Vertex aVb; + TopoDS_Edge aEOutb; + // + aTol=1.e-7; + // + // append block + // + // Do not escape through edge from which you enter + aNb=aLS.Length(); + if (aNb==1) { + const TopoDS_Shape& anEPrev=aLS(aNb); + if (anEPrev.IsSame(aEOuta)) { + return; + } + } + // + // + anEdgeInfo.SetPassed(Standard_True); + aLS.Append(aEOuta); + aVertVa.Append(aVa); + + TopoDS_Vertex pVa=aVa; + pVa.Orientation(TopAbs_FORWARD); + gp_Pnt2d aPa=Coord2d(pVa, aEOuta, myFace); + aCoordVa.Append(aPa); + + GetNextVertex (pVa, aEOuta, aVb); + + gp_Pnt2d aPb=Coord2d(aVb, aEOuta, myFace); + + const BOP_ListOfEdgeInfo& aLEInfoVb=mySmartMap.FindFromKey(aVb); + // + aTol=2.*Tolerance2D(aVb, aGAS); + aTol2=aTol*aTol; + // + //modified by NIZNHY-PKV Tue Nov 14 16:56:19 2006f + /* + UVTolerance2D(aVb, aGAS, aTolUVb, aTolVVb); + aTolUVb = 2.*aTolUVb; + aTolVVb = 2.*aTolVVb; + */ + //modified by NIZNHY-PKV Tue Nov 14 16:56:26 2006t + // + aNb=aLS.Length(); + if (aNb>0) { + // + TopTools_ListOfShape aBuf; + // + for (i=aNb; i>0; i--) { + const TopoDS_Shape& aVPrev=aVertVa(i); + const gp_Pnt2d& aPaPrev=aCoordVa(i); + const TopoDS_Shape& aEPrev=aLS(i); + + aBuf.Append(aEPrev); + + anIsSameV=aVPrev.IsSame(aVb); + anIsSameV2d=Standard_False; + + if (anIsSameV) { + anIsSameV2d = Standard_True; + // + aD2=aPaPrev.SquareDistance(aPb); + anIsSameV2d =aD2 aTolUVb) || (vdist > aTolVVb)) { + anIsSameV2d=!anIsSameV2d; + } + } + */ + //modified by NIZNHY-PKV Tue Nov 14 16:56:54 2006t + }//if (anIsSameV) { + // + if (anIsSameV && anIsSameV2d) { + myShapes.Append(aBuf); + // + TopTools_SequenceOfShape aLSt, aVertVat; + TColgp_SequenceOfPnt2d aCoordVat; + // + aNbj=i-1; + if (aNbj<1) { + // + aLS.Clear(); + aVertVa.Clear(); + aCoordVa.Clear(); + // + return; + } + + aVb=TopoDS::Vertex(aVertVa(i)); + + for (j=1; j<=aNbj; j++) { + aLSt.Append(aLS(j)); + aVertVat.Append(aVertVa(j)); + aCoordVat.Append(aCoordVa(j)); + } + // + aLS.Clear(); + aVertVa.Clear(); + aCoordVa.Clear(); + + aLS=aLSt; + aVertVa=aVertVat; + aCoordVa=aCoordVat; + // + break; + } + } + } + // + aTol2D=2.*Tolerance2D(aVb, aGAS); + aTol2D2=aTol2D*aTol2D; + // + // anAngleIn in Vb from edge aEOuta + const BOP_ListOfEdgeInfo& aLEInfo=mySmartMap.FindFromKey(aVb); + // + anAngleIn=AngleIn(aEOuta, aLEInfo); + // + // aEOutb + BOP_EdgeInfo *pEdgeInfo=NULL; + + aMinAngle=100.; + anIsFound=Standard_False; + + Standard_Integer aCurIndexE = 0; + + anIt.Initialize(aLEInfo); + for (; anIt.More(); anIt.Next()) { + BOP_EdgeInfo& anEI=anIt.Value(); + const TopoDS_Edge& aE=anEI.Edge(); + anIsOut=!anEI.IsIn(); + anIsNotPassed=!anEI.Passed(); + + if (anIsOut && anIsNotPassed) { + aCurIndexE++; + // + // Is there one way to go out of the vertex + // we have to use it only. + Standard_Integer iCnt; + iCnt=NbWaysOut (aLEInfo); + // + if (!iCnt) { + // no way to go . (Error) + return ; + } + // + if (iCnt==1) { + // the one and only way to go out . + pEdgeInfo=&anEI; + anIsFound=Standard_True; + break; + } + // + // Look for minimal angle and make the choice. + gp_Pnt2d aP2Dx; + // + aP2Dx=Coord2dVf(aE, myFace); + // + aD2=aP2Dx.SquareDistance(aPb); + if (aD2 > aTol2D2){ + continue; + } + // + // + anAngleOut=anEI.Angle(); + // + anAngle=ClockWiseAngle(anAngleIn, anAngleOut); + if (anAngle < aMinAngle) { + aMinAngle=anAngle; + pEdgeInfo=&anEI; + anIsFound=Standard_True; + } + } + } // for (; anIt.More(); anIt.Next()) + // + if (!anIsFound) { + // no way to go . (Error) + return; + } + + aEOutb=pEdgeInfo->Edge(); + // + Path (aGAS, myFace, aVb, aEOutb, *pEdgeInfo, aLS, + aVertVa, aCoordVa, myShapes, mySmartMap); +} +//======================================================================= +// function: Coord2dVf +// purpose: +//======================================================================= + gp_Pnt2d Coord2dVf (const TopoDS_Edge& aE, + const TopoDS_Face& aF) +{ + Standard_Real aCoord=99.; + gp_Pnt2d aP2D1(aCoord, aCoord); + TopoDS_Iterator aIt; + // + aIt.Initialize(aE); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aVx=aIt.Value(); + if (aVx.Orientation()==TopAbs_FORWARD) { + const TopoDS_Vertex& aVxx=TopoDS::Vertex(aVx); + aP2D1=Coord2d(aVxx, aE, aF); + return aP2D1; + } + } + return aP2D1; +} +//======================================================================= +// function: Tolerance2D +// purpose: +//======================================================================= + Standard_Real Tolerance2D (const TopoDS_Vertex& aV, + const GeomAdaptor_Surface& aGAS) +{ + Standard_Real aTol2D, anUr, aVr, aTolV3D; + GeomAbs_SurfaceType aType; + // + aType=aGAS.GetType(); + aTolV3D=BRep_Tool::Tolerance(aV); + + anUr=aGAS.UResolution(aTolV3D); + aVr =aGAS.VResolution(aTolV3D); + aTol2D=(aVr>anUr) ? aVr : anUr; + // + if (aType==GeomAbs_BSplineSurface|| + aType==GeomAbs_Sphere) { + if (aTol2D < aTolV3D) { + aTol2D=aTolV3D; + } + } + if (aType==GeomAbs_BSplineSurface) { + aTol2D=1.1*aTol2D; + } + // + return aTol2D; +} + +//======================================================================= +// function: Coord2d +// purpose: +//======================================================================= + gp_Pnt2d Coord2d (const TopoDS_Vertex& aV1, + const TopoDS_Edge& aE1, + const TopoDS_Face& aF) +{ + Standard_Real aT, aFirst, aLast; + Handle(Geom2d_Curve) aC2D; + gp_Pnt2d aP2D1; + // + aT=BRep_Tool::Parameter (aV1, aE1, aF); + aC2D=BRep_Tool::CurveOnSurface(aE1, aF, aFirst, aLast); + aC2D->D0 (aT, aP2D1); + // + return aP2D1; +} +//======================================================================= +// function: AngleIn +// purpose: +//======================================================================= + Standard_Real AngleIn(const TopoDS_Edge& aEIn, + const BOP_ListOfEdgeInfo& aLEInfo) +{ + Standard_Real anAngleIn; + Standard_Boolean anIsIn; + BOP_ListIteratorOfListOfEdgeInfo anIt; + + anIt.Initialize(aLEInfo); + for (; anIt.More(); anIt.Next()) { + BOP_EdgeInfo& anEdgeInfo=anIt.Value(); + const TopoDS_Edge& aE=anEdgeInfo.Edge(); + anIsIn=anEdgeInfo.IsIn(); + // + if (anIsIn && aE==aEIn) { + anAngleIn=anEdgeInfo.Angle(); + return anAngleIn; + } + } + anAngleIn=0.; + return anAngleIn; +} +//======================================================================= +// function: ClockWiseAngle +// purpose: +//======================================================================= + Standard_Real ClockWiseAngle(const Standard_Real aAngleIn, + const Standard_Real aAngleOut) +{ + Standard_Real aTwoPi=Standard_PI+Standard_PI; + Standard_Real dA, A1, A2, AIn, AOut ; + + AIn=aAngleIn; + AOut=aAngleOut; + if (AIn >= aTwoPi) { + AIn=AIn-aTwoPi; + } + + if (AOut >= aTwoPi) { + AOut=AOut-aTwoPi; + } + + A1=AIn+Standard_PI; + + if (A1 >= aTwoPi) { + A1=A1-aTwoPi; + } + + A2=AOut; + + dA=A1-A2; + if (dA <= 0.) { + dA=aTwoPi+dA; + } + //xx + //else if (dA <= 1.e-15) { + else if (dA <= 1.e-14) { + dA=aTwoPi; + } + return dA; +} +//======================================================================= +// function: GetNextVertex +// purpose: +//======================================================================= + void GetNextVertex(const TopoDS_Vertex& aV, + const TopoDS_Edge& aE, + TopoDS_Vertex& aV1) +{ + TopoDS_Iterator aIt; + // + aIt.Initialize(aE); + for (; aIt.More(); aIt.Next()) { + const TopoDS_Shape& aVx=aIt.Value(); + if (!aVx.IsEqual(aV)) { + aV1=TopoDS::Vertex(aVx); + return ; + } + } + aV1=aV; +} +//======================================================================= +// function: Angle2D +// purpose: +//======================================================================= + Standard_Real Angle2D (const TopoDS_Vertex& aV, + const TopoDS_Edge& anEdge, + const TopoDS_Face& myFace, + const GeomAdaptor_Surface& aGAS, + const Standard_Boolean aFlag) +{ + Standard_Real aFirst, aLast, aToler, dt, aTV, aTV1, anAngle; + + Handle(Geom2d_Curve) aC2D; + + BOPTools_Tools2D::CurveOnSurface (anEdge, myFace, aC2D, + aFirst, aLast, aToler, Standard_True); + + aTV=BRep_Tool::Parameter (aV, anEdge, myFace); + if (Precision::IsInfinite(aTV)) + return 0.; + + //dt=1.e-7; + dt=Tolerance2D(aV, aGAS); + + if(dt > (aLast - aFirst) * 0.25) { + // to save direction of the curve as much as it possible + // in the case of big tolerances + dt = (aLast - aFirst) * 0.25; + } + // + if (fabs (aTV-aFirst) < fabs(aTV - aLast)) { + aTV1=aTV + dt; + } + else { + aTV1=aTV - dt; + } + + gp_Pnt2d aPV, aPV1; + aC2D->D0 (aTV, aPV); + aC2D->D0 (aTV1, aPV1); + + gp_Vec2d aV2D; + // + if (aFlag) {//IN + gp_Vec2d aV2DIn(aPV1, aPV); + // + aV2D=aV2DIn; + } + + else { + gp_Vec2d aV2DOut(aPV, aPV1); + aV2D=aV2DOut; + } + + gp_Dir2d aDir2D(aV2D); + anAngle=Angle(aDir2D); + + return anAngle; +} +//======================================================================= +// function: Angle +// purpose: +//======================================================================= +Standard_Real Angle (const gp_Dir2d& aDir2D) +{ + gp_Dir2d aRefDir(1., 0.); + Standard_Real anAngle = aRefDir.Angle(aDir2D); + + if (anAngle < 0.) + anAngle += Standard_PI + Standard_PI; + + return anAngle; +} +// +//======================================================================= +// function: NbWaysOut +// purpose: +//======================================================================= +Standard_Integer NbWaysOut(const BOP_ListOfEdgeInfo& aLEInfo) +{ + Standard_Boolean bIsOut, bIsNotPassed; + Standard_Integer iCnt=0; + BOP_ListIteratorOfListOfEdgeInfo anIt; + // + anIt.Initialize(aLEInfo); + for (; anIt.More(); anIt.Next()) { + BOP_EdgeInfo& anEI=anIt.Value(); + // + bIsOut=!anEI.IsIn(); + bIsNotPassed=!anEI.Passed(); + if (bIsOut && bIsNotPassed) { + iCnt++; + } + } + return iCnt; +} +//modified by NIZNHY-PKV Tue Nov 14 16:55:31 2006f +/* +static + void UVTolerance2D (const TopoDS_Vertex& aV, + const GeomAdaptor_Surface& aGAS, + Standard_Real& aTolU, + Standard_Real& aTolV); +*/ +/* +//======================================================================= +//function : UVTolerance2D +//purpose : +//======================================================================= +void UVTolerance2D (const TopoDS_Vertex& aV, + const GeomAdaptor_Surface& aGAS, + Standard_Real& aTolU, + Standard_Real& aTolV) +{ + Standard_Real aTolV3D; + // + aTolV3D = BRep_Tool::Tolerance(aV); + aTolU=aGAS.UResolution(aTolV3D); + aTolV=aGAS.VResolution(aTolV3D); +} +*/ +//modified by NIZNHY-PKV Tue Nov 14 16:55:39 2006 diff --git a/src/GEOMAlgo/GEOMAlgo_WireSplitter.hxx b/src/GEOMAlgo/GEOMAlgo_WireSplitter.hxx new file mode 100644 index 000000000..f2bb54361 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WireSplitter.hxx @@ -0,0 +1,141 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _GEOMAlgo_WireSplitter_HeaderFile +#define _GEOMAlgo_WireSplitter_HeaderFile + +#ifndef _TopoDS_Face_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +#ifndef _BOPTColStd_ListOfListOfShape_HeaderFile +#include +#endif +#ifndef _BOP_IndexedDataMapOfVertexListEdgeInfo_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_Algo_HeaderFile +#include +#endif +class TopoDS_Face; +class TopTools_ListOfShape; +class BOPTColStd_ListOfListOfShape; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +//! the algorithm to split multiconnexed set of edges
+//! wires on a face onto simple connexed wires
+//! .
+class GEOMAlgo_WireSplitter : public GEOMAlgo_Algo { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT GEOMAlgo_WireSplitter(); +Standard_EXPORT virtual ~GEOMAlgo_WireSplitter(); + + +Standard_EXPORT void SetFace(const TopoDS_Face& aF) ; + + +Standard_EXPORT void SetEdges(const TopTools_ListOfShape& aLE) ; + + +Standard_EXPORT const TopTools_ListOfShape& Edges() const; + + +Standard_EXPORT virtual void Perform() ; + + +Standard_EXPORT Standard_Boolean IsNothingToDo() const; + + +Standard_EXPORT const TopoDS_Face& Face() const; + + +Standard_EXPORT const BOPTColStd_ListOfListOfShape& Shapes() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // +TopoDS_Face myFace; +Standard_Boolean myIsDone; +Standard_Boolean myNothingToDo; +BOPTColStd_ListOfListOfShape myShapes; +BOP_IndexedDataMapOfVertexListEdgeInfo mySmartMap; +TopTools_ListOfShape myEdges; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/GEOMAlgo/GEOMAlgo_WireSplitter.ixx b/src/GEOMAlgo/GEOMAlgo_WireSplitter.ixx new file mode 100644 index 000000000..fa8f559f8 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WireSplitter.ixx @@ -0,0 +1,24 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + + + + diff --git a/src/GEOMAlgo/GEOMAlgo_WireSplitter.jxx b/src/GEOMAlgo/GEOMAlgo_WireSplitter.jxx new file mode 100644 index 000000000..235db1835 --- /dev/null +++ b/src/GEOMAlgo/GEOMAlgo_WireSplitter.jxx @@ -0,0 +1,31 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _TopoDS_Face_HeaderFile +#include +#endif +#ifndef _TopTools_ListOfShape_HeaderFile +#include +#endif +#ifndef _BOPTColStd_ListOfListOfShape_HeaderFile +#include +#endif +#ifndef _GEOMAlgo_WireSplitter_HeaderFile +#include +#endif diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_Clsf.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_Clsf.hxx new file mode 100644 index 000000000..8b9bf2d35 --- /dev/null +++ b/src/GEOMAlgo/Handle_GEOMAlgo_Clsf.hxx @@ -0,0 +1,72 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _Handle_GEOMAlgo_Clsf_HeaderFile +#define _Handle_GEOMAlgo_Clsf_HeaderFile + +#ifndef _Standard_Macro_HeaderFile +#include +#endif +#ifndef _Standard_HeaderFile +#include +#endif + +#ifndef _Handle_GEOMAlgo_HAlgo_HeaderFile +#include +#endif + +class Standard_Transient; +class Handle_Standard_Type; +class Handle(GEOMAlgo_HAlgo); +class GEOMAlgo_Clsf; +Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_Clsf); + +class Handle(GEOMAlgo_Clsf) : public Handle(GEOMAlgo_HAlgo) { + public: + Handle(GEOMAlgo_Clsf)():Handle(GEOMAlgo_HAlgo)() {} + Handle(GEOMAlgo_Clsf)(const Handle(GEOMAlgo_Clsf)& aHandle) : Handle(GEOMAlgo_HAlgo)(aHandle) + { + } + + Handle(GEOMAlgo_Clsf)(const GEOMAlgo_Clsf* anItem) : Handle(GEOMAlgo_HAlgo)((GEOMAlgo_HAlgo *)anItem) + { + } + + Handle(GEOMAlgo_Clsf)& operator=(const Handle(GEOMAlgo_Clsf)& aHandle) + { + Assign(aHandle.Access()); + return *this; + } + + Handle(GEOMAlgo_Clsf)& operator=(const GEOMAlgo_Clsf* anItem) + { + Assign((Standard_Transient *)anItem); + return *this; + } + + GEOMAlgo_Clsf* operator->() const + { + return (GEOMAlgo_Clsf *)ControlAccess(); + } + +// Standard_EXPORT ~Handle(GEOMAlgo_Clsf)(); + + Standard_EXPORT static const Handle(GEOMAlgo_Clsf) DownCast(const Handle(Standard_Transient)& AnObject); +}; +#endif diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_ClsfBox.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_ClsfBox.hxx new file mode 100644 index 000000000..b397bddb8 --- /dev/null +++ b/src/GEOMAlgo/Handle_GEOMAlgo_ClsfBox.hxx @@ -0,0 +1,72 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _Handle_GEOMAlgo_ClsfBox_HeaderFile +#define _Handle_GEOMAlgo_ClsfBox_HeaderFile + +#ifndef _Standard_Macro_HeaderFile +#include +#endif +#ifndef _Standard_HeaderFile +#include +#endif + +#ifndef _Handle_GEOMAlgo_Clsf_HeaderFile +#include +#endif + +class Standard_Transient; +class Handle_Standard_Type; +class Handle(GEOMAlgo_Clsf); +class GEOMAlgo_ClsfBox; +Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_ClsfBox); + +class Handle(GEOMAlgo_ClsfBox) : public Handle(GEOMAlgo_Clsf) { + public: + Handle(GEOMAlgo_ClsfBox)():Handle(GEOMAlgo_Clsf)() {} + Handle(GEOMAlgo_ClsfBox)(const Handle(GEOMAlgo_ClsfBox)& aHandle) : Handle(GEOMAlgo_Clsf)(aHandle) + { + } + + Handle(GEOMAlgo_ClsfBox)(const GEOMAlgo_ClsfBox* anItem) : Handle(GEOMAlgo_Clsf)((GEOMAlgo_Clsf *)anItem) + { + } + + Handle(GEOMAlgo_ClsfBox)& operator=(const Handle(GEOMAlgo_ClsfBox)& aHandle) + { + Assign(aHandle.Access()); + return *this; + } + + Handle(GEOMAlgo_ClsfBox)& operator=(const GEOMAlgo_ClsfBox* anItem) + { + Assign((Standard_Transient *)anItem); + return *this; + } + + GEOMAlgo_ClsfBox* operator->() const + { + return (GEOMAlgo_ClsfBox *)ControlAccess(); + } + +// Standard_EXPORT ~Handle(GEOMAlgo_ClsfBox)(); + + Standard_EXPORT static const Handle(GEOMAlgo_ClsfBox) DownCast(const Handle(Standard_Transient)& AnObject); +}; +#endif diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_ClsfSurf.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_ClsfSurf.hxx new file mode 100644 index 000000000..ca42ed917 --- /dev/null +++ b/src/GEOMAlgo/Handle_GEOMAlgo_ClsfSurf.hxx @@ -0,0 +1,72 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _Handle_GEOMAlgo_ClsfSurf_HeaderFile +#define _Handle_GEOMAlgo_ClsfSurf_HeaderFile + +#ifndef _Standard_Macro_HeaderFile +#include +#endif +#ifndef _Standard_HeaderFile +#include +#endif + +#ifndef _Handle_GEOMAlgo_Clsf_HeaderFile +#include +#endif + +class Standard_Transient; +class Handle_Standard_Type; +class Handle(GEOMAlgo_Clsf); +class GEOMAlgo_ClsfSurf; +Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_ClsfSurf); + +class Handle(GEOMAlgo_ClsfSurf) : public Handle(GEOMAlgo_Clsf) { + public: + Handle(GEOMAlgo_ClsfSurf)():Handle(GEOMAlgo_Clsf)() {} + Handle(GEOMAlgo_ClsfSurf)(const Handle(GEOMAlgo_ClsfSurf)& aHandle) : Handle(GEOMAlgo_Clsf)(aHandle) + { + } + + Handle(GEOMAlgo_ClsfSurf)(const GEOMAlgo_ClsfSurf* anItem) : Handle(GEOMAlgo_Clsf)((GEOMAlgo_Clsf *)anItem) + { + } + + Handle(GEOMAlgo_ClsfSurf)& operator=(const Handle(GEOMAlgo_ClsfSurf)& aHandle) + { + Assign(aHandle.Access()); + return *this; + } + + Handle(GEOMAlgo_ClsfSurf)& operator=(const GEOMAlgo_ClsfSurf* anItem) + { + Assign((Standard_Transient *)anItem); + return *this; + } + + GEOMAlgo_ClsfSurf* operator->() const + { + return (GEOMAlgo_ClsfSurf *)ControlAccess(); + } + +// Standard_EXPORT ~Handle(GEOMAlgo_ClsfSurf)(); + + Standard_EXPORT static const Handle(GEOMAlgo_ClsfSurf) DownCast(const Handle(Standard_Transient)& AnObject); +}; +#endif diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx new file mode 100644 index 000000000..b8439ed91 --- /dev/null +++ b/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape.hxx @@ -0,0 +1,72 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_HeaderFile +#define _Handle_GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape_HeaderFile + +#ifndef _Standard_Macro_HeaderFile +#include +#endif +#ifndef _Standard_HeaderFile +#include +#endif + +#ifndef _Handle_TCollection_MapNode_HeaderFile +#include +#endif + +class Standard_Transient; +class Handle_Standard_Type; +class Handle(TCollection_MapNode); +class GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape; +Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape); + +class Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape) : public Handle(TCollection_MapNode) { + public: + Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape)():Handle(TCollection_MapNode)() {} + Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape)(const Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape)& aHandle) : Handle(TCollection_MapNode)(aHandle) + { + } + + Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape)(const GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) + { + } + + Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape)& operator=(const Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape)& aHandle) + { + Assign(aHandle.Access()); + return *this; + } + + Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape)& operator=(const GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape* anItem) + { + Assign((Standard_Transient *)anItem); + return *this; + } + + GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape* operator->() const + { + return (GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape *)ControlAccess(); + } + +// Standard_EXPORT ~Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape)(); + + Standard_EXPORT static const Handle(GEOMAlgo_DataMapNodeOfDataMapOfRealListOfShape) DownCast(const Handle(Standard_Transient)& AnObject); +}; +#endif diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx new file mode 100644 index 000000000..f6956a7c1 --- /dev/null +++ b/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal.hxx @@ -0,0 +1,72 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_HeaderFile +#define _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeReal_HeaderFile + +#ifndef _Standard_Macro_HeaderFile +#include +#endif +#ifndef _Standard_HeaderFile +#include +#endif + +#ifndef _Handle_TCollection_MapNode_HeaderFile +#include +#endif + +class Standard_Transient; +class Handle_Standard_Type; +class Handle(TCollection_MapNode); +class GEOMAlgo_DataMapNodeOfDataMapOfShapeReal; +Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal); + +class Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal) : public Handle(TCollection_MapNode) { + public: + Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal)():Handle(TCollection_MapNode)() {} + Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal)(const Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal)& aHandle) : Handle(TCollection_MapNode)(aHandle) + { + } + + Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal)(const GEOMAlgo_DataMapNodeOfDataMapOfShapeReal* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) + { + } + + Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal)& operator=(const Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal)& aHandle) + { + Assign(aHandle.Access()); + return *this; + } + + Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal)& operator=(const GEOMAlgo_DataMapNodeOfDataMapOfShapeReal* anItem) + { + Assign((Standard_Transient *)anItem); + return *this; + } + + GEOMAlgo_DataMapNodeOfDataMapOfShapeReal* operator->() const + { + return (GEOMAlgo_DataMapNodeOfDataMapOfShapeReal *)ControlAccess(); + } + +// Standard_EXPORT ~Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal)(); + + Standard_EXPORT static const Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeReal) DownCast(const Handle(Standard_Transient)& AnObject); +}; +#endif diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx new file mode 100644 index 000000000..3a26aeace --- /dev/null +++ b/src/GEOMAlgo/Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet.hxx @@ -0,0 +1,72 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_HeaderFile +#define _Handle_GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet_HeaderFile + +#ifndef _Standard_Macro_HeaderFile +#include +#endif +#ifndef _Standard_HeaderFile +#include +#endif + +#ifndef _Handle_TCollection_MapNode_HeaderFile +#include +#endif + +class Standard_Transient; +class Handle_Standard_Type; +class Handle(TCollection_MapNode); +class GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet; +Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet); + +class Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet) : public Handle(TCollection_MapNode) { + public: + Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet)():Handle(TCollection_MapNode)() {} + Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet)(const Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet)& aHandle) : Handle(TCollection_MapNode)(aHandle) + { + } + + Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet)(const GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) + { + } + + Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet)& operator=(const Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet)& aHandle) + { + Assign(aHandle.Access()); + return *this; + } + + Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet)& operator=(const GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet* anItem) + { + Assign((Standard_Transient *)anItem); + return *this; + } + + GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet* operator->() const + { + return (GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet *)ControlAccess(); + } + +// Standard_EXPORT ~Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet)(); + + Standard_EXPORT static const Handle(GEOMAlgo_DataMapNodeOfDataMapOfShapeShapeSet) DownCast(const Handle(Standard_Transient)& AnObject); +}; +#endif diff --git a/src/GEOMAlgo/Handle_GEOMAlgo_HAlgo.hxx b/src/GEOMAlgo/Handle_GEOMAlgo_HAlgo.hxx new file mode 100644 index 000000000..861c3e3ea --- /dev/null +++ b/src/GEOMAlgo/Handle_GEOMAlgo_HAlgo.hxx @@ -0,0 +1,72 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _Handle_GEOMAlgo_HAlgo_HeaderFile +#define _Handle_GEOMAlgo_HAlgo_HeaderFile + +#ifndef _Standard_Macro_HeaderFile +#include +#endif +#ifndef _Standard_HeaderFile +#include +#endif + +#ifndef _Handle_MMgt_TShared_HeaderFile +#include +#endif + +class Standard_Transient; +class Handle_Standard_Type; +class Handle(MMgt_TShared); +class GEOMAlgo_HAlgo; +Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMAlgo_HAlgo); + +class Handle(GEOMAlgo_HAlgo) : public Handle(MMgt_TShared) { + public: + Handle(GEOMAlgo_HAlgo)():Handle(MMgt_TShared)() {} + Handle(GEOMAlgo_HAlgo)(const Handle(GEOMAlgo_HAlgo)& aHandle) : Handle(MMgt_TShared)(aHandle) + { + } + + Handle(GEOMAlgo_HAlgo)(const GEOMAlgo_HAlgo* anItem) : Handle(MMgt_TShared)((MMgt_TShared *)anItem) + { + } + + Handle(GEOMAlgo_HAlgo)& operator=(const Handle(GEOMAlgo_HAlgo)& aHandle) + { + Assign(aHandle.Access()); + return *this; + } + + Handle(GEOMAlgo_HAlgo)& operator=(const GEOMAlgo_HAlgo* anItem) + { + Assign((Standard_Transient *)anItem); + return *this; + } + + GEOMAlgo_HAlgo* operator->() const + { + return (GEOMAlgo_HAlgo *)ControlAccess(); + } + +// Standard_EXPORT ~Handle(GEOMAlgo_HAlgo)(); + + Standard_EXPORT static const Handle(GEOMAlgo_HAlgo) DownCast(const Handle(Standard_Transient)& AnObject); +}; +#endif diff --git a/src/GEOMBase/GEOM_GEOMBase.hxx b/src/GEOMBase/GEOM_GEOMBase.hxx new file mode 100755 index 000000000..99b371671 --- /dev/null +++ b/src/GEOMBase/GEOM_GEOMBase.hxx @@ -0,0 +1,47 @@ +// 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 : GEOM_GEOMBase.hxx +// Author : Alexander A. BORODIN +// Module : GEOM + +#ifndef _GEOM_GEOMBase_HXX_ +#define _GEOM_GEOMBase_HXX_ + +#ifdef WNT + #if defined GEOMBASE_EXPORTS + #if defined WIN32 + #define GEOMBASE_EXPORT __declspec( dllexport ) + #else + #define GEOMBASE_EXPORT + #endif + #else + #if defined WIN32 + #define GEOMBASE_EXPORT __declspec( dllimport ) + #else + #define GEOMBASE_EXPORT + #endif + #endif +#else + #define GEOMBASE_EXPORT +#endif + +#endif diff --git a/src/GEOMGUI/GEOM_GEOMGUI.hxx b/src/GEOMGUI/GEOM_GEOMGUI.hxx new file mode 100755 index 000000000..9508b0d19 --- /dev/null +++ b/src/GEOMGUI/GEOM_GEOMGUI.hxx @@ -0,0 +1,47 @@ +// 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 : GEOM_GEOMGUI.hxx +// Author : Alexander A. BORODIN +// Module : GEOM + +#ifndef _GEOM_GEOMGUI_HXX_ +#define _GEOM_GEOMGUI_HXX_ + +#ifdef WNT + #if defined GEOMGUI_EXPORTS + #if defined WIN32 + #define GEOMGUI_EXPORT __declspec( dllexport ) + #else + #define GEOMGUI_EXPORT + #endif + #else + #if defined WIN32 + #define GEOMGUI_EXPORT __declspec( dllimport ) + #else + #define GEOMGUI_EXPORT + #endif + #endif +#else + #define GEOMGUI_EXPORT +#endif + +#endif diff --git a/src/GEOMImpl/GEOM_GEOMImpl.hxx b/src/GEOMImpl/GEOM_GEOMImpl.hxx new file mode 100755 index 000000000..a8f4a439f --- /dev/null +++ b/src/GEOMImpl/GEOM_GEOMImpl.hxx @@ -0,0 +1,47 @@ +// 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 : GEOM_GEOMImpl.hxx +// Author : Alexander A. BORODIN +// Module : GEOM + +#ifndef _GEOM_GEOMImpl_HXX_ +#define _GEOM_GEOMImpl_HXX_ + +#ifdef WNT + #if defined GEOMIMPL_EXPORTS + #if defined WIN32 + #define GEOMIMPL_EXPORT __declspec( dllexport ) + #else + #define GEOMIMPL_EXPORT + #endif + #else + #if defined WIN32 + #define GEOMIMPL_EXPORT __declspec( dllimport ) + #else + #define GEOMIMPL_EXPORT + #endif + #endif +#else + #define GEOMIMPL_EXPORT +#endif + +#endif diff --git a/src/GEOMToolsGUI/GEOMToolsGUI_NameDlg.h b/src/GEOMToolsGUI/GEOMToolsGUI_NameDlg.h new file mode 100644 index 000000000..050806d8a --- /dev/null +++ b/src/GEOMToolsGUI/GEOMToolsGUI_NameDlg.h @@ -0,0 +1,48 @@ +// SALOME GEOMToolsGUI : implementation of desktop and GUI kernel +// +// Copyright (C) 2003 CEA/DEN, EDF R&D +// +// +// +// File : GEOMToolsGUI_NameDlg.h +// Author : Vadim SANDLER +// Module : SALOME +// $Header$ + +#ifndef GEOMToolsGUI_NAMEDLG_H +#define GEOMToolsGUI_NAMEDLG_H + +#include "GEOM_ToolsGUI.hxx" + +#include + +class QLineEdit; +class QPushButton; + +//================================================================================= +// class : GEOMToolsGUI_NameDlg +// purpose : Common dialog box class +//================================================================================= +class GEOMTOOLSGUI_EXPORT GEOMToolsGUI_NameDlg : public QDialog +{ + Q_OBJECT + +public: + GEOMToolsGUI_NameDlg( QWidget* parent = 0 ); + ~GEOMToolsGUI_NameDlg(); + + void setName( const QString& name ); + QString name(); + + static QString getName( QWidget* parent = 0, const QString& oldName = QString::null ); + +protected slots: + void accept(); + +private: + QPushButton* myButtonOk; + QPushButton* myButtonCancel; + QLineEdit* myLineEdit; +}; + +#endif // GEOMToolsGUI_NAMEDLG_H diff --git a/src/GEOMToolsGUI/GEOM_ToolsGUI.hxx b/src/GEOMToolsGUI/GEOM_ToolsGUI.hxx new file mode 100755 index 000000000..db2c0ed56 --- /dev/null +++ b/src/GEOMToolsGUI/GEOM_ToolsGUI.hxx @@ -0,0 +1,47 @@ +// 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 : GEOM_ToolsGUI.hxx +// Author : Alexander A. BORODIN +// Module : GEOM + +#ifndef _GEOM_ToolsGUI_HXX_ +#define _GEOM_ToolsGUI_HXX_ + +#ifdef WNT + #if defined GEOMTOOLSGUI_EXPORTS + #if defined WIN32 + #define GEOMTOOLSGUI_EXPORT __declspec( dllexport ) + #else + #define GEOMTOOLSGUI_EXPORT + #endif + #else + #if defined WIN32 + #define GEOMTOOLSGUI_EXPORT __declspec( dllimport ) + #else + #define GEOMTOOLSGUI_EXPORT + #endif + #endif +#else + #define GEOMTOOLSGUI_EXPORT +#endif + +#endif diff --git a/src/GEOM_I/GEOM_GEOM_I.hxx b/src/GEOM_I/GEOM_GEOM_I.hxx new file mode 100755 index 000000000..0d0d57396 --- /dev/null +++ b/src/GEOM_I/GEOM_GEOM_I.hxx @@ -0,0 +1,47 @@ +// 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 : GEOM_GEOM_I.hxx +// Author : Alexander A. BORODIN +// Module : GEOM + +#ifndef _GEOM_GEOM_I_HXX_ +#define _GEOM_GEOM_I_HXX_ + +#ifdef WNT + #if defined GEOM_I_EXPORTS + #if defined WIN32 + #define GEOM_I_EXPORT __declspec( dllexport ) + #else + #define GEOM_I_EXPORT + #endif + #else + #if defined WIN32 + #define GEOM_I_EXPORT __declspec( dllimport ) + #else + #define GEOM_I_EXPORT + #endif + #endif +#else + #define GEOM_I_EXPORT +#endif + +#endif diff --git a/src/MeasureGUI/GEOM_MeasureGUI.hxx b/src/MeasureGUI/GEOM_MeasureGUI.hxx new file mode 100755 index 000000000..fd447a276 --- /dev/null +++ b/src/MeasureGUI/GEOM_MeasureGUI.hxx @@ -0,0 +1,47 @@ +// 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 : GEOM_MeasureGUI.hxx +// Author : Alexander A. BORODIN +// Module : GEOM + +#ifndef _GEOM_MeasureGUI_HXX_ +#define _GEOM_MeasureGUI_HXX_ + +#ifdef WNT + #if defined MEASUREGUI_EXPORTS + #if defined WIN32 + #define GEOM_MEASUREGUI_EXPORT __declspec( dllexport ) + #else + #define GEOM_MEASUREGUI_EXPORT + #endif + #else + #if defined WIN32 + #define GEOM_MEASUREGUI_EXPORT __declspec( dllimport ) + #else + #define GEOM_MEASUREGUI_EXPORT + #endif + #endif +#else + #define GEOM_MEASUREGUI_EXPORT +#endif + +#endif diff --git a/src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx b/src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx new file mode 100644 index 000000000..50dd456cb --- /dev/null +++ b/src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx @@ -0,0 +1,72 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_HeaderFile +#define _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_HeaderFile + +#ifndef _Standard_Macro_HeaderFile +#include +#endif +#ifndef _Standard_HeaderFile +#include +#endif + +#ifndef _Handle_TCollection_MapNode_HeaderFile +#include +#endif + +class Standard_Transient; +class Handle_Standard_Type; +class Handle(TCollection_MapNode); +class NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape; +Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape); + +class Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape) : public Handle(TCollection_MapNode) { + public: + Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)():Handle(TCollection_MapNode)() {} + Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)(const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)& aHandle) : Handle(TCollection_MapNode)(aHandle) + { + } + + Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)(const NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) + { + } + + Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)& operator=(const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)& aHandle) + { + Assign(aHandle.Access()); + return *this; + } + + Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)& operator=(const NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape* anItem) + { + Assign((Standard_Transient *)anItem); + return *this; + } + + NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape* operator->() const + { + return (NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape *)ControlAccess(); + } + +// Standard_EXPORT ~Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)(); + + Standard_EXPORT static const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape) DownCast(const Handle(Standard_Transient)& AnObject); +}; +#endif diff --git a/src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx b/src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx new file mode 100644 index 000000000..a1bb5bc11 --- /dev/null +++ b/src/NMTDS/Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx @@ -0,0 +1,72 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_HeaderFile +#define _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_HeaderFile + +#ifndef _Standard_Macro_HeaderFile +#include +#endif +#ifndef _Standard_HeaderFile +#include +#endif + +#ifndef _Handle_TCollection_MapNode_HeaderFile +#include +#endif + +class Standard_Transient; +class Handle_Standard_Type; +class Handle(TCollection_MapNode); +class NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox; +Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox); + +class Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox) : public Handle(TCollection_MapNode) { + public: + Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)():Handle(TCollection_MapNode)() {} + Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)(const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)& aHandle) : Handle(TCollection_MapNode)(aHandle) + { + } + + Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)(const NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) + { + } + + Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)& operator=(const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)& aHandle) + { + Assign(aHandle.Access()); + return *this; + } + + Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)& operator=(const NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox* anItem) + { + Assign((Standard_Transient *)anItem); + return *this; + } + + NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox* operator->() const + { + return (NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox *)ControlAccess(); + } + +// Standard_EXPORT ~Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)(); + + Standard_EXPORT static const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox) DownCast(const Handle(Standard_Transient)& AnObject); +}; +#endif diff --git a/src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKey.hxx b/src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKey.hxx new file mode 100644 index 000000000..eca4f179e --- /dev/null +++ b/src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKey.hxx @@ -0,0 +1,72 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _Handle_NMTDS_ListNodeOfListOfPassKey_HeaderFile +#define _Handle_NMTDS_ListNodeOfListOfPassKey_HeaderFile + +#ifndef _Standard_Macro_HeaderFile +#include +#endif +#ifndef _Standard_HeaderFile +#include +#endif + +#ifndef _Handle_TCollection_MapNode_HeaderFile +#include +#endif + +class Standard_Transient; +class Handle_Standard_Type; +class Handle(TCollection_MapNode); +class NMTDS_ListNodeOfListOfPassKey; +Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKey); + +class Handle(NMTDS_ListNodeOfListOfPassKey) : public Handle(TCollection_MapNode) { + public: + Handle(NMTDS_ListNodeOfListOfPassKey)():Handle(TCollection_MapNode)() {} + Handle(NMTDS_ListNodeOfListOfPassKey)(const Handle(NMTDS_ListNodeOfListOfPassKey)& aHandle) : Handle(TCollection_MapNode)(aHandle) + { + } + + Handle(NMTDS_ListNodeOfListOfPassKey)(const NMTDS_ListNodeOfListOfPassKey* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) + { + } + + Handle(NMTDS_ListNodeOfListOfPassKey)& operator=(const Handle(NMTDS_ListNodeOfListOfPassKey)& aHandle) + { + Assign(aHandle.Access()); + return *this; + } + + Handle(NMTDS_ListNodeOfListOfPassKey)& operator=(const NMTDS_ListNodeOfListOfPassKey* anItem) + { + Assign((Standard_Transient *)anItem); + return *this; + } + + NMTDS_ListNodeOfListOfPassKey* operator->() const + { + return (NMTDS_ListNodeOfListOfPassKey *)ControlAccess(); + } + +// Standard_EXPORT ~Handle(NMTDS_ListNodeOfListOfPassKey)(); + + Standard_EXPORT static const Handle(NMTDS_ListNodeOfListOfPassKey) DownCast(const Handle(Standard_Transient)& AnObject); +}; +#endif diff --git a/src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKeyBoolean.hxx b/src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKeyBoolean.hxx new file mode 100644 index 000000000..202965e9d --- /dev/null +++ b/src/NMTDS/Handle_NMTDS_ListNodeOfListOfPassKeyBoolean.hxx @@ -0,0 +1,72 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _Handle_NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile +#define _Handle_NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile + +#ifndef _Standard_Macro_HeaderFile +#include +#endif +#ifndef _Standard_HeaderFile +#include +#endif + +#ifndef _Handle_TCollection_MapNode_HeaderFile +#include +#endif + +class Standard_Transient; +class Handle_Standard_Type; +class Handle(TCollection_MapNode); +class NMTDS_ListNodeOfListOfPassKeyBoolean; +Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKeyBoolean); + +class Handle(NMTDS_ListNodeOfListOfPassKeyBoolean) : public Handle(TCollection_MapNode) { + public: + Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)():Handle(TCollection_MapNode)() {} + Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)(const Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)& aHandle) : Handle(TCollection_MapNode)(aHandle) + { + } + + Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)(const NMTDS_ListNodeOfListOfPassKeyBoolean* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) + { + } + + Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)& operator=(const Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)& aHandle) + { + Assign(aHandle.Access()); + return *this; + } + + Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)& operator=(const NMTDS_ListNodeOfListOfPassKeyBoolean* anItem) + { + Assign((Standard_Transient *)anItem); + return *this; + } + + NMTDS_ListNodeOfListOfPassKeyBoolean* operator->() const + { + return (NMTDS_ListNodeOfListOfPassKeyBoolean *)ControlAccess(); + } + +// Standard_EXPORT ~Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)(); + + Standard_EXPORT static const Handle(NMTDS_ListNodeOfListOfPassKeyBoolean) DownCast(const Handle(Standard_Transient)& AnObject); +}; +#endif diff --git a/src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKey.hxx b/src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKey.hxx new file mode 100644 index 000000000..fbea2a6fe --- /dev/null +++ b/src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKey.hxx @@ -0,0 +1,72 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile +#define _Handle_NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile + +#ifndef _Standard_Macro_HeaderFile +#include +#endif +#ifndef _Standard_HeaderFile +#include +#endif + +#ifndef _Handle_TCollection_MapNode_HeaderFile +#include +#endif + +class Standard_Transient; +class Handle_Standard_Type; +class Handle(TCollection_MapNode); +class NMTDS_StdMapNodeOfMapOfPassKey; +Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKey); + +class Handle(NMTDS_StdMapNodeOfMapOfPassKey) : public Handle(TCollection_MapNode) { + public: + Handle(NMTDS_StdMapNodeOfMapOfPassKey)():Handle(TCollection_MapNode)() {} + Handle(NMTDS_StdMapNodeOfMapOfPassKey)(const Handle(NMTDS_StdMapNodeOfMapOfPassKey)& aHandle) : Handle(TCollection_MapNode)(aHandle) + { + } + + Handle(NMTDS_StdMapNodeOfMapOfPassKey)(const NMTDS_StdMapNodeOfMapOfPassKey* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) + { + } + + Handle(NMTDS_StdMapNodeOfMapOfPassKey)& operator=(const Handle(NMTDS_StdMapNodeOfMapOfPassKey)& aHandle) + { + Assign(aHandle.Access()); + return *this; + } + + Handle(NMTDS_StdMapNodeOfMapOfPassKey)& operator=(const NMTDS_StdMapNodeOfMapOfPassKey* anItem) + { + Assign((Standard_Transient *)anItem); + return *this; + } + + NMTDS_StdMapNodeOfMapOfPassKey* operator->() const + { + return (NMTDS_StdMapNodeOfMapOfPassKey *)ControlAccess(); + } + +// Standard_EXPORT ~Handle(NMTDS_StdMapNodeOfMapOfPassKey)(); + + Standard_EXPORT static const Handle(NMTDS_StdMapNodeOfMapOfPassKey) DownCast(const Handle(Standard_Transient)& AnObject); +}; +#endif diff --git a/src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx b/src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx new file mode 100644 index 000000000..4cf323559 --- /dev/null +++ b/src/NMTDS/Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx @@ -0,0 +1,72 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile +#define _Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile + +#ifndef _Standard_Macro_HeaderFile +#include +#endif +#ifndef _Standard_HeaderFile +#include +#endif + +#ifndef _Handle_TCollection_MapNode_HeaderFile +#include +#endif + +class Standard_Transient; +class Handle_Standard_Type; +class Handle(TCollection_MapNode); +class NMTDS_StdMapNodeOfMapOfPassKeyBoolean; +Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKeyBoolean); + +class Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean) : public Handle(TCollection_MapNode) { + public: + Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)():Handle(TCollection_MapNode)() {} + Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)(const Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)& aHandle) : Handle(TCollection_MapNode)(aHandle) + { + } + + Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)(const NMTDS_StdMapNodeOfMapOfPassKeyBoolean* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) + { + } + + Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)& operator=(const Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)& aHandle) + { + Assign(aHandle.Access()); + return *this; + } + + Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)& operator=(const NMTDS_StdMapNodeOfMapOfPassKeyBoolean* anItem) + { + Assign((Standard_Transient *)anItem); + return *this; + } + + NMTDS_StdMapNodeOfMapOfPassKeyBoolean* operator->() const + { + return (NMTDS_StdMapNodeOfMapOfPassKeyBoolean *)ControlAccess(); + } + +// Standard_EXPORT ~Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)(); + + Standard_EXPORT static const Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean) DownCast(const Handle(Standard_Transient)& AnObject); +}; +#endif diff --git a/src/NMTDS/NMTDS_BoxBndTree.cxx b/src/NMTDS/NMTDS_BoxBndTree.cxx new file mode 100644 index 000000000..79bc0b5e1 --- /dev/null +++ b/src/NMTDS/NMTDS_BoxBndTree.cxx @@ -0,0 +1,90 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: NMTDS_BoxBndTree.cxx +// Created: Tue Oct 17 13:04:11 2006 +// Author: Peter KURNEV +// + + +#include +//======================================================================= +//function : +//purpose : +//======================================================================= + NMTDS_BoxBndTreeSelector::NMTDS_BoxBndTreeSelector() +{ +} +//======================================================================= +//function : ~ +//purpose : +//======================================================================= + NMTDS_BoxBndTreeSelector::~NMTDS_BoxBndTreeSelector() +{ +} +//======================================================================= +//function : Reject +//purpose : +//======================================================================= + Standard_Boolean NMTDS_BoxBndTreeSelector::Reject (const Bnd_Box& aBox) const +{ + Standard_Boolean bRet; + // + bRet=myBox.IsOut(aBox); + return bRet; +} +//======================================================================= +//function : Accept +//purpose : +//======================================================================= + Standard_Boolean NMTDS_BoxBndTreeSelector::Accept (const Standard_Integer& aIndex) +{ + Standard_Boolean bRet=Standard_False; + // + if (myFence.Add(aIndex)) { + myIndices.Append(aIndex); + bRet=!bRet; + } + return bRet; +} +//======================================================================= +//function : SetBox +//purpose : +//======================================================================= + void NMTDS_BoxBndTreeSelector::SetBox(const Bnd_Box& aBox) +{ + myBox=aBox; +} +//======================================================================= +//function : Clear +//purpose : +//======================================================================= + void NMTDS_BoxBndTreeSelector::Clear() +{ + myFence.Clear(); + myIndices.Clear(); +} +//======================================================================= +//function : Indices +//purpose : +//======================================================================= + const TColStd_ListOfInteger& NMTDS_BoxBndTreeSelector::Indices() const +{ + return myIndices; +} diff --git a/src/NMTDS/NMTDS_BoxBndTree.hxx b/src/NMTDS/NMTDS_BoxBndTree.hxx new file mode 100755 index 000000000..9aeb58d41 --- /dev/null +++ b/src/NMTDS/NMTDS_BoxBndTree.hxx @@ -0,0 +1,52 @@ +// Copyright (C) 2005 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 +// +// File: NMTDS_BoxBndTree.hxx +// Created: Tue Oct 17 12:50:31 2006 +// Author: Peter KURNEV +// + + +#ifndef NMTDS_BoxBndTree_HeaderFile +#define NMTDS_BoxBndTree_HeaderFile + +#include +#include +#include +#include + +typedef NCollection_UBTree NMTDS_BoxBndTree; + + class NMTDS_BoxBndTreeSelector : public NMTDS_BoxBndTree::Selector { + public: + Standard_EXPORT NMTDS_BoxBndTreeSelector(); + Standard_EXPORT virtual Standard_Boolean Reject(const Bnd_Box&) const; + Standard_EXPORT virtual Standard_Boolean Accept(const Standard_Integer &); + Standard_EXPORT virtual ~NMTDS_BoxBndTreeSelector(); + + Standard_EXPORT void Clear(); + Standard_EXPORT void SetBox(const Bnd_Box&); + Standard_EXPORT const TColStd_ListOfInteger& Indices() const; + + protected: + Bnd_Box myBox; + TColStd_MapOfInteger myFence; + TColStd_ListOfInteger myIndices; + + }; + +#endif diff --git a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx b/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx new file mode 100644 index 000000000..6cc5bacc1 --- /dev/null +++ b/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx @@ -0,0 +1,132 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_HeaderFile +#define _NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_HeaderFile + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_HeaderFile +#include +#endif + +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _TCollection_MapNodePtr_HeaderFile +#include +#endif +#ifndef _TCollection_MapNode_HeaderFile +#include +#endif +class TopoDS_Shape; +class TColStd_MapIntegerHasher; +class NMTDS_IndexedDataMapOfIntegerShape; + + + +class NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape : public TCollection_MapNode { + +public: + // Methods PUBLIC + // + +NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape(const Standard_Integer& K1,const Standard_Integer K2,const TopoDS_Shape& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); + + Standard_Integer& Key1() const; + + Standard_Integer& Key2() const; + + TCollection_MapNodePtr& Next2() const; + + TopoDS_Shape& Value() const; +//Standard_EXPORT ~NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape(); + + + + + // Type management + // + Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // +Standard_Integer myKey1; +Standard_Integer myKey2; +TopoDS_Shape myValue; +TCollection_MapNodePtr myNext2; + + +}; + +#define TheKey Standard_Integer +#define TheKey_hxx +#define TheItem TopoDS_Shape +#define TheItem_hxx +#define Hasher TColStd_MapIntegerHasher +#define Hasher_hxx +#define TCollection_IndexedDataMapNode NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape +#define TCollection_IndexedDataMapNode_hxx +#define Handle_TCollection_IndexedDataMapNode Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape +#define TCollection_IndexedDataMapNode_Type_() NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_Type_() +#define TCollection_IndexedDataMap NMTDS_IndexedDataMapOfIntegerShape +#define TCollection_IndexedDataMap_hxx + +#include + +#undef TheKey +#undef TheKey_hxx +#undef TheItem +#undef TheItem_hxx +#undef Hasher +#undef Hasher_hxx +#undef TCollection_IndexedDataMapNode +#undef TCollection_IndexedDataMapNode_hxx +#undef Handle_TCollection_IndexedDataMapNode +#undef TCollection_IndexedDataMapNode_Type_ +#undef TCollection_IndexedDataMap +#undef TCollection_IndexedDataMap_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_0.cxx b/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_0.cxx new file mode 100644 index 000000000..3293ddec1 --- /dev/null +++ b/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_0.cxx @@ -0,0 +1,95 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_TypeMismatch_HeaderFile +#include +#endif + +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _TColStd_MapIntegerHasher_HeaderFile +#include +#endif +#ifndef _NMTDS_IndexedDataMapOfIntegerShape_HeaderFile +#include +#endif +//NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape::~NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape() {} + + + +Standard_EXPORT Handle_Standard_Type& NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_Type_() +{ + + static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); + static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); + static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); + + + static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; + static Handle_Standard_Type _aType = new Standard_Type("NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape", + sizeof(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape), + 1, + (Standard_Address)_Ancestors, + (Standard_Address)NULL); + + return _aType; +} + + +// DownCast method +// allow safe downcasting +// +const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape) Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)::DownCast(const Handle(Standard_Transient)& AnObject) +{ + Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape) _anOtherObject; + + if (!AnObject.IsNull()) { + if (AnObject->IsKind(STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape))) { + _anOtherObject = Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)((Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape)&)AnObject); + } + } + + return _anOtherObject ; +} +const Handle(Standard_Type)& NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape::DynamicType() const +{ + return STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape) ; +} +//Standard_Boolean NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape::~Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape() {} +#define TheKey Standard_Integer +#define TheKey_hxx +#define TheItem TopoDS_Shape +#define TheItem_hxx +#define Hasher TColStd_MapIntegerHasher +#define Hasher_hxx +#define TCollection_IndexedDataMapNode NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape +#define TCollection_IndexedDataMapNode_hxx +#define Handle_TCollection_IndexedDataMapNode Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape +#define TCollection_IndexedDataMapNode_Type_() NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_Type_() +#define TCollection_IndexedDataMap NMTDS_IndexedDataMapOfIntegerShape +#define TCollection_IndexedDataMap_hxx +#include + diff --git a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx b/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx new file mode 100644 index 000000000..698204818 --- /dev/null +++ b/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx @@ -0,0 +1,136 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_HeaderFile +#define _NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_HeaderFile + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_HeaderFile +#include +#endif + +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _Bnd_Box_HeaderFile +#include +#endif +#ifndef _TCollection_MapNodePtr_HeaderFile +#include +#endif +#ifndef _TCollection_MapNode_HeaderFile +#include +#endif +class TopoDS_Shape; +class Bnd_Box; +class TopTools_ShapeMapHasher; +class NMTDS_IndexedDataMapOfShapeBox; + + + +class NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox : public TCollection_MapNode { + +public: + // Methods PUBLIC + // + +NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox(const TopoDS_Shape& K1,const Standard_Integer K2,const Bnd_Box& I,const TCollection_MapNodePtr& n1,const TCollection_MapNodePtr& n2); + + TopoDS_Shape& Key1() const; + + Standard_Integer& Key2() const; + + TCollection_MapNodePtr& Next2() const; + + Bnd_Box& Value() const; +//Standard_EXPORT ~NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox(); + + + + + // Type management + // + Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // +TopoDS_Shape myKey1; +Standard_Integer myKey2; +Bnd_Box myValue; +TCollection_MapNodePtr myNext2; + + +}; + +#define TheKey TopoDS_Shape +#define TheKey_hxx +#define TheItem Bnd_Box +#define TheItem_hxx +#define Hasher TopTools_ShapeMapHasher +#define Hasher_hxx +#define TCollection_IndexedDataMapNode NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox +#define TCollection_IndexedDataMapNode_hxx +#define Handle_TCollection_IndexedDataMapNode Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox +#define TCollection_IndexedDataMapNode_Type_() NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_Type_() +#define TCollection_IndexedDataMap NMTDS_IndexedDataMapOfShapeBox +#define TCollection_IndexedDataMap_hxx + +#include + +#undef TheKey +#undef TheKey_hxx +#undef TheItem +#undef TheItem_hxx +#undef Hasher +#undef Hasher_hxx +#undef TCollection_IndexedDataMapNode +#undef TCollection_IndexedDataMapNode_hxx +#undef Handle_TCollection_IndexedDataMapNode +#undef TCollection_IndexedDataMapNode_Type_ +#undef TCollection_IndexedDataMap +#undef TCollection_IndexedDataMap_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_0.cxx b/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_0.cxx new file mode 100644 index 000000000..75117613b --- /dev/null +++ b/src/NMTDS/NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_0.cxx @@ -0,0 +1,98 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_TypeMismatch_HeaderFile +#include +#endif + +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _Bnd_Box_HeaderFile +#include +#endif +#ifndef _TopTools_ShapeMapHasher_HeaderFile +#include +#endif +#ifndef _NMTDS_IndexedDataMapOfShapeBox_HeaderFile +#include +#endif +//NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox::~NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox() {} + + + +Standard_EXPORT Handle_Standard_Type& NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_Type_() +{ + + static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); + static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); + static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); + + + static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; + static Handle_Standard_Type _aType = new Standard_Type("NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox", + sizeof(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox), + 1, + (Standard_Address)_Ancestors, + (Standard_Address)NULL); + + return _aType; +} + + +// DownCast method +// allow safe downcasting +// +const Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox) Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)::DownCast(const Handle(Standard_Transient)& AnObject) +{ + Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox) _anOtherObject; + + if (!AnObject.IsNull()) { + if (AnObject->IsKind(STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox))) { + _anOtherObject = Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)((Handle(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox)&)AnObject); + } + } + + return _anOtherObject ; +} +const Handle(Standard_Type)& NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox::DynamicType() const +{ + return STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox) ; +} +//Standard_Boolean NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox::~Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox() {} +#define TheKey TopoDS_Shape +#define TheKey_hxx +#define TheItem Bnd_Box +#define TheItem_hxx +#define Hasher TopTools_ShapeMapHasher +#define Hasher_hxx +#define TCollection_IndexedDataMapNode NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox +#define TCollection_IndexedDataMapNode_hxx +#define Handle_TCollection_IndexedDataMapNode Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox +#define TCollection_IndexedDataMapNode_Type_() NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_Type_() +#define TCollection_IndexedDataMap NMTDS_IndexedDataMapOfShapeBox +#define TCollection_IndexedDataMap_hxx +#include + diff --git a/src/NMTDS/NMTDS_IndexedDataMapOfIntegerShape.hxx b/src/NMTDS/NMTDS_IndexedDataMapOfIntegerShape.hxx new file mode 100644 index 000000000..e9b04d0e5 --- /dev/null +++ b/src/NMTDS/NMTDS_IndexedDataMapOfIntegerShape.hxx @@ -0,0 +1,169 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTDS_IndexedDataMapOfIntegerShape_HeaderFile +#define _NMTDS_IndexedDataMapOfIntegerShape_HeaderFile + +#ifndef _TCollection_BasicMap_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class Standard_DomainError; +class Standard_OutOfRange; +class Standard_NoSuchObject; +class TopoDS_Shape; +class TColStd_MapIntegerHasher; +class NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_IndexedDataMapOfIntegerShape : public TCollection_BasicMap { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_IndexedDataMapOfIntegerShape(const Standard_Integer NbBuckets = 1); + + +Standard_EXPORT NMTDS_IndexedDataMapOfIntegerShape& Assign(const NMTDS_IndexedDataMapOfIntegerShape& Other) ; + NMTDS_IndexedDataMapOfIntegerShape& operator =(const NMTDS_IndexedDataMapOfIntegerShape& Other) +{ + return Assign(Other); +} + + + +Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; + + +Standard_EXPORT void Clear() ; +~NMTDS_IndexedDataMapOfIntegerShape() +{ + Clear(); +} + + + +Standard_EXPORT Standard_Integer Add(const Standard_Integer& K,const TopoDS_Shape& I) ; + + +Standard_EXPORT void Substitute(const Standard_Integer I,const Standard_Integer& K,const TopoDS_Shape& T) ; + + +Standard_EXPORT void RemoveLast() ; + + +Standard_EXPORT Standard_Boolean Contains(const Standard_Integer& K) const; + + +Standard_EXPORT const Standard_Integer& FindKey(const Standard_Integer I) const; + + +Standard_EXPORT const TopoDS_Shape& FindFromIndex(const Standard_Integer I) const; + const TopoDS_Shape& operator ()(const Standard_Integer I) const +{ + return FindFromIndex(I); +} + + + +Standard_EXPORT TopoDS_Shape& ChangeFromIndex(const Standard_Integer I) ; + TopoDS_Shape& operator ()(const Standard_Integer I) +{ + return ChangeFromIndex(I); +} + + + +Standard_EXPORT Standard_Integer FindIndex(const Standard_Integer& K) const; + + +Standard_EXPORT const TopoDS_Shape& FindFromKey(const Standard_Integer& K) const; + + +Standard_EXPORT TopoDS_Shape& ChangeFromKey(const Standard_Integer& K) ; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + +Standard_EXPORT NMTDS_IndexedDataMapOfIntegerShape(const NMTDS_IndexedDataMapOfIntegerShape& Other); + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_IndexedDataMapOfIntegerShape_0.cxx b/src/NMTDS/NMTDS_IndexedDataMapOfIntegerShape_0.cxx new file mode 100644 index 000000000..144b6a844 --- /dev/null +++ b/src/NMTDS/NMTDS_IndexedDataMapOfIntegerShape_0.cxx @@ -0,0 +1,55 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_DomainError_HeaderFile +#include +#endif +#ifndef _Standard_OutOfRange_HeaderFile +#include +#endif +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _TColStd_MapIntegerHasher_HeaderFile +#include +#endif +#ifndef _NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_HeaderFile +#include +#endif + + +#define TheKey Standard_Integer +#define TheKey_hxx +#define TheItem TopoDS_Shape +#define TheItem_hxx +#define Hasher TColStd_MapIntegerHasher +#define Hasher_hxx +#define TCollection_IndexedDataMapNode NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape +#define TCollection_IndexedDataMapNode_hxx +#define Handle_TCollection_IndexedDataMapNode Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape +#define TCollection_IndexedDataMapNode_Type_() NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_Type_() +#define TCollection_IndexedDataMap NMTDS_IndexedDataMapOfIntegerShape +#define TCollection_IndexedDataMap_hxx +#include + diff --git a/src/NMTDS/NMTDS_IndexedDataMapOfShapeBox.hxx b/src/NMTDS/NMTDS_IndexedDataMapOfShapeBox.hxx new file mode 100644 index 000000000..98752296f --- /dev/null +++ b/src/NMTDS/NMTDS_IndexedDataMapOfShapeBox.hxx @@ -0,0 +1,170 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTDS_IndexedDataMapOfShapeBox_HeaderFile +#define _NMTDS_IndexedDataMapOfShapeBox_HeaderFile + +#ifndef _TCollection_BasicMap_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class Standard_DomainError; +class Standard_OutOfRange; +class Standard_NoSuchObject; +class TopoDS_Shape; +class Bnd_Box; +class TopTools_ShapeMapHasher; +class NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_IndexedDataMapOfShapeBox : public TCollection_BasicMap { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_IndexedDataMapOfShapeBox(const Standard_Integer NbBuckets = 1); + + +Standard_EXPORT NMTDS_IndexedDataMapOfShapeBox& Assign(const NMTDS_IndexedDataMapOfShapeBox& Other) ; + NMTDS_IndexedDataMapOfShapeBox& operator =(const NMTDS_IndexedDataMapOfShapeBox& Other) +{ + return Assign(Other); +} + + + +Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; + + +Standard_EXPORT void Clear() ; +~NMTDS_IndexedDataMapOfShapeBox() +{ + Clear(); +} + + + +Standard_EXPORT Standard_Integer Add(const TopoDS_Shape& K,const Bnd_Box& I) ; + + +Standard_EXPORT void Substitute(const Standard_Integer I,const TopoDS_Shape& K,const Bnd_Box& T) ; + + +Standard_EXPORT void RemoveLast() ; + + +Standard_EXPORT Standard_Boolean Contains(const TopoDS_Shape& K) const; + + +Standard_EXPORT const TopoDS_Shape& FindKey(const Standard_Integer I) const; + + +Standard_EXPORT const Bnd_Box& FindFromIndex(const Standard_Integer I) const; + const Bnd_Box& operator ()(const Standard_Integer I) const +{ + return FindFromIndex(I); +} + + + +Standard_EXPORT Bnd_Box& ChangeFromIndex(const Standard_Integer I) ; + Bnd_Box& operator ()(const Standard_Integer I) +{ + return ChangeFromIndex(I); +} + + + +Standard_EXPORT Standard_Integer FindIndex(const TopoDS_Shape& K) const; + + +Standard_EXPORT const Bnd_Box& FindFromKey(const TopoDS_Shape& K) const; + + +Standard_EXPORT Bnd_Box& ChangeFromKey(const TopoDS_Shape& K) ; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + +Standard_EXPORT NMTDS_IndexedDataMapOfShapeBox(const NMTDS_IndexedDataMapOfShapeBox& Other); + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_IndexedDataMapOfShapeBox_0.cxx b/src/NMTDS/NMTDS_IndexedDataMapOfShapeBox_0.cxx new file mode 100644 index 000000000..53b8ed306 --- /dev/null +++ b/src/NMTDS/NMTDS_IndexedDataMapOfShapeBox_0.cxx @@ -0,0 +1,58 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_DomainError_HeaderFile +#include +#endif +#ifndef _Standard_OutOfRange_HeaderFile +#include +#endif +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _TopoDS_Shape_HeaderFile +#include +#endif +#ifndef _Bnd_Box_HeaderFile +#include +#endif +#ifndef _TopTools_ShapeMapHasher_HeaderFile +#include +#endif +#ifndef _NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_HeaderFile +#include +#endif + + +#define TheKey TopoDS_Shape +#define TheKey_hxx +#define TheItem Bnd_Box +#define TheItem_hxx +#define Hasher TopTools_ShapeMapHasher +#define Hasher_hxx +#define TCollection_IndexedDataMapNode NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox +#define TCollection_IndexedDataMapNode_hxx +#define Handle_TCollection_IndexedDataMapNode Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox +#define TCollection_IndexedDataMapNode_Type_() NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_Type_() +#define TCollection_IndexedDataMap NMTDS_IndexedDataMapOfShapeBox +#define TCollection_IndexedDataMap_hxx +#include + diff --git a/src/NMTDS/NMTDS_Iterator.cdl b/src/NMTDS/NMTDS_Iterator.cdl new file mode 100755 index 000000000..05a026a73 --- /dev/null +++ b/src/NMTDS/NMTDS_Iterator.cdl @@ -0,0 +1,83 @@ +-- Copyright (C) 2006 SAMTECH +-- +-- 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.com +-- +-- File: NMTDS_Iterator.cdl +-- Created: Sun May 07 14:58:16 2006 +-- Author: Peter KURNEV +-- + + + +class Iterator from NMTDS + + ---Purpose: + +uses + DataMapOfIntegerListOfInteger from TColStd, + ShapeEnum from TopAbs, + ShapesDataStructure from NMTDS, + PShapesDataStructure from NMTDS, + ListOfPassKeyBoolean from NMTDS, + ListIteratorOfListOfPassKeyBoolean from NMTDS +--raises + +is + Create + returns Iterator from NMTDS; + ---C++: alias "Standard_EXPORT virtual ~NMTDS_Iterator();" + + + SetDS(me:out; + pDS:PShapesDataStructure from NMTDS); + + DS(me) + returns ShapesDataStructure from NMTDS; + ---C++:return const & + + Initialize(me: out; + aType1: ShapeEnum from TopAbs; + aType2: ShapeEnum from TopAbs); + More(me) + returns Boolean from Standard; + + Next(me: out); + + Current(me; aIndex1:out Integer from Standard; + aIndex2:out Integer from Standard; + aWithSubShape: out Boolean from Standard); + + Prepare(me:out); + + ExpectedLength(me) + returns Integer from Standard; + + SDVertices(me) + returns DataMapOfIntegerListOfInteger from TColStd; + ---C++:return const & + + +fields + myPDS :PShapesDataStructure from NMTDS is protected; + myLists :ListOfPassKeyBoolean from NMTDS [6] is protected; + myIterator :ListIteratorOfListOfPassKeyBoolean from NMTDS is protected; + myEmptyList:ListOfPassKeyBoolean from NMTDS is protected; + myLength :Integer from Standard is protected; + -- + myMVSD :DataMapOfIntegerListOfInteger from TColStd is protected; + +end Iterator; diff --git a/src/NMTDS/NMTDS_Iterator.cxx b/src/NMTDS/NMTDS_Iterator.cxx new file mode 100755 index 000000000..d186736c0 --- /dev/null +++ b/src/NMTDS/NMTDS_Iterator.cxx @@ -0,0 +1,394 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// File: NMTDS_Iterator.cxx +// Created: Sun May 07 15:04:41 2006 +// Author: Peter KURNEV +// + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +static + void ComputeBoxEx(const Standard_Integer aIx, + NMTDS_ShapesDataStructure* pDS, + Bnd_Box& aBoxEx); + +static inline + Standard_Boolean IsValidType(const TopAbs_ShapeEnum aT); + +static + Standard_Integer TypeToInteger(const TopAbs_ShapeEnum aType1, + const TopAbs_ShapeEnum aType2); + + +//======================================================================= +//function : NMTDS_Iterator +//purpose : +//======================================================================= + NMTDS_Iterator::NMTDS_Iterator() +{ + myPDS=NULL; + myLength=0; +} +//======================================================================= +//function : ~NMTDS_Iterator +//purpose : +//======================================================================= + NMTDS_Iterator::~NMTDS_Iterator() +{ +} +//======================================================================= +// function: SetDS +// purpose: +//======================================================================= + void NMTDS_Iterator::SetDS(const NMTDS_PShapesDataStructure& aDS) +{ + myPDS=aDS; +} +//======================================================================= +// function: DS +// purpose: +//======================================================================= + const NMTDS_ShapesDataStructure& NMTDS_Iterator::DS()const +{ + return *myPDS; +} +//======================================================================= +// function: ExpectedLength +// purpose: +//======================================================================= + Standard_Integer NMTDS_Iterator::ExpectedLength() const +{ + return myLength; +} +//======================================================================= +// function: Initialize +// purpose: +//======================================================================= + void NMTDS_Iterator::Initialize(const TopAbs_ShapeEnum aType1, + const TopAbs_ShapeEnum aType2) +{ + Standard_Integer iX; + // + iX=TypeToInteger(aType1, aType2); + if (iX>=0) { + myIterator.Initialize(myLists[iX]); + myLength=myLists[iX].Extent(); + } + else { + myIterator.Initialize(myEmptyList); + myLength=0; + } +} +//======================================================================= +// function: More +// purpose: +//======================================================================= + Standard_Boolean NMTDS_Iterator::More()const +{ + return myIterator.More(); +} +//======================================================================= +// function: Next +// purpose: +//======================================================================= + void NMTDS_Iterator::Next() +{ + myIterator.Next(); +} +//======================================================================= +// function: Current +// purpose: +//======================================================================= + void NMTDS_Iterator::Current(Standard_Integer& aIndex1, + Standard_Integer& aIndex2, + Standard_Boolean& aWithSubShape) const +{ + const NMTDS_PassKeyBoolean& aPKB=myIterator.Value(); + aPKB.Ids(aIndex1, aIndex2); + aWithSubShape=aPKB.Flag(); +} +//======================================================================= +// function: SDVertices +// purpose: +//======================================================================= + const TColStd_DataMapOfIntegerListOfInteger& NMTDS_Iterator::SDVertices()const +{ + return myMVSD; +} + +//======================================================================= +// function: Prepare +// purpose: +//======================================================================= + void NMTDS_Iterator::Prepare() +{ + Standard_Boolean bFlag; + Standard_Integer aNb, i, aNbB, aNbR; + Standard_Integer i1, i2, aNbSD, iX, j, iDS, jB, iR, k, aNbLV; + TColStd_ListIteratorOfListOfInteger aIt; + TColStd_DataMapOfIntegerInteger aMII; + TColStd_MapOfInteger aMFence; + TopTools_DataMapOfShapeInteger aMSI; + TopAbs_ShapeEnum aTi, aTj; + NMTDS_PassKeyBoolean aPKXB; + NMTDS_MapOfPassKeyBoolean aMPKXB; + NMTDS_IndexedDataMapOfShapeBox aMSB; + Handle(Bnd_HArray1OfBox) aHAB; + Bnd_BoundSortBox aBSB; + // + NMTDS_BoxBndTreeSelector aSelector; + NMTDS_BoxBndTree aBBTree; + NCollection_UBTreeFiller aTreeFiller(aBBTree); + // + if (myPDS==NULL){ + return; + } + // + myLength=0; + for (i=0; i<6; ++i) { + myLists[i].Clear(); + } + myMVSD.Clear(); + // + const NMTDS_CArray1OfIndexRange& aRanges=myPDS->Ranges(); + aNbR=aRanges.Extent(); + // + aNb=myPDS->NumberOfShapesOfTheObject(); + for (i=1; i<=aNb; ++i) { + const TopoDS_Shape& aS=myPDS->Shape(i); + aTi=aS.ShapeType(); + if (IsValidType(aTi)) { + Bnd_Box aBoxEx; + // + ComputeBoxEx(i, myPDS, aBoxEx); + aMSI.Bind(aS, i); + aMSB.Add(aS, aBoxEx); + } + } + // + aNbB=aMSB.Extent(); + // + for (i=1; i<=aNbB; ++i) { + const TopoDS_Shape& aS=aMSB.FindKey(i); + const Bnd_Box& aBoxEx=aMSB(i); + // + aTreeFiller.Add(i, aBoxEx); + // + iDS=aMSI.Find(aS); + aMII.Bind(i, iDS); + } + // + aTreeFiller.Fill(); + // + for (iR=1; iRShape(i); + aTi=aSi.ShapeType(); + if (!IsValidType(aTi)){ + continue; + } + const Bnd_Box& aBoxEx=aMSB.FindFromKey(aSi); + aSelector.Clear(); + aSelector.SetBox(aBoxEx); + // + aNbSD=aBBTree.Select(aSelector); + // + if (!aNbSD){ + continue; + } + // + const TColStd_ListOfInteger& aLI=aSelector.Indices(); + // + k=0; + TColStd_ListOfInteger aLV; + // + aIt.Initialize(aLI); + for (; aIt.More(); aIt.Next()) { + jB=aIt.Value(); // box index in MII + j=aMII.Find(jB); // DS index + if (j>=i1 && j<=i2) { + continue;// same range + } + // + aPKXB.SetIds(i, j); + if (aMPKXB.Add(aPKXB)) { + bFlag=Standard_False;// Bounding boxes are intersected + const Bnd_Box& aBoxi=myPDS->GetBoundingBox(i); + const Bnd_Box& aBoxj=myPDS->GetBoundingBox(j); + if (aBoxi.IsOut(aBoxj)) { + bFlag=!bFlag; //Bounding boxes of Sub-shapes are intersected + } + const TopoDS_Shape& aSj=myPDS->Shape(j); + aTj=aSj.ShapeType(); + iX=TypeToInteger(aTi, aTj); + + aPKXB.SetFlag(bFlag); + myLists[iX].Append(aPKXB); + // + // VSD prepare + if (iX==5) { //VV + if (aMFence.Add(j)) { + aLV.Append(j); + } + } + }// if (aMPKXB.Add(aPKXB)) { + }// for (; aIt.More(); aIt.Next()) { + // + // VSD treatment + aNbLV=aLV.Extent(); + if (aNbLV) { + myMVSD.Bind(i, aLV); + } + }//for (i=i1; i<=i2; ++i) { + }//for (iR=1; iRGetBoundingBox(aIx); + aBoxEx.Add(aBox); + // + aNbS=pDS->NumberOfSuccessors(aIx); + for (i=1; i<=aNbS; ++i) { + Bnd_Box aBoxS; + iS=pDS->GetSuccessor(aIx, i); + ComputeBoxEx(iS, pDS, aBoxS); + aBoxEx.Add(aBoxS); + } +} + +//======================================================================= +// function: TypeToInteger +// purpose: +//======================================================================= +Standard_Integer TypeToInteger(const TopAbs_ShapeEnum aType1, + const TopAbs_ShapeEnum aType2) +{ + Standard_Integer iRet, iT1, iT2, iX; + // + iRet=-1; + iT1=(Standard_Integer)aType1; + iT2=(Standard_Integer)aType2; + // + iX=iT2*10+iT1; + switch (iX) { + case 77: + iRet=5; // VV + break; + case 76: + case 67: + iRet=4; // VE + break; + case 74: + case 47: + iRet=2; // VF + break; + case 66: + iRet=3; // EE + break; + case 64: + case 46: + iRet=1; // EF + break; + case 44: + iRet=0; // FF + break; + default: + break; + } + return iRet; +} + +/* +// + // check + TColStd_DataMapIteratorOfDataMapOfIntegerListOfInteger aIt1; + TColStd_DataMapIteratorOfDataMapOfIntegerInteger aIt2; + // + printf(" \n"); + printf(" aMVLV.Extent()=%d\n", aMVLV.Extent()); + aIt1.Initialize(aMVLV); + for (; aIt1.More(); aIt1.Next()) { + i=aIt1.Key(); + printf(" i=%d (", i); + const TColStd_ListOfInteger& aLV=aIt1.Value(); + aIt.Initialize(aLV); + for (; aIt.More(); aIt.Next()) { + j=aIt.Value(); + printf(" %d", j); + } + printf(")\n"); + } + // + printf(" \n"); + printf(" aMVV.Extent()=%d\n", aMVV.Extent()); + aIt2.Initialize(aMVV); + for (; aIt2.More(); aIt2.Next()) { + i=aIt2.Key(); + j=aIt2.Value(); + printf(" (%d, %d)\n", i, j); + } + printf("\n"); +*/ diff --git a/src/NMTDS/NMTDS_Iterator.hxx b/src/NMTDS/NMTDS_Iterator.hxx new file mode 100644 index 000000000..d2d260ccd --- /dev/null +++ b/src/NMTDS/NMTDS_Iterator.hxx @@ -0,0 +1,146 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTDS_Iterator_HeaderFile +#define _NMTDS_Iterator_HeaderFile + +#ifndef _NMTDS_PShapesDataStructure_HeaderFile +#include +#endif +#ifndef _NMTDS_ListOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_ListIteratorOfListOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _TColStd_DataMapOfIntegerListOfInteger_HeaderFile +#include +#endif +#ifndef _TopAbs_ShapeEnum_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class NMTDS_ShapesDataStructure; +class TColStd_DataMapOfIntegerListOfInteger; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_Iterator { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_Iterator(); +Standard_EXPORT virtual ~NMTDS_Iterator(); + + +Standard_EXPORT void SetDS(const NMTDS_PShapesDataStructure& pDS) ; + + +Standard_EXPORT const NMTDS_ShapesDataStructure& DS() const; + + +Standard_EXPORT void Initialize(const TopAbs_ShapeEnum aType1,const TopAbs_ShapeEnum aType2) ; + + +Standard_EXPORT Standard_Boolean More() const; + + +Standard_EXPORT void Next() ; + + +Standard_EXPORT void Current(Standard_Integer& aIndex1,Standard_Integer& aIndex2,Standard_Boolean& aWithSubShape) const; + + +Standard_EXPORT void Prepare() ; + + +Standard_EXPORT Standard_Integer ExpectedLength() const; + + +Standard_EXPORT const TColStd_DataMapOfIntegerListOfInteger& SDVertices() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // +NMTDS_PShapesDataStructure myPDS; +NMTDS_ListOfPassKeyBoolean myLists[6]; +NMTDS_ListIteratorOfListOfPassKeyBoolean myIterator; +NMTDS_ListOfPassKeyBoolean myEmptyList; +Standard_Integer myLength; +TColStd_DataMapOfIntegerListOfInteger myMVSD; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_Iterator.ixx b/src/NMTDS/NMTDS_Iterator.ixx new file mode 100644 index 000000000..adb6c909f --- /dev/null +++ b/src/NMTDS/NMTDS_Iterator.ixx @@ -0,0 +1,24 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + + + + diff --git a/src/NMTDS/NMTDS_Iterator.jxx b/src/NMTDS/NMTDS_Iterator.jxx new file mode 100644 index 000000000..4a0e4fb7c --- /dev/null +++ b/src/NMTDS/NMTDS_Iterator.jxx @@ -0,0 +1,28 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTDS_ShapesDataStructure_HeaderFile +#include +#endif +#ifndef _TColStd_DataMapOfIntegerListOfInteger_HeaderFile +#include +#endif +#ifndef _NMTDS_Iterator_HeaderFile +#include +#endif diff --git a/src/NMTDS/NMTDS_ListIteratorOfListOfPassKey.hxx b/src/NMTDS/NMTDS_ListIteratorOfListOfPassKey.hxx new file mode 100644 index 000000000..bf3646a40 --- /dev/null +++ b/src/NMTDS/NMTDS_ListIteratorOfListOfPassKey.hxx @@ -0,0 +1,141 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTDS_ListIteratorOfListOfPassKey_HeaderFile +#define _NMTDS_ListIteratorOfListOfPassKey_HeaderFile + +#ifndef _Standard_Address_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_ListNodeOfListOfPassKey_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class Standard_NoMoreObject; +class Standard_NoSuchObject; +class NMTDS_ListOfPassKey; +class NMTDS_PassKey; +class NMTDS_ListNodeOfListOfPassKey; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_ListIteratorOfListOfPassKey { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_ListIteratorOfListOfPassKey(); + + +Standard_EXPORT NMTDS_ListIteratorOfListOfPassKey(const NMTDS_ListOfPassKey& L); + + +Standard_EXPORT void Initialize(const NMTDS_ListOfPassKey& L) ; + + Standard_Boolean More() const; + + +Standard_EXPORT void Next() ; + + +Standard_EXPORT NMTDS_PassKey& Value() const; + + +friend class NMTDS_ListOfPassKey; + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // +Standard_Address current; +Standard_Address previous; + + +}; + +#define Item NMTDS_PassKey +#define Item_hxx +#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKey +#define TCollection_ListNode_hxx +#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKey +#define TCollection_ListIterator_hxx +#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKey +#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKey_Type_() +#define TCollection_List NMTDS_ListOfPassKey +#define TCollection_List_hxx + +#include + +#undef Item +#undef Item_hxx +#undef TCollection_ListNode +#undef TCollection_ListNode_hxx +#undef TCollection_ListIterator +#undef TCollection_ListIterator_hxx +#undef Handle_TCollection_ListNode +#undef TCollection_ListNode_Type_ +#undef TCollection_List +#undef TCollection_List_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx b/src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx new file mode 100644 index 000000000..bd2e0e03b --- /dev/null +++ b/src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx @@ -0,0 +1,141 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTDS_ListIteratorOfListOfPassKeyBoolean_HeaderFile +#define _NMTDS_ListIteratorOfListOfPassKeyBoolean_HeaderFile + +#ifndef _Standard_Address_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class Standard_NoMoreObject; +class Standard_NoSuchObject; +class NMTDS_ListOfPassKeyBoolean; +class NMTDS_PassKeyBoolean; +class NMTDS_ListNodeOfListOfPassKeyBoolean; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_ListIteratorOfListOfPassKeyBoolean { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_ListIteratorOfListOfPassKeyBoolean(); + + +Standard_EXPORT NMTDS_ListIteratorOfListOfPassKeyBoolean(const NMTDS_ListOfPassKeyBoolean& L); + + +Standard_EXPORT void Initialize(const NMTDS_ListOfPassKeyBoolean& L) ; + + Standard_Boolean More() const; + + +Standard_EXPORT void Next() ; + + +Standard_EXPORT NMTDS_PassKeyBoolean& Value() const; + + +friend class NMTDS_ListOfPassKeyBoolean; + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // +Standard_Address current; +Standard_Address previous; + + +}; + +#define Item NMTDS_PassKeyBoolean +#define Item_hxx +#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKeyBoolean +#define TCollection_ListNode_hxx +#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKeyBoolean +#define TCollection_ListIterator_hxx +#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKeyBoolean +#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKeyBoolean_Type_() +#define TCollection_List NMTDS_ListOfPassKeyBoolean +#define TCollection_List_hxx + +#include + +#undef Item +#undef Item_hxx +#undef TCollection_ListNode +#undef TCollection_ListNode_hxx +#undef TCollection_ListIterator +#undef TCollection_ListIterator_hxx +#undef Handle_TCollection_ListNode +#undef TCollection_ListNode_Type_ +#undef TCollection_List +#undef TCollection_List_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean_0.cxx b/src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean_0.cxx new file mode 100644 index 000000000..a0daa155d --- /dev/null +++ b/src/NMTDS/NMTDS_ListIteratorOfListOfPassKeyBoolean_0.cxx @@ -0,0 +1,50 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_NoMoreObject_HeaderFile +#include +#endif +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _NMTDS_ListOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile +#include +#endif + + +#define Item NMTDS_PassKeyBoolean +#define Item_hxx +#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKeyBoolean +#define TCollection_ListNode_hxx +#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKeyBoolean +#define TCollection_ListIterator_hxx +#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKeyBoolean +#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKeyBoolean_Type_() +#define TCollection_List NMTDS_ListOfPassKeyBoolean +#define TCollection_List_hxx +#include + diff --git a/src/NMTDS/NMTDS_ListIteratorOfListOfPassKey_0.cxx b/src/NMTDS/NMTDS_ListIteratorOfListOfPassKey_0.cxx new file mode 100644 index 000000000..de084cc19 --- /dev/null +++ b/src/NMTDS/NMTDS_ListIteratorOfListOfPassKey_0.cxx @@ -0,0 +1,50 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_NoMoreObject_HeaderFile +#include +#endif +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _NMTDS_ListOfPassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_ListNodeOfListOfPassKey_HeaderFile +#include +#endif + + +#define Item NMTDS_PassKey +#define Item_hxx +#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKey +#define TCollection_ListNode_hxx +#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKey +#define TCollection_ListIterator_hxx +#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKey +#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKey_Type_() +#define TCollection_List NMTDS_ListOfPassKey +#define TCollection_List_hxx +#include + diff --git a/src/NMTDS/NMTDS_ListNodeOfListOfPassKey.hxx b/src/NMTDS/NMTDS_ListNodeOfListOfPassKey.hxx new file mode 100644 index 000000000..160d2fbd3 --- /dev/null +++ b/src/NMTDS/NMTDS_ListNodeOfListOfPassKey.hxx @@ -0,0 +1,116 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTDS_ListNodeOfListOfPassKey_HeaderFile +#define _NMTDS_ListNodeOfListOfPassKey_HeaderFile + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_ListNodeOfListOfPassKey_HeaderFile +#include +#endif + +#ifndef _NMTDS_PassKey_HeaderFile +#include +#endif +#ifndef _TCollection_MapNode_HeaderFile +#include +#endif +#ifndef _TCollection_MapNodePtr_HeaderFile +#include +#endif +class NMTDS_PassKey; +class NMTDS_ListOfPassKey; +class NMTDS_ListIteratorOfListOfPassKey; + + + +class NMTDS_ListNodeOfListOfPassKey : public TCollection_MapNode { + +public: + // Methods PUBLIC + // + +NMTDS_ListNodeOfListOfPassKey(const NMTDS_PassKey& I,const TCollection_MapNodePtr& n); + + NMTDS_PassKey& Value() const; +//Standard_EXPORT ~NMTDS_ListNodeOfListOfPassKey(); + + + + + // Type management + // + Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // +NMTDS_PassKey myValue; + + +}; + +#define Item NMTDS_PassKey +#define Item_hxx +#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKey +#define TCollection_ListNode_hxx +#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKey +#define TCollection_ListIterator_hxx +#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKey +#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKey_Type_() +#define TCollection_List NMTDS_ListOfPassKey +#define TCollection_List_hxx + +#include + +#undef Item +#undef Item_hxx +#undef TCollection_ListNode +#undef TCollection_ListNode_hxx +#undef TCollection_ListIterator +#undef TCollection_ListIterator_hxx +#undef Handle_TCollection_ListNode +#undef TCollection_ListNode_Type_ +#undef TCollection_List +#undef TCollection_List_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_ListNodeOfListOfPassKeyBoolean.hxx b/src/NMTDS/NMTDS_ListNodeOfListOfPassKeyBoolean.hxx new file mode 100644 index 000000000..a6e96e655 --- /dev/null +++ b/src/NMTDS/NMTDS_ListNodeOfListOfPassKeyBoolean.hxx @@ -0,0 +1,116 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile +#define _NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile +#include +#endif + +#ifndef _NMTDS_PassKeyBoolean_HeaderFile +#include +#endif +#ifndef _TCollection_MapNode_HeaderFile +#include +#endif +#ifndef _TCollection_MapNodePtr_HeaderFile +#include +#endif +class NMTDS_PassKeyBoolean; +class NMTDS_ListOfPassKeyBoolean; +class NMTDS_ListIteratorOfListOfPassKeyBoolean; + + + +class NMTDS_ListNodeOfListOfPassKeyBoolean : public TCollection_MapNode { + +public: + // Methods PUBLIC + // + +NMTDS_ListNodeOfListOfPassKeyBoolean(const NMTDS_PassKeyBoolean& I,const TCollection_MapNodePtr& n); + + NMTDS_PassKeyBoolean& Value() const; +//Standard_EXPORT ~NMTDS_ListNodeOfListOfPassKeyBoolean(); + + + + + // Type management + // + Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // +NMTDS_PassKeyBoolean myValue; + + +}; + +#define Item NMTDS_PassKeyBoolean +#define Item_hxx +#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKeyBoolean +#define TCollection_ListNode_hxx +#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKeyBoolean +#define TCollection_ListIterator_hxx +#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKeyBoolean +#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKeyBoolean_Type_() +#define TCollection_List NMTDS_ListOfPassKeyBoolean +#define TCollection_List_hxx + +#include + +#undef Item +#undef Item_hxx +#undef TCollection_ListNode +#undef TCollection_ListNode_hxx +#undef TCollection_ListIterator +#undef TCollection_ListIterator_hxx +#undef Handle_TCollection_ListNode +#undef TCollection_ListNode_Type_ +#undef TCollection_List +#undef TCollection_List_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_ListNodeOfListOfPassKeyBoolean_0.cxx b/src/NMTDS/NMTDS_ListNodeOfListOfPassKeyBoolean_0.cxx new file mode 100644 index 000000000..e84d51f5b --- /dev/null +++ b/src/NMTDS/NMTDS_ListNodeOfListOfPassKeyBoolean_0.cxx @@ -0,0 +1,93 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_TypeMismatch_HeaderFile +#include +#endif + +#ifndef _NMTDS_PassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_ListOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_ListIteratorOfListOfPassKeyBoolean_HeaderFile +#include +#endif +//NMTDS_ListNodeOfListOfPassKeyBoolean::~NMTDS_ListNodeOfListOfPassKeyBoolean() {} + + + +Standard_EXPORT Handle_Standard_Type& NMTDS_ListNodeOfListOfPassKeyBoolean_Type_() +{ + + static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); + static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); + static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); + + + static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; + static Handle_Standard_Type _aType = new Standard_Type("NMTDS_ListNodeOfListOfPassKeyBoolean", + sizeof(NMTDS_ListNodeOfListOfPassKeyBoolean), + 1, + (Standard_Address)_Ancestors, + (Standard_Address)NULL); + + return _aType; +} + + +// DownCast method +// allow safe downcasting +// +const Handle(NMTDS_ListNodeOfListOfPassKeyBoolean) Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)::DownCast(const Handle(Standard_Transient)& AnObject) +{ + Handle(NMTDS_ListNodeOfListOfPassKeyBoolean) _anOtherObject; + + if (!AnObject.IsNull()) { + if (AnObject->IsKind(STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKeyBoolean))) { + _anOtherObject = Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)((Handle(NMTDS_ListNodeOfListOfPassKeyBoolean)&)AnObject); + } + } + + return _anOtherObject ; +} +const Handle(Standard_Type)& NMTDS_ListNodeOfListOfPassKeyBoolean::DynamicType() const +{ + return STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKeyBoolean) ; +} +//Standard_Boolean NMTDS_ListNodeOfListOfPassKeyBoolean::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKeyBoolean) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_NMTDS_ListNodeOfListOfPassKeyBoolean::~Handle_NMTDS_ListNodeOfListOfPassKeyBoolean() {} +#define Item NMTDS_PassKeyBoolean +#define Item_hxx +#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKeyBoolean +#define TCollection_ListNode_hxx +#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKeyBoolean +#define TCollection_ListIterator_hxx +#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKeyBoolean +#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKeyBoolean_Type_() +#define TCollection_List NMTDS_ListOfPassKeyBoolean +#define TCollection_List_hxx +#include + diff --git a/src/NMTDS/NMTDS_ListNodeOfListOfPassKey_0.cxx b/src/NMTDS/NMTDS_ListNodeOfListOfPassKey_0.cxx new file mode 100644 index 000000000..a85b03bc1 --- /dev/null +++ b/src/NMTDS/NMTDS_ListNodeOfListOfPassKey_0.cxx @@ -0,0 +1,93 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_TypeMismatch_HeaderFile +#include +#endif + +#ifndef _NMTDS_PassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_ListOfPassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_ListIteratorOfListOfPassKey_HeaderFile +#include +#endif +//NMTDS_ListNodeOfListOfPassKey::~NMTDS_ListNodeOfListOfPassKey() {} + + + +Standard_EXPORT Handle_Standard_Type& NMTDS_ListNodeOfListOfPassKey_Type_() +{ + + static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); + static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); + static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); + + + static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; + static Handle_Standard_Type _aType = new Standard_Type("NMTDS_ListNodeOfListOfPassKey", + sizeof(NMTDS_ListNodeOfListOfPassKey), + 1, + (Standard_Address)_Ancestors, + (Standard_Address)NULL); + + return _aType; +} + + +// DownCast method +// allow safe downcasting +// +const Handle(NMTDS_ListNodeOfListOfPassKey) Handle(NMTDS_ListNodeOfListOfPassKey)::DownCast(const Handle(Standard_Transient)& AnObject) +{ + Handle(NMTDS_ListNodeOfListOfPassKey) _anOtherObject; + + if (!AnObject.IsNull()) { + if (AnObject->IsKind(STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKey))) { + _anOtherObject = Handle(NMTDS_ListNodeOfListOfPassKey)((Handle(NMTDS_ListNodeOfListOfPassKey)&)AnObject); + } + } + + return _anOtherObject ; +} +const Handle(Standard_Type)& NMTDS_ListNodeOfListOfPassKey::DynamicType() const +{ + return STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKey) ; +} +//Standard_Boolean NMTDS_ListNodeOfListOfPassKey::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(NMTDS_ListNodeOfListOfPassKey) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_NMTDS_ListNodeOfListOfPassKey::~Handle_NMTDS_ListNodeOfListOfPassKey() {} +#define Item NMTDS_PassKey +#define Item_hxx +#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKey +#define TCollection_ListNode_hxx +#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKey +#define TCollection_ListIterator_hxx +#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKey +#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKey_Type_() +#define TCollection_List NMTDS_ListOfPassKey +#define TCollection_List_hxx +#include + diff --git a/src/NMTDS/NMTDS_ListOfPassKey.hxx b/src/NMTDS/NMTDS_ListOfPassKey.hxx new file mode 100644 index 000000000..207251094 --- /dev/null +++ b/src/NMTDS/NMTDS_ListOfPassKey.hxx @@ -0,0 +1,195 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTDS_ListOfPassKey_HeaderFile +#define _NMTDS_ListOfPassKey_HeaderFile + +#ifndef _Standard_Address_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_ListNodeOfListOfPassKey_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class Standard_NoSuchObject; +class NMTDS_ListIteratorOfListOfPassKey; +class NMTDS_PassKey; +class NMTDS_ListNodeOfListOfPassKey; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_ListOfPassKey { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_ListOfPassKey(); + + +Standard_EXPORT void Assign(const NMTDS_ListOfPassKey& Other) ; + void operator=(const NMTDS_ListOfPassKey& Other) +{ + Assign(Other); +} + + + +Standard_EXPORT Standard_Integer Extent() const; + + +Standard_EXPORT void Clear() ; +~NMTDS_ListOfPassKey() +{ + Clear(); +} + + + Standard_Boolean IsEmpty() const; + + +Standard_EXPORT void Prepend(const NMTDS_PassKey& I) ; + + +Standard_EXPORT void Prepend(const NMTDS_PassKey& I,NMTDS_ListIteratorOfListOfPassKey& theIt) ; + + +Standard_EXPORT void Prepend(NMTDS_ListOfPassKey& Other) ; + + +Standard_EXPORT void Append(const NMTDS_PassKey& I) ; + + +Standard_EXPORT void Append(const NMTDS_PassKey& I,NMTDS_ListIteratorOfListOfPassKey& theIt) ; + + +Standard_EXPORT void Append(NMTDS_ListOfPassKey& Other) ; + + +Standard_EXPORT NMTDS_PassKey& First() const; + + +Standard_EXPORT NMTDS_PassKey& Last() const; + + +Standard_EXPORT void RemoveFirst() ; + + +Standard_EXPORT void Remove(NMTDS_ListIteratorOfListOfPassKey& It) ; + + +Standard_EXPORT void InsertBefore(const NMTDS_PassKey& I,NMTDS_ListIteratorOfListOfPassKey& It) ; + + +Standard_EXPORT void InsertBefore(NMTDS_ListOfPassKey& Other,NMTDS_ListIteratorOfListOfPassKey& It) ; + + +Standard_EXPORT void InsertAfter(const NMTDS_PassKey& I,NMTDS_ListIteratorOfListOfPassKey& It) ; + + +Standard_EXPORT void InsertAfter(NMTDS_ListOfPassKey& Other,NMTDS_ListIteratorOfListOfPassKey& It) ; + + +friend class NMTDS_ListIteratorOfListOfPassKey; + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + +Standard_EXPORT NMTDS_ListOfPassKey(const NMTDS_ListOfPassKey& Other); + + + // Fields PRIVATE + // +Standard_Address myFirst; +Standard_Address myLast; + + +}; + +#define Item NMTDS_PassKey +#define Item_hxx +#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKey +#define TCollection_ListNode_hxx +#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKey +#define TCollection_ListIterator_hxx +#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKey +#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKey_Type_() +#define TCollection_List NMTDS_ListOfPassKey +#define TCollection_List_hxx + +#include + +#undef Item +#undef Item_hxx +#undef TCollection_ListNode +#undef TCollection_ListNode_hxx +#undef TCollection_ListIterator +#undef TCollection_ListIterator_hxx +#undef Handle_TCollection_ListNode +#undef TCollection_ListNode_Type_ +#undef TCollection_List +#undef TCollection_List_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_ListOfPassKeyBoolean.hxx b/src/NMTDS/NMTDS_ListOfPassKeyBoolean.hxx new file mode 100644 index 000000000..3ca9a39ab --- /dev/null +++ b/src/NMTDS/NMTDS_ListOfPassKeyBoolean.hxx @@ -0,0 +1,195 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTDS_ListOfPassKeyBoolean_HeaderFile +#define _NMTDS_ListOfPassKeyBoolean_HeaderFile + +#ifndef _Standard_Address_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class Standard_NoSuchObject; +class NMTDS_ListIteratorOfListOfPassKeyBoolean; +class NMTDS_PassKeyBoolean; +class NMTDS_ListNodeOfListOfPassKeyBoolean; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_ListOfPassKeyBoolean { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_ListOfPassKeyBoolean(); + + +Standard_EXPORT void Assign(const NMTDS_ListOfPassKeyBoolean& Other) ; + void operator=(const NMTDS_ListOfPassKeyBoolean& Other) +{ + Assign(Other); +} + + + +Standard_EXPORT Standard_Integer Extent() const; + + +Standard_EXPORT void Clear() ; +~NMTDS_ListOfPassKeyBoolean() +{ + Clear(); +} + + + Standard_Boolean IsEmpty() const; + + +Standard_EXPORT void Prepend(const NMTDS_PassKeyBoolean& I) ; + + +Standard_EXPORT void Prepend(const NMTDS_PassKeyBoolean& I,NMTDS_ListIteratorOfListOfPassKeyBoolean& theIt) ; + + +Standard_EXPORT void Prepend(NMTDS_ListOfPassKeyBoolean& Other) ; + + +Standard_EXPORT void Append(const NMTDS_PassKeyBoolean& I) ; + + +Standard_EXPORT void Append(const NMTDS_PassKeyBoolean& I,NMTDS_ListIteratorOfListOfPassKeyBoolean& theIt) ; + + +Standard_EXPORT void Append(NMTDS_ListOfPassKeyBoolean& Other) ; + + +Standard_EXPORT NMTDS_PassKeyBoolean& First() const; + + +Standard_EXPORT NMTDS_PassKeyBoolean& Last() const; + + +Standard_EXPORT void RemoveFirst() ; + + +Standard_EXPORT void Remove(NMTDS_ListIteratorOfListOfPassKeyBoolean& It) ; + + +Standard_EXPORT void InsertBefore(const NMTDS_PassKeyBoolean& I,NMTDS_ListIteratorOfListOfPassKeyBoolean& It) ; + + +Standard_EXPORT void InsertBefore(NMTDS_ListOfPassKeyBoolean& Other,NMTDS_ListIteratorOfListOfPassKeyBoolean& It) ; + + +Standard_EXPORT void InsertAfter(const NMTDS_PassKeyBoolean& I,NMTDS_ListIteratorOfListOfPassKeyBoolean& It) ; + + +Standard_EXPORT void InsertAfter(NMTDS_ListOfPassKeyBoolean& Other,NMTDS_ListIteratorOfListOfPassKeyBoolean& It) ; + + +friend class NMTDS_ListIteratorOfListOfPassKeyBoolean; + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + +Standard_EXPORT NMTDS_ListOfPassKeyBoolean(const NMTDS_ListOfPassKeyBoolean& Other); + + + // Fields PRIVATE + // +Standard_Address myFirst; +Standard_Address myLast; + + +}; + +#define Item NMTDS_PassKeyBoolean +#define Item_hxx +#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKeyBoolean +#define TCollection_ListNode_hxx +#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKeyBoolean +#define TCollection_ListIterator_hxx +#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKeyBoolean +#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKeyBoolean_Type_() +#define TCollection_List NMTDS_ListOfPassKeyBoolean +#define TCollection_List_hxx + +#include + +#undef Item +#undef Item_hxx +#undef TCollection_ListNode +#undef TCollection_ListNode_hxx +#undef TCollection_ListIterator +#undef TCollection_ListIterator_hxx +#undef Handle_TCollection_ListNode +#undef TCollection_ListNode_Type_ +#undef TCollection_List +#undef TCollection_List_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_ListOfPassKeyBoolean_0.cxx b/src/NMTDS/NMTDS_ListOfPassKeyBoolean_0.cxx new file mode 100644 index 000000000..846661e5f --- /dev/null +++ b/src/NMTDS/NMTDS_ListOfPassKeyBoolean_0.cxx @@ -0,0 +1,47 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _NMTDS_ListIteratorOfListOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_ListNodeOfListOfPassKeyBoolean_HeaderFile +#include +#endif + + +#define Item NMTDS_PassKeyBoolean +#define Item_hxx +#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKeyBoolean +#define TCollection_ListNode_hxx +#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKeyBoolean +#define TCollection_ListIterator_hxx +#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKeyBoolean +#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKeyBoolean_Type_() +#define TCollection_List NMTDS_ListOfPassKeyBoolean +#define TCollection_List_hxx +#include + diff --git a/src/NMTDS/NMTDS_ListOfPassKey_0.cxx b/src/NMTDS/NMTDS_ListOfPassKey_0.cxx new file mode 100644 index 000000000..f87d96c3b --- /dev/null +++ b/src/NMTDS/NMTDS_ListOfPassKey_0.cxx @@ -0,0 +1,47 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _NMTDS_ListIteratorOfListOfPassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_ListNodeOfListOfPassKey_HeaderFile +#include +#endif + + +#define Item NMTDS_PassKey +#define Item_hxx +#define TCollection_ListNode NMTDS_ListNodeOfListOfPassKey +#define TCollection_ListNode_hxx +#define TCollection_ListIterator NMTDS_ListIteratorOfListOfPassKey +#define TCollection_ListIterator_hxx +#define Handle_TCollection_ListNode Handle_NMTDS_ListNodeOfListOfPassKey +#define TCollection_ListNode_Type_() NMTDS_ListNodeOfListOfPassKey_Type_() +#define TCollection_List NMTDS_ListOfPassKey +#define TCollection_List_hxx +#include + diff --git a/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKey.hxx b/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKey.hxx new file mode 100644 index 000000000..71b372604 --- /dev/null +++ b/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKey.hxx @@ -0,0 +1,109 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTDS_MapIteratorOfMapOfPassKey_HeaderFile +#define _NMTDS_MapIteratorOfMapOfPassKey_HeaderFile + +#ifndef _TCollection_BasicMapIterator_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile +#include +#endif +class Standard_NoSuchObject; +class NMTDS_PassKey; +class NMTDS_PassKeyMapHasher; +class NMTDS_MapOfPassKey; +class NMTDS_StdMapNodeOfMapOfPassKey; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_MapIteratorOfMapOfPassKey : public TCollection_BasicMapIterator { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_MapIteratorOfMapOfPassKey(); + + +Standard_EXPORT NMTDS_MapIteratorOfMapOfPassKey(const NMTDS_MapOfPassKey& aMap); + + +Standard_EXPORT void Initialize(const NMTDS_MapOfPassKey& aMap) ; + + +Standard_EXPORT const NMTDS_PassKey& Key() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKeyBoolean.hxx b/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKeyBoolean.hxx new file mode 100644 index 000000000..dbff06524 --- /dev/null +++ b/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKeyBoolean.hxx @@ -0,0 +1,109 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTDS_MapIteratorOfMapOfPassKeyBoolean_HeaderFile +#define _NMTDS_MapIteratorOfMapOfPassKeyBoolean_HeaderFile + +#ifndef _TCollection_BasicMapIterator_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile +#include +#endif +class Standard_NoSuchObject; +class NMTDS_PassKeyBoolean; +class NMTDS_PassKeyMapHasher; +class NMTDS_MapOfPassKeyBoolean; +class NMTDS_StdMapNodeOfMapOfPassKeyBoolean; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_MapIteratorOfMapOfPassKeyBoolean : public TCollection_BasicMapIterator { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_MapIteratorOfMapOfPassKeyBoolean(); + + +Standard_EXPORT NMTDS_MapIteratorOfMapOfPassKeyBoolean(const NMTDS_MapOfPassKeyBoolean& aMap); + + +Standard_EXPORT void Initialize(const NMTDS_MapOfPassKeyBoolean& aMap) ; + + +Standard_EXPORT const NMTDS_PassKeyBoolean& Key() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKeyBoolean_0.cxx b/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKeyBoolean_0.cxx new file mode 100644 index 000000000..68c88970e --- /dev/null +++ b/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKeyBoolean_0.cxx @@ -0,0 +1,52 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKeyMapHasher_HeaderFile +#include +#endif +#ifndef _NMTDS_MapOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile +#include +#endif + + +#define TheKey NMTDS_PassKeyBoolean +#define TheKey_hxx +#define Hasher NMTDS_PassKeyMapHasher +#define Hasher_hxx +#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPassKeyBoolean +#define TCollection_StdMapNode_hxx +#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPassKeyBoolean +#define TCollection_MapIterator_hxx +#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean +#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPassKeyBoolean_Type_() +#define TCollection_Map NMTDS_MapOfPassKeyBoolean +#define TCollection_Map_hxx +#include + diff --git a/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKey_0.cxx b/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKey_0.cxx new file mode 100644 index 000000000..c96965f87 --- /dev/null +++ b/src/NMTDS/NMTDS_MapIteratorOfMapOfPassKey_0.cxx @@ -0,0 +1,52 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKeyMapHasher_HeaderFile +#include +#endif +#ifndef _NMTDS_MapOfPassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile +#include +#endif + + +#define TheKey NMTDS_PassKey +#define TheKey_hxx +#define Hasher NMTDS_PassKeyMapHasher +#define Hasher_hxx +#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPassKey +#define TCollection_StdMapNode_hxx +#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPassKey +#define TCollection_MapIterator_hxx +#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPassKey +#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPassKey_Type_() +#define TCollection_Map NMTDS_MapOfPassKey +#define TCollection_Map_hxx +#include + diff --git a/src/NMTDS/NMTDS_MapOfPassKey.hxx b/src/NMTDS/NMTDS_MapOfPassKey.hxx new file mode 100644 index 000000000..b9360dd20 --- /dev/null +++ b/src/NMTDS/NMTDS_MapOfPassKey.hxx @@ -0,0 +1,137 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTDS_MapOfPassKey_HeaderFile +#define _NMTDS_MapOfPassKey_HeaderFile + +#ifndef _TCollection_BasicMap_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class Standard_DomainError; +class NMTDS_PassKey; +class NMTDS_PassKeyMapHasher; +class NMTDS_StdMapNodeOfMapOfPassKey; +class NMTDS_MapIteratorOfMapOfPassKey; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_MapOfPassKey : public TCollection_BasicMap { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_MapOfPassKey(const Standard_Integer NbBuckets = 1); + + +Standard_EXPORT NMTDS_MapOfPassKey& Assign(const NMTDS_MapOfPassKey& Other) ; + NMTDS_MapOfPassKey& operator =(const NMTDS_MapOfPassKey& Other) +{ + return Assign(Other); +} + + + +Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; + + +Standard_EXPORT void Clear() ; +~NMTDS_MapOfPassKey() +{ + Clear(); +} + + + +Standard_EXPORT Standard_Boolean Add(const NMTDS_PassKey& aKey) ; + + +Standard_EXPORT Standard_Boolean Contains(const NMTDS_PassKey& aKey) const; + + +Standard_EXPORT Standard_Boolean Remove(const NMTDS_PassKey& aKey) ; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + +Standard_EXPORT NMTDS_MapOfPassKey(const NMTDS_MapOfPassKey& Other); + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_MapOfPassKeyBoolean.hxx b/src/NMTDS/NMTDS_MapOfPassKeyBoolean.hxx new file mode 100644 index 000000000..8f0312b63 --- /dev/null +++ b/src/NMTDS/NMTDS_MapOfPassKeyBoolean.hxx @@ -0,0 +1,137 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTDS_MapOfPassKeyBoolean_HeaderFile +#define _NMTDS_MapOfPassKeyBoolean_HeaderFile + +#ifndef _TCollection_BasicMap_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class Standard_DomainError; +class NMTDS_PassKeyBoolean; +class NMTDS_PassKeyMapHasher; +class NMTDS_StdMapNodeOfMapOfPassKeyBoolean; +class NMTDS_MapIteratorOfMapOfPassKeyBoolean; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_MapOfPassKeyBoolean : public TCollection_BasicMap { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_MapOfPassKeyBoolean(const Standard_Integer NbBuckets = 1); + + +Standard_EXPORT NMTDS_MapOfPassKeyBoolean& Assign(const NMTDS_MapOfPassKeyBoolean& Other) ; + NMTDS_MapOfPassKeyBoolean& operator =(const NMTDS_MapOfPassKeyBoolean& Other) +{ + return Assign(Other); +} + + + +Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; + + +Standard_EXPORT void Clear() ; +~NMTDS_MapOfPassKeyBoolean() +{ + Clear(); +} + + + +Standard_EXPORT Standard_Boolean Add(const NMTDS_PassKeyBoolean& aKey) ; + + +Standard_EXPORT Standard_Boolean Contains(const NMTDS_PassKeyBoolean& aKey) const; + + +Standard_EXPORT Standard_Boolean Remove(const NMTDS_PassKeyBoolean& aKey) ; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + +Standard_EXPORT NMTDS_MapOfPassKeyBoolean(const NMTDS_MapOfPassKeyBoolean& Other); + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_MapOfPassKeyBoolean_0.cxx b/src/NMTDS/NMTDS_MapOfPassKeyBoolean_0.cxx new file mode 100644 index 000000000..4c9ac2a3f --- /dev/null +++ b/src/NMTDS/NMTDS_MapOfPassKeyBoolean_0.cxx @@ -0,0 +1,52 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_DomainError_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKeyMapHasher_HeaderFile +#include +#endif +#ifndef _NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_MapIteratorOfMapOfPassKeyBoolean_HeaderFile +#include +#endif + + +#define TheKey NMTDS_PassKeyBoolean +#define TheKey_hxx +#define Hasher NMTDS_PassKeyMapHasher +#define Hasher_hxx +#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPassKeyBoolean +#define TCollection_StdMapNode_hxx +#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPassKeyBoolean +#define TCollection_MapIterator_hxx +#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean +#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPassKeyBoolean_Type_() +#define TCollection_Map NMTDS_MapOfPassKeyBoolean +#define TCollection_Map_hxx +#include + diff --git a/src/NMTDS/NMTDS_MapOfPassKey_0.cxx b/src/NMTDS/NMTDS_MapOfPassKey_0.cxx new file mode 100644 index 000000000..12f3a2289 --- /dev/null +++ b/src/NMTDS/NMTDS_MapOfPassKey_0.cxx @@ -0,0 +1,52 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_DomainError_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKeyMapHasher_HeaderFile +#include +#endif +#ifndef _NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_MapIteratorOfMapOfPassKey_HeaderFile +#include +#endif + + +#define TheKey NMTDS_PassKey +#define TheKey_hxx +#define Hasher NMTDS_PassKeyMapHasher +#define Hasher_hxx +#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPassKey +#define TCollection_StdMapNode_hxx +#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPassKey +#define TCollection_MapIterator_hxx +#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPassKey +#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPassKey_Type_() +#define TCollection_Map NMTDS_MapOfPassKey +#define TCollection_Map_hxx +#include + diff --git a/src/NMTDS/NMTDS_PassKey.cdl b/src/NMTDS/NMTDS_PassKey.cdl new file mode 100755 index 000000000..e9a637a46 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKey.cdl @@ -0,0 +1,80 @@ +-- Copyright (C) 2006 SAMTECH +-- +-- 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.com +-- +-- File: NMTDS_PassKey.cdl +-- Created: +-- Author: Peter KURNEV +-- + +class PassKey from NMTDS + + ---Purpose: + +uses + Shape from TopoDS, + ListOfInteger from TColStd + +--raises + +is + Create + returns PassKey from NMTDS; + + Assign(me:out; + Other : PassKey from NMTDS) + returns PassKey from NMTDS; + ---C++: alias operator = + ---C++: return & +-- + SetIds(me:out; + aI1 :Integer from Standard; + aI2 :Integer from Standard); + + NbMax(me) + returns Integer from Standard; + + Clear(me:out); + + Compute(me:out); + + IsEqual(me; + aOther:PassKey from NMTDS) + returns Boolean from Standard; + + Key(me) + returns Address from Standard; + + HashCode(me; + Upper : Integer from Standard) + returns Integer from Standard; + + + Ids(me; + aI1 :out Integer from Standard; + aI2 :out Integer from Standard); + + Dump(me); + +fields + + myNbIds: Integer from Standard is protected; + myNbMax: Integer from Standard is protected; + mySum : Integer from Standard is protected; + myIds : Integer from Standard [2] is protected; + +end PassKey; diff --git a/src/NMTDS/NMTDS_PassKey.cxx b/src/NMTDS/NMTDS_PassKey.cxx new file mode 100755 index 000000000..910400cd6 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKey.cxx @@ -0,0 +1,216 @@ +// Copyright (C) 2006 SAMTECH +// +// 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.com +// +// File: NMTDS_PassKey.cxx +// Created: +// Author: Peter KURNEV +// + + +#include + +#include +#include +#include + +#ifdef WNT +#pragma warning( disable : 4101) +#endif + +static + void SortShell(const int n, int* a); +static + Standard_Integer NormalizedId(const Standard_Integer aId, + const Standard_Integer aDiv); + +//======================================================================= +//function : +//purpose : +//======================================================================= + NMTDS_PassKey::NMTDS_PassKey() +{ + Clear(); +} +//======================================================================= +//function :Assign +//purpose : +//======================================================================= + NMTDS_PassKey& NMTDS_PassKey::Assign(const NMTDS_PassKey& anOther) +{ + myNbIds=anOther.myNbIds; + myNbMax=anOther.myNbMax; + mySum=anOther.mySum; + memcpy(myIds, anOther.myIds, sizeof(myIds)); + return *this; +} +//======================================================================= +//function :Clear +//purpose : +//======================================================================= + void NMTDS_PassKey::Clear() +{ + Standard_Integer i; + // + myNbIds=0; + myNbMax=2; + mySum=0; + for (i=0; iaTresh) { + aIdRet=aId%aTresh; + } + return aIdRet; +} +//======================================================================= +// function: SortShell +// purpose : +//======================================================================= +void SortShell(const int n, int* a) +{ + int x, nd, i, j, l, d=1; + // + while(d<=n) { + d*=2; + } + // + while (d) { + d=(d-1)/2; + // + nd=n-d; + for (i=0; i -1) goto m30; + }//if (a[l] < a[j]){ + }//for (i=0; i +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +#ifndef _Standard_Address_HeaderFile +#include +#endif + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_PassKey { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_PassKey(); + + +Standard_EXPORT NMTDS_PassKey& Assign(const NMTDS_PassKey& Other) ; + NMTDS_PassKey& operator =(const NMTDS_PassKey& Other) +{ + return Assign(Other); +} + + + +Standard_EXPORT void SetIds(const Standard_Integer aI1,const Standard_Integer aI2) ; + + +Standard_EXPORT Standard_Integer NbMax() const; + + +Standard_EXPORT void Clear() ; + + +Standard_EXPORT void Compute() ; + + +Standard_EXPORT Standard_Boolean IsEqual(const NMTDS_PassKey& aOther) const; + + +Standard_EXPORT Standard_Address Key() const; + + +Standard_EXPORT Standard_Integer HashCode(const Standard_Integer Upper) const; + + +Standard_EXPORT void Ids(Standard_Integer& aI1,Standard_Integer& aI2) const; + + +Standard_EXPORT void Dump() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // +Standard_Integer myNbIds; +Standard_Integer myNbMax; +Standard_Integer mySum; +Standard_Integer myIds[2]; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_PassKey.ixx b/src/NMTDS/NMTDS_PassKey.ixx new file mode 100644 index 000000000..906d159d0 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKey.ixx @@ -0,0 +1,24 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + + + + diff --git a/src/NMTDS/NMTDS_PassKey.jxx b/src/NMTDS/NMTDS_PassKey.jxx new file mode 100644 index 000000000..02ef906d3 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKey.jxx @@ -0,0 +1,22 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTDS_PassKey_HeaderFile +#include +#endif diff --git a/src/NMTDS/NMTDS_PassKeyBoolean.cdl b/src/NMTDS/NMTDS_PassKeyBoolean.cdl new file mode 100755 index 000000000..2ad7871a0 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKeyBoolean.cdl @@ -0,0 +1,56 @@ +-- Copyright (C) 2006 SAMTECH +-- +-- 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.com +-- +-- File: NMTDS_PassKeyBoolean.cdl +-- Created: +-- Author: Peter KURNEV +-- + + +class PassKeyBoolean from NMTDS + inherits PassKey from NMTDS + + ---Purpose: + +uses + Shape from TopoDS, + ListOfInteger from TColStd + +--raises + +is + Create + returns PassKeyBoolean from NMTDS; + + Assign(me:out; + Other : PassKeyBoolean from NMTDS) + returns PassKeyBoolean from NMTDS; + ---C++: alias operator = + ---C++: return & +-- + SetFlag(me:out; + aFlag: Boolean from Standard); + + Flag(me) + returns Boolean from Standard; + +fields + + myFlag: Boolean from Standard is protected; + +end PassKeyBoolean; diff --git a/src/NMTDS/NMTDS_PassKeyBoolean.cxx b/src/NMTDS/NMTDS_PassKeyBoolean.cxx new file mode 100755 index 000000000..11f90ee79 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKeyBoolean.cxx @@ -0,0 +1,62 @@ +// Copyright (C) 2006 SAMTECH +// +// 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.com +// +// File: NMTDS_PassKeyBoolean.cxx +// Created: Mon May 15 14:31:05 2006 +// Author: Peter KURNEV +// + + +#include + +//======================================================================= +//function : NMTDS_PassKeyBoolean +//purpose : +//======================================================================= + NMTDS_PassKeyBoolean::NMTDS_PassKeyBoolean() +: + myFlag(Standard_False), + NMTDS_PassKey() +{ +} +//======================================================================= +//function :Assign +//purpose : +//======================================================================= + NMTDS_PassKeyBoolean& NMTDS_PassKeyBoolean::Assign(const NMTDS_PassKeyBoolean& anOther) +{ + myFlag=anOther.myFlag; + NMTDS_PassKey::Assign(anOther); + return *this; +} +//======================================================================= +//function :SetFlag +//purpose : +//======================================================================= + void NMTDS_PassKeyBoolean::SetFlag(const Standard_Boolean aFlag) +{ + myFlag=aFlag; +} +//======================================================================= +//function :Flag +//purpose : +//======================================================================= + Standard_Boolean NMTDS_PassKeyBoolean::Flag()const +{ + return myFlag; +} diff --git a/src/NMTDS/NMTDS_PassKeyBoolean.hxx b/src/NMTDS/NMTDS_PassKeyBoolean.hxx new file mode 100644 index 000000000..0ac2e06b6 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKeyBoolean.hxx @@ -0,0 +1,110 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTDS_PassKeyBoolean_HeaderFile +#define _NMTDS_PassKeyBoolean_HeaderFile + +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKey_HeaderFile +#include +#endif + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_PassKeyBoolean : public NMTDS_PassKey { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_PassKeyBoolean(); + + +Standard_EXPORT NMTDS_PassKeyBoolean& Assign(const NMTDS_PassKeyBoolean& Other) ; + NMTDS_PassKeyBoolean& operator =(const NMTDS_PassKeyBoolean& Other) +{ + return Assign(Other); +} + + + +Standard_EXPORT void SetFlag(const Standard_Boolean aFlag) ; + + +Standard_EXPORT Standard_Boolean Flag() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // +Standard_Boolean myFlag; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_PassKeyBoolean.ixx b/src/NMTDS/NMTDS_PassKeyBoolean.ixx new file mode 100644 index 000000000..88cae8df2 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKeyBoolean.ixx @@ -0,0 +1,24 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + + + + diff --git a/src/NMTDS/NMTDS_PassKeyBoolean.jxx b/src/NMTDS/NMTDS_PassKeyBoolean.jxx new file mode 100644 index 000000000..4291273e9 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKeyBoolean.jxx @@ -0,0 +1,22 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTDS_PassKeyBoolean_HeaderFile +#include +#endif diff --git a/src/NMTDS/NMTDS_PassKeyMapHasher.cdl b/src/NMTDS/NMTDS_PassKeyMapHasher.cdl new file mode 100755 index 000000000..ae537d787 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKeyMapHasher.cdl @@ -0,0 +1,46 @@ +-- Copyright (C) 2006 SAMTECH +-- +-- 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.com +-- +-- File: NMTDS_PassKeyMapHasher.cdl +-- Created: +-- Author: Peter KURNEV +-- + + +class PassKeyMapHasher from NMTDS + + ---Purpose: + +uses + PassKey from NMTDS + +--raises + +is + HashCode(myclass; + aPKey : PassKey from NMTDS; + Upper : Integer from Standard) + returns Integer from Standard; + + + IsEqual(myclass; + aPKey1 : PassKey from NMTDS; + aPKey2 : PassKey from NMTDS) + returns Boolean from Standard; + +end PassKeyMapHasher; diff --git a/src/NMTDS/NMTDS_PassKeyMapHasher.cxx b/src/NMTDS/NMTDS_PassKeyMapHasher.cxx new file mode 100755 index 000000000..09e4ad047 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKeyMapHasher.cxx @@ -0,0 +1,44 @@ +// Copyright (C) 2006 SAMTECH +// +// 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.com +// +// File: NMTDS_PassKeyMapHasher.cxx +// Created: +// Author: Peter KURNEV +// + + +#include + +//======================================================================= +//function : HashCode +//purpose : +//======================================================================= + Standard_Integer NMTDS_PassKeyMapHasher::HashCode(const NMTDS_PassKey& aPKey, + const Standard_Integer Upper) +{ + return aPKey.HashCode(Upper); +} +//======================================================================= +//function :IsEqual +//purpose : +//======================================================================= + Standard_Boolean NMTDS_PassKeyMapHasher::IsEqual(const NMTDS_PassKey& aPKey1, + const NMTDS_PassKey& aPKey2) +{ + return aPKey1.IsEqual(aPKey2); +} diff --git a/src/NMTDS/NMTDS_PassKeyMapHasher.hxx b/src/NMTDS/NMTDS_PassKeyMapHasher.hxx new file mode 100644 index 000000000..b22d6e8f7 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKeyMapHasher.hxx @@ -0,0 +1,99 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTDS_PassKeyMapHasher_HeaderFile +#define _NMTDS_PassKeyMapHasher_HeaderFile + +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class NMTDS_PassKey; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_PassKeyMapHasher { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT static Standard_Integer HashCode(const NMTDS_PassKey& aPKey,const Standard_Integer Upper) ; + + +Standard_EXPORT static Standard_Boolean IsEqual(const NMTDS_PassKey& aPKey1,const NMTDS_PassKey& aPKey2) ; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_PassKeyMapHasher.ixx b/src/NMTDS/NMTDS_PassKeyMapHasher.ixx new file mode 100644 index 000000000..177c4e352 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKeyMapHasher.ixx @@ -0,0 +1,24 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + + + + diff --git a/src/NMTDS/NMTDS_PassKeyMapHasher.jxx b/src/NMTDS/NMTDS_PassKeyMapHasher.jxx new file mode 100644 index 000000000..ab0e61052 --- /dev/null +++ b/src/NMTDS/NMTDS_PassKeyMapHasher.jxx @@ -0,0 +1,25 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTDS_PassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKeyMapHasher_HeaderFile +#include +#endif diff --git a/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKey.hxx b/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKey.hxx new file mode 100644 index 000000000..002862385 --- /dev/null +++ b/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKey.hxx @@ -0,0 +1,121 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile +#define _NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKey_HeaderFile +#include +#endif + +#ifndef _NMTDS_PassKey_HeaderFile +#include +#endif +#ifndef _TCollection_MapNode_HeaderFile +#include +#endif +#ifndef _TCollection_MapNodePtr_HeaderFile +#include +#endif +class NMTDS_PassKey; +class NMTDS_PassKeyMapHasher; +class NMTDS_MapOfPassKey; +class NMTDS_MapIteratorOfMapOfPassKey; + + + +class NMTDS_StdMapNodeOfMapOfPassKey : public TCollection_MapNode { + +public: + // Methods PUBLIC + // + +NMTDS_StdMapNodeOfMapOfPassKey(const NMTDS_PassKey& K,const TCollection_MapNodePtr& n); + + NMTDS_PassKey& Key() const; +//Standard_EXPORT ~NMTDS_StdMapNodeOfMapOfPassKey(); + + + + + // Type management + // + Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // +NMTDS_PassKey myKey; + + +}; + +#define TheKey NMTDS_PassKey +#define TheKey_hxx +#define Hasher NMTDS_PassKeyMapHasher +#define Hasher_hxx +#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPassKey +#define TCollection_StdMapNode_hxx +#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPassKey +#define TCollection_MapIterator_hxx +#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPassKey +#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPassKey_Type_() +#define TCollection_Map NMTDS_MapOfPassKey +#define TCollection_Map_hxx + +#include + +#undef TheKey +#undef TheKey_hxx +#undef Hasher +#undef Hasher_hxx +#undef TCollection_StdMapNode +#undef TCollection_StdMapNode_hxx +#undef TCollection_MapIterator +#undef TCollection_MapIterator_hxx +#undef Handle_TCollection_StdMapNode +#undef TCollection_StdMapNode_Type_ +#undef TCollection_Map +#undef TCollection_Map_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx b/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx new file mode 100644 index 000000000..0392838d1 --- /dev/null +++ b/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx @@ -0,0 +1,121 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile +#define _NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean_HeaderFile +#include +#endif + +#ifndef _NMTDS_PassKeyBoolean_HeaderFile +#include +#endif +#ifndef _TCollection_MapNode_HeaderFile +#include +#endif +#ifndef _TCollection_MapNodePtr_HeaderFile +#include +#endif +class NMTDS_PassKeyBoolean; +class NMTDS_PassKeyMapHasher; +class NMTDS_MapOfPassKeyBoolean; +class NMTDS_MapIteratorOfMapOfPassKeyBoolean; + + + +class NMTDS_StdMapNodeOfMapOfPassKeyBoolean : public TCollection_MapNode { + +public: + // Methods PUBLIC + // + +NMTDS_StdMapNodeOfMapOfPassKeyBoolean(const NMTDS_PassKeyBoolean& K,const TCollection_MapNodePtr& n); + + NMTDS_PassKeyBoolean& Key() const; +//Standard_EXPORT ~NMTDS_StdMapNodeOfMapOfPassKeyBoolean(); + + + + + // Type management + // + Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // +NMTDS_PassKeyBoolean myKey; + + +}; + +#define TheKey NMTDS_PassKeyBoolean +#define TheKey_hxx +#define Hasher NMTDS_PassKeyMapHasher +#define Hasher_hxx +#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPassKeyBoolean +#define TCollection_StdMapNode_hxx +#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPassKeyBoolean +#define TCollection_MapIterator_hxx +#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean +#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPassKeyBoolean_Type_() +#define TCollection_Map NMTDS_MapOfPassKeyBoolean +#define TCollection_Map_hxx + +#include + +#undef TheKey +#undef TheKey_hxx +#undef Hasher +#undef Hasher_hxx +#undef TCollection_StdMapNode +#undef TCollection_StdMapNode_hxx +#undef TCollection_MapIterator +#undef TCollection_MapIterator_hxx +#undef Handle_TCollection_StdMapNode +#undef TCollection_StdMapNode_Type_ +#undef TCollection_Map +#undef TCollection_Map_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKeyBoolean_0.cxx b/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKeyBoolean_0.cxx new file mode 100644 index 000000000..9728d1014 --- /dev/null +++ b/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKeyBoolean_0.cxx @@ -0,0 +1,98 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_TypeMismatch_HeaderFile +#include +#endif + +#ifndef _NMTDS_PassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKeyMapHasher_HeaderFile +#include +#endif +#ifndef _NMTDS_MapOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_MapIteratorOfMapOfPassKeyBoolean_HeaderFile +#include +#endif +//NMTDS_StdMapNodeOfMapOfPassKeyBoolean::~NMTDS_StdMapNodeOfMapOfPassKeyBoolean() {} + + + +Standard_EXPORT Handle_Standard_Type& NMTDS_StdMapNodeOfMapOfPassKeyBoolean_Type_() +{ + + static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); + static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); + static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); + + + static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; + static Handle_Standard_Type _aType = new Standard_Type("NMTDS_StdMapNodeOfMapOfPassKeyBoolean", + sizeof(NMTDS_StdMapNodeOfMapOfPassKeyBoolean), + 1, + (Standard_Address)_Ancestors, + (Standard_Address)NULL); + + return _aType; +} + + +// DownCast method +// allow safe downcasting +// +const Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean) Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)::DownCast(const Handle(Standard_Transient)& AnObject) +{ + Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean) _anOtherObject; + + if (!AnObject.IsNull()) { + if (AnObject->IsKind(STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKeyBoolean))) { + _anOtherObject = Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)((Handle(NMTDS_StdMapNodeOfMapOfPassKeyBoolean)&)AnObject); + } + } + + return _anOtherObject ; +} +const Handle(Standard_Type)& NMTDS_StdMapNodeOfMapOfPassKeyBoolean::DynamicType() const +{ + return STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKeyBoolean) ; +} +//Standard_Boolean NMTDS_StdMapNodeOfMapOfPassKeyBoolean::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKeyBoolean) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean::~Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean() {} +#define TheKey NMTDS_PassKeyBoolean +#define TheKey_hxx +#define Hasher NMTDS_PassKeyMapHasher +#define Hasher_hxx +#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPassKeyBoolean +#define TCollection_StdMapNode_hxx +#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPassKeyBoolean +#define TCollection_MapIterator_hxx +#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean +#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPassKeyBoolean_Type_() +#define TCollection_Map NMTDS_MapOfPassKeyBoolean +#define TCollection_Map_hxx +#include + diff --git a/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKey_0.cxx b/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKey_0.cxx new file mode 100644 index 000000000..08659bb9b --- /dev/null +++ b/src/NMTDS/NMTDS_StdMapNodeOfMapOfPassKey_0.cxx @@ -0,0 +1,98 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_TypeMismatch_HeaderFile +#include +#endif + +#ifndef _NMTDS_PassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_PassKeyMapHasher_HeaderFile +#include +#endif +#ifndef _NMTDS_MapOfPassKey_HeaderFile +#include +#endif +#ifndef _NMTDS_MapIteratorOfMapOfPassKey_HeaderFile +#include +#endif +//NMTDS_StdMapNodeOfMapOfPassKey::~NMTDS_StdMapNodeOfMapOfPassKey() {} + + + +Standard_EXPORT Handle_Standard_Type& NMTDS_StdMapNodeOfMapOfPassKey_Type_() +{ + + static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); + static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); + static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); + + + static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; + static Handle_Standard_Type _aType = new Standard_Type("NMTDS_StdMapNodeOfMapOfPassKey", + sizeof(NMTDS_StdMapNodeOfMapOfPassKey), + 1, + (Standard_Address)_Ancestors, + (Standard_Address)NULL); + + return _aType; +} + + +// DownCast method +// allow safe downcasting +// +const Handle(NMTDS_StdMapNodeOfMapOfPassKey) Handle(NMTDS_StdMapNodeOfMapOfPassKey)::DownCast(const Handle(Standard_Transient)& AnObject) +{ + Handle(NMTDS_StdMapNodeOfMapOfPassKey) _anOtherObject; + + if (!AnObject.IsNull()) { + if (AnObject->IsKind(STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKey))) { + _anOtherObject = Handle(NMTDS_StdMapNodeOfMapOfPassKey)((Handle(NMTDS_StdMapNodeOfMapOfPassKey)&)AnObject); + } + } + + return _anOtherObject ; +} +const Handle(Standard_Type)& NMTDS_StdMapNodeOfMapOfPassKey::DynamicType() const +{ + return STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKey) ; +} +//Standard_Boolean NMTDS_StdMapNodeOfMapOfPassKey::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(NMTDS_StdMapNodeOfMapOfPassKey) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_NMTDS_StdMapNodeOfMapOfPassKey::~Handle_NMTDS_StdMapNodeOfMapOfPassKey() {} +#define TheKey NMTDS_PassKey +#define TheKey_hxx +#define Hasher NMTDS_PassKeyMapHasher +#define Hasher_hxx +#define TCollection_StdMapNode NMTDS_StdMapNodeOfMapOfPassKey +#define TCollection_StdMapNode_hxx +#define TCollection_MapIterator NMTDS_MapIteratorOfMapOfPassKey +#define TCollection_MapIterator_hxx +#define Handle_TCollection_StdMapNode Handle_NMTDS_StdMapNodeOfMapOfPassKey +#define TCollection_StdMapNode_Type_() NMTDS_StdMapNodeOfMapOfPassKey_Type_() +#define TCollection_Map NMTDS_MapOfPassKey +#define TCollection_Map_hxx +#include + diff --git a/src/NMTTools/Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock.hxx b/src/NMTTools/Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock.hxx new file mode 100644 index 000000000..a1d7b3076 --- /dev/null +++ b/src/NMTTools/Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock.hxx @@ -0,0 +1,72 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_HeaderFile +#define _Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_HeaderFile + +#ifndef _Standard_Macro_HeaderFile +#include +#endif +#ifndef _Standard_HeaderFile +#include +#endif + +#ifndef _Handle_TCollection_MapNode_HeaderFile +#include +#endif + +class Standard_Transient; +class Handle_Standard_Type; +class Handle(TCollection_MapNode); +class NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock; +Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock); + +class Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock) : public Handle(TCollection_MapNode) { + public: + Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock)():Handle(TCollection_MapNode)() {} + Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock)(const Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock)& aHandle) : Handle(TCollection_MapNode)(aHandle) + { + } + + Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock)(const NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) + { + } + + Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock)& operator=(const Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock)& aHandle) + { + Assign(aHandle.Access()); + return *this; + } + + Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock)& operator=(const NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock* anItem) + { + Assign((Standard_Transient *)anItem); + return *this; + } + + NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock* operator->() const + { + return (NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock *)ControlAccess(); + } + +// Standard_EXPORT ~Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock)(); + + Standard_EXPORT static const Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock) DownCast(const Handle(Standard_Transient)& AnObject); +}; +#endif diff --git a/src/NMTTools/Handle_NMTTools_StdMapNodeOfMapOfPaveBlock.hxx b/src/NMTTools/Handle_NMTTools_StdMapNodeOfMapOfPaveBlock.hxx new file mode 100644 index 000000000..93a4a7634 --- /dev/null +++ b/src/NMTTools/Handle_NMTTools_StdMapNodeOfMapOfPaveBlock.hxx @@ -0,0 +1,72 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _Handle_NMTTools_StdMapNodeOfMapOfPaveBlock_HeaderFile +#define _Handle_NMTTools_StdMapNodeOfMapOfPaveBlock_HeaderFile + +#ifndef _Standard_Macro_HeaderFile +#include +#endif +#ifndef _Standard_HeaderFile +#include +#endif + +#ifndef _Handle_TCollection_MapNode_HeaderFile +#include +#endif + +class Standard_Transient; +class Handle_Standard_Type; +class Handle(TCollection_MapNode); +class NMTTools_StdMapNodeOfMapOfPaveBlock; +Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTTools_StdMapNodeOfMapOfPaveBlock); + +class Handle(NMTTools_StdMapNodeOfMapOfPaveBlock) : public Handle(TCollection_MapNode) { + public: + Handle(NMTTools_StdMapNodeOfMapOfPaveBlock)():Handle(TCollection_MapNode)() {} + Handle(NMTTools_StdMapNodeOfMapOfPaveBlock)(const Handle(NMTTools_StdMapNodeOfMapOfPaveBlock)& aHandle) : Handle(TCollection_MapNode)(aHandle) + { + } + + Handle(NMTTools_StdMapNodeOfMapOfPaveBlock)(const NMTTools_StdMapNodeOfMapOfPaveBlock* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem) + { + } + + Handle(NMTTools_StdMapNodeOfMapOfPaveBlock)& operator=(const Handle(NMTTools_StdMapNodeOfMapOfPaveBlock)& aHandle) + { + Assign(aHandle.Access()); + return *this; + } + + Handle(NMTTools_StdMapNodeOfMapOfPaveBlock)& operator=(const NMTTools_StdMapNodeOfMapOfPaveBlock* anItem) + { + Assign((Standard_Transient *)anItem); + return *this; + } + + NMTTools_StdMapNodeOfMapOfPaveBlock* operator->() const + { + return (NMTTools_StdMapNodeOfMapOfPaveBlock *)ControlAccess(); + } + +// Standard_EXPORT ~Handle(NMTTools_StdMapNodeOfMapOfPaveBlock)(); + + Standard_EXPORT static const Handle(NMTTools_StdMapNodeOfMapOfPaveBlock) DownCast(const Handle(Standard_Transient)& AnObject); +}; +#endif diff --git a/src/NMTTools/NMTDS_Iterator.hxx b/src/NMTTools/NMTDS_Iterator.hxx new file mode 100644 index 000000000..158a35892 --- /dev/null +++ b/src/NMTTools/NMTDS_Iterator.hxx @@ -0,0 +1,138 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTDS_Iterator_HeaderFile +#define _NMTDS_Iterator_HeaderFile + +#ifndef _NMTDS_PShapesDataStructure_HeaderFile +#include +#endif +#ifndef _NMTDS_ListOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _NMTDS_ListIteratorOfListOfPassKeyBoolean_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _TopAbs_ShapeEnum_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class NMTDS_ShapesDataStructure; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTDS_Iterator { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTDS_Iterator(); +Standard_EXPORT virtual ~NMTDS_Iterator(); + + +Standard_EXPORT void SetDS(const NMTDS_PShapesDataStructure& pDS) ; + + +Standard_EXPORT const NMTDS_ShapesDataStructure& DS() const; + + +Standard_EXPORT void Initialize(const TopAbs_ShapeEnum aType1,const TopAbs_ShapeEnum aType2) ; + + +Standard_EXPORT Standard_Boolean More() const; + + +Standard_EXPORT void Next() ; + + +Standard_EXPORT void Current(Standard_Integer& aIndex1,Standard_Integer& aIndex2,Standard_Boolean& aWithSubShape) const; + + +Standard_EXPORT void Prepare() ; + + +Standard_EXPORT Standard_Integer ExpectedLength() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // +NMTDS_PShapesDataStructure myPDS; +NMTDS_ListOfPassKeyBoolean myLists[6]; +NMTDS_ListIteratorOfListOfPassKeyBoolean myIterator; +NMTDS_ListOfPassKeyBoolean myEmptyList; +Standard_Integer myLength; + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTTools/NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock.hxx b/src/NMTTools/NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock.hxx new file mode 100644 index 000000000..df15c1128 --- /dev/null +++ b/src/NMTTools/NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock.hxx @@ -0,0 +1,115 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock_HeaderFile +#define _NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock_HeaderFile + +#ifndef _TCollection_BasicMapIterator_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_HeaderFile +#include +#endif +class Standard_NoSuchObject; +class BOPTools_ListOfPaveBlock; +class TColStd_MapIntegerHasher; +class NMTTools_DataMapOfIntegerListOfPaveBlock; +class NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock : public TCollection_BasicMapIterator { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock(); + + +Standard_EXPORT NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock(const NMTTools_DataMapOfIntegerListOfPaveBlock& aMap); + + +Standard_EXPORT void Initialize(const NMTTools_DataMapOfIntegerListOfPaveBlock& aMap) ; + + +Standard_EXPORT const Standard_Integer& Key() const; + + +Standard_EXPORT const BOPTools_ListOfPaveBlock& Value() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTTools/NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock_0.cxx b/src/NMTTools/NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock_0.cxx new file mode 100644 index 000000000..58c33e1b7 --- /dev/null +++ b/src/NMTTools/NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock_0.cxx @@ -0,0 +1,54 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _BOPTools_ListOfPaveBlock_HeaderFile +#include +#endif +#ifndef _TColStd_MapIntegerHasher_HeaderFile +#include +#endif +#ifndef _NMTTools_DataMapOfIntegerListOfPaveBlock_HeaderFile +#include +#endif +#ifndef _NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_HeaderFile +#include +#endif + + +#define TheKey Standard_Integer +#define TheKey_hxx +#define TheItem BOPTools_ListOfPaveBlock +#define TheItem_hxx +#define Hasher TColStd_MapIntegerHasher +#define Hasher_hxx +#define TCollection_DataMapNode NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock +#define TCollection_DataMapNode_Type_() NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_Type_() +#define TCollection_DataMap NMTTools_DataMapOfIntegerListOfPaveBlock +#define TCollection_DataMap_hxx +#include + diff --git a/src/NMTTools/NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock.hxx b/src/NMTTools/NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock.hxx new file mode 100644 index 000000000..4c4104183 --- /dev/null +++ b/src/NMTTools/NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock.hxx @@ -0,0 +1,131 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_HeaderFile +#define _NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_HeaderFile + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_HeaderFile +#include +#endif + +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _BOPTools_ListOfPaveBlock_HeaderFile +#include +#endif +#ifndef _TCollection_MapNode_HeaderFile +#include +#endif +#ifndef _TCollection_MapNodePtr_HeaderFile +#include +#endif +class BOPTools_ListOfPaveBlock; +class TColStd_MapIntegerHasher; +class NMTTools_DataMapOfIntegerListOfPaveBlock; +class NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock; + + + +class NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock : public TCollection_MapNode { + +public: + // Methods PUBLIC + // + +NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock(const Standard_Integer& K,const BOPTools_ListOfPaveBlock& I,const TCollection_MapNodePtr& n); + + Standard_Integer& Key() const; + + BOPTools_ListOfPaveBlock& Value() const; +//Standard_EXPORT ~NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock(); + + + + + // Type management + // + Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // +Standard_Integer myKey; +BOPTools_ListOfPaveBlock myValue; + + +}; + +#define TheKey Standard_Integer +#define TheKey_hxx +#define TheItem BOPTools_ListOfPaveBlock +#define TheItem_hxx +#define Hasher TColStd_MapIntegerHasher +#define Hasher_hxx +#define TCollection_DataMapNode NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock +#define TCollection_DataMapNode_Type_() NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_Type_() +#define TCollection_DataMap NMTTools_DataMapOfIntegerListOfPaveBlock +#define TCollection_DataMap_hxx + +#include + +#undef TheKey +#undef TheKey_hxx +#undef TheItem +#undef TheItem_hxx +#undef Hasher +#undef Hasher_hxx +#undef TCollection_DataMapNode +#undef TCollection_DataMapNode_hxx +#undef TCollection_DataMapIterator +#undef TCollection_DataMapIterator_hxx +#undef Handle_TCollection_DataMapNode +#undef TCollection_DataMapNode_Type_ +#undef TCollection_DataMap +#undef TCollection_DataMap_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTTools/NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_0.cxx b/src/NMTTools/NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_0.cxx new file mode 100644 index 000000000..c863a91b7 --- /dev/null +++ b/src/NMTTools/NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_0.cxx @@ -0,0 +1,100 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_TypeMismatch_HeaderFile +#include +#endif + +#ifndef _BOPTools_ListOfPaveBlock_HeaderFile +#include +#endif +#ifndef _TColStd_MapIntegerHasher_HeaderFile +#include +#endif +#ifndef _NMTTools_DataMapOfIntegerListOfPaveBlock_HeaderFile +#include +#endif +#ifndef _NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock_HeaderFile +#include +#endif +//NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock::~NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock() {} + + + +Standard_EXPORT Handle_Standard_Type& NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_Type_() +{ + + static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); + static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); + static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); + + + static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; + static Handle_Standard_Type _aType = new Standard_Type("NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock", + sizeof(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock), + 1, + (Standard_Address)_Ancestors, + (Standard_Address)NULL); + + return _aType; +} + + +// DownCast method +// allow safe downcasting +// +const Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock) Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock)::DownCast(const Handle(Standard_Transient)& AnObject) +{ + Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock) _anOtherObject; + + if (!AnObject.IsNull()) { + if (AnObject->IsKind(STANDARD_TYPE(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock))) { + _anOtherObject = Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock)((Handle(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock)&)AnObject); + } + } + + return _anOtherObject ; +} +const Handle(Standard_Type)& NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock::DynamicType() const +{ + return STANDARD_TYPE(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock) ; +} +//Standard_Boolean NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock::~Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock() {} +#define TheKey Standard_Integer +#define TheKey_hxx +#define TheItem BOPTools_ListOfPaveBlock +#define TheItem_hxx +#define Hasher TColStd_MapIntegerHasher +#define Hasher_hxx +#define TCollection_DataMapNode NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock +#define TCollection_DataMapNode_Type_() NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_Type_() +#define TCollection_DataMap NMTTools_DataMapOfIntegerListOfPaveBlock +#define TCollection_DataMap_hxx +#include + diff --git a/src/NMTTools/NMTTools_DataMapOfIntegerListOfPaveBlock.hxx b/src/NMTTools/NMTTools_DataMapOfIntegerListOfPaveBlock.hxx new file mode 100644 index 000000000..39dddc5be --- /dev/null +++ b/src/NMTTools/NMTTools_DataMapOfIntegerListOfPaveBlock.hxx @@ -0,0 +1,154 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTTools_DataMapOfIntegerListOfPaveBlock_HeaderFile +#define _NMTTools_DataMapOfIntegerListOfPaveBlock_HeaderFile + +#ifndef _TCollection_BasicMap_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class Standard_DomainError; +class Standard_NoSuchObject; +class BOPTools_ListOfPaveBlock; +class TColStd_MapIntegerHasher; +class NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock; +class NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTTools_DataMapOfIntegerListOfPaveBlock : public TCollection_BasicMap { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTTools_DataMapOfIntegerListOfPaveBlock(const Standard_Integer NbBuckets = 1); + + +Standard_EXPORT NMTTools_DataMapOfIntegerListOfPaveBlock& Assign(const NMTTools_DataMapOfIntegerListOfPaveBlock& Other) ; + NMTTools_DataMapOfIntegerListOfPaveBlock& operator =(const NMTTools_DataMapOfIntegerListOfPaveBlock& Other) +{ + return Assign(Other); +} + + + +Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; + + +Standard_EXPORT void Clear() ; +~NMTTools_DataMapOfIntegerListOfPaveBlock() +{ + Clear(); +} + + + +Standard_EXPORT Standard_Boolean Bind(const Standard_Integer& K,const BOPTools_ListOfPaveBlock& I) ; + + +Standard_EXPORT Standard_Boolean IsBound(const Standard_Integer& K) const; + + +Standard_EXPORT Standard_Boolean UnBind(const Standard_Integer& K) ; + + +Standard_EXPORT const BOPTools_ListOfPaveBlock& Find(const Standard_Integer& K) const; + const BOPTools_ListOfPaveBlock& operator()(const Standard_Integer& K) const +{ + return Find(K); +} + + + +Standard_EXPORT BOPTools_ListOfPaveBlock& ChangeFind(const Standard_Integer& K) ; + BOPTools_ListOfPaveBlock& operator()(const Standard_Integer& K) +{ + return ChangeFind(K); +} + + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + +Standard_EXPORT NMTTools_DataMapOfIntegerListOfPaveBlock(const NMTTools_DataMapOfIntegerListOfPaveBlock& Other); + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTTools/NMTTools_DataMapOfIntegerListOfPaveBlock_0.cxx b/src/NMTTools/NMTTools_DataMapOfIntegerListOfPaveBlock_0.cxx new file mode 100644 index 000000000..a785ad2ee --- /dev/null +++ b/src/NMTTools/NMTTools_DataMapOfIntegerListOfPaveBlock_0.cxx @@ -0,0 +1,57 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_DomainError_HeaderFile +#include +#endif +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _BOPTools_ListOfPaveBlock_HeaderFile +#include +#endif +#ifndef _TColStd_MapIntegerHasher_HeaderFile +#include +#endif +#ifndef _NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_HeaderFile +#include +#endif +#ifndef _NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock_HeaderFile +#include +#endif + + +#define TheKey Standard_Integer +#define TheKey_hxx +#define TheItem BOPTools_ListOfPaveBlock +#define TheItem_hxx +#define Hasher TColStd_MapIntegerHasher +#define Hasher_hxx +#define TCollection_DataMapNode NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock +#define TCollection_DataMapNode_hxx +#define TCollection_DataMapIterator NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock +#define TCollection_DataMapIterator_hxx +#define Handle_TCollection_DataMapNode Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock +#define TCollection_DataMapNode_Type_() NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_Type_() +#define TCollection_DataMap NMTTools_DataMapOfIntegerListOfPaveBlock +#define TCollection_DataMap_hxx +#include + diff --git a/src/NMTTools/NMTTools_MapIteratorOfMapOfPaveBlock.hxx b/src/NMTTools/NMTTools_MapIteratorOfMapOfPaveBlock.hxx new file mode 100644 index 000000000..d53253da9 --- /dev/null +++ b/src/NMTTools/NMTTools_MapIteratorOfMapOfPaveBlock.hxx @@ -0,0 +1,109 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTTools_MapIteratorOfMapOfPaveBlock_HeaderFile +#define _NMTTools_MapIteratorOfMapOfPaveBlock_HeaderFile + +#ifndef _TCollection_BasicMapIterator_HeaderFile +#include +#endif +#ifndef _Handle_NMTTools_StdMapNodeOfMapOfPaveBlock_HeaderFile +#include +#endif +class Standard_NoSuchObject; +class BOPTools_PaveBlock; +class BOPTools_PaveBlockMapHasher; +class NMTTools_MapOfPaveBlock; +class NMTTools_StdMapNodeOfMapOfPaveBlock; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTTools_MapIteratorOfMapOfPaveBlock : public TCollection_BasicMapIterator { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTTools_MapIteratorOfMapOfPaveBlock(); + + +Standard_EXPORT NMTTools_MapIteratorOfMapOfPaveBlock(const NMTTools_MapOfPaveBlock& aMap); + + +Standard_EXPORT void Initialize(const NMTTools_MapOfPaveBlock& aMap) ; + + +Standard_EXPORT const BOPTools_PaveBlock& Key() const; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTTools/NMTTools_MapIteratorOfMapOfPaveBlock_0.cxx b/src/NMTTools/NMTTools_MapIteratorOfMapOfPaveBlock_0.cxx new file mode 100644 index 000000000..c3dd9b330 --- /dev/null +++ b/src/NMTTools/NMTTools_MapIteratorOfMapOfPaveBlock_0.cxx @@ -0,0 +1,52 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_NoSuchObject_HeaderFile +#include +#endif +#ifndef _BOPTools_PaveBlock_HeaderFile +#include +#endif +#ifndef _BOPTools_PaveBlockMapHasher_HeaderFile +#include +#endif +#ifndef _NMTTools_MapOfPaveBlock_HeaderFile +#include +#endif +#ifndef _NMTTools_StdMapNodeOfMapOfPaveBlock_HeaderFile +#include +#endif + + +#define TheKey BOPTools_PaveBlock +#define TheKey_hxx +#define Hasher BOPTools_PaveBlockMapHasher +#define Hasher_hxx +#define TCollection_StdMapNode NMTTools_StdMapNodeOfMapOfPaveBlock +#define TCollection_StdMapNode_hxx +#define TCollection_MapIterator NMTTools_MapIteratorOfMapOfPaveBlock +#define TCollection_MapIterator_hxx +#define Handle_TCollection_StdMapNode Handle_NMTTools_StdMapNodeOfMapOfPaveBlock +#define TCollection_StdMapNode_Type_() NMTTools_StdMapNodeOfMapOfPaveBlock_Type_() +#define TCollection_Map NMTTools_MapOfPaveBlock +#define TCollection_Map_hxx +#include + diff --git a/src/NMTTools/NMTTools_MapOfPaveBlock.hxx b/src/NMTTools/NMTTools_MapOfPaveBlock.hxx new file mode 100644 index 000000000..f7db910f2 --- /dev/null +++ b/src/NMTTools/NMTTools_MapOfPaveBlock.hxx @@ -0,0 +1,137 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTTools_MapOfPaveBlock_HeaderFile +#define _NMTTools_MapOfPaveBlock_HeaderFile + +#ifndef _TCollection_BasicMap_HeaderFile +#include +#endif +#ifndef _Handle_NMTTools_StdMapNodeOfMapOfPaveBlock_HeaderFile +#include +#endif +#ifndef _Standard_Integer_HeaderFile +#include +#endif +#ifndef _Standard_Boolean_HeaderFile +#include +#endif +class Standard_DomainError; +class BOPTools_PaveBlock; +class BOPTools_PaveBlockMapHasher; +class NMTTools_StdMapNodeOfMapOfPaveBlock; +class NMTTools_MapIteratorOfMapOfPaveBlock; + + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Standard_Macro_HeaderFile +#include +#endif + + +class NMTTools_MapOfPaveBlock : public TCollection_BasicMap { + +public: + + void* operator new(size_t,void* anAddress) + { + return anAddress; + } + void* operator new(size_t size) + { + return Standard::Allocate(size); + } + void operator delete(void *anAddress) + { + if (anAddress) Standard::Free((Standard_Address&)anAddress); + } + // Methods PUBLIC + // + + +Standard_EXPORT NMTTools_MapOfPaveBlock(const Standard_Integer NbBuckets = 1); + + +Standard_EXPORT NMTTools_MapOfPaveBlock& Assign(const NMTTools_MapOfPaveBlock& Other) ; + NMTTools_MapOfPaveBlock& operator =(const NMTTools_MapOfPaveBlock& Other) +{ + return Assign(Other); +} + + + +Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ; + + +Standard_EXPORT void Clear() ; +~NMTTools_MapOfPaveBlock() +{ + Clear(); +} + + + +Standard_EXPORT Standard_Boolean Add(const BOPTools_PaveBlock& aKey) ; + + +Standard_EXPORT Standard_Boolean Contains(const BOPTools_PaveBlock& aKey) const; + + +Standard_EXPORT Standard_Boolean Remove(const BOPTools_PaveBlock& aKey) ; + + + + + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + +Standard_EXPORT NMTTools_MapOfPaveBlock(const NMTTools_MapOfPaveBlock& Other); + + + // Fields PRIVATE + // + + +}; + + + + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTTools/NMTTools_MapOfPaveBlock_0.cxx b/src/NMTTools/NMTTools_MapOfPaveBlock_0.cxx new file mode 100644 index 000000000..5b8574f39 --- /dev/null +++ b/src/NMTTools/NMTTools_MapOfPaveBlock_0.cxx @@ -0,0 +1,52 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_DomainError_HeaderFile +#include +#endif +#ifndef _BOPTools_PaveBlock_HeaderFile +#include +#endif +#ifndef _BOPTools_PaveBlockMapHasher_HeaderFile +#include +#endif +#ifndef _NMTTools_StdMapNodeOfMapOfPaveBlock_HeaderFile +#include +#endif +#ifndef _NMTTools_MapIteratorOfMapOfPaveBlock_HeaderFile +#include +#endif + + +#define TheKey BOPTools_PaveBlock +#define TheKey_hxx +#define Hasher BOPTools_PaveBlockMapHasher +#define Hasher_hxx +#define TCollection_StdMapNode NMTTools_StdMapNodeOfMapOfPaveBlock +#define TCollection_StdMapNode_hxx +#define TCollection_MapIterator NMTTools_MapIteratorOfMapOfPaveBlock +#define TCollection_MapIterator_hxx +#define Handle_TCollection_StdMapNode Handle_NMTTools_StdMapNodeOfMapOfPaveBlock +#define TCollection_StdMapNode_Type_() NMTTools_StdMapNodeOfMapOfPaveBlock_Type_() +#define TCollection_Map NMTTools_MapOfPaveBlock +#define TCollection_Map_hxx +#include + diff --git a/src/NMTTools/NMTTools_StdMapNodeOfMapOfPaveBlock.hxx b/src/NMTTools/NMTTools_StdMapNodeOfMapOfPaveBlock.hxx new file mode 100644 index 000000000..12bf8f2f5 --- /dev/null +++ b/src/NMTTools/NMTTools_StdMapNodeOfMapOfPaveBlock.hxx @@ -0,0 +1,121 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#ifndef _NMTTools_StdMapNodeOfMapOfPaveBlock_HeaderFile +#define _NMTTools_StdMapNodeOfMapOfPaveBlock_HeaderFile + +#ifndef _Standard_HeaderFile +#include +#endif +#ifndef _Handle_NMTTools_StdMapNodeOfMapOfPaveBlock_HeaderFile +#include +#endif + +#ifndef _BOPTools_PaveBlock_HeaderFile +#include +#endif +#ifndef _TCollection_MapNode_HeaderFile +#include +#endif +#ifndef _TCollection_MapNodePtr_HeaderFile +#include +#endif +class BOPTools_PaveBlock; +class BOPTools_PaveBlockMapHasher; +class NMTTools_MapOfPaveBlock; +class NMTTools_MapIteratorOfMapOfPaveBlock; + + + +class NMTTools_StdMapNodeOfMapOfPaveBlock : public TCollection_MapNode { + +public: + // Methods PUBLIC + // + +NMTTools_StdMapNodeOfMapOfPaveBlock(const BOPTools_PaveBlock& K,const TCollection_MapNodePtr& n); + + BOPTools_PaveBlock& Key() const; +//Standard_EXPORT ~NMTTools_StdMapNodeOfMapOfPaveBlock(); + + + + + // Type management + // + Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; + //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; + +protected: + + // Methods PROTECTED + // + + + // Fields PROTECTED + // + + +private: + + // Methods PRIVATE + // + + + // Fields PRIVATE + // +BOPTools_PaveBlock myKey; + + +}; + +#define TheKey BOPTools_PaveBlock +#define TheKey_hxx +#define Hasher BOPTools_PaveBlockMapHasher +#define Hasher_hxx +#define TCollection_StdMapNode NMTTools_StdMapNodeOfMapOfPaveBlock +#define TCollection_StdMapNode_hxx +#define TCollection_MapIterator NMTTools_MapIteratorOfMapOfPaveBlock +#define TCollection_MapIterator_hxx +#define Handle_TCollection_StdMapNode Handle_NMTTools_StdMapNodeOfMapOfPaveBlock +#define TCollection_StdMapNode_Type_() NMTTools_StdMapNodeOfMapOfPaveBlock_Type_() +#define TCollection_Map NMTTools_MapOfPaveBlock +#define TCollection_Map_hxx + +#include + +#undef TheKey +#undef TheKey_hxx +#undef Hasher +#undef Hasher_hxx +#undef TCollection_StdMapNode +#undef TCollection_StdMapNode_hxx +#undef TCollection_MapIterator +#undef TCollection_MapIterator_hxx +#undef Handle_TCollection_StdMapNode +#undef TCollection_StdMapNode_Type_ +#undef TCollection_Map +#undef TCollection_Map_hxx + + +// other Inline functions and methods (like "C++: function call" methods) +// + + +#endif diff --git a/src/NMTTools/NMTTools_StdMapNodeOfMapOfPaveBlock_0.cxx b/src/NMTTools/NMTTools_StdMapNodeOfMapOfPaveBlock_0.cxx new file mode 100644 index 000000000..0b6dba8f4 --- /dev/null +++ b/src/NMTTools/NMTTools_StdMapNodeOfMapOfPaveBlock_0.cxx @@ -0,0 +1,98 @@ +// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com + +#include + +#ifndef _Standard_TypeMismatch_HeaderFile +#include +#endif + +#ifndef _BOPTools_PaveBlock_HeaderFile +#include +#endif +#ifndef _BOPTools_PaveBlockMapHasher_HeaderFile +#include +#endif +#ifndef _NMTTools_MapOfPaveBlock_HeaderFile +#include +#endif +#ifndef _NMTTools_MapIteratorOfMapOfPaveBlock_HeaderFile +#include +#endif +//NMTTools_StdMapNodeOfMapOfPaveBlock::~NMTTools_StdMapNodeOfMapOfPaveBlock() {} + + + +Standard_EXPORT Handle_Standard_Type& NMTTools_StdMapNodeOfMapOfPaveBlock_Type_() +{ + + static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode); + static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); + static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); + + + static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; + static Handle_Standard_Type _aType = new Standard_Type("NMTTools_StdMapNodeOfMapOfPaveBlock", + sizeof(NMTTools_StdMapNodeOfMapOfPaveBlock), + 1, + (Standard_Address)_Ancestors, + (Standard_Address)NULL); + + return _aType; +} + + +// DownCast method +// allow safe downcasting +// +const Handle(NMTTools_StdMapNodeOfMapOfPaveBlock) Handle(NMTTools_StdMapNodeOfMapOfPaveBlock)::DownCast(const Handle(Standard_Transient)& AnObject) +{ + Handle(NMTTools_StdMapNodeOfMapOfPaveBlock) _anOtherObject; + + if (!AnObject.IsNull()) { + if (AnObject->IsKind(STANDARD_TYPE(NMTTools_StdMapNodeOfMapOfPaveBlock))) { + _anOtherObject = Handle(NMTTools_StdMapNodeOfMapOfPaveBlock)((Handle(NMTTools_StdMapNodeOfMapOfPaveBlock)&)AnObject); + } + } + + return _anOtherObject ; +} +const Handle(Standard_Type)& NMTTools_StdMapNodeOfMapOfPaveBlock::DynamicType() const +{ + return STANDARD_TYPE(NMTTools_StdMapNodeOfMapOfPaveBlock) ; +} +//Standard_Boolean NMTTools_StdMapNodeOfMapOfPaveBlock::IsKind(const Handle(Standard_Type)& AType) const +//{ +// return (STANDARD_TYPE(NMTTools_StdMapNodeOfMapOfPaveBlock) == AType || TCollection_MapNode::IsKind(AType)); +//} +//Handle_NMTTools_StdMapNodeOfMapOfPaveBlock::~Handle_NMTTools_StdMapNodeOfMapOfPaveBlock() {} +#define TheKey BOPTools_PaveBlock +#define TheKey_hxx +#define Hasher BOPTools_PaveBlockMapHasher +#define Hasher_hxx +#define TCollection_StdMapNode NMTTools_StdMapNodeOfMapOfPaveBlock +#define TCollection_StdMapNode_hxx +#define TCollection_MapIterator NMTTools_MapIteratorOfMapOfPaveBlock +#define TCollection_MapIterator_hxx +#define Handle_TCollection_StdMapNode Handle_NMTTools_StdMapNodeOfMapOfPaveBlock +#define TCollection_StdMapNode_Type_() NMTTools_StdMapNodeOfMapOfPaveBlock_Type_() +#define TCollection_Map NMTTools_MapOfPaveBlock +#define TCollection_Map_hxx +#include + diff --git a/src/OBJECT/GEOM_OBJECT_defs.hxx b/src/OBJECT/GEOM_OBJECT_defs.hxx new file mode 100755 index 000000000..3377ce908 --- /dev/null +++ b/src/OBJECT/GEOM_OBJECT_defs.hxx @@ -0,0 +1,47 @@ +// 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 : GEOM_OBJECT_defs.hxx +// Author : Alexander A. BORODIN +// Module : GEOM + +#ifndef _GEOM_OBJECT_defs_HXX_ +#define _GEOM_OBJECT_defs_HXX_ + +#ifdef WNT + #if defined OBJECT_EXPORTS + #if defined WIN32 + #define GEOM_OBJECT_EXPORT __declspec( dllexport ) + #else + #define GEOM_OBJECT_EXPORT + #endif + #else + #if defined WIN32 + #define GEOM_OBJECT_EXPORT __declspec( dllimport ) + #else + #define GEOM_OBJECT_EXPORT + #endif + #endif +#else + #define GEOM_OBJECT_EXPORT +#endif + +#endif