Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-28 09:19:59

0001 // Created on: 1992-09-28
0002 // Created by: Remi GILET
0003 // Copyright (c) 1992-1999 Matra Datavision
0004 // Copyright (c) 1999-2014 OPEN CASCADE SAS
0005 //
0006 // This file is part of Open CASCADE Technology software library.
0007 //
0008 // This library is free software; you can redistribute it and/or modify it under
0009 // the terms of the GNU Lesser General Public License version 2.1 as published
0010 // by the Free Software Foundation, with special exception defined in the file
0011 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
0012 // distribution for complete text of the license and disclaimer of any warranty.
0013 //
0014 // Alternatively, this file may be used under the terms of Open CASCADE
0015 // commercial license or contractual agreement.
0016 
0017 #ifndef _GC_MakeLine2d_HeaderFile
0018 #define _GC_MakeLine2d_HeaderFile
0019 
0020 #include <Standard.hxx>
0021 #include <Standard_DefineAlloc.hxx>
0022 #include <Standard_Handle.hxx>
0023 
0024 #include <GC_Root.hxx>
0025 #include <Geom2d_Line.hxx>
0026 
0027 class gp_Ax2d;
0028 class gp_Lin2d;
0029 class gp_Pnt2d;
0030 class gp_Dir2d;
0031 
0032 //! This class implements construction algorithms for lines in the plane.
0033 //! The result is a `Geom2d_Line`.
0034 //! A `GC_MakeLine2d` object provides a framework for:
0035 //! - defining the construction parameters;
0036 //! - running the construction algorithm;
0037 //! - querying the construction status and the resulting line via `Value()`.
0038 //! Supported constructions include:
0039 //! - line from axis placement;
0040 //! - line from existing `gp_Lin2d`;
0041 //! - line from point and direction;
0042 //! - line parallel to input line through a point;
0043 //! - line parallel to input line at signed distance;
0044 //! - line through two points.
0045 class GC_MakeLine2d : public GC_Root
0046 {
0047 public:
0048   DEFINE_STANDARD_ALLOC
0049 
0050   //! Creates a line from an axis placement.
0051   //! @param[in] theAxis axis placement
0052   //! @note The location of `theAxis` is the line origin.
0053   Standard_EXPORT GC_MakeLine2d(const gp_Ax2d& theAxis);
0054 
0055   //! Creates a line from a non-persistent line from package gp.
0056   //! @param[in] theLine source line
0057   Standard_EXPORT GC_MakeLine2d(const gp_Lin2d& theLine);
0058 
0059   //! Constructs a line from origin and direction.
0060   //! @param[in] thePoint point on line
0061   //! @param[in] theDir direction
0062   Standard_EXPORT GC_MakeLine2d(const gp_Pnt2d& thePoint, const gp_Dir2d& theDir);
0063 
0064   //! Constructs a line parallel to input line and passing through a point.
0065   //! @param[in] theLine source line
0066   //! @param[in] thePoint point on resulting line
0067   Standard_EXPORT GC_MakeLine2d(const gp_Lin2d& theLine, const gp_Pnt2d& thePoint);
0068 
0069   //! Constructs a line parallel to input line at signed distance.
0070   //! @param[in] theLine source line
0071   //! @param[in] theDist signed distance
0072   Standard_EXPORT GC_MakeLine2d(const gp_Lin2d& theLine, const double theDist);
0073 
0074   //! Constructs a line passing through two points.
0075   //! @param[in] theP1 first point
0076   //! @param[in] theP2 second point
0077   //! @note Status is `gce_ConfusedPoints` if points are coincident.
0078   Standard_EXPORT GC_MakeLine2d(const gp_Pnt2d& theP1, const gp_Pnt2d& theP2);
0079 
0080   //! Returns the constructed line.
0081   //! Exceptions StdFail_NotDone if no line is constructed.
0082   //! @return resulting line
0083   Standard_EXPORT const occ::handle<Geom2d_Line>& Value() const;
0084 
0085   //! Conversion operator returning the constructed object.
0086   //! @return resulting line
0087   operator const occ::handle<Geom2d_Line>&() const { return Value(); }
0088 
0089 private:
0090   occ::handle<Geom2d_Line> TheLine;
0091 };
0092 
0093 #endif // _GC_MakeLine2d_HeaderFile