AISObjectPtr FeaturesPlugin_Measurement::getAISObject(AISObjectPtr thePrevious)
{
+ AttributeDoubleArrayPtr aValues =
+ std::dynamic_pointer_cast<ModelAPI_AttributeDoubleArray>(attribute(RESULT_VALUES_ID()));
+ if ((aValues->size() == 0) || (aValues->value(0) <= Precision::Confusion()))
+ return AISObjectPtr();
+
AISObjectPtr anAIS;
std::string aKind = string(MEASURE_KIND())->value();
if (aKind == MEASURE_LENGTH())
aDim = Handle(AIS_LengthDimension)::DownCast(aAIS);
if (aDim.IsNull()) {
aDim = new AIS_LengthDimension(aTEdge, aPlane);
+ aAISObj = AISObjectPtr(new GeomAPI_AISObject());
aAISObj->setImpl(new Handle(AIS_InteractiveObject)(aDim));
}
else {
aDim = Handle(AIS_LengthDimension)::DownCast(aAIS);
if (aDim.IsNull()) {
aDim = new AIS_LengthDimension(aPnt1, aPnt2, aPlane);
+ aAISObj = AISObjectPtr(new GeomAPI_AISObject());
aAISObj->setImpl(new Handle(AIS_InteractiveObject)(aDim));
}
else {
Handle(AIS_RadiusDimension) aDim = Handle(AIS_RadiusDimension)::DownCast(aAIS);
if (aDim.IsNull()) {
aDim = new AIS_RadiusDimension(aShp);
+ aAISObj = AISObjectPtr(new GeomAPI_AISObject());
aAISObj->setImpl(new Handle(AIS_InteractiveObject)(aDim));
} else
aDim->SetMeasuredGeometry(aShp);
if (anEdge1.get() && anEdge2.get()) {
TopoDS_Edge aTEdge1 = TopoDS::Edge(anEdge1->impl<TopoDS_Shape>());
TopoDS_Edge aTEdge2 = TopoDS::Edge(anEdge2->impl<TopoDS_Shape>());
+
Handle(AIS_AngleDimension) aDim;
if (thePrevious.get()) {
aAISObj = thePrevious;
aDim = Handle(AIS_AngleDimension)::DownCast(aAIS);
if (aDim.IsNull()) {
aDim = new AIS_AngleDimension(aTEdge1, aTEdge2);
+ aAISObj = AISObjectPtr(new GeomAPI_AISObject());
aAISObj->setImpl(new Handle(AIS_InteractiveObject)(aDim));
} else
aDim->SetMeasuredGeometry(aTEdge1, aTEdge2);
gp_Pnt aPnt2(aPoint2->impl<gp_Pnt>());
gp_Pnt aPnt3(aPoint3->impl<gp_Pnt>());
+ if (aPnt1.IsEqual(aPnt2, Precision::Confusion()) ||
+ aPnt1.IsEqual(aPnt3, Precision::Confusion()) ||
+ aPnt2.IsEqual(aPnt3, Precision::Confusion()))
+ return thePrevious;
+
if (thePrevious.get()) {
aAISObj = thePrevious;
Handle(AIS_InteractiveObject) aAIS = aAISObj->impl<Handle(AIS_InteractiveObject)>();
Handle(AIS_AngleDimension) aDim = Handle(AIS_AngleDimension)::DownCast(aAIS);
if (aDim.IsNull()) {
aDim = new AIS_AngleDimension(aPnt1, aPnt2, aPnt3);
+ aAISObj = AISObjectPtr(new GeomAPI_AISObject());
aAISObj->setImpl(new Handle(AIS_InteractiveObject)(aDim));
} else
aDim->SetMeasuredGeometry(aPnt1, aPnt2, aPnt3);
Handle(AIS_Dimension) aDim = Handle(AIS_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");
Handle(Prs3d_DimensionAspect) anAspect = aDim->DimensionAspect();
anAspect->MakeArrows3d(false);
anAspect->MakeTextShaded(false);
anAspect->MakeUnitsDisplayed(false);
anAspect->MakeUnitsDisplayed(false);
- anAspect->TextAspect()->SetFont(Config_PropManager::string("Visualization",
- "dimension_font").c_str());
- anAspect->TextAspect()->SetHeight(aTextSize / mySceenScale);
+ anAspect->TextAspect()->SetFont(aFont.c_str());
+ anAspect->TextAspect()->SetHeight(aTextSize);
anAspect->ArrowAspect()->SetLength(aSize / mySceenScale);
anAspect->SetExtensionSize((aTextSize / mySceenScale + aSize) / 2.0);
aDim->SetDimensionAspect(anAspect);