in long theShapeType,
in shape_state theState);
+ /*!
+ * \brief Find subshapes complying with given status
+ * \param theCheckShape - the shape to check state of subshapes against
+ * \param theShape - the shape to explore
+ * \param theShapeType - type of subshape of theShape
+ * \param theState - required state
+ * \return List of IDs of all found sub-shapes.
+ */
+ ListOfLong GetShapesOnShapeIDs (in GEOM_Object theCheckShape,
+ in GEOM_Object theShape,
+ in short theShapeType,
+ in shape_state theState);
+
+ /*!
+ * \brief Find subshapes complying with given status
+ * \param theCheckShape - the shape to check state of subshapes against
+ * \param theShape - the shape to explore
+ * \param theShapeType - type of subshape of theShape
+ * \param theState - required state
+ * \return List of all found sub-shapes.
+ */
+ ListOfGO GetShapesOnShape (in GEOM_Object theCheckShape,
+ in GEOM_Object theShape,
+ in short theShapeType,
+ in shape_state theState);
+
+ /*!
+ * \brief Find subshapes complying with given status
+ * \param theCheckShape - the shape to check state of subshapes against
+ * \param theShape - the shape to explore
+ * \param theShapeType - type of subshape of theShape
+ * \param theState - required state
+ * \return compound includes all found sub-shapes.
+ */
+ GEOM_Object GetShapesOnShapeAsCompound (in GEOM_Object theCheckShape,
+ in GEOM_Object theShape,
+ in short theShapeType,
+ in shape_state theState);
+
/*!
* Get sub-shape(s) of \a theShapeWhere, which are
* coincident with \a theShapeWhat or could be a part of it.
long NumberOfEdges (in GEOM_Object theShape) ;
GEOM_Object ChangeOrientation (in GEOM_Object theShape) ;
+ GEOM_List GetShapesOnShape (in GEOM_Object theCheckShape,
+ in GEOM_Object theShape,
+ in short theShapeType,
+ in shape_state theState);
+ GEOM_Object GetShapesOnShapeAsCompound (in GEOM_Object theCheckShape,
+ in GEOM_Object theShape,
+ in short theShapeType,
+ in shape_state theState);
+
//-----------------------------------------------------------//
// BlocksOperations //
//-----------------------------------------------------------//
select1.png \
sewing.png \
shading.png \
+shapesonshape.png \
sketch.png \
sphere.png \
spheredxyz.png \
--- /dev/null
+/****************************************************************************
+** Form implementation generated from reading ui file 'DlgRef_2Sel2List_QTD.ui'
+**
+** Created: Thu Mar 27 16:38:25 2008
+** by: The User Interface Compiler ($Id$)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "DlgRef_2Sel2List_QTD.h"
+
+#include <qvariant.h>
+#include <qgroupbox.h>
+#include <qlineedit.h>
+#include <qcombobox.h>
+#include <qlabel.h>
+#include <qpushbutton.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+/*
+ * Constructs a DlgRef_2Sel2List_QTD as a child of 'parent', with the
+ * name 'name' and widget flags set to 'f'.
+ */
+DlgRef_2Sel2List_QTD::DlgRef_2Sel2List_QTD( QWidget* parent, const char* name, WFlags fl )
+ : QWidget( parent, name, fl )
+{
+ if ( !name )
+ setName( "DlgRef_2Sel2List_QTD" );
+ DlgRef_2Sel2List_QTDLayout = new QVBoxLayout( this, 11, 6, "DlgRef_2Sel2List_QTDLayout");
+
+ GroupBox1 = new QGroupBox( this, "GroupBox1" );
+ GroupBox1->setColumnLayout(0, Qt::Vertical );
+ GroupBox1->layout()->setSpacing( 6 );
+ GroupBox1->layout()->setMargin( 11 );
+ GroupBox1Layout = new QGridLayout( GroupBox1->layout() );
+ GroupBox1Layout->setAlignment( Qt::AlignTop );
+
+ LineEdit2 = new QLineEdit( GroupBox1, "LineEdit2" );
+
+ GroupBox1Layout->addWidget( LineEdit2, 1, 2 );
+
+ ComboBox2 = new QComboBox( FALSE, GroupBox1, "ComboBox2" );
+
+ GroupBox1Layout->addMultiCellWidget( ComboBox2, 3, 3, 1, 2 );
+
+ TextLabel4 = new QLabel( GroupBox1, "TextLabel4" );
+ TextLabel4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel4->sizePolicy().hasHeightForWidth() ) );
+
+ GroupBox1Layout->addWidget( TextLabel4, 3, 0 );
+
+ ComboBox1 = new QComboBox( FALSE, GroupBox1, "ComboBox1" );
+
+ GroupBox1Layout->addMultiCellWidget( ComboBox1, 2, 2, 1, 2 );
+
+ TextLabel3 = new QLabel( GroupBox1, "TextLabel3" );
+ TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) );
+
+ GroupBox1Layout->addWidget( TextLabel3, 2, 0 );
+
+ LineEdit1 = new QLineEdit( GroupBox1, "LineEdit1" );
+
+ GroupBox1Layout->addWidget( LineEdit1, 0, 2 );
+
+ TextLabel2 = new QLabel( GroupBox1, "TextLabel2" );
+ TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) );
+
+ GroupBox1Layout->addWidget( TextLabel2, 1, 0 );
+
+ TextLabel1 = new QLabel( GroupBox1, "TextLabel1" );
+ TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) );
+
+ GroupBox1Layout->addWidget( TextLabel1, 0, 0 );
+
+ PushButton1 = new QPushButton( GroupBox1, "PushButton1" );
+ PushButton1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton1->sizePolicy().hasHeightForWidth() ) );
+
+ GroupBox1Layout->addWidget( PushButton1, 0, 1 );
+
+ PushButton2 = new QPushButton( GroupBox1, "PushButton2" );
+ PushButton2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, PushButton2->sizePolicy().hasHeightForWidth() ) );
+
+ GroupBox1Layout->addWidget( PushButton2, 1, 1 );
+ DlgRef_2Sel2List_QTDLayout->addWidget( GroupBox1 );
+ languageChange();
+ resize( QSize(187, 182).expandedTo(minimumSizeHint()) );
+ clearWState( WState_Polished );
+}
+
+/*
+ * Destroys the object and frees any allocated resources
+ */
+DlgRef_2Sel2List_QTD::~DlgRef_2Sel2List_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_2Sel2List_QTD::languageChange()
+{
+ setCaption( tr( "DlgRef_2Sel2List_QTD" ) );
+ GroupBox1->setTitle( QString::null );
+ TextLabel4->setText( tr( "TL4" ) );
+ TextLabel3->setText( tr( "TL3" ) );
+ TextLabel2->setText( tr( "TL2" ) );
+ TextLabel1->setText( tr( "TL1" ) );
+ PushButton1->setText( QString::null );
+ PushButton2->setText( QString::null );
+}
+
--- /dev/null
+/****************************************************************************
+** Form interface generated from reading ui file 'DlgRef_2Sel2List_QTD.ui'
+**
+** Created: Thu Mar 27 16:38:25 2008
+** by: The User Interface Compiler ($Id$)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef DLGREF_2SEL2LIST_QTD_H
+#define DLGREF_2SEL2LIST_QTD_H
+
+#include <qvariant.h>
+#include <qwidget.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class QGroupBox;
+class QLineEdit;
+class QComboBox;
+class QLabel;
+class QPushButton;
+
+class DlgRef_2Sel2List_QTD : public QWidget
+{
+ Q_OBJECT
+
+public:
+ DlgRef_2Sel2List_QTD( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+ ~DlgRef_2Sel2List_QTD();
+
+ QGroupBox* GroupBox1;
+ QLineEdit* LineEdit2;
+ QComboBox* ComboBox2;
+ QLabel* TextLabel4;
+ QComboBox* ComboBox1;
+ QLabel* TextLabel3;
+ QLineEdit* LineEdit1;
+ QLabel* TextLabel2;
+ QLabel* TextLabel1;
+ QPushButton* PushButton1;
+ QPushButton* PushButton2;
+
+protected:
+ QVBoxLayout* DlgRef_2Sel2List_QTDLayout;
+ QGridLayout* GroupBox1Layout;
+
+protected slots:
+ virtual void languageChange();
+
+};
+
+#endif // DLGREF_2SEL2LIST_QTD_H
DlgRef_2Sel3Spin2Rb.cxx \
DlgRef_4Sel1List_QTD.cxx \
DlgRef_2Sel1List_QTD.cxx \
+ DlgRef_2Sel2List_QTD.cxx \
DlgRef_2Sel1List1Check_QTD.cxx \
DlgRef_1List1Spin1Btn_QTD.cxx \
DlgRef_4Sel1List1Check_QTD.cxx \
DlgRef_3Spin_QTD.cxx \
DlgRef_3Spin1Check_QTD.cxx \
DlgRef_3Sel3Spin1Check_QTD.cxx \
- DlgRef_3Sel3Spin2Check_QTD.cxx \
+ DlgRef_3Sel3Spin2Check_QTD.cxx \
DlgRef_4Sel1Spin2Check_QTD.cxx \
DlgRef_SpinBox.cxx \
DlgRef_1Sel1Spin.cxx \
DlgRef_2Sel4Spin1Check.cxx \
DlgRef_3Sel4Spin2Check.cxx \
DlgRef_3Sel3Spin1Check.cxx \
- DlgRef_3Sel3Spin2Check.cxx \
+ DlgRef_3Sel3Spin2Check.cxx \
DlgRef_1Spin.cxx \
DlgRef_2Spin.cxx \
DlgRef_3Spin.cxx \
DlgRef_3Sel4Spin2Check_QTD_moc.cxx \
DlgRef_4Sel1List_QTD_moc.cxx \
DlgRef_2Sel1List_QTD_moc.cxx \
+ DlgRef_2Sel2List_QTD_moc.cxx \
DlgRef_2Sel1List1Check_QTD_moc.cxx \
DlgRef_1List1Spin1Btn_QTD_moc.cxx \
DlgRef_4Sel1List1Check_QTD_moc.cxx \
DlgRef_3Spin_QTD_moc.cxx \
DlgRef_3Spin1Check_QTD_moc.cxx \
DlgRef_3Sel3Spin1Check_QTD_moc.cxx \
- DlgRef_3Sel3Spin2Check_QTD_moc.cxx \
+ DlgRef_3Sel3Spin2Check_QTD_moc.cxx \
DlgRef_4Sel1Spin2Check_QTD_moc.cxx \
DlgRef_SpinBox_moc.cxx \
DlgRef_1Sel1Spin_moc.cxx \
DlgRef_2Sel4Spin1Check_moc.cxx \
DlgRef_3Sel4Spin2Check_moc.cxx \
DlgRef_3Sel3Spin1Check_moc.cxx \
- DlgRef_3Sel3Spin2Check_moc.cxx \
+ DlgRef_3Sel3Spin2Check_moc.cxx \
DlgRef_1Spin_moc.cxx \
DlgRef_2Spin_moc.cxx \
DlgRef_3Spin_moc.cxx \
DlgRef_2Sel3Spin2Rb.h \
DlgRef_4Sel1List_QTD.h \
DlgRef_2Sel1List_QTD.h \
+ DlgRef_2Sel2List_QTD.h \
DlgRef_2Sel1List1Check_QTD.h \
DlgRef_1List1Spin1Btn_QTD.h \
DlgRef_4Sel1List1Check_QTD.h \
DlgRef_3Spin_QTD.h \
DlgRef_3Spin1Check_QTD.h \
DlgRef_3Sel3Spin1Check_QTD.h \
- DlgRef_3Sel3Spin2Check_QTD.h \
+ DlgRef_3Sel3Spin2Check_QTD.h \
DlgRef_4Sel1Spin2Check_QTD.h \
DlgRef_SpinBox.h \
DlgRef_1Sel1Spin.h \
DlgRef_2Sel4Spin1Check.h \
DlgRef_3Sel4Spin2Check.h \
DlgRef_3Sel3Spin1Check.h \
- DlgRef_3Sel3Spin2Check.h \
+ DlgRef_3Sel3Spin2Check.h \
DlgRef_1Spin.h \
DlgRef_2Spin.h \
DlgRef_3Spin.h \
--- /dev/null
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>DlgRef_2Sel2List_QTD</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>DlgRef_2Sel2List_QTD</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>187</width>
+ <height>182</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>DlgRef_2Sel2List_QTD</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QGroupBox">
+ <property name="name">
+ <cstring>GroupBox1</cstring>
+ </property>
+ <property name="title">
+ <string></string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLineEdit" row="1" column="2">
+ <property name="name">
+ <cstring>LineEdit2</cstring>
+ </property>
+ </widget>
+ <widget class="QComboBox" row="3" column="1" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>ComboBox2</cstring>
+ </property>
+ </widget>
+ <widget class="QLabel" row="3" column="0">
+ <property name="name">
+ <cstring>TextLabel4</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>TL4</string>
+ </property>
+ </widget>
+ <widget class="QComboBox" row="2" column="1" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>ComboBox1</cstring>
+ </property>
+ </widget>
+ <widget class="QLabel" row="2" column="0">
+ <property name="name">
+ <cstring>TextLabel3</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>TL3</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="0" column="2">
+ <property name="name">
+ <cstring>LineEdit1</cstring>
+ </property>
+ </widget>
+ <widget class="QLabel" row="1" column="0">
+ <property name="name">
+ <cstring>TextLabel2</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>TL2</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>TextLabel1</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>TL1</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" row="0" column="1">
+ <property name="name">
+ <cstring>PushButton1</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ <widget class="QPushButton" row="1" column="1">
+ <property name="name">
+ <cstring>PushButton2</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ </vbox>
+</widget>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
msgid "ICON_DLG_ARCHIMEDE"
msgstr "archimede.png"
+#GetShapesOnShapeDlg
+msgid "ICON_DLG_SHAPES_ON_SHAPE"
+msgstr "shapesonshape.png"
+
#PartitionDlg
msgid "ICON_DLG_PARTITION"
msgstr "partition.png"
#==============================================================================
#
+#ShapesOnShape
+msgid "GEOM_SHAPES_ON_SHAPE"
+msgstr "Shapes_on_shape"
+msgid "GEOM_SHAPES_ON_SHAPE_ESHAPE"
+msgstr "Shape for exploding"
+msgid "GEOM_SHAPES_ON_SHAPE_CSHAPE"
+msgstr "Shape for checking"
+msgid "GEOM_SHAPES_ON_SHAPE_STATE"
+msgstr "State"
+
#Partition
msgid "GEOM_PARTITION"
msgstr "Partition"
msgid "GEOM_ORIENTATION_OPT"
msgstr "Reverse orientation with normal vectors simulation"
+#: GeometryGUI_GetShapesOnShapeDlg.cxx
+msgid "GEOM_SHAPES_ON_SHAPE_TITLE"
+msgstr "Get shapes on shape"
+
#: GeometryGUI_PartitionDlg.cxx:45
msgid "GEOM_PARTITION_TITLE"
msgstr "Partition Of Object With Tool"
msgid "GEOM_INTERPOL"
msgstr "Interpolation"
+msgid "GEOM_STATE_IN"
+msgstr "IN"
+msgid "GEOM_STATE_OUT"
+msgstr "OUT"
+msgid "GEOM_STATE_ON"
+msgstr "ON"
+msgid "GEOM_STATE_ONIN"
+msgstr "ONIN"
+msgid "GEOM_STATE_ONOUT"
+msgstr "ONOUT"
+msgid "GEOM_STATE_INOUT"
+msgstr "INOUT"
+
#
#==============================================================================
#
msgid "STB_PARTITION"
msgstr "Partition"
+msgid "TOP_GET_SHAPES_ON_SHAPES"
+msgstr "Get shapes on shape"
+
+msgid "MEN_GET_SHAPES_ON_SHAPES"
+msgstr "Get shapes on shape"
+
+msgid "STB_GET_SHAPES_ON_SHAPES"
+msgstr "Get shapes on shape"
+
msgid "TOP_ARCHIMEDE"
msgstr "Archimede"
#==============================================================================
#
+#GetShapesOnShape
+msgid "GEOM_SHAPES_ON_SHAPE"
+msgstr "Get shapes on shape"
+msgid "GEOM_SHAPES_ON_SHAPE_ESHAPE"
+msgstr "Shape for exploding"
+msgid "GEOM_SHAPES_ON_SHAPE_CSHAPE"
+msgstr "Shape for checking"
+msgid "GEOM_SHAPES_ON_SHAPE_STATE"
+msgstr "State"
+
#Partition
msgid "GEOM_PARTITION"
msgstr "Partition"
msgid "GEOM_ORIENTATION_OPT"
msgstr "Renverser l'orientation avec une simulation de vecteur normal"
+#: GeometryGUI_GetShapesOnShapeDlg.cxx
+msgid "GEOM_SHAPES_ON_SHAPE_TITLE"
+msgstr "Get shapes on shape"
+
#: GeometryGUI_PartitionDlg.cxx:45
msgid "GEOM_PARTITION_TITLE"
msgstr "Partition d'Objects Avec Outils"
msgid "GEOM_INTERPOL"
msgstr "Interpolation"
+msgid "GEOM_STATE_IN"
+msgstr "IN"
+msgid "GEOM_STATE_OUT"
+msgstr "OUT"
+msgid "GEOM_STATE_ON"
+msgstr "ON"
+msgid "GEOM_STATE_ONIN"
+msgstr "ONIN"
+msgid "GEOM_STATE_ONOUT"
+msgstr "ONOUT"
+msgid "GEOM_STATE_INOUT"
+msgstr "INOUT"
+
#
#==============================================================================
#
id == 504 || // MENU OPERATION - ARCHIMEDE
id == 505 || // MENU OPERATION - FILLET
id == 506 || // MENU OPERATION - CHAMFER
- id == 507 ) { // MENU OPERATION - CLIPPING RANGE
+ id == 507 || // MENU OPERATION - CLIPPING RANGE
+ id == 508 ) { // MENU OPERATION - GET SHAPES ON SHAPE
#ifndef WNT
library = getLibrary( "libOperationGUI.so" );
#else
createGeomAction( 505, "FILLET" );
createGeomAction( 506, "CHAMFER" );
//createGeomAction( 507, "CLIPPING" );
+ createGeomAction( 508, "GET_SHAPES_ON_SHAPES" );
createGeomAction( 9998, "MUL_TRANSFORM" );
createGeomAction( 9995, "EXPLODE_BLOCKS" );
createMenu( 503, operId, -1 );
createMenu( 504, operId, -1 );
+ createMenu( 508, operId, -1 );
createMenu( separator(), operId, -1 );
createMenu( 505, transId, -1 );
createMenu( 506, transId, -1 );
#include "GEOMAlgo_FinderShapeOnQuad.hxx"
#include "GEOMAlgo_FinderShapeOn2.hxx"
#include "GEOMAlgo_ClsfBox.hxx"
+#include "GEOMAlgo_ClsfSolid.hxx"
#include "GEOMAlgo_Gluer1.hxx"
#include "GEOMAlgo_ListIteratorOfListOfCoupleOfShapes.hxx"
#include "GEOMAlgo_CoupleOfShapes.hxx"
#include <vector>
+#include <Standard_NullObject.hxx>
#include <Standard_Failure.hxx>
#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
// Make a Python command
GEOM::TPythonDump(aFunction)
- << "listShapesOnBoxIDs = geompy.GetShapesOnQuadrangleIDs("
+ << "listShapesOnBoxIDs = geompy.GetShapesOnBoxIDs("
<< theBox << ", "
<< theShape << ", "
<< TopAbs_ShapeEnum(theShapeType) << ", "
}
+//=======================================================================
+//function : getShapesOnShapeIDs
+/*!
+ * \brief Find IDs of subshapes complying with given status about surface
+ * \param theCheckShape - the shape to check state of subshapes against
+ * \param theShape - the shape to explore
+ * \param theShapeType - type of subshape of theShape
+ * \param theState - required state
+ * \retval Handle(TColStd_HSequenceOfInteger) - IDs of found subshapes
+ */
+//=======================================================================
+
+Handle(TColStd_HSequenceOfInteger)
+ GEOMImpl_IShapesOperations::getShapesOnShapeIDs
+ (const Handle(GEOM_Object)& theCheckShape,
+ const Handle(GEOM_Object)& theShape,
+ const Standard_Integer theShapeType,
+ GEOMAlgo_State theState)
+{
+ Handle(TColStd_HSequenceOfInteger) aSeqOfIDs;
+
+ TopoDS_Shape aCheckShape = theCheckShape->GetValue();
+ TopoDS_Shape aShape = theShape->GetValue();
+ TopTools_ListOfShape res;
+
+ // Check presence of triangulation, build if need
+ if (!CheckTriangulation(aShape)) {
+ SetErrorCode("Cannot build triangulation on the shape");
+ return aSeqOfIDs;
+ }
+
+ // Call algo
+ GEOMAlgo_FinderShapeOn2 aFinder;
+ Standard_Real aTol = 0.0001; // default value
+
+ Handle(GEOMAlgo_ClsfSolid) aClsfSolid = new GEOMAlgo_ClsfSolid;
+ aClsfSolid->SetShape(aCheckShape);
+
+ aFinder.SetShape(aShape);
+ aFinder.SetTolerance(aTol);
+ aFinder.SetClsf(aClsfSolid);
+ aFinder.SetShapeType( (TopAbs_ShapeEnum)theShapeType );
+ aFinder.SetState(theState);
+ aFinder.Perform();
+
+ // Interprete results
+ Standard_Integer iErr = aFinder.ErrorStatus();
+ // the detailed description of error codes is in GEOMAlgo_FinderShapeOn1.cxx
+ if (iErr) {
+ MESSAGE(" iErr : " << iErr);
+ TCollection_AsciiString aMsg (" iErr : ");
+ aMsg += TCollection_AsciiString(iErr);
+ SetErrorCode(aMsg);
+ return aSeqOfIDs;
+ }
+ Standard_Integer iWrn = aFinder.WarningStatus();
+ // the detailed description of warning codes is in GEOMAlgo_FinderShapeOn1.cxx
+ if (iWrn) {
+ MESSAGE(" *** iWrn : " << iWrn);
+ }
+
+ const TopTools_ListOfShape& listSS = aFinder.Shapes(); // the result
+
+ if (listSS.Extent() < 1) {
+ //SetErrorCode("Not a single sub-shape of the requested type found on the given surface");
+ SetErrorCode(NOT_FOUND_ANY); // NPAL18017
+ }
+
+ // Fill sequence of object IDs
+ aSeqOfIDs = new TColStd_HSequenceOfInteger;
+
+ TopTools_IndexedMapOfShape anIndices;
+ TopExp::MapShapes(aShape, anIndices);
+
+ TopTools_ListIteratorOfListOfShape itSub (listSS);
+ for (int index = 1; itSub.More(); itSub.Next(), ++index) {
+ int id = anIndices.FindIndex(itSub.Value());
+ aSeqOfIDs->Append(id);
+ }
+
+ return aSeqOfIDs;
+}
+
+
+//=======================================================================
+//function : GetShapesOnShapeIDs
+/*!
+ * \brief Find subshapes complying with given status about surface
+ * \param theCheckShape - the shape to check state of subshapes against
+ * \param theShape - the shape to explore
+ * \param theShapeType - type of subshape of theShape
+ * \param theState - required state
+ * \retval Handle(TColStd_HSequenceOfInteger) - IDs of found subshapes
+ */
+//=======================================================================
+
+Handle(TColStd_HSequenceOfInteger)
+ GEOMImpl_IShapesOperations::GetShapesOnShapeIDs
+ (const Handle(GEOM_Object)& theCheckShape,
+ const Handle(GEOM_Object)& theShape,
+ const Standard_Integer theShapeType,
+ GEOMAlgo_State theState)
+{
+ Handle(TColStd_HSequenceOfInteger) aSeqOfIDs =
+ getShapesOnShapeIDs (theCheckShape, theShape, theShapeType, theState);
+
+ if ( aSeqOfIDs.IsNull() || aSeqOfIDs->Length() == 0 )
+ return NULL;
+
+ // The GetShapesOnShape() doesn't change object so no new function is required.
+ Handle(GEOM_Function) aFunction =
+ GEOM::GetCreatedLast(theShape,theCheckShape)->GetLastFunction();
+
+ // Make a Python command
+ GEOM::TPythonDump(aFunction)
+ << "listShapesOnBoxIDs = geompy.GetShapesOnShapeIDs("
+ << theCheckShape << ", "
+ << theShape << ", "
+ << TopAbs_ShapeEnum(theShapeType) << ", "
+ << theState << ")";
+
+ SetErrorCode(OK);
+ return aSeqOfIDs;
+}
+
+
+//=======================================================================
+//function : GetShapesOnShape
+/*!
+ * \brief Find subshapes complying with given status about surface
+ * \param theCheckShape - the shape to check state of subshapes against
+ * \param theShape - the shape to explore
+ * \param theShapeType - type of subshape of theShape
+ * \param theState - required state
+ * \retval Handle(TColStd_HSequenceOfTransient) - found subshapes
+ */
+//=======================================================================
+
+Handle(TColStd_HSequenceOfTransient)
+ GEOMImpl_IShapesOperations::GetShapesOnShape
+ (const Handle(GEOM_Object)& theCheckShape,
+ const Handle(GEOM_Object)& theShape,
+ const Standard_Integer theShapeType,
+ GEOMAlgo_State theState)
+{
+ Handle(TColStd_HSequenceOfInteger) aSeqOfIDs =
+ getShapesOnShapeIDs (theCheckShape, theShape, theShapeType, theState);
+ if ( aSeqOfIDs.IsNull() || aSeqOfIDs->Length() == 0 )
+ return NULL;
+
+ // Find objects by indices
+ TCollection_AsciiString anAsciiList;
+ Handle(TColStd_HSequenceOfTransient) aSeq;
+ aSeq = getObjectsShapesOn( theShape, aSeqOfIDs, anAsciiList );
+
+ if ( aSeq.IsNull() || aSeq->IsEmpty() )
+ return NULL;
+
+ // Make a Python command
+
+ Handle(GEOM_Object) anObj = Handle(GEOM_Object)::DownCast( aSeq->Value( 1 ));
+ Handle(GEOM_Function) aFunction = anObj->GetLastFunction();
+
+ GEOM::TPythonDump(aFunction)
+ << "[" << anAsciiList.ToCString() << "] = geompy.GetShapesOnShape("
+ << theCheckShape << ", "
+ << theShape << ", "
+ << TopAbs_ShapeEnum(theShapeType) << ", "
+ << theState << ")";
+
+
+ SetErrorCode(OK);
+ return aSeq;
+}
+
+
+//=======================================================================
+//function : GetShapesOnShapeAsCompound
+//=======================================================================
+
+Handle(GEOM_Object) GEOMImpl_IShapesOperations::GetShapesOnShapeAsCompound
+ (const Handle(GEOM_Object)& theCheckShape,
+ const Handle(GEOM_Object)& theShape,
+ const Standard_Integer theShapeType,
+ GEOMAlgo_State theState)
+{
+ Handle(TColStd_HSequenceOfInteger) aSeqOfIDs =
+ getShapesOnShapeIDs (theCheckShape, theShape, theShapeType, theState);
+
+ if ( aSeqOfIDs.IsNull() || aSeqOfIDs->Length() == 0 )
+ return NULL;
+
+ // Find objects by indices
+ TCollection_AsciiString anAsciiList;
+ Handle(TColStd_HSequenceOfTransient) aSeq;
+ aSeq = getObjectsShapesOn( theShape, aSeqOfIDs, anAsciiList );
+
+ if ( aSeq.IsNull() || aSeq->IsEmpty() )
+ return NULL;
+
+ TopoDS_Compound aCompound;
+ BRep_Builder B;
+ B.MakeCompound(aCompound);
+ int i = 1;
+ for(; i<=aSeq->Length(); i++) {
+ Handle(GEOM_Object) anObj = Handle(GEOM_Object)::DownCast(aSeq->Value(i));
+ TopoDS_Shape aShape_i = anObj->GetValue();
+ B.Add(aCompound,aShape_i);
+ }
+
+ //Add a new result object
+ Handle(GEOM_Object) aRes = GetEngine()->AddObject(GetDocID(), GEOM_SHAPES_ON_SHAPE);
+ Handle(GEOM_Function) aFunction =
+ aRes->AddFunction(GEOMImpl_ShapeDriver::GetID(), SHAPES_ON_SHAPE);
+ aFunction->SetValue(aCompound);
+
+ GEOM::TPythonDump(aFunction)
+ << aRes << " = geompy.GetShapesOnShapeAsCompound("
+ << theCheckShape << ", "
+ << theShape << ", "
+ << TopAbs_ShapeEnum(theShapeType) << ", "
+ << theState << ")";
+
+ SetErrorCode(OK);
+
+ return aRes;
+}
+
+
//=======================================================================
//function : getShapesOnSurfaceIDs
/*!
* \param theShape - the shape to explore
* \param theShapeType - type of subshape of theShape
* \param theState - required state
+ * \retval Handle(TColStd_HSequenceOfTransient) - found shape objects
+ */
+ Standard_EXPORT Handle(TColStd_HSequenceOfTransient)
+ GetShapesOnBox(const Handle(GEOM_Object)& theBox,
+ const Handle(GEOM_Object)& theShape,
+ const Standard_Integer theShapeType,
+ GEOMAlgo_State theState);
+
+ /*!
+ * \brief Find IDs of subshapes complying with given status about surface
+ * \param theCheckShape - the shape to check state of subshapes against
+ * \param theShape - the shape to explore
+ * \param theShapeType - type of subshape of theShape
+ * \param theState - required state
* \retval Handle(TColStd_HSequenceOfInteger) - IDs of found subshapes
*/
+ Standard_EXPORT Handle(TColStd_HSequenceOfInteger)
+ GetShapesOnShapeIDs(const Handle(GEOM_Object)& theCheckShape,
+ const Handle(GEOM_Object)& theShape,
+ const Standard_Integer theShapeType,
+ GEOMAlgo_State theState);
+
+ /*!
+ * \brief Find subshapes complying with given status about surface
+ * \param theCheckShape - the shape to check state of subshapes against
+ * \param theShape - the shape to explore
+ * \param theShapeType - type of subshape of theShape
+ * \param theState - required state
+ * \retval Handle(TColStd_HSequenceOfTransient) - found shape objects
+ */
Standard_EXPORT Handle(TColStd_HSequenceOfTransient)
- GetShapesOnBox(const Handle(GEOM_Object)& theBox,
- const Handle(GEOM_Object)& theShape,
- const Standard_Integer theShapeType,
- GEOMAlgo_State theState);
+ GetShapesOnShape(const Handle(GEOM_Object)& theCheckShape,
+ const Handle(GEOM_Object)& theShape,
+ const Standard_Integer theShapeType,
+ GEOMAlgo_State theState);
+ Standard_EXPORT Handle(GEOM_Object)
+ GetShapesOnShapeAsCompound(const Handle(GEOM_Object)& theCheckShape,
+ const Handle(GEOM_Object)& theShape,
+ const Standard_Integer theShapeType,
+ GEOMAlgo_State theState);
public:
/*!
/*!
* \brief Checks if theShapeType parameter of GetShapesOnXXX() is OK
- * \param theShapeType - the shape type to check
- * \retval bool - result of the check
+ * \param theShapeType - the shape type to check
+ * \retval bool - result of the check
*/
bool checkTypeShapesOn(const Standard_Integer theShapeType);
/*!
* \brief Creates Geom_CylindricalSurface
- * \param theAx1 - edge defining cylinder axis
- * \param theRadius - cylinder radius
- * \retval Handle(Geom_Surface) - resulting surface
+ * \param theAx1 - edge defining cylinder axis
+ * \param theRadius - cylinder radius
+ * \retval Handle(Geom_Surface) - resulting surface
*/
Handle(Geom_Surface) makeCylinder(const TopoDS_Shape& theAx1,
const Standard_Real theRadius);
/*!
* \brief Find IDs of subshapes complying with given status about surface
- * \param theSurface - the surface to check state of subshapes against
- * \param theShape - the shape to explore
- * \param theShapeType - type of subshape of theShape
- * \param theState - required state
- * \retval Handle(TColStd_HSequenceOfInteger) - IDs of found subshapes
+ * \param theSurface - the surface to check state of subshapes against
+ * \param theShape - the shape to explore
+ * \param theShapeType - type of subshape of theShape
+ * \param theState - required state
+ * \retval Handle(TColStd_HSequenceOfInteger) - IDs of found subshapes
*/
Handle(TColStd_HSequenceOfInteger)
getShapesOnSurfaceIDs(const Handle(Geom_Surface)& theSurface,
/*!
* \brief Find subshapes complying with given status about surface
- * \param theSurface - the surface to check state of subshapes against
- * \param theShape - the shape to explore
- * \param theShapeType - type of subshape of theShape
- * \param theState - required state
- * \param theShapeEntries - outgoing entries like "entry1, entry2, ..."
- * \retval Handle(TColStd_HSequenceOfInteger) - IDs of found subshapes
+ * \param theSurface - the surface to check state of subshapes against
+ * \param theShape - the shape to explore
+ * \param theShapeType - type of subshape of theShape
+ * \param theState - required state
+ * \param theShapeEntries - outgoing entries like "entry1, entry2, ..."
+ * \retval Handle(TColStd_HSequenceOfTransient) - found shape objects
*/
Handle(TColStd_HSequenceOfTransient)
getShapesOnSurface(const Handle(Geom_Surface)& theSurface,
/*!
* \brief Find IDs of subshapes complying with given status about quadrangle
- * \param theShape - the shape to explore
- * \param theShapeType - type of subshape of theShape
- * \param theTopLeftPoint - top left quadrangle corner
- * \param theTopRigthPoint - top right quadrangle corner
- * \param theBottomLeftPoint - bottom left quadrangle corner
- * \param theBottomRigthPoint - bottom right quadrangle corner
- * \param theState - required state
- * \retval Handle(TColStd_HSequenceOfInteger) - IDs of found subshapes
+ * \param theShape - the shape to explore
+ * \param theShapeType - type of subshape of theShape
+ * \param theTopLeftPoint - top left quadrangle corner
+ * \param theTopRigthPoint - top right quadrangle corner
+ * \param theBottomLeftPoint - bottom left quadrangle corner
+ * \param theBottomRigthPoint - bottom right quadrangle corner
+ * \param theState - required state
+ * \retval Handle(TColStd_HSequenceOfInteger) - IDs of found subshapes
*/
Handle(TColStd_HSequenceOfInteger)
getShapesOnQuadrangleIDs (const Handle(GEOM_Object)& theShape,
/*!
* \brief Find IDs of subshapes complying with given status about surface
- * \param theBox - the box to check state of subshapes against
- * \param theShape - the shape to explore
- * \param theShapeType - type of subshape of theShape
- * \param theState - required state
- * \retval Handle(TColStd_HSequenceOfInteger) - IDs of found subshapes
+ * \param theBox - the box to check state of subshapes against
+ * \param theShape - the shape to explore
+ * \param theShapeType - type of subshape of theShape
+ * \param theState - required state
+ * \retval Handle(TColStd_HSequenceOfInteger) - IDs of found subshapes
*/
Handle(TColStd_HSequenceOfInteger) getShapesOnBoxIDs(const Handle(GEOM_Object)& theBox,
const Handle(GEOM_Object)& theShape,
const Standard_Integer theShapeType,
GEOMAlgo_State theState);
+ /*!
+ * \brief Find IDs of subshapes complying with given status about surface
+ * \param theCheckShape - the shape to check state of subshapes against
+ * \param theShape - the shape to explore
+ * \param theShapeType - type of subshape of theShape
+ * \param theState - required state
+ * \retval Handle(TColStd_HSequenceOfInteger) - IDs of found subshapes
+ */
+ Handle(TColStd_HSequenceOfInteger) getShapesOnShapeIDs
+ (const Handle(GEOM_Object)& theCheckShape,
+ const Handle(GEOM_Object)& theShape,
+ const Standard_Integer theShapeType,
+ GEOMAlgo_State theState);
+
/*!
* \brief Find shape objects and their entries by their ids
- * \param theShape - the main shape
- * \param theShapeIDs - theShapeIDs - incoming shape ids
- * \param theShapeEntries - outgoing entries like "entry1, entry2, ..."
- * \retval Handle(TColStd_HSequenceOfTransient) - found shape objects
+ * \param theShape - the main shape
+ * \param theShapeIDs - theShapeIDs - incoming shape ids
+ * \param theShapeEntries - outgoing entries like "entry1, entry2, ..."
+ * \retval Handle(TColStd_HSequenceOfTransient) - found shape objects
*/
Handle(TColStd_HSequenceOfTransient)
getObjectsShapesOn(const Handle(GEOM_Object)& theShape,
/*!
* \brief Select the object created last
- * \param theObj1 - Object 1
- * \param theObj2 - Object 2
- * \retval Handle(GEOM_Object) - selected object
+ * \param theObj1 - Object 1
+ * \param theObj2 - Object 2
+ * \retval Handle(GEOM_Object) - selected object
*/
static Handle(GEOM_Object) getCreatedLast(const Handle(GEOM_Object)& theObj1,
const Handle(GEOM_Object)& theObj2);
#define GEOM_COMPOUNDFILTER 41
+#define GEOM_SHAPES_ON_SHAPE 42
+
+
//GEOM_Function types
#define COPY_WITH_REF 1
#define GROUP_FUNCTION 1
+#define SHAPES_ON_SHAPE 1
+
// Blocks
#define BLOCK_FACE_FOUR_PNT 1
#define BLOCK_FACE_FOUR_EDGES 2
return aSeq._retn();
}
+
+//=============================================================================
+/*!
+ * GetShapesOnShape
+ */
+//=============================================================================
+GEOM::ListOfGO* GEOM_IShapesOperations_i::GetShapesOnShape
+ (GEOM::GEOM_Object_ptr theCheckShape,
+ GEOM::GEOM_Object_ptr theShape,
+ CORBA::Short theShapeType,
+ GEOM::shape_state theState)
+{
+ GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO;
+
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ if ( theShape == NULL || theCheckShape == NULL )
+ return aSeq._retn();
+
+ //Get the reference objects
+ Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
+ (theShape->GetStudyID(), theShape->GetEntry());
+ Handle(GEOM_Object) aCheckShape = GetOperations()->GetEngine()->GetObject
+ (theShape->GetStudyID(), theCheckShape->GetEntry());
+
+ if (aShape.IsNull() || aCheckShape.IsNull() )
+ return aSeq._retn();
+
+ //Get Shapes On Shape
+ Handle(TColStd_HSequenceOfTransient) aHSeq = GetOperations()->GetShapesOnShape
+ (aCheckShape,aShape, theShapeType,ShapeState(theState));
+
+ if (!GetOperations()->IsDone() || aHSeq.IsNull())
+ return aSeq._retn();
+
+ Standard_Integer aLength = aHSeq->Length();
+ aSeq->length(aLength);
+ for (Standard_Integer i = 1; i <= aLength; i++)
+ aSeq[i-1] = GetObject(Handle(GEOM_Object)::DownCast(aHSeq->Value(i)));
+
+ return aSeq._retn();
+}
+
+
+//=============================================================================
+/*!
+ * GetShapesOnShapeAsCompound
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::GetShapesOnShapeAsCompound
+ (GEOM::GEOM_Object_ptr theCheckShape,
+ GEOM::GEOM_Object_ptr theShape,
+ CORBA::Short theShapeType,
+ GEOM::shape_state theState)
+{
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ if ( theShape == NULL || theCheckShape == NULL )
+ return aGEOMObject._retn();
+
+ //Get the reference objects
+ Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
+ (theShape->GetStudyID(), theShape->GetEntry());
+ Handle(GEOM_Object) aCheckShape = GetOperations()->GetEngine()->GetObject
+ (theShape->GetStudyID(), theCheckShape->GetEntry());
+
+ if (aShape.IsNull() || aCheckShape.IsNull() )
+ return aGEOMObject._retn();
+
+ //Get Shapes On Shape
+ Handle(GEOM_Object) anObject = GetOperations()->GetShapesOnShapeAsCompound
+ (aCheckShape,aShape, theShapeType,ShapeState(theState));
+
+ if (anObject.IsNull())
+ return aGEOMObject._retn();
+
+ return GetObject(anObject);
+}
+
+
+//=============================================================================
+/*!
+ * GetShapesOnShapeIDs
+ */
+//=============================================================================
+GEOM::ListOfLong* GEOM_IShapesOperations_i::GetShapesOnShapeIDs
+ (GEOM::GEOM_Object_ptr theCheckShape,
+ GEOM::GEOM_Object_ptr theShape,
+ CORBA::Short theShapeType,
+ GEOM::shape_state theState)
+{
+ GEOM::ListOfLong_var aSeq = new GEOM::ListOfLong;
+
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ if ( theShape == NULL || theCheckShape == NULL )
+ return aSeq._retn();
+
+ //Get the reference objects
+ Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
+ (theShape->GetStudyID(), theShape->GetEntry());
+ Handle(GEOM_Object) aCheckShape = GetOperations()->GetEngine()->GetObject
+ (theShape->GetStudyID(), theCheckShape->GetEntry());
+
+ if (aShape.IsNull() || aCheckShape.IsNull() )
+ return aSeq._retn();
+
+ //Get Shapes On Shape
+ Handle(TColStd_HSequenceOfInteger) aHSeq = GetOperations()->GetShapesOnShapeIDs
+ (aCheckShape,aShape, theShapeType,ShapeState(theState));
+ if (!GetOperations()->IsDone() || aHSeq.IsNull())
+ return aSeq._retn();
+
+ Standard_Integer aLength = aHSeq->Length();
+ aSeq->length(aLength);
+ for (Standard_Integer i = 1; i <= aLength; i++)
+ aSeq[i-1] = aHSeq->Value(i);
+
+ return aSeq._retn();
+}
+
+
//=============================================================================
/*!
* GetInPlace
CORBA::Long theShapeType,
GEOM::shape_state theState);
+ GEOM::ListOfGO* GetShapesOnShape (GEOM::GEOM_Object_ptr theSheckShape,
+ GEOM::GEOM_Object_ptr theShape,
+ CORBA::Short theShapeType,
+ GEOM::shape_state theState);
+
+ GEOM::GEOM_Object_ptr GetShapesOnShapeAsCompound
+ (GEOM::GEOM_Object_ptr theSheckShape,
+ GEOM::GEOM_Object_ptr theShape,
+ CORBA::Short theShapeType,
+ GEOM::shape_state theState);
+
+ GEOM::ListOfLong* GetShapesOnShapeIDs (GEOM::GEOM_Object_ptr theCheckShape,
+ GEOM::GEOM_Object_ptr theShape,
+ CORBA::Short theShapeType,
+ GEOM::shape_state theState);
+
GEOM::GEOM_Object_ptr GetInPlace (GEOM::GEOM_Object_ptr theShapeWhere,
GEOM::GEOM_Object_ptr theShapeWhat);
return aRes;
}
+
//=============================================================================
// ChangeOrientation:
//=============================================================================
}
+//=============================================================================
+// GetShapesOnShape:
+//=============================================================================
+GEOM::GEOM_List_ptr GEOM_Superv_i::GetShapesOnShape
+ (GEOM::GEOM_Object_ptr theCheckShape,
+ GEOM::GEOM_Object_ptr theShape,
+ CORBA::Short theShapeType,
+ GEOM::shape_state theState)
+{
+ beginService( " GEOM_Superv_i::GetShapesOnShape" );
+ MESSAGE("GEOM_Superv_i::GetShapesOnShape");
+ getShapesOp();
+ GEOM::ListOfGO* aList =
+ myShapesOp->GetShapesOnShape(theCheckShape, theShape, theShapeType, theState);
+ GEOM_List_i<GEOM::ListOfGO>* aListPtr = new GEOM_List_i<GEOM::ListOfGO>(*(aList));
+ MESSAGE(" List of "<<aListPtr->GetList().length()<<" element(s)");
+ endService( " GEOM_Superv_i::GetShapesOnShape" );
+ return aListPtr->_this();
+}
+
+
+//=============================================================================
+// GetShapesOnShapeAsCompound:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::GetShapesOnShapeAsCompound
+ (GEOM::GEOM_Object_ptr theCheckShape,
+ GEOM::GEOM_Object_ptr theShape,
+ CORBA::Short theShapeType,
+ GEOM::shape_state theState)
+{
+ beginService( " GEOM_Superv_i::GetShapesOnShapeAsCompound" );
+ MESSAGE("GEOM_Superv_i::GetShapesOnShapeAsCompound");
+ getShapesOp();
+ GEOM::GEOM_Object_ptr anObj =
+ myShapesOp->GetShapesOnShapeAsCompound(theCheckShape, theShape, theShapeType, theState);
+ endService( " GEOM_Superv_i::GetShapesOnShapeAsCompound" );
+ return anObj;
+}
+
+
//=============================== BlocksOperations ============================
//=============================================================================
// MakeQuad4Vertices:
CORBA::Long NumberOfEdges (GEOM::GEOM_Object_ptr theShape);
GEOM::GEOM_Object_ptr ChangeOrientation (GEOM::GEOM_Object_ptr theShape);
+ GEOM::GEOM_List_ptr GetShapesOnShape (GEOM::GEOM_Object_ptr theCheckShape,
+ GEOM::GEOM_Object_ptr theShape,
+ CORBA::Short theShapeType,
+ GEOM::shape_state theState);
+ GEOM::GEOM_Object_ptr GetShapesOnShapeAsCompound
+ (GEOM::GEOM_Object_ptr theCheckShape,
+ GEOM::GEOM_Object_ptr theShape,
+ CORBA::Short theShapeType,
+ GEOM::shape_state theState);
+
+
//-----------------------------------------------------------//
// BlocksOperations //
//-----------------------------------------------------------//
RaiseIfFailed("GetShapesOnBoxIDs", self.ShapesOp)
return aList
+ ## Find in \a theShape all sub-shapes of type \a theShapeType,
+ # situated relatively the specified \a theCheckShape by the
+ # certain way, defined through \a theState parameter.
+ # @param theCheckShape Shape for relative comparing.
+ # @param theShape Shape to find sub-shapes of.
+ # @param theShapeType Type of sub-shapes to be retrieved.
+ # @param theState The state of the subshapes to find. It can be one of
+ # ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN.
+ # @return List of all found sub-shapes.
+ #
+ def GetShapesOnShape(self, theCheckShape, theShape, theShapeType, theState):
+ aList = self.ShapesOp.GetShapesOnShape(theCheckShape, theShape,
+ theShapeType, theState)
+ RaiseIfFailed("GetShapesOnShape", self.ShapesOp)
+ return aList
+
+ ## Works like the above method, but returns result as compound
+ #
+ def GetShapesOnShapeAsCompound(self, theCheckShape, theShape, theShapeType, theState):
+ anObj = self.ShapesOp.GetShapesOnShapeAsCompound(theCheckShape, theShape,
+ theShapeType, theState)
+ RaiseIfFailed("GetShapesOnShapeAsCompound", self.ShapesOp)
+ return anObj
+
+ ## Works like the above method, but returns list of sub-shapes indices
+ #
+ def GetShapesOnShapeIDs(self, theCheckShape, theShape, theShapeType, theState):
+ aList = self.ShapesOp.GetShapesOnShapeIDs(theCheckShape, theShape,
+ theShapeType, theState)
+ RaiseIfFailed("GetShapesOnShapeIDs", self.ShapesOp)
+ return aList
+
## Get sub-shape(s) of theShapeWhere, which are
# coincident with \a theShapeWhat or could be a part of it.
# @param theShapeWhere Shape to find sub-shapes of.
OperationGUI.cxx \
OperationGUI_ArchimedeDlg.cxx \
OperationGUI_PartitionDlg.cxx \
+ OperationGUI_GetShapesOnShapeDlg.cxx \
OperationGUI_FilletDlg.cxx \
OperationGUI_ChamferDlg.cxx \
OperationGUI_ClippingDlg.cxx
MOC_FILES = \
OperationGUI_ArchimedeDlg_moc.cxx \
OperationGUI_PartitionDlg_moc.cxx \
+ OperationGUI_GetShapesOnShapeDlg_moc.cxx \
OperationGUI_FilletDlg_moc.cxx \
OperationGUI_ChamferDlg_moc.cxx \
OperationGUI_ClippingDlg_moc.cxx
-I$(srcdir)/../OBJECT \
-I$(srcdir)/../GEOMClient \
-I$(srcdir)/../GEOMImpl \
+ -I$(srcdir)/../GEOMAlgo \
-I$(top_builddir)/idl \
-I$(top_builddir)/salome_adm/unix
#include "OperationGUI_ArchimedeDlg.h" // Method ARCHIMEDE
#include "OperationGUI_FilletDlg.h" // Method FILLET
#include "OperationGUI_ChamferDlg.h" // Method CHAMFER
-
#include "OperationGUI_ClippingDlg.h"
+#include "OperationGUI_GetShapesOnShapeDlg.h"
using namespace std;
case 505: (new OperationGUI_FilletDlg (getGeometryGUI(), parent))->show(); break;
case 506: (new OperationGUI_ChamferDlg (getGeometryGUI(), parent))->show(); break;
case 507: (new OperationGUI_ClippingDlg (getGeometryGUI(), parent))->show(); break;
+ case 508: (new OperationGUI_GetShapesOnShapeDlg (getGeometryGUI(), parent))->show(); break;
default:
app->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID));
}
--- /dev/null
+// 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 : OperationGUI_GetShapesOnShapeDlg.cxx
+// Author : Lucien PIGNOLONI
+// Module : GEOM
+
+#include "OperationGUI_GetShapesOnShapeDlg.h"
+
+#include "SUIT_Session.h"
+#include "SalomeApp_Application.h"
+#include "LightApp_SelectionMgr.h"
+
+#include <qcombobox.h>
+#include <qlabel.h>
+
+//using namespace std;
+
+//==============================================================================
+// class : OperationGUI_GetShapesOnShapeDlg()
+// purpose : Constructs a OperationGUI_GetShapesOnShapeDlg which is a child of
+// 'parent', with the name 'name' and widget flags set to 'f'.
+// The dialog will by default be modeless, unless you set 'modal' to
+// TRUE to construct a modal dialog.
+//=================================================================================
+OperationGUI_GetShapesOnShapeDlg::OperationGUI_GetShapesOnShapeDlg(GeometryGUI* theGeometryGUI,
+ QWidget* parent)
+ :GEOMBase_Skeleton(theGeometryGUI, parent, "OperationGUI_GetShapesOnShapeDlg", false,
+ WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu)
+{
+
+ SUIT_ResourceMgr* aResMgr = myGeomGUI->getApp()->resourceMgr();
+ QPixmap image0 (aResMgr->loadPixmap("GEOM", tr("ICON_DLG_SHAPES_ON_SHAPE")));
+ QPixmap image2 (aResMgr->loadPixmap("GEOM", tr("ICON_SELECT")));
+
+ setCaption(tr("GEOM_SHAPES_ON_SHAPE_TITLE"));
+
+ GroupConstructors->setTitle(tr("GEOM_SHAPES_ON_SHAPE"));
+
+ RadioButton1->setPixmap(image0);
+ RadioButton2->close(TRUE);
+ RadioButton3->close(TRUE);
+
+ GroupPoints = new DlgRef_2Sel2List_QTD(this, "GroupPoints");
+ //GroupPoints->GroupBox1->setTitle(tr("GEOM_PARTITION"));
+ GroupPoints->GroupBox1->setTitle("Input data");
+ GroupPoints->TextLabel1->setText(tr("GEOM_SHAPES_ON_SHAPE_ESHAPE"));
+ GroupPoints->TextLabel2->setText(tr("GEOM_SHAPES_ON_SHAPE_CSHAPE"));
+ GroupPoints->TextLabel3->setText(tr("GEOM_RECONSTRUCTION_LIMIT"));
+ GroupPoints->TextLabel4->setText(tr("GEOM_SHAPES_ON_SHAPE_STATE"));
+ GroupPoints->PushButton1->setPixmap(image2);
+ GroupPoints->PushButton2->setPixmap(image2);
+ GroupPoints->LineEdit1->setReadOnly( true );
+ GroupPoints->LineEdit2->setReadOnly( true );
+
+ Layout1->addWidget(GroupPoints, 2, 0);
+
+ Init();
+}
+
+
+//=================================================================================
+// function : ~OperationGUI_GetShapesOnShapeDlg
+// purpose : Destroys the object and frees any allocated resources
+//=================================================================================
+OperationGUI_GetShapesOnShapeDlg::~OperationGUI_GetShapesOnShapeDlg()
+{
+}
+
+
+//=================================================================================
+// function : Init()
+// purpose :
+//=================================================================================
+void OperationGUI_GetShapesOnShapeDlg::Init()
+{
+ /* type for sub shape selection */
+ GroupPoints->ComboBox1->insertItem(tr("GEOM_RECONSTRUCTION_LIMIT_SOLID"));
+ GroupPoints->ComboBox1->insertItem(tr("GEOM_RECONSTRUCTION_LIMIT_SHELL"));
+ GroupPoints->ComboBox1->insertItem(tr("GEOM_RECONSTRUCTION_LIMIT_FACE"));
+ GroupPoints->ComboBox1->insertItem(tr("GEOM_RECONSTRUCTION_LIMIT_WIRE"));
+ GroupPoints->ComboBox1->insertItem(tr("GEOM_RECONSTRUCTION_LIMIT_EDGE"));
+ GroupPoints->ComboBox1->insertItem(tr("GEOM_RECONSTRUCTION_LIMIT_VERTEX"));
+
+ /* type for state selection */
+ GroupPoints->ComboBox2->insertItem(tr("GEOM_STATE_IN"));
+ GroupPoints->ComboBox2->insertItem(tr("GEOM_STATE_OUT"));
+ GroupPoints->ComboBox2->insertItem(tr("GEOM_STATE_ON"));
+ GroupPoints->ComboBox2->insertItem(tr("GEOM_STATE_ONIN"));
+ GroupPoints->ComboBox2->insertItem(tr("GEOM_STATE_ONOUT"));
+
+ GroupPoints->LineEdit1->clear();
+ GroupPoints->LineEdit2->clear();
+
+ /* signals and slots connections */
+ connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk()));
+ connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply()));
+
+ connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
+ connect(GroupPoints->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
+
+ connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
+ connect(GroupPoints->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
+
+ connect(GroupPoints->ComboBox1, SIGNAL(activated(int)), this, SLOT(ComboTextChanged()));
+ connect(GroupPoints->ComboBox2, SIGNAL(activated(int)), this, SLOT(ComboTextChanged()));
+
+ connect(myGeomGUI->getApp()->selectionMgr(),
+ SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
+
+ connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
+ SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ;
+
+ globalSelection( GEOM_ALLSHAPES );
+
+ initName( GroupConstructors->title() );
+
+ resize(0, 0);
+ GroupPoints->TextLabel3->show();
+ GroupPoints->ComboBox1->show();
+ GroupPoints->ComboBox1->setCurrentItem(0);
+ GroupPoints->ComboBox2->show();
+ GroupPoints->ComboBox2->setCurrentItem(0);
+
+ myEditCurrentArgument = GroupPoints->LineEdit1;
+ myEditCurrentArgument->setFocus();
+ connect(myGeomGUI->getApp()->selectionMgr(),
+ SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
+
+}
+
+
+//=================================================================================
+// function : ClickOnOk()
+// purpose :
+//=================================================================================
+void OperationGUI_GetShapesOnShapeDlg::ClickOnOk()
+{
+ if ( ClickOnApply() )
+ ClickOnCancel();
+}
+
+
+//=================================================================================
+// function : ClickOnApply()
+// purpose :
+//=================================================================================
+bool OperationGUI_GetShapesOnShapeDlg::ClickOnApply()
+{
+ if ( !onAccept() )
+ return false;
+
+ initName();
+ return true;
+}
+
+
+//=================================================================================
+// function : SelectionIntoArgument()
+// purpose : Called when selection has changed
+//=================================================================================
+void OperationGUI_GetShapesOnShapeDlg::SelectionIntoArgument()
+{
+ myEditCurrentArgument->setText( "" );
+ QString aString = "";
+
+ int nbSel = GEOMBase::GetNameOfSelectedIObjects( selectedIO(), aString, true );
+
+ if(nbSel>0) {
+ Standard_Boolean aRes = Standard_False;
+ GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes );
+ if ( !CORBA::is_nil( aSelectedObject ) && aRes && GEOMBase::IsShape( aSelectedObject ) ) {
+ {
+ myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
+ if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myObject1 = aSelectedObject;
+ else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) myObject2 = aSelectedObject;
+ }
+ }
+ }
+
+ myEditCurrentArgument->setText( aString );
+}
+
+
+//=================================================================================
+// function : SetEditCurrentArgument()
+// purpose :
+//=================================================================================
+void OperationGUI_GetShapesOnShapeDlg::SetEditCurrentArgument()
+{
+ QPushButton* send = (QPushButton*)sender();
+
+ if ( send == GroupPoints->PushButton1 ) myEditCurrentArgument = GroupPoints->LineEdit1;
+ else if ( send == GroupPoints->PushButton2 ) myEditCurrentArgument = GroupPoints->LineEdit2;
+
+ myEditCurrentArgument->setFocus();
+ SelectionIntoArgument();
+}
+
+
+//=================================================================================
+// function : LineEditReturnPressed()
+// purpose :
+//=================================================================================
+void OperationGUI_GetShapesOnShapeDlg::LineEditReturnPressed()
+{
+ QLineEdit* send = (QLineEdit*)sender();
+ if ( send == GroupPoints->LineEdit1 || send == GroupPoints->LineEdit2 )
+ {
+ myEditCurrentArgument = send;
+ GEOMBase_Skeleton::LineEditReturnPressed();
+ }
+}
+
+
+//=================================================================================
+// function : ActivateThisDialog()
+// purpose :
+//=================================================================================
+void OperationGUI_GetShapesOnShapeDlg::ActivateThisDialog()
+{
+ GEOMBase_Skeleton::ActivateThisDialog();
+ globalSelection( GEOM_ALLSHAPES );
+ connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
+ SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ;
+}
+
+
+//=================================================================================
+// function : enterEvent()
+// purpose : when mouse enter onto the QWidget
+//=================================================================================
+void OperationGUI_GetShapesOnShapeDlg::enterEvent(QEvent * e)
+{
+ if ( !GroupConstructors->isEnabled() )
+ ActivateThisDialog();
+}
+
+
+//=================================================================================
+// function : createOperation
+// purpose :
+//=================================================================================
+GEOM::GEOM_IOperations_ptr OperationGUI_GetShapesOnShapeDlg::createOperation()
+{
+ return getGeomEngine()->GetIShapesOperations( getStudyId() );
+}
+
+
+//=================================================================================
+// function : isValid
+// purpose :
+//=================================================================================
+bool OperationGUI_GetShapesOnShapeDlg::isValid( QString& msg )
+{
+ Handle(SALOME_InteractiveObject) IO = firstIObject();
+ Standard_Boolean testResult;
+ GEOM::GEOM_Object_var anObject = GEOMBase::ConvertIOinGEOMObject( IO, testResult );
+ if ( !testResult || anObject->_is_nil() )
+ return false;
+
+ return !CORBA::is_nil( myObject1 ) && !CORBA::is_nil( myObject2 );
+}
+
+//=================================================================================
+// function : execute
+// purpose :
+//=================================================================================
+bool OperationGUI_GetShapesOnShapeDlg::execute( ObjectList& objects )
+{
+ int aLimit = GroupPoints->ComboBox1->currentItem();
+ switch (aLimit)
+ {
+ case 0: aLimit = GEOM::SOLID ; break;
+ case 1: aLimit = GEOM::SHELL ; break;
+ case 2: aLimit = GEOM::FACE ; break;
+ case 3: aLimit = GEOM::WIRE ; break;
+ case 4: aLimit = GEOM::EDGE ; break;
+ case 5: aLimit = GEOM::VERTEX; break;
+ default: aLimit = GEOM::SHAPE ;
+ }
+
+ GEOM::shape_state aState;
+ switch (GroupPoints->ComboBox2->currentItem())
+ {
+ case 0: aState = GEOM::ST_IN; break;
+ case 1: aState = GEOM::ST_OUT; break;
+ case 2: aState = GEOM::ST_ON; break;
+ case 3: aState = GEOM::ST_ONIN; break;
+ case 4: aState = GEOM::ST_ONOUT; break;
+ default: break;
+ }
+
+ GEOM::GEOM_Object_var anObj = GEOM::GEOM_IShapesOperations::
+ _narrow( getOperation() )->GetShapesOnShapeAsCompound(myObject2, myObject1,
+ (CORBA::Short) aLimit,
+ aState);
+
+ if (!anObj->_is_nil())
+ objects.push_back( anObj._retn() );
+
+ return objects.size();
+}
+
+
+//=================================================================================
+// function : closeEvent
+// purpose :
+//=================================================================================
+void OperationGUI_GetShapesOnShapeDlg::closeEvent( QCloseEvent* e )
+{
+ GEOMBase_Skeleton::closeEvent( e );
+}
+
+
+//=======================================================================
+//function : ComboTextChanged
+//purpose :
+//=======================================================================
+void OperationGUI_GetShapesOnShapeDlg::ComboTextChanged()
+{
+ bool IsEnabled = GroupPoints->ComboBox1->currentItem() < 3;
+}
+
+
--- /dev/null
+// 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 : OperationGUI_GetShapesOnShapeDlg.h
+// Author : Lucien PIGNOLONI
+// Module : GEOM
+
+#ifndef DIALOGBOX_GETSHAPESONSHAPE_H
+#define DIALOGBOX_GETSHAPESONSHAPE_H
+
+#include "GEOMBase_Skeleton.h"
+#include "DlgRef_2Sel2List_QTD.h"
+#include "GEOMAlgo_State.hxx"
+
+
+//=================================================================================
+// class : OperationGUI_GetShapesOnShapeDlg
+// purpose :
+//=================================================================================
+class OperationGUI_GetShapesOnShapeDlg : public GEOMBase_Skeleton
+{
+ Q_OBJECT
+
+public:
+ OperationGUI_GetShapesOnShapeDlg(GeometryGUI* theGeometryGUI, QWidget* parent = 0);
+ ~OperationGUI_GetShapesOnShapeDlg();
+
+protected:
+ // redefined from GEOMBase_Helper
+ virtual GEOM::GEOM_IOperations_ptr createOperation();
+ virtual bool isValid( QString& );
+ virtual bool execute( ObjectList& objects );
+
+ virtual void closeEvent( QCloseEvent* e );
+
+private:
+ void Init();
+ void enterEvent(QEvent * e);
+
+ GEOM::GEOM_Object_var myObject1;
+ GEOM::GEOM_Object_var myObject2;
+ int myShapeType;
+ GEOMAlgo_State myState;
+
+ DlgRef_2Sel2List_QTD* GroupPoints;
+
+private slots:
+ void ClickOnOk();
+ bool ClickOnApply();
+ void SetEditCurrentArgument();
+ void SelectionIntoArgument();
+ void LineEditReturnPressed();
+ void ActivateThisDialog();
+ void ComboTextChanged();
+};
+
+#endif // DIALOGBOX_GETSHAPESONSHAPE_H