#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 <Config_PropManager.h>
+
#include <QWidget>
#include <QLayout>
#include <QPainter>
#include <sstream>
+const double tolerance = 1e-7;
+
+
namespace ModuleBase_Tools {
//******************************************************************
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 (fabs(theSpin->value() - theValue) < tolerance)
+ return;
+ bool isBlocked = theSpin->blockSignals(true);
+ theSpin->setValue(theValue);
+ theSpin->blockSignals(isBlocked);
+}
+
+void setSpinValue(ModuleBase_ParamSpinBox* theSpin, double theValue)
+{
+ if (fabs(theSpin->value() - theValue) < tolerance)
+ return;
bool isBlocked = theSpin->blockSignals(true);
theSpin->setValue(theValue);
theSpin->blockSignals(isBlocked);
aFeatureStr.append("[disabled]");
if (aRes->isConcealed())
aFeatureStr.append("[concealed]");
+ if (ModelAPI_Tools::hasSubResults(aRes))
+ aFeatureStr.append("[hasSubResults]");
aFeature = ModelAPI_Feature::feature(aRes);
}
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());
}
MyShapeTypes["shell"] = TopAbs_SHELL;
MyShapeTypes["solid"] = TopAbs_SOLID;
MyShapeTypes["solids"] = TopAbs_SOLID;
+ MyShapeTypes["objects"] = TopAbs_SHAPE;
}
QString aType = theType.toLower();
if (MyShapeTypes.contains(aType))
return TopAbs_SHAPE;
}
-void checkObjects(const QObjectPtrList& theObjects, bool& hasResult, bool& hasFeature, bool& hasParameter)
+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);
hasResult = (aResult.get() != NULL);
hasFeature = (aFeature.get() != NULL);
hasParameter = (aConstruction.get() != NULL);
- if (hasFeature && hasResult && hasParameter)
+ if (hasFeature)
+ hasSubFeature = (ModelAPI_Tools::compositeOwner(aFeature) != NULL);
+ if (hasFeature && hasResult && hasParameter && hasSubFeature)
break;
}
}
+void setDefaultDeviationCoefficient(const TopoDS_Shape& theShape,
+ const Handle(Prs3d_Drawer)& theDrawer)
+{
+ if (!theShape.IsNull() && theShape.ShapeType() == TopAbs_EDGE)
+ theDrawer->SetDeviationCoefficient(1.e-4);
+}
+
+Quantity_Color color(const std::string& theSection,
+ const std::string& theName,
+ const std::string& theDefault)
+{
+ std::vector<int> aColor = Config_PropManager::color(theSection, theName, theDefault);
+ return Quantity_Color(aColor[0] / 255., aColor[1] / 255., aColor[2] / 255., Quantity_TOC_RGB);
+}
}