-// Copyright (C) 2018-2020 CEA/DEN, EDF R&D
+// Copyright (C) 2018-2022 CEA/DEN, EDF R&D
//
// 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_Edge.hxx>
#include <TopoDS_Shape.hxx>
-#include <AIS_LengthDimension.hxx>
-#include <AIS_RadiusDimension.hxx>
-#include <AIS_AngleDimension.hxx>
+#include <PrsDim_Dimension.hxx>
+#include <PrsDim_LengthDimension.hxx>
+#include <PrsDim_RadiusDimension.hxx>
+#include <PrsDim_AngleDimension.hxx>
#include <BRepExtrema_DistShapeShape.hxx>
#include <iomanip>
std::ostringstream anOutput;
anOutput << "Length = " << std::setprecision(10) << anEdge->length();
+ if(anEdge->isLine())
+ {
+ auto point1 = anEdge->firstPoint();
+ auto point2 = anEdge->lastPoint();
+
+ anOutput <<"\n|dx| = " << std::setprecision(10) << std::abs(point2->x() - point1->x())
+ <<"\n|dy| = " << std::setprecision(10) << std::abs(point2->y() - point1->y())
+ <<"\n|dz| = " << std::setprecision(10) << std::abs(point2->z() - point1->z());
+ }
string(RESULT_ID())->setValue(anOutput.str());
AttributeDoubleArrayPtr aValues =
return;
}
- double aDistance = GeomAlgoAPI_ShapeTools::minimalDistance(aShape1, aShape2);
+ std::array<double, 3> fromShape1To2;
+ double aDistance = GeomAlgoAPI_ShapeTools::minimalDistance(aShape1, aShape2, fromShape1To2);
std::ostringstream anOutput;
- anOutput << "Distance = " << std::setprecision(10) << aDistance;
+ anOutput << "Distance = " << std::setprecision(10) << aDistance
+ <<"\n|dx| = " << std::setprecision(10) << std::abs(fromShape1To2[0])
+ <<"\n|dy| = " << std::setprecision(10) << std::abs(fromShape1To2[1])
+ <<"\n|dz| = " << std::setprecision(10) << std::abs(fromShape1To2[2]);
string(RESULT_ID())->setValue(anOutput.str());
AttributeDoubleArrayPtr aValues =
aPlane = gp_Pln(aPnt1, aPlane.XAxis().Direction());
}
- Handle(AIS_LengthDimension) aDim;
+ Handle(PrsDim_LengthDimension) aDim;
if (thePrevious.get()) {
aAISObj = thePrevious;
Handle(AIS_InteractiveObject) aAIS = aAISObj->impl<Handle(AIS_InteractiveObject)>();
- aDim = Handle(AIS_LengthDimension)::DownCast(aAIS);
+ aDim = Handle(PrsDim_LengthDimension)::DownCast(aAIS);
if (aDim.IsNull()) {
- aDim = new AIS_LengthDimension(aTEdge, aPlane);
+ aDim = new PrsDim_LengthDimension(aTEdge, aPlane);
aAISObj = AISObjectPtr(new GeomAPI_AISObject());
aAISObj->setImpl(new Handle(AIS_InteractiveObject)(aDim));
}
}
}
else {
- aDim = new AIS_LengthDimension(aTEdge, aPlane);
+ aDim = new PrsDim_LengthDimension(aTEdge, aPlane);
aAISObj = AISObjectPtr(new GeomAPI_AISObject());
aAISObj->setImpl(new Handle(AIS_InteractiveObject)(aDim));
}
aPlane = gp_Pln(aPnt1, aPlane.XAxis().Direction());
}
- Handle(AIS_LengthDimension) aDim;
+ Handle(PrsDim_LengthDimension) aDim;
if (thePrevious.get()) {
aAISObj = thePrevious;
Handle(AIS_InteractiveObject) aAIS = aAISObj->impl<Handle(AIS_InteractiveObject)>();
- aDim = Handle(AIS_LengthDimension)::DownCast(aAIS);
+ aDim = Handle(PrsDim_LengthDimension)::DownCast(aAIS);
if (aDim.IsNull()) {
- aDim = new AIS_LengthDimension(aPnt1, aPnt2, aPlane);
+ aDim = new PrsDim_LengthDimension(aPnt1, aPnt2, aPlane);
aAISObj = AISObjectPtr(new GeomAPI_AISObject());
aAISObj->setImpl(new Handle(AIS_InteractiveObject)(aDim));
}
}
else {
aAISObj = AISObjectPtr(new GeomAPI_AISObject());
- aDim = new AIS_LengthDimension(aPnt1, aPnt2, aPlane);
+ aDim = new PrsDim_LengthDimension(aPnt1, aPnt2, aPlane);
aAISObj->setImpl(new Handle(AIS_InteractiveObject)(aDim));
}
aDim->SetFlyout(aDistance / 3.);
}
if (aShape.get()) {
TopoDS_Shape aShp = aShape->impl<TopoDS_Shape>();
- Handle(AIS_RadiusDimension) aDim;
if (thePrevious.get()) {
aAISObj = thePrevious;
Handle(AIS_InteractiveObject) aAIS = aAISObj->impl<Handle(AIS_InteractiveObject)>();
- Handle(AIS_RadiusDimension) aDim = Handle(AIS_RadiusDimension)::DownCast(aAIS);
+ Handle(PrsDim_RadiusDimension) aDim = Handle(PrsDim_RadiusDimension)::DownCast(aAIS);
if (aDim.IsNull()) {
- aDim = new AIS_RadiusDimension(aShp);
+ aDim = new PrsDim_RadiusDimension(aShp);
aAISObj = AISObjectPtr(new GeomAPI_AISObject());
aAISObj->setImpl(new Handle(AIS_InteractiveObject)(aDim));
} else
aDim->SetMeasuredGeometry(aShp);
} else {
aAISObj = AISObjectPtr(new GeomAPI_AISObject());
- Handle(AIS_RadiusDimension) aDim = new AIS_RadiusDimension(aShp);
+ Handle(PrsDim_RadiusDimension) aDim = new PrsDim_RadiusDimension(aShp);
aAISObj->setImpl(new Handle(AIS_InteractiveObject)(aDim));
}
}
TopoDS_Edge aTEdge1 = TopoDS::Edge(anEdge1->impl<TopoDS_Shape>());
TopoDS_Edge aTEdge2 = TopoDS::Edge(anEdge2->impl<TopoDS_Shape>());
- Handle(AIS_AngleDimension) aDim;
+ Handle(PrsDim_AngleDimension) aDim;
if (thePrevious.get()) {
aAISObj = thePrevious;
Handle(AIS_InteractiveObject) aAIS = aAISObj->impl<Handle(AIS_InteractiveObject)>();
- aDim = Handle(AIS_AngleDimension)::DownCast(aAIS);
+ aDim = Handle(PrsDim_AngleDimension)::DownCast(aAIS);
if (aDim.IsNull()) {
- aDim = new AIS_AngleDimension(aTEdge1, aTEdge2);
+ aDim = new PrsDim_AngleDimension(aTEdge1, aTEdge2);
aAISObj = AISObjectPtr(new GeomAPI_AISObject());
aAISObj->setImpl(new Handle(AIS_InteractiveObject)(aDim));
} else
aDim->SetMeasuredGeometry(aTEdge1, aTEdge2);
} else {
aAISObj = AISObjectPtr(new GeomAPI_AISObject());
- aDim = new AIS_AngleDimension(aTEdge1, aTEdge2);
+ aDim = new PrsDim_AngleDimension(aTEdge1, aTEdge2);
aAISObj->setImpl(new Handle(AIS_InteractiveObject)(aDim));
}
}
if (thePrevious.get()) {
aAISObj = thePrevious;
Handle(AIS_InteractiveObject) aAIS = aAISObj->impl<Handle(AIS_InteractiveObject)>();
- Handle(AIS_AngleDimension) aDim = Handle(AIS_AngleDimension)::DownCast(aAIS);
+ Handle(PrsDim_AngleDimension) aDim = Handle(PrsDim_AngleDimension)::DownCast(aAIS);
if (aDim.IsNull()) {
- aDim = new AIS_AngleDimension(aPnt1, aPnt2, aPnt3);
+ aDim = new PrsDim_AngleDimension(aPnt1, aPnt2, aPnt3);
aAISObj = AISObjectPtr(new GeomAPI_AISObject());
aAISObj->setImpl(new Handle(AIS_InteractiveObject)(aDim));
} else
aDim->SetMeasuredGeometry(aPnt1, aPnt2, aPnt3);
} else {
- Handle(AIS_AngleDimension) aDim = new AIS_AngleDimension(aPnt1, aPnt2, aPnt3);
+ Handle(PrsDim_AngleDimension) aDim = new PrsDim_AngleDimension(aPnt1, aPnt2, aPnt3);
aAISObj = AISObjectPtr(new GeomAPI_AISObject());
aAISObj->setImpl(new Handle(AIS_InteractiveObject)(aDim));
}
{
if (theDim.get()) {
Handle(AIS_InteractiveObject) aAIS = theDim->impl<Handle(AIS_InteractiveObject)>();
- Handle(AIS_Dimension) aDim = Handle(AIS_Dimension)::DownCast(aAIS);
+ Handle(PrsDim_Dimension) aDim = Handle(PrsDim_Dimension)::DownCast(aAIS);
int aSize = Config_PropManager::integer("Visualization", "dimension_arrow_size");
int aTextSize = Config_PropManager::integer("Visualization", "dimension_value_size");
std::string aFont = Config_PropManager::string("Visualization", "dimension_font");