-// Copyright (C) 2014-2019 CEA/DEN, EDF R&D
+// Copyright (C) 2014-2024 CEA, EDF
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
#include <TopoDS.hxx>
#include <TopoDS_Vertex.hxx>
#include <TopExp_Explorer.hxx>
-#include <Prs3d_Root.hxx>
-
+#include <Graphic3d_Text.hxx>
+#include <Graphic3d_AspectText3d.hxx>
IMPLEMENT_STANDARD_RTTIEXT(PartSet_FieldStepPrs, ViewerData_AISShape);
#define POINT_SIZE 8
-void emptyDeleter(ModelAPI_ResultField* theF)
+void emptyDeleter(ModelAPI_ResultField* /*theF*/)
{
// Do nothing
}
case ModelAPI_AttributeTables::INTEGER:
aFieldStepData << aVal.myInt;
break;
+ default: // [to avoid compilation warning]
+ break;
}
}
}
QList<double> aShapeData;
double aRangeMin = aFieldStepData.first(), aRangeMax = aFieldStepData.last();
- for (int aRow = 0; aRow < aRows - 1; aRow++) {
- double aNorm = 0;
- int aBaseIndex = aRow * aCols;
- for (int aCol = 0; aCol < aCols; aCol++) {
- int anIndex = aCol + aBaseIndex;
- double aValue = aFieldStepData.at(anIndex);
- aNorm += aValue * aValue;
+ if (aCols == 1) {
+ for (int aRow = 0; aRow < aRows - aStart; aRow++) {
+ double aValue = aFieldStepData.at(aRow);
+ aRangeMin = Min(aRangeMin, aValue);
+ aRangeMax = Max(aRangeMax, aValue);
+ aShapeData << aValue;
+ }
+ }
+ else {
+ for (int aRow = 0; aRow < aRows - aStart; aRow++) {
+ double aNorm = 0;
+ int aBaseIndex = aRow * aCols;
+ for (int aCol = 0; aCol < aCols; aCol++) {
+ int anIndex = aCol + aBaseIndex;
+ double aValue = aFieldStepData.at(anIndex);
+ aNorm += aValue * aValue;
+ }
+ aNorm = pow(aNorm, 0.5);
+ aRangeMin = Min(aRangeMin, aNorm);
+ aRangeMax = Max(aRangeMax, aNorm);
+ aShapeData << aNorm;
}
- aNorm = pow(aNorm, 0.5);
- aRangeMin = Min(aRangeMin, aNorm);
- aRangeMax = Max(aRangeMax, aNorm);
- aShapeData << aNorm;
}
theMin = aRangeMin;
theMax = aRangeMax;
{
double aMin, aMax;
QList<double> aShapeData = range(aMin, aMax);
- int aNbIntertvals = aResMgr->integerValue("Viewer", "scalar_bar_nb_intervals", 20);
AttributeSelectionListPtr aSelList =
aData->selectionList(CollectionPlugin_Field::SELECTED_ID());
- for (int i = 0; i < aSelList->size(); i++) {
- AttributeSelectionPtr aSelection = aSelList->value(i);
- GeomShapePtr aShapePtr = aSelection->value();
- TopoDS_Shape aShape = aShapePtr->impl<TopoDS_Shape>();
- double aValue = aShapeData.at(i);
+ std::string aTypeStr = aSelList->selectionType();
+ if (aTypeStr == "part") {
Quantity_Color aColor;
- if (AIS_ColorScale::FindColor(aValue, aMin, aMax, aNbIntertvals, aColor))
- SetCustomColor(aShape, aColor);
+ if (AIS_ColorScale::FindColor(aMin, aMin, aMax, 1, aColor)) {
+ SetColor(aColor);
+ }
+ }
+ else {
+ int aNbIntertvals = aResMgr->integerValue("Viewer", "scalar_bar_nb_intervals", 20);
+ for (int i = 0; i < aSelList->size(); i++) {
+ AttributeSelectionPtr aSelection = aSelList->value(i);
+ GeomShapePtr aShapePtr = aSelection->value();
+ TopoDS_Shape aShape = aShapePtr->impl<TopoDS_Shape>();
+ double aValue = aShapeData.at(i);
+ Quantity_Color aColor;
+ if (AIS_ColorScale::FindColor(aValue, aMin, aMax, aNbIntertvals, aColor))
+ SetCustomColor(aShape, aColor);
+ }
}
}
break;
QStringList aValues = strings();
AttributeSelectionListPtr aSelList =
aData->selectionList(CollectionPlugin_Field::SELECTED_ID());
- Handle(Graphic3d_Group) aGroup = Prs3d_Root::NewGroup(thePrs);
+ Handle(Graphic3d_Group) aGroup = thePrs->NewGroup();
for (int i = 0; i < aSelList->size(); i++) {
AttributeSelectionPtr aSelection = aSelList->value(i);
GeomShapePtr aShapePtr = aSelection->value();
TopoDS_Shape aShape = aShapePtr->impl<TopoDS_Shape>();
gp_Pnt aCenter;
if (computeMassCenter(aShape, aCenter)) {
- Graphic3d_Vertex aVertex(aCenter.X(), aCenter.Y(), aCenter.Z());
-
Handle(Graphic3d_AspectText3d) anAspectText3d = new Graphic3d_AspectText3d();
anAspectText3d->SetStyle(Aspect_TOST_ANNOTATION);
anAspectText3d->SetColor(aLabelColor);
int aT = aResMgr->integerValue("Viewer", "scalar_bar_text_height", 14);
QString aString = aValues.at(i);
- aGroup->Text(aString.toUtf8().constData(), aVertex, aT);
+ Handle(Graphic3d_Text) aText = new Graphic3d_Text(aT);
+ aText->SetText(aString.toUtf8().constData());
+ aText->SetPosition(aCenter);
+ aGroup->AddText(aText);
}
}
}
}
}
QList<double> aShapeData;
- double aRangeMin = aFieldStepData.first(), aRangeMax = aFieldStepData.last();
for (int aRow = 0; aRow < aRows - 1; aRow++) {
double aNorm = 0;
int aBaseIndex = aRow * aCols;
if (!triangulation.IsNull() && triangulation->HasUVNodes()) {
gp_XY C(0, 0);
double A = 0;
- const TColgp_Array1OfPnt2d& uvArray = triangulation->UVNodes();
- const Poly_Array1OfTriangle& trias = triangulation->Triangles();
int n1, n2, n3;
- for (int iT = trias.Lower(); iT <= trias.Upper(); ++iT) {
- trias(iT).Get(n1, n2, n3);
- const gp_Pnt2d& uv1 = uvArray(n1);
- const gp_Pnt2d& uv2 = uvArray(n2);
- const gp_Pnt2d& uv3 = uvArray(n3);
+ for (int iT = 1; iT <= triangulation->NbTriangles(); ++iT) {
+ triangulation->Triangle(iT).Get(n1, n2, n3);
+ const gp_Pnt2d& uv1 = triangulation->UVNode(n1);
+ const gp_Pnt2d& uv2 = triangulation->UVNode(n2);
+ const gp_Pnt2d& uv3 = triangulation->UVNode(n3);
double a = 0.5 * sqrt((uv1.X() - uv3.X()) * (uv2.Y() - uv1.Y()) -
(uv1.X() - uv2.X()) * (uv3.Y() - uv1.Y()));
C += (uv1.XY() + uv2.XY() + uv3.XY()) / 3. * a;