// aValueAttr->setValue(aLenght);
//}
- // the value should to be computed here, not in the getAISObject in order to change the model value
+ // the value should to be computed here, not in the getAISObject
+ // in order to change the model value
// inside the object transaction. This is important for creating a constraint by preselection.
// The display of the presentation in this case happens after the transaction commit
- AttributePtr aFlyOutAttribute = data()->attribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT());
+ AttributePtr aFlyOutAttribute =
+ data()->attribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT());
if (!aFlyOutAttribute->isInitialized()) {
compute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT());
}
return true;
}
+bool SketchPlugin_ConstraintLength::computeLenghtValue(double& theValue)
+{
+ bool aResult = false;
+ std::shared_ptr<GeomAPI_Pnt> aPoint1, aPoint2;
+ std::shared_ptr<GeomDataAPI_Point2D> aStartPoint, anEndPoint;
+ if (getPoints(aPoint1, aPoint2, aStartPoint, anEndPoint)) {
+ theValue = aPoint1->distance(aPoint2);
+ aResult = true;
+ }
+ return aResult;
+}
+
bool SketchPlugin_ConstraintLength::getPoints(
std::shared_ptr<GeomAPI_Pnt>& thePoint1, std::shared_ptr<GeomAPI_Pnt>& thePoint2,
std::shared_ptr<GeomDataAPI_Point2D>& theStartPoint,
if (!sketch())
return thePrevious;
- AISObjectPtr anAIS = SketcherPrs_Factory::lengthDimensionConstraint(this, sketch()->coordinatePlane(),
- thePrevious);
+ AISObjectPtr anAIS = SketcherPrs_Factory::lengthDimensionConstraint(this,
+ sketch()->coordinatePlane(), thePrevious);
return anAIS;
}
{
std::shared_ptr<ModelAPI_AttributeDouble> aValueAttr = std::dynamic_pointer_cast<
ModelAPI_AttributeDouble>(attribute(SketchPlugin_Constraint::VALUE()));
- if (!aValueAttr->isInitialized()) { // only if it is not initialized, try to compute the current value
- std::shared_ptr<GeomAPI_Pnt> aPoint1, aPoint2;
- std::shared_ptr<GeomDataAPI_Point2D> aStartPoint, anEndPoint;
- if (getPoints(aPoint1, aPoint2, aStartPoint, anEndPoint)) {
- double aLength = aPoint1->distance(aPoint2);
+ if (!aValueAttr->isInitialized()) {
+ // only if it is not initialized, try to compute the current value
+ double aLength;
+ if (computeLenghtValue(aLength))
aValueAttr->setValue(aLength);
- }
}
} else if (theID == SketchPlugin_Constraint::FLYOUT_VALUE_PNT() && !myFlyoutUpdate) {
myFlyoutUpdate = true;