mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2024-12-24 16:30:35 +05:00
IMP 0019918: Re-open popup for imported shapes.
This commit is contained in:
parent
03a6d6ca45
commit
ba274e7ad1
BIN
doc/salome/gui/GEOM/images/geomimport_reopen.png
Normal file
BIN
doc/salome/gui/GEOM/images/geomimport_reopen.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
@ -22,6 +22,14 @@ Select the required file and click \b Open. Your file will be imported in
|
||||
the module and its contents (geometrical object) will be displayed in
|
||||
the <b>Object Browser</b>.
|
||||
|
||||
\note You can re-open ones imported shape from the initial file, if
|
||||
the file has been changed on disk. Use for that item
|
||||
<b>Reload From Disk</b> from context menu of imported
|
||||
shape. Reloaded shape will have the same representation parameters
|
||||
like before this operation.
|
||||
|
||||
\image html geomimport_reopen.png
|
||||
|
||||
\n <em>To export geometrical objects into a BREP, IGES, STEP
|
||||
file:</em>
|
||||
|
||||
|
@ -792,6 +792,13 @@ module GEOM
|
||||
GEOM_Object PositionShapeCopy (in GEOM_Object theObject,
|
||||
in GEOM_Object theStartLCS,
|
||||
in GEOM_Object theEndLCS);
|
||||
|
||||
/*!
|
||||
* Recompute the shape from its arguments.
|
||||
* \param theObject The object to be recomputed.
|
||||
* \return theObject.
|
||||
*/
|
||||
GEOM_Object RecomputeObject (in GEOM_Object theObject);
|
||||
};
|
||||
|
||||
/*!
|
||||
|
@ -2482,6 +2482,12 @@ msgstr "Edit"
|
||||
msgid "STB_GROUP_EDIT"
|
||||
msgstr "Edit a group"
|
||||
|
||||
msgid "MEN_RELOAD_IMPORTED"
|
||||
msgstr "Reload From Disk"
|
||||
|
||||
msgid "STB_RELOAD_IMPORTED"
|
||||
msgstr "Reload imported shape from its original place on disk"
|
||||
|
||||
msgid "MEN_BLOCKS"
|
||||
msgstr "Blocks"
|
||||
|
||||
|
@ -71,6 +71,7 @@
|
||||
#include <vtkCamera.h>
|
||||
#include <vtkRenderer.h>
|
||||
|
||||
#include "GEOMImpl_Types.hxx"
|
||||
|
||||
extern "C" {
|
||||
Standard_EXPORT CAM_Module* createModule() {
|
||||
@ -488,7 +489,8 @@ void GeometryGUI::OnGUIEvent( int id )
|
||||
id == 5025 || // MENU TRANSFORMATION - SCALE
|
||||
id == 5026 || // MENU TRANSFORMATION - OFFSET
|
||||
id == 5027 || // MENU TRANSFORMATION - MULTI-TRANSLATION
|
||||
id == 5028 ) { // MENU TRANSFORMATION - MULTI-ROTATION
|
||||
id == 5028 || // MENU TRANSFORMATION - MULTI-ROTATION
|
||||
id == 5029 ) { // CONTEXT(POPUP) MENU - RELOAD_IMPORTED
|
||||
#ifndef WNT
|
||||
library = getLibrary( "libTransformationGUI.so" );
|
||||
#else
|
||||
@ -825,6 +827,7 @@ void GeometryGUI::initialize( CAM_Application* app )
|
||||
createGeomAction( 5026, "OFFSET" );
|
||||
createGeomAction( 5027, "MUL_TRANSLATION" );
|
||||
createGeomAction( 5028, "MUL_ROTATION" );
|
||||
createGeomAction( 5029, "RELOAD_IMPORTED" );
|
||||
|
||||
createGeomAction( 503, "PARTITION" );
|
||||
createGeomAction( 504, "ARCHIMEDE" );
|
||||
@ -1722,13 +1725,23 @@ void GeometryGUI::contextMenuPopup( const QString& client, QPopupMenu* menu, QSt
|
||||
SalomeApp_Module::contextMenuPopup( client, menu, title );
|
||||
SALOME_ListIO lst;
|
||||
getApp()->selectionMgr()->selectedObjects( lst );
|
||||
if ( ( client == "OCCViewer" || client == "VTKViewer" ) && lst.Extent() == 1 ) {
|
||||
|
||||
if (lst.Extent() == 1) {
|
||||
Handle(SALOME_InteractiveObject) io = lst.First();
|
||||
SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( application()->activeStudy() );
|
||||
SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>(application()->activeStudy());
|
||||
_PTR(Study) study = appStudy->studyDS();
|
||||
_PTR(SObject) obj = study->FindObjectID( io->getEntry() );
|
||||
if ( obj )
|
||||
title = QString( obj->GetName().c_str() );
|
||||
_PTR(SObject) aSObj = study->FindObjectID(io->getEntry());
|
||||
if (aSObj) {
|
||||
// Set context menu title
|
||||
if (client == "OCCViewer" || client == "VTKViewer")
|
||||
title = QString(aSObj->GetName().c_str());
|
||||
|
||||
// Reload imported shape
|
||||
CORBA::Object_var anObj = GeometryGUI::ClientSObjectToObject(aSObj);
|
||||
GEOM::GEOM_Object_var aGeomObj = GEOM::GEOM_Object::_narrow(anObj);
|
||||
if (!CORBA::is_nil(aGeomObj) && aGeomObj->GetType() == GEOM_IMPORT)
|
||||
action(5029)->addTo(menu);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1252,3 +1252,39 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::RotateThreePointsCopy
|
||||
|
||||
return GetObject(anObject);
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
/*!
|
||||
* RecomputeObject
|
||||
*/
|
||||
//=============================================================================
|
||||
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::RecomputeObject
|
||||
(GEOM::GEOM_Object_ptr theObject)
|
||||
{
|
||||
//Set a not done flag
|
||||
GetOperations()->SetNotDone();
|
||||
GEOM::GEOM_Object_var aGEOMObject;
|
||||
|
||||
if (theObject == NULL) return aGEOMObject._retn();
|
||||
|
||||
//check if the object is a subshape
|
||||
//if (!theObject->IsMainShape()) {
|
||||
// GetOperations()->SetErrorCode(SUBSHAPE_ERROR);
|
||||
// return aGEOMObject._retn();
|
||||
//}
|
||||
|
||||
aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
|
||||
|
||||
//Get the object itself
|
||||
CORBA::String_var anEntry = theObject->GetEntry();
|
||||
Handle(GEOM_Object) anObject =
|
||||
GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry);
|
||||
if (anObject.IsNull()) return aGEOMObject._retn();
|
||||
|
||||
//Perform the recomputation
|
||||
Handle(GEOM_Function) aLastFunction = anObject->GetLastFunction();
|
||||
if (aLastFunction.IsNull()) return aGEOMObject._retn();
|
||||
GetOperations()->GetSolver()->ComputeFunction(aLastFunction);
|
||||
|
||||
return aGEOMObject._retn();
|
||||
}
|
||||
|
@ -151,6 +151,7 @@ class GEOM_I_EXPORT GEOM_ITransformOperations_i :
|
||||
GEOM::GEOM_Object_ptr thePoint1,
|
||||
GEOM::GEOM_Object_ptr thePoint2);
|
||||
|
||||
GEOM::GEOM_Object_ptr RecomputeObject (GEOM::GEOM_Object_ptr theObject);
|
||||
|
||||
::GEOMImpl_ITransformOperations* GetOperations() { return (::GEOMImpl_ITransformOperations*)GetImpl(); }
|
||||
};
|
||||
|
@ -27,12 +27,18 @@
|
||||
// $Header$
|
||||
|
||||
#include "TransformationGUI.h"
|
||||
|
||||
#include <GEOMBase.h>
|
||||
#include "GeometryGUI.h"
|
||||
|
||||
#include "SUIT_Session.h"
|
||||
#include "SUIT_Desktop.h"
|
||||
|
||||
#include "SalomeApp_Application.h"
|
||||
#include <SUIT_Session.h>
|
||||
#include <SUIT_Desktop.h>
|
||||
#include <SUIT_ViewModel.h>
|
||||
#include <SUIT_ViewWindow.h>
|
||||
#include <SUIT_ViewManager.h>
|
||||
#include <LightApp_SelectionMgr.h>
|
||||
#include <SalomeApp_Application.h>
|
||||
#include <SalomeApp_Study.h>
|
||||
|
||||
#include "TransformationGUI_MultiTranslationDlg.h" // Method MULTI TRANSLATION
|
||||
#include "TransformationGUI_MultiRotationDlg.h" // Method MULTI ROTATION
|
||||
@ -100,6 +106,60 @@ bool TransformationGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent)
|
||||
case 5028: // MULTI ROTATION
|
||||
aDlg = new TransformationGUI_MultiRotationDlg( getGeometryGUI(), parent, "" );
|
||||
break;
|
||||
case 5029: // RELOAD IMPORTED SHAPE
|
||||
{
|
||||
LightApp_SelectionMgr* aSelMgr = app->selectionMgr();
|
||||
SALOME_ListIO aSelList;
|
||||
aSelMgr->selectedObjects(aSelList);
|
||||
if (aSelList.Extent() == 1) {
|
||||
Standard_Boolean testResult = Standard_False;
|
||||
GEOM::GEOM_Object_var aGeomObj =
|
||||
GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult);
|
||||
if (testResult) {
|
||||
SalomeApp_Study* anAppStudy = dynamic_cast<SalomeApp_Study*>(app->activeStudy());
|
||||
GEOM::GEOM_ITransformOperations_var anOp =
|
||||
GeometryGUI::GetGeomGen()->GetITransformOperations(anAppStudy->id());
|
||||
if (!anOp->_is_nil()) {
|
||||
anOp->RecomputeObject(aGeomObj);
|
||||
GEOM_Displayer aDisp (anAppStudy);
|
||||
//aDisp.Redisplay(aSelList.First());
|
||||
//aDisp.Display(aSelList.First());
|
||||
Handle(SALOME_InteractiveObject) theIO = aSelList.First();
|
||||
SUIT_Desktop* desk = app->desktop();
|
||||
QPtrList<SUIT_ViewWindow> wnds = desk->windows();
|
||||
SUIT_ViewWindow* wnd;
|
||||
for ( wnd = wnds.first(); wnd; wnd = wnds.next() )
|
||||
{
|
||||
SUIT_ViewManager* vman = wnd->getViewManager();
|
||||
if ( vman )
|
||||
{
|
||||
SUIT_ViewModel* vmodel = vman->getViewModel();
|
||||
if ( vmodel )
|
||||
{
|
||||
SALOME_View* view = dynamic_cast<SALOME_View*>(vmodel);
|
||||
if ( view )
|
||||
{
|
||||
//if (view->isVisible(theIO) || view == GetActiveView())
|
||||
if (view->isVisible(theIO))
|
||||
{
|
||||
//SALOME_Prs* prs = view->CreatePrs( theIO->getEntry() );
|
||||
//if ( prs ) {
|
||||
// prs->Update(&aDisp);
|
||||
// view->Repaint();
|
||||
//}
|
||||
aDisp.Erase(theIO, false, false, view);
|
||||
aDisp.Display(theIO, true, view);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// ? Redisplay subshapes ?
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
app->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID));
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user