-// Copyright (C) 2014-2019 CEA/DEN, EDF R&D
+// Copyright (C) 2014-2023 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 <BRep_Tool.hxx>
#include <Precision.hxx>
-#include <AIS_Dimension.hxx>
+#include <PrsDim_Dimension.hxx>
namespace SketcherPrs_Tools {
+static ParameterStyle MyStyle = ParameterValue;
+
+void setParameterStyle(ParameterStyle theStyle)
+{
+ MyStyle = theStyle;
+}
+
+ParameterStyle parameterStyle()
+{
+ return MyStyle;
+}
+
AttributePtr getAttribute(ModelAPI_Feature* theFeature, const std::string& theAttrName)
{
AttributePtr anAttribute;
std::shared_ptr<GeomAPI_Shape> getShape(ObjectPtr theObject)
{
ResultConstructionPtr aRes = std::dynamic_pointer_cast<ModelAPI_ResultConstruction>(theObject);
+ if (!aRes.get()) {
+ FeaturePtr aFeature = std::dynamic_pointer_cast<ModelAPI_Feature>(theObject);
+ if (aFeature.get())
+ aRes = std::dynamic_pointer_cast<ModelAPI_ResultConstruction>(aFeature->lastResult());
+ }
if (aRes.get() != NULL && aRes->data()->isValid()) {
/// essential check as it is called in openGl thread
return aRes->shape();
std::shared_ptr<GeomAPI_Pnt2d> getPoint(ModelAPI_Feature* theFeature,
const std::string& theAttribute)
{
- std::shared_ptr<GeomDataAPI_Point2D> aPointAttr = ModelGeomAlgo_Point2D::getPointOfRefAttr(
+ std::shared_ptr<GeomDataAPI_Point2D> aPointAttr =
+ std::dynamic_pointer_cast<GeomDataAPI_Point2D>(theFeature->attribute(theAttribute));
+ if (!aPointAttr.get() || !aPointAttr->isInitialized()) {
+ aPointAttr = ModelGeomAlgo_Point2D::getPointOfRefAttr(
theFeature, theAttribute, SketchPlugin_Point::ID(), SketchPlugin_Point::COORD_ID());
+ }
if (aPointAttr.get() != NULL)
return aPointAttr->pnt();
return std::shared_ptr<GeomAPI_Pnt2d>();
bool aIsFree = true;
for(int aKind = 0; aIsFree && aKind < 2; aKind++) { // 0 for feature, 1 for result
ObjectPtr aReferenced = aCurrent;
- if (aKind == 1)
+ if (aKind == 1) {
if (!aCurrent->results().empty())
aReferenced = aCurrent->firstResult();
else
break;
+ }
const std::set<AttributePtr>& aRefs = aReferenced->data()->refsToMe();
std::set<AttributePtr>::iterator aRIt = aRefs.begin();
for (; aRIt != aRefs.end(); ++aRIt) {
return thePlane->to3D(aFlyoutPnt->x(), aFlyoutPnt->y());
}
-void sendExpressionShownEvent(const bool& theState)
-{
- static Events_ID anId = SketcherPrs_ParameterStyleMessage::eventId();
- std::shared_ptr<SketcherPrs_ParameterStyleMessage> aMessage = std::shared_ptr
- <SketcherPrs_ParameterStyleMessage>(new SketcherPrs_ParameterStyleMessage(anId, 0));
- aMessage->setStyle(theState ? SketcherPrs_ParameterStyleMessage::ParameterText
- : SketcherPrs_ParameterStyleMessage::ParameterValue);
- Events_Loop::loop()->send(aMessage);
- Events_Loop::loop()->flush(anId);
-}
-
void sendEmptyPresentationError(ModelAPI_Feature* theFeature, const std::string theError)
{
Events_InfoMessage("SketcherPrs_Tools",