// Author: Vitaly Smetannikov
#include "ModuleBase_Tools.h"
+#include <ModuleBase_ParamSpinBox.h>
#include <ModelAPI_Result.h>
#include <ModelAPI_Data.h>
#include <ModelAPI_Attribute.h>
#include <ModelAPI_AttributeRefAttr.h>
+#include <ModelAPI_ResultParameter.h>
+#include <ModelAPI_ResultCompSolid.h>
+#include <ModelAPI_Tools.h>
#include <GeomDataAPI_Point2D.h>
#include <Events_Error.h>
#include <QBitmap>
#include <QDoubleSpinBox>
+#include <sstream>
+
namespace ModuleBase_Tools {
//******************************************************************
return QPixmap::fromImage(aResult);
}
+void setSpinText(ModuleBase_ParamSpinBox* theSpin, const QString& theText)
+{
+ if (theSpin->text() == theText)
+ return;
+ // In order to avoid extra text setting because it will
+ // reset cursor position in control
+ bool isBlocked = theSpin->blockSignals(true);
+ theSpin->setText(theText);
+ theSpin->blockSignals(isBlocked);
+}
+
void setSpinValue(QDoubleSpinBox* theSpin, double theValue)
{
+ if (theSpin->value() == theValue)
+ return;
+ bool isBlocked = theSpin->blockSignals(true);
+ theSpin->setValue(theValue);
+ theSpin->blockSignals(isBlocked);
+}
+
+void setSpinValue(ModuleBase_ParamSpinBox* theSpin, double theValue)
+{
+ //if (theSpin->value() == theValue)
+ // return;
bool isBlocked = theSpin->blockSignals(true);
theSpin->setValue(theValue);
theSpin->blockSignals(isBlocked);
QString objectInfo(const ObjectPtr& theObj, const bool isUseAttributesInfo)
{
+ QString aFeatureStr = "feature";
+ if (!theObj.get())
+ return aFeatureStr;
+
+ std::ostringstream aPtrStr;
+ aPtrStr << "[" << theObj.get() << "]";
+
ResultPtr aRes = std::dynamic_pointer_cast<ModelAPI_Result>(theObj);
FeaturePtr aFeature = std::dynamic_pointer_cast<ModelAPI_Feature>(theObj);
- QString aFeatureStr = "feature";
if(aRes.get()) {
- aFeatureStr.append("(Result)");
+ aFeatureStr.append(QString("(result%1)").arg(aPtrStr.str().c_str()).toStdString() .c_str());
+ if (aRes->isDisabled())
+ aFeatureStr.append("[disabled]");
+ if (aRes->isConcealed())
+ aFeatureStr.append("[concealed]");
+
aFeature = ModelAPI_Feature::feature(aRes);
}
+ else
+ aFeatureStr.append(aPtrStr.str().c_str());
+
if (aFeature.get()) {
aFeatureStr.append(QString(": %1").arg(aFeature->getKind().c_str()).toStdString().c_str());
- if (aFeature->data().get() && aFeature->data()->isValid())
+ if (aFeature->data()->isValid()) {
aFeatureStr.append(QString(", name=%1").arg(aFeature->data()->name().c_str()).toStdString()
.c_str());
+ }
if (isUseAttributesInfo) {
std::list<AttributePtr> anAttrs = aFeature->data()->attributes("");
std::list<AttributePtr>::const_iterator anIt = anAttrs.begin(), aLast = anAttrs.end();
return TopAbs_SHAPE;
}
+bool isSubResult(ObjectPtr theObject)
+{
+ bool aSubResult = false;
+
+ //ResultCompSolidPtr aCompsolidResult = std::dynamic_pointer_cast<ModelAPI_ResultCompSolid>(aResult);
+ return aSubResult;
+}
+
+void checkObjects(const QObjectPtrList& theObjects, bool& hasResult, bool& hasFeature, bool& hasParameter, bool& hasSubFeature)
+{
+ hasResult = false;
+ hasFeature = false;
+ hasParameter = false;
+ hasSubFeature = false;
+ foreach(ObjectPtr aObj, theObjects) {
+ FeaturePtr aFeature = std::dynamic_pointer_cast<ModelAPI_Feature>(aObj);
+ ResultPtr aResult = std::dynamic_pointer_cast<ModelAPI_Result>(aObj);
+ ResultParameterPtr aConstruction = std::dynamic_pointer_cast<ModelAPI_ResultParameter>(aResult);
+
+ bool aSubResult = isSubResult(aResult);
+
+ /// results of compsolids are not processed in SHOW/HIDE/WIREFRAME operations
+ hasResult = (aResult.get() != NULL && !aSubResult);
+ hasFeature = (aFeature.get() != NULL);
+ hasParameter = (aConstruction.get() != NULL);
+ if (hasFeature)
+ hasSubFeature = (ModelAPI_Tools::compositeOwner(aFeature) != NULL);
+ if (hasFeature && hasResult && hasParameter && hasSubFeature)
+ break;
+ }
+}
+
+double defaultDeviationCoefficient()
+{
+ // this value is chosen by performance check. Test case is an extrusion on sketch circle.
+ return 1.e-3;
+}
}