mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-09-03 14:10:33 +03:00
130 lines
5.3 KiB
C++
130 lines
5.3 KiB
C++
// Created on: 1991-03-05
|
|
// Created by: Remy GILET
|
|
// Copyright (c) 1991-1999 Matra Datavision
|
|
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
|
//
|
|
// This file is part of Open CASCADE Technology software library.
|
|
//
|
|
// This library is free software; you can redistribute it and/or modify it under
|
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
|
// by the Free Software Foundation, with special exception defined in the file
|
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
|
// distribution for complete text of the license and disclaimer of any warranty.
|
|
//
|
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
|
// commercial license or contractual agreement.
|
|
|
|
#ifndef _GccEnt_HeaderFile
|
|
#define _GccEnt_HeaderFile
|
|
|
|
#include <GccEnt_Position.hxx>
|
|
#include <Standard.hxx>
|
|
#include <Standard_DefineAlloc.hxx>
|
|
#include <Standard_Handle.hxx>
|
|
#include <Standard_OStream.hxx>
|
|
|
|
class GccEnt_QualifiedLin;
|
|
class gp_Lin2d;
|
|
class GccEnt_QualifiedCirc;
|
|
class gp_Circ2d;
|
|
|
|
|
|
//! This package provides an implementation of the qualified
|
|
//! entities useful to create 2d entities with geometric
|
|
//! constraints. The qualifier explains which subfamily of
|
|
//! solutions we want to obtain. It uses the following law: the
|
|
//! matter/the interior side is at the left of the line, if we go
|
|
//! from the beginning to the end.
|
|
//! The qualifiers are:
|
|
//! Enclosing : the solution(s) must enclose the argument.
|
|
//! Enclosed : the solution(s) must be enclosed in the
|
|
//! argument.
|
|
//! Outside : both the solution(s) and the argument must be
|
|
//! outside to each other.
|
|
//! Unqualified : the position is undefined, so give all the
|
|
//! solutions.
|
|
//! The use of a qualifier is always required if such
|
|
//! subfamilies exist. For example, it is not used for a point.
|
|
//! Note: the interior of a curve is defined as the left-hand
|
|
//! side of the curve in relation to its orientation.
|
|
class GccEnt
|
|
{
|
|
public:
|
|
|
|
DEFINE_STANDARD_ALLOC
|
|
|
|
|
|
//! Prints the name of Position type as a String on the Stream.
|
|
static Standard_OStream& Print (const GccEnt_Position thePosition, Standard_OStream& theStream)
|
|
{
|
|
return (theStream << PositionToString (thePosition));
|
|
}
|
|
|
|
//! Returns the string name for a given position.
|
|
//! @param thePosition position type
|
|
//! @return string identifier from the list UNQUALIFIED ENCLOSING ENCLOSED OUTSIDE NOQUALIFIER
|
|
Standard_EXPORT static Standard_CString PositionToString (GccEnt_Position thePosition);
|
|
|
|
//! Returns the position from the given string identifier (using case-insensitive comparison).
|
|
//! @param thePositionString string identifier
|
|
//! @return position or GccEnt_unqualified if string identifier is invalid
|
|
static GccEnt_Position PositionFromString (Standard_CString thePositionString)
|
|
{
|
|
GccEnt_Position aPosition = GccEnt_unqualified;
|
|
PositionFromString (thePositionString, aPosition);
|
|
return aPosition;
|
|
}
|
|
|
|
//! Determines the position from the given string identifier (using case-insensitive comparison).
|
|
//! @param thePositionString string identifier
|
|
//! @param thePosition detected shape type
|
|
//! @return TRUE if string identifier is known
|
|
Standard_EXPORT static Standard_Boolean PositionFromString (Standard_CString thePositionString,
|
|
GccEnt_Position& thePosition);
|
|
|
|
//! Constructs a qualified line,
|
|
//! so that the relative position to the circle or line of the
|
|
//! solution computed by a construction algorithm using the
|
|
//! qualified circle or line is not qualified, i.e. all solutions apply.
|
|
Standard_EXPORT static GccEnt_QualifiedLin Unqualified (const gp_Lin2d& Obj);
|
|
|
|
//! Constructs a qualified circle
|
|
//! so that the relative position to the circle or line of the
|
|
//! solution computed by a construction algorithm using the
|
|
//! qualified circle or line is not qualified, i.e. all solutions apply.
|
|
Standard_EXPORT static GccEnt_QualifiedCirc Unqualified (const gp_Circ2d& Obj);
|
|
|
|
|
|
//! Constructs such a qualified circle that the solution
|
|
//! computed by a construction algorithm using the qualified
|
|
//! circle encloses the circle.
|
|
Standard_EXPORT static GccEnt_QualifiedCirc Enclosing (const gp_Circ2d& Obj);
|
|
|
|
//! Constructs a qualified line,
|
|
//! so that the solution computed by a construction
|
|
//! algorithm using the qualified circle or line is enclosed by
|
|
//! the circle or line.
|
|
Standard_EXPORT static GccEnt_QualifiedLin Enclosed (const gp_Lin2d& Obj);
|
|
|
|
//! Constructs a qualified circle
|
|
//! so that the solution computed by a construction
|
|
//! algorithm using the qualified circle or line is enclosed by
|
|
//! the circle or line.
|
|
Standard_EXPORT static GccEnt_QualifiedCirc Enclosed (const gp_Circ2d& Obj);
|
|
|
|
//! Constructs a qualified line,
|
|
//! so that the solution computed by a construction
|
|
//! algorithm using the qualified circle or line and the circle
|
|
//! or line are external to one another.
|
|
Standard_EXPORT static GccEnt_QualifiedLin Outside (const gp_Lin2d& Obj);
|
|
|
|
//! Constructs a qualified circle
|
|
//! so that the solution computed by a construction
|
|
//! algorithm using the qualified circle or line and the circle
|
|
//! or line are external to one another.
|
|
Standard_EXPORT static GccEnt_QualifiedCirc Outside (const gp_Circ2d& Obj);
|
|
|
|
};
|
|
|
|
#endif // _GccEnt_HeaderFile
|