Join modifications from branch OCC_development_for_3_2_0a2

This commit is contained in:
jfa 2006-03-13 15:11:51 +00:00
parent 0c9aa567ca
commit 438f4b0922
24 changed files with 403 additions and 392 deletions

View File

@ -14,7 +14,7 @@ VPATH=.:@srcdir@:@top_srcdir@/bin:@top_srcdir@/resources:./bin:@top_srcdir@/idl
@COMMENCE@ @COMMENCE@
SUBDIRS = idl src doc SUBDIRS = idl src doc adm_local
RESOURCES_FILES = \ RESOURCES_FILES = \
GEOM_en.xml \ GEOM_en.xml \

41
adm_local/Makefile.in Normal file
View File

@ -0,0 +1,41 @@
# source path
top_srcdir=@top_srcdir@
top_builddir=..
srcdir=@srcdir@
VPATH=.:$(srcdir)/adm_local
all: resources
install:
cp -rf @top_srcdir@/adm_local @prefix@
bin:
resources :
cp -rf @top_srcdir@/adm_local $(top_builddir)
inc:
lib:
depend:
depend_idl:
install-end:
install-include:
install-bin:
uninstall:
uninstall-idl:
distclean:
clean:
distclean-other:

View File

@ -0,0 +1,54 @@
# Check availability of Geom binary distribution
#
# Author : Nicolas REJNERI (OPEN CASCADE, 2003)
#
AC_DEFUN([CHECK_GEOM],[
AC_CHECKING(for Geom)
Geom_ok=no
AC_ARG_WITH(geom,
[ --with-geom=DIR root directory path of GEOM installation ],
GEOM_DIR="$withval",GEOM_DIR="")
if test "x$GEOM_DIR" == "x" ; then
# no --with-geom-dir option used
if test "x$GEOM_ROOT_DIR" != "x" ; then
# GEOM_ROOT_DIR environment variable defined
GEOM_DIR=$GEOM_ROOT_DIR
else
# search Geom binaries in PATH variable
AC_PATH_PROG(TEMP, libGEOM_Swig.py)
if test "x$TEMP" != "x" ; then
GEOM_BIN_DIR=`dirname $TEMP`
GEOM_DIR=`dirname $GEOM_BIN_DIR`
fi
fi
#
fi
if test -f ${GEOM_DIR}/bin/salome/libGEOM_Swig.py ; then
Geom_ok=yes
AC_MSG_RESULT(Using Geom module distribution in ${GEOM_DIR})
if test "x$GEOM_ROOT_DIR" == "x" ; then
GEOM_ROOT_DIR=${GEOM_DIR}
fi
AC_SUBST(GEOM_ROOT_DIR)
else
AC_MSG_WARN("Cannot find compiled Geom module distribution")
fi
AC_MSG_RESULT(for Geom: $Geom_ok)
])dnl

View File

@ -245,13 +245,19 @@ $(top_srcdir)/configure.in: $(top_srcdir)/configure.in.base
ACLOCAL_SRC = \ ACLOCAL_SRC = \
ac_cxx_bool.m4 check_corba.m4 check_vtk.m4 \ ac_cxx_bool.m4 check_corba.m4 \
ac_cxx_depend_flag.m4 check_hdf5.m4 enable_pthreads.m4 \ ac_cxx_depend_flag.m4 check_hdf5.m4 enable_pthreads.m4 \
ac_cxx_mutable.m4 check_mico.m4 libtool.m4 \ ac_cxx_mutable.m4 check_mico.m4 libtool.m4 \
ac_cxx_namespaces.m4 check_omniorb.m4 pyembed.m4 \ ac_cxx_namespaces.m4 check_omniorb.m4 pyembed.m4 \
ac_cxx_partial_specialization.m4 check_opengl.m4 python.m4 \ ac_cxx_partial_specialization.m4 python.m4 \
ac_cxx_typename.m4 check_pthreads.m4 check_cas.m4 \ ac_cxx_typename.m4 check_pthreads.m4 check_cas.m4 \
ac_cc_warnings.m4 check_qt.m4 check_swig.m4 ac_cc_warnings.m4 check_swig.m4
$(top_srcdir)/aclocal.m4: $(ACLOCAL_SRC:%=@KERNEL_ROOT_DIR@/salome_adm/unix/config_files/%) ACLOCAL_GUI = \
cd $(top_srcdir) ; aclocal --acdir=adm_local/unix/config_files -I @KERNEL_ROOT_DIR@/salome_adm/unix/config_files check_vtk.m4 check_opengl.m4 check_qt.m4 \
check_GUI.m4 check_corba_in_GUI.m4
$(top_srcdir)/aclocal.m4: $(ACLOCAL_SRC:%=@KERNEL_ROOT_DIR@/salome_adm/unix/config_files/%) \
$(ACLOCAL_GUI:%=@GUI_ROOT_DIR@/adm_local/unix/config_files/%)
cd $(top_srcdir) ; aclocal --acdir=adm_local/unix/config_files -I @KERNEL_ROOT_DIR@/salome_adm/unix/config_files \
-I @GUI_ROOT_DIR@/adm_local/unix/config_files

View File

@ -25,6 +25,13 @@ fi
# echo "failed : KERNEL_SRC variable is not correct !" # echo "failed : KERNEL_SRC variable is not correct !"
# exit # exit
#fi #fi
########################################################################
# Test if the GUI_ROOT_DIR is set correctly
if test ! -d "${GUI_ROOT_DIR}"; then
echo "failed : GUI_ROOT_DIR variable is not correct !"
exit
fi
######################################################################## ########################################################################
# find_in - utility function # find_in - utility function
# #
@ -202,7 +209,8 @@ else
echo -n "Creating 'configure' script ... " echo -n "Creating 'configure' script ... "
fi fi
aclocal --acdir=adm_local/unix/config_files -I ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files aclocal -I adm_local/unix/config_files -I ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files \
-I ${GUI_ROOT_DIR}/adm_local/unix/config_files
if autoconf if autoconf
then then
echo "done" echo "done"

View File

@ -258,6 +258,26 @@ echo
CHECK_HTML_GENERATORS CHECK_HTML_GENERATORS
echo
echo ---------------------------------------------
echo Testing GUI
echo ---------------------------------------------
echo
CHECK_SALOME_GUI
echo
echo ---------------------------------------------
echo Testing full GUI
echo ---------------------------------------------
echo
CHECK_CORBA_IN_GUI
if test "x${CORBA_IN_GUI}" != "xyes"; then
echo "failed : For configure GEOM module necessary full GUI !"
exit
fi
echo echo
echo --------------------------------------------- echo ---------------------------------------------
echo Testing Kernel echo Testing Kernel

View File

@ -259,7 +259,7 @@ TCollection_AsciiString GEOM_Object::GetAuxData()
bool GEOM_Object::IsMainShape() bool GEOM_Object::IsMainShape()
{ {
Handle(GEOM_Function) aFunction = GetFunction(1); Handle(GEOM_Function) aFunction = GetFunction(1);
if(aFunction == NULL || aFunction->GetDriverGUID() != GetSubShapeID()) return true; if(aFunction.IsNull() || aFunction->GetDriverGUID() != GetSubShapeID()) return true; // mkr : IPAL9921
return false; return false;
} }

View File

@ -21,6 +21,11 @@
#include <TDF_Tool.hxx> #include <TDF_Tool.hxx>
#include <TopAbs.hxx>
#include <TColStd_ListOfInteger.hxx>
#include <TColStd_ListIteratorOfListOfInteger.hxx>
namespace GEOM namespace GEOM
{ {
size_t TPythonDump::myCounter = 0; size_t TPythonDump::myCounter = 0;
@ -89,6 +94,14 @@ namespace GEOM
return *this; return *this;
} }
TPythonDump& TPythonDump::operator<< (const TopAbs_ShapeEnum theArg)
{
myStream<<"geompy.ShapeType[\"";
TopAbs::Print(theArg, myStream);
myStream<<"\"]";
return *this;
}
TPythonDump& TPythonDump::operator<< (const Handle(GEOM_Object)& theObject) TPythonDump& TPythonDump::operator<< (const Handle(GEOM_Object)& theObject)
{ {
TCollection_AsciiString anEntry; TCollection_AsciiString anEntry;
@ -96,4 +109,40 @@ namespace GEOM
myStream << anEntry.ToCString(); myStream << anEntry.ToCString();
return *this; return *this;
} }
Handle(GEOM_Object) GetCreatedLast(const Handle(GEOM_Object)& theObj1,
const Handle(GEOM_Object)& theObj2)
{
if (theObj1.IsNull()) return theObj2;
if (theObj2.IsNull()) return theObj1;
TColStd_ListOfInteger aTags1, aTags2;
TDF_Tool::TagList(theObj1->GetEntry(), aTags1);
TDF_Tool::TagList(theObj2->GetEntry(), aTags2);
TColStd_ListIteratorOfListOfInteger aListIter1(aTags1), aListIter2(aTags2);
for (; aListIter1.More(); aListIter1.Next()) {
if (!aListIter2.More())
return theObj1; // anObj1 is stored under anObj2
if (aListIter1.Value() > aListIter2.Value())
return theObj1;
else if (aListIter1.Value() < aListIter2.Value())
return theObj2;
}
return theObj1;
}
Handle(GEOM_Object) GetCreatedLast(const Handle(TColStd_HSequenceOfTransient)& theObjects)
{
Handle(GEOM_Object) anObject, aLatest;
int i, aLen = theObjects->Length();
if (aLen < 1)
return aLatest;
for (i = 1; i <= aLen; i++) {
anObject = Handle(GEOM_Object)::DownCast(theObjects->Value(i));
aLatest = GetCreatedLast(aLatest, anObject);
}
return aLatest;
}
} }

View File

@ -49,8 +49,18 @@ namespace GEOM
Standard_EXPORT TPythonDump& operator<< (float theArg); Standard_EXPORT TPythonDump& operator<< (float theArg);
Standard_EXPORT TPythonDump& operator<< (const void* theArg); Standard_EXPORT TPythonDump& operator<< (const void* theArg);
Standard_EXPORT TPythonDump& operator<< (const char* theArg); Standard_EXPORT TPythonDump& operator<< (const char* theArg);
Standard_EXPORT TPythonDump& operator<< (const TopAbs_ShapeEnum theArg);
Standard_EXPORT TPythonDump& operator<< (const Handle(GEOM_Object)& theObject); Standard_EXPORT TPythonDump& operator<< (const Handle(GEOM_Object)& theObject);
}; };
/*! Returns an object from two given, which has the latest entry
*/
Handle(GEOM_Object) GetCreatedLast (const Handle(GEOM_Object)& theObj1,
const Handle(GEOM_Object)& theObj2);
/*! Returns an object from \a theObjects, which has the latest entry
*/
Handle(GEOM_Object) GetCreatedLast (const Handle(TColStd_HSequenceOfTransient)& theObjects);
} }
#endif #endif

View File

@ -82,11 +82,7 @@ void GEOMBase_Skeleton::Init()
myGeomGUI = 0; myGeomGUI = 0;
SalomeApp_Application* app = (SalomeApp_Application*)(SUIT_Session::session()->activeApplication()); SalomeApp_Application* app = (SalomeApp_Application*)(SUIT_Session::session()->activeApplication());
if( app ) if( app )
{ myGeomGUI = dynamic_cast<GeometryGUI*>( app->module( "Geometry" ) );
SalomeApp_Module* module = dynamic_cast<SalomeApp_Module*>(app->loadModule("Geometry"));
if (module)
myGeomGUI = dynamic_cast<GeometryGUI*>(module);
}
/* init variables */ /* init variables */
myGeomBase = new GEOMBase(); // SAN -- TO BE REMOVED !!! myGeomBase = new GEOMBase(); // SAN -- TO BE REMOVED !!!

View File

@ -551,13 +551,13 @@ void GeometryGUI::OnGUIEvent( int id )
// function : GeometryGUI::OnKeyPress() // function : GeometryGUI::OnKeyPress()
// purpose : Called when any key is pressed by user [static] // purpose : Called when any key is pressed by user [static]
//================================================================================= //=================================================================================
bool GeometryGUI::OnKeyPress( QKeyEvent* pe, SUIT_ViewWindow* win ) void GeometryGUI::OnKeyPress( SUIT_ViewWindow* win, QKeyEvent* pe )
{ {
GUIMap::Iterator it; GUIMap::Iterator it;
bool bOk = true; bool bOk = true;
for ( it = myGUIMap.begin(); it != myGUIMap.end(); ++it ) for ( it = myGUIMap.begin(); it != myGUIMap.end(); ++it )
bOk = bOk && it.data()->OnKeyPress( pe, application()->desktop(), win ); bOk = bOk && it.data()->OnKeyPress( pe, application()->desktop(), win );
return bOk; // return bOk;
} }
@ -565,13 +565,13 @@ bool GeometryGUI::OnKeyPress( QKeyEvent* pe, SUIT_ViewWindow* win )
// function : GeometryGUI::OnMouseMove() // function : GeometryGUI::OnMouseMove()
// purpose : Manages mouse move events [static] // purpose : Manages mouse move events [static]
//================================================================================= //=================================================================================
bool GeometryGUI::OnMouseMove( QMouseEvent* pe, SUIT_ViewWindow* win ) void GeometryGUI::OnMouseMove( SUIT_ViewWindow* win, QMouseEvent* pe )
{ {
GUIMap::Iterator it; GUIMap::Iterator it;
bool bOk = true; bool bOk = true;
for ( it = myGUIMap.begin(); it != myGUIMap.end(); ++it ) for ( it = myGUIMap.begin(); it != myGUIMap.end(); ++it )
bOk = bOk && it.data()->OnMouseMove( pe, application()->desktop(), win ); bOk = bOk && it.data()->OnMouseMove( pe, application()->desktop(), win );
return bOk; // return bOk;
} }
@ -579,7 +579,7 @@ bool GeometryGUI::OnMouseMove( QMouseEvent* pe, SUIT_ViewWindow* win )
// function : GeometryGUI::0nMousePress() // function : GeometryGUI::0nMousePress()
// purpose : Manage mouse press events [static] // purpose : Manage mouse press events [static]
//================================================================================= //=================================================================================
bool GeometryGUI::OnMousePress( QMouseEvent* pe, SUIT_ViewWindow* win ) void GeometryGUI::OnMousePress( SUIT_ViewWindow* win, QMouseEvent* pe )
{ {
GUIMap::Iterator it; GUIMap::Iterator it;
// OnMousePress() should return false if this event should be processed further // OnMousePress() should return false if this event should be processed further
@ -587,7 +587,7 @@ bool GeometryGUI::OnMousePress( QMouseEvent* pe, SUIT_ViewWindow* win )
bool processed = false; bool processed = false;
for ( it = myGUIMap.begin(); it != myGUIMap.end(); ++it ) for ( it = myGUIMap.begin(); it != myGUIMap.end(); ++it )
processed = processed || it.data()->OnMousePress( pe, application()->desktop(), win ); processed = processed || it.data()->OnMousePress( pe, application()->desktop(), win );
return processed; // return processed;
} }
/* /*
@ -1117,10 +1117,6 @@ bool GeometryGUI::activateModule( SUIT_Study* study )
connect( application()->desktop(), SIGNAL( windowActivated( SUIT_ViewWindow* ) ), connect( application()->desktop(), SIGNAL( windowActivated( SUIT_ViewWindow* ) ),
this, SLOT( onWindowActivated( SUIT_ViewWindow* ) ) ); this, SLOT( onWindowActivated( SUIT_ViewWindow* ) ) );
connect( (STD_Application*)application(), SIGNAL( viewManagerAdded( SUIT_ViewManager* ) ),
this, SLOT( onViewManagerAdded( SUIT_ViewManager* ) ) );
connect( (STD_Application*)application(), SIGNAL( viewManagerRemoved( SUIT_ViewManager* ) ),
this, SLOT( onViewManagerRemoved( SUIT_ViewManager* ) ) );
GUIMap::Iterator it; GUIMap::Iterator it;
for ( it = myGUIMap.begin(); it != myGUIMap.end(); ++it ) for ( it = myGUIMap.begin(); it != myGUIMap.end(); ++it )
@ -1161,10 +1157,6 @@ bool GeometryGUI::deactivateModule( SUIT_Study* study )
disconnect( application()->desktop(), SIGNAL( windowActivated( SUIT_ViewWindow* ) ), disconnect( application()->desktop(), SIGNAL( windowActivated( SUIT_ViewWindow* ) ),
this, SLOT( onWindowActivated( SUIT_ViewWindow* ) ) ); this, SLOT( onWindowActivated( SUIT_ViewWindow* ) ) );
disconnect( (STD_Application*)application(), SIGNAL( viewManagerAdded( SUIT_ViewManager* ) ),
this, SLOT( onViewManagerAdded( SUIT_ViewManager* ) ) );
disconnect( (STD_Application*)application(), SIGNAL( viewManagerRemoved( SUIT_ViewManager* ) ),
this, SLOT( onViewManagerRemoved( SUIT_ViewManager* ) ) );
EmitSignalCloseAllDialogs(); EmitSignalCloseAllDialogs();
@ -1535,6 +1527,15 @@ void GeometryGUI::onViewManagerAdded( SUIT_ViewManager* vm )
{ {
if ( vm->getType() == OCCViewer_Viewer::Type() ) if ( vm->getType() == OCCViewer_Viewer::Type() )
{ {
qDebug( "connect" );
connect( vm, SIGNAL( keyPress ( SUIT_ViewWindow*, QKeyEvent* ) ),
this, SLOT( OnKeyPress( SUIT_ViewWindow*, QKeyEvent* ) ) );
connect( vm, SIGNAL( mousePress( SUIT_ViewWindow*, QMouseEvent* ) ),
this, SLOT( OnMousePress( SUIT_ViewWindow*, QMouseEvent* ) ) );
connect( vm, SIGNAL( mouseMove ( SUIT_ViewWindow*, QMouseEvent* ) ),
this, SLOT( OnMouseMove( SUIT_ViewWindow*, QMouseEvent* ) ) );
LightApp_SelectionMgr* sm = getApp()->selectionMgr(); LightApp_SelectionMgr* sm = getApp()->selectionMgr();
myOCCSelectors.append( new GEOMGUI_OCCSelector( ((OCCViewer_ViewManager*)vm)->getOCCViewer(), sm ) ); myOCCSelectors.append( new GEOMGUI_OCCSelector( ((OCCViewer_ViewManager*)vm)->getOCCViewer(), sm ) );

View File

@ -117,10 +117,6 @@ public:
void OnGUIEvent( int id ); void OnGUIEvent( int id );
virtual bool OnKeyPress( QKeyEvent*, SUIT_ViewWindow* );
virtual bool OnMousePress( QMouseEvent*, SUIT_ViewWindow* );
virtual bool OnMouseMove( QMouseEvent*, SUIT_ViewWindow* );
// virtual bool SetSettings(); // virtual bool SetSettings();
// virtual void SupportedViewType ( int* buffer, int bufferSize ); // virtual void SupportedViewType ( int* buffer, int bufferSize );
virtual void BuildPresentation( const Handle(SALOME_InteractiveObject)&, SUIT_ViewWindow* = 0 ); virtual void BuildPresentation( const Handle(SALOME_InteractiveObject)&, SUIT_ViewWindow* = 0 );
@ -145,11 +141,16 @@ public:
public slots: public slots:
virtual bool deactivateModule( SUIT_Study* ); virtual bool deactivateModule( SUIT_Study* );
virtual bool activateModule( SUIT_Study* ); virtual bool activateModule( SUIT_Study* );
virtual void OnKeyPress ( SUIT_ViewWindow*, QKeyEvent* );
virtual void OnMousePress( SUIT_ViewWindow*, QMouseEvent* );
virtual void OnMouseMove ( SUIT_ViewWindow*, QMouseEvent* );
protected slots:
virtual void onViewManagerAdded( SUIT_ViewManager* );
virtual void onViewManagerRemoved( SUIT_ViewManager* );
private slots: private slots:
void OnGUIEvent(); void OnGUIEvent();
void onViewManagerAdded( SUIT_ViewManager* );
void onViewManagerRemoved( SUIT_ViewManager* );
void onWindowActivated( SUIT_ViewWindow* ); void onWindowActivated( SUIT_ViewWindow* );
signals : signals :

View File

@ -537,10 +537,9 @@ Handle(GEOM_Object) GEOMImpl_IBlocksOperations::GetPoint
//The GetPoint() doesn't change object so no new function is required. //The GetPoint() doesn't change object so no new function is required.
Handle(GEOM_Function) aFunction = theShape->GetLastFunction(); Handle(GEOM_Function) aFunction = theShape->GetLastFunction();
TCollection_AsciiString anOldDescr = aFunction->GetDescription();
//Make a Python command //Make a Python command
GEOM::TPythonDump(aFunction) << anOldDescr.ToCString() << "\n\t" GEOM::TPythonDump(aFunction, /*append=*/true)
<< aResult << " = geompy.GetPoint(" << theShape << ", " << aResult << " = geompy.GetPoint(" << theShape << ", "
<< theX << ", " << theY << ", " << theZ << ", " << theEpsilon << ")"; << theX << ", " << theY << ", " << theZ << ", " << theEpsilon << ")";
@ -2447,11 +2446,10 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IBlocksOperations::ExplodeCompound
//The explode doesn't change object so no new function is required. //The explode doesn't change object so no new function is required.
aFunction = theCompound->GetLastFunction(); aFunction = theCompound->GetLastFunction();
TCollection_AsciiString anOldDescr = aFunction->GetDescription();
//Make a Python command //Make a Python command
GEOM::TPythonDump(aFunction) << anOldDescr.ToCString() << "\n\t[" GEOM::TPythonDump(aFunction, /*append=*/true)
<< anAsciiList.ToCString() << "] = geompy.MakeBlockExplode(" << "[" << anAsciiList.ToCString() << "] = geompy.MakeBlockExplode("
<< theCompound << ", " << theMinNbFaces << ", " << theMaxNbFaces << ")"; << theCompound << ", " << theMinNbFaces << ", " << theMaxNbFaces << ")";
SetErrorCode(OK); SetErrorCode(OK);
@ -3118,11 +3116,10 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IBlocksOperations::Propagate
// The Propagation doesn't change object so no new function is required. // The Propagation doesn't change object so no new function is required.
Handle(GEOM_Function) aFunction = theShape->GetLastFunction(); Handle(GEOM_Function) aFunction = theShape->GetLastFunction();
TCollection_AsciiString anOldDescr = aFunction->GetDescription();
// Make a Python command // Make a Python command
GEOM::TPythonDump(aFunction) << anOldDescr.ToCString() << "\n\t[" GEOM::TPythonDump(aFunction, /*append=*/true)
<< aListRes.ToCString() << "] = geompy.Propagate(" << theShape << ")"; << "[" << aListRes.ToCString() << "] = geompy.Propagate(" << theShape << ")";
SetErrorCode(OK); SetErrorCode(OK);
return aSeq; return aSeq;

View File

@ -94,11 +94,9 @@ Handle(GEOM_Object) GEOMImpl_IGroupOperations::CreateGroup
//Make a Python command //Make a Python command
Handle(GEOM_Function) aFunction = aGroup->GetFunction(1); Handle(GEOM_Function) aFunction = aGroup->GetFunction(1);
//TCollection_AsciiString anOldDescr = aFunction->GetDescription();
//GEOM::TPythonDump(aFunction) << anOldDescr.ToCString() << "\n\t" << aGroup
GEOM::TPythonDump(aFunction) << aGroup GEOM::TPythonDump(aFunction) << aGroup
<< " = geompy.CreateGroup(" << theMainShape << ", " << (int)theShapeType << ")"; << " = geompy.CreateGroup(" << theMainShape << ", " << theShapeType << ")";
SetErrorCode(OK); SetErrorCode(OK);
return aGroup; return aGroup;
@ -156,9 +154,7 @@ void GEOMImpl_IGroupOperations::AddObject(Handle(GEOM_Object) theGroup, int theS
} }
//Make a Python command //Make a Python command
TCollection_AsciiString anOldDescr = aFunction->GetDescription(); GEOM::TPythonDump(aFunction, /*append=*/true)
GEOM::TPythonDump(aFunction) << anOldDescr.ToCString() << "\n\t"
<< "geompy.AddObject(" << theGroup << ", " << theSubShapeID << ")"; << "geompy.AddObject(" << theGroup << ", " << theSubShapeID << ")";
SetErrorCode(OK); SetErrorCode(OK);
@ -222,9 +218,7 @@ void GEOMImpl_IGroupOperations::RemoveObject (Handle(GEOM_Object) theGroup, int
} }
//Make a Python command //Make a Python command
TCollection_AsciiString anOldDescr = aFunction->GetDescription(); GEOM::TPythonDump(aFunction, /*append=*/true)
GEOM::TPythonDump(aFunction) << anOldDescr.ToCString() << "\n\t"
<< "geompy.RemoveObject(" << theGroup << ", " << theSubShapeID << ")"; << "geompy.RemoveObject(" << theGroup << ", " << theSubShapeID << ")";
SetErrorCode(OK); SetErrorCode(OK);
@ -242,6 +236,12 @@ void GEOMImpl_IGroupOperations::UnionList (Handle(GEOM_Object) theGroup,
SetErrorCode(KO); SetErrorCode(KO);
if (theGroup.IsNull()) return; if (theGroup.IsNull()) return;
Standard_Integer aLen = theSubShapes->Length();
if (aLen < 1) {
SetErrorCode("The list is empty");
return;
}
Handle(GEOM_Function) aFunction = theGroup->GetFunction(1); Handle(GEOM_Function) aFunction = theGroup->GetFunction(1);
if (aFunction.IsNull()) return; if (aFunction.IsNull()) return;
@ -277,7 +277,7 @@ void GEOMImpl_IGroupOperations::UnionList (Handle(GEOM_Object) theGroup,
TopExp::MapShapes(aMainShape, mapIndices); TopExp::MapShapes(aMainShape, mapIndices);
// Get IDs of sub-shapes to add // Get IDs of sub-shapes to add
Standard_Integer i, new_id, aLen = theSubShapes->Length(); Standard_Integer i, new_id;
for (i = 1; i <= aLen; i++) { for (i = 1; i <= aLen; i++) {
Handle(GEOM_Object) anObj_i = Handle(GEOM_Object)::DownCast(theSubShapes->Value(i)); Handle(GEOM_Object) anObj_i = Handle(GEOM_Object)::DownCast(theSubShapes->Value(i));
@ -364,10 +364,12 @@ void GEOMImpl_IGroupOperations::UnionList (Handle(GEOM_Object) theGroup,
} }
//Make a Python command //Make a Python command
TCollection_AsciiString anOldDescr = aFunction->GetDescription(); Handle(GEOM_Object) aLatest = GEOM::GetCreatedLast(theSubShapes);
aLatest = GEOM::GetCreatedLast(aLatest, theGroup);
Handle(GEOM_Function) aLastFunc = aLatest->GetLastFunction();
GEOM::TPythonDump pd (aFunction); GEOM::TPythonDump pd (aLastFunc, /*append=*/true);
pd << anOldDescr.ToCString() << "\n\t" << "geompy.UnionList(" << theGroup << ", ["; pd << "geompy.UnionList(" << theGroup << ", [";
for (i = 1; i <= aLen; i++) { for (i = 1; i <= aLen; i++) {
Handle(GEOM_Object) anObj_i = Handle(GEOM_Object)::DownCast(theSubShapes->Value(i)); Handle(GEOM_Object) anObj_i = Handle(GEOM_Object)::DownCast(theSubShapes->Value(i));
@ -388,6 +390,12 @@ void GEOMImpl_IGroupOperations::DifferenceList (Handle(GEOM_Object) theGroup,
SetErrorCode(KO); SetErrorCode(KO);
if (theGroup.IsNull()) return; if (theGroup.IsNull()) return;
Standard_Integer aLen = theSubShapes->Length();
if (aLen < 1) {
SetErrorCode("The list is empty");
return;
}
Handle(GEOM_Function) aFunction = theGroup->GetFunction(1); Handle(GEOM_Function) aFunction = theGroup->GetFunction(1);
if (aFunction.IsNull()) return; if (aFunction.IsNull()) return;
@ -424,7 +432,7 @@ void GEOMImpl_IGroupOperations::DifferenceList (Handle(GEOM_Object) theGroup,
TopExp::MapShapes(aMainShape, mapIndices); TopExp::MapShapes(aMainShape, mapIndices);
// Get IDs of sub-shapes to be removed // Get IDs of sub-shapes to be removed
Standard_Integer i, rem_id, aLen = theSubShapes->Length(); Standard_Integer i, rem_id;
for (i = 1; i <= aLen; i++) { for (i = 1; i <= aLen; i++) {
Handle(GEOM_Object) anObj_i = Handle(GEOM_Object)::DownCast(theSubShapes->Value(i)); Handle(GEOM_Object) anObj_i = Handle(GEOM_Object)::DownCast(theSubShapes->Value(i));
@ -514,10 +522,12 @@ void GEOMImpl_IGroupOperations::DifferenceList (Handle(GEOM_Object) theGroup,
} }
//Make a Python command //Make a Python command
TCollection_AsciiString anOldDescr = aFunction->GetDescription(); Handle(GEOM_Object) aLatest = GEOM::GetCreatedLast(theSubShapes);
aLatest = GEOM::GetCreatedLast(aLatest, theGroup);
Handle(GEOM_Function) aLastFunc = aLatest->GetLastFunction();
GEOM::TPythonDump pd (aFunction); GEOM::TPythonDump pd (aLastFunc, /*append=*/true);
pd << anOldDescr.ToCString() << "\n\t" << "geompy.DifferenceList(" << theGroup << ", ["; pd << "geompy.DifferenceList(" << theGroup << ", [";
for (i = 1; i <= aLen; i++) { for (i = 1; i <= aLen; i++) {
Handle(GEOM_Object) anObj_i = Handle(GEOM_Object)::DownCast(theSubShapes->Value(i)); Handle(GEOM_Object) anObj_i = Handle(GEOM_Object)::DownCast(theSubShapes->Value(i));
@ -526,6 +536,7 @@ void GEOMImpl_IGroupOperations::DifferenceList (Handle(GEOM_Object) theGroup,
SetErrorCode(OK); SetErrorCode(OK);
} }
//============================================================================= //=============================================================================
/*! /*!
* UnionIDs * UnionIDs
@ -537,6 +548,12 @@ void GEOMImpl_IGroupOperations::UnionIDs (Handle(GEOM_Object) theGroup,
SetErrorCode(KO); SetErrorCode(KO);
if (theGroup.IsNull()) return; if (theGroup.IsNull()) return;
Standard_Integer aLen = theSubShapes->Length();
if (aLen < 1) {
SetErrorCode("The list is empty");
return;
}
Handle(GEOM_Function) aFunction = theGroup->GetFunction(1); Handle(GEOM_Function) aFunction = theGroup->GetFunction(1);
if (aFunction.IsNull()) return; if (aFunction.IsNull()) return;
@ -572,7 +589,7 @@ void GEOMImpl_IGroupOperations::UnionIDs (Handle(GEOM_Object) theGroup,
TopExp::MapShapes(aMainShape, mapIndices); TopExp::MapShapes(aMainShape, mapIndices);
// Get IDs of sub-shapes to add // Get IDs of sub-shapes to add
Standard_Integer i, new_id, aLen = theSubShapes->Length(); Standard_Integer i, new_id;
for (i = 1; i <= aLen; i++) { for (i = 1; i <= aLen; i++) {
new_id = theSubShapes->Value(i); new_id = theSubShapes->Value(i);
@ -594,6 +611,13 @@ void GEOMImpl_IGroupOperations::UnionIDs (Handle(GEOM_Object) theGroup,
aSSI.SetIndices(aNewSeq); aSSI.SetIndices(aNewSeq);
} }
//Make a Python command
GEOM::TPythonDump pd (aFunction, /*append=*/true);
pd << "geompy.UnionIDs(" << theGroup << ", [";
for (i = 1; i < aLen; i++)
pd << theSubShapes->Value(i) << ", ";
pd << theSubShapes->Value(aLen) << "])";
SetErrorCode(OK); SetErrorCode(OK);
} }
@ -608,6 +632,12 @@ void GEOMImpl_IGroupOperations::DifferenceIDs (Handle(GEOM_Object) theGroup,
SetErrorCode(KO); SetErrorCode(KO);
if (theGroup.IsNull()) return; if (theGroup.IsNull()) return;
Standard_Integer aLen = theSubShapes->Length();
if (aLen < 1) {
SetErrorCode("The list is empty");
return;
}
Handle(GEOM_Function) aFunction = theGroup->GetFunction(1); Handle(GEOM_Function) aFunction = theGroup->GetFunction(1);
if (aFunction.IsNull()) return; if (aFunction.IsNull()) return;
@ -644,7 +674,7 @@ void GEOMImpl_IGroupOperations::DifferenceIDs (Handle(GEOM_Object) theGroup,
TopExp::MapShapes(aMainShape, mapIndices); TopExp::MapShapes(aMainShape, mapIndices);
// Get IDs of sub-shapes to be removed // Get IDs of sub-shapes to be removed
Standard_Integer i, rem_id, aLen = theSubShapes->Length(); Standard_Integer i, rem_id;
for (i = 1; i <= aLen; i++) { for (i = 1; i <= aLen; i++) {
rem_id = theSubShapes->Value(i); rem_id = theSubShapes->Value(i);
if (mapIDsCurrent.Contains(rem_id)) { if (mapIDsCurrent.Contains(rem_id)) {
@ -666,6 +696,13 @@ void GEOMImpl_IGroupOperations::DifferenceIDs (Handle(GEOM_Object) theGroup,
aSSI.SetIndices(aNewSeq); aSSI.SetIndices(aNewSeq);
} }
//Make a Python command
GEOM::TPythonDump pd (aFunction, /*append=*/true);
pd << "geompy.DifferenceIDs(" << theGroup << ", [";
for (i = 1; i < aLen; i++)
pd << theSubShapes->Value(i) << ", ";
pd << theSubShapes->Value(aLen) << "])";
SetErrorCode(OK); SetErrorCode(OK);
} }
@ -709,9 +746,7 @@ Handle(GEOM_Object) GEOMImpl_IGroupOperations::GetMainShape (Handle(GEOM_Object)
if (aMainShape.IsNull()) return NULL; if (aMainShape.IsNull()) return NULL;
//Make a Python command //Make a Python command
TCollection_AsciiString anOldDescr = aGroupFunction->GetDescription(); GEOM::TPythonDump(aGroupFunction, /*append=*/true)
GEOM::TPythonDump(aGroupFunction) << anOldDescr.ToCString() << "\n\t"
<< aMainShape << " = geompy.GetMainShape(" << theGroup << ")"; << aMainShape << " = geompy.GetMainShape(" << theGroup << ")";
SetErrorCode(OK); SetErrorCode(OK);

View File

@ -93,9 +93,6 @@
#include <TColStd_HArray1OfInteger.hxx> #include <TColStd_HArray1OfInteger.hxx>
#include <vector> #include <vector>
//#include <iostream>
//#include <OSD_Timer.hxx>
#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC #include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
@ -533,9 +530,6 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::MakeExplode
const Standard_Integer theShapeType, const Standard_Integer theShapeType,
const Standard_Boolean isSorted) const Standard_Boolean isSorted)
{ {
// OSD_Timer timer1, timer2, timer3, timer4;
// timer1.Start();
SetErrorCode(KO); SetErrorCode(KO);
if (theShape.IsNull()) return NULL; if (theShape.IsNull()) return NULL;
@ -573,15 +567,9 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::MakeExplode
return aSeq; return aSeq;
} }
// timer1.Stop();
// timer2.Start();
if (isSorted) if (isSorted)
SortShapes(listShape); SortShapes(listShape);
// timer2.Stop();
// timer3.Start();
TopTools_IndexedMapOfShape anIndices; TopTools_IndexedMapOfShape anIndices;
TopExp::MapShapes(aShape, anIndices); TopExp::MapShapes(aShape, anIndices);
Handle(TColStd_HArray1OfInteger) anArray; Handle(TColStd_HArray1OfInteger) anArray;
@ -605,26 +593,14 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::MakeExplode
anAsciiList.Trunc(anAsciiList.Length() - 1); anAsciiList.Trunc(anAsciiList.Length() - 1);
aFunction = theShape->GetLastFunction(); aFunction = theShape->GetLastFunction();
TCollection_AsciiString anOldDescr = aFunction->GetDescription();
GEOM::TPythonDump pd (aFunction); GEOM::TPythonDump pd (aFunction, /*append=*/true);
pd << anOldDescr.ToCString() << "\n\t[" << anAsciiList.ToCString(); pd << "[" << anAsciiList.ToCString();
pd << "] = geompy.SubShapeAll" << (isSorted ? "Sorted(" : "("); pd << "] = geompy.SubShapeAll" << (isSorted ? "Sorted(" : "(");
pd << theShape << ", " << theShapeType << ")"; pd << theShape << ", " << TopAbs_ShapeEnum(theShapeType) << ")";
SetErrorCode(OK); SetErrorCode(OK);
// timer4.Stop();
// cout << "Explosure takes:" << endl;
// timer1.Show();
// cout << "Sorting takes:" << endl;
// timer2.Show();
// cout << "Sub-shapes addition takes:" << endl;
// timer3.Show();
// cout << "Update Description takes:" << endl;
// timer4.Show();
return aSeq; return aSeq;
} }
@ -687,13 +663,12 @@ Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::SubShapeAllIDs
} }
Handle(GEOM_Function) aFunction = theShape->GetLastFunction(); Handle(GEOM_Function) aFunction = theShape->GetLastFunction();
TCollection_AsciiString anOldDescr = aFunction->GetDescription();
//Make a Python command //Make a Python command
GEOM::TPythonDump pd (aFunction); GEOM::TPythonDump pd (aFunction, /*append=*/true);
pd << anOldDescr.ToCString() << "\n\tlistSubShapeIDs = geompy.SubShapeAll"; pd << "listSubShapeIDs = geompy.SubShapeAll";
pd << (isSorted ? "SortedIDs(" : "IDs("); pd << (isSorted ? "SortedIDs(" : "IDs(");
pd << theShape << ", " << theShapeType << ")"; pd << theShape << ", " << TopAbs_ShapeEnum(theShapeType) << ")";
SetErrorCode(OK); SetErrorCode(OK);
return aSeq; return aSeq;
@ -873,11 +848,10 @@ Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::GetFreeFacesIDs
//The explode doesn't change object so no new function is required. //The explode doesn't change object so no new function is required.
Handle(GEOM_Function) aFunction = theShape->GetLastFunction(); Handle(GEOM_Function) aFunction = theShape->GetLastFunction();
TCollection_AsciiString anOldDescr = aFunction->GetDescription();
//Make a Python command //Make a Python command
GEOM::TPythonDump(aFunction) << anOldDescr.ToCString() GEOM::TPythonDump(aFunction, /*append=*/true)
<< "\n\tlistFreeFacesIDs = geompy.GetFreeFacesIDs(" << theShape << ")"; << "listFreeFacesIDs = geompy.GetFreeFacesIDs(" << theShape << ")";
SetErrorCode(OK); SetErrorCode(OK);
return aSeq; return aSeq;
@ -942,7 +916,7 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetSharedShapes
GEOM::TPythonDump(aFunction) << "[" << anAsciiList.ToCString() GEOM::TPythonDump(aFunction) << "[" << anAsciiList.ToCString()
<< "] = geompy.GetSharedShapes(" << theShape1 << ", " << "] = geompy.GetSharedShapes(" << theShape1 << ", "
<< theShape2 << ", " << theShapeType << ")"; << theShape2 << ", " << TopAbs_ShapeEnum(theShapeType) << ")";
SetErrorCode(OK); SetErrorCode(OK);
return aSeq; return aSeq;
@ -1084,9 +1058,6 @@ Handle(TColStd_HSequenceOfInteger)
GEOMAlgo_State theState) GEOMAlgo_State theState)
{ {
Handle(TColStd_HSequenceOfInteger) aSeqOfIDs; Handle(TColStd_HSequenceOfInteger) aSeqOfIDs;
// MESSAGE("--------------------------- GetShapesOnPlane phase 1 takes:");
// OSD_Timer timer1;
// timer1.Start();
// Check presence of triangulation, build if need // Check presence of triangulation, build if need
if (!CheckTriangulation(theShape)) if (!CheckTriangulation(theShape))
@ -1112,19 +1083,7 @@ Handle(TColStd_HSequenceOfInteger)
// Default value=0 // Default value=0
aFinder.SetNbPntsMax(100); aFinder.SetNbPntsMax(100);
// timer1.Stop();
// timer1.Show();
// MESSAGE("--------------------------- Perform on Plane takes:");
// timer1.Reset();
// timer1.Start();
aFinder.Perform(); aFinder.Perform();
// timer1.Stop();
// timer1.Show();
// MESSAGE("--------------------------- GetShapesOnPlane phase 3 takes:");
// timer1.Reset();
// timer1.Start();
// Interprete results // Interprete results
Standard_Integer iErr = aFinder.ErrorStatus(); Standard_Integer iErr = aFinder.ErrorStatus();
@ -1149,13 +1108,6 @@ Handle(TColStd_HSequenceOfInteger)
return aSeqOfIDs; return aSeqOfIDs;
} }
// timer1.Stop();
// timer1.Show();
// MESSAGE("--------------------------- GetShapesOnPlane phase 4 takes:");
// timer1.Reset();
// timer1.Start();
// Fill sequence of object IDs // Fill sequence of object IDs
aSeqOfIDs = new TColStd_HSequenceOfInteger; aSeqOfIDs = new TColStd_HSequenceOfInteger;
@ -1167,8 +1119,7 @@ Handle(TColStd_HSequenceOfInteger)
int id = anIndices.FindIndex(itSub.Value()); int id = anIndices.FindIndex(itSub.Value());
aSeqOfIDs->Append(id); aSeqOfIDs->Append(id);
} }
// timer1.Stop();
// timer1.Show();
return aSeqOfIDs; return aSeqOfIDs;
} }
@ -1250,10 +1201,6 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetShapesOnPlan
{ {
SetErrorCode(KO); SetErrorCode(KO);
// MESSAGE("--------------------------- GetShapesOnPlane phase 1 takes:");
// OSD_Timer timer1;
// timer1.Start();
if (theShape.IsNull() || theAx1.IsNull()) return NULL; if (theShape.IsNull() || theAx1.IsNull()) return NULL;
TopoDS_Shape aShape = theShape->GetValue(); TopoDS_Shape aShape = theShape->GetValue();
@ -1277,13 +1224,6 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetShapesOnPlan
if ( aSeq.IsNull() || aSeq->Length() == 0 ) if ( aSeq.IsNull() || aSeq->Length() == 0 )
return NULL; return NULL;
// timer1.Stop();
// timer1.Show();
// MESSAGE("--------------------------- GetShapesOnPlane phase 5 takes:");
// timer1.Reset();
// timer1.Start();
// Make a Python command // Make a Python command
Handle(GEOM_Object) anObj = Handle(GEOM_Object)::DownCast( aSeq->Value( 1 )); Handle(GEOM_Object) anObj = Handle(GEOM_Object)::DownCast( aSeq->Value( 1 ));
@ -1291,7 +1231,7 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetShapesOnPlan
GEOM::TPythonDump(aFunction) << "[" << anAsciiList.ToCString() GEOM::TPythonDump(aFunction) << "[" << anAsciiList.ToCString()
<< "] = geompy.GetShapesOnPlane(" << theShape << ", " << "] = geompy.GetShapesOnPlane(" << theShape << ", "
<< theShapeType << ", " << theAx1 << ", " << theState << ")"; << aShapeType << ", " << theAx1 << ", " << theState << ")";
SetErrorCode(OK); SetErrorCode(OK);
return aSeq; return aSeq;
@ -1340,7 +1280,7 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetShapesOnCyli
Handle(GEOM_Function) aFunction = anObj->GetLastFunction(); Handle(GEOM_Function) aFunction = anObj->GetLastFunction();
GEOM::TPythonDump(aFunction) << "[" << anAsciiList.ToCString() GEOM::TPythonDump(aFunction) << "[" << anAsciiList.ToCString()
<< "] = geompy.GetShapesOnCylinder(" << theShape << ", " << theShapeType << "] = geompy.GetShapesOnCylinder(" << theShape << ", " << aShapeType
<< ", " << theAxis << ", " << theRadius << ", " << theState << ")"; << ", " << theAxis << ", " << theRadius << ", " << theState << ")";
SetErrorCode(OK); SetErrorCode(OK);
@ -1393,31 +1333,13 @@ Handle(TColStd_HSequenceOfTransient) GEOMImpl_IShapesOperations::GetShapesOnSphe
Handle(GEOM_Function) aFunction = anObj->GetLastFunction(); Handle(GEOM_Function) aFunction = anObj->GetLastFunction();
GEOM::TPythonDump(aFunction) << "[" << anAsciiList.ToCString() GEOM::TPythonDump(aFunction) << "[" << anAsciiList.ToCString()
<< "] = geompy.GetShapesOnSphere(" << theShape << ", " << theShapeType << "] = geompy.GetShapesOnSphere(" << theShape << ", " << aShapeType
<< ", " << theCenter << ", " << theRadius << ", " << theState << ")"; << ", " << theCenter << ", " << theRadius << ", " << theState << ")";
SetErrorCode(OK); SetErrorCode(OK);
return aSeq; return aSeq;
} }
//=======================================================================
//function : getCreatedLast
/*!
* \brief Select the object created last
* \param theObj1 - Object 1
* \param theObj2 - Object 2
* \retval Handle(GEOM_Object) - selected object
*/
//=======================================================================
Handle(GEOM_Object) GEOMImpl_IShapesOperations::getCreatedLast(const Handle(GEOM_Object)& theObj1,
const Handle(GEOM_Object)& theObj2)
{
if ( theObj1.IsNull() ) return theObj2;
if ( theObj2.IsNull() ) return theObj1;
return ( theObj1->GetEntry().Tag() > theObj2->GetEntry().Tag() ) ? theObj1 : theObj2;
}
//============================================================================= //=============================================================================
/*! /*!
* GetShapesOnPlaneIDs * GetShapesOnPlaneIDs
@ -1452,13 +1374,12 @@ Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::GetShapesOnPlaneI
aSeq = getShapesOnSurfaceIDs( aPlane, aShape, aShapeType, theState ); aSeq = getShapesOnSurfaceIDs( aPlane, aShape, aShapeType, theState );
// The GetShapesOnPlaneIDs() doesn't change object so no new function is required. // The GetShapesOnPlaneIDs() doesn't change object so no new function is required.
Handle(GEOM_Function) aFunction = getCreatedLast(theShape,theAx1)->GetLastFunction(); Handle(GEOM_Function) aFunction = GEOM::GetCreatedLast(theShape,theAx1)->GetLastFunction();
// Make a Python command // Make a Python command
const bool append = true; GEOM::TPythonDump(aFunction, /*append=*/true)
GEOM::TPythonDump(aFunction,append)
<< "listShapesOnPlane = geompy.GetShapesOnPlaneIDs" << "listShapesOnPlane = geompy.GetShapesOnPlaneIDs"
<< "(" << theShape << "," << theShapeType << "," << theAx1 << "," << theState << ")"; << "(" << theShape << "," << aShapeType << "," << theAx1 << "," << theState << ")";
SetErrorCode(OK); SetErrorCode(OK);
return aSeq; return aSeq;
@ -1499,13 +1420,12 @@ Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::GetShapesOnCylind
aSeq = getShapesOnSurfaceIDs( aCylinder, aShape, aShapeType, theState ); aSeq = getShapesOnSurfaceIDs( aCylinder, aShape, aShapeType, theState );
// The GetShapesOnCylinder() doesn't change object so no new function is required. // The GetShapesOnCylinder() doesn't change object so no new function is required.
Handle(GEOM_Function) aFunction = getCreatedLast(theShape,theAxis)->GetLastFunction(); Handle(GEOM_Function) aFunction = GEOM::GetCreatedLast(theShape,theAxis)->GetLastFunction();
// Make a Python command // Make a Python command
const bool append = true; GEOM::TPythonDump(aFunction, /*append=*/true)
GEOM::TPythonDump(aFunction,append)
<< "listShapesOnCylinder = geompy.GetShapesOnCylinderIDs" << "listShapesOnCylinder = geompy.GetShapesOnCylinderIDs"
<< "(" << theShape << ", " << theShapeType << ", " << theAxis << ", " << "(" << theShape << ", " << aShapeType << ", " << theAxis << ", "
<< theRadius << ", " << theState << ")"; << theRadius << ", " << theState << ")";
SetErrorCode(OK); SetErrorCode(OK);
@ -1550,13 +1470,12 @@ Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::GetShapesOnSphere
aSeq = getShapesOnSurfaceIDs( aSphere, aShape, aShapeType, theState ); aSeq = getShapesOnSurfaceIDs( aSphere, aShape, aShapeType, theState );
// The GetShapesOnSphere() doesn't change object so no new function is required. // The GetShapesOnSphere() doesn't change object so no new function is required.
Handle(GEOM_Function) aFunction = getCreatedLast(theShape,theCenter)->GetLastFunction(); Handle(GEOM_Function) aFunction = GEOM::GetCreatedLast(theShape,theCenter)->GetLastFunction();
// Make a Python command // Make a Python command
const bool append = true; GEOM::TPythonDump(aFunction, /*append=*/true)
GEOM::TPythonDump(aFunction,append)
<< "listShapesOnCylinder = geompy.GetShapesOnCylinderIDs" << "listShapesOnCylinder = geompy.GetShapesOnCylinderIDs"
<< "(" << theShape << ", " << theShapeType << ", " << theCenter << ", " << "(" << theShape << ", " << aShapeType << ", " << theCenter << ", "
<< theRadius << ", " << theState << ")"; << theRadius << ", " << theState << ")";
SetErrorCode(OK); SetErrorCode(OK);
@ -1738,7 +1657,7 @@ Handle(TColStd_HSequenceOfTransient)
GEOM::TPythonDump(aFunction) GEOM::TPythonDump(aFunction)
<< "[" << anAsciiList.ToCString() << "] = geompy.GetShapesOnQuadrangle(" << "[" << anAsciiList.ToCString() << "] = geompy.GetShapesOnQuadrangle("
<< theShape << ", " << theShape << ", "
<< theShapeType << ", " << TopAbs_ShapeEnum(theShapeType) << ", "
<< theTopLeftPoint << ", " << theTopLeftPoint << ", "
<< theTopRigthPoint << ", " << theTopRigthPoint << ", "
<< theBottomLeftPoint << ", " << theBottomLeftPoint << ", "
@ -1788,17 +1707,16 @@ Handle(TColStd_HSequenceOfInteger)
// Make a Python command // Make a Python command
// The GetShapesOnCylinder() doesn't change object so no new function is required. // The GetShapesOnCylinder() doesn't change object so no new function is required.
Handle(GEOM_Object) lastObj = getCreatedLast(theShape,theTopLeftPoint); Handle(GEOM_Object) lastObj = GEOM::GetCreatedLast(theShape,theTopLeftPoint);
lastObj = getCreatedLast(lastObj,theTopRigthPoint); lastObj = GEOM::GetCreatedLast(lastObj,theTopRigthPoint);
lastObj = getCreatedLast(lastObj,theBottomRigthPoint); lastObj = GEOM::GetCreatedLast(lastObj,theBottomRigthPoint);
lastObj = getCreatedLast(lastObj,theBottomLeftPoint); lastObj = GEOM::GetCreatedLast(lastObj,theBottomLeftPoint);
Handle(GEOM_Function) aFunction = lastObj->GetLastFunction(); Handle(GEOM_Function) aFunction = lastObj->GetLastFunction();
const bool append = true; GEOM::TPythonDump(aFunction, /*append=*/true)
GEOM::TPythonDump(aFunction,append)
<< "listShapesOnQuadrangle = geompy.GetShapesOnQuadrangleIDs(" << "listShapesOnQuadrangle = geompy.GetShapesOnQuadrangleIDs("
<< theShape << ", " << theShape << ", "
<< theShapeType << ", " << TopAbs_ShapeEnum(theShapeType) << ", "
<< theTopLeftPoint << ", " << theTopLeftPoint << ", "
<< theTopRigthPoint << ", " << theTopRigthPoint << ", "
<< theBottomLeftPoint << ", " << theBottomLeftPoint << ", "
@ -2099,6 +2017,7 @@ void GEOMImpl_IShapesOperations::SortShapes(TopTools_ListOfShape& SL)
MidXYZ.SetValue(Index, MidXYZ.SetValue(Index,
GPoint.X()*999 + GPoint.Y()*99 + GPoint.Z()*0.9); GPoint.X()*999 + GPoint.Y()*99 + GPoint.Z()*0.9);
} }
// Sorting // Sorting
Standard_Integer aTemp; Standard_Integer aTemp;
Standard_Boolean exchange, Sort = Standard_True; Standard_Boolean exchange, Sort = Standard_True;
@ -2133,11 +2052,6 @@ void GEOMImpl_IShapesOperations::SortShapes(TopTools_ListOfShape& SL)
//======================================================================= //=======================================================================
bool GEOMImpl_IShapesOperations::CheckTriangulation (const TopoDS_Shape& aShape) bool GEOMImpl_IShapesOperations::CheckTriangulation (const TopoDS_Shape& aShape)
{ {
// MESSAGE("CheckTriangulation");
//
// OSD_Timer timer1;
// timer1.Start();
TopExp_Explorer exp (aShape, TopAbs_FACE); TopExp_Explorer exp (aShape, TopAbs_FACE);
if (!exp.More()) { if (!exp.More()) {
SetErrorCode("Shape without faces given"); SetErrorCode("Shape without faces given");
@ -2158,15 +2072,10 @@ bool GEOMImpl_IShapesOperations::CheckTriangulation (const TopoDS_Shape& aShape)
Standard_Real dx = aXmax - aXmin, dy = aYmax - aYmin, dz = aZmax - aZmin; Standard_Real dx = aXmax - aXmin, dy = aYmax - aYmin, dz = aZmax - aZmin;
Standard_Real aDeflection = Max(Max(dx, dy), dz) * aDeviationCoefficient * 4; Standard_Real aDeflection = Max(Max(dx, dy), dz) * aDeviationCoefficient * 4;
// MESSAGE("Deflection = " << aDeflection);
Standard_Real aHLRAngle = 0.349066; Standard_Real aHLRAngle = 0.349066;
BRepMesh_IncrementalMesh Inc (aShape, aDeflection, Standard_False, aHLRAngle); BRepMesh_IncrementalMesh Inc (aShape, aDeflection, Standard_False, aHLRAngle);
} }
// timer1.Stop();
// timer1.Show();
return true; return true;
} }

View File

@ -93,7 +93,7 @@ EXPORT_HEADERS= GEOMImpl_Gen.hxx \
# additionnal information to compil and link file # additionnal information to compil and link file
CPPFLAGS += $(OCC_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome $(BOOST_CPPFLAGS) CPPFLAGS += $(OCC_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome $(BOOST_CPPFLAGS)
CXXFLAGS += $(OCC_CXXFLAGS) -I${KERNEL_ROOT_DIR}/include/salome CXXFLAGS += $(OCC_CXXFLAGS) -I${KERNEL_ROOT_DIR}/include/salome
LDFLAGS += -L${KERNEL_ROOT_DIR}/lib/salome $(CAS_LDPATH) -lTKCAF -lTKFillet -lTKOffset -lCASCatch -lGEOMbasic -lNMTAlgo -lGEOMAlgo -lShHealOper LDFLAGS += -L${KERNEL_ROOT_DIR}/lib/salome $(CAS_LDPATH) -lTKCAF -lTKFillet -lTKOffset -lGEOMbasic -lNMTAlgo -lGEOMAlgo -lShHealOper
# additional file to be cleaned # additional file to be cleaned

View File

@ -33,7 +33,6 @@
#include "GeometryGUI.h" #include "GeometryGUI.h"
#include "GEOMToolsGUI_TransparencyDlg.h" #include "GEOMToolsGUI_TransparencyDlg.h"
#include "GEOMToolsGUI_NbIsosDlg.h" // Method ISOS adjustement #include "GEOMToolsGUI_NbIsosDlg.h" // Method ISOS adjustement
#include "GEOMToolsGUI_NameDlg.h"
#include "GEOM_Actor.h" #include "GEOM_Actor.h"
#include "GEOMBase.h" #include "GEOMBase.h"
@ -57,10 +56,12 @@
#include <SUIT_MessageBox.h> #include <SUIT_MessageBox.h>
#include <SalomeApp_Application.h> #include <SalomeApp_Application.h>
#include <LightApp_SelectionMgr.h>
#include <SalomeApp_Study.h> #include <SalomeApp_Study.h>
#include <SalomeApp_Module.h> #include <SalomeApp_Module.h>
#include <LightApp_SelectionMgr.h>
#include <LightApp_NameDlg.h>
#include "SALOMEDSClient.hxx" #include "SALOMEDSClient.hxx"
#include "utilities.h" #include "utilities.h"
@ -195,7 +196,7 @@ void GEOMToolsGUI::OnRename()
if( obj->FindAttribute(anAttr, "AttributeName") ) { if( obj->FindAttribute(anAttr, "AttributeName") ) {
_PTR(AttributeName) aName (anAttr); _PTR(AttributeName) aName (anAttr);
QString newName = GEOMToolsGUI_NameDlg::getName( app->desktop(), aName->Value().c_str() ); QString newName = LightApp_NameDlg::getName( app->desktop(), aName->Value().c_str() );
if ( !newName.isEmpty() ) { if ( !newName.isEmpty() ) {
aName->SetValue( newName.latin1() ); // rename the SObject aName->SetValue( newName.latin1() ); // rename the SObject
IObject->setName( newName.latin1() );// rename the InteractiveObject IObject->setName( newName.latin1() );// rename the InteractiveObject

View File

@ -1,135 +0,0 @@
// SALOME GEOMToolsGUI : implementation of desktop and GUI kernel
//
// Copyright (C) 2003 CEA/DEN, EDF R&D
//
//
//
// File : GEOMToolsGUI_NameDlg.cxx
// Author : Vadim SANDLER
// Module : SALOME
// $Header$
#include "GEOMToolsGUI_NameDlg.h"
#include <SUIT_Session.h>
#include <SUIT_Application.h>
#include <SUIT_Desktop.h>
#include <SUIT_Tools.h>
#include <qgroupbox.h>
#include <qlabel.h>
#include <qlineedit.h>
#include <qpushbutton.h>
#include <qlayout.h>
//using namespace std;
/*!
Constructor
*/
GEOMToolsGUI_NameDlg::GEOMToolsGUI_NameDlg( QWidget* parent )
: QDialog( parent ? parent : SUIT_Session::session()->activeApplication()->desktop(),
"GEOMToolsGUI_NameDlg",
true,
WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu )
{
setCaption( tr("TLT_RENAME") );
setSizeGripEnabled( TRUE );
QVBoxLayout* topLayout = new QVBoxLayout( this );
topLayout->setMargin( 11 ); topLayout->setSpacing( 6 );
/***************************************************************/
QGroupBox* GroupC1 = new QGroupBox( this, "GroupC1" );
GroupC1->setColumnLayout(0, Qt::Vertical );
GroupC1->layout()->setMargin( 0 ); GroupC1->layout()->setSpacing( 0 );
QHBoxLayout* GroupC1Layout = new QHBoxLayout( GroupC1->layout() );
GroupC1Layout->setAlignment( Qt::AlignTop );
GroupC1Layout->setMargin( 11 ); GroupC1Layout->setSpacing( 6 );
QLabel* TextLabel = new QLabel( GroupC1, "TextLabel1" );
TextLabel->setText( tr( "NAME_LBL" ) );
GroupC1Layout->addWidget( TextLabel );
myLineEdit = new QLineEdit( GroupC1, "LineEdit1" );
myLineEdit->setMinimumSize( 250, 0 );
GroupC1Layout->addWidget( myLineEdit );
/***************************************************************/
QGroupBox* GroupButtons = new QGroupBox( this, "GroupButtons" );
GroupButtons->setColumnLayout(0, Qt::Vertical );
GroupButtons->layout()->setMargin( 0 ); GroupButtons->layout()->setSpacing( 0 );
QHBoxLayout* GroupButtonsLayout = new QHBoxLayout( GroupButtons->layout() );
GroupButtonsLayout->setAlignment( Qt::AlignTop );
GroupButtonsLayout->setMargin( 11 ); GroupButtonsLayout->setSpacing( 6 );
myButtonOk = new QPushButton( GroupButtons, "buttonOk" );
myButtonOk->setText( tr( "GEOM_BUT_OK" ) );
myButtonOk->setAutoDefault( TRUE );
myButtonOk->setDefault( TRUE );
GroupButtonsLayout->addWidget( myButtonOk );
GroupButtonsLayout->addStretch();
myButtonCancel = new QPushButton( GroupButtons, "buttonCancel" );
myButtonCancel->setText( tr( "GEOM_BUT_CANCEL" ) );
myButtonCancel->setAutoDefault( TRUE );
GroupButtonsLayout->addWidget( myButtonCancel );
/***************************************************************/
topLayout->addWidget( GroupC1 );
topLayout->addWidget( GroupButtons );
// signals and slots connections
connect( myButtonOk, SIGNAL( clicked() ), this, SLOT( accept() ) );
connect( myButtonCancel, SIGNAL( clicked() ), this, SLOT( reject() ) );
/* Move widget on the botton right corner of main widget */
SUIT_Tools::centerWidget( this, parent );
}
/*!
Destructor
*/
GEOMToolsGUI_NameDlg::~GEOMToolsGUI_NameDlg()
{
}
/*!
Sets name
*/
void GEOMToolsGUI_NameDlg::setName( const QString& name )
{
myLineEdit->setText( name );
myLineEdit->end(false);
myLineEdit->home(true);
}
/*!
Returns name entered by user
*/
QString GEOMToolsGUI_NameDlg::name()
{
return myLineEdit->text();
}
void GEOMToolsGUI_NameDlg::accept()
{
if ( name().stripWhiteSpace().isEmpty() )
return;
QDialog::accept();
}
/*!
Creates modal <Rename> dialog and returns name entered [ static ]
*/
QString GEOMToolsGUI_NameDlg::getName( QWidget* parent, const QString& oldName )
{
QString n;
GEOMToolsGUI_NameDlg* dlg = new GEOMToolsGUI_NameDlg( parent );
if ( !oldName.isNull() )
dlg->setName( oldName );
if ( dlg->exec() == QDialog::Accepted )
n = dlg->name();
delete dlg;
return n;
}

View File

@ -1,46 +0,0 @@
// 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 <qdialog.h>
class QLineEdit;
class QPushButton;
//=================================================================================
// class : GEOMToolsGUI_NameDlg
// purpose : Common <Rename> dialog box class
//=================================================================================
class 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

View File

@ -43,12 +43,10 @@ EXPORT_HEADERS=
LIB_SRC = GEOMToolsGUI.cxx \ LIB_SRC = GEOMToolsGUI.cxx \
GEOMToolsGUI_1.cxx \ GEOMToolsGUI_1.cxx \
GEOMToolsGUI_TransparencyDlg.cxx \ GEOMToolsGUI_TransparencyDlg.cxx \
GEOMToolsGUI_NbIsosDlg.cxx \ GEOMToolsGUI_NbIsosDlg.cxx
GEOMToolsGUI_NameDlg.cxx
LIB_MOC = GEOMToolsGUI_TransparencyDlg.h \ LIB_MOC = GEOMToolsGUI_TransparencyDlg.h \
GEOMToolsGUI_NbIsosDlg.h \ GEOMToolsGUI_NbIsosDlg.h
GEOMToolsGUI_NameDlg.h
LIB_CLIENT_IDL = SALOMEDS_Attributes.idl \ LIB_CLIENT_IDL = SALOMEDS_Attributes.idl \
SALOME_GenericObj.idl \ SALOME_GenericObj.idl \

View File

@ -47,6 +47,7 @@
#include <TCollection_AsciiString.hxx> #include <TCollection_AsciiString.hxx>
#include <TColStd_HArray1OfInteger.hxx> #include <TColStd_HArray1OfInteger.hxx>
#include <TopAbs_ShapeEnum.hxx> #include <TopAbs_ShapeEnum.hxx>
#include <OSD.hxx>
#include "SALOMEDS_Tool.hxx" #include "SALOMEDS_Tool.hxx"
@ -67,6 +68,7 @@ GEOM_Gen_i::GEOM_Gen_i(CORBA::ORB_ptr orb,
_impl = new ::GEOMImpl_Gen; _impl = new ::GEOMImpl_Gen;
OSD::SetSignal( true );
} }

View File

@ -242,15 +242,19 @@ def TestOtherOperations (geompy, math):
geompy.AddObject(CreateGroup, f_ind_6) # box_faces[5] geompy.AddObject(CreateGroup, f_ind_6) # box_faces[5]
geompy.AddObject(CreateGroup, f_ind_1) # box_faces[0] geompy.AddObject(CreateGroup, f_ind_1) # box_faces[0]
geompy.AddObject(CreateGroup, f_ind_4) # box_faces[3] geompy.AddObject(CreateGroup, f_ind_4) # box_faces[3]
# Now contains f_ind_6, f_ind_1, f_ind_4
# UnionList # UnionList
geompy.UnionList(CreateGroup, [box_faces[2], box_faces[4], box_faces[5]]) geompy.UnionList(CreateGroup, [box_faces[2], box_faces[4], box_faces[5]])
# Now contains f_ind_6, f_ind_1, f_ind_4, f_ind_3, f_ind_5
# RemoveObject(theGroup, theSubShapeID) # RemoveObject(theGroup, theSubShapeID)
geompy.RemoveObject(CreateGroup, f_ind_1) # box_faces[0] geompy.RemoveObject(CreateGroup, f_ind_1) # box_faces[0]
# Now contains f_ind_6, f_ind_4, f_ind_3, f_ind_5
# DifferenceList # DifferenceList
geompy.DifferenceList(CreateGroup, [box_faces[1], box_faces[0], box_faces[3]]) geompy.DifferenceList(CreateGroup, [box_faces[1], box_faces[0], box_faces[3]])
# Now contains f_ind_6, f_ind_3, f_ind_5
# GetObjectIDs # GetObjectIDs
GetObjectIDs = geompy.GetObjectIDs(CreateGroup) GetObjectIDs = geompy.GetObjectIDs(CreateGroup)
@ -262,6 +266,21 @@ def TestOtherOperations (geompy, math):
BoxCopy = geompy.GetMainShape(CreateGroup) BoxCopy = geompy.GetMainShape(CreateGroup)
# DifferenceIDs
geompy.DifferenceIDs(CreateGroup, [f_ind_3, f_ind_5])
# Now contains f_ind_6
# UnionIDs
geompy.UnionIDs(CreateGroup, [f_ind_1, f_ind_2, f_ind_6])
# Now contains f_ind_6, f_ind_1, f_ind_2
# Check
GetObjectIDs = geompy.GetObjectIDs(CreateGroup)
print "Group of Box's faces includes the following IDs:"
print "(must be ", f_ind_6, ", ", f_ind_1, " and ", f_ind_2, ")"
for ObjectID in GetObjectIDs:
print " ", ObjectID
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# enumeration ShapeTypeString as a dictionary # enumeration ShapeTypeString as a dictionary
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
@ -392,12 +411,26 @@ def TestOtherOperations (geompy, math):
for face_i in faces_on_pln: for face_i in faces_on_pln:
geompy.addToStudy(face_i, "Face on Plane (N = (0, 1, 1)) or below it") geompy.addToStudy(face_i, "Face on Plane (N = (0, 1, 1)) or below it")
# GetShapesOnPlaneIDs
faces_above_pln_ids = geompy.GetShapesOnPlaneIDs(blocksComp, geompy.ShapeType["FACE"],
v_0pp, geompy.GEOM.ST_OUT)
faces_above = geompy.CreateGroup(blocksComp, geompy.ShapeType["FACE"])
geompy.UnionIDs(faces_above, faces_above_pln_ids)
geompy.addToStudy(faces_above, "Group of faces above Plane (N = (0, 1, 1))")
# GetShapesOnCylinder # GetShapesOnCylinder
edges_on_cyl = geompy.GetShapesOnCylinder(blocksComp, geompy.ShapeType["EDGE"], edges_out_cyl = geompy.GetShapesOnCylinder(blocksComp, geompy.ShapeType["EDGE"],
vy, 55, geompy.GEOM.ST_OUT) vy, 55, geompy.GEOM.ST_OUT)
for edge_i in edges_on_cyl: for edge_i in edges_out_cyl:
geompy.addToStudy(edge_i, "Edge out of Cylinder (axis = (0, 1, 0), r = 55)") geompy.addToStudy(edge_i, "Edge out of Cylinder (axis = (0, 1, 0), r = 55)")
# GetShapesOnCylinderIDs
edges_in_cyl_ids = geompy.GetShapesOnCylinderIDs(blocksComp, geompy.ShapeType["EDGE"],
vy, 55, geompy.GEOM.ST_IN)
edges_in = geompy.CreateGroup(blocksComp, geompy.ShapeType["EDGE"])
geompy.UnionIDs(edges_in, edges_in_cyl_ids)
geompy.addToStudy(edges_in, "Group of edges inside Cylinder (axis = (0, 1, 0), r = 55)")
# GetShapesOnSphere # GetShapesOnSphere
vertices_on_sph = geompy.GetShapesOnSphere(blocksComp, geompy.ShapeType["VERTEX"], vertices_on_sph = geompy.GetShapesOnSphere(blocksComp, geompy.ShapeType["VERTEX"],
p0, 100, geompy.GEOM.ST_ON) p0, 100, geompy.GEOM.ST_ON)
@ -405,6 +438,13 @@ def TestOtherOperations (geompy, math):
geompy.addToStudy(vertex_i, "Vertex on Sphere (center = (0, 0, 0), r = 100)") geompy.addToStudy(vertex_i, "Vertex on Sphere (center = (0, 0, 0), r = 100)")
pass pass
# GetShapesOnSphereIDs
vertices_on_sph_ids = geompy.GetShapesOnSphereIDs(blocksComp, geompy.ShapeType["VERTEX"],
p0, 100, geompy.GEOM.ST_ON)
vertices_on = geompy.CreateGroup(blocksComp, geompy.ShapeType["VERTEX"])
geompy.UnionIDs(vertices_on, vertices_on_sph_ids)
geompy.addToStudy(vertices_on, "Group of vertices on Sphere (center = (0, 0, 0), r = 100)")
# GetShapesOnQuadrangle # GetShapesOnQuadrangle
geompy.addToStudy(f12, "F12" ) geompy.addToStudy(f12, "F12" )
@ -428,6 +468,13 @@ def TestOtherOperations (geompy, math):
print "Error in GetShapesOnQuadrangle()" print "Error in GetShapesOnQuadrangle()"
pass pass
# GetShapesOnQuadrangleIDs
vertices_on_quad_ids = geompy.GetShapesOnQuadrangleIDs(f12, geompy.ShapeType["VERTEX"],
tl, tr, bl, br, geompy.GEOM.ST_ON)
vertices_on_quad = geompy.CreateGroup(f12, geompy.ShapeType["VERTEX"])
geompy.UnionIDs(vertices_on_quad, vertices_on_quad_ids)
geompy.addToStudy(vertices_on_quad, "Group of vertices on Quadrangle F12")
# GetInPlace(theShapeWhere, theShapeWhat) # GetInPlace(theShapeWhere, theShapeWhat)
box5 = geompy.MakeBoxDXDYDZ(100, 100, 100) box5 = geompy.MakeBoxDXDYDZ(100, 100, 100)
box6 = geompy.MakeTranslation(box5, 50, 50, 0) box6 = geompy.MakeTranslation(box5, 50, 50, 0)

View File

@ -954,6 +954,8 @@ def GetShapesOnPlane(theShape, theShapeType, theAx1, theState):
def GetShapesOnPlaneIDs(theShape, theShapeType, theAx1, theState): def GetShapesOnPlaneIDs(theShape, theShapeType, theAx1, theState):
""" """
* Works like the above method, but returns list of sub-shapes indices * Works like the above method, but returns list of sub-shapes indices
* Example: see GEOM_TestOthers.py
""" """
aList = ShapesOp.GetShapesOnPlaneIDs(theShape, theShapeType, theAx1, theState) aList = ShapesOp.GetShapesOnPlaneIDs(theShape, theShapeType, theAx1, theState)
if ShapesOp.IsDone() == 0: if ShapesOp.IsDone() == 0:
@ -983,6 +985,8 @@ def GetShapesOnCylinder(theShape, theShapeType, theAxis, theRadius, theState):
def GetShapesOnCylinderIDs(theShape, theShapeType, theAxis, theRadius, theState): def GetShapesOnCylinderIDs(theShape, theShapeType, theAxis, theRadius, theState):
""" """
* Works like the above method, but returns list of sub-shapes indices * Works like the above method, but returns list of sub-shapes indices
* Example: see GEOM_TestOthers.py
""" """
aList = ShapesOp.GetShapesOnCylinderIDs(theShape, theShapeType, theAxis, theRadius, theState) aList = ShapesOp.GetShapesOnCylinderIDs(theShape, theShapeType, theAxis, theRadius, theState)
if ShapesOp.IsDone() == 0: if ShapesOp.IsDone() == 0:
@ -1011,6 +1015,8 @@ def GetShapesOnSphere(theShape, theShapeType, theCenter, theRadius, theState):
def GetShapesOnSphereIDs(theShape, theShapeType, theCenter, theRadius, theState): def GetShapesOnSphereIDs(theShape, theShapeType, theCenter, theRadius, theState):
""" """
* Works like the above method, but returns list of sub-shapes indices * Works like the above method, but returns list of sub-shapes indices
* Example: see GEOM_TestOthers.py
""" """
aList = ShapesOp.GetShapesOnSphereIDs(theShape, theShapeType, theCenter, theRadius, theState) aList = ShapesOp.GetShapesOnSphereIDs(theShape, theShapeType, theCenter, theRadius, theState)
if ShapesOp.IsDone() == 0: if ShapesOp.IsDone() == 0:
@ -1039,6 +1045,8 @@ def GetShapesOnQuadrangle(theShape, theShapeType, theTopLeftPoint, theTopRigthPo
def GetShapesOnQuadrangleIDs(theShape, theShapeType, theTopLeftPoint, theTopRigthPoint, theBottomLeftPoint, theBottomRigthPoint, theState): def GetShapesOnQuadrangleIDs(theShape, theShapeType, theTopLeftPoint, theTopRigthPoint, theBottomLeftPoint, theBottomRigthPoint, theState):
""" """
* Works like the above method, but returns list of sub-shapes indices * Works like the above method, but returns list of sub-shapes indices
* Example: see GEOM_TestOthers.py
""" """
aList = ShapesOp.GetShapesOnQuadrangleIDs(theShape, theShapeType, theTopLeftPoint, theTopRigthPoint, theBottomLeftPoint, theBottomRigthPoint, theState) aList = ShapesOp.GetShapesOnQuadrangleIDs(theShape, theShapeType, theTopLeftPoint, theTopRigthPoint, theBottomLeftPoint, theBottomRigthPoint, theState)
if ShapesOp.IsDone() == 0: if ShapesOp.IsDone() == 0:
@ -2473,6 +2481,8 @@ def UnionIDs(theGroup, theSubShapes):
""" """
* Works like the above method, but argument * Works like the above method, but argument
* theSubShapes here is a list of sub-shapes indices * theSubShapes here is a list of sub-shapes indices
* Example: see GEOM_TestOthers.py
""" """
GroupOp.UnionIDs(theGroup, theSubShapes) GroupOp.UnionIDs(theGroup, theSubShapes)
if GroupOp.IsDone() == 0: if GroupOp.IsDone() == 0:
@ -2494,6 +2504,8 @@ def DifferenceIDs(theGroup, theSubShapes):
""" """
* Works like the above method, but argument * Works like the above method, but argument
* theSubShapes here is a list of sub-shapes indices * theSubShapes here is a list of sub-shapes indices
* Example: see GEOM_TestOthers.py
""" """
GroupOp.DifferenceIDs(theGroup, theSubShapes) GroupOp.DifferenceIDs(theGroup, theSubShapes)
if GroupOp.IsDone() == 0: if GroupOp.IsDone() == 0:

View File

@ -323,6 +323,8 @@ void GroupGUI_GroupDlg::SelectionIntoArgument()
// try to find out and process the object browser selection // try to find out and process the object browser selection
if ( !aMapIndex.Extent() ) { if ( !aMapIndex.Extent() ) {
globalSelection( GEOM_ALLSHAPES );
GEOM::ListOfGO anObjects; GEOM::ListOfGO anObjects;
GEOMBase::ConvertListOfIOInListOfGO(selectedIO(), anObjects); GEOMBase::ConvertListOfIOInListOfGO(selectedIO(), anObjects);
GEOM::GEOM_ILocalOperations_var aLocOp = getGeomEngine()->GetILocalOperations( getStudyId() ); GEOM::GEOM_ILocalOperations_var aLocOp = getGeomEngine()->GetILocalOperations( getStudyId() );
@ -334,6 +336,9 @@ void GroupGUI_GroupDlg::SelectionIntoArgument()
aMapIndex.Add( anIndex ); aMapIndex.Add( anIndex );
} }
} }
if ( !myMainObj->_is_nil() )
localSelection( myMainObj, getShapeType() );
} }
if (aMapIndex.Extent() >= 1) { if (aMapIndex.Extent() >= 1) {
@ -656,8 +661,8 @@ bool GroupGUI_GroupDlg::isValid( QString& theMessage )
RETURN_WITH_MSG( !CORBA::is_nil( myMainObj ), tr( "NO_GROUP" ) ) RETURN_WITH_MSG( !CORBA::is_nil( myMainObj ), tr( "NO_GROUP" ) )
} }
const char* aName = getNewObjectName(); QString aName (getNewObjectName());
RETURN_WITH_MSG ( aName && strlen( aName ), tr( "EMPTY_NAME" ) ) RETURN_WITH_MSG ( !aName.stripWhiteSpace().isEmpty(), tr( "EMPTY_NAME" ) )
RETURN_WITH_MSG ( myIdList->count(), tr( "EMPTY_LIST" ) ) RETURN_WITH_MSG ( myIdList->count(), tr( "EMPTY_LIST" ) )
return true; return true;