-// Copyright (C) 2014-2023 CEA, EDF
+// Copyright (C) 2014-2024 CEA, EDF
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
std::shared_ptr<SketchAPI_Rectangle> SketchAPI_Sketch::addRectangle(double theX1, double theY1,
double theX2, double theY2)
{
- std::shared_ptr<ModelAPI_Feature> aFeature =
- compositeFeature()->addFeature(SketchAPI_Rectangle::ID());
+ std::shared_ptr<ModelAPI_Feature> aFeature = compositeFeature()->addFeature(SketchAPI_Rectangle::ID());
return RectanglePtr(new SketchAPI_Rectangle(aFeature, theX1, theY1, theX2, theY2));
}
-std::shared_ptr<SketchAPI_Rectangle> SketchAPI_Sketch::addRectangle(
- const std::shared_ptr<GeomAPI_Pnt2d> & theStartPoint,
- const std::shared_ptr<GeomAPI_Pnt2d> & theEndPoint)
-{
- std::shared_ptr<ModelAPI_Feature> aFeature =
- compositeFeature()->addFeature(SketchAPI_Rectangle::ID());
- return RectanglePtr(new SketchAPI_Rectangle(aFeature, theStartPoint, theEndPoint));
-}
static std::shared_ptr<GeomAPI_Pnt2d> pointCoordinates(
const std::pair<std::shared_ptr<GeomAPI_Pnt2d>, ModelHighAPI_RefAttr> & thePoint)
anAttr = aFeature->attribute(SketchPlugin_Point::COORD_ID());
}
- std::shared_ptr<GeomDataAPI_Point2D> aPntAttr =
- std::dynamic_pointer_cast<GeomDataAPI_Point2D>(anAttr);
+ std::shared_ptr<GeomDataAPI_Point2D> aPntAttr = std::dynamic_pointer_cast<GeomDataAPI_Point2D>(anAttr);
if (aPntAttr)
return aPntAttr->pnt();
return std::shared_ptr<GeomAPI_Pnt2d>();
}
-std::shared_ptr<SketchAPI_Rectangle> SketchAPI_Sketch::addRectangleCentered(
+std::shared_ptr<SketchAPI_Rectangle> SketchAPI_Sketch::addRectangle(
+ const std::pair<std::shared_ptr<GeomAPI_Pnt2d>, ModelHighAPI_RefAttr> & theStartPoint,
+ const std::pair<std::shared_ptr<GeomAPI_Pnt2d>, ModelHighAPI_RefAttr> & theEndPoint)
+{
+ std::shared_ptr<ModelAPI_Feature> aFeature = compositeFeature()->addFeature(SketchAPI_Rectangle::ID());
+ RectanglePtr aRect(new SketchAPI_Rectangle(aFeature));
+ fillAttribute("RectangleTypeByCorners", aRect->type());
+ fillAttribute(pointCoordinates(theStartPoint), aRect->startPoint());
+ fillAttribute(pointCoordinates(theEndPoint), aRect->endPoint());
+ aRect->execute();
+
+ if (!theStartPoint.second.isEmpty() && aRect->linesList()->size() >= 1) {
+ // Get end point of the first line of rectangle and apply coincidence constraint
+ FeaturePtr aLine = ModelAPI_Feature::feature(aRect->linesList()->object(0));
+ AttributePtr aLinePnt = aLine->attribute(SketchPlugin_Line::END_ID());
+ setCoincident(ModelHighAPI_RefAttr(aLinePnt), theStartPoint.second);
+ }
+
+ if (!theEndPoint.second.isEmpty() && aRect->linesList()->size() >= 4) {
+ // Get start point of the last line of rectangle and apply coincidence constraint
+ FeaturePtr aLine = ModelAPI_Feature::feature(aRect->linesList()->object(3));
+ AttributePtr aLinePnt = aLine->attribute(SketchPlugin_Line::START_ID());
+ setCoincident(ModelHighAPI_RefAttr(aLinePnt), theEndPoint.second);
+ }
+ return aRect;
+}
+
+std::pair<std::shared_ptr<SketchAPI_Rectangle>, std::shared_ptr<SketchAPI_Point>> SketchAPI_Sketch::addRectangleCentered(
const std::pair<std::shared_ptr<GeomAPI_Pnt2d>, ModelHighAPI_RefAttr> & theCenter,
const std::pair<std::shared_ptr<GeomAPI_Pnt2d>, ModelHighAPI_RefAttr> & theCorner)
{
- std::shared_ptr<ModelAPI_Feature> aFeature =
- compositeFeature()->addFeature(SketchAPI_Rectangle::ID());
+ std::shared_ptr<ModelAPI_Feature> aFeature = compositeFeature()->addFeature(SketchAPI_Rectangle::ID());
RectanglePtr aRect(new SketchAPI_Rectangle(aFeature));
fillAttribute("RectangleTypeCentered", aRect->type());
+
if (!theCenter.second.isEmpty())
fillAttribute(theCenter.second, aRect->centerPointRef());
- fillAttribute(pointCoordinates(theCenter), aRect->centerPoint());
+ else
+ fillAttribute(pointCoordinates(theCenter), aRect->centerPoint());
+
fillAttribute(pointCoordinates(theCorner), aRect->cornerPoint());
aRect->execute();
- if (!theCorner.second.isEmpty() && aRect->linesList()->size() > 1) {
- // get start point of the last line in rectangle and apply coindidence constraint
+ if (!theCorner.second.isEmpty() && aRect->linesList()->size() >= 4) {
+ // get start point of the last line in rectangle and apply coincidence constraint
FeaturePtr aLine = ModelAPI_Feature::feature(aRect->linesList()->object(3));
AttributePtr aEndPnt = aLine->attribute(SketchPlugin_Line::START_ID());
setCoincident(ModelHighAPI_RefAttr(aEndPnt), theCorner.second);
}
- return aRect;
+ return std::pair<std::shared_ptr<SketchAPI_Rectangle>, std::shared_ptr<SketchAPI_Point>>(aRect, aRect->centerSketchPoint());
+}
+
+std::pair<std::shared_ptr<SketchAPI_Rectangle>, std::shared_ptr<SketchAPI_Point>> SketchAPI_Sketch::addRectangleCentered(
+ double theCenterX, double theCenterY,
+ double theCornerX, double theCornerY
+) {
+ std::shared_ptr<ModelAPI_Feature> aFeature = compositeFeature()->addFeature(SketchAPI_Rectangle::ID());
+ auto aRect = RectanglePtr(new SketchAPI_Rectangle(aFeature, theCenterX, theCenterY, theCornerX, theCornerY, true));
+ return std::pair<std::shared_ptr<SketchAPI_Rectangle>, std::shared_ptr<SketchAPI_Point>>(aRect, aRect->centerSketchPoint());
}
-// Old way for create circle
//--------------------------------------------------------------------------------------
-[[deprecated("Use addCircleWithPoint method instead.")]]
std::shared_ptr<SketchAPI_Circle> SketchAPI_Sketch::addCircle(double theCenterX,
double theCenterY,
double theRadius)
{
std::shared_ptr<ModelAPI_Feature> aFeature =
compositeFeature()->addFeature(SketchPlugin_Circle::ID());
- fillAttribute(SketchPlugin_Circle::THE_VERSION_0, aFeature->integer(SketchPlugin_Circle::VERSION_ID()));
- return CirclePtr(new SketchAPI_Circle(aFeature, theCenterX, theCenterY, theRadius, 0));
+ return CirclePtr(new SketchAPI_Circle(aFeature, theCenterX, theCenterY, theRadius));
}
-[[deprecated("Use addCircleWithPoint method instead.")]]
std::shared_ptr<SketchAPI_Circle> SketchAPI_Sketch::addCircle(
const std::shared_ptr<GeomAPI_Pnt2d>& theCenter,
double theRadius)
{
std::shared_ptr<ModelAPI_Feature> aFeature =
compositeFeature()->addFeature(SketchPlugin_Circle::ID());
- fillAttribute(SketchPlugin_Circle::THE_VERSION_0, aFeature->integer(SketchPlugin_Circle::VERSION_ID()));
- return CirclePtr(new SketchAPI_Circle(aFeature, theCenter, theRadius, 0));
+ return CirclePtr(new SketchAPI_Circle(aFeature, theCenter, theRadius));
}
-[[deprecated("Use addCircleWithPoint method instead.")]]
std::shared_ptr<SketchAPI_MacroCircle> SketchAPI_Sketch::addCircle(double theCenterX,
double theCenterY,
double thePassedX,
{
std::shared_ptr<ModelAPI_Feature> aFeature =
compositeFeature()->addFeature(SketchPlugin_MacroCircle::ID());
- fillAttribute(SketchPlugin_Circle::THE_VERSION_0, aFeature->integer(SketchPlugin_MacroCircle::VERSION_ID()));
return MacroCirclePtr(new SketchAPI_MacroCircle(aFeature, theCenterX, theCenterY,
- thePassedX, thePassedY, 0));
+ thePassedX, thePassedY));
}
-[[deprecated("Use addCircleWithPoint method instead.")]]
std::shared_ptr<SketchAPI_MacroCircle> SketchAPI_Sketch::addCircle(
const std::shared_ptr<GeomAPI_Pnt2d>& theCenterPoint,
const std::shared_ptr<GeomAPI_Pnt2d>& thePassedPoint)
{
std::shared_ptr<ModelAPI_Feature> aFeature =
compositeFeature()->addFeature(SketchPlugin_MacroCircle::ID());
- fillAttribute(SketchPlugin_Circle::THE_VERSION_0, aFeature->integer(SketchPlugin_MacroCircle::VERSION_ID()));
- return MacroCirclePtr(new SketchAPI_MacroCircle(aFeature, theCenterPoint, thePassedPoint, 0));
+ return MacroCirclePtr(new SketchAPI_MacroCircle(aFeature, theCenterPoint, thePassedPoint));
}
-[[deprecated("Use addCircleWithPoint method instead.")]]
std::shared_ptr<SketchAPI_MacroCircle> SketchAPI_Sketch::addCircle(double theX1, double theY1,
double theX2, double theY2,
double theX3, double theY3)
{
std::shared_ptr<ModelAPI_Feature> aFeature =
compositeFeature()->addFeature(SketchPlugin_MacroCircle::ID());
- fillAttribute(SketchPlugin_Circle::THE_VERSION_0, aFeature->integer(SketchPlugin_MacroCircle::VERSION_ID()));
-
return MacroCirclePtr(new SketchAPI_MacroCircle(aFeature, theX1, theY1,
theX2, theY2,
- theX3, theY3, 0));
+ theX3, theY3));
}
-[[deprecated("Use addCircleWithPoint method instead.")]]
std::shared_ptr<SketchAPI_MacroCircle> SketchAPI_Sketch::addCircle(
const std::shared_ptr<GeomAPI_Pnt2d>& thePoint1,
const std::shared_ptr<GeomAPI_Pnt2d>& thePoint2,
{
std::shared_ptr<ModelAPI_Feature> aFeature =
compositeFeature()->addFeature(SketchPlugin_MacroCircle::ID());
- fillAttribute(SketchPlugin_Circle::THE_VERSION_0, aFeature->integer(SketchPlugin_Circle::VERSION_ID()));
- return MacroCirclePtr(new SketchAPI_MacroCircle(aFeature, thePoint1, thePoint2, thePoint3, 0));
+ return MacroCirclePtr(new SketchAPI_MacroCircle(aFeature, thePoint1, thePoint2, thePoint3));
}
-[[deprecated("Use addCircleWithPoint method instead.")]]
std::shared_ptr<SketchAPI_Circle>
SketchAPI_Sketch::addCircle(const ModelHighAPI_Selection & theExternal)
{
return CirclePtr(new SketchAPI_Circle(aFeature, theExternal));
}
-[[deprecated("Use addCircleWithPoint method instead.")]]
std::shared_ptr<SketchAPI_Circle> SketchAPI_Sketch::addCircle(const std::wstring & theExternalName)
{
std::shared_ptr<ModelAPI_Feature> aFeature =
return CirclePtr(new SketchAPI_Circle(aFeature, theExternalName));
}
-// New way for create Circle
-//--------------------------------------------------------------------------------------
-std::shared_ptr<SketchAPI_Circle> SketchAPI_Sketch::addCircleWithPoint(double theCenterX,
- double theCenterY,
- double theRadius,
- double theAngle)
-{
- std::shared_ptr<ModelAPI_Feature> aFeature =
- compositeFeature()->addFeature(SketchPlugin_Circle::ID());
- return CirclePtr(new SketchAPI_Circle(aFeature, theCenterX, theCenterY, theRadius, theAngle));
-}
-
-std::shared_ptr<SketchAPI_Circle> SketchAPI_Sketch::addCircleWithPoint(
- const std::shared_ptr<GeomAPI_Pnt2d>& theCenter,
- double theRadius,
- double theAngle)
-{
- std::shared_ptr<ModelAPI_Feature> aFeature =
- compositeFeature()->addFeature(SketchPlugin_Circle::ID());
- return CirclePtr(new SketchAPI_Circle(aFeature, theCenter, theRadius, theAngle));
-}
-
-std::shared_ptr<SketchAPI_MacroCircle> SketchAPI_Sketch::addCircleWithPoint(double theCenterX,
- double theCenterY,
- double thePassedX,
- double thePassedY,
- double theAngle)
-{
- std::shared_ptr<ModelAPI_Feature> aFeature =
- compositeFeature()->addFeature(SketchPlugin_MacroCircle::ID());
- return MacroCirclePtr(new SketchAPI_MacroCircle(aFeature, theCenterX, theCenterY,
- thePassedX, thePassedY, theAngle));
-}
-
-std::shared_ptr<SketchAPI_MacroCircle> SketchAPI_Sketch::addCircleWithPoint(
- const std::shared_ptr<GeomAPI_Pnt2d>& theCenterPoint,
- const std::shared_ptr<GeomAPI_Pnt2d>& thePassedPoint,
- double theAngle)
-{
- std::shared_ptr<ModelAPI_Feature> aFeature =
- compositeFeature()->addFeature(SketchPlugin_MacroCircle::ID());
- return MacroCirclePtr(new SketchAPI_MacroCircle(aFeature, theCenterPoint, thePassedPoint, theAngle));
-}
-
-std::shared_ptr<SketchAPI_MacroCircle> SketchAPI_Sketch::addCircleWithPoint(double theX1, double theY1,
- double theX2, double theY2,
- double theX3, double theY3,
- double theAngle)
-{
- std::shared_ptr<ModelAPI_Feature> aFeature =
- compositeFeature()->addFeature(SketchPlugin_MacroCircle::ID());
- return MacroCirclePtr(new SketchAPI_MacroCircle(aFeature, theX1, theY1,
- theX2, theY2,
- theX3, theY3, theAngle));
-}
-
-std::shared_ptr<SketchAPI_MacroCircle> SketchAPI_Sketch::addCircleWithPoint(
- const std::shared_ptr<GeomAPI_Pnt2d>& thePoint1,
- const std::shared_ptr<GeomAPI_Pnt2d>& thePoint2,
- const std::shared_ptr<GeomAPI_Pnt2d>& thePoint3,
- double theAngle)
-{
- std::shared_ptr<ModelAPI_Feature> aFeature =
- compositeFeature()->addFeature(SketchPlugin_MacroCircle::ID());
- return MacroCirclePtr(new SketchAPI_MacroCircle(aFeature, thePoint1, thePoint2, thePoint3, theAngle));
-}
-
-std::shared_ptr<SketchAPI_Circle>
-SketchAPI_Sketch::addCircleWithPoint(const ModelHighAPI_Selection& theExternal)
-{
- std::shared_ptr<ModelAPI_Feature> aFeature =
- compositeFeature()->addFeature(SketchPlugin_Circle::ID());
- return CirclePtr(new SketchAPI_Circle(aFeature, theExternal));
-}
-
-std::shared_ptr<SketchAPI_Circle> SketchAPI_Sketch::addCircleWithPoint(const std::wstring& theExternalName)
-{
- std::shared_ptr<ModelAPI_Feature> aFeature =
- compositeFeature()->addFeature(SketchPlugin_Circle::ID());
- return CirclePtr(new SketchAPI_Circle(aFeature, theExternalName));
-}
-
//--------------------------------------------------------------------------------------
std::shared_ptr<SketchAPI_Arc> SketchAPI_Sketch::addArc(double theCenterX, double theCenterY,
double theStartX, double theStartY,