-// Copyright (C) 2014-20xx CEA/DEN, EDF R&D -->
-
-// File: SketchAPI_Arc.cpp
-// Created: 09 June 2016
-// Author: Dmitry Bobylev
+// Copyright (C) 2014-2019 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
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
#include "SketchAPI_Arc.h"
#include <ModelHighAPI_Selection.h>
#include <ModelHighAPI_Tools.h>
+#include <SketchPlugin_ConstraintCoincidence.h>
+#include <SketchPlugin_ConstraintTangent.h>
+
+/// Obtain constraints prepared by tangent arc
+static std::list<FeaturePtr> tangentArcConstraints(const FeaturePtr& theArc);
+
//================================================================================================
SketchAPI_Arc::SketchAPI_Arc(const std::shared_ptr<ModelAPI_Feature> & theFeature)
: SketchAPI_SketchEntity(theFeature)
}
}
-//================================================================================================
-SketchAPI_Arc::SketchAPI_Arc(const std::shared_ptr<ModelAPI_Feature>& theFeature,
- double theStartX, double theStartY,
- double theEndX, double theEndY,
- double thePassedX, double thePassedY)
-: SketchAPI_SketchEntity(theFeature)
-{
- if (initialize()) {
- setByStartEndPassed(theStartX, theStartY, theEndX, theEndY, thePassedX, thePassedY);
- }
-}
-
-//===============================================================================================
-SketchAPI_Arc::SketchAPI_Arc(const std::shared_ptr<ModelAPI_Feature>& theFeature,
- const std::shared_ptr<GeomAPI_Pnt2d>& theStart,
- const std::shared_ptr<GeomAPI_Pnt2d>& theEnd,
- const std::shared_ptr<GeomAPI_Pnt2d>& thePassed)
-: SketchAPI_SketchEntity(theFeature)
-{
- if (initialize()) {
- setByStartEndPassed(theStart, theEnd, thePassed);
- }
-}
-
-//================================================================================================
-SketchAPI_Arc::SketchAPI_Arc(const std::shared_ptr<ModelAPI_Feature>& theFeature,
- const ModelHighAPI_RefAttr& theTangentPoint,
- double theEndX, double theEndY,
- bool theInversed)
-: SketchAPI_SketchEntity(theFeature)
-{
- if (initialize()) {
- setByTangent(theTangentPoint, theEndX, theEndY, theInversed);
- }
-}
-
-//================================================================================================
-SketchAPI_Arc::SketchAPI_Arc(const std::shared_ptr<ModelAPI_Feature>& theFeature,
- const ModelHighAPI_RefAttr& theTangentPoint,
- const std::shared_ptr<GeomAPI_Pnt2d>& theEnd,
- bool theInversed)
-: SketchAPI_SketchEntity(theFeature)
-{
- if (initialize()) {
- setByTangent(theTangentPoint, theEnd, theInversed);
- }
-}
-
//================================================================================================
SketchAPI_Arc::SketchAPI_Arc(const std::shared_ptr<ModelAPI_Feature>& theFeature,
const ModelHighAPI_Selection& theExternal)
double theEndX, double theEndY,
bool theInversed)
{
- fillAttribute(SketchPlugin_Arc::ARC_TYPE_CENTER_START_END(), myarcType);
fillAttribute(center(), theCenterX, theCenterY);
fillAttribute(startPoint(), theStartX, theStartY);
fillAttribute(endPoint(), theEndX, theEndY);
- fillAttribute(theInversed, myinversed);
+ fillAttribute(theInversed, myreversed);
execute();
}
const std::shared_ptr<GeomAPI_Pnt2d>& theEnd,
bool theInversed)
{
- fillAttribute(SketchPlugin_Arc::ARC_TYPE_CENTER_START_END(), myarcType);
fillAttribute(theCenter, mycenter);
fillAttribute(theStart, mystartPoint);
fillAttribute(theEnd, myendPoint);
- fillAttribute(theInversed, myinversed);
-
- execute();
-}
-
-//================================================================================================
-void SketchAPI_Arc::setByStartEndPassed(double theStartX, double theStartY,
- double theEndX, double theEndY,
- double thePassedX, double thePassedY)
-{
- fillAttribute(SketchPlugin_Arc::ARC_TYPE_THREE_POINTS(), myarcType);
- fillAttribute(startPoint(), theStartX, theStartY);
- fillAttribute(endPoint(), theEndX, theEndY);
- fillAttribute(passedPoint(), thePassedX, thePassedY);
-
- execute();
-}
-
-//================================================================================================
-void SketchAPI_Arc::setByStartEndPassed(const std::shared_ptr<GeomAPI_Pnt2d>& theStart,
- const std::shared_ptr<GeomAPI_Pnt2d>& theEnd,
- const std::shared_ptr<GeomAPI_Pnt2d>& thePassed)
-{
- fillAttribute(SketchPlugin_Arc::ARC_TYPE_THREE_POINTS(), myarcType);
- fillAttribute(theStart, mystartPoint);
- fillAttribute(theEnd, myendPoint);
- fillAttribute(thePassed, mypassedPoint);
-
- execute();
-}
-
-//================================================================================================
-void SketchAPI_Arc::setByTangent(const ModelHighAPI_RefAttr& theTangentPoint,
- double theEndX, double theEndY,
- bool theInversed)
-{
- fillAttribute(SketchPlugin_Arc::ARC_TYPE_TANGENT(), myarcType);
- fillAttribute(theTangentPoint, mytangentPoint);
- fillAttribute(endPoint(), theEndX, theEndY);
- fillAttribute(theInversed, myinversed);
-
- execute();
-}
-
-//================================================================================================
-void SketchAPI_Arc::setByTangent(const ModelHighAPI_RefAttr& theTangentPoint,
- const std::shared_ptr<GeomAPI_Pnt2d>& theEnd,
- bool theInversed)
-{
- fillAttribute(SketchPlugin_Arc::ARC_TYPE_TANGENT(), myarcType);
- fillAttribute(theTangentPoint, mytangentPoint);
- fillAttribute(theEnd, myendPoint);
- fillAttribute(theInversed, myinversed);
+ fillAttribute(theInversed, myreversed);
execute();
}
execute();
}
-//===============================================================================================
-void SketchAPI_Arc::setRadius(double theRadius)
-{
- fillAttribute(ModelHighAPI_Double(theRadius), myradius);
-
- execute();
-}
-
-//================================================================================================
-void SketchAPI_Arc::setAngle(double theAngle)
-{
- fillAttribute(ModelHighAPI_Double(theAngle), myangle);
-
- execute();
-}
-
//================================================================================================
void SketchAPI_Arc::dump(ModelHighAPI_Dumper& theDumper) const
{
// arc is external
theDumper << aBase << " = " << aSketchName << ".addArc(" << anExternal << ")" << std::endl;
} else {
- AttributeStringPtr aType = arcType();
- if (aType->value() == SketchPlugin_Arc::ARC_TYPE_CENTER_START_END()) {
- // arc given by center and start, end points
- theDumper << aBase << " = " << aSketchName << ".addArc(" << center() << ", "
- << startPoint() << ", " << endPoint() << ", " << inversed() << ")" << std::endl;
- } else if (aType->value() == SketchPlugin_Arc::ARC_TYPE_THREE_POINTS()) {
- // arc given by three points
- theDumper << aBase << " = " << aSketchName << ".addArc(" << startPoint() << ", "
- << endPoint() << ", " << passedPoint() << ")" << std::endl;
- } else {
- // tangent arc
- AttributeRefAttrPtr aTangentPoint = tangentPoint();
- theDumper << aBase << " = " << aSketchName << ".addArc("
- << aTangentPoint << ", " << endPoint() << ", " << inversed() << ")" << std::endl;
- }
+ // arc given by center and start, end points
+ theDumper << aBase << " = " << aSketchName << ".addArc(" << center() << ", "
+ << startPoint() << ", " << endPoint() << ", " << reversed() << ")" << std::endl;
}
// dump "auxiliary" flag if necessary
SketchAPI_SketchEntity::dump(theDumper);