AbdulElahGwaith's picture
Upload folder using huggingface_hub
985c397 verified
# SPDX-License-Identifier: LGPL-2.1-or-later
from __future__ import annotations
from Base.Metadata import export, constmethod
from Base.Vector import Vector
from Part.App.Geom2d.Geometry2d import Geometry2d
from Part.App.Geom2d.BSplineCurve import BSplineCurve
from typing import Final, overload, List
@export(
Include="Mod/Part/App/Geometry2d.h",
FatherInclude="Mod/Part/App/Geom2d/Geometry2dPy.h",
Twin="Geom2dCurve",
TwinPointer="Geom2dCurve",
PythonName="Part.Geom2d.Curve2d",
Constructor=True,
)
class Curve2d(Geometry2d):
"""
The abstract class Geom2dCurve is the root class of all curve objects.
Author: Werner Mayer (wmayer@users.sourceforge.net)
Licence: LGPL
"""
Continuity: Final[str] = ...
"""Returns the global continuity of the curve."""
Closed: Final[bool] = ...
"""Returns true if the curve is closed."""
Periodic: Final[bool] = ...
"""Returns true if the curve is periodic."""
FirstParameter: Final[float] = ...
"""Returns the value of the first parameter."""
LastParameter: Final[float] = ...
"""Returns the value of the last parameter."""
def reverse(self) -> None:
"""
Changes the direction of parametrization of the curve.
"""
...
@constmethod
def toShape(self) -> object:
"""
Return the shape for the geometry.
"""
...
@overload
@constmethod
def discretize(self, *, Number: int) -> List[Vector]: ...
@overload
@constmethod
def discretize(self, *, QuasiNumber: int) -> List[Vector]: ...
@overload
@constmethod
def discretize(self, *, Distance: float) -> List[Vector]: ...
@overload
@constmethod
def discretize(self, *, Deflection: float) -> List[Vector]: ...
@overload
@constmethod
def discretize(self, *, QuasiDeflection: float) -> List[Vector]: ...
@overload
@constmethod
def discretize(self, *, Angular: float, Curvature: float, Minimum: int = 2) -> List[Vector]: ...
@constmethod
def discretize(self, **kwargs) -> List[Vector]:
"""
Discretizes the curve and returns a list of points.
The function accepts keywords as argument:
discretize(Number=n) => gives a list of 'n' equidistant points.
discretize(QuasiNumber=n) => gives a list of 'n' quasi-equidistant points (is faster than the method above).
discretize(Distance=d) => gives a list of equidistant points with distance 'd'.
discretize(Deflection=d) => gives a list of points with a maximum deflection 'd' to the curve.
discretize(QuasiDeflection=d) => gives a list of points with a maximum deflection 'd' to the curve (faster).
discretize(Angular=a,Curvature=c,[Minimum=m]) => gives a list of points with an angular deflection of 'a'
and a curvature deflection of 'c'. Optionally a minimum number of points
can be set, which by default is set to 2.
Optionally you can set the keywords 'First' and 'Last' to define
a sub-range of the parameter range of the curve.
If no keyword is given, then it depends on whether the argument is an int or float.
If it's an int then the behaviour is as if using the keyword 'Number',
if it's a float then the behaviour is as if using the keyword 'Distance'.
Example:
import Part
c=PartGeom2d.Circle2d()
c.Radius=5
p=c.discretize(Number=50,First=3.14)
s=Part.Compound([Part.Vertex(i) for i in p])
Part.show(s)
p=c.discretize(Angular=0.09,Curvature=0.01,Last=3.14,Minimum=100)
s=Part.Compound([Part.Vertex(i) for i in p])
Part.show(s)
"""
...
@overload
def length(self, /) -> float: ...
@overload
def length(self, uMin: float, /) -> float: ...
@overload
def length(self, uMin: float, uMax: float, /) -> float: ...
@overload
def length(self, uMin: float, uMax: float, Tol: float, /) -> float: ...
def length(self, *args: float) -> float:
"""
Computes the length of a curve
length([uMin,uMax,Tol]) -> Float
"""
...
@overload
def parameterAtDistance(self, abscissa: float, /) -> float: ...
@overload
def parameterAtDistance(self, abscissa: float, startingParameter: float, /) -> float: ...
def parameterAtDistance(self, *args: float) -> float:
"""
Returns the parameter on the curve of a point at
the given distance from a starting parameter.
parameterAtDistance([abscissa, startingParameter]) -> Float
"""
...
def value(self, u: float, /) -> Vector:
"""
Computes the point of parameter u on this curve
"""
...
def tangent(self, u: float, /) -> Vector:
"""
Computes the tangent of parameter u on this curve
"""
...
def parameter(self, point: Vector, /) -> float:
"""
Returns the parameter on the curve of the
nearest orthogonal projection of the point.
"""
...
@constmethod
def normal(self, pos: float, /) -> Vector:
"""
Vector = normal(pos) - Get the normal vector at the given parameter [First|Last] if defined.
"""
...
@constmethod
def curvature(self, pos: float, /) -> float:
"""
Float = curvature(pos) - Get the curvature at the given parameter [First|Last] if defined.
"""
...
@constmethod
def centerOfCurvature(self, pos: float, /) -> Vector:
"""
Vector = centerOfCurvature(float pos) - Get the center of curvature at the given parameter [First|Last] if defined.
"""
...
@constmethod
def intersectCC(self, other: "Curve2d", /) -> List[Vector]:
"""
Returns all intersection points between this curve and the given curve.
"""
...
@overload
def toBSpline(self, /) -> BSplineCurve: ...
@overload
def toBSpline(self, First: float, Last: float, /) -> BSplineCurve: ...
def toBSpline(self, *args: float) -> BSplineCurve:
"""
Converts a curve of any type (only part from First to Last)
toBSpline([Float=First, Float=Last]) -> B-Spline curve
"""
...
def approximateBSpline(
self, Tolerance: float, MaxSegments: int, MaxDegree: int, Order: str = "C2", /
) -> BSplineCurve:
"""
Approximates a curve of any type to a B-Spline curve
approximateBSpline(Tolerance, MaxSegments, MaxDegree, [Order='C2']) -> B-Spline curve
"""
...