Dump Python extension

This commit is contained in:
ouv 2008-11-21 14:48:48 +00:00
parent a83d11fd0f
commit a5e6595533
34 changed files with 825 additions and 344 deletions

View File

@ -365,8 +365,12 @@ GEOM::GEOM_IOperations_ptr BlocksGUI_ExplodeDlg::createOperation()
// function : isValid()
// purpose : Verify validity of input data
//=================================================================================
bool BlocksGUI_ExplodeDlg::isValid (QString&)
bool BlocksGUI_ExplodeDlg::isValid (QString& msg)
{
bool okSP = true;
okSP = myGrp1->SpinBox1->isValid( msg, !IsPreview() ) && okSP;
okSP = myGrp1->SpinBox2->isValid( msg, !IsPreview() ) && okSP;
bool ok = false;
switch ( getConstructorId() ) {
case 0:
@ -385,7 +389,7 @@ bool BlocksGUI_ExplodeDlg::isValid (QString&)
break;
}
return ok;
return ok && okSP;
}
//=================================================================================
@ -420,6 +424,10 @@ bool BlocksGUI_ExplodeDlg::execute( ObjectList& objects )
return objects.size() > 0;
}
QStringList aParameters;
aParameters << myGrp1->SpinBox1->text();
aParameters << myGrp1->SpinBox2->text();
// Throw away sub-shapes not selected by user if not in preview mode
// and manual selection is active
if ( !isAllSubShapes() ) {
@ -441,7 +449,10 @@ bool BlocksGUI_ExplodeDlg::execute( ObjectList& objects )
for ( anIter = myTmpObjs.begin(); anIter != myTmpObjs.end(); ++anIter ) {
CORBA::String_var objStr = myGeomGUI->getApp()->orb()->object_to_string( *anIter );
if ( selected.contains( QString( objStr.in() ) ) )
{
(*anIter)->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
objects.push_back( *anIter );
}
else
toRemoveFromEngine.push_back( *anIter );
}
@ -456,7 +467,11 @@ bool BlocksGUI_ExplodeDlg::execute( ObjectList& objects )
}
else {
for ( int i = 0, n = aList->length(); i < n; i++ )
objects.push_back( GEOM::GEOM_Object::_duplicate( aList[i] ) );
{
GEOM::GEOM_Object_var anObj = GEOM::GEOM_Object::_duplicate( aList[i] );
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
objects.push_back( anObj._retn() );
}
}
return objects.size();

View File

@ -111,7 +111,7 @@ void BlocksGUI_TrsfDlg::Init()
{
// Set range of spinboxes
double SpecificStep = 1.0;
QMap<int, QDoubleSpinBox*>::iterator anIter;
QMap<int, SalomeApp_DoubleSpinBox*>::iterator anIter;
for (anIter = mySpinBox.begin(); anIter != mySpinBox.end(); ++anIter) {
//anIter.data()->RangeStepAndValidator(1.0, 999.999, SpecificStep, 3);
initSpinBox(anIter.value(), 1.0, MAX_NUMBER, SpecificStep, 3);
@ -127,7 +127,7 @@ void BlocksGUI_TrsfDlg::Init()
for (anIterBtn = mySelBtn.begin(); anIterBtn != mySelBtn.end(); ++anIterBtn)
connect(anIterBtn.value(), SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
QMap<int, QDoubleSpinBox*>::iterator anIterSpin;
QMap<int, SalomeApp_DoubleSpinBox*>::iterator anIterSpin;
for (anIterSpin = mySpinBox.begin(); anIterSpin != mySpinBox.end(); ++anIterSpin)
connect(anIterSpin.value(), SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
@ -449,7 +449,7 @@ void BlocksGUI_TrsfDlg::createSpinWg (const QString& theLbl,
const int theId)
{
QLabel* lab = new QLabel(theLbl, theParent);
mySpinBox[theId] = new QDoubleSpinBox(theParent);
mySpinBox[theId] = new SalomeApp_DoubleSpinBox(theParent);
QGridLayout* l = 0;
if (!theParent->layout()) {
l = new QGridLayout(theParent);
@ -546,20 +546,23 @@ GEOM::GEOM_IOperations_ptr BlocksGUI_TrsfDlg::createOperation()
// function : isValid
// purpose : Verify validity of input data
//=================================================================================
bool BlocksGUI_TrsfDlg::isValid (QString&)
bool BlocksGUI_TrsfDlg::isValid (QString& msg)
{
bool ok = false;
bool ok = false, okSP = true;
switch (getConstructorId()) {
case 0:
ok = !myShape->_is_nil() && myFaces[Face1] > 0;
okSP = mySpinBox[SpinBox1]->isValid( msg, !IsPreview() );
break;
case 1:
ok = !myShape->_is_nil() && myFaces[Face1U] > 0 && myFaces[Face1V] > 0;
okSP = mySpinBox[SpinBox2U]->isValid( msg, !IsPreview() ) && okSP;
okSP = mySpinBox[SpinBox2V]->isValid( msg, !IsPreview() ) && okSP;
break;
default:
break;
}
return ok;
return ok && okSP;
}
//=================================================================================
@ -578,6 +581,13 @@ bool BlocksGUI_TrsfDlg::execute (ObjectList& objects)
MakeMultiTransformation1D(myShape,
myFaces[Face1], myFaces[Face2],
(int)mySpinBox[SpinBox1]->value());
if (!anObj->_is_nil())
{
QStringList aParameters;
aParameters << "" << "";
aParameters << mySpinBox[SpinBox1]->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
}
res = true;
break;
case 1:
@ -587,6 +597,15 @@ bool BlocksGUI_TrsfDlg::execute (ObjectList& objects)
(int)mySpinBox[SpinBox2U]->value(),
myFaces[Face1V], myFaces[Face2V],
(int)mySpinBox[SpinBox2V]->value());
if (!anObj->_is_nil())
{
QStringList aParameters;
aParameters << "" << "";
aParameters << mySpinBox[SpinBox2U]->text();
aParameters << "" << "";
aParameters << mySpinBox[SpinBox2V]->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
}
res = true;
break;
default:

View File

@ -29,7 +29,7 @@
#include <QMap>
class QDoubleSpinBox;
class SalomeApp_DoubleSpinBox;
class QGroupBox;
class QPushButton;
class QLineEdit;
@ -78,7 +78,7 @@ private:
QMap<int, QPushButton*> mySelBtn;
QMap<int, QLineEdit*> mySelName;
QMap<int, QDoubleSpinBox*> mySpinBox;
QMap<int, SalomeApp_DoubleSpinBox*> mySpinBox;
private slots:
void ClickOnOk();

View File

@ -35,10 +35,10 @@
<widget class="QTextBrowser" name="TextBrowser1" />
</item>
<item row="2" column="2" >
<widget class="QSpinBox" name="SpinBox2" />
<widget class="SalomeApp_IntSpinBox" name="SpinBox2" />
</item>
<item row="1" column="2" >
<widget class="QSpinBox" name="SpinBox1" />
<widget class="SalomeApp_IntSpinBox" name="SpinBox1" />
</item>
<item row="4" column="0" colspan="3" >
<widget class="QCheckBox" name="CheckBox1" >
@ -126,6 +126,13 @@
</widget>
<layoutdefault spacing="6" margin="11" />
<pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
<customwidgets>
<customwidget>
<class>SalomeApp_IntSpinBox</class>
<extends>QSpinBox</extends>
<header location="global" >SalomeApp_IntSpinBox.h</header>
</customwidget>
</customwidgets>
<tabstops>
<tabstop>PushButton1</tabstop>
<tabstop>LineEdit1</tabstop>

View File

@ -56,13 +56,13 @@
<number>6</number>
</property>
<item row="2" column="1" colspan="2" >
<widget class="QtxDoubleSpinBox" name="SpinBox_DY" />
<widget class="SalomeApp_DoubleSpinBox" name="SpinBox_DY" />
</item>
<item row="3" column="1" colspan="2" >
<widget class="QtxDoubleSpinBox" name="SpinBox_DZ" />
<widget class="SalomeApp_DoubleSpinBox" name="SpinBox_DZ" />
</item>
<item row="1" column="1" colspan="2" >
<widget class="QtxDoubleSpinBox" name="SpinBox_DX" />
<widget class="SalomeApp_DoubleSpinBox" name="SpinBox_DX" />
</item>
<item row="4" column="0" colspan="2" >
<widget class="QCheckBox" name="CheckButton1" >
@ -160,9 +160,9 @@
<pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
<customwidgets>
<customwidget>
<class>QtxDoubleSpinBox</class>
<class>SalomeApp_DoubleSpinBox</class>
<extends>QDoubleSpinBox</extends>
<header location="global" >QtxDoubleSpinBox.h</header>
<header location="global" >SalomeApp_DoubleSpinBox.h</header>
</customwidget>
</customwidgets>
<tabstops>

View File

@ -82,7 +82,7 @@
</widget>
</item>
<item row="0" column="1" >
<widget class="QtxDoubleSpinBox" name="SpinBox1" />
<widget class="SalomeApp_DoubleSpinBox" name="SpinBox1" />
</item>
<item row="0" column="2" >
<widget class="QLabel" name="TextLabel3" >
@ -101,7 +101,7 @@
</widget>
</item>
<item row="0" column="3" >
<widget class="QtxDoubleSpinBox" name="SpinBox2" />
<widget class="SalomeApp_DoubleSpinBox" name="SpinBox2" />
</item>
<item row="1" column="0" >
<widget class="QLabel" name="TextLabel5" >
@ -120,7 +120,7 @@
</widget>
</item>
<item row="1" column="1" >
<widget class="QtxDoubleSpinBox" name="SpinBox4" />
<widget class="SalomeApp_DoubleSpinBox" name="SpinBox4" />
</item>
<item row="1" column="2" >
<widget class="QLabel" name="TextLabel6" >
@ -139,7 +139,7 @@
</widget>
</item>
<item row="1" column="3" >
<widget class="QtxDoubleSpinBox" name="SpinBox5" />
<widget class="SalomeApp_DoubleSpinBox" name="SpinBox5" />
</item>
<item row="2" column="0" >
<widget class="QLabel" name="TextLabel4" >
@ -158,7 +158,7 @@
</widget>
</item>
<item row="2" column="1" >
<widget class="QtxDoubleSpinBox" name="SpinBox3" />
<widget class="SalomeApp_DoubleSpinBox" name="SpinBox3" />
</item>
<item row="2" column="2" colspan="2" >
<widget class="QCheckBox" name="CheckBox1" >
@ -176,9 +176,9 @@
</widget>
<customwidgets>
<customwidget>
<class>QtxDoubleSpinBox</class>
<class>SalomeApp_DoubleSpinBox</class>
<extends>QDoubleSpinBox</extends>
<header location="global" >QtxDoubleSpinBox.h</header>
<header location="global" >SalomeApp_DoubleSpinBox.h</header>
</customwidget>
</customwidgets>
<tabstops>

View File

@ -56,7 +56,7 @@
<number>6</number>
</property>
<item row="2" column="1" colspan="2" >
<widget class="QtxDoubleSpinBox" name="SpinBox_DX" >
<widget class="SalomeApp_DoubleSpinBox" name="SpinBox_DX" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
<horstretch>0</horstretch>
@ -174,9 +174,9 @@
<pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
<customwidgets>
<customwidget>
<class>QtxDoubleSpinBox</class>
<class>SalomeApp_DoubleSpinBox</class>
<extends>QDoubleSpinBox</extends>
<header location="global" >QtxDoubleSpinBox.h</header>
<header location="global" >SalomeApp_DoubleSpinBox.h</header>
</customwidget>
</customwidgets>
<tabstops>

View File

@ -128,7 +128,7 @@
</widget>
</item>
<item row="2" column="2" >
<widget class="QtxDoubleSpinBox" name="SpinBox_DX" />
<widget class="SalomeApp_DoubleSpinBox" name="SpinBox_DX" />
</item>
<item row="3" column="0" >
<widget class="QRadioButton" name="RadioButton2" >
@ -154,7 +154,7 @@
</widget>
</item>
<item row="3" column="2" >
<widget class="QtxDoubleSpinBox" name="SpinBox_DY" >
<widget class="SalomeApp_DoubleSpinBox" name="SpinBox_DY" >
<property name="enabled" >
<bool>false</bool>
</property>
@ -177,7 +177,7 @@
</widget>
</item>
<item row="3" column="4" >
<widget class="QtxDoubleSpinBox" name="SpinBox_DZ" >
<widget class="SalomeApp_DoubleSpinBox" name="SpinBox_DZ" >
<property name="enabled" >
<bool>false</bool>
</property>
@ -190,9 +190,9 @@
</widget>
<customwidgets>
<customwidget>
<class>QtxDoubleSpinBox</class>
<class>SalomeApp_DoubleSpinBox</class>
<extends>QDoubleSpinBox</extends>
<header location="global" >QtxDoubleSpinBox.h</header>
<header location="global" >SalomeApp_DoubleSpinBox.h</header>
</customwidget>
</customwidgets>
<tabstops>

View File

@ -63,6 +63,8 @@
#define COMMA ','
#define O_BRACKET '('
#define C_BRACKET ')'
#define O_SQR_BRACKET '['
#define C_SQR_BRACKET ']'
#define PY_NULL "None"
#ifdef _DEBUG_
@ -778,8 +780,8 @@ Handle(TColStd_HSequenceOfInteger) FindEntries(TCollection_AsciiString& theStrin
void ReplaceVariables(TCollection_AsciiString& theCommand,
TVariablesList theVariables)
{
//Get Entry of the result object
TCollection_AsciiString anEntry = theCommand.Token("=",1);
if (MYDEBUG)
cout<<"Command : "<<theCommand<<endl;
if (MYDEBUG) {
cout<<"All Entries:"<<endl;
@ -787,93 +789,145 @@ void ReplaceVariables(TCollection_AsciiString& theCommand,
for(;it != theVariables.end();it++)
cout<<"\t'"<<(*it).first<<"'"<<endl;
}
//Remove white spaces
anEntry.RightAdjust();
anEntry.LeftAdjust();
if(MYDEBUG)
cout<<"Result entry : '" <<anEntry<<"'"<<endl;
//Find variables used for object construction
vector<TVariable> aVariables;
TVariablesList::const_iterator it = theVariables.find(anEntry);
if( it != theVariables.end() )
aVariables = (*it).second;
if(aVariables.empty()) {
//Additional case - multi-row commands
int aCommandIndex = 1;
while( aCommandIndex < 10 ) { // tmp check
TCollection_AsciiString aCommand = theCommand.Token("\n",aCommandIndex);
if( aCommand.Length() == 0 )
break;
if (MYDEBUG)
cout<<"Sub-command : "<<aCommand<<endl;
Standard_Integer aStartCommandPos = theCommand.Location(aCommand,1,theCommand.Length());
Standard_Integer aEndCommandPos = aStartCommandPos + aCommand.Length();
//Get Entry of the result object
TCollection_AsciiString anEntry = aCommand.Token("=",1);
//Remove white spaces
anEntry.RightAdjust();
anEntry.LeftAdjust();
if(MYDEBUG)
cout<<"Valiables list empty!!!"<<endl;
return;
}
if(MYDEBUG) {
cout<<"Variables from SObject:"<<endl;
for (int i = 0; i < aVariables.size();i++)
cout<<"\t Variable["<<i<<"]"<<aVariables[i].myVariable<<endl;
}
cout<<"Result entry : '" <<anEntry<<"'"<<endl;
//Calculate total number of parameter
Standard_Integer aTotalNbParams = 1;
while(theCommand.Location(aTotalNbParams,COMMA,1,theCommand.Length()))
aTotalNbParams++;
//Check if result is list of entries - enough to get the first entry in this case
int aNbEntries = 1;
if( anEntry.Value( 1 ) == O_SQR_BRACKET && anEntry.Value( anEntry.Length() ) == C_SQR_BRACKET ) {
while(anEntry.Location(aNbEntries,COMMA,1,anEntry.Length()))
aNbEntries++;
TCollection_AsciiString aSeparator(COMMA);
anEntry = anEntry.Token(aSeparator.ToCString(),1);
anEntry.Remove( 1, 1 );
anEntry.RightAdjust();
anEntry.LeftAdjust();
if(MYDEBUG)
cout<<"Sub-entry : '" <<anEntry<<"'"<<endl;
}
//Find variables used for object construction
vector<TVariable> aVariables;
TVariablesList::const_iterator it = theVariables.find(anEntry);
if( it != theVariables.end() )
aVariables = (*it).second;
if(aVariables.empty()) {
if(MYDEBUG)
cout<<"Valiables list empty!!!"<<endl;
aCommandIndex++;
continue;
}
//Replace parameters by variables
Standard_Integer aStartPos = 0;
Standard_Integer aEndPos = 0;
int iVar = 0;
TCollection_AsciiString aReplasedVar, aVar;
for(Standard_Integer i=1;i <= aTotalNbParams;i++) {
//Replace first parameter (bettwen '(' character and first ',' character)
if(i == 1)
if(MYDEBUG) {
cout<<"Variables from SObject:"<<endl;
for (int i = 0; i < aVariables.size();i++)
cout<<"\t Variable["<<i<<"] = "<<aVariables[i].myVariable<<endl;
}
//Calculate total number of parameters
Standard_Integer aTotalNbParams = 1;
while(aCommand.Location(aTotalNbParams,COMMA,1,aCommand.Length()))
aTotalNbParams++;
if(MYDEBUG)
cout<<"aTotalNbParams = "<<aTotalNbParams<<endl;
Standard_Integer aFirstParam = aNbEntries;
//Replace parameters by variables
Standard_Integer aStartPos = 0;
Standard_Integer aEndPos = 0;
int iVar = 0;
TCollection_AsciiString aReplasedVar, aVar;
for(Standard_Integer i=aFirstParam;i <= aTotalNbParams;i++) {
//Replace first parameter (bettwen '(' character and first ',' character)
if(i == aFirstParam)
{
aStartPos = theCommand.Location(O_BRACKET, 1, theCommand.Length()) + 1;
if(aTotalNbParams != 1 )
aEndPos = theCommand.Location(COMMA, 1, theCommand.Length());
aStartPos = aCommand.Location(O_BRACKET, 1, aCommand.Length()) + 1;
if(aTotalNbParams - aNbEntries > 0 )
aEndPos = aCommand.Location(aFirstParam, COMMA, 1, aCommand.Length());
else
aEndPos = theCommand.Location(C_BRACKET, 1, theCommand.Length());
aEndPos = aCommand.Location(C_BRACKET, 1, aCommand.Length());
}
//Replace last parameter (bettwen ',' character and ')' character)
else if(i == aTotalNbParams)
//Replace last parameter (bettwen ',' character and ')' character)
else if(i == aTotalNbParams)
{
aStartPos = theCommand.Location(i-1, COMMA, 1, theCommand.Length()) + 2;
aEndPos = theCommand.Location(C_BRACKET, 1, theCommand.Length());
aStartPos = aCommand.Location(i-1, COMMA, 1, aCommand.Length()) + 2;
aEndPos = aCommand.Location(C_BRACKET, 1, aCommand.Length());
}
//Replace other parameters (bettwen two ',' characters)
else if(i != 1 && i != aTotalNbParams )
//Replace other parameters (bettwen two ',' characters)
else if(i != aFirstParam && i != aTotalNbParams )
{
aStartPos = theCommand.Location(i-1, COMMA, 1, theCommand.Length()) + 2;
aEndPos = theCommand.Location(i, COMMA, 1, theCommand.Length());
aStartPos = aCommand.Location(i-1, COMMA, 1, aCommand.Length()) + 2;
aEndPos = aCommand.Location(i, COMMA, 1, aCommand.Length());
}
aVar = theCommand.SubString(aStartPos, aEndPos-1);
if(MYDEBUG)
cout<<"Current variable 1: '"<< aVar <<"'"<<endl;
aVar.RightAdjust();
aVar.LeftAdjust();
if( aCommand.Value( aStartPos ) == O_SQR_BRACKET )
aStartPos++;
if( aCommand.Value( aEndPos-1 ) == C_SQR_BRACKET )
aEndPos--;
if(MYDEBUG)
cout<<"aStartPos = "<<aStartPos<<", aEndPos = "<<aEndPos<<endl;
aVar = aCommand.SubString(aStartPos, aEndPos-1);
aVar.RightAdjust();
aVar.LeftAdjust();
if(MYDEBUG)
cout<<"Current variable 2: '"<< aVar <<"'"<<endl;
if(MYDEBUG)
cout<<"Variable: '"<< aVar <<"'"<<endl;
//If parameter is entry or 'None', skip it
if(theVariables.find(aVar) != theVariables.end() || aVar == PY_NULL)
continue;
//If parameter is entry or 'None', skip it
if(theVariables.find(aVar) != theVariables.end() || aVar == PY_NULL)
continue;
if(iVar >= aVariables.size())
continue;
aReplasedVar = aVariables[iVar].myVariable;
aReplasedVar = aVariables[iVar].myVariable;
if(aReplasedVar.IsEmpty()) {
if(aReplasedVar.IsEmpty()) {
iVar++;
continue;
}
if(aVariables[iVar].isVariable) {
aReplasedVar.InsertBefore(1,"\"");
aReplasedVar.InsertAfter(aReplasedVar.Length(),"\"");
}
aCommand.Remove(aStartPos, aEndPos - aStartPos);
aCommand.Insert(aStartPos, aReplasedVar);
iVar++;
continue;
}
if(aVariables[iVar].isVariable) {
aReplasedVar.InsertBefore(1,"\"");
aReplasedVar.InsertAfter(aReplasedVar.Length(),"\"");
}
theCommand.Remove(aStartCommandPos, aEndCommandPos - aStartCommandPos);
theCommand.Insert(aStartCommandPos, aCommand);
theCommand.Remove(aStartPos, aEndPos - aStartPos);
theCommand.Insert(aStartPos,aReplasedVar);
iVar++;
aCommandIndex++;
}
if (MYDEBUG)
cout<<"Command : "<<theCommand<<endl;
}

View File

@ -152,6 +152,7 @@ void GEOMBase_Skeleton::initSpinBox( SalomeApp_DoubleSpinBox* spinBox,
double min, double max,
double step, int decimals )
{
spinBox->setPrecision( decimals );
spinBox->setDecimals( decimals ); // it's necessary to set decimals before the range setting,
// by default Qt rounds boundaries to 2 decimals at setRange
spinBox->setRange( min, max );

View File

@ -274,31 +274,23 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::PublishInStudy(SALOMEDS::Study_ptr theStudy,
aNameAttrib->SetValue(aShapeName.ToCString());
//Set NoteBook variables used in the object creation
TCollection_AsciiString aParams(aShape->GetParameters());
if(!aParams.IsEmpty()) {
TCollection_AsciiString aVars;
int nbVars = 0;
int n = 1;
TCollection_AsciiString aParam = aParams.Token(":",1);
while( aParam.Length() != 0 ) {
aParam = aParams.Token(":",n);
if(theStudy->IsVariable(aParam.ToCString())){
aVars+=aParam;
nbVars++;
}
if(aParam.Length() == 0)
break;
aVars+=":";
n++;
}
aVars.Remove(aVars.Length(),1);
if(nbVars > 0 ) {
anAttr = aStudyBuilder->FindOrCreateAttribute(aResultSO, "AttributeString");
SALOMEDS::AttributeString_var aStringAttrib = SALOMEDS::AttributeString::_narrow(anAttr);
aStringAttrib->SetValue(aVars.ToCString());
bool isFound = false;
TCollection_AsciiString aVars;
SALOMEDS::ListOfStrings_var aListOfVars = theStudy->ParseVariables(aShape->GetParameters());
for(int i = 0, n = aListOfVars->length(); i < n; i++) {
if(theStudy->IsVariable(aListOfVars[i].in())) {
aVars += TCollection_AsciiString(aListOfVars[i].in());
isFound = true;
}
if(i != n-1)
aVars += ":";
}
if(isFound) {
anAttr = aStudyBuilder->FindOrCreateAttribute(aResultSO, "AttributeString");
SALOMEDS::AttributeString_var aStringAttrib = SALOMEDS::AttributeString::_narrow(anAttr);
aStringAttrib->SetValue(aVars.ToCString());
}
//Set a name of the GEOM object
aShape->SetName(theName);

View File

@ -117,6 +117,25 @@ def ParseParameters(*parameters):
Result.append(StringResult)
return Result
## Return list of variables value from salome notebook
## @ingroup l1_geompy_auxiliary
def ParseList(list):
Result = []
StringResult = ""
for parameter in list:
if isinstance(parameter,str) and notebook.isVariable(parameter):
Result.append(str(notebook.get(parameter)))
pass
else:
Result.append(str(parameter))
pass
StringResult = StringResult + str(parameter)
StringResult = StringResult + ":"
pass
StringResult = StringResult[:len(StringResult)-1]
return Result,StringResult
## Kinds of shape enumeration
# @ingroup l1_geompy_auxiliary
@ -992,8 +1011,10 @@ class geompyDC(GEOM._objref_GEOM_Gen):
# @ref tui_creation_prism "Example"
def MakePrismVecH(self, theBase, theVec, theH):
# Example: see GEOM_TestAll.py
theH,Parameters = ParseParameters(theH)
anObj = self.PrimOp.MakePrismVecH(theBase, theVec, theH)
RaiseIfFailed("MakePrismVecH", self.PrimOp)
anObj.SetParameters(Parameters)
return anObj
## Create a shape by extrusion of the base shape along the vector,
@ -1007,8 +1028,10 @@ class geompyDC(GEOM._objref_GEOM_Gen):
# @ref tui_creation_prism "Example"
def MakePrismVecH2Ways(self, theBase, theVec, theH):
# Example: see GEOM_TestAll.py
theH,Parameters = ParseParameters(theH)
anObj = self.PrimOp.MakePrismVecH2Ways(theBase, theVec, theH)
RaiseIfFailed("MakePrismVecH2Ways", self.PrimOp)
anObj.SetParameters(Parameters)
return anObj
## Create a shape by extrusion of the base shape along the dx, dy, dz direction
@ -1019,8 +1042,10 @@ class geompyDC(GEOM._objref_GEOM_Gen):
# @ref tui_creation_prism "Example"
def MakePrismDXDYDZ(self, theBase, theDX, theDY, theDZ):
# Example: see GEOM_TestAll.py
theDX,theDY,theDZ,Parameters = ParseParameters(theDX, theDY, theDZ)
anObj = self.PrimOp.MakePrismDXDYDZ(theBase, theDX, theDY, theDZ)
RaiseIfFailed("MakePrismDXDYDZ", self.PrimOp)
anObj.SetParameters(Parameters)
return anObj
## Create a shape by extrusion of the base shape along the dx, dy, dz direction
@ -1033,8 +1058,10 @@ class geompyDC(GEOM._objref_GEOM_Gen):
# @ref tui_creation_prism "Example"
def MakePrismDXDYDZ2Ways(self, theBase, theDX, theDY, theDZ):
# Example: see GEOM_TestAll.py
theDX,theDY,theDZ,Parameters = ParseParameters(theDX, theDY, theDZ)
anObj = self.PrimOp.MakePrismDXDYDZ2Ways(theBase, theDX, theDY, theDZ)
RaiseIfFailed("MakePrismDXDYDZ2Ways", self.PrimOp)
anObj.SetParameters(Parameters)
return anObj
## Create a shape by revolution of the base shape around the axis
@ -1048,14 +1075,18 @@ class geompyDC(GEOM._objref_GEOM_Gen):
# @ref tui_creation_revolution "Example"
def MakeRevolution(self, theBase, theAxis, theAngle):
# Example: see GEOM_TestAll.py
theAngle,Parameters = ParseParameters(theAngle)
anObj = self.PrimOp.MakeRevolutionAxisAngle(theBase, theAxis, theAngle)
RaiseIfFailed("MakeRevolutionAxisAngle", self.PrimOp)
anObj.SetParameters(Parameters)
return anObj
## The Same Revolution but in both ways forward&backward.
def MakeRevolution2Ways(self, theBase, theAxis, theAngle):
theAngle,Parameters = ParseParameters(theAngle)
anObj = self.PrimOp.MakeRevolutionAxisAngle2Ways(theBase, theAxis, theAngle)
RaiseIfFailed("MakeRevolutionAxisAngle2Ways", self.PrimOp)
anObj.SetParameters(Parameters)
return anObj
## Create a filling from the given compound of contours.
@ -1075,9 +1106,12 @@ class geompyDC(GEOM._objref_GEOM_Gen):
# @ref tui_creation_filling "Example"
def MakeFilling(self, theShape, theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter, isApprox=0):
# Example: see GEOM_TestAll.py
theMinDeg,theMaxDeg,theTol2D,theTol3D,theNbIter,Parameters = ParseParameters(theMinDeg, theMaxDeg,
theTol2D, theTol3D, theNbIter)
anObj = self.PrimOp.MakeFilling(theShape, theMinDeg, theMaxDeg,
theTol2D, theTol3D, theNbIter, isApprox)
RaiseIfFailed("MakeFilling", self.PrimOp)
anObj.SetParameters(Parameters)
return anObj
## Create a shell or solid passing through set of sections.Sections should be wires,edges or vertices.
@ -1789,8 +1823,13 @@ class geompyDC(GEOM._objref_GEOM_Gen):
# @ref tui_shape_processing "Example"
def ProcessShape(self,theShape, theOperators, theParameters, theValues):
# Example: see GEOM_TestHealing.py
theValues,Parameters = ParseList(theValues)
anObj = self.HealOp.ProcessShape(theShape, theOperators, theParameters, theValues)
RaiseIfFailed("ProcessShape", self.HealOp)
for string in (theOperators + theParameters):
Parameters = ":" + Parameters
pass
anObj.SetParameters(Parameters)
return anObj
## Remove faces from the given object (shape).
@ -1821,8 +1860,10 @@ class geompyDC(GEOM._objref_GEOM_Gen):
# @return New GEOM_Object, containing processed shape.
def Sew(self, theObject, theTolerance):
# Example: see MakeSewing() above
theTolerance,Parameters = ParseParameters(theTolerance)
anObj = self.HealOp.Sew(theObject, theTolerance)
RaiseIfFailed("Sew", self.HealOp)
anObj.SetParameters(Parameters)
return anObj
## Remove internal wires and edges from the given object (face).
@ -1879,8 +1920,10 @@ class geompyDC(GEOM._objref_GEOM_Gen):
# @ref tui_add_point_on_edge "Example"
def DivideEdge(self,theObject, theEdgeIndex, theValue, isByParameter):
# Example: see GEOM_TestHealing.py
theEdgeIndex,theValue,isByParameter,Parameters = ParseParameters(theEdgeIndex,theValue,isByParameter)
anObj = self.HealOp.DivideEdge(theObject, theEdgeIndex, theValue, isByParameter)
RaiseIfFailed("DivideEdge", self.HealOp)
anObj.SetParameters(Parameters)
return anObj
## Change orientation of the given object. Updates given shape.
@ -1927,9 +1970,11 @@ class geompyDC(GEOM._objref_GEOM_Gen):
# @ref tui_glue_faces "Example"
def MakeGlueFaces(self, theShape, theTolerance, doKeepNonSolids=True):
# Example: see GEOM_Spanner.py
theTolerance,Parameters = ParseParameters(theTolerance)
anObj = self.ShapesOp.MakeGlueFaces(theShape, theTolerance, doKeepNonSolids)
if anObj is None:
raise RuntimeError, "MakeGlueFaces : " + self.ShapesOp.GetErrorCode()
anObj.SetParameters(Parameters)
return anObj
## Find coincident faces in theShape for possible gluing.
@ -2409,8 +2454,10 @@ class geompyDC(GEOM._objref_GEOM_Gen):
# \n @ref swig_MakeFilletAll "Example 2"
def MakeFilletAll(self,theShape, theR):
# Example: see GEOM_TestOthers.py
theR,Parameters = ParseParameters(theR)
anObj = self.LocalOp.MakeFilletAll(theShape, theR)
RaiseIfFailed("MakeFilletAll", self.LocalOp)
anObj.SetParameters(Parameters)
return anObj
## Perform a fillet on the specified edges/faces of the given shape
@ -2424,6 +2471,7 @@ class geompyDC(GEOM._objref_GEOM_Gen):
# @ref tui_fillet "Example"
def MakeFillet(self,theShape, theR, theShapeType, theListShapes):
# Example: see GEOM_TestAll.py
theR,Parameters = ParseParameters(theR)
anObj = None
if theShapeType == ShapeType["EDGE"]:
anObj = self.LocalOp.MakeFilletEdges(theShape, theR, theListShapes)
@ -2431,10 +2479,12 @@ class geompyDC(GEOM._objref_GEOM_Gen):
else:
anObj = self.LocalOp.MakeFilletFaces(theShape, theR, theListShapes)
RaiseIfFailed("MakeFilletFaces", self.LocalOp)
anObj.SetParameters(Parameters)
return anObj
## The same that MakeFillet but with two Fillet Radius R1 and R2
def MakeFilletR1R2(self, theShape, theR1, theR2, theShapeType, theListShapes):
theR1,theR2,Parameters = ParseParameters(theR1,theR2)
anObj = None
if theShapeType == ShapeType["EDGE"]:
anObj = self.LocalOp.MakeFilletEdgesR1R2(theShape, theR1, theR2, theListShapes)
@ -2442,6 +2492,7 @@ class geompyDC(GEOM._objref_GEOM_Gen):
else:
anObj = self.LocalOp.MakeFilletFacesR1R2(theShape, theR1, theR2, theListShapes)
RaiseIfFailed("MakeFilletFacesR1R2", self.LocalOp)
anObj.SetParameters(Parameters)
return anObj
## Perform a symmetric chamfer on all edges of the given shape.
@ -2453,8 +2504,10 @@ class geompyDC(GEOM._objref_GEOM_Gen):
# \n @ref swig_MakeChamferAll "Example 2"
def MakeChamferAll(self,theShape, theD):
# Example: see GEOM_TestOthers.py
theD,Parameters = ParseParameters(theD)
anObj = self.LocalOp.MakeChamferAll(theShape, theD)
RaiseIfFailed("MakeChamferAll", self.LocalOp)
anObj.SetParameters(Parameters)
return anObj
## Perform a chamfer on edges, common to the specified faces,
@ -2469,15 +2522,24 @@ class geompyDC(GEOM._objref_GEOM_Gen):
# @ref tui_chamfer "Example"
def MakeChamferEdge(self,theShape, theD1, theD2, theFace1, theFace2):
# Example: see GEOM_TestAll.py
theD1,theD2,Parameters = ParseParameters(theD1,theD2)
anObj = self.LocalOp.MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2)
RaiseIfFailed("MakeChamferEdge", self.LocalOp)
anObj.SetParameters(Parameters)
return anObj
## The Same that MakeChamferEdge but with params theD is chamfer length and
# theAngle is Angle of chamfer (angle in radians)
# theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
def MakeChamferEdgeAD(self, theShape, theD, theAngle, theFace1, theFace2):
flag = False
if isinstance(theAngle,str):
flag = True
theD,theAngle,Parameters = ParseParameters(theD,theAngle)
if flag:
theAngle = theAngle*math.pi/180.0
anObj = self.LocalOp.MakeChamferEdgeAD(theShape, theD, theAngle, theFace1, theFace2)
RaiseIfFailed("MakeChamferEdgeAD", self.LocalOp)
anObj.SetParameters(Parameters)
return anObj
## Perform a chamfer on all edges of the specified faces,
@ -2494,17 +2556,26 @@ class geompyDC(GEOM._objref_GEOM_Gen):
# @ref tui_chamfer "Example"
def MakeChamferFaces(self,theShape, theD1, theD2, theFaces):
# Example: see GEOM_TestAll.py
theD1,theD2,Parameters = ParseParameters(theD1,theD2)
anObj = self.LocalOp.MakeChamferFaces(theShape, theD1, theD2, theFaces)
RaiseIfFailed("MakeChamferFaces", self.LocalOp)
anObj.SetParameters(Parameters)
return anObj
## The Same that MakeChamferFaces but with params theD is chamfer lenght and
# theAngle is Angle of chamfer (angle in radians)
# theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
#
# @ref swig_FilletChamfer "Example"
def MakeChamferFacesAD(self, theShape, theD, theAngle, theFaces):
flag = False
if isinstance(theAngle,str):
flag = True
theD,theAngle,Parameters = ParseParameters(theD,theAngle)
if flag:
theAngle = theAngle*math.pi/180.0
anObj = self.LocalOp.MakeChamferFacesAD(theShape, theD, theAngle, theFaces)
RaiseIfFailed("MakeChamferFacesAD", self.LocalOp)
anObj.SetParameters(Parameters)
return anObj
## Perform a chamfer on edges,
@ -2516,15 +2587,24 @@ class geompyDC(GEOM._objref_GEOM_Gen):
#
# @ref swig_FilletChamfer "Example"
def MakeChamferEdges(self, theShape, theD1, theD2, theEdges):
theD1,theD2,Parameters = ParseParameters(theD1,theD2)
anObj = self.LocalOp.MakeChamferEdges(theShape, theD1, theD2, theEdges)
RaiseIfFailed("MakeChamferEdges", self.LocalOp)
anObj.SetParameters(Parameters)
return anObj
## The Same that MakeChamferEdges but with params theD is chamfer lenght and
# theAngle is Angle of chamfer (angle in radians)
# theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
def MakeChamferEdgesAD(self, theShape, theD, theAngle, theEdges):
flag = False
if isinstance(theAngle,str):
flag = True
theD,theAngle,Parameters = ParseParameters(theD,theAngle)
if flag:
theAngle = theAngle*math.pi/180.0
anObj = self.LocalOp.MakeChamferEdgesAD(theShape, theD, theAngle, theEdges)
RaiseIfFailed("MakeChamferEdgesAD", self.LocalOp)
anObj.SetParameters(Parameters)
return anObj
## Shortcut to MakeChamferEdge() and MakeChamferFaces()
@ -2557,8 +2637,11 @@ class geompyDC(GEOM._objref_GEOM_Gen):
# @ref tui_archimede "Example"
def Archimede(self,theShape, theWeight, theWaterDensity, theMeshDeflection):
# Example: see GEOM_TestAll.py
theWeight,theWaterDensity,theMeshDeflection,Parameters = ParseParameters(
theWeight,theWaterDensity,theMeshDeflection)
anObj = self.LocalOp.MakeArchimede(theShape, theWeight, theWaterDensity, theMeshDeflection)
RaiseIfFailed("MakeArchimede", self.LocalOp)
anObj.SetParameters(Parameters)
return anObj
# end of l3_basic_op
@ -3197,8 +3280,12 @@ class geompyDC(GEOM._objref_GEOM_Gen):
# \n @ref swig_MakeBlockExplode "Example 2"
def MakeBlockExplode(self,theCompound, theMinNbFaces, theMaxNbFaces):
# Example: see GEOM_TestOthers.py
theMinNbFaces,theMaxNbFaces,Parameters = ParseParameters(theMinNbFaces,theMaxNbFaces)
aList = self.BlocksOp.ExplodeCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces)
RaiseIfFailed("ExplodeCompoundOfBlocks", self.BlocksOp)
for anObj in aList:
anObj.SetParameters(Parameters)
pass
return aList
## Find block, containing the given point inside its volume or on boundary.
@ -3250,8 +3337,10 @@ class geompyDC(GEOM._objref_GEOM_Gen):
# @ref tui_multi_transformation "Example"
def MakeMultiTransformation1D(self,Block, DirFace1, DirFace2, NbTimes):
# Example: see GEOM_Spanner.py
DirFace1,DirFace2,NbTimes,Parameters = ParseParameters(DirFace1,DirFace2,NbTimes)
anObj = self.BlocksOp.MakeMultiTransformation1D(Block, DirFace1, DirFace2, NbTimes)
RaiseIfFailed("MakeMultiTransformation1D", self.BlocksOp)
anObj.SetParameters(Parameters)
return anObj
## Multi-transformate block and glue the result.
@ -3265,9 +3354,12 @@ class geompyDC(GEOM._objref_GEOM_Gen):
def MakeMultiTransformation2D(self,Block, DirFace1U, DirFace2U, NbTimesU,
DirFace1V, DirFace2V, NbTimesV):
# Example: see GEOM_Spanner.py
DirFace1U,DirFace2U,NbTimesU,DirFace1V,DirFace2V,NbTimesV,Parameters = ParseParameters(
DirFace1U,DirFace2U,NbTimesU,DirFace1V,DirFace2V,NbTimesV)
anObj = self.BlocksOp.MakeMultiTransformation2D(Block, DirFace1U, DirFace2U, NbTimesU,
DirFace1V, DirFace2V, NbTimesV)
RaiseIfFailed("MakeMultiTransformation2D", self.BlocksOp)
anObj.SetParameters(Parameters)
return anObj
## Build all possible propagation groups.

View File

@ -336,9 +336,16 @@ GEOM::GEOM_IOperations_ptr GenerationGUI_FillingDlg::createOperation()
// function : isValid
// purpose :
//=================================================================================
bool GenerationGUI_FillingDlg::isValid( QString& )
bool GenerationGUI_FillingDlg::isValid( QString& msg )
{
return myOkCompound > 0;
bool ok = true;
ok = GroupPoints->SpinBox1->isValid( msg, !IsPreview() ) && ok;
ok = GroupPoints->SpinBox2->isValid( msg, !IsPreview() ) && ok;
ok = GroupPoints->SpinBox3->isValid( msg, !IsPreview() ) && ok;
ok = GroupPoints->SpinBox4->isValid( msg, !IsPreview() ) && ok;
ok = GroupPoints->SpinBox5->isValid( msg, !IsPreview() ) && ok;
return myOkCompound > 0 && ok;
}
//=================================================================================
@ -351,9 +358,18 @@ bool GenerationGUI_FillingDlg::execute( ObjectList& objects )
anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation() )->MakeFilling(
myCompound, myMinDeg, myMaxDeg, myTol2D, myTol3D, myNbIter, myIsApprox );
if ( !anObj->_is_nil() )
{
QStringList aParameters;
aParameters << GroupPoints->SpinBox1->text();
aParameters << GroupPoints->SpinBox2->text();
aParameters << GroupPoints->SpinBox3->text();
aParameters << GroupPoints->SpinBox4->text();
aParameters << GroupPoints->SpinBox5->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
objects.push_back( anObj._retn() );
}
return true;
}

View File

@ -476,6 +476,7 @@ void GenerationGUI_PrismDlg::SelectionIntoArgument()
QString aName = GEOMBase::GetName(aSelectedObject);
myBase = aSelectedObject;
myOkBase = true;
myEditCurrentArgument->setText(aName);
}
@ -619,14 +620,24 @@ GEOM::GEOM_IOperations_ptr GenerationGUI_PrismDlg::createOperation()
// function : isValid
// purpose :
//=================================================================================
bool GenerationGUI_PrismDlg::isValid (QString&)
bool GenerationGUI_PrismDlg::isValid (QString& msg)
{
bool ok = true;
if( getConstructorId() == 0 )
ok = GroupPoints->SpinBox_DX->isValid( msg, !IsPreview() ) && ok;
else if( getConstructorId() == 2 )
{
ok = GroupPoints3->SpinBox_DX->isValid( msg, !IsPreview() ) && ok;
ok = GroupPoints3->SpinBox_DY->isValid( msg, !IsPreview() ) && ok;
ok = GroupPoints3->SpinBox_DZ->isValid( msg, !IsPreview() ) && ok;
}
if (getConstructorId() == 0)
return (myOkBase && myOkVec); // by vector and height
return (myOkBase && myOkVec) && ok; // by vector and height
else if (getConstructorId() == 1)
return (myOkBase && myOkPnt1 && myOkPnt2); // by two points
else if (getConstructorId() == 2)
return true;
return myOkBase && ok;
return false;
}
@ -637,6 +648,7 @@ bool GenerationGUI_PrismDlg::isValid (QString&)
//=================================================================================
bool GenerationGUI_PrismDlg::execute (ObjectList& objects)
{
QStringList aParameters;
GEOM::GEOM_Object_var anObj;
switch (getConstructorId()) {
@ -649,6 +661,13 @@ bool GenerationGUI_PrismDlg::execute (ObjectList& objects)
anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->
MakePrismVecH2Ways(myBase, myVec, getHeight());
}
if (!anObj->_is_nil())
{
aParameters << GroupPoints->SpinBox_DX->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
}
break;
case 1:
if (!myBothway2) {
@ -673,6 +692,15 @@ bool GenerationGUI_PrismDlg::execute (ObjectList& objects)
anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->
MakePrismDXDYDZ2Ways(myBase, dx, dy, dz);
}
if (!anObj->_is_nil())
{
aParameters << GroupPoints3->SpinBox_DX->text();
aParameters << GroupPoints3->SpinBox_DY->text();
aParameters << GroupPoints3->SpinBox_DZ->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
}
break;
}

View File

@ -389,9 +389,10 @@ GEOM::GEOM_IOperations_ptr GenerationGUI_RevolDlg::createOperation()
// function : isValid
// purpose :
//=================================================================================
bool GenerationGUI_RevolDlg::isValid (QString&)
bool GenerationGUI_RevolDlg::isValid (QString& msg)
{
return myOkBase && myOkAxis;
bool ok = GroupPoints->SpinBox_DX->isValid( msg, !IsPreview() );
return myOkBase && myOkAxis && ok;
}
//=================================================================================
@ -412,7 +413,13 @@ bool GenerationGUI_RevolDlg::execute (ObjectList& objects)
}
if (!anObj->_is_nil())
{
QStringList aParameters;
aParameters << GroupPoints->SpinBox_DX->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
objects.push_back(anObj._retn());
}
return true;
}

View File

@ -248,9 +248,13 @@ GEOM::GEOM_IOperations_ptr OperationGUI_ArchimedeDlg::createOperation()
// function : isValid
// purpose :
//=================================================================================
bool OperationGUI_ArchimedeDlg::isValid( QString& )
bool OperationGUI_ArchimedeDlg::isValid( QString& msg )
{
return !myShape->_is_nil();
bool ok = true;
ok = GroupPoints->SpinBox_DX->isValid( msg, !IsPreview() ) && ok;
ok = GroupPoints->SpinBox_DY->isValid( msg, !IsPreview() ) && ok;
ok = GroupPoints->SpinBox_DZ->isValid( msg, !IsPreview() ) && ok;
return !myShape->_is_nil() && ok;
}
//=================================================================================
@ -269,7 +273,15 @@ bool OperationGUI_ArchimedeDlg::execute( ObjectList& objects )
getOperation() )->MakeArchimede( myShape, aWeight, aWaterDensity, aMeshDeflection );
if ( !anObj->_is_nil() )
{
QStringList aParameters;
aParameters << GroupPoints->SpinBox_DX->text();
aParameters << GroupPoints->SpinBox_DY->text();
aParameters << GroupPoints->SpinBox_DZ->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
objects.push_back( anObj._retn() );
}
return true;
}

View File

@ -84,7 +84,7 @@ OperationGUI_ChamferDlg::OperationGUI_ChamferDlg (GeometryGUI* theGeometryGUI, Q
int row = aLayout->rowCount();
aLayout->addWidget(new QLabel(tr("D"), myGrp1), row, 0);
aLayout->addWidget((mySpinBox[ SpinBox1 ] = new QDoubleSpinBox(myGrp1)), row++, 2);
aLayout->addWidget((mySpinBox[ SpinBox1 ] = new SalomeApp_DoubleSpinBox(myGrp1)), row++, 2);
aLayout->setRowStretch(row, 10);
// Create second group
@ -145,7 +145,7 @@ OperationGUI_ChamferDlg::OperationGUI_ChamferDlg (GeometryGUI* theGeometryGUI, Q
// Set range of spinboxes
double SpecificStep = 10.0;
QMap< int, QDoubleSpinBox* >::iterator anIter;
QMap< int, SalomeApp_DoubleSpinBox* >::iterator anIter;
for (anIter = mySpinBox.begin(); anIter != mySpinBox.end(); ++anIter) {
if (anIter.key() == SpinBox44 || anIter.key() == SpinBox34 || anIter.key() == SpinBox24)
initSpinBox(anIter.value(), 0.001, 89.999, 5, 0);
@ -175,7 +175,7 @@ OperationGUI_ChamferDlg::~OperationGUI_ChamferDlg()
void OperationGUI_ChamferDlg::Init()
{
// Set Initial values of spinboxes
QMap< int, QDoubleSpinBox* >::iterator anIter;
QMap< int, SalomeApp_DoubleSpinBox* >::iterator anIter;
for (anIter = mySpinBox.begin(); anIter != mySpinBox.end(); ++anIter)
anIter.value()->setValue(5);
@ -213,7 +213,7 @@ void OperationGUI_ChamferDlg::Init()
this, SLOT(LineEditReturnPressed()));
// spin boxes
QMap< int, QDoubleSpinBox* >::iterator anIterSpin;
QMap< int, SalomeApp_DoubleSpinBox* >::iterator anIterSpin;
for (anIterSpin = mySpinBox.begin(); anIterSpin != mySpinBox.end(); ++anIterSpin)
connect(anIterSpin.value(), SIGNAL(valueChanged(double)),
this, SLOT(ValueChangedInSpinBox(double)));
@ -249,26 +249,26 @@ void OperationGUI_ChamferDlg::ConstructorsClicked (int constructorId)
//disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
// Get values from previous widget
double D1 = 5, D2 = 5, D = 5, Angle = 5;
QString D1 = "5", D2 = "5", D = "5", Angle = "5";
if (myConstructorId == 0)
D1 = D2 = mySpinBox[ SpinBox1 ]->value();
D1 = D2 = mySpinBox[ SpinBox1 ]->text();
else if (myConstructorId == 1) {
D1 = mySpinBox[ SpinBox21 ]->value();
D2 = mySpinBox[ SpinBox22 ]->value();
D = mySpinBox[ SpinBox23 ]->value();
Angle = mySpinBox[ SpinBox24 ]->value();
D1 = mySpinBox[ SpinBox21 ]->text();
D2 = mySpinBox[ SpinBox22 ]->text();
D = mySpinBox[ SpinBox23 ]->text();
Angle = mySpinBox[ SpinBox24 ]->text();
}
else if (myConstructorId == 2) {
D1 = mySpinBox[ SpinBox31 ]->value();
D2 = mySpinBox[ SpinBox32 ]->value();
D = mySpinBox[ SpinBox33 ]->value();
Angle = mySpinBox[ SpinBox34 ]->value();
D1 = mySpinBox[ SpinBox31 ]->text();
D2 = mySpinBox[ SpinBox32 ]->text();
D = mySpinBox[ SpinBox33 ]->text();
Angle = mySpinBox[ SpinBox34 ]->text();
}
else if (myConstructorId == 3) {
D1 = mySpinBox[ SpinBox41 ]->value();
D2 = mySpinBox[ SpinBox42 ]->value();
D = mySpinBox[ SpinBox43 ]->value();
Angle = mySpinBox[ SpinBox44 ]->value();
D1 = mySpinBox[ SpinBox41 ]->text();
D2 = mySpinBox[ SpinBox42 ]->text();
D = mySpinBox[ SpinBox43 ]->text();
Angle = mySpinBox[ SpinBox44 ]->text();
}
myConstructorId = constructorId;
@ -279,38 +279,38 @@ void OperationGUI_ChamferDlg::ConstructorsClicked (int constructorId)
myGrp3->hide();
myGrp4->hide();
myGrp1->show();
mySpinBox[ SpinBox1 ]->setValue(D1);
mySpinBox[ SpinBox1 ]->setText(D1);
break;
case 1:
myGrp1->hide();
myGrp3->hide();
myGrp4->hide();
myGrp2->show();
mySpinBox[ SpinBox21 ]->setValue(D1);
mySpinBox[ SpinBox22 ]->setValue(D2);
mySpinBox[ SpinBox23 ]->setValue(D);
mySpinBox[ SpinBox24 ]->setValue(Angle);
mySpinBox[ SpinBox21 ]->setText(D1);
mySpinBox[ SpinBox22 ]->setText(D2);
mySpinBox[ SpinBox23 ]->setText(D);
mySpinBox[ SpinBox24 ]->setText(Angle);
break;
case 2:
myGrp1->hide();
myGrp2->hide();
myGrp4->hide();
myGrp3->show();
mySpinBox[ SpinBox31 ]->setValue(D1);
mySpinBox[ SpinBox32 ]->setValue(D2);
mySpinBox[ SpinBox32 ]->setValue(D2);
mySpinBox[ SpinBox33 ]->setValue(D);
mySpinBox[ SpinBox34 ]->setValue(Angle);
mySpinBox[ SpinBox31 ]->setText(D1);
mySpinBox[ SpinBox32 ]->setText(D2);
mySpinBox[ SpinBox32 ]->setText(D2);
mySpinBox[ SpinBox33 ]->setText(D);
mySpinBox[ SpinBox34 ]->setText(Angle);
break;
case 3:
myGrp1->hide();
myGrp2->hide();
myGrp3->hide();
myGrp4->show();
mySpinBox[ SpinBox41 ]->setValue(D1);
mySpinBox[ SpinBox42 ]->setValue(D2);
mySpinBox[ SpinBox43 ]->setValue(D);
mySpinBox[ SpinBox44 ]->setValue(Angle);
mySpinBox[ SpinBox41 ]->setText(D1);
mySpinBox[ SpinBox42 ]->setText(D2);
mySpinBox[ SpinBox43 ]->setText(D);
mySpinBox[ SpinBox44 ]->setText(Angle);
break;
default:
break;
@ -641,8 +641,8 @@ void OperationGUI_ChamferDlg::createRadioWg(const QString& theLbl1,
myRadioButton[ theRbId ] = new QRadioButton(theParent);
QLabel* lab1 = new QLabel(theLbl1, theParent);
QLabel* lab2 = new QLabel(theLbl2, theParent);
mySpinBox[ theSpin1Id ] = new QDoubleSpinBox(theParent);
mySpinBox[ theSpin2Id ] = new QDoubleSpinBox(theParent);
mySpinBox[ theSpin1Id ] = new SalomeApp_DoubleSpinBox(theParent);
mySpinBox[ theSpin2Id ] = new SalomeApp_DoubleSpinBox(theParent);
int row = theLayout->rowCount();
theLayout->addWidget(myRadioButton[ theRbId ], row, 0);
theLayout->addWidget(lab1, row, 2);
@ -738,14 +738,50 @@ GEOM::GEOM_IOperations_ptr OperationGUI_ChamferDlg::createOperation()
// function : isValid()
// purpose : Verify validity of input data
//=================================================================================
bool OperationGUI_ChamferDlg::isValid (QString&)
bool OperationGUI_ChamferDlg::isValid (QString& msg)
{
bool ok = true;
switch (getConstructorId())
{
case 0: return !myShape->_is_nil();
case 1: return !myShape->_is_nil() && myFace[ Face1 ] > 0 && myFace[ Face2 ] > 0;
case 2: return !myShape->_is_nil() && myFaces.Extent() > 0;
case 3: return !myShape->_is_nil() && myEdges.Extent() > 0;
case 0:
ok = mySpinBox[ SpinBox1 ]->isValid( msg, !IsPreview() );
return !myShape->_is_nil() && ok;
case 1:
if (myRadioButton[ RadioButton21 ]->isChecked())
{
ok = mySpinBox[ SpinBox21 ]->isValid( msg, !IsPreview() ) && ok;
ok = mySpinBox[ SpinBox22 ]->isValid( msg, !IsPreview() ) && ok;
}
else
{
ok = mySpinBox[ SpinBox23 ]->isValid( msg, !IsPreview() ) && ok;
ok = mySpinBox[ SpinBox24 ]->isValid( msg, !IsPreview() ) && ok;
}
return !myShape->_is_nil() && myFace[ Face1 ] > 0 && myFace[ Face2 ] > 0 && ok;
case 2:
if (myRadioButton[ RadioButton31 ]->isChecked())
{
ok = mySpinBox[ SpinBox31 ]->isValid( msg, !IsPreview() ) && ok;
ok = mySpinBox[ SpinBox32 ]->isValid( msg, !IsPreview() ) && ok;
}
else
{
ok = mySpinBox[ SpinBox33 ]->isValid( msg, !IsPreview() ) && ok;
ok = mySpinBox[ SpinBox34 ]->isValid( msg, !IsPreview() ) && ok;
}
return !myShape->_is_nil() && myFaces.Extent() > 0 && ok;
case 3:
if (myRadioButton[ RadioButton41 ]->isChecked())
{
ok = mySpinBox[ SpinBox41 ]->isValid( msg, !IsPreview() ) && ok;
ok = mySpinBox[ SpinBox42 ]->isValid( msg, !IsPreview() ) && ok;
}
else
{
ok = mySpinBox[ SpinBox43 ]->isValid( msg, !IsPreview() ) && ok;
ok = mySpinBox[ SpinBox44 ]->isValid( msg, !IsPreview() ) && ok;
}
return !myShape->_is_nil() && myEdges.Extent() > 0 && ok;
default: return false;
}
}
@ -756,6 +792,7 @@ bool OperationGUI_ChamferDlg::isValid (QString&)
//=================================================================================
bool OperationGUI_ChamferDlg::execute (ObjectList& objects)
{
QStringList aParameters;
GEOM::GEOM_Object_var anObj;
bool flag = (myRadioButton[ RadioButton21 ]->isChecked() &&
myRadioButton[ RadioButton31 ]->isChecked() &&
@ -765,6 +802,8 @@ bool OperationGUI_ChamferDlg::execute (ObjectList& objects)
if (anId == 0) {
anObj = GEOM::GEOM_ILocalOperations::_narrow(getOperation())->
MakeChamferAll(myShape, mySpinBox[ SpinBox1 ]->value());
if (!anObj->_is_nil())
aParameters << mySpinBox[ SpinBox1 ]->text();
}
else if (anId == 1) {
if (flag) {
@ -774,6 +813,11 @@ bool OperationGUI_ChamferDlg::execute (ObjectList& objects)
mySpinBox[ SpinBox22 ]->value(),
myFace[ Face1 ],
myFace[ Face2 ]);
if (!anObj->_is_nil())
{
aParameters << mySpinBox[ SpinBox21 ]->text();
aParameters << mySpinBox[ SpinBox22 ]->text();
}
}
else {
anObj = GEOM::GEOM_ILocalOperations::_narrow(getOperation())->
@ -782,6 +826,11 @@ bool OperationGUI_ChamferDlg::execute (ObjectList& objects)
mySpinBox[ SpinBox24 ]->value() * PI180,
myFace[ Face1 ],
myFace[ Face2 ]);
if (!anObj->_is_nil())
{
aParameters << mySpinBox[ SpinBox23 ]->text();
aParameters << mySpinBox[ SpinBox24 ]->text();
}
}
}
else if (anId == 2)
@ -792,18 +841,30 @@ bool OperationGUI_ChamferDlg::execute (ObjectList& objects)
for (int i = 1, n = myFaces.Extent(); i <= n; i++)
anArray[ i - 1 ] = myFaces(i);
if (flag)
anObj = GEOM::GEOM_ILocalOperations::_narrow(getOperation())->
MakeChamferFaces(myShape,
mySpinBox[ SpinBox31 ]->value(),
mySpinBox[ SpinBox32 ]->value(),
anArray);
else
anObj = GEOM::GEOM_ILocalOperations::_narrow(getOperation())->
MakeChamferFacesAD(myShape,
mySpinBox[ SpinBox33 ]->value(),
mySpinBox[ SpinBox34 ]->value() * PI180,
anArray);
if (flag) {
anObj = GEOM::GEOM_ILocalOperations::_narrow(getOperation())->
MakeChamferFaces(myShape,
mySpinBox[ SpinBox31 ]->value(),
mySpinBox[ SpinBox32 ]->value(),
anArray);
if (!anObj->_is_nil())
{
aParameters << mySpinBox[ SpinBox31 ]->text();
aParameters << mySpinBox[ SpinBox32 ]->text();
}
}
else {
anObj = GEOM::GEOM_ILocalOperations::_narrow(getOperation())->
MakeChamferFacesAD(myShape,
mySpinBox[ SpinBox33 ]->value(),
mySpinBox[ SpinBox34 ]->value() * PI180,
anArray);
if (!anObj->_is_nil())
{
aParameters << mySpinBox[ SpinBox33 ]->text();
aParameters << mySpinBox[ SpinBox34 ]->text();
}
}
}
else if (anId == 3) {
GEOM::ListOfLong_var anArray = new GEOM::ListOfLong;
@ -816,6 +877,11 @@ bool OperationGUI_ChamferDlg::execute (ObjectList& objects)
mySpinBox[ SpinBox41 ]->value(),
mySpinBox[ SpinBox42 ]->value(),
anArray);
if (!anObj->_is_nil())
{
aParameters << mySpinBox[ SpinBox41 ]->text();
aParameters << mySpinBox[ SpinBox42 ]->text();
}
}
else {
anObj = GEOM::GEOM_ILocalOperations::_narrow(getOperation())->
@ -823,11 +889,19 @@ bool OperationGUI_ChamferDlg::execute (ObjectList& objects)
mySpinBox[ SpinBox43 ]->value(),
mySpinBox[ SpinBox44 ]->value() * PI180,
anArray);
if (!anObj->_is_nil())
{
aParameters << mySpinBox[ SpinBox43 ]->text();
aParameters << mySpinBox[ SpinBox44 ]->text();
}
}
}
if (!anObj->_is_nil())
{
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
objects.push_back(anObj._retn());
}
return true;
}

View File

@ -32,7 +32,7 @@
#include <QMap>
class QDoubleSpinBox;
class SalomeApp_DoubleSpinBox;
class QGroupBox;
class QPushButton;
class QLineEdit;
@ -106,7 +106,7 @@ private:
QMap< int, QPushButton* > mySelBtn;
QMap< int, QLineEdit* > mySelName;
QMap< int, QDoubleSpinBox* > mySpinBox;
QMap< int, SalomeApp_DoubleSpinBox* > mySpinBox;
QMap< int, QRadioButton* > myRadioButton;
};

View File

@ -217,19 +217,19 @@ void OperationGUI_FilletDlg::ConstructorsClicked (int constructorId)
return;
// Get radius from previous widget
double R = 5, R1 = 5, R2 = 5;
QString R = "5", R1 = "5", R2 = "5";
if (myConstructorId == 0) {
R = Group1->SpinBox_DX->value();
R = Group1->SpinBox_DX->text();
}
else if (myConstructorId == 1) {
R = Group2->SpinBox_DX->value();
R1 = Group2->SpinBox_DY->value();
R2 = Group2->SpinBox_DZ->value();
R = Group2->SpinBox_DX->text();
R1 = Group2->SpinBox_DY->text();
R2 = Group2->SpinBox_DZ->text();
}
else {
R = Group3->SpinBox_DX->value();
R1 = Group3->SpinBox_DY->value();
R2 = Group3->SpinBox_DZ->value();
R = Group3->SpinBox_DX->text();
R1 = Group3->SpinBox_DY->text();
R2 = Group3->SpinBox_DZ->text();
}
myConstructorId = constructorId;
@ -239,23 +239,23 @@ void OperationGUI_FilletDlg::ConstructorsClicked (int constructorId)
Group2->hide();
Group3->hide();
Group1->show();
Group1->SpinBox_DX->setValue(R);
Group1->SpinBox_DX->setText(R);
break;
case 1:
Group1->hide();
Group3->hide();
Group2->show();
Group2->SpinBox_DX->setValue(R);
Group2->SpinBox_DY->setValue(R1);
Group2->SpinBox_DZ->setValue(R2);
Group2->SpinBox_DX->setText(R);
Group2->SpinBox_DY->setText(R1);
Group2->SpinBox_DZ->setText(R2);
break;
case 2:
Group1->hide();
Group2->hide();
Group3->show();
Group3->SpinBox_DX->setValue(R);
Group3->SpinBox_DY->setValue(R1);
Group3->SpinBox_DZ->setValue(R2);
Group3->SpinBox_DX->setText(R);
Group3->SpinBox_DY->setText(R1);
Group3->SpinBox_DZ->setText(R2);
break;
default:
break;
@ -585,13 +585,32 @@ GEOM::GEOM_IOperations_ptr OperationGUI_FilletDlg::createOperation()
// function : isValid()
// purpose : Verify validity of input data
//=================================================================================
bool OperationGUI_FilletDlg::isValid (QString&)
bool OperationGUI_FilletDlg::isValid (QString& msg)
{
bool ok = true;
switch (getConstructorId())
{
case 0: return !myShape->_is_nil();
case 1: return !myShape->_is_nil() && myEdges.Extent() > 0;
case 2: return !myShape->_is_nil() && myFaces.Extent() > 0;
case 0:
ok = Group1->SpinBox_DX->isValid( msg, !IsPreview() ) && ok;
return !myShape->_is_nil() && ok;
case 1:
if (Group2->RadioButton1->isChecked())
ok = Group2->SpinBox_DX->isValid( msg, !IsPreview() );
else
{
ok = Group2->SpinBox_DY->isValid( msg, !IsPreview() ) && ok;
ok = Group2->SpinBox_DZ->isValid( msg, !IsPreview() ) && ok;
}
return !myShape->_is_nil() && myEdges.Extent() > 0 && ok;
case 2:
if (Group3->RadioButton1->isChecked())
ok = Group3->SpinBox_DX->isValid( msg, !IsPreview() );
else
{
ok = Group3->SpinBox_DY->isValid( msg, !IsPreview() ) && ok;
ok = Group3->SpinBox_DZ->isValid( msg, !IsPreview() ) && ok;
}
return !myShape->_is_nil() && myFaces.Extent() > 0 && ok;
default: return false;
}
}
@ -602,12 +621,16 @@ bool OperationGUI_FilletDlg::isValid (QString&)
//=================================================================================
bool OperationGUI_FilletDlg::execute (ObjectList& objects)
{
QStringList aParameters;
GEOM::GEOM_Object_var anObj;
int anId = getConstructorId();
if (anId == 0)
if (anId == 0) {
anObj = GEOM::GEOM_ILocalOperations::_narrow(getOperation())->
MakeFilletAll(myShape, getRadius());
if (!anObj->_is_nil())
aParameters << Group1->SpinBox_DX->text();
}
else if (anId == 1) {
GEOM::ListOfLong_var aList = new GEOM::ListOfLong;
aList->length(myEdges.Extent());
@ -616,14 +639,25 @@ bool OperationGUI_FilletDlg::execute (ObjectList& objects)
aList[ i - 1 ] = myEdges(i);
if (Group2->RadioButton1->isChecked())
{
anObj = GEOM::GEOM_ILocalOperations::_narrow(getOperation())->
MakeFilletEdges(myShape, getRadius(), aList);
if (!anObj->_is_nil())
aParameters << Group2->SpinBox_DX->text();
}
else
{
anObj = GEOM::GEOM_ILocalOperations::_narrow(getOperation())->
MakeFilletEdgesR1R2(myShape,
Group2->SpinBox_DY->value(),
Group2->SpinBox_DZ->value(),
aList);
if (!anObj->_is_nil())
{
aParameters << Group2->SpinBox_DY->text();
aParameters << Group2->SpinBox_DZ->text();
}
}
}
else if (anId == 2) {
GEOM::ListOfLong_var aList = new GEOM::ListOfLong;
@ -635,17 +669,27 @@ bool OperationGUI_FilletDlg::execute (ObjectList& objects)
if (Group3->RadioButton1->isChecked()) {
anObj = GEOM::GEOM_ILocalOperations::_narrow(getOperation())->
MakeFilletFaces(myShape, getRadius(), aList);
if (!anObj->_is_nil())
aParameters << Group3->SpinBox_DX->text();
}
else {
anObj = GEOM::GEOM_ILocalOperations::_narrow(getOperation())->
MakeFilletFacesR1R2(myShape,
Group3->SpinBox_DY->value(),
Group3->SpinBox_DZ->value(), aList);
if (!anObj->_is_nil())
{
aParameters << Group3->SpinBox_DY->text();
aParameters << Group3->SpinBox_DZ->text();
}
}
}
if (!anObj->_is_nil())
{
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
objects.push_back(anObj._retn());
}
return true;
}

View File

@ -433,6 +433,10 @@ bool PrimitiveGUI_BoxDlg::isValid (QString& msg)
ok = GroupDimensions->SpinBox_DX->isValid( msg, !IsPreview() ) && ok;
ok = GroupDimensions->SpinBox_DY->isValid( msg, !IsPreview() ) && ok;
ok = GroupDimensions->SpinBox_DZ->isValid( msg, !IsPreview() ) && ok;
ok = fabs( GroupDimensions->SpinBox_DX->value() ) > Precision::Confusion() && ok;
ok = fabs( GroupDimensions->SpinBox_DY->value() ) > Precision::Confusion() && ok;
ok = fabs( GroupDimensions->SpinBox_DZ->value() ) > Precision::Confusion() && ok;
}
return getConstructorId() == 0 ? !(myPoint1->_is_nil() || myPoint2->_is_nil()) : ok;
}
@ -463,13 +467,14 @@ bool PrimitiveGUI_BoxDlg::execute (ObjectList& objects)
double z = GroupDimensions->SpinBox_DZ->value();
anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->MakeBoxDXDYDZ(x, y, z);
QStringList aParameters;
aParameters << GroupDimensions->SpinBox_DX->text();
aParameters << GroupDimensions->SpinBox_DY->text();
aParameters << GroupDimensions->SpinBox_DZ->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
if (!anObj->_is_nil())
{
QStringList aParameters;
aParameters << GroupDimensions->SpinBox_DX->text();
aParameters << GroupDimensions->SpinBox_DY->text();
aParameters << GroupDimensions->SpinBox_DZ->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
}
res = true;
}
break;

View File

@ -451,6 +451,7 @@ bool PrimitiveGUI_ConeDlg::isValid (QString& msg)
ok = GroupDimensions->SpinBox_DY->isValid( msg, !IsPreview() ) && ok;
ok = GroupDimensions->SpinBox_DZ->isValid( msg, !IsPreview() ) && ok;
}
ok = fabs( getHeight() ) > Precision::Confusion() && ok;
return getConstructorId() == 0 ? !(myPoint->_is_nil() || myDir->_is_nil()) && ok : ok;
}
@ -469,26 +470,28 @@ bool PrimitiveGUI_ConeDlg::execute (ObjectList& objects)
if (!CORBA::is_nil(myPoint) && !CORBA::is_nil(myDir)) {
anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->
MakeConePntVecR1R2H(myPoint, myDir, getRadius1(), getRadius2(), getHeight());
QStringList aParameters;
aParameters << GroupPoints->SpinBox_DX->text();
aParameters << GroupPoints->SpinBox_DY->text();
aParameters << GroupPoints->SpinBox_DZ->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
if (!anObj->_is_nil())
{
QStringList aParameters;
aParameters << GroupPoints->SpinBox_DX->text();
aParameters << GroupPoints->SpinBox_DY->text();
aParameters << GroupPoints->SpinBox_DZ->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
}
res = true;
}
break;
case 1:
anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->
MakeConeR1R2H(getRadius1(), getRadius2(), getHeight());
QStringList aParameters;
aParameters << GroupDimensions->SpinBox_DX->text();
aParameters << GroupDimensions->SpinBox_DY->text();
aParameters << GroupDimensions->SpinBox_DZ->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
if (!anObj->_is_nil())
{
QStringList aParameters;
aParameters << GroupDimensions->SpinBox_DX->text();
aParameters << GroupDimensions->SpinBox_DY->text();
aParameters << GroupDimensions->SpinBox_DZ->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
}
res = true;
break;
}

View File

@ -445,6 +445,7 @@ bool PrimitiveGUI_CylinderDlg::isValid (QString& msg)
ok = GroupDimensions->SpinBox_DX->isValid( msg, !IsPreview() ) && ok;
ok = GroupDimensions->SpinBox_DY->isValid( msg, !IsPreview() ) && ok;
}
ok = fabs( getHeight() ) > Precision::Confusion() && ok;
return getConstructorId() == 0 ? !(myPoint->_is_nil() || myDir->_is_nil()) && ok : ok;
}
@ -463,24 +464,26 @@ bool PrimitiveGUI_CylinderDlg::execute (ObjectList& objects)
if (!CORBA::is_nil(myPoint) && !CORBA::is_nil(myDir)) {
anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->
MakeCylinderPntVecRH(myPoint, myDir, getRadius(), getHeight());
QStringList aParameters;
aParameters << GroupPoints->SpinBox_DX->text();
aParameters << GroupPoints->SpinBox_DY->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
if (!anObj->_is_nil())
{
QStringList aParameters;
aParameters << GroupPoints->SpinBox_DX->text();
aParameters << GroupPoints->SpinBox_DY->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
}
res = true;
}
break;
case 1:
anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->
MakeCylinderRH(getRadius(), getHeight());
QStringList aParameters;
aParameters << GroupDimensions->SpinBox_DX->text();
aParameters << GroupDimensions->SpinBox_DY->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
if (!anObj->_is_nil())
{
QStringList aParameters;
aParameters << GroupDimensions->SpinBox_DX->text();
aParameters << GroupDimensions->SpinBox_DY->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
}
res = true;
break;
}

View File

@ -575,19 +575,21 @@ bool PrimitiveGUI_DiskDlg::execute (ObjectList& objects)
case 0:
anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->
MakeDiskR(getRadius(), myOrientationType);
aParameters << GroupDimensions->SpinBox_DX->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
if (!anObj->_is_nil())
{
aParameters << GroupDimensions->SpinBox_DX->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
}
res = true;
break;
case 1:
anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->
MakeDiskPntVecR(myPoint, myDir, getRadius());
aParameters << GroupPntVecR->SpinBox_DX->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
if (!anObj->_is_nil())
{
aParameters << GroupPntVecR->SpinBox_DX->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
}
res = true;
break;
case 2:

View File

@ -497,11 +497,12 @@ bool PrimitiveGUI_FaceDlg::execute (ObjectList& objects)
anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->
MakeFaceHW(GroupDimensions->SpinBox_DX->value(),
GroupDimensions->SpinBox_DY->value(), myOrientationType);
aParameters << GroupDimensions->SpinBox_DX->text();
aParameters << GroupDimensions->SpinBox_DY->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
if (!anObj->_is_nil())
{
aParameters << GroupDimensions->SpinBox_DX->text();
aParameters << GroupDimensions->SpinBox_DY->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
}
res = true;
break;
case 1:
@ -511,11 +512,12 @@ bool PrimitiveGUI_FaceDlg::execute (ObjectList& objects)
else if (GroupType->RadioButton2->isChecked())
anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->
MakeFaceObjHW(myFace, GroupPlane->SpinBox_DX->value(), GroupPlane->SpinBox_DY->value());
aParameters << GroupPlane->SpinBox_DX->text();
aParameters << GroupPlane->SpinBox_DY->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
if (!anObj->_is_nil())
{
aParameters << GroupPlane->SpinBox_DX->text();
aParameters << GroupPlane->SpinBox_DY->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
}
res = true;
break;
}

View File

@ -401,11 +401,12 @@ bool PrimitiveGUI_SphereDlg::execute( ObjectList& objects )
{
if ( !CORBA::is_nil( myPoint ) ) {
anObj = GEOM::GEOM_I3DPrimOperations::_narrow( getOperation() )->MakeSpherePntR( myPoint, getRadius() );
QStringList aParameters;
aParameters << GroupPoints->SpinBox_DX->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
if (!anObj->_is_nil())
{
QStringList aParameters;
aParameters << GroupPoints->SpinBox_DX->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
}
res = true;
}
break;
@ -413,11 +414,12 @@ bool PrimitiveGUI_SphereDlg::execute( ObjectList& objects )
case 1 :
{
anObj = GEOM::GEOM_I3DPrimOperations::_narrow( getOperation() )->MakeSphereR( getRadius() );
QStringList aParameters;
aParameters << GroupDimensions->SpinBox_DX->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
if (!anObj->_is_nil())
{
QStringList aParameters;
aParameters << GroupDimensions->SpinBox_DX->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
}
res = true;
break;
}

View File

@ -460,24 +460,26 @@ bool PrimitiveGUI_TorusDlg::execute (ObjectList& objects)
if (!CORBA::is_nil(myPoint) && !CORBA::is_nil(myDir)) {
anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->
MakeTorusPntVecRR(myPoint, myDir, getRadius1(), getRadius2());
QStringList aParameters;
aParameters << GroupPoints->SpinBox_DX->text();
aParameters << GroupPoints->SpinBox_DY->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
if (!anObj->_is_nil())
{
QStringList aParameters;
aParameters << GroupPoints->SpinBox_DX->text();
aParameters << GroupPoints->SpinBox_DY->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
}
res = true;
}
break;
case 1:
anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->
MakeTorusRR(getRadius1(), getRadius2());
QStringList aParameters;
aParameters << GroupDimensions->SpinBox_DX->text();
aParameters << GroupDimensions->SpinBox_DY->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
if (!anObj->_is_nil())
{
QStringList aParameters;
aParameters << GroupDimensions->SpinBox_DX->text();
aParameters << GroupDimensions->SpinBox_DY->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
}
res = true;
break;
}

View File

@ -83,7 +83,7 @@ RepairGUI_DivideEdgeDlg::RepairGUI_DivideEdgeDlg( GeometryGUI* theGeometryGUI, Q
myIsParameterGr->addButton( rb2, 1 );
rb1->setChecked( true );
myValEdt = new QDoubleSpinBox( GroupPoints->Box );
myValEdt = new SalomeApp_DoubleSpinBox( GroupPoints->Box );
initSpinBox( myValEdt, 0., 1., 0.1, 3 );
myValEdt->setValue( 0.5 );
QLabel* aLbl1 = new QLabel( tr( "GEOM_VALUE" ), GroupPoints->Box );
@ -338,9 +338,9 @@ GEOM::GEOM_IOperations_ptr RepairGUI_DivideEdgeDlg::createOperation()
// function : isValid
// purpose :
//=================================================================================
bool RepairGUI_DivideEdgeDlg::isValid( QString& )
bool RepairGUI_DivideEdgeDlg::isValid( QString& msg )
{
return !myObject->_is_nil();
return !myObject->_is_nil() && myValEdt->isValid( msg, !IsPreview() );
}
//=================================================================================
@ -353,7 +353,15 @@ bool RepairGUI_DivideEdgeDlg::execute( ObjectList& objects )
( myObject, -1, myValEdt->value(), getIsByParameter() );
bool aResult = !anObj->_is_nil();
if ( aResult )
{
QStringList aParameters;
aParameters << "";
aParameters << myValEdt->text();
aParameters << "";
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
objects.push_back( anObj._retn() );
}
return aResult;
}

View File

@ -29,7 +29,7 @@
#include <GEOMBase_Skeleton.h>
class DlgRef_1SelExt;
class QDoubleSpinBox;
class SalomeApp_DoubleSpinBox;
class QButtonGroup;
//=================================================================================
@ -63,7 +63,7 @@ private:
DlgRef_1SelExt* GroupPoints;
QButtonGroup* myIsParameterGr;
QDoubleSpinBox* myValEdt;
SalomeApp_DoubleSpinBox* myValEdt;
protected slots:
void ClickOnOk();

View File

@ -81,7 +81,7 @@ RepairGUI_GlueDlg::RepairGUI_GlueDlg( GeometryGUI* theGeometryGUI, QWidget* pare
GroupPoints->LineEdit1->setReadOnly( true );
QLabel* aTolLab = new QLabel( tr( "GEOM_TOLERANCE" ), GroupPoints->Box );
myTolEdt = new QDoubleSpinBox( GroupPoints->Box );
myTolEdt = new SalomeApp_DoubleSpinBox( GroupPoints->Box );
initSpinBox( myTolEdt, 0, 100, 1e-7, 7 );
myTolEdt->setValue( DEFAULT_TOLERANCE_VALUE );
@ -98,7 +98,7 @@ RepairGUI_GlueDlg::RepairGUI_GlueDlg( GeometryGUI* theGeometryGUI, QWidget* pare
GroupPoints2->LineEdit1->setReadOnly( true );
QLabel* aTolLab2 = new QLabel( tr( "GEOM_TOLERANCE" ), GroupPoints2->Box );
myTolEdt2 = new QDoubleSpinBox( GroupPoints2->Box );
myTolEdt2 = new SalomeApp_DoubleSpinBox( GroupPoints2->Box );
initSpinBox( myTolEdt2, 0, 100, 1e-7, 7 );
myTolEdt2->setValue( DEFAULT_TOLERANCE_VALUE );
@ -380,17 +380,22 @@ GEOM::GEOM_IOperations_ptr RepairGUI_GlueDlg::createOperation()
// function : isValid
// purpose :
//=================================================================================
bool RepairGUI_GlueDlg::isValid( QString& )
bool RepairGUI_GlueDlg::isValid( QString& msg )
{
bool ok = true;
double v = 0;
switch ( getConstructorId() )
{
case 0:
v = myTolEdt->value(); break;
v = myTolEdt->value();
ok = myTolEdt->isValid( msg, !IsPreview() );
break;
case 1:
v = myTolEdt2->value(); break;
v = myTolEdt2->value();
ok = myTolEdt2->isValid( msg, !IsPreview() );
break;
}
return !myObject->_is_nil() && ( IsPreview() || v > 0. );
return !myObject->_is_nil() && ( IsPreview() || v > 0. ) && ok;
}
//=================================================================================
@ -409,7 +414,13 @@ bool RepairGUI_GlueDlg::execute( ObjectList& objects )
( getOperation() )->MakeGlueFaces( myObject, myTolEdt->value(), true );
aResult = !anObj->_is_nil();
if ( aResult )
{
QStringList aParameters;
aParameters << myTolEdt->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
objects.push_back( anObj._retn() );
}
break;
}
case 1:
@ -456,7 +467,13 @@ bool RepairGUI_GlueDlg::execute( ObjectList& objects )
aResult = !anObj->_is_nil();
if ( aResult )
{
QStringList aParameters;
aParameters << myTolEdt2->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
objects.push_back( anObj._retn() );
}
// Remove from engine useless objects
clearTemporary();

View File

@ -29,7 +29,7 @@
#include <GEOMBase_Skeleton.h>
class DlgRef_1SelExt;
class QDoubleSpinBox;
class SalomeApp_DoubleSpinBox;
class QPushButton;
class QCheckBox;
@ -73,8 +73,8 @@ private:
DlgRef_1SelExt* GroupPoints;
DlgRef_1SelExt* GroupPoints2;
QDoubleSpinBox* myTolEdt;
QDoubleSpinBox* myTolEdt2;
SalomeApp_DoubleSpinBox* myTolEdt;
SalomeApp_DoubleSpinBox* myTolEdt2;
QPushButton* myDetectBtn;
QCheckBox* mySubShapesChk;

View File

@ -74,7 +74,7 @@ RepairGUI_SewingDlg::RepairGUI_SewingDlg( GeometryGUI* theGeometryGUI, QWidget*
QGridLayout* aLay = new QGridLayout( GroupPoints->Box );
aLay->setMargin( 0 ); aLay->setSpacing( 6 );
myTolEdt = new QDoubleSpinBox( GroupPoints->Box );
myTolEdt = new SalomeApp_DoubleSpinBox( GroupPoints->Box );
initSpinBox( myTolEdt, 0, 100, 1e-7, 10 );
myTolEdt->setValue( DEFAULT_TOLERANCE_VALUE );
QLabel* aLbl1 = new QLabel( tr( "GEOM_TOLERANCE" ), GroupPoints->Box );
@ -263,10 +263,10 @@ GEOM::GEOM_IOperations_ptr RepairGUI_SewingDlg::createOperation()
// function : isValid
// purpose :
//=================================================================================
bool RepairGUI_SewingDlg::isValid( QString& )
bool RepairGUI_SewingDlg::isValid( QString& msg )
{
myClosed = -1;
return !myObject->_is_nil() && ( IsPreview() || myTolEdt->value() > 0. );
return !myObject->_is_nil() && ( IsPreview() || myTolEdt->value() > 0. ) && myTolEdt->isValid( msg, !IsPreview() );
}
//=================================================================================
@ -297,7 +297,13 @@ bool RepairGUI_SewingDlg::execute( ObjectList& objects )
GEOM::GEOM_Object_var anObj = GEOM::GEOM_IHealingOperations::_narrow( getOperation() )->Sew( myObject, myTolEdt->value() );
aResult = !anObj->_is_nil();
if ( aResult )
{
QStringList aParameters;
aParameters << myTolEdt->text();
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
objects.push_back( anObj._retn() );
}
}
return aResult;

View File

@ -29,7 +29,7 @@
#include <GEOMBase_Skeleton.h>
class DlgRef_1SelExt;
class QDoubleSpinBox;
class SalomeApp_DoubleSpinBox;
class QPushButton;
//=================================================================================
@ -59,7 +59,7 @@ private:
GEOM::GEOM_Object_var myObject;
DlgRef_1SelExt* GroupPoints;
QDoubleSpinBox* myTolEdt;
SalomeApp_DoubleSpinBox* myTolEdt;
QPushButton* myFreeBoundBtn;
int myClosed; // Number of free closed boundaries detected. Calculated in execute(), used in onDetect().

View File

@ -31,6 +31,8 @@
#include <GEOMImpl_Types.hxx>
#include <SalomeApp_Application.h>
#include <SalomeApp_DoubleSpinBox.h>
#include <SalomeApp_IntSpinBox.h>
#include <LightApp_SelectionMgr.h>
#include <SUIT_Session.h>
#include <SUIT_ResourceMgr.h>
@ -123,9 +125,9 @@ void RepairGUI_ShapeProcessDlg::init()
QGridLayout* aLay = new QGridLayout( w );
aLay->setMargin( 9 ); aLay->setSpacing( 6 );
myFixShapeTol3D = new QDoubleSpinBox( w );
myFixShapeTol3D = new SalomeApp_DoubleSpinBox( w );
initSpinBox( myFixShapeTol3D, 0, 100, 1e-7, 10 );
myFixShapeMaxTol3D = new QDoubleSpinBox( w );
myFixShapeMaxTol3D = new SalomeApp_DoubleSpinBox( w );
initSpinBox( myFixShapeMaxTol3D, 0, 100, 1e-7, 10 );
aLay->addWidget( new QLabel( tr( "GEOM_3D_TOLERANCE" ), w ), 0, 0 );
@ -140,7 +142,7 @@ void RepairGUI_ShapeProcessDlg::init()
QGridLayout* aLay = new QGridLayout( w );
aLay->setMargin( 9 ); aLay->setSpacing( 6 );
myFixFaceSizeTol = new QDoubleSpinBox( w );
myFixFaceSizeTol = new SalomeApp_DoubleSpinBox( w );
initSpinBox( myFixFaceSizeTol, 0, 100, 1e-7, 10 );
aLay->addWidget( new QLabel( tr( "GEOM_TOLERANCE" ), w ), 0, 0 );
@ -153,7 +155,7 @@ void RepairGUI_ShapeProcessDlg::init()
QGridLayout* aLay = new QGridLayout( w );
aLay->setMargin( 9 ); aLay->setSpacing( 6 );
myDropSmallEdgesTol3D = new QDoubleSpinBox( w );
myDropSmallEdgesTol3D = new SalomeApp_DoubleSpinBox( w );
initSpinBox( myDropSmallEdgesTol3D, 0, 100, 1e-7, 10 );
aLay->addWidget( new QLabel( tr( "GEOM_3D_TOLERANCE" ), w ), 0, 0 );
@ -166,9 +168,9 @@ void RepairGUI_ShapeProcessDlg::init()
QGridLayout* aLay = new QGridLayout( w );
aLay->setMargin( 9 ); aLay->setSpacing( 6 );
mySplitAngleAngle = new QDoubleSpinBox( w );
mySplitAngleAngle = new SalomeApp_DoubleSpinBox( w );
initSpinBox( mySplitAngleAngle, 0, 360, 1 );
mySplitAngleMaxTol = new QDoubleSpinBox( w );
mySplitAngleMaxTol = new SalomeApp_DoubleSpinBox( w );
initSpinBox( mySplitAngleMaxTol, 0, 100, 1e-7, 10 );
aLay->addWidget( new QLabel( tr( "GEOM_ANGLE_1" ), w ), 0, 0 );
@ -183,7 +185,7 @@ void RepairGUI_ShapeProcessDlg::init()
QGridLayout* aLay = new QGridLayout( w );
aLay->setMargin( 9 ); aLay->setSpacing( 6 );
mySplitClosedFacesNum = new QSpinBox( w );
mySplitClosedFacesNum = new SalomeApp_IntSpinBox( w );
aLay->addWidget( new QLabel( tr( "GEOM_NUM_SPLIT_POINTS" ), w ), 0, 0 );
aLay->addWidget( mySplitClosedFacesNum, 0, 1 );
@ -195,7 +197,7 @@ void RepairGUI_ShapeProcessDlg::init()
QGridLayout* aLay = new QGridLayout( w );
aLay->setMargin( 9 ); aLay->setSpacing( 6 );
mySplitContTol3D = new QDoubleSpinBox( w );
mySplitContTol3D = new SalomeApp_DoubleSpinBox( w );
initSpinBox( mySplitContTol3D, 0, 100, 1e-7, 10 );
mySplitContSurfCont = new QComboBox( w );
mySplitContSurfCont->addItems( aContinueties );
@ -220,14 +222,14 @@ void RepairGUI_ShapeProcessDlg::init()
myBSpline3DCurveChk = new QCheckBox( tr("GEOM_3D_CURVE_MODE"), w );
myBSpline2DCurveChk = new QCheckBox( tr("GEOM_2D_CURVE_MODE"), w );
myBSplineTol3D = new QDoubleSpinBox( w );
myBSplineTol3D = new SalomeApp_DoubleSpinBox( w );
initSpinBox( myBSplineTol3D, 0, 100, 1e-7, 10 );
myBSplineTol2D = new QDoubleSpinBox( w );
myBSplineTol2D = new SalomeApp_DoubleSpinBox( w );
initSpinBox( myBSplineTol2D, 0, 100, 1e-7, 10 );
myBSplineDegree = new QSpinBox( w );
myBSplineSegments = new QSpinBox( w );
myBSplineDegree = new SalomeApp_IntSpinBox( w );
myBSplineSegments = new SalomeApp_IntSpinBox( w );
myBSpline2DCont = new QComboBox( w );
myBSpline2DCont->addItems( aContinueties );
myBSpline3DCont = new QComboBox( w );
@ -264,7 +266,7 @@ void RepairGUI_ShapeProcessDlg::init()
myToBezier3DCurveChk = new QCheckBox( tr("GEOM_3D_CURVE_MODE"), w );
myToBezier2DCurveChk = new QCheckBox( tr("GEOM_2D_CURVE_MODE"), w );
myToBezierMaxTol = new QDoubleSpinBox( w );
myToBezierMaxTol = new SalomeApp_DoubleSpinBox( w );
initSpinBox( myToBezierMaxTol, 0, 100, 1e-7, 10 );
aLay->addWidget( myToBezierSurfModeChk, 0, 0 );
@ -280,7 +282,7 @@ void RepairGUI_ShapeProcessDlg::init()
QGridLayout* aLay = new QGridLayout( w );
aLay->setMargin( 9 ); aLay->setSpacing( 6 );
mySameParameterTol3D = new QDoubleSpinBox( w );
mySameParameterTol3D = new SalomeApp_DoubleSpinBox( w );
initSpinBox( mySameParameterTol3D, 0, 100, 1e-7, 10 );
aLay->addWidget( new QLabel( tr( "GEOM_3D_TOLERANCE" ), w ), 0, 0 );
@ -508,10 +510,10 @@ void RepairGUI_ShapeProcessDlg::loadDefaults()
void RepairGUI_ShapeProcessDlg::setValue( QWidget* theControl, const QString& theValue )
{
if ( theControl && !theValue.isNull() ) {
if ( qobject_cast<QDoubleSpinBox*>( theControl ) )
qobject_cast<QDoubleSpinBox*>( theControl )->setValue( theValue.toDouble() );
else if ( qobject_cast<QSpinBox*>( theControl ) )
qobject_cast<QSpinBox*>( theControl )->setValue( theValue.toInt() );
if ( qobject_cast<SalomeApp_DoubleSpinBox*>( theControl ) )
qobject_cast<SalomeApp_DoubleSpinBox*>( theControl )->setValue( theValue.toDouble() );
else if ( qobject_cast<SalomeApp_IntSpinBox*>( theControl ) )
qobject_cast<SalomeApp_IntSpinBox*>( theControl )->setValue( theValue.toInt() );
else if ( qobject_cast<QComboBox*>( theControl ) )
qobject_cast<QComboBox*>( theControl )->setEditText( theValue );
else if ( qobject_cast<QCheckBox*>( theControl ) )
@ -526,10 +528,10 @@ void RepairGUI_ShapeProcessDlg::setValue( QWidget* theControl, const QString& th
QString RepairGUI_ShapeProcessDlg::getValue( QWidget* theControl ) const
{
if ( theControl ) {
if ( qobject_cast<QDoubleSpinBox*>( theControl ) )
return QString::number( qobject_cast<QDoubleSpinBox*>( theControl )->value() );
else if ( qobject_cast<QSpinBox*>( theControl ) )
return QString::number( qobject_cast<QSpinBox*>( theControl )->value() );
if ( qobject_cast<SalomeApp_DoubleSpinBox*>( theControl ) )
return QString::number( qobject_cast<SalomeApp_DoubleSpinBox*>( theControl )->value() );
else if ( qobject_cast<SalomeApp_IntSpinBox*>( theControl ) )
return QString::number( qobject_cast<SalomeApp_IntSpinBox*>( theControl )->value() );
else if ( qobject_cast<QComboBox*>( theControl ) )
return qobject_cast<QComboBox*>( theControl )->currentText();
else if ( qobject_cast<QCheckBox*>( theControl ) )
@ -538,6 +540,21 @@ QString RepairGUI_ShapeProcessDlg::getValue( QWidget* theControl ) const
return 0;
}
//=================================================================================
// function : getText()
// purpose : get text in the proper way
//=================================================================================
QString RepairGUI_ShapeProcessDlg::getText( QWidget* theControl ) const
{
if ( theControl ) {
if ( qobject_cast<SalomeApp_DoubleSpinBox*>( theControl ) )
return qobject_cast<SalomeApp_DoubleSpinBox*>( theControl )->text();
else if ( qobject_cast<SalomeApp_IntSpinBox*>( theControl ) )
return qobject_cast<SalomeApp_IntSpinBox*>( theControl )->text();
}
return QString::null;
}
//=================================================================================
// function : createOperation
// purpose :
@ -553,6 +570,22 @@ GEOM::GEOM_IOperations_ptr RepairGUI_ShapeProcessDlg::createOperation()
//=================================================================================
bool RepairGUI_ShapeProcessDlg::isValid( QString& msg )
{
bool ok = true;
QMapIterator<QString,QStringList> aMapIter( myValMap );
while( aMapIter.hasNext() ) {
aMapIter.next();
const QStringList& aList = aMapIter.value();
QListIterator<QString> aListIter( aList );
while( aListIter.hasNext() ) {
const QString& aParam = aListIter.next();
QWidget* aControl = getControl( aParam );
if ( qobject_cast<SalomeApp_DoubleSpinBox*>( aControl ) )
ok = qobject_cast<SalomeApp_DoubleSpinBox*>( aControl )->isValid( msg, !IsPreview() ) && ok;
else if ( qobject_cast<SalomeApp_IntSpinBox*>( aControl ) )
ok = qobject_cast<SalomeApp_IntSpinBox*>( aControl )->isValid( msg, !IsPreview() ) && ok;
}
}
bool error = false;
GEOM::string_array_var anOperators = getActiveOperators();
if ( !myObjects->length() ) {
@ -565,7 +598,7 @@ bool RepairGUI_ShapeProcessDlg::isValid( QString& msg )
msg += tr( "ERROR_NO_OPERATORS" );
error = true;
}
return !error;
return !error && ok;
}
//=================================================================================
@ -603,7 +636,20 @@ bool RepairGUI_ShapeProcessDlg::execute( ObjectList& objects )
if ( anObj->_is_nil() )
anErrorObjNames << GEOMBase::GetName( obj );
else
{
QStringList aParameters;
for ( int i = 0; i < anOperators->length(); i++ )
aParameters << QString( anOperators[i] );
for ( int i = 0; i < aParams->length(); i++ )
aParameters << QString( aParams[i] );
aParameters << getTexts( aParams );
anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
objects.push_back( anObj._retn() );
}
}
if ( !anErrorObjNames.empty() )
@ -764,6 +810,27 @@ GEOM::string_array* RepairGUI_ShapeProcessDlg::getValues( const GEOM::string_arr
return aValues._retn();
}
//=================================================================================
// function : getTexts
// purpose :
//=================================================================================
QStringList RepairGUI_ShapeProcessDlg::getTexts( const GEOM::string_array& theParams )
{
QStringList aTexts;
for ( int i = 0; i < theParams.length(); i++ ) {
QWidget* aCtrl = getControl( (const char*)theParams[i] );
if ( aCtrl )
{
QString aText = getText( aCtrl );
if( !aText.isNull() )
aTexts.append( aText );
}
}
return aTexts;
}
//=================================================================================
// function : initSelection
// purpose : set selection of ALL shape types except vertexes

View File

@ -31,8 +31,8 @@
#include <QMap>
class DlgRef_1Sel;
class QSpinBox;
class QDoubleSpinBox;
class SalomeApp_IntSpinBox;
class SalomeApp_DoubleSpinBox;
class QComboBox;
class QCheckBox;
class QListWidget;
@ -64,12 +64,15 @@ private:
GEOM::string_array* getParameters( const GEOM::string_array& );
GEOM::string_array* getValues( const GEOM::string_array& );
QStringList getTexts( const GEOM::string_array& );
void enterEvent( QEvent* );
QWidget* getControl( const QString& );
void setValue( QWidget*, const QString& ); // initialize the given control in the proper way
// (analize its class and convert the value string)
QString getValue( QWidget* ) const; // retrieve value of the control in the proper way
QString getText( QWidget* ) const; // retrieve text of the control (for spin-boxes only)
//QDict<QString,QWidget*> myCtrlMap; // map of controls (values) of parameters
void initParamsValues(); // initialize the data structures
@ -84,38 +87,38 @@ private:
DlgRef_1Sel* mySelectWdgt;
QListWidget* myOpList;
QDoubleSpinBox* myFixShapeTol3D;
QDoubleSpinBox* myFixShapeMaxTol3D;
SalomeApp_DoubleSpinBox* myFixShapeTol3D;
SalomeApp_DoubleSpinBox* myFixShapeMaxTol3D;
QDoubleSpinBox* myFixFaceSizeTol;
SalomeApp_DoubleSpinBox* myFixFaceSizeTol;
QDoubleSpinBox* myDropSmallEdgesTol3D;
SalomeApp_DoubleSpinBox* myDropSmallEdgesTol3D;
QDoubleSpinBox* mySplitAngleAngle;
QDoubleSpinBox* mySplitAngleMaxTol;
SalomeApp_DoubleSpinBox* mySplitAngleAngle;
SalomeApp_DoubleSpinBox* mySplitAngleMaxTol;
QSpinBox* mySplitClosedFacesNum;
SalomeApp_IntSpinBox* mySplitClosedFacesNum;
QDoubleSpinBox* mySplitContTol3D;
SalomeApp_DoubleSpinBox* mySplitContTol3D;
QComboBox* mySplitContSurfCont;
QComboBox* mySplitContCurvCont;
QCheckBox* myBSplineSurfModeChk;
QCheckBox* myBSpline3DCurveChk;
QCheckBox* myBSpline2DCurveChk;
QDoubleSpinBox* myBSplineTol3D;
QDoubleSpinBox* myBSplineTol2D;
QSpinBox* myBSplineDegree;
QSpinBox* myBSplineSegments;
SalomeApp_DoubleSpinBox* myBSplineTol3D;
SalomeApp_DoubleSpinBox* myBSplineTol2D;
SalomeApp_IntSpinBox* myBSplineDegree;
SalomeApp_IntSpinBox* myBSplineSegments;
QComboBox* myBSpline2DCont;
QComboBox* myBSpline3DCont;
QCheckBox* myToBezierSurfModeChk;
QCheckBox* myToBezier3DCurveChk;
QCheckBox* myToBezier2DCurveChk;
QDoubleSpinBox* myToBezierMaxTol;
SalomeApp_DoubleSpinBox* myToBezierMaxTol;
QDoubleSpinBox* mySameParameterTol3D;
SalomeApp_DoubleSpinBox* mySameParameterTol3D;
private slots:
void onOk();