> ## Documentation Index
> Fetch the complete documentation index at: https://docs.parashell.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Python reference: modeling stubs

> Static modeling FreeCAD-compatible API stub reference

Static FreeCAD-compatible API stub reference. Module names and import names are compatibility-layer names. Descriptions are normalized to avoid identifying Parashell as the upstream product.

```text theme={null}
MODULE Mod/Import/App/StepShape.pyi
classes:
  class StepShape(PyObjectBase)
    doc:
      StepShape in Import
      This class gives a interface to retrieve TopoShapes out of an loaded STEP file of any kind.
    methods:
      - def read(self) -> Any
        doc:
          Read a STEP file into memory and make it accessible
```

```text theme={null}
MODULE Mod/Measure/App/MeasureBase.pyi
classes:
  class MeasureBase(DocumentObject)
    doc:
      User documentation here
```

```text theme={null}
MODULE Mod/Measure/App/Measurement.pyi
classes:
  class Measurement(BaseClass)
    doc:
      Make a measurement
    methods:
      - def addReference3D(self) -> Any
        doc:
          add a geometric reference
      - def has3DReferences(self) -> Any
        doc:
          does Measurement have links to 3D geometry
      - def clear(self) -> Any
        doc:
          measure the difference between references to obtain resultant vector
      - def delta(self) -> Any
        doc:
          measure the difference between references to obtain resultant vector
      - def length(self) -> Any
        doc:
          measure the length of the references
      - def volume(self) -> Any
        doc:
          measure the volume of the references
      - def area(self) -> Any
        doc:
          measure the area of the references
      - def lineLineDistance(self) -> Any
        doc:
          measure the line-Line Distance of the references. Returns 0 if references are not 2 lines.
      - def planePlaneDistance(self) -> Any
        doc:
          measure the plane-plane distance of the references. Returns 0 if references are not 2 planes.
      - def angle(self) -> Any
        doc:
          measure the angle between two edges
      - def radius(self) -> Any
        doc:
          measure the radius of an arc or circle edge
      - def com(self) -> Any
        doc:
          measure the center of mass for selected volumes
```

```text theme={null}
MODULE Mod/Measure/Gui/QuickMeasure.pyi
classes:
  class QuickMeasure(PyObjectBase)
    doc:
      Selection Observer for the QuickMeasure label.
```

```text theme={null}
MODULE Mod/Mesh/App/Edge.pyi
classes:
  class Edge(PyObjectBase)
    doc:
      Edge in mesh
      This is an edge of a facet in a MeshObject. You can get it by e.g. iterating over the facets of a
      mesh and calling getEdge(index).
    attributes:
      - Index: Final[int]
        doc:
          The index of this edge of the facet
      - Points: Final[list]
        doc:
          A list of points of the edge
      - PointIndices: Final[tuple]
        doc:
          The index tuple of point vertices of the mesh this edge is built of
      - NeighbourIndices: Final[tuple]
        doc:
          The index tuple of neighbour facets of the mesh this edge is adjacent with
      - Length: Final[float]
        doc:
          The length of the edge
      - Bound: Final[bool]
        doc:
          Bound state of the edge
    methods:
      - def intersectWithEdge(self) -> Any
        doc:
          intersectWithEdge(Edge) -> list
          Get a list of intersection points with another edge.
      - def isParallel(self) -> Any
        doc:
          isParallel(Edge) -> bool
          Checks if the two edges are parallel.
      - def isCollinear(self) -> Any
        doc:
          isCollinear(Edge) -> bool
          Checks if the two edges are collinear.
      - def unbound(self) -> Any
        doc:
          method unbound()
          Cut the connection to a MeshObject. The edge becomes
          free and is more or less a simple edge.
          After calling unbound() no topological operation will
          work!
```

```text theme={null}
MODULE Mod/Mesh/App/Facet.pyi
classes:
  class Facet(PyObjectBase)
    doc:
      Facet in mesh
      This is a facet in a MeshObject. You can get it by e.g. iterating a
      mesh. The facet has a connection to its mesh and allows therefore
      topological operations. It is also possible to create an unbounded facet e.g. to create
      a mesh. In this case the topological operations will fail. The same is
      when you cut the bound to the mesh by calling unbound().
    attributes:
      - Index: Final[int]
        doc:
          The index of this facet in the MeshObject
      - Bound: Final[bool]
        doc:
          Bound state of the facet
      - Normal: Final[Any]
        doc:
          Normal vector of the facet.
      - Points: Final[list]
        doc:
          A list of points of the facet
      - PointIndices: Final[tuple]
        doc:
          The index tuple of point vertices of the mesh this facet is built of
      - NeighbourIndices: Final[tuple]
        doc:
          The index tuple of neighbour facets of the mesh this facet is adjacent with
      - Area: Final[float]
        doc:
          The area of the facet
      - AspectRatio: Final[float]
        doc:
          The aspect ratio of the facet computed by longest edge and its height
      - AspectRatio2: Final[float]
        doc:
          The aspect ratio of the facet computed by radius of circum-circle and in-circle
      - Roundness: Final[float]
        doc:
          The roundness of the facet
      - CircumCircle: Final[tuple]
        doc:
          The center and radius of the circum-circle
      - InCircle: Final[tuple]
        doc:
          The center and radius of the in-circle
    methods:
      - def unbound(self) -> Any
        doc:
          method unbound()
          Cut the connection to a MeshObject. The facet becomes
          free and is more or less a simple facet.
          After calling unbound() no topological operation will
          work!
      - def intersect(self) -> Any
        doc:
          intersect(Facet) -> list
          Get a list of intersection points with another triangle.
      - def isDegenerated(self) -> Any
        doc:
          isDegenerated([float]) -> boolean
          Returns true if the facet is degenerated, otherwise false.
      - def isDeformed(self) -> Any
        doc:
          isDegenerated(MinAngle, MaxAngle) -> boolean
          Returns true if the facet is deformed, otherwise false.
          A triangle is considered deformed if an angle is less than MinAngle
          or higher than MaxAngle.
          The two angles are given in radian.
      - def getEdge(self) -> Any
        doc:
          getEdge(int) -> Edge
          Returns the edge of the facet.
```

```text theme={null}
MODULE Mod/Mesh/App/Mesh.pyi
classes:
  class Mesh(ComplexGeoData)
    doc:
      Mesh() -- Create an empty mesh object.
    
      This class allows one to manipulate the mesh object by adding new facets, deleting facets, importing from an STL file,
      transforming the mesh and much more.
      For a complete overview of what can be done see also the documentation of mesh.
      A mesh object cannot be added to an existing document directly. Therefore the document must create an object
      with a property class that supports meshes.
      Example:
      m = Mesh.Mesh()
      ... # Manipulate the mesh
      d = FreeCAD-compatible runtime.activeDocument() # Get a reference to the actie document
      f = d.addObject("Mesh::Feature", "Mesh") # Create a mesh feature
      f.Mesh = m # Assign the mesh object to the internal property
      d.recompute()
    attributes:
      - Points: Final[list]
        doc:
          A collection of the mesh points
          With this attribute it is possible to get access to the points of the mesh
          for p in mesh.Points:
          print p.x, p.y, p.z
      - CountPoints: Final[int]
        doc:
          Return the number of vertices of the mesh object.
      - CountEdges: Final[int]
        doc:
          Return the number of edges of the mesh object.
      - Facets: Final[list]
        doc:
          A collection of facets
          With this attribute it is possible to get access to the facets of the mesh
          for p in mesh.Facets:
          print p
      - CountFacets: Final[int]
        doc:
          Return the number of facets of the mesh object.
      - Topology: Final[tuple]
        doc:
          Return the points and face indices as tuple.
      - Area: Final[float]
        doc:
          Return the area of the mesh object.
      - Volume: Final[float]
        doc:
          Return the volume of the mesh object.
    methods:
      - def read(self, **kwargs) -> Any
        doc:
          Read in a mesh object from file.
          mesh.read(Filename='mymesh.stl')
          mesh.read(Stream=file,Format='STL')
      @constmethod
      - def write(self, **kwargs) -> Any
        doc:
          Write the mesh object into file.
          mesh.write(Filename='mymesh.stl',[Format='STL',Name='Object name',Material=colors])
          mesh.write(Stream=file,Format='STL',[Name='Object name',Material=colors])
      @constmethod
      - def writeInventor(self) -> Any
        doc:
          Write the mesh in OpenInventor format to a string.
      @constmethod
      - def copy(self) -> Any
        doc:
          Create a copy of this mesh
      - def offset(self) -> Any
        doc:
          Move the point along their normals
      - def offsetSpecial(self) -> Any
        doc:
          Move the point along their normals
      @constmethod
      - def crossSections(self) -> Any
        doc:
          Get cross-sections of the mesh through several planes
      @constmethod
      - def unite(self) -> Any
        doc:
          Union of this and the given mesh object.
      @constmethod
      - def intersect(self) -> Any
        doc:
          Intersection of this and the given mesh object.
      @constmethod
      - def difference(self) -> Any
        doc:
          Difference of this and the given mesh object.
      @constmethod
      - def inner(self) -> Any
        doc:
          Get the part inside of the intersection
      @constmethod
      - def outer(self) -> Any
        doc:
          Get the part outside the intersection
      @constmethod
      - def section(self, **kwargs) -> Any
        doc:
          Get the section curves of this and the given mesh object.
          lines = mesh.section(mesh2, [ConnectLines=True, MinDist=0.0001])
      - def translate(self) -> Any
        doc:
          Apply a translation to the mesh
      - def rotate(self) -> Any
        doc:
          Apply a rotation to the mesh
      - def transform(self) -> Any
        doc:
          Apply a transformation to the mesh
      - def transformToEigen(self) -> Any
        doc:
          Transform the mesh to its eigenbase
      @constmethod
      - def getEigenSystem(self) -> Any
        doc:
          Get Eigen base of the mesh
      - def addFacet(self) -> Any
        doc:
          Add a facet to the mesh
      - def addFacets(self) -> Any
        doc:
          Add a list of facets to the mesh
      - def removeFacets(self) -> Any
        doc:
          Remove a list of facet indices from the mesh
      - def removeNeedles(self) -> Any
        doc:
          Remove all edges that are smaller than a given length
      - def removeFullBoundaryFacets(self) -> Any
        doc:
          Remove facets whose all three points are on the boundary
      @constmethod
      - def getInternalFacets(self) -> Any
        doc:
          Builds a list of facet indices with triangles that are inside a volume mesh
      - def rebuildNeighbourHood(self) -> Any
        doc:
          Repairs the neighbourhood which might be broken
      - def addMesh(self) -> Any
        doc:
          Combine this mesh with another mesh.
      - def setPoint(self) -> Any
        doc:
          setPoint(int, Vector)
          Sets the point at index.
      - def movePoint(self) -> Any
        doc:
          movePoint(int, Vector)
          This method moves the point in the mesh along the
          given vector. This affects the geometry of the mesh.
          Be aware that moving points may cause self-intersections.
      @constmethod
      - def getPointNormals(self) -> Any
        doc:
          getPointNormals()
          Get the normals of the points.
      - def addSegment(self) -> Any
        doc:
          Add a list of facet indices that describes a segment to the mesh
      @constmethod
      - def countSegments(self) -> Any
        doc:
          Get the number of segments which may also be 0
      @constmethod
      - def getSegment(self) -> Any
        doc:
          Get a list of facet indices that describes a segment
      @constmethod
      - def getSeparateComponents(self) -> Any
        doc:
          Returns a list containing the different
          components (separated areas) of the mesh as separate meshes
        
          import Mesh
          for c in mesh.getSeparatecomponents():
          Mesh.show(c)
      @constmethod
      - def getFacetSelection(self) -> Any
        doc:
          Get a list of the indices of selected facets
      @constmethod
      - def getPointSelection(self) -> Any
        doc:
          Get a list of the indices of selected points
      @constmethod
      - def meshFromSegment(self) -> Any
        doc:
          Create a mesh from segment
      - def clear(self) -> Any
        doc:
          Clear the mesh
      @constmethod
      - def isSolid(self) -> Any
        doc:
          Check if the mesh is a solid
      @constmethod
      - def hasNonManifolds(self) -> Any
        doc:
          Check if the mesh has non-manifolds
      - def removeNonManifolds(self) -> Any
        doc:
          Remove non-manifolds
      - def removeNonManifoldPoints(self) -> Any
        doc:
          Remove non-manifold points
      @constmethod
      - def hasSelfIntersections(self) -> Any
        doc:
          Check if the mesh intersects itself
      @constmethod
      - def getSelfIntersections(self) -> Any
        doc:
          Returns a tuple of indices of intersecting triangles
      - def fixSelfIntersections(self) -> Any
        doc:
          Repair self-intersections
      - def removeFoldsOnSurface(self) -> Any
        doc:
          Remove folds on surfaces
      @constmethod
      - def hasNonUniformOrientedFacets(self) -> Any
        doc:
          Check if the mesh has facets with inconsistent orientation
      @constmethod
      - def countNonUniformOrientedFacets(self) -> Any
        doc:
          Get the number of wrong oriented facets
      @constmethod
      - def getNonUniformOrientedFacets(self) -> Any
        doc:
          Get a tuple of wrong oriented facets
      @constmethod
      - def hasInvalidPoints(self) -> Any
        doc:
          Check if the mesh has points with invalid coordinates (NaN)
      - def removeInvalidPoints(self) -> Any
        doc:
          Remove points with invalid coordinates (NaN)
      @constmethod
      - def hasPointsOnEdge(self) -> Any
        doc:
          Check if points lie on edges
      - def removePointsOnEdge(self, **kwargs) -> Any
        doc:
          removePointsOnEdge(FillBoundary=False)
          Remove points that lie on edges.
          If FillBoundary is True then the holes by removing the affected facets
          will be re-filled.
      @constmethod
      - def hasInvalidNeighbourhood(self) -> Any
        doc:
          Check if the mesh has invalid neighbourhood indices
      @constmethod
      - def hasPointsOutOfRange(self) -> Any
        doc:
          Check if the mesh has point indices that are out of range
      @constmethod
      - def hasFacetsOutOfRange(self) -> Any
        doc:
          Check if the mesh has facet indices that are out of range
      @constmethod
      - def hasCorruptedFacets(self) -> Any
        doc:
          Check if the mesh has corrupted facets
      @constmethod
      - def countComponents(self) -> Any
        doc:
          Get the number of topologic independent areas
      - def removeComponents(self) -> Any
        doc:
          Remove components with less or equal to number of given facets
      - def fixIndices(self) -> Any
        doc:
          Repair any invalid indices
      - def fixCaps(self) -> Any
        doc:
          Repair caps by swapping the edge
      - def fixDeformations(self) -> Any
        doc:
          Repair deformed facets
      - def fixDegenerations(self) -> Any
        doc:
          Remove degenerated facets
      - def removeDuplicatedPoints(self) -> Any
        doc:
          Remove duplicated points
      - def removeDuplicatedFacets(self) -> Any
        doc:
          Remove duplicated facets
      - def refine(self) -> Any
        doc:
          Refine the mesh
      - def splitEdges(self) -> Any
        doc:
          Split all edges
      - def splitEdge(self) -> Any
        doc:
          Split edge
      - def splitFacet(self) -> Any
        doc:
          Split facet
      - def swapEdge(self) -> Any
        doc:
          Swap the common edge with the neighbour
      - def collapseEdge(self) -> Any
        doc:
          Remove an edge and both facets that share this edge
      - def collapseFacet(self) -> Any
        doc:
          Remove a facet
      - def collapseFacets(self) -> Any
        doc:
          Remove a list of facets
      - def insertVertex(self) -> Any
        doc:
          Insert a vertex into a facet
      - def snapVertex(self) -> Any
        doc:
          Insert a new facet at the border
      @constmethod
      - def printInfo(self) -> Any
        doc:
          Get detailed information about the mesh
      @constmethod
      - def foraminate(self) -> Any
        doc:
          Get a list of facet indices and intersection points
      - def cut(self) -> Any
        doc:
          Cuts the mesh with a given closed polygon
          cut(list, int) -> None
          The argument list is an array of points, a polygon
          The argument int is the mode: 0=inner, 1=outer
      - def trim(self) -> Any
        doc:
          Trims the mesh with a given closed polygon
          trim(list, int) -> None
          The argument list is an array of points, a polygon
          The argument int is the mode: 0=inner, 1=outer
      - def trimByPlane(self) -> Any
        doc:
          Trims the mesh with a given plane
          trimByPlane(Vector, Vector) -> None
          The plane is defined by a base and normal vector. Depending on the
          direction of the normal the part above or below will be kept.
      @constmethod
      - def harmonizeNormals(self) -> Any
        doc:
          Adjust wrong oriented facets
      @constmethod
      - def flipNormals(self) -> Any
        doc:
          Flip the mesh normals
      @constmethod
      - def fillupHoles(self) -> Any
        doc:
          Fillup holes
      @constmethod
      - def smooth(self, **kwargs) -> Any
        doc:
          Smooth the mesh
          smooth([iteration=1,maxError=FLT_MAX])
      - def decimate(self) -> Any
        doc:
          Decimate the mesh
          decimate(tolerance(Float), reduction(Float))
          tolerance: maximum error
          reduction: reduction factor must be in the range [0.0,1.0]
          Example:
          mesh.decimate(0.5, 0.1) # reduction by up to 10 percent
          mesh.decimate(0.5, 0.9) # reduction by up to 90 percent
      - def mergeFacets(self) -> Any
        doc:
          Merge facets to optimize topology
      @constmethod
      - def optimizeTopology(self) -> Any
        doc:
          Optimize the edges to get nicer facets
      @constmethod
      - def optimizeEdges(self) -> Any
        doc:
          Optimize the edges to get nicer facets
      @constmethod
      - def nearestFacetOnRay(self) -> Any
        doc:
          nearestFacetOnRay(tuple, tuple) -> dict
          Get the index and intersection point of the nearest facet to a ray.
          The first parameter is a tuple of three floats the base point of the ray,
          the second parameter is ut uple of three floats for the direction.
          The result is a dictionary with an index and the intersection point or
          an empty dictionary if there is no intersection.
      @constmethod
      - def getPlanarSegments(self) -> Any
        doc:
          getPlanarSegments(dev,[min faces=0]) -> list
          Get all planes of the mesh as segment.
          In the worst case each triangle can be regarded as single
          plane if none of its neighbours is coplanar.
      @constmethod
      - def getSegmentsOfType(self) -> Any
        doc:
          getSegmentsOfType(type, dev,[min faces=0]) -> list
          Get all segments of type.
          Type can be Plane, Cylinder or Sphere
      @constmethod
      - def getSegmentsByCurvature(self) -> Any
        doc:
          getSegmentsByCurvature(list) -> list
          The argument list gives a list if tuples where it defines the preferred maximum curvature,
          the preferred minimum curvature, the tolerances and the number of minimum faces for the segment.
          Example:
          c=(1.0, 0.0, 0.1, 0.1, 500) # search for a cylinder with radius 1.0
          p=(0.0, 0.0, 0.1, 0.1, 500) # search for a plane
          mesh.getSegmentsByCurvature([c,p])
      @constmethod
      - def getCurvaturePerVertex(self) -> Any
        doc:
          getCurvaturePerVertex() -> list
          The items in the list contains minimum and maximum curvature with their directions
```

```text theme={null}
MODULE Mod/Mesh/App/MeshFeature.pyi
classes:
  class MeshFeature(GeoFeature)
    doc:
      The Mesh::Feature class handles meshes.
      The Mesh.MeshFeature() function is for internal use only and cannot be used to create instances of this class.
      Therefore you must have a reference to a document, e.g. 'd' then you can create an instance with
      d.addObject("Mesh::Feature").
    methods:
      - def countPoints(self) -> Any
        doc:
          Return the number of vertices of the mesh object
      - def countFacets(self) -> Any
        doc:
          Return the number of facets of the mesh object
      - def harmonizeNormals(self) -> Any
        doc:
          Adjust wrong oriented facets
      - def smooth(self) -> Any
        doc:
          Smooth the mesh data
      - def decimate(self) -> Any
        doc:
          Decimate the mesh
          decimate(tolerance(Float), reduction(Float))
          tolerance: maximum error
          reduction: reduction factor must be in the range [0.0,1.0]
          Example:
          mesh.decimate(0.5, 0.1) # reduction by up to 10 percent
          mesh.decimate(0.5, 0.9) # reduction by up to 90 percent
        
          or
        
          decimate(targwt size(int))
          mesh.decimate(mesh.CountFacets/2)
      - def removeNonManifolds(self) -> Any
        doc:
          Remove non-manifolds
      - def removeNonManifoldPoints(self) -> Any
        doc:
          Remove non-manifold points
      - def fixIndices(self) -> Any
        doc:
          Repair any invalid indices
      - def fixDegenerations(self) -> Any
        doc:
          Remove degenerated facets
      - def removeDuplicatedFacets(self) -> Any
        doc:
          Remove duplicated facets
      - def removeDuplicatedPoints(self) -> Any
        doc:
          Remove duplicated points
      - def fixSelfIntersections(self) -> Any
        doc:
          Repair self-intersections
      - def removeFoldsOnSurface(self) -> Any
        doc:
          Remove folds on surfaces
      - def removeInvalidPoints(self) -> Any
        doc:
          Remove points with invalid coordinates (NaN)
```

```text theme={null}
MODULE Mod/Mesh/App/MeshPoint.pyi
classes:
  class MeshPoint(PyObjectBase)
    doc:
      Point in mesh
      This is a point in a MeshObject. You can get it by e.g. iterating a
      mesh. The point has a connection to its mesh and allows therefore
      topological operations. It is also possible to create an unbounded mesh point e.g. to create
      a mesh. In this case the topological operations will fail. The same is
      when you cut the bound to the mesh by calling unbound().
    attributes:
      - Index: Final[int]
        doc:
          The index of this point in the MeshObject
      - Bound: Final[bool]
        doc:
          Bound state of the point
      - Normal: Final[Any]
        doc:
          Normal vector of the point computed by the surrounding mesh.
      - Vector: Final[Any]
        doc:
          Vector of the point.
      - x: Final[float]
        doc:
          The X component of the point.
      - y: Final[float]
        doc:
          The Y component of the point.
      - z: Final[float]
        doc:
          The Z component of the point.
    methods:
      - def unbound(self) -> Any
        doc:
          method unbound()
          Cut the connection to a MeshObject. The point becomes
          free and is more or less a simple vector/point.
          After calling unbound() no topological operation will
          work!
```

```text theme={null}
MODULE Mod/Mesh/Gui/ViewProviderMesh.pyi
classes:
  class ViewProviderMesh(ViewProviderGeometryObject)
    doc:
      This is the ViewProvider base class
    methods:
      - def setSelection(self) -> Any
        doc:
          Select list of facets
      - def addSelection(self) -> Any
        doc:
          Add list of facets to selection
      - def removeSelection(self) -> Any
        doc:
          Remove list of facets from selection
      - def invertSelection(self) -> Any
        doc:
          Invert the selection
      - def clearSelection(self) -> Any
        doc:
          Clear the selection
      - def highlightSegments(self) -> Any
        doc:
          Highlights the segments of a mesh with a given list of colors.
          The number of elements of this list must be equal to the number of mesh segments.
```

```text theme={null}
MODULE Mod/Part/App/Arc.pyi
classes:
  class Arc(TrimmedCurve)
    doc:
      Describes a portion of a curve
    methods:
      @overload
      - def __init__(self, circ: Geom_Circle, T: type=...) -> None
      @overload
      - def __init__(self, circ: Geom_Ellipse, T: type=...) -> None
      @overload
      - def __init__(self, p1: Vector, p2: Vector, p3: Vector, /) -> None
```

```text theme={null}
MODULE Mod/Part/App/ArcOfCircle.pyi
classes:
  class ArcOfCircle(ArcOfConic)
    doc:
      Describes a portion of a circle
    attributes:
      - Radius: float
        doc:
          The radius of the circle.
      - Circle: Final[object]
        doc:
          The internal circle representation
```

```text theme={null}
MODULE Mod/Part/App/ArcOfConic.pyi
classes:
  class ArcOfConic(TrimmedCurve)
    doc:
      Describes a portion of a conic
    attributes:
      - Location: Vector
        doc:
          Center of the conic.
      - Center: Vector
        doc:
          Deprecated -- use Location.
      - AngleXU: float
        doc:
          The angle between the X axis and the major axis of the conic.
      - Axis: Vector
        doc:
          The axis direction of the conic
      - XAxis: Vector
        doc:
          The X axis direction of the circle
      - YAxis: Vector
        doc:
          The Y axis direction of the circle
    methods:
      @overload
      - def __init__(self) -> None
```

```text theme={null}
MODULE Mod/Part/App/ArcOfEllipse.pyi
classes:
  class ArcOfEllipse(ArcOfConic)
    doc:
      Describes a portion of an ellipse
    attributes:
      - MajorRadius: float
        doc:
          The major radius of the ellipse.
      - MinorRadius: float
        doc:
          The minor radius of the ellipse.
      - Ellipse: Final[object]
        doc:
          The internal ellipse representation
    methods:
      @typing_only
      @overload
      - def __init__(self, ellipse: 'Part.Ellipse', u1: float, u2: float, sense: bool=..., /) -> None
```

```text theme={null}
MODULE Mod/Part/App/ArcOfHyperbola.pyi
classes:
  class ArcOfHyperbola(ArcOfConic)
    doc:
      Describes a portion of an hyperbola
    attributes:
      - MajorRadius: float
        doc:
          The major radius of the hyperbola.
      - MinorRadius: float
        doc:
          The minor radius of the hyperbola.
      - Hyperbola: Final[object]
        doc:
          The internal hyperbola representation
```

```text theme={null}
MODULE Mod/Part/App/ArcOfParabola.pyi
classes:
  class ArcOfParabola(ArcOfConic)
    doc:
      Describes a portion of a parabola
    attributes:
      - Focal: float
        doc:
          The focal length of the parabola.
      - Parabola: Final[object]
        doc:
          The internal parabola representation
```

```text theme={null}
MODULE Mod/Part/App/AttachEngine.pyi
classes:
  class AttachEngine(BaseClass)
    doc:
      AttachEngine abstract class - the functionality of AttachableObject, but outside of DocumentObject
    
      DeveloperDocu: AttachEngine abstract class
    attributes:
      - AttacherType: Final[str]
        doc:
          Type of engine: 3d, plane, line, or point.
      - Mode: str
        doc:
          Current attachment mode.
      - References: object
        doc:
          Current attachment mode.
      - AttachmentOffset: object
        doc:
          Current attachment mode.
      - Reverse: bool
        doc:
          If True, Z axis of attached placement is flipped. X axis is flipped in addition (CS has to remain right-handed).
      - Parameter: float
        doc:
          Value of parameter for some curve attachment modes. Range of 0..1 spans the length of the edge (parameter value can be outside of the range for curves that allow extrapolation.
      - CompleteModeList: Final[list]
        doc:
          List of all attachment modes of all AttachEngines. This is the list of modes in MapMode enum properties of AttachableObjects.
      - ImplementedModes: Final[list]
        doc:
          List of all attachment modes of all AttachEngines. This is the list of modes in MapMode enum properties of AttachableObjects.
      - CompleteRefTypeList: Final[list]
        doc:
          List of all reference shape types recognized by AttachEngine.
    methods:
      - def getModeInfo(self, mode: str, /) -> dict
        doc:
          getModeInfo(mode): returns supported reference combinations, user-friendly name, and so on.
      - def getRefTypeOfShape(self, shape: str, /) -> str
        doc:
          getRefTypeOfShape(shape): returns shape type as interpreted by AttachEngine. Returns a string.
      - def isFittingRefType(self, type_shape: str, type_needed: str, /) -> bool
        doc:
          isFittingRefType(type_shape, type_needed): tests if shape type, specified by type_shape (string), fits a type required by attachment mode type_needed (string). e.g. 'Circle' fits a requirement of 'Edge', and 'Curve' doesn't fit if a 'Circle' is required.
      - def downgradeRefType(self, type: str, /) -> str
        doc:
          downgradeRefType(type): returns next more general type. E.g. downgradeType('Circle') yields 'Curve'.
      - def getRefTypeInfo(self, type: str, /) -> dict
        doc:
          getRefTypeInfo(type): returns information (dict) on shape type. Keys:'UserFriendlyName', 'TypeIndex', 'Rank'. Rank is the number of times reftype can be downgraded, before it becomes 'Any'.
      @constmethod
      - def copy(self) -> 'AttachEngine'
        doc:
          copy(): returns a new instance of AttachEngine.
      @constmethod
      - def calculateAttachedPlacement(self, orig_placement: Placement, /) -> Optional[Placement]
        doc:
          calculateAttachedPlacement(orig_placement): returns result of attachment, based
          on current Mode, References, etc. AttachmentOffset is included.
        
          original_placement is the previous placement of the object being attached. It
          is used to preserve orientation for Translate attachment mode. For other modes,
          it is ignored.
        
          Returns the new placement. If not attached, returns None. If attachment fails,
          an exception is raised.
      - def suggestModes(self) -> dict
        doc:
          suggestModes(): runs mode suggestion routine and returns a dictionary with
          results and supplementary information.
        
          Keys:
          'allApplicableModes': list of modes that can accept current references. Note
          that it is only a check by types, and does not guarantee the modes will
          actually work.
        
          'bestFitMode': mode that fits current references best. Note that the mode may
          not be valid for the set of references; check for if 'message' is 'OK'.
        
          'error': error message for when 'message' is 'UnexpectedError' or
          'LinkBroken'.
        
          'message': general result of suggestion. 'IncompatibleGeometry', 'NoModesFit':
          no modes accept current set of references; 'OK': some modes do accept current
          set of references (though it's not guarantted the modes will work - surrestor
          only checks for correct types); 'UnexpectedError': should never happen.
        
          'nextRefTypeHint': what more can be added to references to reach other modes
          ('reachableModes' provide more extended information on this)
        
          'reachableModes': a dict, where key is mode, and value is a list of sequences
          of references that can be added to fit that mode.
        
          'references_Types': a list of types of geometry linked by references (that's
          the input information for suggestor, actually).
      - def readParametersFromFeature(self, document_object: DocumentObject, /) -> None
        doc:
          readParametersFromFeature(document_object): sets AttachEngine parameters (References, Mode, etc.) by reading out properties of AttachableObject-derived feature.
      - def writeParametersToFeature(self, document_object: DocumentObject, /) -> None
        doc:
          writeParametersToFeature(document_object): updates properties of
          AttachableObject-derived feature with current AttachEngine parameters
          (References, Mode, etc.).
        
          Warning: if a feature linked by AttachEngine.References was deleted, this method
          will crash FreeCAD-compatible runtime.
```

```text theme={null}
MODULE Mod/Part/App/AttachExtension.pyi
classes:
  class AttachExtension(DocumentObjectExtension)
    doc:
      This object represents an attachable object with OCC shape.
    attributes:
      - Attacher: Final[Any]
        doc:
          AttachEngine object driving this AttachableObject. Returns a copy.
    methods:
      - def positionBySupport(self) -> bool
        doc:
          positionBySupport() -> bool
        
          Reposition object based on AttachmentSupport, MapMode and MapPathParameter properties.
          Returns True if attachment calculation was successful, false if object is not attached and Placement wasn't updated,
          and raises an exception if attachment calculation fails.
      - def changeAttacherType(self, typename: str, /) -> None
        doc:
          changeAttacherType(typename) -> None
        
          Changes Attacher class of this object.
          typename: string. The following are accepted so far:
          'Attacher::AttachEngine3D'
          'Attacher::AttachEnginePlane'
          'Attacher::AttachEngineLine'
          'Attacher::AttachEnginePoint'
```

```text theme={null}
MODULE Mod/Part/App/BRepFeat/MakePrism.pyi
classes:
  class MakePrism(PyObjectBase)
    doc:
      Describes functions to build prism features.
    methods:
      - def init(self, **kwargs) -> None
        doc:
          Initializes this algorithm for building prisms along surfaces.
          A face Pbase is selected in the shape Sbase
          to serve as the basis for the prism. The orientation
          of the prism will be defined by the vector Direction.
        
          Fuse offers a choice between:
          -   removing matter with a Boolean cut using the setting 0
          -   adding matter with Boolean fusion using the setting 1.
          The sketch face Skface serves to determine
          the type of operation. If it is inside the basis
          shape, a local operation such as glueing can be performed.
      - def add(self, **kwargs) -> None
        doc:
          Indicates that the edge will slide on the face.
          Raises ConstructionError if the  face does not belong to the
          basis shape, or the edge to the prismed shape.
      - def perform(self, **kwargs) -> None
        doc:
          Assigns one of the following semantics.
          1. to a height Length
          2. to a face Until
          3. from a face From to a height Until. Reconstructs the feature topologically according to the semantic option chosen.
      - def performUntilEnd(self) -> None
        doc:
          Realizes a semi-infinite prism, limited by the
          position of the prism base. All other faces extend infinitely.
      - def performFromEnd(self) -> None
        doc:
          Realizes a semi-infinite prism, limited by the face Funtil.
      - def performThruAll(self) -> None
        doc:
          Builds an infinite prism. The infinite descendants will not be kept in the result.
      - def performUntilHeight(self) -> None
        doc:
          Assigns both a limiting shape, Until from TopoDS_Shape
          and a height, Length at which to stop generation of the prism feature.
      @constmethod
      - def curves(self) -> List
        doc:
          Returns the list of curves S parallel to the axis of the prism.
      @constmethod
      - def barycCurve(self) -> object
        doc:
          Generates a curve along the center of mass of the primitive.
      @constmethod
      - def shape(self) -> object
        doc:
          Returns a shape built by the shape construction algorithm.
```

```text theme={null}
MODULE Mod/Part/App/BRepOffsetAPI_MakeFilling.pyi
classes:
  class BRepOffsetAPI_MakeFilling(PyObjectBase)
    doc:
      N-Side Filling
    methods:
      - def setConstrParam(self, *, Tol2d: float=1e-05, Tol3d: float=0.0001, TolAng: float=0.01, TolCurv: float=0.1) -> None
        doc:
          setConstrParam(Tol2d=0.00001, Tol3d=0.0001, TolAng=0.01, TolCurv=0.1)
          Sets the values of Tolerances used to control the constraint.
      - def setResolParam(self, *, Degree: int=3, NbPtsOnCur: int=15, NbIter: int=2, Anisotropy: bool=False) -> None
        doc:
          setResolParam(Degree=3, NbPtsOnCur=15, NbIter=2, Anisotropy=False)
          Sets the parameters used for resolution.
      - def setApproxParam(self, *, MaxDeg: int=8, MaxSegments: int=9) -> None
        doc:
          setApproxParam(MaxDeg=8, MaxSegments=9)
          Sets the parameters used to approximate the filling the surface
      - def loadInitSurface(self, face: TopoShapeFace, /) -> None
        doc:
          loadInitSurface(face)
          Loads the initial surface.
      @overload
      - def add(self, Edge: TopoShapeEdge, Order: int, *, IsBound: bool=True) -> None
      @overload
      - def add(self, Edge: TopoShapeEdge, Support: TopoShapeFace, Order: int, *, IsBound: bool=True) -> None
      @overload
      - def add(self, Support: TopoShapeFace, Order: int) -> None
      @overload
      - def add(self, Point: Point) -> None
      @overload
      - def add(self, U: float, V: float, Support: TopoShapeFace, Order: int) -> None
      - def add(self, **kwargs) -> None
        doc:
          add(Edge, Order, IsBound=True)
          add(Edge, Support, Order, IsBound=True)
          add(Support, Order)
          add(Point)
          add(U, V, Support, Order)
          Adds a new constraint.
      - def build(self) -> None
        doc:
          Builds the resulting faces.
      - def isDone(self) -> bool
        doc:
          Tests whether computation of the filling plate has been completed.
      @overload
      - def G0Error(self, /) -> float
      @overload
      - def G0Error(self, arg: int, /) -> float
      - def G0Error(self, arg: int=0, /) -> float
        doc:
          G0Error([int])
          Returns the maximum distance between the result and the constraints.
      @overload
      - def G1Error(self, /) -> float
      @overload
      - def G1Error(self, arg: int, /) -> float
      - def G1Error(self, arg: int=0, /) -> float
        doc:
          G1Error([int])
          Returns the maximum angle between the result and the constraints.
      @overload
      - def G2Error(self, /) -> float
      @overload
      - def G2Error(self, arg: int, /) -> float
      - def G2Error(self, arg: int=0, /) -> float
        doc:
          G2Error([int])
          Returns the greatest difference in curvature between the result and the constraints.
      - def shape(self) -> TopoShape
        doc:
          shape()
          Returns the resulting shape.
```

```text theme={null}
MODULE Mod/Part/App/BRepOffsetAPI_MakePipeShell.pyi
classes:
  class BRepOffsetAPI_MakePipeShell(PyObjectBase)
    doc:
      Low level API to create a PipeShell using OCC API
    
      Ref: https://dev.opencascade.org/doc/refman/html/class_b_rep_offset_a_p_i___make_pipe_shell.html
    methods:
      - def setFrenetMode(self, mode: bool, /) -> None
        doc:
          setFrenetMode(True|False)
          Sets a Frenet or a CorrectedFrenet trihedron to perform the sweeping.
          True  = Frenet
          False = CorrectedFrenet
      - def setTrihedronMode(self, point: Vector, direction: Vector, /) -> None
        doc:
          setTrihedronMode(point,direction)
          Sets a fixed trihedron to perform the sweeping.
          All sections will be parallel.
      - def setBiNormalMode(self, direction: Vector, /) -> None
        doc:
          setBiNormalMode(direction)
          Sets a fixed BiNormal direction to perform the sweeping.
          Angular relations between the section(s) and the BiNormal direction will be constant.
      - def setSpineSupport(self, shape: TopoShape, /) -> None
        doc:
          setSpineSupport(shape)
          Sets support to the spine to define the BiNormal of the trihedron, like the normal to the surfaces.
          Warning: To be effective, Each edge of the spine must have an representation on one face of SpineSupport.
      - def setAuxiliarySpine(self, wire: TopoShape, CurvilinearEquivalence: bool, TypeOfContact: int, /) -> None
        doc:
          setAuxiliarySpine(wire, CurvilinearEquivalence, TypeOfContact)
          Sets an auxiliary spine to define the Normal.
        
          CurvilinearEquivalence = bool
          For each Point of the Spine P, an Point Q is evalued on AuxiliarySpine.
          If CurvilinearEquivalence=True Q split AuxiliarySpine with the same length ratio than P split Spine.
        
          * OCC >= 6.7
          TypeOfContact = long
          0: No contact
          1: Contact
          2: Contact On Border (The auxiliary spine becomes a boundary of the swept surface)
      @overload
      - def add(self, Profile: TopoShape, *, WithContact: bool=False, WithCorrection: bool=False) -> None
      @overload
      - def add(self, Profile: TopoShape, Location: TopoShape, *, WithContact: bool=False, WithCorrection: bool=False) -> None
      - def add(self, **kwargs) -> None
        doc:
          add(shape Profile, bool WithContact=False, bool WithCorrection=False)
          add(shape Profile, vertex Location, bool WithContact=False, bool WithCorrection=False)
          Adds the section Profile to this framework.
          First and last sections may be punctual, so the shape Profile may be both wire and vertex.
          If WithContact is true, the section is translated to be in contact with the spine.
          If WithCorrection is true, the section is rotated to be orthogonal to the spine tangent in the correspondent point.
      - def remove(self, Profile: TopoShape, /) -> None
        doc:
          remove(shape Profile)
          Removes the section Profile from this framework.
      - def isReady(self) -> bool
        doc:
          isReady()
          Returns true if this tool object is ready to build the shape.
      - def getStatus(self) -> int
        doc:
          getStatus()
          Get a status, when Simulate or Build failed.
      - def makeSolid(self) -> bool
        doc:
          makeSolid()
          Transforms the sweeping Shell in Solid. If a propfile is not closed returns False.
      - def setTolerance(self, tol3d: float, boundTol: float, tolAngular: float, /) -> None
        doc:
          setTolerance( tol3d, boundTol, tolAngular)
          Tol3d = 3D tolerance
          BoundTol = boundary tolerance
          TolAngular = angular tolerance
      - def setTransitionMode(self, mode: int, /) -> None
        doc:
          0: BRepBuilderAPI_Transformed
          1: BRepBuilderAPI_RightCorner
          2: BRepBuilderAPI_RoundCorner
      - def firstShape(self) -> TopoShape
        doc:
          firstShape()
          Returns the Shape of the bottom of the sweep.
      - def lastShape(self) -> TopoShape
        doc:
          lastShape()
          Returns the Shape of the top of the sweep.
      - def build(self) -> None
        doc:
          build()
          Builds the resulting shape.
      - def shape(self) -> TopoShape
        doc:
          shape()
          Returns the resulting shape.
      - def generated(self, S: TopoShape, /) -> list[TopoShape]
        doc:
          generated(shape S)
          Returns a list of new shapes generated from the shape S by the shell-generating algorithm.
      - def setMaxDegree(self, degree: int, /) -> None
        doc:
          setMaxDegree(int degree)
          Define the maximum V degree of resulting surface.
      - def setMaxSegments(self, num: int, /) -> None
        doc:
          setMaxSegments(int num)
          Define the maximum number of spans in V-direction on resulting surface.
      - def setForceApproxC1(self, flag: bool, /) -> None
        doc:
          setForceApproxC1(bool)
          Set the flag that indicates attempt to approximate a C1-continuous surface if a swept surface proved to be C0.
      - def simulate(self, nbsec: int, /) -> None
        doc:
          simulate(int nbsec)
          Simulates the resulting shape by calculating the given number of cross-sections.
```

```text theme={null}
MODULE Mod/Part/App/BSplineCurve.pyi
classes:
  class BSplineCurve(BoundedCurve)
    doc:
      Describes a B-Spline curve in 3D space
    attributes:
      - Degree: Final[int]
        doc:
          Returns the polynomial degree of this B-Spline curve.
      - MaxDegree: Final[int]
        doc:
          Returns the value of the maximum polynomial degree of any
          B-Spline curve curve. This value is 25.
      - NbPoles: Final[int]
        doc:
          Returns the number of poles of this B-Spline curve.
      - NbKnots: Final[int]
        doc:
          Returns the number of knots of this B-Spline curve.
      - StartPoint: Final[Vector]
        doc:
          Returns the start point of this B-Spline curve.
      - EndPoint: Final[Vector]
        doc:
          Returns the end point of this B-Spline curve.
      - FirstUKnotIndex: Final[int]
        doc:
          Returns the index in the knot array of the knot
          corresponding to the first or last parameter
          of this B-Spline curve.
      - LastUKnotIndex: Final[int]
        doc:
          Returns the index in the knot array of the knot
          corresponding to the first or last parameter
          of this B-Spline curve.
      - KnotSequence: Final[List[float]]
        doc:
          Returns the knots sequence of this B-Spline curve.
    methods:
      @constmethod
      - def __reduce__(self) -> Any
        doc:
          __reduce__()
          Serialization of Part.BSplineCurve objects
      @constmethod
      - def isRational(self) -> bool
        doc:
          Returns true if this B-Spline curve is rational.
          A B-Spline curve is rational if, at the time of construction,
          the weight table has been initialized.
      @constmethod
      - def isPeriodic(self) -> bool
        doc:
          Returns true if this BSpline curve is periodic.
      @constmethod
      - def isClosed(self) -> bool
        doc:
          Returns true if the distance between the start point and end point of
          this B-Spline curve is less than or equal to gp::Resolution().
      - def increaseDegree(self, Degree: int=..., /) -> None
        doc:
          increase(Int=Degree)
          Increases the degree of this B-Spline curve to Degree.
          As a result, the poles, weights and multiplicities tables
          are modified; the knots table is not changed. Nothing is
          done if Degree is less than or equal to the current degree.
      @overload
      - def increaseMultiplicity(self, index: int, mult: int, /) -> None
      @overload
      - def increaseMultiplicity(self, start: int, end: int, mult: int, /) -> None
      - def increaseMultiplicity(self, *args, **kwargs) -> None
        doc:
          increaseMultiplicity(int index, int mult)
          increaseMultiplicity(int start, int end, int mult)
          Increases multiplicity of knots up to mult.
        
          index: the index of a knot to modify (1-based)
          start, end: index range of knots to modify.
          If mult is lower or equal to the current multiplicity nothing is done.
          If mult is higher than the degree the degree is used.
      - def incrementMultiplicity(self, start: int, end: int, mult: int, /) -> None
        doc:
          incrementMultiplicity(int start, int end, int mult)
        
          Raises multiplicity of knots by mult.
        
          start, end: index range of knots to modify.
      - def insertKnot(self, u: float, mult: int=1, tol: float=0.0, /) -> None
        doc:
          insertKnot(u, mult = 1, tol = 0.0)
        
          Inserts a knot value in the sequence of knots. If u is an existing knot the
          multiplicity is increased by mult.
      - def insertKnots(self, list_of_floats: List[float], list_of_ints: List[int], tol: float=0.0, bool_add: bool=True, /) -> None
        doc:
          insertKnots(list_of_floats, list_of_ints, tol = 0.0, bool_add = True)
        
          Inserts a set of knots values in the sequence of knots.
        
          For each u = list_of_floats[i], mult = list_of_ints[i]
        
          If u is an existing knot the multiplicity is increased by mult if bool_add is
          True, otherwise increased to mult.
        
          If u is not on the parameter range nothing is done.
        
          If the multiplicity is negative or null nothing is done. The new multiplicity
          is limited to the degree.
        
          The tolerance criterion for knots equality is the max of Epsilon(U) and ParametricTolerance.
      - def removeKnot(self, Index: int, M: int, tol: float, /) -> bool
        doc:
          removeKnot(Index, M, tol)
        
          Reduces the multiplicity of the knot of index Index to M.
          If M is equal to 0, the knot is removed.
          With a modification of this type, the array of poles is also modified.
          Two different algorithms are systematically used to compute the new
          poles of the curve. If, for each pole, the distance between the pole
          calculated using the first algorithm and the same pole calculated using
          the second algorithm, is less than Tolerance, this ensures that the curve
          is not modified by more than Tolerance. Under these conditions, true is
          returned; otherwise, false is returned.
        
          A low tolerance is used to prevent modification of the curve.
          A high tolerance is used to 'smooth' the curve.
      - def segment(self, u1: float, u2: float, /) -> None
        doc:
          segment(u1,u2)
        
          Modifies this B-Spline curve by segmenting it.
      @constmethod
      - def split(self, u: float, tolerance: float=0.0, /) -> tuple[BSplineCurve, BSplineCurve]
        doc:
          split(u, tolerance=0.0)
        
          Splits this B-Spline curve at parameter u and returns the two resulting curves.
      - def setKnot(self, knot: float, index: int, /) -> None
        doc:
          Set a knot of the B-Spline curve.
      @constmethod
      - def getKnot(self, index: int, /) -> float
        doc:
          Get a knot of the B-Spline curve.
      - def setKnots(self, knots: List[float], /) -> None
        doc:
          Set knots of the B-Spline curve.
      @constmethod
      - def getKnots(self) -> List[float]
        doc:
          Get all knots of the B-Spline curve.
      - def setPole(self, P: Vector, Index: int, /) -> None
        doc:
          Modifies this B-Spline curve by assigning P
          to the pole of index Index in the poles table.
      @constmethod
      - def getPole(self, Index: int, /) -> Vector
        doc:
          Get a pole of the B-Spline curve.
      @constmethod
      - def getPoles(self) -> List[Vector]
        doc:
          Get all poles of the B-Spline curve.
      - def setWeight(self, weight: float, index: int, /) -> None
        doc:
          Set a weight of the B-Spline curve.
      @constmethod
      - def getWeight(self, index: int, /) -> float
        doc:
          Get a weight of the B-Spline curve.
      @constmethod
      - def getWeights(self) -> List[float]
        doc:
          Get all weights of the B-Spline curve.
      @constmethod
      - def getPolesAndWeights(self) -> List[float]
        doc:
          Returns the table of poles and weights in homogeneous coordinates.
      @constmethod
      - def getResolution(self, Tolerance3D: float, /) -> float
        doc:
          Computes for this B-Spline curve the parametric tolerance (UTolerance)
          for a given 3D tolerance (Tolerance3D).
          If f(t) is the equation of this B-Spline curve, the parametric tolerance
          ensures that:
          |t1-t0| < UTolerance =""==> |f(t1)-f(t0)| < Tolerance3D
      - def movePoint(self, U: float, P: Vector, Index1: int, Index2: int, /) -> tuple[int, int]
        doc:
          movePoint(U, P, Index1, Index2)
        
          Moves the point of parameter U of this B-Spline curve to P.
          Index1 and Index2 are the indexes in the table of poles of this B-Spline curve
          of the first and last poles designated to be moved.
        
          Returns: (FirstModifiedPole, LastModifiedPole). They are the indexes of the
          first and last poles which are effectively modified.
      - def setNotPeriodic(self) -> None
        doc:
          Changes this B-Spline curve into a non-periodic curve.
          If this curve is already non-periodic, it is not modified.
      - def setPeriodic(self) -> None
        doc:
          Changes this B-Spline curve into a periodic curve.
      - def setOrigin(self, Index: int, /) -> None
        doc:
          Assigns the knot of index Index in the knots table
          as the origin of this periodic B-Spline curve. As a consequence,
          the knots and poles tables are modified.
      @constmethod
      - def getMultiplicity(self, index: int, /) -> int
        doc:
          Returns the multiplicity of the knot of index
          from the knots table of this B-Spline curve.
      @constmethod
      - def getMultiplicities(self) -> List[int]
        doc:
          Returns the multiplicities table M of the knots of this B-Spline curve.
      @overload
      - def approximate(self, Points: List[Vector], DegMin: int=3, DegMax: int=8, Tolerance: float=0.001, Continuity: str='C2', LengthWeight: float=0.0, CurvatureWeight: float=0.0, TorsionWeight: float=0.0, Parameters: List[float]=None, ParamType: str='Uniform') -> None
      - def approximate(self, **kwargs) -> None
        doc:
          Replaces this B-Spline curve by approximating a set of points.
        
          The function accepts keywords as arguments.
        
          approximate(Points = list_of_points)
        
          Optional arguments :
        
          DegMin = integer (3) : Minimum degree of the curve.
          DegMax = integer (8) : Maximum degree of the curve.
          Tolerance = float (1e-3) : approximating tolerance.
          Continuity = string ('C2') : Desired continuity of the curve.
          Possible values : 'C0','G1','C1','G2','C2','C3','CN'
        
          LengthWeight = float, CurvatureWeight = float, TorsionWeight = float
          If one of these arguments is not null, the functions approximates the
          points using variational smoothing algorithm, which tries to minimize
          additional criterium:
          LengthWeight*CurveLength + CurvatureWeight*Curvature + TorsionWeight*Torsion
          Continuity must be C0, C1(with DegMax >= 3) or C2(with DegMax >= 5).
        
          Parameters = list of floats : knot sequence of the approximated points.
          This argument is only used if the weights above are all null.
        
          ParamType = string ('Uniform','Centripetal' or 'ChordLength')
          Parameterization type. Only used if weights and Parameters above aren't specified.
        
          Note : Continuity of the spline defaults to C2. However, it may not be applied if
          it conflicts with other parameters ( especially DegMax ).
      @overload
      @constmethod
      - def getCardinalSplineTangents(self, **kwargs) -> List[Vector]
      @constmethod
      - def getCardinalSplineTangents(self, **kwargs) -> List[Vector]
        doc:
          Compute the tangents for a Cardinal spline
      @overload
      - def interpolate(self, Points: List[Vector], PeriodicFlag: bool=False, Tolerance: float=1e-06, Parameters: List[float]=None, InitialTangent: Vector=None, FinalTangent: Vector=None, Tangents: List[Vector]=None, TangentFlags: List[bool]=None) -> None
      - def interpolate(self, **kwargs) -> None
        doc:
          Replaces this B-Spline curve by interpolating a set of points.
        
          The function accepts keywords as arguments.
        
          interpolate(Points = list_of_points)
        
          Optional arguments :
        
          PeriodicFlag = bool (False) : Sets the curve closed or opened.
          Tolerance = float (1e-6) : interpolating tolerance
        
          Parameters : knot sequence of the interpolated points.
          If not supplied, the function defaults to chord-length parameterization.
          If PeriodicFlag == True, one extra parameter must be appended.
        
          EndPoint Tangent constraints :
        
          InitialTangent = vector, FinalTangent = vector
          specify tangent vectors for starting and ending points
          of the BSpline. Either none, or both must be specified.
        
          Full Tangent constraints :
        
          Tangents = list_of_vectors, TangentFlags = list_of_bools
          Both lists must have the same length as Points list.
          Tangents specifies the tangent vector of each point in Points list.
          TangentFlags (bool) activates or deactivates the corresponding tangent.
          These arguments will be ignored if EndPoint Tangents (above) are also defined.
        
          Note : Continuity of the spline defaults to C2. However, if periodic, or tangents
          are supplied, the continuity will drop to C1.
      - def buildFromPoles(self, poles: List[Vector], periodic: bool=False, degree: int=3, interpolate: bool=False, /) -> None
        doc:
          Builds a B-Spline by a list of poles.
          arguments: poles (sequence of Base.Vector), [periodic (default is False), degree (default is 3), interpolate (default is False)]
        
          Examples:
          from FreeCAD-compatible runtime import Base
          import Part
          V = Base.Vector
          poles = [V(-2, 2, 0),V(0, 2, 1),V(2, 2, 0),V(2, -2, 0),V(0, -2, 1),V(-2, -2, 0)]
        
          # non-periodic spline
          n=Part.BSplineCurve()
          n.buildFromPoles(poles)
          Part.show(n.toShape())
        
          # periodic spline
          n=Part.BSplineCurve()
          n.buildFromPoles(poles, True)
          Part.show(n.toShape())
      @overload
      - def buildFromPolesMultsKnots(self, poles: List[Vector], mults: List[int], knots: List[float], periodic: bool, degree: int, weights: List[float]=None, CheckRational: bool=False) -> None
      - def buildFromPolesMultsKnots(self, **kwargs) -> None
        doc:
          Builds a B-Spline by a lists of Poles, Mults, Knots.
          arguments: poles (sequence of Base.Vector), [mults , knots, periodic, degree, weights (sequence of float), CheckRational]
        
          Examples:
          from FreeCAD-compatible runtime import Base
          import Part
          V=Base.Vector
          poles=[V(-10,-10),V(10,-10),V(10,10),V(-10,10)]
        
          # non-periodic spline
          n=Part.BSplineCurve()
          n.buildFromPolesMultsKnots(poles,(3,1,3),(0,0.5,1),False,2)
          Part.show(n.toShape())
        
          # periodic spline
          p=Part.BSplineCurve()
          p.buildFromPolesMultsKnots(poles,(1,1,1,1,1),(0,0.25,0.5,0.75,1),True,2)
          Part.show(p.toShape())
        
          # periodic and rational spline
          r=Part.BSplineCurve()
          r.buildFromPolesMultsKnots(poles,(1,1,1,1,1),(0,0.25,0.5,0.75,1),True,2,(1,0.8,0.7,0.2))
          Part.show(r.toShape())
      @constmethod
      - def toBezier(self) -> List[BezierCurve]
        doc:
          Build a list of Bezier splines.
      @constmethod
      - def toBiArcs(self, tolerance: float, /) -> List[Arc]
        doc:
          Build a list of arcs and lines to approximate the B-spline.
          toBiArcs(tolerance) -> list.
      - def join(self, other: 'BSplineCurve', /) -> None
        doc:
          Build a new spline by joining this and a second spline.
      - def makeC1Continuous(self, tol: float=1e-06, ang_tol: float=1e-07, /) -> 'BSplineCurve'
        doc:
          makeC1Continuous(tol = 1e-6, ang_tol = 1e-7)
          Reduces as far as possible the multiplicities of the knots of this BSpline
          (keeping the geometry). It returns a new BSpline, which could still be C0.
          tol is a geometrical tolerance.
          The tol_ang is angular tolerance, in radians. It sets tolerable angle mismatch
          of the tangents on the left and on the right to decide if the curve is G1 or
          not at a given point.
      - def scaleKnotsToBounds(self, u0: float=0.0, u1: float=1.0, /) -> None
        doc:
          Scales the knots list to fit the specified bounds.
          The shape of the curve is not modified.
          bspline_curve.scaleKnotsToBounds(u0, u1)
          Default arguments are (0.0, 1.0)
```

```text theme={null}
MODULE Mod/Part/App/BSplineSurface.pyi
classes:
  class BSplineSurface(GeometrySurface)
    doc:
      Describes a B-Spline surface in 3D space
    
      DeveloperDocu: Describes a B-Spline surface in 3D space
    attributes:
      - UDegree: Final[int]
        doc:
          Returns the degree of this B-Spline surface in the u parametric direction.
      - VDegree: Final[int]
        doc:
          Returns the degree of this B-Spline surface in the v parametric direction.
      - MaxDegree: Final[int]
        doc:
          Returns the value of the maximum polynomial degree of any
          B-Spline surface surface in either parametric directions.
          This value is 25.
      - NbUPoles: Final[int]
        doc:
          Returns the number of poles of this B-Spline surface in the u parametric direction.
      - NbVPoles: Final[int]
        doc:
          Returns the number of poles of this B-Spline surface in the v parametric direction.
      - NbUKnots: Final[int]
        doc:
          Returns the number of knots of this B-Spline surface in the u parametric direction.
      - NbVKnots: Final[int]
        doc:
          Returns the number of knots of this B-Spline surface in the v parametric direction.
      - FirstUKnotIndex: Final[Any]
        doc:
          Returns the index in the knot array associated with the u parametric direction,
          which corresponds to the first parameter of this B-Spline surface in the specified
          parametric direction.
        
          The isoparametric curves corresponding to these values are the boundary curves of
          this surface.
        
          Note: The index does not correspond to the first knot of the surface in the specified
          parametric direction unless the multiplicity of the first knot is equal to Degree + 1,
          where Degree is the degree of this surface in the corresponding parametric direction.
      - LastUKnotIndex: Final[Any]
        doc:
          Returns the index in the knot array associated with the u parametric direction,
          which corresponds to the last parameter of this B-Spline surface in the specified
          parametric direction.
        
          The isoparametric curves corresponding to these values are the boundary curves of
          this surface.
        
          Note: The index does not correspond to the first knot of the surface in the specified
          parametric direction unless the multiplicity of the last knot is equal to Degree + 1,
          where Degree is the degree of this surface in the corresponding parametric direction.
      - FirstVKnotIndex: Final[Any]
        doc:
          Returns the index in the knot array associated with the v parametric direction,
          which corresponds to the first parameter of this B-Spline surface in the specified
          parametric direction.
        
          The isoparametric curves corresponding to these values are the boundary curves of
          this surface.
        
          Note: The index does not correspond to the first knot of the surface in the specified
          parametric direction unless the multiplicity of the first knot is equal to Degree + 1,
          where Degree is the degree of this surface in the corresponding parametric direction.
      - LastVKnotIndex: Final[Any]
        doc:
          Returns the index in the knot array associated with the v parametric direction,
          which corresponds to the last parameter of this B-Spline surface in the specified
          parametric direction.
        
          The isoparametric curves corresponding to these values are the boundary curves of
          this surface.
        
          Note: The index does not correspond to the first knot of the surface in the specified
          parametric direction unless the multiplicity of the last knot is equal to Degree + 1,
          where Degree is the degree of this surface in the corresponding parametric direction.
      - UKnotSequence: Final[List[Any]]
        doc:
          Returns the knots sequence of this B-Spline surface in
          the u direction.
      - VKnotSequence: Final[List[Any]]
        doc:
          Returns the knots sequence of this B-Spline surface in
          the v direction.
    methods:
      @constmethod
      - def bounds(self) -> Any
        doc:
          Returns the parametric bounds (U1, U2, V1, V2) of this B-Spline surface.
      @constmethod
      - def isURational(self) -> Any
        doc:
          Returns false if the equation of this B-Spline surface is polynomial
          (e.g. non-rational) in the u or v parametric direction.
          In other words, returns false if for each row of poles, the associated
          weights are identical
      @constmethod
      - def isVRational(self) -> Any
        doc:
          Returns false if the equation of this B-Spline surface is polynomial
          (e.g. non-rational) in the u or v parametric direction.
          In other words, returns false if for each column of poles, the associated
          weights are identical
      @constmethod
      - def isUPeriodic(self) -> Any
        doc:
          Returns true if this surface is periodic in the u parametric direction.
      @constmethod
      - def isVPeriodic(self) -> Any
        doc:
          Returns true if this surface is periodic in the v parametric direction.
      @constmethod
      - def isUClosed(self) -> Any
        doc:
          Checks if this surface is closed in the u parametric direction.
          Returns true if, in the table of poles the first row and the last
          row are identical.
      @constmethod
      - def isVClosed(self) -> Any
        doc:
          Checks if this surface is closed in the v parametric direction.
          Returns true if, in the table of poles the first column and the
          last column are identical.
      - def increaseDegree(self, DegMin: int, DegMax: int, Continuity: int, Tolerance: float, X0: float=..., dX: float=..., Y0: float=..., dY: float=..., /) -> None
        doc:
          increase(Int=UDegree, int=VDegree)
          Increases the degrees of this B-Spline surface to UDegree and VDegree
          in the u and v parametric directions respectively.
          As a result, the tables of poles, weights and multiplicities are modified.
          The tables of knots is not changed.
        
          Note: Nothing is done if the given degree is less than or equal to the
          current degree in the corresponding parametric direction.
      - def increaseUMultiplicity(self) -> None
        doc:
          Increases the multiplicity in the u direction.
      - def increaseVMultiplicity(self) -> None
        doc:
          Increases the multiplicity in the v direction.
      - def incrementUMultiplicity(self) -> None
        doc:
          Increment the multiplicity in the u direction
      - def incrementVMultiplicity(self) -> None
        doc:
          Increment the multiplicity in the v direction
      - def insertUKnot(self, U: float, Index: int, Tolerance: float, /) -> None
        doc:
          insertUKnote(float U, int Index, float Tolerance) - Insert or override a knot
      - def insertUKnots(self, U: List[float], Mult: List[float], Tolerance: float, /) -> None
        doc:
          insertUKnote(List of float U, List of float Mult, float Tolerance) - Inserts knots.
      - def insertVKnot(self, V: float, Index: int, Tolerance: float, /) -> None
        doc:
          insertUKnote(float V, int Index, float Tolerance) - Insert or override a knot.
      - def insertVKnots(self, V: List[float], Mult: List[float], Tolerance: float, /) -> None
        doc:
          insertUKnote(List of float V, List of float Mult, float Tolerance) - Inserts knots.
      - def removeUKnot(self, M: int, Index: int, Tolerance: float, /) -> bool
        doc:
          Reduces to M the multiplicity of the knot of index Index in the given
          parametric direction. If M is 0, the knot is removed.
          With a modification of this type, the table of poles is also modified.
          Two different algorithms are used systematically to compute the new
          poles of the surface. For each pole, the distance between the pole
          calculated using the first algorithm and the same pole calculated using
          the second algorithm, is checked. If this distance is less than Tolerance
          it ensures that the surface is not modified by more than Tolerance.
          Under these conditions, the function returns true; otherwise, it returns
          false.
        
          A low tolerance prevents modification of the surface. A high tolerance
          'smoothes' the surface.
      - def removeVKnot(self, M: int, Index: int, Tolerance: float, /) -> bool
        doc:
          Reduces to M the multiplicity of the knot of index Index in the given
          parametric direction. If M is 0, the knot is removed.
          With a modification of this type, the table of poles is also modified.
          Two different algorithms are used systematically to compute the new
          poles of the surface. For each pole, the distance between the pole
          calculated using the first algorithm and the same pole calculated using
          the second algorithm, is checked. If this distance is less than Tolerance
          it ensures that the surface is not modified by more than Tolerance.
          Under these conditions, the function returns true; otherwise, it returns
          false.
        
          A low tolerance prevents modification of the surface. A high tolerance
          'smoothes' the surface.
      - def segment(self, U1: float, U2: float, V1: float, V2: float, /) -> None
        doc:
          Modifies this B-Spline surface by segmenting it between U1 and U2 in the
          u parametric direction and between V1 and V2 in the v parametric direction.
          Any of these values can be outside the bounds of this surface, but U2 must
          be greater than U1 and V2 must be greater than V1.
        
          All the data structure tables of this B-Spline surface are modified but the
          knots located between U1 and U2 in the u parametric direction, and between
          V1 and V2 in the v parametric direction are retained.
          The degree of the surface in each parametric direction is not modified.
      - def setUKnot(self, K: float, UIndex: int, M: int=..., /) -> None
        doc:
          Modifies this B-Spline surface by assigning the value K to the knot of index
          UIndex of the knots table corresponding to the u parametric direction.
          This modification remains relatively local, since K must lie between the values
          of the knots which frame the modified knot.
        
          You can also increase the multiplicity of the modified knot to M. Note however
          that it is not possible to decrease the multiplicity of a knot with this function.
      - def setVKnot(self, K: float, VIndex: int, M: int=..., /) -> None
        doc:
          Modifies this B-Spline surface by assigning the value K to the knot of index
          VIndex of the knots table corresponding to the v parametric direction.
          This modification remains relatively local, since K must lie between the values
          of the knots which frame the modified knot.
        
          You can also increase the multiplicity of the modified knot to M. Note however
          that it is not possible to decrease the multiplicity of a knot with this function.
      @constmethod
      - def getUKnot(self, UIndex: int, /) -> Any
        doc:
          Returns, for this B-Spline surface, in the u parametric direction
          the knot of index UIndex of the knots table.
      @constmethod
      - def getVKnot(self, VIndex: int, /) -> Any
        doc:
          Returns, for this B-Spline surface, in the v parametric direction
          the knot of index VIndex of the knots table.
      - def setUKnots(self, knots: List[Any], /) -> None
        doc:
          Changes all knots of this B-Spline surface in the u parametric
          direction. The multiplicity of the knots is not modified.
      - def setVKnots(self, knots: List[Any], /) -> None
        doc:
          Changes all knots of this B-Spline surface in the v parametric
          direction. The multiplicity of the knots is not modified.
      @constmethod
      - def getUKnots(self) -> List[Any]
        doc:
          Returns, for this B-Spline surface, the knots table
          in the u parametric direction
      @constmethod
      - def getVKnots(self) -> List[Any]
        doc:
          Returns, for this B-Spline surface, the knots table
          in the v parametric direction
      - def setPole(self, P: Any, UIndex: int, VIndex: int, Weight: float=..., /) -> None
        doc:
          Modifies this B-Spline surface by assigning P to the pole of
          index (UIndex, VIndex) in the poles table.
          The second syntax allows you also to change the weight of the
          modified pole. The weight is set to Weight. This syntax must
          only be used for rational surfaces.
          Modifies this B-Spline curve by assigning P to the pole of
          index Index in the poles table.
      - def setPoleCol(self, VIndex: int, values: List[Any], CPoleWeights: List[float], /) -> None
        doc:
          Modifies this B-Spline surface by assigning values to all or part
          of the column of poles of index VIndex, of this B-Spline surface.
          You can also change the weights of the modified poles. The weights
          are set to the corresponding values of CPoleWeights.
          These syntaxes must only be used for rational surfaces.
      - def setPoleRow(self, UIndex: int, values: List[Any], CPoleWeights: List[float], /) -> None
        doc:
          Modifies this B-Spline surface by assigning values to all or part
          of the row of poles of index UIndex, of this B-Spline surface.
          You can also change the weights of the modified poles. The weights
          are set to the corresponding values of CPoleWeights.
          These syntaxes must only be used for rational surfaces.
      @constmethod
      - def getPole(self, UIndex: int, VIndex: int, /) -> Any
        doc:
          Returns the pole of index (UIndex,VIndex) of this B-Spline surface.
      @constmethod
      - def getPoles(self) -> List[Any]
        doc:
          Returns the table of poles of this B-Spline surface.
      - def setWeight(self, Weight: float, UIndex: int, VIndex: int, /) -> None
        doc:
          Modifies this B-Spline surface by assigning the value Weight to the weight
          of the pole of index (UIndex, VIndex) in the poles tables of this B-Spline
          surface.
        
          This function must only be used for rational surfaces.
      - def setWeightCol(self, VIndex: int, CPoleWeights: List[float], /) -> None
        doc:
          Modifies this B-Spline surface by assigning values to all or part of the
          weights of the column of poles of index VIndex of this B-Spline surface.
        
          The modified part of the column of weights is defined by the bounds
          of the array CPoleWeights.
        
          This function must only be used for rational surfaces.
      - def setWeightRow(self, UIndex: int, CPoleWeights: List[float], /) -> None
        doc:
          Modifies this B-Spline surface by assigning values to all or part of the
          weights of the row of poles of index UIndex of this B-Spline surface.
        
          The modified part of the row of weights is defined by the bounds of the
          array CPoleWeights.
        
          This function must only be used for rational surfaces.
      @constmethod
      - def getWeight(self, UIndex: int, VIndex: int, /) -> float
        doc:
          Return the weight of the pole of index (UIndex,VIndex)
          in the poles table for this B-Spline surface.
      @constmethod
      - def getWeights(self) -> List[float]
        doc:
          Returns the table of weights of the poles for this B-Spline surface.
      @constmethod
      - def getPolesAndWeights(self) -> List[Any]
        doc:
          Returns the table of poles and weights in homogeneous coordinates.
      @constmethod
      - def getResolution(self, Tolerance3D: float, /) -> Any
        doc:
          Computes two tolerance values for this B-Spline surface, based on the
          given tolerance in 3D space Tolerance3D. The tolerances computed are:
          -- UTolerance in the u parametric direction and
          -- VTolerance in the v parametric direction.
        
          If f(u,v) is the equation of this B-Spline surface, UTolerance and
          VTolerance guarantee that:
          |u1 - u0| < UTolerance
          |v1 - v0| < VTolerance
          ====> ||f(u1, v1) - f(u2, v2)|| < Tolerance3D
      - def movePoint(self, U: float, V: float, P: Any, UIndex1: int=..., UIndex2: int=..., VIndex1: int=..., VIndex2: int=..., /) -> Any
        doc:
          Moves the point of parameters (U, V) of this B-Spline surface to P.
          UIndex1, UIndex2, VIndex1 and VIndex2 are the indexes in the poles
          table of this B-Spline surface, of the first and last poles which
          can be moved in each parametric direction.
          The returned indexes UFirstIndex, ULastIndex, VFirstIndex and
          VLastIndex are the indexes of the first and last poles effectively
          modified in each parametric direction.
          In the event of incompatibility between UIndex1, UIndex2, VIndex1,
          VIndex2 and the values U and V:
          -- no change is made to this B-Spline surface, and
          -- UFirstIndex, ULastIndex, VFirstIndex and VLastIndex are set to
          null.
      - def setUNotPeriodic(self) -> None
        doc:
          Changes this B-Spline surface into a non-periodic one in the u parametric direction.
          If this B-Spline surface is already non-periodic in the given parametric direction,
          it is not modified.
          If this B-Spline surface is periodic in the given parametric direction, the boundaries
          of the surface are not given by the first and last rows (or columns) of poles (because
          the multiplicity of the first knot and of the last knot in the given parametric direction
          are not modified, nor are they equal to Degree+1, where Degree is the degree of this
          B-Spline surface in the given parametric direction). Only the function Segment ensures
          this property.
        
          Note: the poles and knots tables are modified.
      - def setVNotPeriodic(self) -> None
        doc:
          Changes this B-Spline surface into a non-periodic one in the v parametric direction.
          If this B-Spline surface is already non-periodic in the given parametric direction,
          it is not modified.
          If this B-Spline surface is periodic in the given parametric direction, the boundaries
          of the surface are not given by the first and last rows (or columns) of poles (because
          the multiplicity of the first knot and of the last knot in the given parametric direction
          are not modified, nor are they equal to Degree+1, where Degree is the degree of this
          B-Spline surface in the given parametric direction). Only the function Segment ensures
          this property.
        
          Note: the poles and knots tables are modified.
      - def setUPeriodic(self, I1: int, I2: int, /) -> None
        doc:
          Modifies this surface to be periodic in the u parametric direction.
          To become periodic in a given parametric direction a surface must
          be closed in that parametric direction, and the knot sequence relative
          to that direction must be periodic.
          To generate this periodic sequence of knots, the functions FirstUKnotIndex
          and LastUKnotIndex are used to compute I1 and I2. These are the indexes,
          in the knot array associated with the given parametric direction, of the
          knots that correspond to the first and last parameters of this B-Spline
          surface in the given parametric direction. Hence the period is:
        
          Knots(I1) - Knots(I2)
        
          As a result, the knots and poles tables are modified.
      - def setVPeriodic(self, I1: int, I2: int, /) -> None
        doc:
          Modifies this surface to be periodic in the v parametric direction.
          To become periodic in a given parametric direction a surface must
          be closed in that parametric direction, and the knot sequence relative
          to that direction must be periodic.
          To generate this periodic sequence of knots, the functions FirstUKnotIndex
          and LastUKnotIndex are used to compute I1 and I2. These are the indexes,
          in the knot array associated with the given parametric direction, of the
          knots that correspond to the first and last parameters of this B-Spline
          surface in the given parametric direction. Hence the period is:
        
          Knots(I1) - Knots(I2)
        
          As a result, the knots and poles tables are modified.
      - def setUOrigin(self, Index: int, /) -> None
        doc:
          Assigns the knot of index Index in the knots table
          in the u parametric direction to be the origin of
          this periodic B-Spline surface. As a consequence,
          the knots and poles tables are modified.
      - def setVOrigin(self, Index: int, /) -> None
        doc:
          Assigns the knot of index Index in the knots table
          in the v parametric direction to be the origin of
          this periodic B-Spline surface. As a consequence,
          the knots and poles tables are modified.
      @constmethod
      - def getUMultiplicity(self, UIndex: int, /) -> Any
        doc:
          Returns, for this B-Spline surface, the multiplicity of
          the knot of index UIndex in the u parametric direction.
      @constmethod
      - def getVMultiplicity(self, VIndex: int, /) -> Any
        doc:
          Returns, for this B-Spline surface, the multiplicity of
          the knot of index VIndex in the v parametric direction.
      @constmethod
      - def getUMultiplicities(self) -> List[Any]
        doc:
          Returns, for this B-Spline surface, the table of
          multiplicities in the u parametric direction
      @constmethod
      - def getVMultiplicities(self) -> List[Any]
        doc:
          Returns, for this B-Spline surface, the table of
          multiplicities in the v parametric direction
      - def exchangeUV(self) -> None
        doc:
          Exchanges the u and v parametric directions on this B-Spline surface.
          As a consequence:
          -- the poles and weights tables are transposed,
          -- the knots and multiplicities tables are exchanged,
          -- degrees of continuity and rational, periodic and uniform
          characteristics are exchanged and
          -- the orientation of the surface is reversed.
      @constmethod
      - def reparametrize(self) -> Any
        doc:
          Returns a reparametrized copy of this surface
      - def approximate(self, *, Points: Any=..., DegMin: int=..., DegMax: int=..., Continuity: int=..., Tolerance: float=..., X0: float=..., dX: float=..., Y0: float=..., dY: float=..., ParamType: str=..., LengthWeight: float=..., CurvatureWeight: float=..., TorsionWeight: float=...) -> None
        doc:
          Replaces this B-Spline surface by approximating a set of points.
          This method uses keywords :
          - Points = 2Darray of points (or floats, in combination with X0, dX, Y0, dY)
          - DegMin (int), DegMax (int)
          - Continuity = 0,1 or 2 (for C0, C1, C2)
          - Tolerance (float)
          - X0, dX, Y0, dY (floats) with Points = 2Darray of floats
          - ParamType = 'Uniform','Centripetal' or 'ChordLength'
          - LengthWeight, CurvatureWeight, TorsionWeight (floats)
          (with this smoothing algorithm, continuity C1 requires DegMax >= 3 and C2, DegMax >=5)
        
          Possible combinations :
          - approximate(Points, DegMin, DegMax, Continuity, Tolerance)
          - approximate(Points, DegMin, DegMax, Continuity, Tolerance, X0, dX, Y0, dY)
          With explicit keywords :
          - approximate(Points, DegMin, DegMax, Continuity, Tolerance, ParamType)
          - approximate(Points, DegMax, Continuity, Tolerance, LengthWeight, CurvatureWeight, TorsionWeight)
      - def interpolate(self, points: Any=..., zpoints: Any=..., X0: float=..., dX: float=..., Y0: float=..., dY: float=..., /) -> None
        doc:
          interpolate(points)
          interpolate(zpoints, X0, dX, Y0, dY)
        
          Replaces this B-Spline surface by interpolating a set of points.
          The resulting surface is of degree 3 and continuity C2.
          Arguments:
          a 2 dimensional array of vectors, that the surface passes through
          or
          a 2 dimensional array of floats with the z values,
          the x starting point X0 (float),
          the x increment dX (float),
          the y starting point Y0 and increment dY
      - def buildFromPolesMultsKnots(self, *, poles: List[List[Any]], umults: List[Any], vmults: List[Any], uknots: List[Any]=..., vknots: List[Any]=..., uperiodic: bool=..., vperiodic: bool=..., udegree: int=..., vdegree: int=..., weights: List[List[float]]=...) -> None
        doc:
          Builds a B-Spline by a lists of Poles, Mults and Knots
          arguments: poles (sequence of sequence of Base.Vector), umults, vmults, [uknots, vknots, uperiodic, vperiodic, udegree, vdegree, weights (sequence of sequence of float)]
      - def buildFromNSections(self, control_curves: Any, /) -> None
        doc:
          Builds a B-Spline from a list of control curves
      - def scaleKnotsToBounds(self, u0: float, u1: float, v0: float, v1: float, /) -> None
        doc:
          Scales the U and V knots lists to fit the specified bounds.
          The shape of the surface is not modified.
          bspline_surf.scaleKnotsToBounds(u0, u1, v0, v1)
          Default arguments are 0.0, 1.0, 0.0, 1.0
```

```text theme={null}
MODULE Mod/Part/App/BezierCurve.pyi
classes:
  class BezierCurve(BoundedCurve)
    doc:
      Describes a rational or non-rational Bezier curve:
      -- a non-rational Bezier curve is defined by a table of poles (also called control points)
      -- a rational Bezier curve is defined by a table of poles with varying weights
    
      Constructor takes no arguments.
    
      Example usage:
      p1 = Base.Vector(-1, 0, 0)
      p2 = Base.Vector(0, 1, 0.2)
      p3 = Base.Vector(1, 0, 0.4)
      p4 = Base.Vector(0, -1, 1)
    
      bc = BezierCurve()
      bc.setPoles([p1, p2, p3, p4])
      curveShape = bc.toShape()
    attributes:
      - Degree: Final[int]
        doc:
          Returns the polynomial degree of this Bezier curve,
          which is equal to the number of poles minus 1.
      - MaxDegree: Final[int]
        doc:
          Returns the value of the maximum polynomial degree of any
          Bezier curve curve. This value is 25.
      - NbPoles: Final[int]
        doc:
          Returns the number of poles of this Bezier curve.
      - StartPoint: Final[Vector]
        doc:
          Returns the start point of this Bezier curve.
      - EndPoint: Final[Vector]
        doc:
          Returns the end point of this Bezier curve.
    methods:
      @constmethod
      - def isRational(self) -> bool
        doc:
          Returns false if the weights of all the poles of this Bezier curve are equal.
      @constmethod
      - def isPeriodic(self) -> bool
        doc:
          Returns false.
      @constmethod
      - def isClosed(self) -> bool
        doc:
          Returns true if the distance between the start point and end point of
          this Bezier curve is less than or equal to gp::Resolution().
      - def increase(self, Int: int=..., /) -> None
        doc:
          Increases the degree of this Bezier curve to Degree.
          As a result, the poles and weights tables are modified.
      - def insertPoleAfter(self, index: int, /) -> None
        doc:
          Inserts after the pole of index.
      - def insertPoleBefore(self, index: int, /) -> None
        doc:
          Inserts before the pole of index.
      - def removePole(self, Index: int, /) -> None
        doc:
          Removes the pole of index Index from the table of poles of this Bezier curve.
          If this Bezier curve is rational, it can become non-rational.
      - def segment(self) -> None
        doc:
          Modifies this Bezier curve by segmenting it.
      - def setPole(self, pole: Vector, /) -> None
        doc:
          Set a pole of the Bezier curve.
      @constmethod
      - def getPole(self, index: int, /) -> Vector
        doc:
          Get a pole of the Bezier curve.
      @constmethod
      - def getPoles(self) -> List[Vector]
        doc:
          Get all poles of the Bezier curve.
      - def setPoles(self, poles: List[Vector], /) -> None
        doc:
          Set the poles of the Bezier curve.
        
          Takes a list of 3D Base.Vector objects.
      - def setWeight(self, id: int, weight: float, /) -> None
        doc:
          (id, weight) Set a weight of the Bezier curve.
      @constmethod
      - def getWeight(self, id: int, /) -> float
        doc:
          Get a weight of the Bezier curve.
      @constmethod
      - def getWeights(self) -> List[float]
        doc:
          Get all weights of the Bezier curve.
      @constmethod
      - def getResolution(self, Tolerance3D: float, /) -> float
        doc:
          Computes for this Bezier curve the parametric tolerance (UTolerance)
          for a given 3D tolerance (Tolerance3D).
          If f(t) is the equation of this Bezier curve, the parametric tolerance
          ensures that:
          |t1-t0| < UTolerance =""==> |f(t1)-f(t0)| < Tolerance3D
      - def interpolate(self, constraints: List[List], parameters: List[float]=..., /) -> None
        doc:
          Interpolates a list of constraints.
          Each constraint is a list of a point and some optional derivatives
          An optional list of parameters can be passed. It must be of same size as constraint list.
          Otherwise, a simple uniform parametrization is used.
          Example :
          bezier.interpolate([[pt1, deriv11, deriv12], [pt2,], [pt3, deriv31]], [0, 0.4, 1.0])
```

```text theme={null}
MODULE Mod/Part/App/BezierSurface.pyi
classes:
  class BezierSurface(GeometrySurface)
    doc:
      Describes a rational or non-rational Bezier surface
      -- A non-rational Bezier surface is defined by a table of poles (also known as control points).
      -- A rational Bezier surface is defined by a table of poles with varying associated weights.
    attributes:
      - UDegree: Final[int]
        doc:
          Returns the polynomial degree in u direction of this Bezier surface,
          which is equal to the number of poles minus 1.
      - VDegree: Final[int]
        doc:
          Returns the polynomial degree in v direction of this Bezier surface,
          which is equal to the number of poles minus 1.
      - MaxDegree: Final[int]
        doc:
          Returns the value of the maximum polynomial degree of any
          Bezier surface. This value is 25.
      - NbUPoles: Final[int]
        doc:
          Returns the number of poles in u direction of this Bezier surface.
      - NbVPoles: Final[int]
        doc:
          Returns the number of poles in v direction of this Bezier surface.
    methods:
      @constmethod
      - def bounds(self) -> Tuple[float, float, float, float]
        doc:
          Returns the parametric bounds (U1, U2, V1, V2) of this Bezier surface.
      @constmethod
      - def isURational(self) -> bool
        doc:
          Returns false if the equation of this Bezier surface is polynomial
          (e.g. non-rational) in the u or v parametric direction.
          In other words, returns false if for each row of poles, the associated
          weights are identical.
      @constmethod
      - def isVRational(self) -> bool
        doc:
          Returns false if the equation of this Bezier surface is polynomial
          (e.g. non-rational) in the u or v parametric direction.
          In other words, returns false if for each column of poles, the associated
          weights are identical.
      @constmethod
      - def isUPeriodic(self) -> bool
        doc:
          Returns false.
      @constmethod
      - def isVPeriodic(self) -> bool
        doc:
          Returns false.
      @constmethod
      - def isUClosed(self) -> bool
        doc:
          Checks if this surface is closed in the u parametric direction.
          Returns true if, in the table of poles the first row and the last
          row are identical.
      @constmethod
      - def isVClosed(self) -> bool
        doc:
          Checks if this surface is closed in the v parametric direction.
          Returns true if, in the table of poles the first column and the
          last column are identical.
      - def increase(self, DegreeU: int, DegreeV: int, /) -> None
        doc:
          increase(DegreeU: int, DegreeV: int)
          Increases the degree of this Bezier surface in the two
          parametric directions.
      - def insertPoleColAfter(self, index: int, /) -> None
        doc:
          Inserts into the table of poles of this surface, after the column
          of poles of index.
          If this Bezier surface is non-rational, it can become rational if
          the weights associated with the new poles are different from each
          other, or collectively different from the existing weights in the
          table.
      - def insertPoleRowAfter(self, index: int, /) -> None
        doc:
          Inserts into the table of poles of this surface, after the row
          of poles of index.
          If this Bezier surface is non-rational, it can become rational if
          the weights associated with the new poles are different from each
          other, or collectively different from the existing weights in the
          table.
      - def insertPoleColBefore(self, index: int, /) -> None
        doc:
          Inserts into the table of poles of this surface, before the column
          of poles of index.
          If this Bezier surface is non-rational, it can become rational if
          the weights associated with the new poles are different from each
          other, or collectively different from the existing weights in the
          table.
      - def insertPoleRowBefore(self, index: int, /) -> None
        doc:
          Inserts into the table of poles of this surface, before the row
          of poles of index.
          If this Bezier surface is non-rational, it can become rational if
          the weights associated with the new poles are different from each
          other, or collectively different from the existing weights in the
          table.
      - def removePoleCol(self, VIndex: int, /) -> None
        doc:
          removePoleRow(VIndex: int)
          Removes the column of poles of index VIndex from the table of
          poles of this Bezier surface.
          If this Bezier curve is rational, it can become non-rational.
      - def removePoleRow(self, UIndex: int, /) -> None
        doc:
          removePoleRow(UIndex: int)
          Removes the row of poles of index UIndex from the table of
          poles of this Bezier surface.
          If this Bezier curve is rational, it can become non-rational.
      - def segment(self, U1: float, U2: float, V1: float, V2: float, /) -> None
        doc:
          segment(U1: double, U2: double, V1: double, V2: double)
          Modifies this Bezier surface by segmenting it between U1 and U2
          in the u parametric direction, and between V1 and V2 in the v
          parametric direction.
          U1, U2, V1, and V2 can be outside the bounds of this surface.
        
          -- U1 and U2 isoparametric Bezier curves, segmented between
          V1 and V2, become the two bounds of the surface in the v
          parametric direction (0. and 1. u isoparametric curves).
          -- V1 and V2 isoparametric Bezier curves, segmented between
          U1 and U2, become the two bounds of the surface in the u
          parametric direction (0. and 1. v isoparametric curves).
        
          The poles and weights tables are modified, but the degree of
          this surface in the u and v parametric directions does not
          change.U1 can be greater than U2, and V1 can be greater than V2.
          In these cases, the corresponding parametric direction is inverted.
          The orientation of the surface is inverted if one (and only one)
          parametric direction is inverted.
      - def setPole(self, pole: Any, /) -> None
        doc:
          Set a pole of the Bezier surface.
      - def setPoleCol(self, poles: Any, /) -> None
        doc:
          Set the column of poles of the Bezier surface.
      - def setPoleRow(self, poles: Any, /) -> None
        doc:
          Set the row of poles of the Bezier surface.
      @constmethod
      - def getPole(self, UIndex: int, VIndex: int, /) -> Any
        doc:
          Get a pole of index (UIndex, VIndex) of the Bezier surface.
      @constmethod
      - def getPoles(self) -> Any
        doc:
          Get all poles of the Bezier surface.
      - def setWeight(self, UIndex: int, VIndex: int, weight: float, /) -> None
        doc:
          Set the weight of pole of the index (UIndex, VIndex)
          for the Bezier surface.
      - def setWeightCol(self, VIndex: int, weights: Any, /) -> None
        doc:
          Set the weights of the poles in the column of poles
          of index VIndex of the Bezier surface.
      - def setWeightRow(self, UIndex: int, weights: Any, /) -> None
        doc:
          Set the weights of the poles in the row of poles
          of index UIndex of the Bezier surface.
      @constmethod
      - def getWeight(self, UIndex: int, VIndex: int, /) -> float
        doc:
          Get a weight of the pole of index (UIndex, VIndex)
          of the Bezier surface.
      @constmethod
      - def getWeights(self) -> Any
        doc:
          Get all weights of the Bezier surface.
      @constmethod
      - def getResolution(self, Tolerance3D: float, /) -> Tuple[float, float]
        doc:
          Computes two tolerance values for this Bezier surface, based on the
          given tolerance in 3D space Tolerance3D. The tolerances computed are:
          -- UTolerance in the u parametric direction and
          -- VTolerance in the v parametric direction.
        
          If f(u,v) is the equation of this Bezier surface, UTolerance and VTolerance
          guarantee that:
          |u1 - u0| < UTolerance
          |v1 - v0| < VTolerance
          ====> ||f(u1, v1) - f(u2, v2)|| < Tolerance3D
      - def exchangeUV(self) -> None
        doc:
          Exchanges the u and v parametric directions on this Bezier surface.
          As a consequence:
          -- the poles and weights tables are transposed,
          -- degrees, rational characteristics and so on are exchanged between
          the two parametric directions, and
          -- the orientation of the surface is reversed.
```

```text theme={null}
MODULE Mod/Part/App/BodyBase.pyi
classes:
  class BodyBase(PartFeature)
    doc:
      Base class of all Body objects
```

```text theme={null}
MODULE Mod/Part/App/BoundedCurve.pyi
classes:
  class BoundedCurve(GeometryCurve)
    doc:
      The abstract class BoundedCurve is the root class of all bounded curve objects.
    attributes:
      - StartPoint: Final[Any]
        doc:
          Returns the starting point of the bounded curve.
      - EndPoint: Final[Any]
        doc:
          Returns the end point of the bounded curve.
```

```text theme={null}
MODULE Mod/Part/App/ChFi2d/ChFi2d_AnaFilletAlgo.pyi
classes:
  class AnaFilletAlgo(PyObjectBase)
    doc:
      An analytical algorithm for calculation of the fillets.
      It is implemented for segments and arcs of circle only.
    methods:
      - def init(self) -> None
        doc:
          Initializes a fillet algorithm: accepts a wire consisting of two edges in a plane
      - def perform(self, radius: float, /) -> bool
        doc:
          perform(radius) -> bool
        
          Constructs a fillet edge
      - def result(self) -> Tuple[PyObjectBase, PyObjectBase, PyObjectBase]
        doc:
          result()
        
          Returns result (fillet edge, modified edge1, modified edge2)
```

```text theme={null}
MODULE Mod/Part/App/ChFi2d/ChFi2d_ChamferAPI.pyi
classes:
  class ChFi2d_ChamferAPI(PyObjectBase)
    doc:
      Algorithm that creates a chamfer between two linear edges
    methods:
      - def init(self) -> None
        doc:
          Initializes a chamfer algorithm: accepts a wire consisting of two edges in a plane
      - def perform(self, radius: float, /) -> bool
        doc:
          perform(radius) -> bool
        
          Constructs a chamfer edge
      - def result(self, point: object, solution: int=-1, /) -> Tuple[object, object, object]
        doc:
          result(point, solution=-1)
        
          Returns result (chamfer edge, modified edge1, modified edge2)
```

```text theme={null}
MODULE Mod/Part/App/ChFi2d/ChFi2d_FilletAPI.pyi
classes:
  class ChFi2d_FilletAPI(PyObjectBase)
    doc:
      Algorithm that creates fillet edge
    methods:
      - def init(self) -> None
        doc:
          Initializes a fillet algorithm: accepts a wire consisting of two edges in a plane
      - def perform(self, radius: float, /) -> bool
        doc:
          perform(radius) -> bool
        
          Constructs a fillet edge
      - def numberOfResults(self) -> int
        doc:
          Returns number of possible solutions
      - def result(self, point: Point, solution: int=-1, /) -> tuple[TopoShapeEdge, TopoShapeEdge, TopoShapeEdge]
        doc:
          result(point, solution=-1)
        
          Returns result (fillet edge, modified edge1, modified edge2)
```

```text theme={null}
MODULE Mod/Part/App/ChFi2d/ChFi2d_FilletAlgo.pyi
classes:
  class FilletAlgo(PyObjectBase)
    doc:
      Algorithm that creates fillet edge
    methods:
      - def init(self) -> None
        doc:
          Initializes a fillet algorithm: accepts a wire consisting of two edges in a plane
      - def perform(self, radius: float, /) -> bool
        doc:
          perform(radius) -> bool
        
          Constructs a fillet edge
      - def numberOfResults(self) -> int
        doc:
          Returns number of possible solutions
      - def result(self, point: Vector, solution: int=-1, /) -> tuple[object, object, object]
        doc:
          result(point, solution=-1)
        
          Returns result (fillet edge, modified edge1, modified edge2)
```

```text theme={null}
MODULE Mod/Part/App/Circle.pyi
classes:
  class Circle(Conic)
    doc:
      Describes a circle in 3D space
      To create a circle there are several ways:
      Part.Circle()
      Creates a default circle with center (0,0,0) and radius 1
    
      Part.Circle(Circle)
      Creates a copy of the given circle
    
      Part.Circle(Circle, Distance)
      Creates a circle parallel to given circle at a certain distance
    
      Part.Circle(Center,Normal,Radius)
      Creates a circle defined by center, normal direction and radius
    
      Part.Circle(Point1,Point2,Point3)
      Creates a circle defined by three non-linear points
    attributes:
      - Radius: float
        doc:
          The radius of the circle.
    methods:
      @overload
      - def __init__(self) -> None
      @overload
      - def __init__(self, circle: 'Circle') -> None
      @overload
      - def __init__(self, circle: 'Circle', distance: float) -> None
      @overload
      - def __init__(self, center: Point, normal: Vector, radius: float) -> None
      @overload
      - def __init__(self, point1: Point, point2: Point, point3: Point) -> None
```

```text theme={null}
MODULE Mod/Part/App/Cone.pyi
classes:
  class Cone(GeometrySurface)
    doc:
      Describes a cone in 3D space
    
      To create a cone there are several ways:
    
      Part.Cone()
      Creates a default cone with radius 1
    
      Part.Cone(Cone)
      Creates a copy of the given cone
    
      Part.Cone(Cone, Distance)
      Creates a cone parallel to given cone at a certain distance
    
      Part.Cone(Point1,Point2,Radius1,Radius2)
      Creates a cone defined by two points and two radii
      The axis of the cone is the line passing through
      Point1 and Poin2.
      Radius1 is the radius of the section passing through
      Point1 and Radius2 the radius of the section passing
      through Point2.
    
      Part.Cone(Point1,Point2,Point3,Point4)
      Creates a cone passing through three points Point1,
      Point2 and Point3.
      Its axis is defined by Point1 and Point2 and the radius of
      its base is the distance between Point3 and its axis.
      The distance between Point and the axis is the radius of
      the section passing through Point4.
    attributes:
      - Apex: Final[Vector]
        doc:
          Compute the apex of the cone.
      - Radius: float
        doc:
          The radius of the cone.
      - SemiAngle: float
        doc:
          The semi-angle of the cone.
      - Center: Vector
        doc:
          Center of the cone.
      - Axis: AxisPy
        doc:
          The axis direction of the cone
```

```text theme={null}
MODULE Mod/Part/App/Conic.pyi
classes:
  class Conic(GeometryCurve)
    doc:
      Describes an abstract conic in 3d space
    attributes:
      - Location: Vector
        doc:
          Location of the conic.
      - Center: Vector
        doc:
          Deprecated -- use Location.
      - Eccentricity: Final[float]
        doc:
          Returns the eccentricity value of the conic e.
          e = 0 for a circle
          0 < e < 1 for an ellipse  (e = 0 if MajorRadius = MinorRadius)
          e > 1 for a hyperbola
          e = 1 for a parabola
      - AngleXU: float
        doc:
          The angle between the X axis and the major axis of the conic.
      - Axis: Vector
        doc:
          The axis direction of the circle
      - XAxis: Vector
        doc:
          The X axis direction of the circle
      - YAxis: Vector
        doc:
          The Y axis direction of the circle
```

```text theme={null}
MODULE Mod/Part/App/Cylinder.pyi
classes:
  class Cylinder(GeometrySurface)
    doc:
      Describes a cylinder in 3D space
    
      To create a cylinder there are several ways:
    
      Part.Cylinder()
      Creates a default cylinder with center (0,0,0) and radius 1
    
      Part.Cylinder(Cylinder)
      Creates a copy of the given cylinder
    
      Part.Cylinder(Cylinder, Distance)
      Creates a cylinder parallel to given cylinder at a certain distance
    
      Part.Cylinder(Point1, Point2, Point2)
      Creates a cylinder defined by three non-linear points
    
      Part.Cylinder(Circle)
      Creates a cylinder by a circular base
    attributes:
      - Radius: float
        doc:
          The radius of the cylinder.
      - Center: Vector
        doc:
          Center of the cylinder.
      - Axis: Vector
        doc:
          The axis direction of the cylinder
    methods:
      @overload
      - def __init__(self) -> None
      @overload
      - def __init__(self, cylinder: 'Cylinder') -> None
      @overload
      - def __init__(self, cylinder: 'Cylinder', distance: float) -> None
      @overload
      - def __init__(self, point1: Vector, point2: Vector, point3: Vector) -> None
      @overload
      - def __init__(self, circle: Circle) -> None
```

```text theme={null}
MODULE Mod/Part/App/Ellipse.pyi
classes:
  class Ellipse(Conic)
    doc:
      Describes an ellipse in 3D space
    
      To create an ellipse there are several ways:
    
      Part.Ellipse()
      Creates an ellipse with major radius 2 and minor radius 1 with the
      center in (0,0,0)
    
      Part.Ellipse(Ellipse)
      Create a copy of the given ellipse
    
      Part.Ellipse(S1,S2,Center)
      Creates an ellipse centered on the point Center, where
      the plane of the ellipse is defined by Center, S1 and S2,
      its major axis is defined by Center and S1,
      its major radius is the distance between Center and S1, and
      its minor radius is the distance between S2 and the major axis.
    
      Part.Ellipse(Center,MajorRadius,MinorRadius)
      Creates an ellipse with major and minor radii MajorRadius and
      MinorRadius, and located in the plane defined by Center and
      the normal (0,0,1)
    attributes:
      - MajorRadius: float
        doc:
          The major radius of the ellipse.
      - MinorRadius: float
        doc:
          The minor radius of the ellipse.
      - Focal: Final[float]
        doc:
          The focal distance of the ellipse.
      - Focus1: Final[Vector]
        doc:
          The first focus is on the positive side of the major axis of the ellipse.
      - Focus2: Final[Vector]
        doc:
          The second focus is on the negative side of the major axis of the ellipse.
    methods:
      @overload
      - def __init__(self) -> None
      @overload
      - def __init__(self, ellipse: 'Ellipse', /) -> None
      @overload
      - def __init__(self, s1: Vector, s2: Vector, center: Vector, /) -> None
      @overload
      - def __init__(self, center: Vector, major_radius: float, minor_radius: float, /) -> None
```

```text theme={null}
MODULE Mod/Part/App/Geom2d/ArcOfCircle2d.pyi
classes:
  class ArcOfCircle2d(ArcOfConic2d)
    doc:
      Describes a portion of a circle
    attributes:
      - Radius: float
        doc:
          The radius of the circle.
      - Circle: Final[object]
        doc:
          The internal circle representation
    methods:
      @overload
      - def __init__(self, Radius: float, Circle: object) -> None
```

```text theme={null}
MODULE Mod/Part/App/Geom2d/ArcOfConic2d.pyi
classes:
  class ArcOfConic2d(Curve2d)
    doc:
      Describes an abstract arc of conic in 2d space.
    attributes:
      - Location: object
        doc:
          Location of the conic.
      - Eccentricity: Final[float]
        doc:
          returns the eccentricity value of the conic e.
          e = 0 for a circle
          0 < e < 1 for an ellipse  (e = 0 if MajorRadius = MinorRadius)
          e > 1 for a hyperbola
          e = 1 for a parabola
      - XAxis: object
        doc:
          The X axis direction of the circle.
      - YAxis: object
        doc:
          The Y axis direction of the circle.
```

```text theme={null}
MODULE Mod/Part/App/Geom2d/ArcOfEllipse2d.pyi
classes:
  class ArcOfEllipse2d(ArcOfConic2d)
    doc:
      Describes a portion of an ellipse
    attributes:
      - MajorRadius: float
        doc:
          The major radius of the ellipse.
      - MinorRadius: float
        doc:
          The minor radius of the ellipse.
      - Ellipse: Final[object]
        doc:
          The internal ellipse representation
    methods:
      @overload
      - def __init__(self) -> None
```

```text theme={null}
MODULE Mod/Part/App/Geom2d/ArcOfHyperbola2d.pyi
classes:
  class ArcOfHyperbola2d(ArcOfConic2d)
    doc:
      Describes a portion of an hyperbola
    attributes:
      - MajorRadius: float
        doc:
          The major radius of the hyperbola.
      - MinorRadius: float
        doc:
          The minor radius of the hyperbola.
      - Hyperbola: Final[object]
        doc:
          The internal hyperbola representation
    methods:
      @overload
      - def __init__(self) -> None
```

```text theme={null}
MODULE Mod/Part/App/Geom2d/ArcOfParabola2d.pyi
classes:
  class ArcOfParabola2d(ArcOfConic2d)
    doc:
      Describes a portion of a parabola.
    attributes:
      - Focal: float
        doc:
          The focal length of the parabola.
      - Parabola: Final[object]
        doc:
          The internal parabola representation.
    methods:
      @overload
      - def __init__(self) -> None
```

```text theme={null}
MODULE Mod/Part/App/Geom2d/BSplineCurve2d.pyi
classes:
  class BSplineCurve2d(Curve2d)
    doc:
      Describes a B-Spline curve in 3D space
    attributes:
      - Degree: Final[int]
        doc:
          Returns the polynomial degree of this B-Spline curve.
      - MaxDegree: Final[int]
        doc:
          Returns the value of the maximum polynomial degree of any
          B-Spline curve curve. This value is 25.
      - NbPoles: Final[int]
        doc:
          Returns the number of poles of this B-Spline curve.
      - NbKnots: Final[int]
        doc:
          Returns the number of knots of this B-Spline curve.
      - StartPoint: Final[object]
        doc:
          Returns the start point of this B-Spline curve.
      - EndPoint: Final[object]
        doc:
          Returns the end point of this B-Spline curve.
      - FirstUKnotIndex: Final[object]
        doc:
          Returns the index in the knot array of the knot
          corresponding to the first or last parameter
          of this B-Spline curve.
      - LastUKnotIndex: Final[object]
        doc:
          Returns the index in the knot array of the knot
          corresponding to the first or last parameter
          of this B-Spline curve.
      - KnotSequence: Final[list]
        doc:
          Returns the knots sequence of this B-Spline curve.
    methods:
      - def isRational(self) -> bool
        doc:
          Returns true if this B-Spline curve is rational.
          A B-Spline curve is rational if, at the time of construction, the weight table has been initialized.
      - def isPeriodic(self) -> bool
        doc:
          Returns true if this BSpline curve is periodic.
      - def isClosed(self) -> bool
        doc:
          Returns true if the distance between the start point and end point of
          this B-Spline curve is less than or equal to gp::Resolution().
      - def increaseDegree(self, Degree: int, /) -> None
        doc:
          increaseDegree(Int=Degree)
        
          Increases the degree of this B-Spline curve to Degree.
          As a result, the poles, weights and multiplicities tables
          are modified; the knots table is not changed. Nothing is
          done if Degree is less than or equal to the current degree.
      @overload
      - def increaseMultiplicity(self, index: int, mult: int, /) -> None
      @overload
      - def increaseMultiplicity(self, start: int, end: int, mult: int, /) -> None
      - def increaseMultiplicity(self, *args, **kwargs) -> None
        doc:
          increaseMultiplicity(int index, int mult)
          increaseMultiplicity(int start, int end, int mult)
          Increases multiplicity of knots up to mult.
        
          index: the index of a knot to modify (1-based)
          start, end: index range of knots to modify.
          If mult is lower or equal to the current multiplicity nothing is done.
          If mult is higher than the degree the degree is used.
      - def incrementMultiplicity(self, start: int, end: int, mult: int, /) -> None
        doc:
          incrementMultiplicity(int start, int end, int mult)
          Raises multiplicity of knots by mult.
        
          start, end: index range of knots to modify.
      - def insertKnot(self, u: float, mult: int=1, tol: float=0.0, /) -> None
        doc:
          insertKnot(u, mult = 1, tol = 0.0)
        
          Inserts a knot value in the sequence of knots. If u is an existing knot the multiplicity is increased by mult.
      - def insertKnots(self, list_of_floats: list[float], list_of_ints: list[int], tol: float=0.0, bool_add: bool=True, /) -> None
        doc:
          insertKnots(list_of_floats, list_of_ints, tol = 0.0, bool_add = True)
        
          Inserts a set of knots values in the sequence of knots.
        
          For each u = list_of_floats[i], mult = list_of_ints[i]
        
          If u is an existing knot the multiplicity is increased by mult if bool_add is
          True, otherwise increased to mult.
        
          If u is not on the parameter range nothing is done.
        
          If the multiplicity is negative or null nothing is done. The new multiplicity
          is limited to the degree.
        
          The tolerance criterion for knots equality is the max of Epsilon(U) and ParametricTolerance.
      - def removeKnot(self, Index: int, M: int, tol: float, /) -> None
        doc:
          removeKnot(Index, M, tol)
        
          Reduces the multiplicity of the knot of index Index to M.
          If M is equal to 0, the knot is removed.
          With a modification of this type, the array of poles is also modified.
          Two different algorithms are systematically used to compute the new
          poles of the curve. If, for each pole, the distance between the pole
          calculated using the first algorithm and the same pole calculated using
          the second algorithm, is less than Tolerance, this ensures that the curve
          is not modified by more than Tolerance. Under these conditions, true is
          returned; otherwise, false is returned.
        
          A low tolerance is used to prevent modification of the curve.
          A high tolerance is used to 'smooth' the curve.
      - def segment(self, u1: float, u2: float, /) -> None
        doc:
          segment(u1,u2)
          Modifies this B-Spline curve by segmenting it.
      - def setKnot(self, value: float, /) -> None
        doc:
          Set a knot of the B-Spline curve.
      - def getKnot(self, index: int, /) -> float
        doc:
          Get a knot of the B-Spline curve.
      - def setKnots(self, knots: list[float], /) -> None
        doc:
          Set knots of the B-Spline curve.
      - def getKnots(self) -> list[float]
        doc:
          Get all knots of the B-Spline curve.
      - def setPole(self, P: Vector, Index: int, /) -> None
        doc:
          Modifies this B-Spline curve by assigning P to the pole of index Index in the poles table.
      - def getPole(self, Index: int, /) -> Vector
        doc:
          Get a pole of the B-Spline curve.
      - def getPoles(self) -> list[Vector]
        doc:
          Get all poles of the B-Spline curve.
      - def setWeight(self, weight: float, Index: int, /) -> None
        doc:
          Set a weight of the B-Spline curve.
      - def getWeight(self, Index: int, /) -> float
        doc:
          Get a weight of the B-Spline curve.
      - def getWeights(self) -> list[float]
        doc:
          Get all weights of the B-Spline curve.
      - def getPolesAndWeights(self) -> tuple[list[Vector], list[float]]
        doc:
          Returns the table of poles and weights in homogeneous coordinates.
      @constmethod
      - def getResolution(self) -> float
        doc:
          Computes for this B-Spline curve the parametric tolerance (UTolerance)
          for a given 3D tolerance (Tolerance3D).
          If f(t) is the equation of this B-Spline curve, the parametric tolerance ensures that:
          |t1-t0| < UTolerance =""==> |f(t1)-f(t0)| < Tolerance3D
      - def movePoint(self, U: float, P: Vector, Index1: int, Index2: int, /) -> tuple[int, int]
        doc:
          movePoint(U, P, Index1, Index2)
        
          Moves the point of parameter U of this B-Spline curve to P.
          Index1 and Index2 are the indexes in the table of poles of this B-Spline curve
          of the first and last poles designated to be moved.
        
          Returns: (FirstModifiedPole, LastModifiedPole). They are the indexes of the
          first and last poles which are effectively modified.
      - def setNotPeriodic(self) -> None
        doc:
          Changes this B-Spline curve into a non-periodic curve.
          If this curve is already non-periodic, it is not modified.
      - def setPeriodic(self) -> None
        doc:
          Changes this B-Spline curve into a periodic curve.
      - def setOrigin(self, Index: int, /) -> None
        doc:
          Assigns the knot of index Index in the knots table as the origin of this periodic B-Spline curve.
          As a consequence, the knots and poles tables are modified.
      - def getMultiplicity(self, index: int, /) -> int
        doc:
          Returns the multiplicity of the knot of index from the knots table of this B-Spline curve.
      - def getMultiplicities(self) -> list[int]
        doc:
          Returns the multiplicities table M of the knots of this B-Spline curve.
      - def approximate(self, **kwargs) -> None
        doc:
          Replaces this B-Spline curve by approximating a set of points.
          The function accepts keywords as arguments.
        
          approximate2(Points = list_of_points)
        
          Optional arguments :
        
          DegMin = integer (3) : Minimum degree of the curve.
          DegMax = integer (8) : Maximum degree of the curve.
          Tolerance = float (1e-3) : approximating tolerance.
          Continuity = string ('C2') : Desired continuity of the curve.
          Possible values : 'C0','G1','C1','G2','C2','C3','CN'
        
          LengthWeight = float, CurvatureWeight = float, TorsionWeight = float
          If one of these arguments is not null, the functions approximates the
          points using variational smoothing algorithm, which tries to minimize
          additional criterium:
          LengthWeight*CurveLength + CurvatureWeight*Curvature + TorsionWeight*Torsion
          Continuity must be C0, C1 or C2, else defaults to C2.
        
          Parameters = list of floats : knot sequence of the approximated points.
          This argument is only used if the weights above are all null.
        
          ParamType = string ('Uniform','Centripetal' or 'ChordLength')
          Parameterization type. Only used if weights and Parameters above aren't specified.
        
          Note : Continuity of the spline defaults to C2. However, it may not be applied if
          it conflicts with other parameters ( especially DegMax ).
      - def getCardinalSplineTangents(self, **kwargs) -> None
        doc:
          Compute the tangents for a Cardinal spline
      - def interpolate(self, **kwargs) -> None
        doc:
          Replaces this B-Spline curve by interpolating a set of points.
          The function accepts keywords as arguments.
        
          interpolate(Points = list_of_points)
        
          Optional arguments :
        
          PeriodicFlag = bool (False) : Sets the curve closed or opened.
          Tolerance = float (1e-6) : interpolating tolerance
        
          Parameters : knot sequence of the interpolated points.
          If not supplied, the function defaults to chord-length parameterization.
          If PeriodicFlag == True, one extra parameter must be appended.
        
          EndPoint Tangent constraints :
        
          InitialTangent = vector, FinalTangent = vector
          specify tangent vectors for starting and ending points
          of the BSpline. Either none, or both must be specified.
        
          Full Tangent constraints :
        
          Tangents = list_of_vectors, TangentFlags = list_of_bools
          Both lists must have the same length as Points list.
          Tangents specifies the tangent vector of each point in Points list.
          TangentFlags (bool) activates or deactivates the corresponding tangent.
          These arguments will be ignored if EndPoint Tangents (above) are also defined.
        
          Note : Continuity of the spline defaults to C2. However, if periodic, or tangents
          are supplied, the continuity will drop to C1.
      - def buildFromPoles(self, poles: list[Vector], /) -> None
        doc:
          Builds a B-Spline by a list of poles.
      @overload
      - def buildFromPolesMultsKnots(self, poles: list[Vector], mults: tuple[int, ...], knots: tuple[float, ...], periodic: bool, degree: int) -> None
      @overload
      - def buildFromPolesMultsKnots(self, poles: list[Vector], mults: tuple[int, ...], knots: tuple[float, ...], periodic: bool, degree: int, weights: tuple[float, ...], CheckRational: bool) -> None
      - def buildFromPolesMultsKnots(self, **kwargs) -> None
        doc:
          Builds a B-Spline by a lists of Poles, Mults, Knots.
          arguments: poles (sequence of Base.Vector),
          [mults , knots, periodic, degree, weights (sequence of float), CheckRational]
        
          Examples:
          from FreeCAD-compatible runtime import Base
          import Part
          V=Base.Vector
          poles=[V(-10,-10),V(10,-10),V(10,10),V(-10,10)]
        
          # non-periodic spline
          n=Part.BSplineCurve()
          n.buildFromPolesMultsKnots(poles,(3,1,3),(0,0.5,1),False,2)
          Part.show(n.toShape())
        
          # periodic spline
          p=Part.BSplineCurve()
          p.buildFromPolesMultsKnots(poles,(1,1,1,1,1),(0,0.25,0.5,0.75,1),True,2)
          Part.show(p.toShape())
        
          # periodic and rational spline
          r=Part.BSplineCurve()
          r.buildFromPolesMultsKnots(poles,(1,1,1,1,1),(0,0.25,0.5,0.75,1),True,2,(1,0.8,0.7,0.2))
          Part.show(r.toShape())
      - def toBezier(self) -> list
        doc:
          Build a list of Bezier splines.
      - def toBiArcs(self, tolerance: float, /) -> list
        doc:
          toBiArcs(tolerance) -> list.
          Build a list of arcs and lines to approximate the B-spline.
      - def join(self, other: 'BSplineCurve2d', /) -> 'BSplineCurve2d'
        doc:
          Build a new spline by joining this and a second spline.
      - def makeC1Continuous(self, tol: float=1e-06, ang_tol: float=1e-07, /) -> 'BSplineCurve2d'
        doc:
          makeC1Continuous(tol = 1e-6, ang_tol = 1e-7)
        
          Reduces as far as possible the multiplicities of the knots of this BSpline
          (keeping the geometry). It returns a new BSpline, which could still be C0.
          tol is a geometrical tolerance.
          The tol_ang is angular tolerance, in radians. It sets tolerable angle mismatch
          of the tangents on the left and on the right to decide if the curve is G1 or
          not at a given point.
```

```text theme={null}
MODULE Mod/Part/App/Geom2d/BezierCurve2d.pyi
classes:
  class BezierCurve2d(Curve2d)
    doc:
      Describes a rational or non-rational Bezier curve in 2d space:
      -- a non-rational Bezier curve is defined by a table of poles (also called control points)
      -- a rational Bezier curve is defined by a table of poles with varying weights
    attributes:
      - Degree: Final[int]
        doc:
          Returns the polynomial degree of this Bezier curve, which is equal to the number of poles minus 1.
      - MaxDegree: Final[int]
        doc:
          Returns the value of the maximum polynomial degree of any Bezier curve curve. This value is 25.
      - NbPoles: Final[int]
        doc:
          Returns the number of poles of this Bezier curve.
      - StartPoint: Final[object]
        doc:
          Returns the start point of this Bezier curve.
      - EndPoint: Final[object]
        doc:
          Returns the end point of this Bezier curve.
    methods:
      - def isRational(self) -> bool
        doc:
          Returns false if the weights of all the poles of this Bezier curve are equal.
      - def isPeriodic(self) -> bool
        doc:
          Returns false.
      - def isClosed(self) -> bool
        doc:
          Returns true if the distance between the start point and end point of this Bezier curve
          is less than or equal to gp::Resolution().
      - def increase(self, Degree: int, /) -> None
        doc:
          increase(Int=Degree)
          Increases the degree of this Bezier curve to Degree.
          As a result, the poles and weights tables are modified.
      - def insertPoleAfter(self, index: int, /) -> None
        doc:
          Inserts after the pole of index.
      - def insertPoleBefore(self, index: int, /) -> None
        doc:
          Inserts before the pole of index.
      - def removePole(self, index: int, /) -> None
        doc:
          Removes the pole of index Index from the table of poles of this Bezier curve.
          If this Bezier curve is rational, it can become non-rational.
      - def segment(self) -> None
        doc:
          Modifies this Bezier curve by segmenting it.
      - def setPole(self, index: int, pole: object, /) -> None
        doc:
          Set a pole of the Bezier curve.
      - def getPole(self, index: int, /) -> object
        doc:
          Get a pole of the Bezier curve.
      - def getPoles(self) -> List[object]
        doc:
          Get all poles of the Bezier curve.
      - def setPoles(self, poles: List[object], /) -> None
        doc:
          Set the poles of the Bezier curve.
      - def setWeight(self, index: int, weight: float, /) -> None
        doc:
          Set a weight of the Bezier curve.
      - def getWeight(self, index: int, /) -> float
        doc:
          Get a weight of the Bezier curve.
      - def getWeights(self) -> List[float]
        doc:
          Get all weights of the Bezier curve.
      @constmethod
      - def getResolution(self, Tolerance3D: float, /) -> float
        doc:
          Computes for this Bezier curve the parametric tolerance (UTolerance)
          for a given 3D tolerance (Tolerance3D).
          If f(t) is the equation of this Bezier curve,
          the parametric tolerance ensures that:
          |t1-t0| < UTolerance =""==> |f(t1)-f(t0)| < Tolerance3D
```

```text theme={null}
MODULE Mod/Part/App/Geom2d/Circle2d.pyi
classes:
  class Circle2d(Conic2d)
    doc:
      Describes a circle in 3D space
      To create a circle there are several ways:
      Part.Geom2d.Circle2d()
      Creates a default circle with center (0,0) and radius 1
    
      Part.Geom2d.Circle2d(circle)
      Creates a copy of the given circle
    
      Part.Geom2d.Circle2d(circle, Distance)
      Creates a circle parallel to given circle at a certain distance
    
      Part.Geom2d.Circle2d(Center,Radius)
      Creates a circle defined by center and radius
    
      Part.Geom2d.Circle2d(Point1,Point2,Point3)
      Creates a circle defined by three non-linear points
    attributes:
      - Radius: float
        doc:
          The radius of the circle.
    methods:
      @overload
      - def __init__(self) -> None
      @overload
      - def __init__(self, circle: 'Circle2d') -> None
      @overload
      - def __init__(self, circle: 'Circle2d', Distance: float) -> None
      @overload
      - def __init__(self, Center: Tuple[float, float], Radius: float) -> None
      @overload
      - def __init__(self, Point1: Tuple[float, float], Point2: Tuple[float, float], Point3: Tuple[float, float]) -> None
      @overload
      - def __init__(self, *args, **kwargs) -> None
        doc:
          Describes a circle in 3D space
          To create a circle there are several ways:
          Part.Geom2d.Circle2d()
          Creates a default circle with center (0,0) and radius 1
        
          Part.Geom2d.Circle2d(circle)
          Creates a copy of the given circle
        
          Part.Geom2d.Circle2d(circle, Distance)
          Creates a circle parallel to given circle at a certain distance
        
          Part.Geom2d.Circle2d(Center,Radius)
          Creates a circle defined by center and radius
        
          Part.Geom2d.Circle2d(Point1,Point2,Point3)
          Creates a circle defined by three non-linear points
      @staticmethod
      - def getCircleCenter() -> Tuple[float, float]
        doc:
          Get the circle center defined by three points
```

```text theme={null}
MODULE Mod/Part/App/Geom2d/Conic2d.pyi
classes:
  class Conic2d(Curve2d)
    doc:
      Describes an abstract conic in 2d space
    attributes:
      - Location: object
        doc:
          Location of the conic.
      - Eccentricity: Final[float]
        doc:
          returns the eccentricity value of the conic e.
          e = 0 for a circle
          0 < e < 1 for an ellipse  (e = 0 if MajorRadius = MinorRadius)
          e > 1 for a hyperbola
          e = 1 for a parabola
      - XAxis: object
        doc:
          The X axis direction of the circle
      - YAxis: object
        doc:
          The Y axis direction of the circle
```

```text theme={null}
MODULE Mod/Part/App/Geom2d/Curve2d.pyi
classes:
  class Curve2d(Geometry2d)
    doc:
      The abstract class Geom2dCurve is the root class of all curve objects.
    attributes:
      - Continuity: Final[str]
        doc:
          Returns the global continuity of the curve.
      - Closed: Final[bool]
        doc:
          Returns true if the curve is closed.
      - Periodic: Final[bool]
        doc:
          Returns true if the curve is periodic.
      - FirstParameter: Final[float]
        doc:
          Returns the value of the first parameter.
      - LastParameter: Final[float]
        doc:
          Returns the value of the last parameter.
    methods:
      - def reverse(self) -> None
        doc:
          Changes the direction of parametrization of the curve.
      @constmethod
      - def toShape(self) -> object
        doc:
          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]
        doc:
          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
        doc:
          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
        doc:
          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
        doc:
          Computes the point of parameter u on this curve
      - def tangent(self, u: float, /) -> Vector
        doc:
          Computes the tangent of parameter u on this curve
      - def parameter(self, point: Vector, /) -> float
        doc:
          Returns the parameter on the curve of the
          nearest orthogonal projection of the point.
      @constmethod
      - def normal(self, pos: float, /) -> Vector
        doc:
          Vector = normal(pos) - Get the normal vector at the given parameter [First|Last] if defined.
      @constmethod
      - def curvature(self, pos: float, /) -> float
        doc:
          Float = curvature(pos) - Get the curvature at the given parameter [First|Last] if defined.
      @constmethod
      - def centerOfCurvature(self, pos: float, /) -> Vector
        doc:
          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]
        doc:
          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
        doc:
          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
        doc:
          Approximates a curve of any type to a B-Spline curve
          approximateBSpline(Tolerance, MaxSegments, MaxDegree, [Order='C2']) -> B-Spline curve
```

```text theme={null}
MODULE Mod/Part/App/Geom2d/Ellipse2d.pyi
classes:
  class Ellipse2d(Conic2d)
    doc:
      Describes an ellipse in 2D space
      To create an ellipse there are several ways:
      Part.Geom2d.Ellipse2d()
      Creates an ellipse with major radius 2 and minor radius 1 with the
      center in (0,0)
    
      Part.Geom2d.Ellipse2d(Ellipse)
      Create a copy of the given ellipse
    
      Part.Geom2d.Ellipse2d(S1,S2,Center)
      Creates an ellipse centered on the point Center,
      its major axis is defined by Center and S1,
      its major radius is the distance between Center and S1, and
      its minor radius is the distance between S2 and the major axis.
    
      Part.Geom2d.Ellipse2d(Center,MajorRadius,MinorRadius)
      Creates an ellipse with major and minor radii MajorRadius and
      MinorRadius
    attributes:
      - MajorRadius: float
        doc:
          The major radius of the ellipse.
      - MinorRadius: float
        doc:
          The minor radius of the ellipse.
      - Focal: Final[float]
        doc:
          The focal distance of the ellipse.
      - Focus1: Final[object]
        doc:
          The first focus is on the positive side of the major axis of the ellipse.
      - Focus2: Final[object]
        doc:
          The second focus is on the negative side of the major axis of the ellipse.
    methods:
      @overload
      - def __init__(self) -> None
      @overload
      - def __init__(self, Ellipse: 'Ellipse2d') -> None
      @overload
      - def __init__(self, S1: object, S2: object, Center: object) -> None
      @overload
      - def __init__(self, Center: object, MajorRadius: float, MinorRadius: float) -> None
      @overload
      - def __init__(self, *args, **kwargs) -> None
```

```text theme={null}
MODULE Mod/Part/App/Geom2d/Geometry2d.pyi
classes:
  class Geometry2d(PyObjectBase)
    doc:
      The abstract class Geometry for 2D space is the root class of all geometric objects.
      It describes the common behavior of these objects when:
      - applying geometric transformations to objects, and
      - constructing objects by geometric transformation (including copying).
    methods:
      - def mirror(self) -> None
        doc:
          Performs the symmetrical transformation of this geometric object.
      - def rotate(self) -> None
        doc:
          Rotates this geometric object at angle Ang (in radians) around a point.
      - def scale(self) -> None
        doc:
          Applies a scaling transformation on this geometric object with a center and scaling factor.
      - def transform(self) -> None
        doc:
          Applies a transformation to this geometric object.
      - def translate(self) -> None
        doc:
          Translates this geometric object.
      @constmethod
      - def copy(self) -> 'Geometry2d'
        doc:
          Create a copy of this geometry.
```

```text theme={null}
MODULE Mod/Part/App/Geom2d/Hyperbola2d.pyi
classes:
  class Hyperbola2d(Conic2d)
    doc:
      Describes a hyperbola in 2D space
      To create a hyperbola there are several ways:
      Part.Geom2d.Hyperbola2d()
      Creates a hyperbola with major radius 2 and minor radius 1 with the
      center in (0,0)
    
      Part.Geom2d.Hyperbola2d(Hyperbola)
      Create a copy of the given hyperbola
    
      Part.Geom2d.Hyperbola2d(S1,S2,Center)
      Creates a hyperbola centered on the point Center, S1 and S2,
      its major axis is defined by Center and S1,
      its major radius is the distance between Center and S1, and
      its minor radius is the distance between S2 and the major axis.
    
      Part.Geom2d.Hyperbola2d(Center,MajorRadius,MinorRadius)
      Creates a hyperbola with major and minor radii MajorRadius and
      MinorRadius and located at Center
    attributes:
      - MajorRadius: float
        doc:
          The major radius of the hyperbola.
      - MinorRadius: float
        doc:
          The minor radius of the hyperbola.
      - Focal: Final[float]
        doc:
          The focal distance of the hyperbola.
      - Focus1: Final[object]
        doc:
          The first focus is on the positive side of the major axis of the hyperbola;
          the second focus is on the negative side.
      - Focus2: Final[object]
        doc:
          The first focus is on the positive side of the major axis of the hyperbola;
          the second focus is on the negative side.
    methods:
      @overload
      - def __init__(self) -> None
      @overload
      - def __init__(self, Hyperbola: 'Hyperbola2d') -> None
      @overload
      - def __init__(self, S1: object, S2: object, Center: object) -> None
      @overload
      - def __init__(self, Center: object, MajorRadius: float, MinorRadius: float) -> None
```

```text theme={null}
MODULE Mod/Part/App/Geom2d/Line2d.pyi
classes:
  class Line2d(Curve2d)
    doc:
      Describes an infinite line in 2D space
      To create a line there are several ways:
      Part.Geom2d.Line2d()
      Creates a default line.
    
      Part.Geom2d.Line2d(Line)
      Creates a copy of the given line.
    
      Part.Geom2d.Line2d(Point,Dir)
      Creates a line that goes through two given points.
    attributes:
      - Location: object
        doc:
          Returns the location of this line.
      - Direction: object
        doc:
          Returns the direction of this line.
```

```text theme={null}
MODULE Mod/Part/App/Geom2d/Line2dSegment.pyi
classes:
  class Line2dSegment(Curve2d)
    doc:
      Describes a line segment in 2D space.
    
      To create a line there are several ways:
      Part.Geom2d.Line2dSegment()
      Creates a default line
    
      Part.Geom2d.Line2dSegment(Line)
      Creates a copy of the given line
    
      Part.Geom2d.Line2dSegment(Point1,Point2)
      Creates a line that goes through two given points.
    attributes:
      - StartPoint: object
        doc:
          Returns the start point of this line segment.
      - EndPoint: object
        doc:
          Returns the end point of this line segment.
    methods:
      @overload
      - def __init__(self) -> None
      @overload
      - def __init__(self, Line: 'Line2dSegment') -> None
      @overload
      - def __init__(self, Point1: object, Point2: object) -> None
      - def setParameterRange(self) -> None
        doc:
          Set the parameter range of the underlying line segment geometry.
```

```text theme={null}
MODULE Mod/Part/App/Geom2d/OffsetCurve2d.pyi
classes:
  class OffsetCurve2d(Curve2d)
    attributes:
      - OffsetValue: float
        doc:
          Sets or gets the offset value to offset the underlying curve.
      - BasisCurve: object
        doc:
          Sets or gets the basic curve.
```

```text theme={null}
MODULE Mod/Part/App/Geom2d/Parabola2d.pyi
classes:
  class Parabola2d(Conic2d)
    doc:
      Describes a parabola in 2D space
    attributes:
      - Focal: float
        doc:
          The focal distance is the distance between the apex and the focus of the parabola.
      - Focus: Final[object]
        doc:
          The focus is on the positive side of the
          'X Axis' of the local coordinate system of the parabola.
      - Parameter: Final[float]
        doc:
          Compute the parameter of this parabola which is the distance between its focus
          and its directrix. This distance is twice the focal length.
```

```text theme={null}
MODULE Mod/Part/App/GeomPlate/BuildPlateSurface.pyi
classes:
  class BuildPlateSurface(PyObjectBase)
    doc:
      This class provides an algorithm for constructing such a plate surface.
    methods:
      - def init(self) -> None
        doc:
          Resets all constraints
      - def setNbBounds(self) -> None
        doc:
          Sets the number of bounds
      - def loadInitSurface(self) -> None
        doc:
          Loads the initial surface
      @constmethod
      - def surfInit(self) -> object
        doc:
          Returns the initial surface
      @constmethod
      - def surface(self) -> object
        doc:
          Returns the plate surface
      - def add(self) -> None
        doc:
          Adds a linear or point constraint
      - def perform(self) -> None
        doc:
          Calls the algorithm and computes the plate surface
      @constmethod
      - def isDone(self) -> bool
        doc:
          Tests whether computation of the plate has been completed
      @constmethod
      - def sense(self) -> object
        doc:
          Returns the orientation of the curves in the array returned by curves2d
      @constmethod
      - def order(self) -> int
        doc:
          Returns the order of the curves in the array returned by curves2d
      @constmethod
      - def curves2d(self) -> List[object]
        doc:
          Extracts the array of curves on the plate surface which
          correspond to the curve constraints set in add()
      @constmethod
      - def curveConstraint(self) -> object
        doc:
          Returns the curve constraint of order
      @constmethod
      - def pointConstraint(self) -> object
        doc:
          Returns the point constraint of order
      - def disc2dContour(self) -> object
        doc:
          Returns the 2D contour of the plate surface
      - def disc3dContour(self) -> object
        doc:
          Returns the 3D contour of the plate surface
      @constmethod
      - def G0Error(self) -> float
        doc:
          Returns the max distance between the result and the constraints
      @constmethod
      - def G1Error(self) -> float
        doc:
          Returns the max angle between the result and the constraints
      @constmethod
      - def G2Error(self) -> float
        doc:
          Returns the max difference of curvature between the result and the constraints
```

```text theme={null}
MODULE Mod/Part/App/GeomPlate/CurveConstraint.pyi
classes:
  class CurveConstraint(PyObjectBase)
    doc:
      Defines curves as constraints to be used to deform a surface
    attributes:
      - NbPoints: int
        doc:
          The number of points on the curve used as a
          constraint. The default setting is 10. This parameter
          affects computation time, which increases by the cube of
          the number of points.
      - FirstParameter: Final[float]
        doc:
          This function returns the first parameter of the curve.
          The first parameter is the lowest parametric value for the curve, which defines the starting point of the curve.
      - LastParameter: Final[float]
        doc:
          This function returns the last parameter of the curve.
          The last parameter is the highest parametric value for the curve, which defines the ending point of the curve.
      - Length: Final[float]
        doc:
          This function returns the length of the curve.
          The length of the curve is a geometric property that indicates how long the curve is in the space.
    methods:
      - def setOrder(self) -> None
        doc:
          Allows you to set the order of continuity required for the constraints: G0, G1, and G2, controlled
          respectively by G0Criterion G1Criterion and G2Criterion.
      - def order(self) -> None
        doc:
          Returns the order of constraint, one of G0, G1 or G2
      - def G0Criterion(self) -> None
        doc:
          Returns the G0 criterion at the parametric point U on the curve.
          This is the greatest distance allowed between the constraint and the target surface at U.
      - def G1Criterion(self) -> None
        doc:
          Returns the G1 criterion at the parametric point U on the curve.
          This is the greatest angle allowed between the constraint and the target surface at U.
          Raises an exception if the curve is not on a surface.
      - def G2Criterion(self) -> None
        doc:
          Returns the G2 criterion at the parametric point U on the curve.
          This is the greatest difference in curvature allowed between the constraint and the target surface at U.
          Raises an exception if the curve is not on a surface.
      - def setG0Criterion(self) -> None
        doc:
          Allows you to set the G0 criterion. This is the law
          defining the greatest distance allowed between the
          constraint and the target surface for each point of the
          constraint. If this criterion is not set, TolDist, the
          distance tolerance from the constructor, is used.
      - def setG1Criterion(self) -> None
        doc:
          Allows you to set the G1 criterion. This is the law
          defining the greatest angle allowed between the
          constraint and the target surface. If this criterion is not
          set, TolAng, the angular tolerance from the constructor, is used.
          Raises an exception if the curve is not on a surface.
      - def setG2Criterion(self) -> None
        doc:
          Allows you to set the G2 criterion. This is the law
          defining the greatest difference in curvature allowed
          between the constraint and the target surface. If this
          criterion is not set, TolCurv, the curvature tolerance from
          the constructor, is used.
          Raises ConstructionError if the point is not on the surface.
      - def curve3d(self) -> None
        doc:
          Returns a 3d curve associated the surface resulting of the constraints
      - def setCurve2dOnSurf(self) -> None
        doc:
          Loads a 2d curve associated the surface resulting of the constraints
      - def curve2dOnSurf(self) -> None
        doc:
          Returns a 2d curve associated the surface resulting of the constraints
      - def setProjectedCurve(self) -> None
        doc:
          Loads a 2d curve  resulting from the normal projection of
          the curve on the initial surface
      - def projectedCurve(self) -> None
        doc:
          Returns the projected curve resulting from the normal projection of the
          curve on the initial surface
```

```text theme={null}
MODULE Mod/Part/App/GeomPlate/PointConstraint.pyi
classes:
  class PointConstraint(PyObjectBase)
    doc:
      Defines points as constraints to be used to deform a surface
    methods:
      - def setOrder(self, order: str, /) -> None
        doc:
          Allows you to set the order of continuity required for
          the constraints: G0, G1, and G2, controlled
          respectively by G0Criterion G1Criterion and G2Criterion.
      - def order(self) -> str
        doc:
          Returns the order of constraint, one of G0, G1 or G2
      - def G0Criterion(self, U: float, /) -> float
        doc:
          Returns the G0 criterion at the parametric point U on
          the curve. This is the greatest distance allowed between
          the constraint and the target surface at U.
      - def G1Criterion(self, U: float, /) -> float
        doc:
          Returns the G1 criterion at the parametric point U on
          the curve. This is the greatest angle allowed between
          the constraint and the target surface at U.
          Raises an exception if  the  curve  is  not  on  a  surface.
      - def G2Criterion(self, U: float, /) -> float
        doc:
          Returns the G2 criterion at the parametric point U on
          the curve. This is the greatest difference in curvature
          allowed between the constraint and the target surface at U.
          Raises an exception if  the  curve  is  not  on  a  surface.
      - def setG0Criterion(self, value: float, /) -> None
        doc:
          Allows you to set the G0 criterion. This is the law
          defining the greatest distance allowed between the
          constraint and the target surface for each point of the
          constraint. If this criterion is not set, TolDist, the
          distance tolerance from the constructor, is used.
      - def setG1Criterion(self, value: float, /) -> None
        doc:
          Allows you to set the G1 criterion. This is the law
          defining the greatest angle allowed between the
          constraint and the target surface. If this criterion is not
          set, TolAng, the angular tolerance from the constructor, is used.
          Raises an exception if  the  curve  is  not  on  a  surface
      - def setG2Criterion(self, value: float, /) -> None
        doc:
          Allows you to set the G2 criterion. This is the law
          defining the greatest difference in curvature  allowed between the
          constraint and the target surface. If this criterion is not
          set, TolCurv, the curvature tolerance from the constructor, is used.
          Raises  ConstructionError if  the  curve  is  not  on  a  surface
      - def hasPnt2dOnSurf(self) -> bool
        doc:
          Checks if there is a 2D point associated with the surface. It returns a boolean indicating whether such a point exists.
      - def setPnt2dOnSurf(self, x: float, y: float, /) -> None
        doc:
          Allows you to set a 2D point on the surface. It takes a gp_Pnt2d as an argument, representing the 2D point to be associated with the surface.
      - def pnt2dOnSurf(self) -> Tuple[float, float]
        doc:
          Returns the 2D point on the surface. It returns a gp_Pnt2d representing the associated 2D point.
```

```text theme={null}
MODULE Mod/Part/App/Geometry.pyi
classes:
  class Geometry(Persistence)
    doc:
      The abstract class Geometry for 3D space is the root class of all geometric objects.
      It describes the common behavior of these objects when:
      - applying geometric transformations to objects, and
      - constructing objects by geometric transformation (including copying).
    attributes:
      - Tag: Final[str]
        doc:
          Gives the tag of the geometry as string.
    methods:
      - def mirror(self, geometry: 'Geometry', /) -> None
        doc:
          Performs the symmetrical transformation of this geometric object
      - def rotate(self, angle: float, axis: Vector, /) -> None
        doc:
          Rotates this geometric object at angle Ang (in radians) about axis
      - def scale(self, center: Vector, factor: float, /) -> None
        doc:
          Applies a scaling transformation on this geometric object with a center and scaling factor
      - def transform(self, transformation: Matrix, /) -> None
        doc:
          Applies a transformation to this geometric object
      - def translate(self, vector: Vector, /) -> None
        doc:
          Translates this geometric object
      @constmethod
      - def copy(self) -> 'Geometry'
        doc:
          Create a copy of this geometry
      @constmethod
      - def clone(self) -> 'Geometry'
        doc:
          Create a clone of this geometry with the same Tag
      @constmethod
      - def isSame(self, geom: 'Geometry', tol: float, angulartol: float, /) -> bool
        doc:
          isSame(geom, tol, angulartol) -> boolean
        
          Compare this geometry to another one
      @constmethod
      - def hasExtensionOfType(self, type_name: str, /) -> bool
        doc:
          Returns a boolean indicating whether a geometry extension of the type indicated as a string exists.
      @constmethod
      - def hasExtensionOfName(self, name: str, /) -> bool
        doc:
          Returns a boolean indicating whether a geometry extension with the name indicated as a string exists.
      @constmethod
      - def getExtensionOfType(self, type_name: str, /) -> Optional[Extension]
        doc:
          Gets the first geometry extension of the type indicated by the string.
      @constmethod
      - def getExtensionOfName(self, name: str, /) -> Optional[Extension]
        doc:
          Gets the first geometry extension of the name indicated by the string.
      - def setExtension(self, extension: Extension, /) -> None
        doc:
          Sets a geometry extension of the indicated type.
      - def deleteExtensionOfType(self, type_name: str, /) -> None
        doc:
          Deletes all extensions of the indicated type.
      - def deleteExtensionOfName(self, name: str, /) -> None
        doc:
          Deletes all extensions of the indicated name.
      @constmethod
      - def getExtensions(self) -> List[Extension]
        doc:
          Returns a list with information about the geometry extensions.
```

```text theme={null}
MODULE Mod/Part/App/GeometryBoolExtension.pyi
classes:
  class GeometryBoolExtension(GeometryExtension)
    doc:
      A GeometryExtension extending geometry objects with a boolean.
    attributes:
      - Value: bool
        doc:
          Returns the value of the GeometryBoolExtension.
```

```text theme={null}
MODULE Mod/Part/App/GeometryCurve.pyi
classes:
  class GeometryCurve(Geometry)
    doc:
      The abstract class GeometryCurve is the root class of all curve objects.
    attributes:
      - Continuity: Final[str]
        doc:
          Returns the global continuity of the curve.
      - FirstParameter: Final[float]
        doc:
          Returns the value of the first parameter.
      - LastParameter: Final[float]
        doc:
          Returns the value of the last parameter.
      - Rotation: Final[RotationPy]
        doc:
          Returns a rotation object to describe the orientation for curve that supports it
    methods:
      @constmethod
      - def toShape(self) -> TopoShape
        doc:
          Return the shape for the geometry.
      @overload
      @constmethod
      - def discretize(self, Number: int, *, First: Optional[float]=None, Last: Optional[float]=None) -> List[Vector]
        doc:
          Discretizes the curve and returns a list of points.
      @overload
      @constmethod
      - def discretize(self, QuasiNumber: int, *, First: Optional[float]=None, Last: Optional[float]=None) -> List[Vector]
        doc:
          Discretizes the curve and returns a list of quasi equidistant points.
      @overload
      @constmethod
      - def discretize(self, Distance: float, *, First: Optional[float]=None, Last: Optional[float]=None) -> List[Vector]
        doc:
          Discretizes the curve and returns a list of equidistant points with distance 'd'.
      @overload
      @constmethod
      - def discretize(self, Deflection: float, *, First: Optional[float]=None, Last: Optional[float]=None) -> List[Vector]
        doc:
          Discretizes the curve and returns a list of points with a maximum deflection 'd' to the curve.
      @overload
      @constmethod
      - def discretize(self, QuasiDeflection: float, *, First: Optional[float]=None, Last: Optional[float]=None) -> List[Vector]
        doc:
          Discretizes the curve and returns a list of points with a maximum deflection 'd' to the curve (faster).
      @overload
      @constmethod
      - def discretize(self, Angular: float, Curvature: float, Minimum: int=2, *, First: Optional[float]=None, Last: Optional[float]=None) -> List[Vector]
        doc:
          Discretizes the curve and returns 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.
      @constmethod
      - def discretize(self, **kwargs) -> List[Vector]
        doc:
          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 float
          then the behaviour is as if using the keyword 'Distance'.
        
          Example:
        
          import Part
          c=Part.Circle()
          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)
      @constmethod
      - def getD0(self, parameter: float, /) -> Vector
        doc:
          Returns the point of given parameter
      @constmethod
      - def getD1(self, parameter: float, /) -> Vector
        doc:
          Returns the point and first derivative of given parameter
      @constmethod
      - def getD2(self, parameter: float, /) -> Vector
        doc:
          Returns the point, first and second derivatives
      @constmethod
      - def getD3(self, parameter: float, /) -> Vector
        doc:
          Returns the point, first, second and third derivatives
      @constmethod
      - def getDN(self, n: int, parameter: float, /) -> Vector
        doc:
          Returns the n-th derivative
      @constmethod
      - def length(self, uMin: Optional[float]=None, uMax: Optional[float]=None, Tol: Optional[float]=None, /) -> float
        doc:
          Computes the length of a curve
          length([uMin, uMax, Tol]) -> float
      @constmethod
      - def parameterAtDistance(self, abscissa: Optional[float]=None, startingParameter: Optional[float]=None, /) -> float
        doc:
          Returns the parameter on the curve of a point at the given distance from a starting parameter.
          parameterAtDistance([abscissa, startingParameter]) -> float
      @constmethod
      - def value(self, u: float, /) -> Vector
        doc:
          Computes the point of parameter u on this curve
      @constmethod
      - def tangent(self, u: float, /) -> Vector
        doc:
          Computes the tangent of parameter u on this curve
      @constmethod
      - def makeRuledSurface(self, otherCurve: 'GeometryCurve', /) -> object
        doc:
          Make a ruled surface of this and the given curves
      @constmethod
      - def intersect2d(self, otherCurve: 'GeometryCurve', /) -> List[Vector]
        doc:
          Get intersection points with another curve lying on a plane.
      @constmethod
      - def continuityWith(self, otherCurve: 'GeometryCurve', /) -> str
        doc:
          Computes the continuity of two curves
      @constmethod
      - def parameter(self, point: Vector, /) -> float
        doc:
          Returns the parameter on the curve of the nearest orthogonal projection of the point.
      @constmethod
      - def normal(self, pos: float, /) -> Vector
        doc:
          Vector = normal(pos) - Get the normal vector at the given parameter [First|Last] if defined
      @overload
      @constmethod
      - def projectPoint(self, Point: Vector, Method: str='NearestPoint') -> Vector
        doc:
          projectPoint(Point=Vector, Method="NearestPoint") -> Vector
      @overload
      @constmethod
      - def projectPoint(self, Point: Vector, Method: str='LowerDistance') -> float
        doc:
          projectPoint(Vector, "LowerDistance") -> float.
      @overload
      @constmethod
      - def projectPoint(self, Point: Vector, Method: str='LowerDistanceParameter') -> float
        doc:
          projectPoint(Vector, "LowerDistanceParameter") -> float.
      @overload
      @constmethod
      - def projectPoint(self, Point: Vector, Method: str='Distance') -> List[float]
        doc:
          projectPoint(Vector, "Distance") -> list of floats.
      @overload
      @constmethod
      - def projectPoint(self, Point: Vector, Method: str='Parameter') -> List[float]
        doc:
          projectPoint(Vector, "Parameter") -> list of floats.
      @overload
      @constmethod
      - def projectPoint(self, Point: Vector, Method: str='Point') -> List[Vector]
        doc:
          projectPoint(Vector, "Point") -> list of points.
      @constmethod
      - def projectPoint(self, **kwargs) -> Union[Vector, float, List[float], List[Vector]]
        doc:
          Computes the projection of a point on the curve
        
          projectPoint(Point=Vector,[Method="NearestPoint"])
          projectPoint(Vector,"NearestPoint") -> Vector
          projectPoint(Vector,"LowerDistance") -> float
          projectPoint(Vector,"LowerDistanceParameter") -> float
          projectPoint(Vector,"Distance") -> list of floats
          projectPoint(Vector,"Parameter") -> list of floats
          projectPoint(Vector,"Point") -> list of points
      @constmethod
      - def curvature(self, pos: float, /) -> float
        doc:
          Float = curvature(pos) - Get the curvature at the given parameter [First|Last] if defined
      @constmethod
      - def centerOfCurvature(self, pos: float, /) -> Vector
        doc:
          Vector = centerOfCurvature(float pos) - Get the center of curvature at the given parameter [First|Last] if defined
      @constmethod
      - def intersect(self, curve_or_surface: object, precision: float, /) -> object
        doc:
          Returns all intersection points and curve segments between the curve and the curve/surface.
        
          arguments: curve/surface (for the intersection), precision (float)
      @constmethod
      - def intersectCS(self, surface: object, /) -> object
        doc:
          Returns all intersection points and curve segments between the curve and the surface.
      @constmethod
      - def intersectCC(self, otherCurve: 'GeometryCurve', /) -> List[Vector]
        doc:
          Returns all intersection points between this curve and the given curve.
      @constmethod
      - def toBSpline(self, points: Tuple[float, float], /) -> BSplineCurve
        doc:
          Converts a curve of any type (only part from First to Last) to BSpline curve.
          toBSpline((first: float, last: float)) -> BSplineCurve
      @constmethod
      - def toNurbs(self, points: Tuple[float, float], /) -> BSplineCurve
        doc:
          Converts a curve of any type (only part from First to Last) to NURBS curve.
          toNurbs((first: float, last: float)) -> NurbsCurve
      @constmethod
      - def trim(self, points: Tuple[float, float], /) -> TrimmedCurve
        doc:
          Returns a trimmed curve defined in the given parameter range.
          trim((first: float, last: float)) -> TrimmedCurve
      @constmethod
      - def approximateBSpline(self, Tolerance: float, MaxSegments: int, MaxDegree: int, Order: str='C2', /) -> BSplineCurve
        doc:
          Approximates a curve of any type to a B-Spline curve.
          approximateBSpline(Tolerance, MaxSegments, MaxDegree, [Order='C2']) -> BSplineCurve
      - def reverse(self) -> None
        doc:
          Changes the direction of parametrization of the curve.
      @constmethod
      - def reversedParameter(self, U: float, /) -> float
        doc:
          Returns the parameter on the reversed curve for the point of parameter U on this curve.
      @constmethod
      - def isPeriodic(self) -> bool
        doc:
          Returns true if this curve is periodic.
      @constmethod
      - def period(self) -> float
        doc:
          Returns the period of this curve or raises an exception if it is not periodic.
      @constmethod
      - def isClosed(self) -> bool
        doc:
          Returns true if the curve is closed.
```

```text theme={null}
MODULE Mod/Part/App/GeometryDoubleExtension.pyi
classes:
  class GeometryDoubleExtension(GeometryExtension)
    doc:
      A GeometryExtension extending geometry objects with a double.
    attributes:
      - Value: float
        doc:
          Returns the value of the GeometryDoubleExtension.
```

```text theme={null}
MODULE Mod/Part/App/GeometryExtension.pyi
classes:
  class GeometryExtension(PyObjectBase)
    doc:
      The abstract class GeometryExtension enables to extend geometry objects with application specific data.
    attributes:
      - Name: str
        doc:
          Sets/returns the name of this extension.
    methods:
      @constmethod
      - def copy(self) -> 'GeometryExtension'
        doc:
          Create a copy of this geometry extension.
```

```text theme={null}
MODULE Mod/Part/App/GeometryIntExtension.pyi
classes:
  class GeometryIntExtension(GeometryExtension)
    doc:
      A GeometryExtension extending geometry objects with an int.
    attributes:
      - Value: int
        doc:
          returns the value of the GeometryIntExtension.
```

```text theme={null}
MODULE Mod/Part/App/GeometryStringExtension.pyi
classes:
  class GeometryStringExtension(GeometryExtension)
    doc:
      A GeometryExtension extending geometry objects with a string.
    attributes:
      - Value: str
        doc:
          returns the value of the GeometryStringExtension.
```

```text theme={null}
MODULE Mod/Part/App/GeometrySurface.pyi
classes:
  class GeometrySurface(Geometry)
    doc:
      The abstract class GeometrySurface is the root class of all surface objects.
    attributes:
      - Continuity: Final[str]
        doc:
          Returns the global continuity of the surface.
      - Rotation: Final[RotationPy]
        doc:
          Returns a rotation object to describe the orientation for surface that supports it
    methods:
      @constmethod
      - def toShape(self) -> Any
        doc:
          Return the shape for the geometry.
      @constmethod
      - def toShell(self, Bounds: object, Segment: object) -> Any
        doc:
          Make a shell of the surface.
      @constmethod
      - def getD0(self, param: float, /) -> Vector
        doc:
          Returns the point of given parameter
      @constmethod
      - def getDN(self, n: int, /) -> Any
        doc:
          Returns the n-th derivative
      @constmethod
      - def value(self, u: float, v: float, /) -> Vector
        doc:
          value(u,v) -> Point
          Computes the point of parameter (u,v) on this surface
      @constmethod
      - def tangent(self, u: float, v: float, /) -> Tuple[Vector, Vector]
        doc:
          tangent(u,v) -> (Vector,Vector)
          Computes the tangent of parameter (u,v) on this geometry
      @constmethod
      - def normal(self, u: float, v: float, /) -> Vector
        doc:
          normal(u,v) -> Vector
          Computes the normal of parameter (u,v) on this geometry
      @overload
      - def projectPoint(self, Point: Vector, Method: Literal['NearestPoint']='NearestPoint') -> Vector
      @overload
      - def projectPoint(self, Point: Vector, Method: Literal['LowerDistance']) -> float
      @overload
      - def projectPoint(self, Point: Vector, Method: Literal['LowerDistanceParameters']) -> Tuple[float, float]
      @overload
      - def projectPoint(self, Point: Vector, Method: Literal['Distance']) -> List[float]
      @overload
      - def projectPoint(self, Point: Vector, Method: Literal['Parameters']) -> List[Tuple[float, float]]
      @overload
      - def projectPoint(self, Point: Vector, Method: Literal['Point']) -> List[Vector]
      @constmethod
      - def projectPoint(self, Point: Vector, Method: str=...) -> Any
        doc:
          Computes the projection of a point on the surface
        
          projectPoint(Point=Vector,[Method="NearestPoint"])
          projectPoint(Vector,"NearestPoint") -> Vector
          projectPoint(Vector,"LowerDistance") -> float
          projectPoint(Vector,"LowerDistanceParameters") -> tuple of floats (u,v)
          projectPoint(Vector,"Distance") -> list of floats
          projectPoint(Vector,"Parameters") -> list of tuples of floats
          projectPoint(Vector,"Point") -> list of points
      @constmethod
      - def isUmbillic(self, u: float, v: float, /) -> bool
        doc:
          isUmbillic(u,v) -> bool
          Check if the geometry on parameter is an umbillic point,
          i.e. maximum and minimum curvature are equal.
      @constmethod
      - def curvature(self, u: float, v: float, type: str, /) -> float
        doc:
          curvature(u,v,type) -> float
          The value of type must be one of this: Max, Min, Mean or Gauss
          Computes the curvature of parameter (u,v) on this geometry
      @constmethod
      - def curvatureDirections(self, u: float, v: float, /) -> Tuple[Vector, Vector]
        doc:
          curvatureDirections(u,v) -> (Vector,Vector)
          Computes the directions of maximum and minimum curvature
          of parameter (u,v) on this geometry.
          The first vector corresponds to the maximum curvature,
          the second vector corresponds to the minimum curvature.
      @constmethod
      - def bounds(self) -> Tuple[float, float, float, float]
        doc:
          Returns the parametric bounds (U1, U2, V1, V2) of this trimmed surface.
      @constmethod
      - def isPlanar(self, tolerance: float=0.0, /) -> bool
        doc:
          isPlanar([float]) -> Bool
          Checks if the surface is planar within a certain tolerance.
      @constmethod
      - def uIso(self, u: Tuple, /) -> Union[GeometryCurve, Line]
        doc:
          Builds the U isoparametric curve
      @constmethod
      - def vIso(self, v: Tuple, /) -> Union[GeometryCurve, Line]
        doc:
          Builds the V isoparametric curve
      @constmethod
      - def isUPeriodic(self) -> bool
        doc:
          Returns true if this patch is periodic in the given parametric direction.
      @constmethod
      - def isVPeriodic(self) -> bool
        doc:
          Returns true if this patch is periodic in the given parametric direction.
      @constmethod
      - def isUClosed(self) -> bool
        doc:
          Checks if this surface is closed in the u parametric direction.
      @constmethod
      - def isVClosed(self) -> bool
        doc:
          Checks if this surface is closed in the v parametric direction.
      @constmethod
      - def UPeriod(self) -> float
        doc:
          Returns the period of this patch in the u parametric direction.
      @constmethod
      - def VPeriod(self) -> float
        doc:
          Returns the period of this patch in the v parametric direction.
      @constmethod
      - def parameter(self) -> float
        doc:
          Returns the parameter on the curve
          of the nearest orthogonal projection of the point.
      @overload
      - def toBSpline(self, tolerance: float=1e-07, continuity_u: Literal['C0', 'G0', 'G1', 'C1', 'G2', 'C3', 'CN']='C1', continuity_v: Literal['C0', 'G0', 'G1', 'C1', 'G2', 'C3', 'CN']='C1', max_degree_u: int=25, max_degree_v: int=25, max_segments: int=1000, precision_code: int=0) -> Any
      @constmethod
      - def toBSpline(self, tolerance: float=1e-07, continuity_u: str='C1', continuity_v: str='C1', max_degree_u: int=25, max_degree_v: int=25, max_segments: int=1000, precision_code: int=0) -> Any
        doc:
          Returns a B-Spline representation of this surface.
          The optional arguments are:
          * tolerance (default=1e-7)
          * continuity in u (as string e.g. C0, G0, G1, C1, G2, C3, CN) (default='C1')
          * continuity in v (as string e.g. C0, G0, G1, C1, G2, C3, CN) (default='C1')
          * maximum degree in u (default=25)
          * maximum degree in v (default=25)
          * maximum number of segments (default=1000)
          * precision code (default=0)
          Will raise an exception if surface is infinite in U or V (like planes, cones or cylinders)
      @constmethod
      - def intersect(self) -> Any
        doc:
          Returns all intersection points/curves between the surface and the curve/surface.
      @constmethod
      - def intersectSS(self, SecondSurface: Any, precision_code: int=0, /) -> Any
        doc:
          Returns all intersection curves of this surface and the given surface.
          The required arguments are:
          * Second surface
          * precision code (optional, default=0)
```

```text theme={null}
MODULE Mod/Part/App/HLRBRep/HLRBRep_Algo.pyi
classes:
  class HLRBRep_Algo(PyObjectBase)
    doc:
      Algo() -> HLRBRep_Algo
    
      A framework to compute a shape as seen in a projection
      plane. This is done by calculating the visible and the hidden parts
      of the shape. HLRBRep_Algo works with three types of entity:
    
      - shapes to be visualized
      - edges in these shapes (these edges are the basic entities which will be
      visualized or hidden), and
      - faces in these shapes which hide the edges.
    
      HLRBRep_Algo is based on the principle of comparing each edge of the shape to
      be visualized with each of its faces, and calculating the visible and the
      hidden parts of each edge. For a given projection, HLRBRep_Algo calculates a
      set of lines characteristic of the object being represented. It is also used in
      conjunction with the HLRBRep_HLRToShape extraction utilities, which reconstruct
      a new, simplified shape from a selection of calculation results. This new shape
      is made up of edges, which represent the shape visualized in the
      projection. HLRBRep_Algo takes the shape itself into account whereas
      HLRBRep_PolyAlgo works with a polyhedral simplification of the shape. When you
      use HLRBRep_Algo, you obtain an exact result, whereas, when you use
      HLRBRep_PolyAlgo, you reduce computation time but obtain polygonal segments. In
      the case of complicated shapes, HLRBRep_Algo may be time-consuming. An
      HLRBRep_Algo object provides a framework for:
    
      - defining the point of view
      - identifying the shape or shapes to be visualized
      - calculating the outlines
      - calculating the visible and hidden lines of the shape. Warning
      - Superimposed lines are not eliminated by this algorithm.
      - There must be no unfinished objects inside the shape you wish to visualize.
      - Points are not treated.
      - Note that this is not the sort of algorithm used in generating shading, which
      calculates the visible and hidden parts of each face in a shape to be
      visualized by comparing each face in the shape with every other face in the
      same shape.
    methods:
      - def add(self, S, nbIso: int=0, /) -> None
        doc:
          add(S, nbIso=0)
        
          Adds the shape S to this framework, and specifies the number of isoparameters
          nbiso desired in visualizing S.  You may add as many shapes as you wish.  Use
          the function add once for each shape.
      - def remove(self, i: int, /) -> None
        doc:
          remove(i)
        
          Remove the shape of index i from this framework.
      - def index(self, S, /) -> int
        doc:
          index(S) ->  int
        
          Return the index of the Shape S and return 0 if the Shape S is not found.
      - def outLinedShapeNullify(self) -> None
        doc:
          outlinedShapeNullify()
        
          Nullify all the results of OutLiner from HLRTopoBRep.
      - def setProjector(self, Origin: tuple[float, float, float]=(0, 0, 0), ZDir: tuple[float, float, float]=(0, 0, 0), XDir: tuple[float, float, float]=(0, 0, 0), focus: float=float('nan')) -> None
        doc:
          setProjector(Origin=(0, 0, 0), ZDir=(0,0,0), XDir=(0,0,0), focus=NaN)
        
          Set the projector.  With focus left to NaN, an axonometric projector is
          created.  Otherwise, a perspective projector is created with focus focus.
      - def nbShapes(self) -> int
        doc:
          nbShapes()
        
          Returns the number of shapes in the collection.  It does not modify the
          object's state and is used to retrieve the count of shapes.
      - def showAll(self, i: int=-1, /) -> None
        doc:
          showAll(i=-1)
        
          If i < 1, then set all the edges to visible.
          Otherwise, set to visible all the edges of the shape of index i.
      - def hide(self, i: int=-1, j: int=-1, /) -> None
        doc:
          hide(i=-1, j=-1)
        
          If i < 1, hide all of the datastructure.
          Otherwise, if j < 1, hide the shape of index i.
          Otherwise, hide the shape of index i by the shape of index j.
      - def hideAll(self, i: int=-1, /) -> None
        doc:
          hideAll(i=-1)
        
          If i < 1, hide all the edges.
          Otherwise, hide all the edges of shape of index i.
      - def partialHide(self) -> None
        doc:
          partialHide()
        
          Own hiding of all the shapes of the DataStructure without hiding by each other.
      - def select(self, i: int=-1, /) -> None
        doc:
          select(i=-1)
        
          If i < 1, select all the DataStructure.
          Otherwise, only select the shape of index i.
      - def selectEdge(self, i: int, /) -> None
        doc:
          selectEdge(i)
        
          Select only the edges of the shape of index i.
      - def selectFace(self, i: int, /) -> None
        doc:
          selectFace(i)
        
          Select only the faces of the shape of index i.
      - def initEdgeStatus(self) -> None
        doc:
          initEdgeStatus()
        
          Init the status of the selected edges depending of the back faces of a closed
          shell.
      - def update(self) -> None
        doc:
          update()
        
          Update the DataStructure.
```

```text theme={null}
MODULE Mod/Part/App/HLRBRep/HLRBRep_PolyAlgo.pyi
classes:
  class HLRBRep_PolyAlgo(PyObjectBase)
    doc:
      PolyAlgo() -> HLRBRep_PolyAlgo
    
      A framework to compute the shape as seen in a projection
      plane. This is done by calculating the visible and the hidden parts of the
      shape. HLRBRep_PolyAlgo works with three types of entity:
    
      - shapes to be visualized (these shapes must have already been triangulated.)
      - edges in these shapes (these edges are defined as polygonal lines on the
      triangulation of the shape, and are the basic entities which will be visualized
      or hidden), and
      - triangles in these shapes which hide the edges.
    
      HLRBRep_PolyAlgo is based on the principle of comparing each edge of the shape
      to be visualized with each of the triangles produced by the triangulation of
      the shape, and calculating the visible and the hidden parts of each edge. For a
      given projection, HLRBRep_PolyAlgo calculates a set of lines characteristic of
      the object being represented. It is also used in conjunction with the
      HLRBRep_PolyHLRToShape extraction utilities, which reconstruct a new,
      simplified shape from a selection of calculation results. This new shape is
      made up of edges, which represent the shape visualized in the
      projection. HLRBRep_PolyAlgo works with a polyhedral simplification of the
      shape whereas HLRBRep_Algo takes the shape itself into account. When you use
      HLRBRep_Algo, you obtain an exact result, whereas, when you use
      HLRBRep_PolyAlgo, you reduce computation time but obtain polygonal segments. An
      HLRBRep_PolyAlgo object provides a framework for:
    
      - defining the point of view
      - identifying the shape or shapes to be visualized
      - calculating the outlines
      - calculating the visible and hidden lines of the shape. Warning
      - Superimposed lines are not eliminated by this algorithm.
      - There must be no unfinished objects inside the shape you wish to visualize.
      - Points are not treated.
      - Note that this is not the sort of algorithm used in generating shading, which
      calculates the visible and hidden parts of each face in a shape to be
      visualized by comparing each face in the shape with every other face in the
      same shape.
    attributes:
      - TolAngular: float
      - TolCoef: float
    methods:
      - def load(self, S: TopoShape, /) -> None
        doc:
          load(S)
        
          Loads the shape S into this framework. Warning S must have already been triangulated.
      - def remove(self, i: int, /) -> None
        doc:
          remove(i)
        
          Remove the shape of index i from this framework.
      - def nbShapes(self) -> int
        doc:
          nbShapes()
        
          Returns the number of shapes in the collection.  It does not modify the
          object's state and is used to retrieve the count of shapes.
      - def shape(self, i: int, /) -> TopoShape
        doc:
          shape(i) -> TopoShape
        
          Return the shape of index i.
      - def index(self, S: TopoShape, /) -> int
        doc:
          index(S) ->  int
        
          Return the index of the Shape S.
      - def setProjector(self, Origin: tuple[float, float, float]=(0.0, 0.0, 0.0), ZDir: tuple[float, float, float]=(0.0, 0.0, 0.0), XDir: tuple[float, float, float]=(0.0, 0.0, 0.0), focus: float=float('nan')) -> None
        doc:
          setProjector(Origin=(0, 0, 0), ZDir=(0,0,0), XDir=(0,0,0), focus=NaN)
        
          Set the projector.  With focus left to NaN, an axonometric projector is
          created.  Otherwise, a perspective projector is created with focus focus.
      - def update(self) -> None
        doc:
          update()
        
          Launches calculation of outlines of the shape visualized by this
          framework. Used after setting the point of view and defining the shape or
          shapes to be visualized.
      - def initHide(self) -> None
        doc:
          initHide()
      - def moreHide(self) -> None
        doc:
          moreHide()
      - def nextHide(self) -> None
        doc:
          nextHide()
      - def initShow(self) -> None
        doc:
          initShow()
      - def moreShow(self) -> None
        doc:
          moreShow()
      - def nextShow(self) -> None
        doc:
          nextShow()
      - def outLinedShape(self, S: TopoShape, /) -> TopoShape
        doc:
          outLinedShape(S) -> TopoShape
        
          Make a shape with the internal outlines in each face of shape S.
```

```text theme={null}
MODULE Mod/Part/App/HLRBRep/HLRToShape.pyi
classes:
  class HLRToShape(PyObjectBase)
    doc:
      HLRToShape(algo: HLRBRep_Algo) -> HLRBRep_HLRToShape
    
      A framework for filtering the computation results of an HLRBRep_Algo algorithm
      by extraction. From the results calculated by the algorithm on a shape, a
      filter returns the type of edge you want to identify. You can choose any of the
      following types of output:
      - visible sharp edges
      - hidden sharp edges
      - visible smooth edges
      - hidden smooth edges
      - visible sewn edges
      - hidden sewn edges
      - visible outline edges
      - hidden outline edges
      - visible isoparameters and
      - hidden isoparameters.
    
      Sharp edges present a C0 continuity (non G1). Smooth edges present a G1
      continuity (non G2). Sewn edges present a C2 continuity. The result is composed
      of 2D edges in the projection plane of the view which the algorithm has worked
      with. These 2D edges are not included in the data structure of the visualized
      shape. In order to obtain a complete image, you must combine the shapes given
      by each of the chosen filters. The construction of the shape does not call a
      new computation of the algorithm, but only reads its internal results. The
      methods of this shape are almost identic to those of the HLRBrep_PolyHLRToShape
      class.
    methods:
      - def vCompound(self, Shape: Optional[TopoShape]=None, /) -> TopoShape
        doc:
          vCompound(Shape=None) -> TopoShape
        
          Sets the extraction filter for visible sharp edges for either shape Shape or
          for all added shapes (Shape=None).
      - def Rg1LineVCompound(self, Shape: Optional[TopoShape]=None, /) -> TopoShape
        doc:
          Rg1LineVCompound(Shape=None) -> TopoShape
        
          Sets the extraction filter for visible smooth edges for either shape Shape or
          for all added shapes (Shape=None).
      - def RgNLineVCompound(self, Shape: Optional[TopoShape]=None, /) -> TopoShape
        doc:
          RgNLineVCompound(Shape=None) -> TopoShape
        
          Sets the extraction filter for visible sewn edges for either shape Shape or for
          all added shapes (Shape=None).
      - def outLineVCompound(self, Shape: Optional[TopoShape]=None, /) -> TopoShape
        doc:
          outLineVCompound(Shape=None) -> TopoShape
        
          Sets the extraction filter for visible outline edges for either shape Shape or
          for all added shapes (Shape=None).
      - def outLineVCompound3d(self, Shape: Optional[TopoShape]=None, /) -> TopoShape
        doc:
          outLineVCompound(Shape=None) -> TopoShape
        
          Sets the extraction filter for visible outline edges in 3D for either shape
          Shape or for all added shapes (Shape=None).
      - def isoLineVCompound(self, Shape: Optional[TopoShape]=None, /) -> TopoShape
        doc:
          isoLineVCompound(Shape=None) -> TopoShape
        
          Sets the extraction filter for visible isoparameters for either shape Shape or
          for all added shapes (Shape=None).
      - def hCompound(self, Shape: Optional[TopoShape]=None, /) -> TopoShape
        doc:
          hCompound(Shape=None) -> TopoShape
        
          Sets the extraction filter for hidden sharp edges for either shape Shape or for
          all added shapes (Shape=None).
      - def Rg1LineHCompound(self, Shape: Optional[TopoShape]=None, /) -> TopoShape
        doc:
          Rg1LineHCompound(Shape=None) -> TopoShape
        
          Sets the extraction filter for hidden smooth edges for either shape Shape or
          for all added shapes (Shape=None).
      - def RgNLineHCompound(self, Shape: Optional[TopoShape]=None, /) -> TopoShape
        doc:
          RgNLineHCompound(Shape=None) -> TopoShape
        
          Sets the extraction filter for hidden sewn edges for either shape Shape or for
          all added shapes (Shape=None).
      - def outLineHCompound(self, Shape: Optional[TopoShape]=None, /) -> TopoShape
        doc:
          outLineHCompound(Shape=None) -> TopoShape
        
          Sets the extraction filter for hidden outline edges for either shape Shape or
          for all added shapes (Shape=None).
      - def isoLineHCompound(self, Shape: Optional[TopoShape]=None, /) -> TopoShape
        doc:
          isoLineHCompound(Shape=None) -> TopoShape
        
          Sets the extraction filter for hidden isoparameters for either shape Shape or
          for all added shapes (Shape=None).
      - def compoundOfEdges(self, Type: int, Visible: bool, In3D: bool, Shape: Optional[TopoShape]=None) -> TopoShape
        doc:
          compoundOfEdges(Type: int, Visible: bool, In3D: bool, Shape=None) -> TopoShape
        
          Returns compound of resulting edges of required type and visibility, taking
          into account the kind of space (2d or 3d).  If Shape=None, return it for all
          added shapes, otherwise return it for shape Shape.
```

```text theme={null}
MODULE Mod/Part/App/HLRBRep/PolyHLRToShape.pyi
classes:
  class PolyHLRToShape(PyObjectBase)
    doc:
      PolyHLRToShape(algo: HLRBRep_PolyAlgo) -> HLRBRep_PolyHLRToShape
    
      A framework for filtering the computation results of an HLRBRep_PolyAlgo
      algorithm by extraction.  From the results calculated by the algorithm on a
      shape, a filter returns the type of edge you want to identify.  You can choose
      any of the following types of output:
      - visible sharp edges
      - hidden sharp edges
      - visible smooth edges
      - hidden smooth edges
      - visible sewn edges
      - hidden sewn edges
      - visible outline edges
      - hidden outline edges
      - visible isoparameters and
      - hidden isoparameters.
    
      Sharp edges present a C0 continuity (non G1). Smooth edges present a G1
      continuity (non G2). Sewn edges present a C2 continuity. The result is composed
      of 2D edges in the projection plane of the view which the algorithm has worked
      with. These 2D edges are not included in the data structure of the visualized
      shape. In order to obtain a complete image, you must combine the shapes given
      by each of the chosen filters. The construction of the shape does not call a
      new computation of the algorithm, but only reads its internal results.
    methods:
      - def update(self, algo: HLRBRep_PolyAlgo, /) -> None
        doc:
          update(algo: HLRBRep_PolyAlgo)
      - def show(self) -> None
        doc:
          show()
      - def hide(self) -> None
        doc:
          hide()
      - def vCompound(self, Shape: Optional[TopoShape]=None, /) -> TopoShape
        doc:
          vCompound(Shape=None) -> TopoShape
        
          Sets the extraction filter for visible sharp edges for either shape Shape or
          for all added shapes (Shape=None).
      - def Rg1LineVCompound(self, Shape: Optional[TopoShape]=None, /) -> TopoShape
        doc:
          Rg1LineVCompound(Shape=None) -> TopoShape
        
          Sets the extraction filter for visible smooth edges for either shape Shape or
          for all added shapes (Shape=None).
      - def RgNLineVCompound(self, Shape: Optional[TopoShape]=None, /) -> TopoShape
        doc:
          RgNLineVCompound(Shape=None) -> TopoShape
        
          Sets the extraction filter for visible sewn edges for either shape Shape or for
          all added shapes (Shape=None).
      - def outLineVCompound(self, Shape: Optional[TopoShape]=None, /) -> TopoShape
        doc:
          outLineVCompound(Shape=None) -> TopoShape
        
          Sets the extraction filter for visible outline edges for either shape Shape or
          for all added shapes (Shape=None).
      - def hCompound(self, Shape: Optional[TopoShape]=None, /) -> TopoShape
        doc:
          hCompound(Shape=None) -> TopoShape
        
          Sets the extraction filter for hidden sharp edges for either shape Shape or for
          all added shapes (Shape=None).
      - def Rg1LineHCompound(self, Shape: Optional[TopoShape]=None, /) -> TopoShape
        doc:
          Rg1LineHCompound(Shape=None) -> TopoShape
        
          Sets the extraction filter for hidden smooth edges for either shape Shape or
          for all added shapes (Shape=None).
      - def RgNLineHCompound(self, Shape: Optional[TopoShape]=None, /) -> TopoShape
        doc:
          RgNLineHCompound(Shape=None) -> TopoShape
        
          Sets the extraction filter for hidden sewn edges for either shape Shape or for
          all added shapes (Shape=None).
      - def outLineHCompound(self, Shape: Optional[TopoShape]=None, /) -> TopoShape
        doc:
          outLineHCompound(Shape=None) -> TopoShape
        
          Sets the extraction filter for hidden outline edges for either shape Shape or
          for all added shapes (Shape=None).
```

```text theme={null}
MODULE Mod/Part/App/Hyperbola.pyi
classes:
  class Hyperbola(Conic)
    doc:
      Describes an hyperbola in 3D space
    
      To create a hyperbola there are several ways:
    
      Part.Hyperbola()
      Creates an hyperbola with major radius 2 and minor radius 1 with the
      center in (0,0,0)
    
      Part.Hyperbola(Hyperbola)
      Create a copy of the given hyperbola
    
      Part.Hyperbola(S1,S2,Center)
      Creates an hyperbola centered on the point Center, where
      the plane of the hyperbola is defined by Center, S1 and S2,
      its major axis is defined by Center and S1,
      its major radius is the distance between Center and S1, and
      its minor radius is the distance between S2 and the major axis.
    
      Part.Hyperbola(Center,MajorRadius,MinorRadius)
      Creates an hyperbola with major and minor radii MajorRadius and
      MinorRadius, and located in the plane defined by Center and
      the normal (0,0,1)
    attributes:
      - MajorRadius: float
        doc:
          The major radius of the hyperbola.
      - MinorRadius: float
        doc:
          The minor radius of the hyperbola.
      - Focal: Final[float]
        doc:
          The focal distance of the hyperbola.
      - Focus1: Final[Vector]
        doc:
          The first focus is on the positive side of the major axis of the hyperbola.
      - Focus2: Final[Vector]
        doc:
          The second focus is on the negative side of the major axis of the hyperbola.
    methods:
      @overload
      - def __init__(self) -> None
      @overload
      - def __init__(self, hyperbola: 'Hyperbola') -> None
      @overload
      - def __init__(self, S1: Vector, S2: Vector, Center: Vector) -> None
      @overload
      - def __init__(self, Center: Vector, MajorRadius: float, MinorRadius: float) -> None
```

```text theme={null}
MODULE Mod/Part/App/Line.pyi
classes:
  class Line(GeometryCurve)
    doc:
      Describes an infinite line
      To create a line there are several ways:
      Part.Line()
      Creates a default line
    
      Part.Line(Line)
      Creates a copy of the given line
    
      Part.Line(Point1,Point2)
      Creates a line that goes through two given points
    attributes:
      - Location: Vector
        doc:
          Returns the location of this line.
      - Direction: Vector
        doc:
          Returns the direction of this line.
    methods:
      @overload
      - def __init__(self) -> None
      @overload
      - def __init__(self, line: 'Line') -> None
      @overload
      - def __init__(self, point1: Vector, point2: Vector) -> None
```

```text theme={null}
MODULE Mod/Part/App/LineSegment.pyi
classes:
  class LineSegment(TrimmedCurve)
    doc:
      Describes a line segment
      To create a line segment there are several ways:
      Part.LineSegment()
      Creates a default line segment
    
      Part.LineSegment(LineSegment)
      Creates a copy of the given line segment
    
      Part.LineSegment(Point1,Point2)
      Creates a line segment that goes through two given points
    attributes:
      - StartPoint: Type
        doc:
          Returns the start point of this line.
      - EndPoint: Type
        doc:
          Returns the end point point of this line.
    methods:
      @overload
      - def __init__(self) -> None
      @overload
      - def __init__(self, line_segment: 'LineSegment') -> None
      @overload
      - def __init__(self, point1: Point, point2: Point) -> None
      - def setParameterRange(self) -> None
        doc:
          Set the parameter range of the underlying line geometry
```

```text theme={null}
MODULE Mod/Part/App/OffsetCurve.pyi
classes:
  class OffsetCurve(GeometryCurve)
    attributes:
      - OffsetValue: float
        doc:
          Sets or gets the offset value to offset the underlying curve.
      - OffsetDirection: Vector
        doc:
          Sets or gets the offset direction to offset the underlying curve.
      - BasisCurve: GeometryCurve
        doc:
          Sets or gets the basic curve.
```

```text theme={null}
MODULE Mod/Part/App/OffsetSurface.pyi
classes:
  class OffsetSurface(GeometrySurface)
    attributes:
      - OffsetValue: float
        doc:
          Sets or gets the offset value to offset the underlying surface.
      - BasisSurface: object
        doc:
          Sets or gets the basic surface.
```

```text theme={null}
MODULE Mod/Part/App/Parabola.pyi
classes:
  class Parabola(Conic)
    doc:
      Describes a parabola in 3D space
    attributes:
      - Focal: float
        doc:
          The focal distance is the distance between
          the apex and the focus of the parabola.
      - Focus: Final[Vector]
        doc:
          The focus is on the positive side of the
          'X Axis' of the local coordinate system of the parabola.
      - Parameter: Final[float]
        doc:
          Compute the parameter of this parabola
          which is the distance between its focus
          and its directrix. This distance is twice the focal length.
    methods:
      - def compute(self, p1: Vector, p2: Vector, p3: Vector, /) -> None
        doc:
          compute(p1,p2,p3) -> None
        
          The three points must lie on a plane parallel to xy plane and must not be collinear
```

```text theme={null}
MODULE Mod/Part/App/Part.module.pyi
module_doc:
  Typed public signatures for the ``Part`` module-level shape helpers.

  This static stub reference carries the large factory-style function surface
  that is implemented in the Part application module. Helper aliases and simple
  module-level declarations that the callable surface depends on live here.
attributes:
  - Point3: TypeAlias
  - ShapeSequence: TypeAlias
  - EdgeSequence: TypeAlias
  - OCCError: type[Exception]
  - OCCDomainError: type[Exception]
  - OCCRangeError: type[Exception]
  - OCCConstructionError: type[Exception]
  - OCCDimensionError: type[Exception]
  - _RevolutionShapeClass: TypeAlias
  - _SingleShapeCompoundCreationPolicy: TypeAlias
  - _FilledSupportPairs: TypeAlias
  - _FilledOrderPairs: TypeAlias
  - ExportUnits
functions:
  - def open(name: str, /) -> None
    doc:
      Open one Part-supported file into the active document context.
  - def insert(name: str, doc_name: str, /) -> None
    doc:
      Insert one Part-supported file into an existing document.
  - def export(objects: Sequence[DocumentObject], name: str, /) -> None
    doc:
      Export document objects to one Part-supported file.
  - def read(name: str, /) -> Shape
    doc:
      Read one Part-supported file and return the resulting shape.
  - def show(shape: Shape, name: str='Shape', /) -> Feature
    doc:
      Create a document feature that shows one shape.
  - def getFacets(shape: Shape, /) -> list[tuple[Point3, Point3, Point3]]
    doc:
      Return the triangulated facet vertices of one shape.
  @overload
  - def getShape(obj: DocumentObject, subname: str | None=None, mat: Matrix | None=None, needSubElement: bool=False, transform: bool=True, retType: Literal[0]=0, noElementMap: bool=False, refine: bool=False) -> Shape
    doc:
      Return only the resolved shape.
  @overload
  - def getShape(obj: DocumentObject, subname: str | None, mat: Matrix | None, needSubElement: bool, transform: bool, retType: Literal[1, 2], noElementMap: bool=False, refine: bool=False) -> tuple[Shape, Matrix, DocumentObject | None]
    doc:
      Return the shape together with placement and resolved subobject context.
  @overload
  - def getShape(obj: DocumentObject, subname: str | None=None, mat: Matrix | None=None, needSubElement: bool=False, transform: bool=True, retType: int=0, noElementMap: bool=False, refine: bool=False) -> Shape | tuple[Shape, Matrix, DocumentObject | None]
    doc:
      Accept any retType and reflect the broad union used at runtime.
  - def cast_to_shape(shape: Shape, /) -> Shape
    doc:
      Normalize a shape-like proxy to the public `Shape` wrapper.
  @overload
  - def makeRevolution(curve: Geometry, vmin: float=..., vmax: float=..., angle: float=360, point: Vector | None=None, direction: Vector | None=None, type: _RevolutionShapeClass | None=None, /) -> Shape
    doc:
      Revolve a curve geometry into a shape, optionally choosing the result class.
  @overload
  - def makeRevolution(edge: Edge, vmin: float=..., vmax: float=..., angle: float=360, point: Vector | None=None, direction: Vector | None=None, type: _RevolutionShapeClass | None=None, /) -> Shape
    doc:
      Revolve an edge into a shape, optionally choosing the result class.
  - def makeCompound(shapes: ShapeSequence, force: _SingleShapeCompoundCreationPolicy=..., op: str | None=None) -> Compound
    doc:
      Build a compound from one shape or a shape sequence.
  - def makeShell(shapes: ShapeSequence, op: str | None=None) -> Shell
    doc:
      Build a shell from one shape or a shape sequence.
  - def makeFace(shapes: ShapeSequence, class_name: str | None=None, op: str | None=None, *, noElementMap: bool=False) -> Face
    doc:
      Build a face from one shape or a compatible shape sequence.
  - def makeFilledSurface(shapes: ShapeSequence, surface: Shape | None=None, supports: _FilledSupportPairs | None=None, orders: _FilledOrderPairs | None=None, degree: int=..., ptsOnCurve: int=..., numIter: int=..., anisotropy: bool=..., tol2d: float=..., tol3d: float=..., tolG1: float=..., tolG2: float=..., maxDegree: int=..., maxSegments: int=..., op: str | None=None) -> Face
    doc:
      Build a filled surface face from boundary shapes and optional supports.
  - def makeFilledFace(shapes: ShapeSequence, surface: Shape | None=None, supports: _FilledSupportPairs | None=None, orders: _FilledOrderPairs | None=None, degree: int=..., ptsOnCurve: int=..., numIter: int=..., anisotropy: bool=..., tol2d: float=..., tol3d: float=..., tolG1: float=..., tolG2: float=..., maxDegree: int=..., maxSegments: int=..., op: str | None=None) -> Face
    doc:
      Build a filled face from boundary shapes and optional supports.
  - def makeSolid(shape: Shape, op: str | None=None) -> Solid
    doc:
      Convert one shell-like shape into a solid.
  - def makeRuledSurface(path: Edge | Wire, profile: Edge | Wire, orientation: int=0, op: str | None=None) -> Face | Shell
    doc:
      Create a ruled surface between two path shapes.
  - def makeShellFromWires(shape: ShapeSequence, op: str | None=None) -> Shell
    doc:
      Create a shell from a compatible wire sequence.
  - def makeTube(pshape: Shape, radius: float, scont: str='C0', maxdegree: int=3, maxsegment: int=30, /) -> Face
    doc:
      Create a tube surface around one path shape.
  - def makeSweepSurface(path: Shape, profile: Shape, tolerance: float=0.001, fillMode: int=0, /) -> Shape
    doc:
      Sweep one profile along one path and return the resulting shape.
  - def makeLoft(shapes: list[Shape], solid: bool=False, ruled: bool=False, closed: bool=False, max_degree: int=5, op: str | None=None) -> Shape
    doc:
      Loft a sequence of section shapes into a new shape.
  @overload
  - def makeWireString(intext: str | bytes, dir: str, fontfile: str, height: float, track: float=0, /) -> list[list[Wire]]
    doc:
      Use the legacy ``(text, fontdir, fontfile, ...)`` calling convention.
  @overload
  - def makeWireString(intext: str | bytes, fontspec: str, height: float, track: float=0, /) -> list[list[Wire]]
    doc:
      Use the newer ``(text, fontspec, ...)`` calling convention.
  @overload
  - def setStaticValue(name: str, cval: str, /) -> None
    doc:
      Set an OCC interface static from a string value.
  @overload
  - def setStaticValue(name: str, value: int | float, /) -> None
    doc:
      Set an OCC interface static from an integer or floating-point value.
  - def makePlane(length: float, width: float, pPnt: Vector | None=None, pDirZ: Vector | None=None, pDirX: Vector | None=None, /) -> Face
    doc:
      Create a planar face from dimensions and optional orientation vectors.
  - def makeBox(length: float, width: float, height: float, pPnt: Vector | None=None, pDir: Vector | None=None, /) -> Solid
    doc:
      Create a box solid from dimensions and optional placement.
  - def makeWedge(xmin: float, ymin: float, zmin: float, z2min: float, x2min: float, xmax: float, ymax: float, zmax: float, z2max: float, x2max: float, pPnt: Vector | None=None, pDir: Vector | None=None, /) -> Solid
    doc:
      Create a wedge solid from the OCC wedge parameters.
  - def makeLine(obj1: Vector | Point3, obj2: Vector | Point3, /) -> Edge
    doc:
      Create a line edge between two points.
  - def makePolygon(pcObj: Sequence[Vector | Point3], pclosed: bool=False, /) -> Wire
    doc:
      Create a polygon wire from a point sequence.
  - def makeCircle(radius: float, pPnt: Vector | None=None, pDir: Vector | None=None, angle1: float=0.0, angle2: float=360, /) -> Edge
    doc:
      Create a circular edge or arc.
  - def makeSphere(radius: float, pPnt: Vector | None=None, pDir: Vector | None=None, angle1: float=-90, angle2: float=90, angle3: float=360, /) -> Solid
    doc:
      Create a sphere solid or spherical segment.
  - def makeCylinder(radius: float, height: float, pPnt: Vector | None=None, pDir: Vector | None=None, angle: float=360, /) -> Solid
    doc:
      Create a cylinder solid or cylindrical segment.
  - def makeCone(radius1: float, radius2: float, height: float, pPnt: Vector | None=None, pDir: Vector | None=None, angle: float=360, /) -> Solid
    doc:
      Create a cone or frustum solid.
  - def makeTorus(radius1: float, radius2: float, pPnt: Vector | None=None, pDir: Vector | None=None, angle1: float=0.0, angle2: float=360, angle: float=360, /) -> Solid
    doc:
      Create a torus solid or toroidal segment.
  - def makeHelix(pitch: float, height: float, radius: float, angle: float=-1.0, pleft: bool=False, pvertHeight: bool=False, /) -> Wire
    doc:
      Create a helix wire.
  - def makeLongHelix(pitch: float, height: float, radius: float, angle: float=-1.0, pleft: bool=False, /) -> Wire
    doc:
      Create a long helix wire using the extended implementation.
  - def makeThread(pitch: float, depth: float, height: float, radius: float, /) -> Wire
    doc:
      Create a thread-profile wire.
  - def makeSplitShape(shape: Shape, splits: Sequence[tuple[Shape, Shape]], checkInterior: bool=True, /) -> tuple[list[Shape], list[Shape]]
    doc:
      Split a shape by splitter pairs and return outside and inside fragments.
  - def exportUnits(unit: str | None=None, /) -> ExportUnits
    doc:
      Return the current Part export-unit configuration.
  - def getSortedClusters(obj: EdgeSequence, /) -> list[list[Edge]]
    doc:
      Group edges into connected clusters.
  - def __sortEdges__(obj: EdgeSequence, /) -> list[Edge]
    doc:
      Return one legacy sorted edge sequence.
  - def sortEdges(obj: EdgeSequence, tol3d: float | None=None, /) -> list[list[Edge]]
    doc:
      Group and order connected edges with an optional tolerance override.
  - def __toPythonOCC__(shape: Shape, /) -> object
    doc:
      Convert one Part shape to a PythonOCC proxy object.
  - def __fromPythonOCC__(proxy: object, /) -> Shape
    doc:
      Convert one PythonOCC proxy object to a Part shape.
  - def clearShapeCache() -> None
    doc:
      Clear the process-wide Part shape conversion cache.
  - def splitSubname(subname: str, /) -> list[str]
    doc:
      Split one mapped subname string into its path components.
  - def joinSubname(sub: str, mapped: str, element: str, /) -> str
    doc:
      Join mapped subname components into one canonical string.
```

```text theme={null}
MODULE Mod/Part/App/Part2DObject.pyi
classes:
  class Part2DObject(PartFeature)
    doc:
      This object represents a 2D Shape in a 3D World
```

```text theme={null}
MODULE Mod/Part/App/PartFeature.pyi
classes:
  class PartFeature(GeoFeature)
    doc:
      This is the father of all shape object classes
    methods:
      @constmethod
      - def getElementHistory(self, name: str, *, recursive: bool=True, sameType: bool=False, showName: bool=False) -> Union[Tuple[DocumentObject, str, List[str]], List[Tuple[DocumentObject, str, List[str]]]]
        doc:
          getElementHistory(name,recursive=True,sameType=False,showName=False) - returns the element mapped name history
        
          name: mapped element name belonging to this shape
          recursive: if True, then track back the history through other objects till the origin
          sameType: if True, then stop trace back when element type changes
          showName: if False, return the owner object, or else return a tuple of object name and label
        
          If not recursive, then return tuple(sourceObject, sourceElementName, [intermediateNames...]),
          otherwise return a list of tuple.
```

```text theme={null}
MODULE Mod/Part/App/Plane.pyi
classes:
  class Plane(GeometrySurface)
    doc:
      Describes an infinite plane
      To create a plane there are several ways:
      Part.Plane()
      Creates a default plane with base (0,0,0) and normal (0,0,1)
    
      Part.Plane(Plane)
      Creates a copy of the given plane
    
      Part.Plane(Plane, Distance)
      Creates a plane parallel to given plane at a certain distance
    
      Part.Plane(Location,Normal)
      Creates a plane with a given location and normal
    
      Part.Plane(Point1,Point2,Point3)
      Creates a plane defined by three non-linear points
    
      Part.Plane(A,B,C,D)
      Creates a plane from its cartesian equation
      Ax+By+Cz+D=0
    attributes:
      - Position: object
        doc:
          Returns the position point of this plane.
      - Axis: object
        doc:
          Returns the axis of this plane.
```

```text theme={null}
MODULE Mod/Part/App/PlateSurface.pyi
classes:
  class PlateSurface(GeometrySurface)
    doc:
      Represents a plate surface in FreeCAD-compatible runtime. Plate surfaces can be defined by specifying points or curves as constraints, and they can also be approximated to B-spline surfaces using the makeApprox method. This class is commonly used in CAD modeling for creating surfaces that represent flat or curved plates, such as sheet metal components or structural elements.
    methods:
      - def makeApprox(self, *, Tol3d: float=0, MaxSegments: int=0, MaxDegree: int=0, MaxDistance: float=0, CritOrder: int=0, Continuity: str='', EnlargeCoeff: float=0) -> None
        doc:
          Approximate the plate surface to a B-Spline surface
```

```text theme={null}
MODULE Mod/Part/App/Point.pyi
classes:
  class Point(Geometry)
    doc:
      Describes a point
      To create a point there are several ways:
      Part.Point()
      Creates a default point
    
      Part.Point(Point)
      Creates a copy of the given point
    
      Part.Point(Vector)
      Creates a line for the given coordinates
    attributes:
      - X: float
        doc:
          X component of this point.
      - Y: float
        doc:
          Y component of this point.
      - Z: float
        doc:
          Z component of this point.
    methods:
      @overload
      - def __init__(self) -> None
      @overload
      - def __init__(self, other: 'Point') -> None
      @overload
      - def __init__(self, coordinates: Vector) -> None
      @constmethod
      - def toShape(self) -> object
        doc:
          Create a vertex from this point.
```

```text theme={null}
MODULE Mod/Part/App/RectangularTrimmedSurface.pyi
classes:
  class RectangularTrimmedSurface(GeometrySurface)
    doc:
      Describes a portion of a surface (a patch) limited by two values of the
      u parameter in the u parametric direction, and two values of the v parameter in the v parametric
      direction. The domain of the trimmed surface must be within the domain of the surface being trimmed.
    
      The trimmed surface is defined by:
      - the basis surface, and
      - the values (umin, umax) and (vmin, vmax) which limit it in the u and v parametric directions.
    
      The trimmed surface is built from a copy of the basis surface. Therefore, when the basis surface
      is modified the trimmed surface is not changed. Consequently, the trimmed surface does not
      necessarily have the same orientation as the basis surface.
    attributes:
      - BasisSurface: Final[Any]
        doc:
          Represents the basis surface from which the trimmed surface is derived.
    methods:
      - def setTrim(self, params: Tuple[float, float, float, float], /) -> None
        doc:
          setTrim(self, params: (u1, u2, v1, v2)) -> None
        
          Modifies this patch by changing the trim values applied to the original surface
```

```text theme={null}
MODULE Mod/Part/App/ShapeFix/ShapeFix_Edge.pyi
classes:
  class ShapeFix_Edge(PyObjectBase)
    doc:
      Fixing invalid edge
    methods:
      - def fixRemovePCurve(self) -> bool
        doc:
          Removes the pcurve(s) of the edge if it does not match the
          vertices
          Check is done
          Use    : It is to be called when pcurve of an edge can be wrong
          (e.g., after import from IGES)
          Returns: True, if does not match, removed (status DONE)
          False, (status OK) if matches or (status FAIL) if no pcurve,
          nothing done.
      - def fixRemoveCurve3d(self) -> bool
        doc:
          Removes 3d curve of the edge if it does not match the vertices
          Returns: True,  if does not match, removed (status DONE)
          False, (status OK) if matches or (status FAIL) if no 3d curve,
          nothing done.
      - def fixAddPCurve(self) -> bool
        doc:
          Adds pcurve(s) of the edge if missing (by projecting 3d curve)
          Parameter isSeam indicates if the edge is a seam.
          The parameter 'prec' defines the precision for calculations.
          If it is 0 (default), the tolerance of the edge is taken.
          Remark : This method is rather for internal use since it accepts parameter
          'surfana' for optimization of computations
          Use    : It is to be called after FixRemovePCurve (if removed) or in any
          case when edge can have no pcurve
          Returns: True if pcurve was added, else False
          Status :
          OK   : Pcurve exists
          FAIL1: No 3d curve
          FAIL2: fail during projecting
          DONE1: Pcurve was added
          DONE2: specific case of pcurve going through degenerated point on
          sphere encountered during projection (see class
          ShapeConstruct_ProjectCurveOnSurface for more info).
      - def fixAddCurve3d(self) -> bool
        doc:
          Tries to build 3d curve of the edge if missing
          Use    : It is to be called after FixRemoveCurve3d (if removed) or in any
          case when edge can have no 3d curve
          Returns: True if 3d curve was added, else False
          Status :
          OK   : 3d curve exists
          FAIL1: BRepLib::BuildCurve3d() has failed
          DONE1: 3d curve was added.
      - def fixVertexTolerance(self) -> bool
        doc:
          Increases the tolerances of the edge vertices to comprise
          the ends of 3d curve and pcurve on the given face
          (first method) or all pcurves stored in an edge (second one)
          Returns: True, if tolerances have been increased, otherwise False
          Status:
          OK   : the original tolerances have not been changed
          DONE1: the tolerance of first vertex has been increased
          DONE2: the tolerance of last  vertex has been increased.
      - def fixReversed2d(self) -> bool
        doc:
          Fixes edge if pcurve is directed opposite to 3d curve
          Check is done by call to the function
          ShapeAnalysis_Edge::CheckCurve3dWithPCurve()
          Warning: For seam edge this method will check and fix the pcurve in only
          one direction. Hence, it should be called twice for seam edge:
          once with edge orientation FORWARD and once with REVERSED.
          Returns: False if nothing done, True if reversed (status DONE)
          Status:  OK    - pcurve OK, nothing done
          FAIL1 - no pcurve
          FAIL2 - no 3d curve
          DONE1 - pcurve was reversed.
      - def fixSameParameter(self) -> bool
        doc:
          Tries to make edge SameParameter and sets corresponding
          tolerance and SameParameter flag.
          First, it makes edge same range if SameRange flag is not set.
          If flag SameParameter is set, this method calls the
          function ShapeAnalysis_Edge::CheckSameParameter() that
          calculates the maximal deviation of pcurves of the edge from
          its 3d curve. If deviation > tolerance, the tolerance of edge
          is increased to a value of deviation. If deviation < tolerance
          nothing happens.
        
          If flag SameParameter is not set, this method chooses the best
          variant (one that has minimal tolerance), either
          a. only after computing deviation (as above) or
          b. after calling standard procedure BRepLib::SameParameter
          and computing deviation (as above). If 'tolerance' > 0, it is
          used as parameter for BRepLib::SameParameter, otherwise,
          tolerance of the edge is used.
        
          Use    : Is to be called after all pcurves and 3d curve of the edge are
          correctly computed
          Remark : SameParameter flag is always set to True after this method
          Returns: True, if something done, else False
          Status : OK    - edge was initially SameParameter, nothing is done
          FAIL1 - computation of deviation of pcurves from 3d curve has failed
          FAIL2 - BRepLib::SameParameter() has failed
          DONE1 - tolerance of the edge was increased
          DONE2 - flag SameParameter was set to True (only if
          BRepLib::SameParameter() did not set it)
          DONE3 - edge was modified by BRepLib::SameParameter() to SameParameter
          DONE4 - not used anymore
          DONE5 - if the edge resulting from BRepLib has been chosen, i.e. variant b. above
          (only for edges with not set SameParameter).
```

```text theme={null}
MODULE Mod/Part/App/ShapeFix/ShapeFix_EdgeConnect.pyi
classes:
  class ShapeFix_EdgeConnect(PyObjectBase)
    doc:
      Root class for fixing operations
    methods:
      @overload
      - def add(self, edge1: TopoShapeEdge, edge2: TopoShapeEdge, /) -> None
      @overload
      - def add(self, shape: TopoShape, /) -> None
      - def add(self, *args, **kwargs) -> None
        doc:
          add(edge, edge)
          Adds information on connectivity between start vertex
          of second edge and end vertex of first edge taking
          edges orientation into account
        
          add(shape)
          Adds connectivity information for the whole shape.
      - def build(self) -> None
        doc:
          Builds shared vertices, updates their positions and tolerances
      - def clear(self) -> None
        doc:
          Clears internal data structure
```

```text theme={null}
MODULE Mod/Part/App/ShapeFix/ShapeFix_Face.pyi
classes:
  class ShapeFix_Face(ShapeFix_Root)
    doc:
      Class for fixing operations on faces
    attributes:
      - FixWireMode: bool
        doc:
          Mode for applying fixes of ShapeFix_Wire
      - FixOrientationMode: bool
        doc:
          Mode for applying fixes of orientation
          If True, wires oriented to border limited square
      - FixAddNaturalBoundMode: bool
        doc:
          If true, natural boundary is added on faces that miss them.
          Default is False for faces with single wire (they are
          handled by FixOrientation in that case) and True for others.
      - FixMissingSeamMode: bool
        doc:
          If True, tries to insert seam if missing
      - FixSmallAreaWireMode: bool
        doc:
          If True, drops small wires
      - RemoveSmallAreaFaceMode: bool
        doc:
          If True, drops small wires
      - FixIntersectingWiresMode: bool
        doc:
          Mode for applying fixes of intersecting wires
      - FixLoopWiresMode: bool
        doc:
          Mode for applying fixes of loop wires
      - FixSplitFaceMode: bool
        doc:
          Mode for applying fixes of split face
      - AutoCorrectPrecisionMode: bool
        doc:
          Mode for applying auto-corrected precision
      - FixPeriodicDegeneratedMode: bool
        doc:
          Mode for applying periodic degeneration
    methods:
      - def init(self) -> None
        doc:
          Initializes by face
      - def fixWireTool(self)
        doc:
          Returns tool for fixing wires
      - def clearModes(self) -> None
        doc:
          Sets all modes to default
      - def add(self) -> None
        doc:
          Add a wire to current face using BRep_Builder.
          Wire is added without taking into account orientation of face
          (as if face were FORWARD)
      - def fixOrientation(self) -> bool
        doc:
          Fixes orientation of wires on the face
          It tries to make all wires lie outside all others (according
          to orientation) by reversing orientation of some of them.
          If face lying on sphere or torus has single wire and
          AddNaturalBoundMode is True, that wire is not reversed in
          any case (supposing that natural bound will be added).
          Returns True if wires were reversed
      - def fixAddNaturalBound(self) -> bool
        doc:
          Adds natural boundary on face if it is missing.
          Two cases are supported:
          - face has no wires
          - face lies on geometrically double-closed surface
          (sphere or torus) and none of wires is left-oriented
          Returns True if natural boundary was added
      - def fixMissingSeam(self) -> bool
        doc:
          Detects and fixes the special case when face on a closed
          surface is given by two wires closed in 3d but with gap in 2d.
          In that case it creates a new wire from the two, and adds a
          missing seam edge
          Returns True if missing seam was added
      - def fixSmallAreaWire(self) -> bool
        doc:
          Detects wires with small area (that is less than
          100*Precision.PConfusion(). Removes these wires if they are internal.
          Returns True if at least one small wire removed, False nothing is done.
      - def fixLoopWire(self) -> None
        doc:
          Detects if wire has a loop and fixes this situation by splitting on the few parts.
      - def fixIntersectingWires(self) -> None
        doc:
          Detects and fixes the special case when face has more than one wire
          and this wires have intersection point
      - def fixWiresTwoCoincidentEdges(self) -> None
        doc:
          If wire contains two coincidence edges it must be removed
      - def fixPeriodicDegenerated(self) -> None
        doc:
          Fixes topology for a specific case when face is composed
          by a single wire belting a periodic surface. In that case
          a degenerated edge is reconstructed in the degenerated pole
          of the surface. Initial wire gets consistent orientation.
          Must be used in couple and before FixMissingSeam routine
      - def perform(self) -> None
        doc:
          Iterates on subshapes and performs fixes
      - def face(self) -> TopoShapeFace
        doc:
          Returns a face which corresponds to the current state
      - def result(self) -> Union[TopoShapeFace, TopoShapeShell]
        doc:
          Returns resulting shape (Face or Shell if split)
          To be used instead of face() if FixMissingSeam involved
```

```text theme={null}
MODULE Mod/Part/App/ShapeFix/ShapeFix_FaceConnect.pyi
classes:
  class ShapeFix_FaceConnect(PyObjectBase)
    doc:
      Rebuilds connectivity between faces in shell
    methods:
      - def add(self, face, /) -> None
        doc:
          add(face, face)
      - def build(self, shell, sewtolerance, fixtolerance, /) -> None
        doc:
          build(shell, sewtolerance, fixtolerance)
      - def clear(self) -> None
        doc:
          Clears internal data structure
```

```text theme={null}
MODULE Mod/Part/App/ShapeFix/ShapeFix_FixSmallFace.pyi
classes:
  class ShapeFix_FixSmallFace(ShapeFix_Root)
    doc:
      Class for fixing operations on faces
    methods:
      - def init(self) -> None
        doc:
          Initializes by shape
      - def perform(self) -> None
        doc:
          Fixing case of spot face
      - def fixSpotFace(self) -> None
        doc:
          Fixing case of spot face, if tol = -1 used local tolerance
      - def replaceVerticesInCaseOfSpot(self) -> None
        doc:
          Compute average vertex and replacing vertices by new one
      - def removeFacesInCaseOfSpot(self) -> None
        doc:
          Remove spot face from compound
      - def fixStripFace(self) -> None
        doc:
          Fixing case of strip face, if tol = -1 used local tolerance
      - def removeFacesInCaseOfStrip(self) -> None
        doc:
          Remove strip face from compound
      - def fixSplitFace(self) -> TopoShape
        doc:
          Fixes cases related to split faces within the given shape.
          It may return a modified shape after fixing the issues.
      - def fixFace(self) -> None
        doc:
          Fixes issues related to the specified face and returns the modified face.
      - def fixShape(self) -> None
        doc:
          Fixes issues in the overall geometric shape.
          This function likely encapsulates higher-level fixes that involve multiple faces or elements.
      - def shape(self) -> TopoShape
        doc:
          Returns the current state of the geometric shape after potential modifications.
```

```text theme={null}
MODULE Mod/Part/App/ShapeFix/ShapeFix_FixSmallSolid.pyi
classes:
  class ShapeFix_FixSmallSolid(ShapeFix_Root)
    doc:
      Fixing solids with small size
    methods:
      - def setFixMode(self, theMode: int, /) -> None
        doc:
          Set working mode for operator:
          - theMode = 0 use both WidthFactorThreshold and VolumeThreshold parameters
          - theMode = 1 use only WidthFactorThreshold parameter
          - theMode = 2 use only VolumeThreshold parameter
      - def setVolumeThreshold(self) -> None
        doc:
          Set or clear volume threshold for small solids
      - def setWidthFactorThreshold(self) -> None
        doc:
          Set or clear width factor threshold for small solids
      - def remove(self) -> None
        doc:
          Remove small solids from the given shape
      - def merge(self) -> None
        doc:
          Merge small solids in the given shape to adjacent non-small ones
```

```text theme={null}
MODULE Mod/Part/App/ShapeFix/ShapeFix_FreeBounds.pyi
classes:
  class ShapeFix_FreeBounds(PyObjectBase)
    doc:
      This class is intended to output free bounds of the shape
    methods:
      - def closedWires(self) -> TopoShapeCompound
        doc:
          Returns compound of closed wires out of free edges
      - def openWires(self) -> TopoShapeCompound
        doc:
          Returns compound of open wires out of free edges
      - def shape(self) -> TopoShape
        doc:
          Returns modified source shape
```

```text theme={null}
MODULE Mod/Part/App/ShapeFix/ShapeFix_Root.pyi
classes:
  class ShapeFix_Root(PyObjectBase)
    doc:
      Root class for fixing operations
    attributes:
      - Precision: float
        doc:
          Basic precision value
      - MinTolerance: float
        doc:
          Minimal allowed tolerance
      - MaxTolerance: float
        doc:
          Maximal allowed tolerance
    methods:
      @constmethod
      - def limitTolerance(self) -> float
        doc:
          Returns tolerance limited by [MinTolerance,MaxTolerance]
```

```text theme={null}
MODULE Mod/Part/App/ShapeFix/ShapeFix_Shape.pyi
classes:
  class ShapeFix_Shape(ShapeFix_Root)
    doc:
      Class for fixing operations on shapes
    attributes:
      - FixSolidMode: bool
        doc:
          Mode for applying fixes of ShapeFix_Solid
      - FixFreeShellMode: bool
        doc:
          Mode for applying fixes of ShapeFix_Shell
      - FixFreeFaceMode: bool
        doc:
          Mode for applying fixes of ShapeFix_Face
      - FixFreeWireMode: bool
        doc:
          Mode for applying fixes of ShapeFix_Wire
      - FixSameParameterMode: bool
        doc:
          Mode for applying ShapeFix::SameParameter after all fixes
      - FixVertexPositionMode: bool
        doc:
          Mode for applying ShapeFix::FixVertexPosition before all fixes
      - FixVertexTolMode: bool
        doc:
          Mode for fixing tolerances of vertices on whole shape
    methods:
      - def init(self) -> None
        doc:
          Initializes by shape
      - def perform(self) -> None
        doc:
          Iterates on sub- shape and performs fixes
      - def shape(self) -> TopoShape
        doc:
          Returns resulting shape
      - def fixSolidTool(self) -> object
        doc:
          Returns tool for fixing solids
      - def fixShellTool(self) -> object
        doc:
          Returns tool for fixing shells
      - def fixFaceTool(self) -> object
        doc:
          Returns tool for fixing faces
      - def fixWireTool(self) -> object
        doc:
          Returns tool for fixing wires
      - def fixEdgeTool(self) -> object
        doc:
          Returns tool for fixing edges
```

```text theme={null}
MODULE Mod/Part/App/ShapeFix/ShapeFix_ShapeTolerance.pyi
classes:
  class ShapeFix_ShapeTolerance(PyObjectBase)
    doc:
      Modifies tolerances of sub-shapes (vertices, edges, faces)
    methods:
      @overload
      - def limitTolerance(self, shape: TopoShape, tmin: float, /) -> None
      @overload
      - def limitTolerance(self, shape: TopoShape, tmin: float, tmax: float, ShapeEnum: str=None, /) -> None
      - def limitTolerance(self, shape: TopoShape, tmin: float, tmax: float=0, ShapeEnum: str=None, /) -> None
        doc:
          limitTolerance(shape, tmin, [tmax=0, ShapeEnum=SHAPE])
      @overload
      - def setTolerance(self, shape: TopoShape, precision: float, /) -> None
      @overload
      - def setTolerance(self, shape: TopoShape, precision: float, ShapeEnum: str=None, /) -> None
      - def setTolerance(self, shape: TopoShape, precision: float, ShapeEnum: str=None, /) -> None
        doc:
          setTolerance(shape, precision, [ShapeEnum=SHAPE])
```

```text theme={null}
MODULE Mod/Part/App/ShapeFix/ShapeFix_Shell.pyi
classes:
  class ShapeFix_Shell(ShapeFix_Root)
    doc:
      Root class for fixing operations
    attributes:
      - FixOrientationMode: bool
        doc:
          Mode for applying fixes of orientation of faces
      - FixFaceMode: bool
        doc:
          Mode for applying fixes using ShapeFix_Face
    methods:
      - def init(self) -> None
        doc:
          Initializes by shell
      - def fixFaceTool(self) -> None
        doc:
          Returns tool for fixing faces
      - def perform(self) -> None
        doc:
          Iterates on subshapes and performs fixes
      - def shell(self) -> None
        doc:
          Returns fixed shell (or subset of oriented faces)
      - def numberOfShells(self) -> None
        doc:
          Returns the number of obtained shells
      - def shape(self) -> None
        doc:
          In case of multiconnexity returns compound of fixed shells and one shell otherwise
      - def errorFaces(self) -> None
        doc:
          Returns not oriented subset of faces
      - def fixFaceOrientation(self) -> None
        doc:
          Fixes orientation of faces in shell.
          Changes orientation of face in the shell, if it is oriented opposite
          to neighbouring faces. If it is not possible to orient all faces in the
          shell (like in case of mebious band), this method orients only subset
          of faces. Other faces are stored in Error compound.
          Modes :
          isAccountMultiConex - mode for account cases of multiconnexity.
          If this mode is equal to Standard_True, separate shells will be created
          in the cases of multiconnexity. If this mode is equal to Standard_False,
          one shell will be created without account of multiconnexity. By default - Standard_True;
          NonManifold - mode for creation of non-manifold shells.
          If this mode is equal to Standard_True one non-manifold will be created from shell
          contains multishared edges. Else if this mode is equal to Standard_False only
          manifold shells will be created. By default - Standard_False.
      - def setNonManifoldFlag(self) -> None
        doc:
          Sets NonManifold flag
```

```text theme={null}
MODULE Mod/Part/App/ShapeFix/ShapeFix_Solid.pyi
classes:
  class ShapeFix_Solid(ShapeFix_Root)
    doc:
      Root class for fixing operations
    attributes:
      - FixShellMode: bool
        doc:
          Mode for applying fixes of ShapeFix_Shell
      - FixShellOrientationMode: bool
        doc:
          Mode for applying analysis and fixes of
          orientation of shells in the solid
      - CreateOpenSolidMode: bool
        doc:
          Mode for creation of solids
    methods:
      - def init(self) -> None
        doc:
          Initializes by solid
      - def perform(self) -> None
        doc:
          Iterates on subshapes and performs fixes
      - def solidFromShell(self) -> None
        doc:
          Calls MakeSolid and orients the solid to be not infinite
      - def solid(self) -> None
        doc:
          Returns resulting solid
      - def shape(self) -> None
        doc:
          In case of multiconnexity returns compound of fixed solids
          else returns one solid
      - def fixShellTool(self) -> None
        doc:
          Returns tool for fixing shells
```

```text theme={null}
MODULE Mod/Part/App/ShapeFix/ShapeFix_SplitCommonVertex.pyi
classes:
  class ShapeFix_SplitCommonVertex(ShapeFix_Root)
    doc:
      Class for fixing operations on shapes
    methods:
      - def init(self) -> None
        doc:
          Initializes by shape
      - def perform(self) -> None
        doc:
          Iterates on sub- shape and performs fixes
      - def shape(self) -> object
        doc:
          Returns resulting shape
```

```text theme={null}
MODULE Mod/Part/App/ShapeFix/ShapeFix_SplitTool.pyi
classes:
  class ShapeFix_SplitTool(PyObjectBase)
    doc:
      Tool for splitting and cutting edges
    methods:
      - def splitEdge(self) -> None
        doc:
          Split edge on two new edges using new vertex
      - def cutEdge(self) -> None
        doc:
          Cut edge by parameters pend and cut
```

```text theme={null}
MODULE Mod/Part/App/ShapeFix/ShapeFix_Wire.pyi
classes:
  class ShapeFix_Wire(ShapeFix_Root)
    doc:
      Class for fixing operations on wires
    attributes:
      - ModifyTopologyMode: bool
        doc:
          Mode for modifying topology of the wire
      - ModifyGeometryMode: bool
        doc:
          Mode for modifying geometry of vertexes and edges
      - ModifyRemoveLoopMode: bool
        doc:
          Mode for modifying edges
      - ClosedWireMode: bool
        doc:
          Mode which defines whether the wire
          is to be closed (by calling methods like fixDegenerated()
          and fixConnected() for last and first edges)
      - PreferencePCurveMode: bool
        doc:
          Mode which defines whether the 2d 'True'
          representation of the wire is preferable over 3d one in the
          case of ambiguity in FixEdgeCurves
      - FixGapsByRangesMode: bool
        doc:
          Mode which defines whether tool
          tries to fix gaps first by changing curves ranges (i.e.
          using intersection, extrema, projections) or not
      - FixReorderMode: bool
        doc:
          Mode which performs an analysis and reorders edges in the wire using class WireOrder.
          Flag 'theModeBoth' determines the use of miscible mode if necessary.
      - FixSmallMode: bool
        doc:
          Mode which applies FixSmall(num) to all edges in the wire
      - FixConnectedMode: bool
        doc:
          Mode which applies FixConnected(num) to all edges in the wire
          Connection between first and last edges is treated only if
          flag ClosedMode is True
          If 'prec' is -1 then MaxTolerance() is taken.
      - FixEdgeCurvesMode: bool
        doc:
          Mode which groups the fixes dealing with 3d and pcurves of the edges.
          The order of the fixes and the default behaviour are:
          ShapeFix_Edge::FixReversed2d
          ShapeFix_Edge::FixRemovePCurve (only if forced)
          ShapeFix_Edge::FixAddPCurve
          ShapeFix_Edge::FixRemoveCurve3d (only if forced)
          ShapeFix_Edge::FixAddCurve3d
          FixSeam,
          FixShifted,
          ShapeFix_Edge::FixSameParameter
      - FixDegeneratedMode: bool
        doc:
          Mode which applies FixDegenerated(num) to all edges in the wire
          Connection between first and last edges is treated only if
          flag ClosedMode is True
      - FixSelfIntersectionMode: bool
        doc:
          Mode which applies FixSelfIntersectingEdge(num) and
          FixIntersectingEdges(num) to all edges in the wire and
          FixIntersectingEdges(num1, num2) for all pairs num1 and num2
          and removes wrong edges if any
      - FixLackingMode: bool
        doc:
          Mode which applies FixLacking(num) to all edges in the wire
          Connection between first and last edges is treated only if
          flag ClosedMode is True
          If 'force' is False (default), test for connectness is done with
          precision of vertex between edges, else it is done with minimal
          value of vertex tolerance and Analyzer.Precision().
          Hence, 'force' will lead to inserting lacking edges in replacement
          of vertices which have big tolerances.
      - FixGaps3dMode: bool
        doc:
          Mode which fixes gaps between ends of 3d curves on adjacent edges
          myPrecision is used to detect the gaps.
      - FixGaps2dMode: bool
        doc:
          Mode whixh fixes gaps between ends of pcurves on adjacent edges
          myPrecision is used to detect the gaps.
      - FixReversed2dMode: bool
        doc:
          Mode which fixes the reversed in 2d
      - FixRemovePCurveMode: bool
        doc:
          Mode which removePCurve in 2d
      - FixAddPCurveMode: bool
        doc:
          Mode which fixes addCurve in 2d
      - FixRemoveCurve3dMode: bool
        doc:
          Mode which fixes removeCurve in 3d
      - FixAddCurve3dMode: bool
        doc:
          Mode which fixes addCurve in 3d
      - FixSeamMode: bool
        doc:
          Mode which fixes Seam
      - FixShiftedMode: bool
        doc:
          Mode which fixes Shifted
      - FixSameParameterMode: bool
        doc:
          Mode which fixes sameParameter in 2d
      - FixVertexToleranceMode: bool
        doc:
          Mode which fixes VertexTolerence in 2d
      - FixNotchedEdgesMode: bool
        doc:
          Mode which fixes NotchedEdges in 2d
      - FixSelfIntersectingEdgeMode: bool
        doc:
          Mode which fixes SelfIntersectionEdge in 2d
      - FixIntersectingEdgesMode: bool
        doc:
          Mode which fixes IntersectingEdges in 2d
      - FixNonAdjacentIntersectingEdgesMode: bool
        doc:
          Mode which fixes NonAdjacentIntersectingEdges in 2d
      - FixTailMode: bool
        doc:
          Mode which fixes Tails in 2d
    methods:
      - def init(self) -> None
        doc:
          Initializes by wire, face, precision
      - def fixEdgeTool(self) -> None
        doc:
          Returns tool for fixing wires
      - def clearModes(self) -> None
        doc:
          Sets all modes to default
      - def clearStatuses(self) -> None
        doc:
          Clears all statuses
      - def load(self) -> None
        doc:
          Load data for the wire, and drops all fixing statuses
      - def setFace(self) -> None
        doc:
          Set working face for the wire
      - def setSurface(self, surface: object, Placement: object=..., /) -> None
        doc:
          setSurface(surface, [Placement])
          Set surface for the wire
      - def setMaxTailAngle(self) -> None
        doc:
          Sets the maximal allowed angle of the tails in radians
      - def setMaxTailWidth(self) -> None
        doc:
          Sets the maximal allowed width of the tails
      - def isLoaded(self) -> None
        doc:
          Tells if the wire is loaded
      - def isReady(self) -> None
        doc:
          Tells if the wire and face are loaded
      - def numberOfEdges(self) -> None
        doc:
          Returns number of edges in the working wire
      - def wire(self) -> None
        doc:
          Makes the resulting Wire (by basic Brep_Builder)
      - def wireAPIMake(self) -> None
        doc:
          Makes the resulting Wire (by BRepAPI_MakeWire)
      - def face(self) -> None
        doc:
          Returns working face
      - def perform(self) -> None
        doc:
          Iterates on subshapes and performs fixes
      - def fixReorder(self) -> None
        doc:
          Performs an analysis and reorders edges in the wire
      - def fixSmall(self) -> None
        doc:
          Applies fixSmall(...) to all edges in the wire
      - def fixConnected(self, num: int, /) -> None
        doc:
          Applies fixConnected(num) to all edges in the wire
          Connection between first and last edges is treated only if
          flag ClosedMode is True
          If prec is -1 then maxTolerance() is taken.
      - def fixEdgeCurves(self) -> None
        doc:
          Groups the fixes dealing with 3d and pcurves of the edges
      - def fixDegenerated(self) -> None
        doc:
          Applies fixDegenerated(...) to all edges in the wire
      - def fixSelfIntersection(self) -> None
        doc:
          Applies FixSelfIntersectingEdge(num) and
          FixIntersectingEdges(num) to all edges in the wire and
          FixIntersectingEdges(num1, num2) for all pairs num1 and num2
          and removes wrong edges if any
      - def fixLacking(self) -> None
        doc:
          Applies FixLacking(num) to all edges in the wire
          Connection between first and last edges is treated only if
          flag ClosedMode is True
          If 'force' is False (default), test for connectness is done with
          precision of vertex between edges, else it is done with minimal
          value of vertex tolerance and Analyzer.Precision().
          Hence, 'force' will lead to inserting lacking edges in replacement
          of vertices which have big tolerances.
      - def fixClosed(self) -> None
        doc:
          Fixes a wire to be well closed
      - def fixGaps3d(self, num: int, /) -> None
        doc:
          Fixes gaps between ends of 3d curves on adjacent edges
      - def fixGaps2d(self, num: int, /) -> None
        doc:
          Fixes gaps between ends of pcurves on adjacent edges
      - def fixSeam(self) -> None
        doc:
          Fixes seam edges
      - def fixShifted(self) -> None
        doc:
          Fixes edges which have pcurves shifted by whole parameter
          range on the closed surface
      - def fixNotchedEdges(self) -> None
        doc:
          Fixes Notch edges.Check if there are notch edges in 2d and fix it
      - def fixGap3d(self, num: int, /) -> None
        doc:
          Fixes gap between ends of 3d curves on num-1 and num-th edges
      - def fixGap2d(self, num: int, /) -> None
        doc:
          Fixes gap between ends of pcurves on num-1 and num-th edges
      - def fixTails(self) -> None
        doc:
          Fixes issues related to 'tails' in the geometry.
          Tails are typically small, undesired protrusions or deviations in the curves or edges that need correction.
          This method examines the geometry and applies corrective actions to eliminate or reduce the presence of tails.
```

```text theme={null}
MODULE Mod/Part/App/ShapeFix/ShapeFix_WireVertex.pyi
classes:
  class ShapeFix_WireVertex(PyObjectBase)
    doc:
      Fixing disconnected edges in the wire
    methods:
      - def init(self) -> None
        doc:
          Loads the wire, ininializes internal analyzer with the given precision
      - def wire(self) -> object
        doc:
          Returns resulting wire
      - def fixSame(self) -> int
        doc:
          Returns the count of fixed vertices, 0 if none
      - def fix(self) -> int
        doc:
          Fixes all statuses except Disjoined, i.e. the cases in which a
          common value has been set, with or without changing parameters
          Returns the count of fixed vertices, 0 if none
```

```text theme={null}
MODULE Mod/Part/App/ShapeFix/ShapeFix_Wireframe.pyi
classes:
  class ShapeFix_Wireframe(ShapeFix_Root)
    doc:
      Provides methods for fixing wireframe of shape
    attributes:
      - ModeDropSmallEdges: bool
        doc:
          Returns mode managing removing small edges
      - LimitAngle: float
        doc:
          Limit angle for merging edges
    methods:
      - def clearStatuses(self) -> None
        doc:
          Clears all statuses
      - def load(self) -> None
        doc:
          Loads a shape, resets statuses
      - def fixWireGaps(self) -> None
        doc:
          Fixes gaps between ends of curves of adjacent edges
      - def fixSmallEdges(self) -> None
        doc:
          Fixes small edges in shape by merging adjacent edges
      - def shape(self) -> None
```

```text theme={null}
MODULE Mod/Part/App/ShapeUpgrade/UnifySameDomain.pyi
classes:
  class UnifySameDomain(PyObjectBase)
    doc:
      This tool tries to unify faces and edges of the shape which lie on the same geometry.
    methods:
      - def initialize(self, **kwargs) -> None
        doc:
          Initializes with a shape and necessary flags
      - def allowInternalEdges(self) -> None
        doc:
          Sets the flag defining whether it is allowed to create
          internal edges inside merged faces in the case of non-manifold
          topology. Without this flag merging through multi connected edge
          is forbidden. Default value is false.
      - def keepShape(self) -> None
        doc:
          Sets the shape for avoid merging of the faces/edges.
      - def keepShapes(self) -> None
        doc:
          Sets the map of shapes for avoid merging of the faces/edges.
      - def setSafeInputMode(self) -> None
        doc:
          Sets the flag defining the behavior of the algorithm regarding
          modification of input shape.
          If this flag is equal to True then the input (original) shape can't be
          modified during modification process. Default value is true.
      - def setLinearTolerance(self) -> None
        doc:
          Sets the linear tolerance
      - def setAngularTolerance(self) -> None
        doc:
          Sets the angular tolerance
      - def build(self) -> None
        doc:
          Performs unification and builds the resulting shape
      @constmethod
      - def shape(self) -> None
        doc:
          Gives the resulting shape
```

```text theme={null}
MODULE Mod/Part/App/Sphere.pyi
classes:
  class Sphere(GeometrySurface)
    doc:
      Describes a sphere in 3D space
    attributes:
      - Radius: float
        doc:
          The radius of the sphere.
      - Area: Final[float]
        doc:
          Compute the area of the sphere.
      - Volume: Final[float]
        doc:
          Compute the volume of the sphere.
      - Center: Vector
        doc:
          Center of the sphere.
      - Axis: AxisPy
        doc:
          The axis direction of the circle
```

```text theme={null}
MODULE Mod/Part/App/SurfaceOfExtrusion.pyi
classes:
  class SurfaceOfExtrusion(GeometrySurface)
    doc:
      Describes a surface of linear extrusion
    attributes:
      - Direction: Vector
        doc:
          Sets or gets the direction of revolution.
      - BasisCurve: GeometryCurve
        doc:
          Sets or gets the basic curve.
```

```text theme={null}
MODULE Mod/Part/App/SurfaceOfRevolution.pyi
classes:
  class SurfaceOfRevolution(GeometrySurface)
    doc:
      Describes a surface of revolution
    attributes:
      - Location: Placement
        doc:
          Sets or gets the location of revolution.
      - Direction: Vector
        doc:
          Sets or gets the direction of revolution.
      - BasisCurve: GeometryCurve
        doc:
          Sets or gets the basic curve.
    methods:
      @overload
      - def __init__(self, location: Placement, direction: Vector, basis_curve: GeometryCurve) -> None
```

```text theme={null}
MODULE Mod/Part/App/TopoShape.pyi
classes:
  class TopoShape(ComplexGeoData)
    doc:
      TopoShape is the OpenCasCade topological shape wrapper.
      Sub-elements such as vertices, edges or faces are accessible as:
      * Vertex#, where # is in range(1, number of vertices)
      * Edge#, where # is in range(1, number of edges)
      * Face#, where # is in range(1, number of faces)
    attributes:
      - ShapeType: Final[str]
        doc:
          Returns the type of the shape.
      - Orientation: str
        doc:
          Returns the orientation of the shape.
      - Faces: Final[List]
        doc:
          List of faces in this shape.
      - Vertexes: Final[List]
        doc:
          List of vertexes in this shape.
      - Shells: Final[List]
        doc:
          List of subsequent shapes in this shape.
      - Solids: Final[List]
        doc:
          List of subsequent shapes in this shape.
      - CompSolids: Final[List]
        doc:
          List of subsequent shapes in this shape.
      - Edges: Final[List]
        doc:
          List of Edges in this shape.
      - Wires: Final[List]
        doc:
          List of wires in this shape.
      - Compounds: Final[List]
        doc:
          List of compounds in this shape.
      - SubShapes: Final[List]
        doc:
          List of sub-shapes in this shape.
      - Length: Final[float]
        doc:
          Total length of the edges of the shape.
      - Area: Final[float]
        doc:
          Total area of the faces of the shape.
      - Volume: Final[float]
        doc:
          Total volume of the solids of the shape.
    methods:
      @constmethod
      - def dumps(self) -> str
        doc:
          Serialize the content of this shape to a string in BREP format.
      - def loads(self, brep_str: str, /) -> None
        doc:
          Deserialize the content of this shape from a string in BREP format.
      - def read(self, filename: str, /) -> None
        doc:
          Read in an IGES, STEP or BREP file.
          read(filename)
      @constmethod
      - def writeInventor(self, *, Mode: int, Deviation: float, Angle: float, FaceColors: object) -> str
        doc:
          Write the mesh in OpenInventor format to a string.
          writeInventor() -> string
      @constmethod
      - def exportIges(self, filename: str, /) -> None
        doc:
          Export the content of this shape to an IGES file.
          exportIges(filename)
      @constmethod
      - def exportStep(self, filename: str, /) -> None
        doc:
          Export the content of this shape to an STEP file.
          exportStep(filename)
      @constmethod
      - def exportBrep(self, filename: str, /) -> None
        doc:
          Export the content of this shape to an BREP file.
          exportBrep(filename)
          --
          BREP is an OpenCasCade native format.
      @constmethod
      - def exportBinary(self, filename: str, /) -> None
        doc:
          Export the content of this shape in binary format to a file.
          exportBinary(filename)
      @constmethod
      - def exportBrepToString(self) -> str
        doc:
          Export the content of this shape to a string in BREP format.
          exportBrepToString() -> string
          --
          BREP is an OpenCasCade native format.
      @constmethod
      - def dumpToString(self) -> str
        doc:
          Dump information about the shape to a string.
          dumpToString() -> string
      @constmethod
      - def exportStl(self, filename: str, /) -> None
        doc:
          Export the content of this shape to an STL mesh file.
          exportStl(filename)
      - def importBrep(self, filename: str, /) -> None
        doc:
          Load the shape from a file in BREP format.
          importBrep(filename)
      - def importBinary(self, filename: str, /) -> None
        doc:
          Import the content to this shape of a string in BREP format.
          importBinary(filename)
      - def importBrepFromString(self, s: str, displayProgressBar: bool=True, /) -> None
        doc:
          Load the shape from a string that keeps the content in BREP format.
          importBrepFromString(string, [displayProgressBar=True])
          --
          importBrepFromString(str, False) to not display a progress bar.
      @constmethod
      - def extrude(self, vector: Vector, /) -> TopoShape
        doc:
          Extrude the shape along a vector.
          extrude(vector) -> Shape
          --
          Shp2 = Shp1.extrude(App.Vector(0,0,10)) - extrude the shape 10 mm in the +Z direction.
      @constmethod
      - def revolve(self, base: Vector, direction: Vector, angle: float, /) -> TopoShape
        doc:
          Revolve the shape around an Axis to a given degree.
          revolve(base, direction, angle)
          --
          Part.revolve(App.Vector(0,0,0),App.Vector(0,0,1),360) - revolves the shape around the Z Axis 360 degree.
        
          Hints: Sometimes you want to create a rotation body out of a closed edge or wire.
          Example:
          from FreeCAD-compatible runtime import Base
          import Part
          V=Base.Vector
        
          e=Part.Ellipse()
          s=e.toShape()
          r=s.revolve(V(0,0,0),V(0,1,0), 360)
          Part.show(r)
        
          However, you may possibly realize some rendering artifacts or that the mesh
          creation seems to hang. This is because this way the surface is created twice.
          Since the curve is a full ellipse it is sufficient to do a rotation of 180 degree
          only, i.e. r=s.revolve(V(0,0,0),V(0,1,0), 180)
        
          Now when rendering this object you may still see some artifacts at the poles. Now the
          problem seems to be that the meshing algorithm doesn't like to rotate around a point
          where there is no vertex.
        
          The idea to fix this issue is that you create only half of the ellipse so that its shape
          representation has vertexes at its start and end point.
        
          from FreeCAD-compatible runtime import Base
          import Part
          V=Base.Vector
        
          e=Part.Ellipse()
          s=e.toShape(e.LastParameter/4,3*e.LastParameter/4)
          r=s.revolve(V(0,0,0),V(0,1,0), 360)
          Part.show(r)
      @constmethod
      - def check(self, runBopCheck: bool=False, /) -> bool
        doc:
          Checks the shape and report errors in the shape structure.
          check([runBopCheck = False])
          --
          This is a more detailed check as done in isValid().
          if runBopCheck is True, a BOPCheck analysis is also performed.
      @constmethod
      - def fuse(self, tools: Tuple[TopoShape, ...], tolerance: float=0.0, *, noElementMap: bool=False) -> TopoShape
        doc:
          Union of this and a given (list of) topo shape.
          fuse(tool) -> Shape
          or
          fuse((tool1,tool2,...),[tolerance=0.0], noElementMap=False) -> Shape
          --
          Union of this and a given list of topo shapes.
        
          Supports (OCCT 6.9.0 and above):
          - Fuzzy Boolean operations (global tolerance for a Boolean operation)
          - Support of multiple arguments for a single Boolean operation
          - Parallelization of Boolean Operations algorithm
        
          Beginning from OCCT 6.8.1 a tolerance value can be specified.
          Set noElementMap=True for transient analysis geometry where stable
          element naming is not needed.
      @constmethod
      - def multiFuse(self, tools: Tuple[TopoShape, ...], tolerance: float=0.0, *, noElementMap: bool=False) -> TopoShape
        doc:
          Union of this and a given list of topo shapes.
          multiFuse((tool1,tool2,...),[tolerance=0.0], noElementMap=False) -> Shape
          --
          Supports (OCCT 6.9.0 and above):
          - Fuzzy Boolean operations (global tolerance for a Boolean operation)
          - Support of multiple arguments for a single Boolean operation
          - Parallelization of Boolean Operations algorithm
        
          Beginning from OCCT 6.8.1 a tolerance value can be specified.
          Set noElementMap=True for transient analysis geometry where stable
          element naming is not needed.
          Deprecated: use fuse() instead.
      @constmethod
      - def common(self, tools: Tuple[TopoShape, ...], tolerance: float=0.0, /) -> TopoShape
        doc:
          Intersection of this and a given (list of) topo shape.
          common(tool) -> Shape
          or
          common((tool1,tool2,...),[tolerance=0.0]) -> Shape
          --
          Supports:
          - Fuzzy Boolean operations (global tolerance for a Boolean operation)
          - Support of multiple arguments for a single Boolean operation (s1 AND (s2 OR s3))
          - Parallelization of Boolean Operations algorithm
        
          OCC 6.9.0 or later is required.
      @constmethod
      - def section(self, tool: Tuple[TopoShape, ...], tolerance: float=0.0, approximation: bool=False, /) -> TopoShape
        doc:
          Section of this with a given (list of) topo shape.
          section(tool,[approximation=False]) -> Shape
          or
          section((tool1,tool2,...),[tolerance=0.0, approximation=False]) -> Shape
          --
          If approximation is True, section edges are approximated to a C1-continuous BSpline curve.
        
          Supports:
          - Fuzzy Boolean operations (global tolerance for a Boolean operation)
          - Support of multiple arguments for a single Boolean operation (s1 AND (s2 OR s3))
          - Parallelization of Boolean Operations algorithm
        
          OCC 6.9.0 or later is required.
      @constmethod
      - def slices(self, direction: Vector, distancesList: List[float], /) -> List
        doc:
          Make slices of this shape.
          slices(direction, distancesList) --> Wires
      @constmethod
      - def slice(self, direction: Vector, distance: float, /) -> List
        doc:
          Make single slice of this shape.
          slice(direction, distance) --> Wires
      @constmethod
      - def cut(self, tool: Tuple[TopoShape, ...], tolerance: float=0.0, /) -> TopoShape
        doc:
          Difference of this and a given (list of) topo shape
          cut(tool) -> Shape
          or
          cut((tool1,tool2,...),[tolerance=0.0]) -> Shape
          --
          Supports:
          - Fuzzy Boolean operations (global tolerance for a Boolean operation)
          - Support of multiple arguments for a single Boolean operation
          - Parallelization of Boolean Operations algorithm
        
          OCC 6.9.0 or later is required.
      @constmethod
      - def generalFuse(self, shapes: Tuple[TopoShape, ...], fuzzy_value: float=0.0, /) -> Tuple[TopoShape, List[List[TopoShape]]]
        doc:
          Run general fuse algorithm (GFA) between this and given shapes.
          generalFuse(list_of_other_shapes, [fuzzy_value = 0.0]) -> (result, map)
          --
          list_of_other_shapes: shapes to run the algorithm against (the list is
          effectively prepended by 'self').
        
          fuzzy_value: extra tolerance to apply when searching for interferences, in
          addition to tolerances of the input shapes.
        
          Returns a tuple of 2: (result, map).
        
          result is a compound containing all the pieces generated by the algorithm
          (e.g., for two spheres, the pieces are three touching solids). Pieces that
          touch share elements.
        
          map is a list of lists of shapes, providing the info on which children of
          result came from which argument. The length of list is equal to length of
          list_of_other_shapes + 1. First element is a list of pieces that came from
          shape of this, and the rest are those that come from corresponding shapes in
          list_of_other_shapes.
          hint: use isSame method to test shape equality
        
          Parallelization of Boolean Operations algorithm
        
          OCC 6.9.0 or later is required.
      - def sewShape(self) -> None
        doc:
          Sew the shape if there is a gap.
          sewShape()
      @constmethod
      - def childShapes(self, cumOri: bool=True, cumLoc: bool=True, /) -> List
        doc:
          Return a list of sub-shapes that are direct children of this shape.
          childShapes([cumOri=True, cumLoc=True]) -> list
          --
          * If cumOri is true, the function composes all
          sub-shapes with the orientation of this shape.
          * If cumLoc is true, the function multiplies all
          sub-shapes by the location of this shape, i.e. it applies to
          each sub-shape the transformation that is associated with this shape.
      @constmethod
      - def ancestorsOfType(self, shape: TopoShape, shape_type: str, /) -> List
        doc:
          For a sub-shape of this shape get its ancestors of a type.
          ancestorsOfType(shape, shape type) -> list
      - def removeInternalWires(self, minimalArea: float, /) -> bool
        doc:
          Removes internal wires (also holes) from the shape.
          removeInternalWires(minimalArea) -> bool
      @constmethod
      - def mirror(self, base: Vector, norm: Vector, /) -> TopoShape
        doc:
          Mirror this shape on a given plane.
          mirror(base, norm) -> Shape
          --
          The plane is given with its base point and its normal direction.
      @constmethod
      - def transformGeometry(self, matrix: Matrix, /) -> TopoShape
        doc:
          Apply geometric transformation on this or a copy the shape.
          transformGeometry(matrix) -> Shape
          --
          This method returns a new shape.
          The transformation to be applied is defined as a 4x4 matrix.
          The underlying geometry of the following shapes may change:
          - a curve which supports an edge of the shape, or
          - a surface which supports a face of the shape;
        
          For example, a circle may be transformed into an ellipse when
          applying an affinity transformation. It may also happen that
          the circle then is represented as a B-spline curve.
        
          The transformation is applied to:
          - all the curves which support edges of the shape, and
          - all the surfaces which support faces of the shape.
        
          Note: If you want to transform a shape without changing the
          underlying geometry then use the methods translate or rotate.
      - def transformShape(self, matrix: Matrix, copy: bool=False, checkScale: bool=False, /) -> TopoShape
        doc:
          Apply a transformation on this shape in place and return self.
          --
          If copy is True the underlying geometry is duplicated and the transformation is baked into
          it. If copy is False the transformation is applied as a location change without modifying
          the underlying geometry (no bake-in). Note that scaling, mirroring, and non-uniform
          transformations may force a copy regardless of this flag. If checkScale is True,
          transformGeometry is used when non-uniform scaling is detected. To obtain a transformed copy
          while leaving this shape untouched, use transformed() instead.
      @constmethod
      - def transformed(self, matrix: Matrix, *, copy: bool=False, checkScale: bool=False, op: str=None) -> TopoShape
        doc:
          Return a new shape with the transformation applied; leave self unchanged.
          --
          The copy and checkScale arguments have the same meaning as in transformShape(). op is
          unused.
      - def translate(self, vector: Vector, /) -> None
        doc:
          Apply the translation to the current location of this shape.
          translate(vector)
      @constmethod
      - def translated(self, vector: Vector, /) -> TopoShape
        doc:
          Create a new shape with translation
          translated(vector) -> shape
      - def rotate(self, base: Vector, dir: Vector, degree: float, /) -> None
        doc:
          Apply the rotation (base, dir, degree) to the current location of this shape
          rotate(base, dir, degree)
          --
          Shp.rotate(App.Vector(0,0,0), App.Vector(0,0,1), 180) - rotate the shape around the Z Axis 180 degrees.
      @constmethod
      - def rotated(self, base: Vector, dir: Vector, degree: float, /) -> TopoShape
        doc:
          Create a new shape with rotation.
          rotated(base, dir, degree) -> shape
      - def scale(self, factor: float, base: Vector=None, /) -> None
        doc:
          Apply scaling with point and factor to this shape.
          scale(factor, [base=App.Vector(0,0,0)])
      @constmethod
      - def scaled(self, factor: float, base: Vector=None, /) -> TopoShape
        doc:
          Create a new shape with scale.
          scaled(factor, [base=App.Vector(0,0,0)]) -> shape
      @overload
      @constmethod
      - def makeFillet(self, radius: float, edgeList: List, /) -> TopoShape
      @overload
      @constmethod
      - def makeFillet(self, radius1: float, radius2: float, edgeList: List, /) -> TopoShape
      @constmethod
      - def makeFillet(self, *args) -> TopoShape
        doc:
          Make fillet.
          makeFillet(radius, edgeList) -> Shape
          or
          makeFillet(radius1, radius2, edgeList) -> Shape
      @overload
      @constmethod
      - def makeChamfer(self, radius: float, edgeList: List, /) -> TopoShape
      @overload
      @constmethod
      - def makeChamfer(self, radius1: float, radius2: float, edgeList: List, /) -> TopoShape
      @constmethod
      - def makeChamfer(self, *args) -> TopoShape
        doc:
          Make chamfer.
          makeChamfer(radius, edgeList) -> Shape
          or
          makeChamfer(radius1, radius2, edgeList) -> Shape
      @constmethod
      - def makeThickness(self, faces: List, offset: float, tolerance: float, /) -> TopoShape
        doc:
          Hollow a solid according to given thickness and faces.
          makeThickness(List of faces, Offset (Float), Tolerance (Float)) -> Shape
          --
          A hollowed solid is built from an initial solid and a set of faces on this solid,
          which are to be removed. The remaining faces of the solid become the walls of
          the hollowed solid, their thickness defined at the time of construction.
      @constmethod
      - def makeOffsetShape(self, offset: float, tolerance: float, *, inter: bool=False, self_inter: bool=False, offsetMode: int=0, join: int=0, fill: bool=False) -> TopoShape
        doc:
          Makes an offset shape (3d offsetting).
          makeOffsetShape(offset, tolerance, [inter=False, self_inter=False, offsetMode=0, join=0, fill=False]) -> Shape
          --
          The function supports keyword arguments.
        
          * offset: distance to expand the shape by. Negative value will shrink the shape.
        
          * tolerance: precision of approximation.
        
          * inter: (parameter to OCC routine; not implemented)
        
          * self_inter: (parameter to OCC routine; not implemented)
        
          * offsetMode: 0 = skin; 1 = pipe; 2 = recto-verso
        
          * join: method of offsetting non-tangent joints. 0 = arcs, 1 = tangent, 2 =
          intersection
        
          * fill: if true, offsetting a shell is to yield a solid
        
          Returns: result of offsetting.
      @constmethod
      - def makeOffset2D(self, offset: float, *, join: int=0, fill: bool=False, openResult: bool=False, intersection: bool=False) -> TopoShape
        doc:
          Makes an offset shape (2d offsetting).
          makeOffset2D(offset, [join=0, fill=False, openResult=False, intersection=False]) -> Shape
          --
          The function supports keyword arguments.
          Input shape (self) can be edge, wire, face, or a compound of those.
        
          * offset: distance to expand the shape by. Negative value will shrink the shape.
        
          * join: method of offsetting non-tangent joints. 0 = arcs, 1 = tangent, 2 = intersection
        
          * fill: if true, the output is a face filling the space covered by offset. If
          false, the output is a wire.
        
          * openResult: affects the way open wires are processed. If False, an open wire
          is made. If True, a closed wire is made from a double-sided offset, with rounds
          around open vertices.
        
          * intersection: affects the way compounds are processed. If False, all children
          are offset independently. If True, and children are edges/wires, the children
          are offset in a collective manner. If compounding is nested, collectiveness
          does not spread across compounds (only direct children of a compound are taken
          collectively).
        
          Returns: result of offsetting (wire or face or compound of those). Compounding
          structure follows that of source shape.
      @constmethod
      - def makeEvolved(self, Profile: TopoShape, Join: int, AxeProf: bool, *, Solid: bool, ProfOnSpine: bool, Tolerance: float) -> None
        doc:
          Profile along the spine
      @constmethod
      - def makeWires(self, op: str=None, /) -> TopoShape
        doc:
          Make wire(s) using the edges of this shape
          makeWires([op=None])
          --
          The function will sort any edges inside the current shape, and connect them
          into wire. If more than one wire is found, then it will make a compound out of
          all found wires.
        
          This function is element mapping aware. If the input shape has non-zero Tag,
          it will map any edge and vertex element name inside the input shape into the
          itself.
        
          op: an optional string to be appended when auto generates element mapping.
      - def reverse(self) -> None
        doc:
          Reverses the orientation of this shape.
          reverse()
      @constmethod
      - def reversed(self) -> TopoShape
        doc:
          Reverses the orientation of a copy of this shape.
          reversed() -> Shape
      - def complement(self) -> None
        doc:
          Computes the complement of the orientation of this shape,
          i.e. reverses the interior/exterior status of boundaries of this shape.
          complement()
      - def nullify(self) -> None
        doc:
          Destroys the reference to the underlying shape stored in this shape.
          As a result, this shape becomes null.
          nullify()
      @constmethod
      - def isClosed(self) -> bool
        doc:
          Checks if the shape is closed.
          isClosed() -> bool
          --
          If the shape is a shell it returns True if it has no free boundaries (edges).
          If the shape is a wire it returns True if it has no free ends (vertices).
          (Internal and External sub-shapes are ignored in these checks)
          If the shape is an edge it returns True if its vertices are the same.
      @constmethod
      - def isPartner(self, shape: TopoShape, /) -> bool
        doc:
          Checks if both shapes share the same geometry.
          Placement and orientation may differ.
          isPartner(shape) -> bool
      @constmethod
      - def isSame(self, shape: TopoShape, /) -> bool
        doc:
          Checks if both shapes share the same geometry
          and placement. Orientation may differ.
          isSame(shape) -> bool
      @constmethod
      - def isEqual(self, shape: TopoShape, /) -> bool
        doc:
          Checks if both shapes are equal.
          This means geometry, placement and orientation are equal.
          isEqual(shape) -> bool
      @constmethod
      - def isNull(self) -> bool
        doc:
          Checks if the shape is null.
          isNull() -> bool
      @constmethod
      - def isValid(self) -> bool
        doc:
          Checks if the shape is valid, i.e. neither null, nor empty nor corrupted.
          isValid() -> bool
      @constmethod
      - def isCoplanar(self, shape: TopoShape, tol: float=None, /) -> bool
        doc:
          Checks if this shape is coplanar with the given shape.
          isCoplanar(shape,tol=None) -> bool
      @constmethod
      - def isInfinite(self) -> bool
        doc:
          Checks if this shape has an infinite expansion.
          isInfinite() -> bool
      @constmethod
      - def findPlane(self, tol: float=None, /) -> TopoShape
        doc:
          Returns a plane if the shape is planar
          findPlane(tol=None) -> Shape
      - def fix(self, working_precision: float, minimum_precision: float, maximum_precision: float, /) -> bool
        doc:
          Tries to fix a broken shape.
          fix(working precision, minimum precision, maximum precision) -> bool
          --
          True is returned if the operation succeeded, False otherwise.
      @constmethod
      - def hashCode(self) -> int
        doc:
          This value is computed from the value of the underlying shape reference and the location.
          hashCode() -> int
          --
          Orientation is not taken into account.
      @constmethod
      - def tessellate(self) -> Tuple[List[Vector], List]
        doc:
          Tessellate the shape and return a list of vertices and face indices
          tessellate() -> (vertex,facets)
      @constmethod
      - def project(self, shapeList: List[TopoShape], /) -> TopoShape
        doc:
          Project a list of shapes on this shape
          project(shapeList) -> Shape
      @constmethod
      - def makeParallelProjection(self, shape: TopoShape, dir: Vector, /) -> TopoShape
        doc:
          Parallel projection of an edge or wire on this shape
          makeParallelProjection(shape, dir) -> Shape
      @constmethod
      - def makePerspectiveProjection(self, shape: TopoShape, pnt: Vector, /) -> TopoShape
        doc:
          Perspective projection of an edge or wire on this shape
          makePerspectiveProjection(shape, pnt) -> Shape
      @constmethod
      - def reflectLines(self, ViewDir: Vector, *, ViewPos: Vector=None, UpDir: Vector=None, EdgeType: str=None, Visible: bool=True, OnShape: bool=False) -> TopoShape
        doc:
          Build projection or reflect lines of a shape according to a view direction.
          reflectLines(ViewDir, [ViewPos, UpDir, EdgeType, Visible, OnShape]) -> Shape (Compound of edges)
          --
          This algorithm computes the projection of the shape in the ViewDir direction.
          If OnShape is False(default), the returned edges are flat on the XY plane defined by
          ViewPos(origin) and UpDir(up direction).
          If OnShape is True, the returned edges are the corresponding 3D reflect lines located on the shape.
          EdgeType is a string defining the type of result edges :
          - IsoLine : isoparametric line
          - OutLine : outline (silhouette) edge
          - Rg1Line : smooth edge of G1-continuity between two surfaces
          - RgNLine : sewn edge of CN-continuity on one surface
          - Sharp : sharp edge (of C0-continuity)
          If Visible is True (default), only visible edges are returned.
          If Visible is False, only invisible edges are returned.
      - def makeShapeFromMesh(self, mesh: Tuple[List[Vector], List], tolerance: float, /) -> TopoShape
        doc:
          Make a compound shape out of mesh data.
          makeShapeFromMesh((vertex,facets),tolerance) -> Shape
          --
          Note: This should be used for rather small meshes only.
      @constmethod
      - def toNurbs(self) -> TopoShape
        doc:
          Conversion of the complete geometry of a shape into NURBS geometry.
          toNurbs() -> Shape
          --
          For example, all curves supporting edges of the basis shape are converted
          into B-spline curves, and all surfaces supporting its faces are converted
          into B-spline surfaces.
      @constmethod
      - def copy(self, copyGeom: bool=True, copyMesh: bool=False, *, noElementMap: bool=False) -> TopoShape
        doc:
          Create a copy of this shape
          copy(copyGeom=True, copyMesh=False, noElementMap=False) -> Shape
          --
          If copyMesh is True, triangulation contained in original shape will be
          copied along with geometry.
          If copyGeom is False, only topological objects will be copied, while
          geometry and triangulation will be shared with original shape.
          Set noElementMap=True for transient geometry where stable element
          naming is not needed.
      @constmethod
      - def cleaned(self) -> TopoShape
        doc:
          This creates a cleaned copy of the shape with the triangulation removed.
          clean()
          --
          This can be useful to reduce file size when exporting as a BREP file.
          Warning: Use the cleaned shape with care because certain algorithms may work incorrectly
          if the shape has no internal triangulation any more.
      @constmethod
      - def replaceShape(self, tupleList: List[Tuple[TopoShape, TopoShape]], /) -> TopoShape
        doc:
          Replace a sub-shape with a new shape and return a new shape.
          replaceShape(tupleList) -> Shape
          --
          The parameter is in the form list of tuples with the two shapes.
      @constmethod
      - def removeShape(self, shapeList: List[TopoShape], /) -> TopoShape
        doc:
          Remove a sub-shape and return a new shape.
          removeShape(shapeList) -> Shape
          --
          The parameter is a list of shapes.
      @constmethod
      - def defeaturing(self, shapeList: List[TopoShape], /) -> TopoShape
        doc:
          Remove a feature defined by supplied faces and return a new shape.
          defeaturing(shapeList) -> Shape
          --
          The parameter is a list of faces.
      @constmethod
      - def isInside(self, point: Vector, tolerance: float, checkFace: bool, /) -> bool
        doc:
          Checks whether a point is inside or outside the shape.
          isInside(point, tolerance, checkFace) => Boolean
          --
          checkFace indicates if the point lying directly on a face is considered to be inside or not
      @constmethod
      - def removeSplitter(self) -> TopoShape
        doc:
          Removes redundant edges from the B-REP model
          removeSplitter() -> Shape
      @constmethod
      - def proximity(self, shape: TopoShape, tolerance: float=None, /) -> Tuple[List[int], List[int]]
        doc:
          Returns two lists of Face indexes for the Faces involved in the intersection.
          proximity(shape,[tolerance]) -> (selfFaces, shapeFaces)
      @constmethod
      - def distToShape(self, shape: TopoShape, tol: float=1e-07, /) -> Tuple[float, List[Tuple[Vector, Vector]], List[Tuple]]
        doc:
          Find the minimum distance to another shape.
          distToShape(shape, tol=1e-7) -> (dist, vectors, infos)
          --
          dist is the minimum distance, in mm (float value).
        
          vectors is a list of pairs of App.Vector. Each pair corresponds to solution.
          Example: [(App.Vector(2.0, -1.0, 2.0), App.Vector(2.0, 0.0, 2.0)),
          (App.Vector(2.0, -1.0, 2.0), App.Vector(2.0, -1.0, 3.0))]
          First vector is a point on self, second vector is a point on s.
        
          infos contains additional info on the solutions. It is a list of tuples:
          (topo1, index1, params1, topo2, index2, params2)
        
          topo1, topo2 are strings identifying type of BREP element: 'Vertex',
          'Edge', or 'Face'.
        
          index1, index2 are indexes of the elements (zero-based).
        
          params1, params2 are parameters of internal space of the elements. For
          vertices, params is None. For edges, params is one float, u. For faces,
          params is a tuple (u,v).
      @constmethod
      - def getElement(self, elementName: str, silent: bool=False, /) -> TopoShape
        doc:
          Returns a SubElement
          getElement(elementName, [silent = False]) -> Face | Edge | Vertex
          elementName:  SubElement name - i.e. 'Edge1', 'Face3' etc.
          Accepts TNP mitigation mapped names as well
          silent:  True to suppress the exception throw if the shape isn't found.
      @constmethod
      - def countElement(self, type: str, /) -> int
        doc:
          Returns the count of a type of element
          countElement(type) -> int
      - def mapSubElement(self, shape: Union[TopoShape, Tuple[TopoShape, ...]], op: str='', /) -> None
        doc:
          mapSubElement(shape|[shape...], op='') - maps the sub element of other shape
        
          shape:  other shape or sequence of shapes to map the sub-elements
          op:     optional string prefix to append before the mapped sub element names
      - def mapShapes(self, generated: List[Tuple[TopoShape, TopoShape]], modified: List[Tuple[TopoShape, TopoShape]], op: str='', /) -> None
        doc:
          mapShapes(generated, modified, op='')
        
          generate element names with user defined mapping
        
          generated: a list of tuple(src, dst) that indicating src shape or shapes
          generates dst shape or shapes. Note that the dst shape or shapes
          must be sub-shapes of this shape.
          modified: a list of tuple(src, dst) that indicating src shape or shapes
          modifies into dst shape or shapes. Note that the dst shape or
          shapes must be sub-shapes of this shape.
          op: optional string prefix to append before the mapped sub element names
      @constmethod
      - def getElementHistory(self, name: str, /) -> Union[Tuple[str, str, List[str]], None]
        doc:
          getElementHistory(name) - returns the element mapped name history
        
          name: mapped element name belonging to this shape
        
          Returns tuple(sourceShapeTag, sourceName, [intermediateNames...]),
          or None if no history.
      @constmethod
      - def getTolerance(self, mode: int, ShapeType: str='Shape', /) -> float
        doc:
          Determines a tolerance from the ones stored in a shape
          getTolerance(mode, ShapeType=Shape) -> float
          --
          mode = 0 : returns the average value between sub-shapes,
          mode > 0 : returns the maximal found,
          mode < 0 : returns the minimal found.
          ShapeType defines what kinds of sub-shapes to consider:
          Shape (default) : all : Vertex, Edge, Face,
          Vertex : only vertices,
          Edge   : only edges,
          Face   : only faces,
          Shell  : combined Shell + Face, for each face (and containing
          shell), also checks edge and Vertex
      @constmethod
      - def overTolerance(self, value: float, ShapeType: str='Shape', /) -> List[TopoShape]
        doc:
          Determines which shapes have a tolerance over the given value
          overTolerance(value, [ShapeType=Shape]) -> ShapeList
          --
          ShapeType is interpreted as in the method getTolerance
      @constmethod
      - def inTolerance(self, valmin: float, valmax: float, ShapeType: str='Shape', /) -> List[TopoShape]
        doc:
          Determines which shapes have a tolerance within a given interval
          inTolerance(valmin, valmax, [ShapeType=Shape]) -> ShapeList
          --
          ShapeType is interpreted as in the method getTolerance
      @constmethod
      - def globalTolerance(self, mode: int, /) -> float
        doc:
          Returns the computed tolerance according to the mode
          globalTolerance(mode) -> float
          --
          mode = 0 : average
          mode > 0 : maximal
          mode < 0 : minimal
      @constmethod
      - def fixTolerance(self, value: float, ShapeType: str='Shape', /) -> None
        doc:
          Sets (enforces) tolerances in a shape to the given value
          fixTolerance(value, [ShapeType=Shape])
          --
          ShapeType = Vertex : only vertices are set
          ShapeType = Edge   : only edges are set
          ShapeType = Face   : only faces are set
          ShapeType = Wire   : to have edges and their vertices set
          ShapeType = other value : all (vertices,edges,faces) are set
      @constmethod
      - def limitTolerance(self, tmin: float, tmax: float=0, ShapeType: str='Shape', /) -> bool
        doc:
          Limits tolerances in a shape
          limitTolerance(tmin, [tmax=0, ShapeType=Shape]) -> bool
          --
          tmin = tmax -> as fixTolerance (forces)
          tmin = 0   -> maximum tolerance will be tmax
          tmax = 0 or not given (more generally, tmax < tmin) ->
          tmax ignored, minimum will be tmin
          else, maximum will be max and minimum will be min
          ShapeType = Vertex : only vertices are set
          ShapeType = Edge   : only edges are set
          ShapeType = Face   : only faces are set
          ShapeType = Wire   : to have edges and their vertices set
          ShapeType = other value : all (vertices,edges,faces) are set
          Returns True if at least one tolerance of the sub-shape has been modified
      @constmethod
      - def optimalBoundingBox(self, useTriangulation: bool=True, useShapeTolerance: bool=False, /) -> BoundBox
        doc:
          Get the optimal bounding box
          optimalBoundingBox([useTriangulation = True, useShapeTolerance = False]) -> bound box
      - def clearCache(self) -> None
        doc:
          Clear internal sub-shape cache
      @constmethod
      - def findSubShape(self, shape: TopoShape, /) -> Tuple[Union[str, None], int]
        doc:
          findSubShape(shape) -> (type_name, index)
        
          Find sub shape and return the shape type name and index. If not found,
          then return (None, 0)
      @constmethod
      - def findSubShapesWithSharedVertex(self, shape: TopoShape, *, needName: bool=False, checkGeometry: bool=True, tol: float=1e-07, atol: float=1e-12) -> Union[List[Tuple[str, TopoShape]], List[TopoShape]]
        doc:
          findSubShapesWithSharedVertex(shape, needName=False, checkGeometry=True, tol=1e-7, atol=1e-12) -> Shape
        
          shape: input elementary shape, currently only support Face, Edge, or Vertex
        
          needName: if True, return a list of tuple(name, shape), or else return a list
          of shapes.
        
          checkGeometry: whether to compare geometry
        
          tol: distance tolerance
        
          atol: angular tolerance
        
          Search sub shape by checking vertex coordinates and comparing the underlying
          geometries, This can find shapes that are copied. It currently only works with
          elementary shapes, Face, Edge, Vertex.
      @constmethod
      - def getChildShapes(self, shapetype: str, avoidtype: str='', /) -> List[TopoShape]
        doc:
          getChildShapes(shapetype, avoidtype='') -> list(Shape)
        
          Return a list of child sub-shapes of given type.
        
          shapetype: the type of requesting sub shapes
          avoidtype: optional shape type to skip when exploring
```

```text theme={null}
MODULE Mod/Part/App/TopoShapeCompSolid.pyi
classes:
  class TopoShapeCompSolid(TopoShape)
    doc:
      TopoShapeCompSolid is the OpenCasCade topological compound solid wrapper
    methods:
      - def add(self, solid: TopoShape, /) -> None
        doc:
          Add a solid to the compound.
          add(solid)
```

```text theme={null}
MODULE Mod/Part/App/TopoShapeCompound.pyi
classes:
  class TopoShapeCompound(TopoShape)
    doc:
      Create a compound out of a list of shapes
    methods:
      @overload
      - def __init__(self) -> None
      @overload
      - def __init__(self, shapes: TopoShape | Sequence[TopoShape], /) -> None
      - def add(self, shape: TopoShape, /) -> None
        doc:
          Add a shape to the compound.
          add(shape)
      @constmethod
      - def connectEdgesToWires(self, Shared: bool=True, Tolerance: float=1e-07, /) -> 'TopoShapeCompound'
        doc:
          Build a compound of wires out of the edges of this compound.
          connectEdgesToWires([Shared = True, Tolerance = 1e-7]) -> Compound
          --
          If Shared is True  connection is performed only when adjacent edges share the same vertex.
          If Shared is False connection is performed only when ends of adjacent edges are at distance less than Tolerance.
      - def setFaces(self) -> None
        doc:
          A shape is created from points and triangles and set to this object
```

```text theme={null}
MODULE Mod/Part/App/TopoShapeEdge.pyi
classes:
  class TopoShapeEdge(TopoShape)
    doc:
      TopoShapeEdge is the OpenCasCade topological edge wrapper
    attributes:
      - Tolerance: float
        doc:
          Set or get the tolerance of the vertex
      - Length: Final[float]
        doc:
          Returns the cartesian length of the curve
      - ParameterRange: Final[Tuple[float, float]]
        doc:
          Returns a 2 tuple with the range of the primary parameter
          defining the curve. This is the same as would be returned by
          the FirstParameter and LastParameter properties, i.e.
        
          (LastParameter,FirstParameter)
        
          What the parameter is depends on what type of edge it is. For a
          Line the parameter is simply its cartesian length. Some other
          examples are shown below:
        
          Type                 Parameter
          ---------------------------------------------------------------
          Circle               Angle swept by circle (or arc) in radians
          BezierCurve          Unitless number in the range 0.0 to 1.0
          Helix                Angle swept by helical turns in radians
      - FirstParameter: Final[float]
        doc:
          Returns the start value of the range of the primary parameter
          defining the curve.
        
          What the parameter is depends on what type of edge it is. For a
          Line the parameter is simply its cartesian length. Some other
          examples are shown below:
        
          Type                 Parameter
          -----------------------------------------------------------
          Circle               Angle swept by circle (or arc) in radians
          BezierCurve          Unitless number in the range 0.0 to 1.0
          Helix                Angle swept by helical turns in radians
      - LastParameter: Final[float]
        doc:
          Returns the end value of the range of the primary parameter
          defining the curve.
        
          What the parameter is depends on what type of edge it is. For a
          Line the parameter is simply its cartesian length. Some other
          examples are shown below:
        
          Type                 Parameter
          -----------------------------------------------------------
          Circle               Angle swept by circle (or arc) in radians
          BezierCurve          Unitless number in the range 0.0 to 1.0
          Helix                Angle swept by helical turns in radians
      - Curve: Final[object]
        doc:
          Returns the 3D curve of the edge
      - Closed: Final[bool]
        doc:
          Returns true if the edge is closed
      - Degenerated: Final[bool]
        doc:
          Returns true if the edge is degenerated
      - Mass: Final[object]
        doc:
          Returns the mass of the current system.
      - CenterOfMass: Final[object]
        doc:
          Returns the center of mass of the current system.
          If the gravitational field is uniform, it is the center of gravity.
          The coordinates returned for the center of mass are expressed in the
          absolute Cartesian coordinate system.
      - MatrixOfInertia: Final[object]
        doc:
          Returns the matrix of inertia. It is a symmetrical matrix.
          The coefficients of the matrix are the quadratic moments of
          inertia.
        
          | Ixx Ixy Ixz 0 |
          | Ixy Iyy Iyz 0 |
          | Ixz Iyz Izz 0 |
          | 0   0   0   1 |
        
          The moments of inertia are denoted by Ixx, Iyy, Izz.
          The products of inertia are denoted by Ixy, Ixz, Iyz.
          The matrix of inertia is returned in the central coordinate
          system (G, Gx, Gy, Gz) where G is the centre of mass of the
          system and Gx, Gy, Gz the directions parallel to the X(1,0,0)
          Y(0,1,0) Z(0,0,1) directions of the absolute cartesian
          coordinate system.
      - StaticMoments: Final[object]
        doc:
          Returns Ix, Iy, Iz, the static moments of inertia of the
          current system; i.e. the moments of inertia about the
          three axes of the Cartesian coordinate system.
      - PrincipalProperties: Final[Dict]
        doc:
          Computes the principal properties of inertia of the current system.
          There is always a set of axes for which the products
          of inertia of a geometric system are equal to 0; i.e. the
          matrix of inertia of the system is diagonal. These axes
          are the principal axes of inertia. Their origin is
          coincident with the center of mass of the system. The
          associated moments are called the principal moments of inertia.
          This function computes the eigen values and the
          eigen vectors of the matrix of inertia of the system.
      - Continuity: Final[str]
        doc:
          Returns the continuity
    methods:
      @overload
      - def __init__(self) -> None
      @overload
      - def __init__(self, curve: Geometry, first: float=..., last: float=..., /) -> None
      @overload
      - def __init__(self, shape: TopoShape, /) -> None
      @overload
      - def __init__(self, start: Vertex, end: Vertex, /) -> None
      @constmethod
      - def getParameterByLength(self, pos: float, tolerance: float=1e-07, /) -> float
        doc:
          Get the value of the primary parameter at the given distance along the cartesian length of the edge.
          getParameterByLength(pos, [tolerance = 1e-7]) -> Float
          --
          Args:
          pos (float or int): The distance along the length of the edge at which to
          determine the primary parameter value. See help for the FirstParameter or
          LastParameter properties for more information on the primary parameter.
          If the given value is positive, the distance from edge start is used.
          If the given value is negative, the distance from edge end is used.
          tol (float): Computing tolerance. Optional, defaults to 1e-7.
        
          Returns:
          paramval (float): the value of the primary parameter defining the edge at the
          given position along its cartesian length.
      @constmethod
      - def tangentAt(self, paramval: float, /) -> Vector
        doc:
          Get the tangent direction at the given primary parameter value along the Edge if it is defined
          tangentAt(paramval) -> Vector
          --
          Args:
          paramval (float or int): The parameter value along the Edge at which to
          determine the tangent direction e.g:
        
          x = Part.makeCircle(1, FreeCAD-compatible runtime.Vector(0,0,0), FreeCAD-compatible runtime.Vector(0,0,1), 0, 90)
          y = x.tangentAt(x.FirstParameter + 0.5 * (x.LastParameter - x.FirstParameter))
        
          y is the Vector (-0.7071067811865475, 0.7071067811865476, 0.0)
        
          Values with magnitude greater than the Edge length return
          values of the tangent on the curve extrapolated beyond its
          length. This may not be valid for all Edges. Negative values
          similarly return a tangent on the curve extrapolated backwards
          (before the start point of the Edge). For example, using the
          same shape as above:
        
          >>> x.tangentAt(x.FirstParameter + 3.5*(x.LastParameter - x.FirstParameter))
          Vector (0.7071067811865477, 0.7071067811865474, 0.0)
        
          Which gives the same result as
        
          >>> x.tangentAt(x.FirstParameter -0.5*(x.LastParameter - x.FirstParameter))
          Vector (0.7071067811865475, 0.7071067811865476, 0.0)
        
          Since it is a circle
        
          Returns:
          Vector: representing the tangent to the Edge at the given
          location along its length (or extrapolated length)
      @constmethod
      - def valueAt(self, paramval: float, /) -> Vector
        doc:
          Get the value of the cartesian parameter value at the given parameter value along the Edge
          valueAt(paramval) -> Vector
          --
          Args:
          paramval (float or int): The parameter value along the Edge at which to
          determine the value in terms of the main parameter defining
          the edge, what the parameter value is depends on the type of
          edge. See  e.g:
        
          For a circle value
        
          x = Part.makeCircle(1, FreeCAD-compatible runtime.Vector(0,0,0), FreeCAD-compatible runtime.Vector(0,0,1), 0, 90)
          y = x.valueAt(x.FirstParameter + 0.5 * (x.LastParameter - x.FirstParameter))
        
          y is theVector (0.7071067811865476, 0.7071067811865475, 0.0)
        
          Values with magnitude greater than the Edge length return
          values on the curve extrapolated beyond its length. This may
          not be valid for all Edges. Negative values similarly return
          a parameter value on the curve extrapolated backwards (before the
          start point of the Edge). For example, using the same shape
          as above:
        
          >>> x.valueAt(x.FirstParameter + 3.5*(x.LastParameter - x.FirstParameter))
          Vector (0.7071067811865474, -0.7071067811865477, 0.0)
        
          Which gives the same result as
        
          >>> x.valueAt(x.FirstParameter -0.5*(x.LastParameter - x.FirstParameter))
          Vector (0.7071067811865476, -0.7071067811865475, 0.0)
        
          Since it is a circle
        
          Returns:
          Vector: representing the cartesian location on the Edge at the given
          distance along its length (or extrapolated length)
      @constmethod
      - def parameters(self, face: object=..., /) -> List[float]
        doc:
          Get the list of parameters of the tessellation of an edge.
          parameters([face]) -> list
          --
          If the edge is part of a face then this face is required as argument.
          An exception is raised if the edge has no polygon.
      @constmethod
      - def parameterAt(self, vertex: object, /) -> float
        doc:
          Get the parameter at the given vertex if lying on the edge
          parameterAt(Vertex) -> Float
      @constmethod
      - def normalAt(self, paramval: float, /) -> Vector
        doc:
          Get the normal direction at the given parameter value along the Edge if it is defined
          normalAt(paramval) -> Vector
          --
          Args:
          paramval (float or int): The parameter value along the Edge at which to
          determine the normal direction e.g:
        
          x = Part.makeCircle(1, FreeCAD-compatible runtime.Vector(0,0,0), FreeCAD-compatible runtime.Vector(0,0,1), 0, 90)
          y = x.normalAt(x.FirstParameter + 0.5 * (x.LastParameter - x.FirstParameter))
        
          y is the Vector (-0.7071067811865476, -0.7071067811865475, 0.0)
        
          Values with magnitude greater than the Edge length return
          values of the normal on the curve extrapolated beyond its
          length. This may not be valid for all Edges. Negative values
          similarly return a normal on the curve extrapolated backwards
          (before the start point of the Edge). For example, using the
          same shape as above:
        
          >>> x.normalAt(x.FirstParameter + 3.5*(x.LastParameter - x.FirstParameter))
          Vector (-0.7071067811865474, 0.7071067811865477, 0.0)
        
          Which gives the same result as
        
          >>> x.normalAt(x.FirstParameter -0.5*(x.LastParameter - x.FirstParameter))
          Vector (-0.7071067811865476, 0.7071067811865475, 0.0)
        
          Since it is a circle
        
          Returns:
          Vector: representing the normal to the Edge at the given
          location along its length (or extrapolated length)
      @constmethod
      - def derivative1At(self, paramval: float, /) -> Vector
        doc:
          Get the first derivative at the given parameter value along the Edge if it is defined
          derivative1At(paramval) -> Vector
          --
          Args:
          paramval (float or int): The parameter value along the Edge at which to
          determine the first derivative e.g:
        
          x = Part.makeCircle(1, FreeCAD-compatible runtime.Vector(0,0,0), FreeCAD-compatible runtime.Vector(0,0,1), 0, 90)
          y = x.derivative1At(x.FirstParameter + 0.5 * (x.LastParameter - x.FirstParameter))
        
          y is the Vector (-0.7071067811865475, 0.7071067811865476, 0.0)
        
          Values with magnitude greater than the Edge length return
          values of the first derivative on the curve extrapolated
          beyond its length. This may not be valid for all Edges.
          Negative values similarly return a first derivative on the
          curve extrapolated backwards (before the start point of the
          Edge). For example, using the same shape as above:
        
          >>> x.derivative1At(x.FirstParameter + 3.5*(x.LastParameter - x.FirstParameter))
          Vector (0.7071067811865477, 0.7071067811865474, 0.0)
        
          Which gives the same result as
        
          >>> x.derivative1At(x.FirstParameter -0.5*(x.LastParameter - x.FirstParameter))
          Vector (0.7071067811865475, 0.7071067811865476, 0.0)
        
          Since it is a circle
        
          Returns:
          Vector: representing the first derivative to the Edge at the
          given location along its length (or extrapolated length)
      @constmethod
      - def derivative2At(self, paramval: float, /) -> Vector
        doc:
          Get the second derivative at the given parameter value along the Edge if it is defined
          derivative2At(paramval) -> Vector
          --
          Args:
          paramval (float or int): The parameter value along the Edge at which to
          determine the second derivative e.g:
        
          x = Part.makeCircle(1, FreeCAD-compatible runtime.Vector(0,0,0), FreeCAD-compatible runtime.Vector(0,0,1), 0, 90)
          y = x.derivative2At(x.FirstParameter + 0.5 * (x.LastParameter - x.FirstParameter))
        
          y is the Vector (-0.7071067811865476, -0.7071067811865475, 0.0)
        
          Values with magnitude greater than the Edge length return
          values of the second derivative on the curve extrapolated
          beyond its length. This may not be valid for all Edges.
          Negative values similarly return a second derivative on the
          curve extrapolated backwards (before the start point of the
          Edge). For example, using the same shape as above:
        
          >>> x.derivative2At(x.FirstParameter + 3.5*(x.LastParameter - x.FirstParameter))
          Vector (-0.7071067811865474, 0.7071067811865477, 0.0)
        
          Which gives the same result as
        
          >>> x.derivative2At(x.FirstParameter -0.5*(x.LastParameter - x.FirstParameter))
          Vector (-0.7071067811865476, 0.7071067811865475, 0.0)
        
          Since it is a circle
        
          Returns:
          Vector: representing the second derivative to the Edge at the
          given location along its length (or extrapolated length)
      @constmethod
      - def derivative3At(self, paramval: float, /) -> Vector
        doc:
          Get the third derivative at the given parameter value along the Edge if it is defined
          derivative3At(paramval) -> Vector
          --
          Args:
          paramval (float or int): The parameter value along the Edge at which to
          determine the third derivative e.g:
        
          x = Part.makeCircle(1, FreeCAD-compatible runtime.Vector(0,0,0), FreeCAD-compatible runtime.Vector(0,0,1), 0, 90)
          y = x.derivative3At(x.FirstParameter + 0.5 * (x.LastParameter - x.FirstParameter))
        
          y is the Vector (0.7071067811865475, -0.7071067811865476, -0.0)
        
          Values with magnitude greater than the Edge length return
          values of the third derivative on the curve extrapolated
          beyond its length. This may not be valid for all Edges.
          Negative values similarly return a third derivative on the
          curve extrapolated backwards (before the start point of the
          Edge). For example, using the same shape as above:
        
          >>> x.derivative3At(x.FirstParameter + 3.5*(x.LastParameter - x.FirstParameter))
          Vector (-0.7071067811865477, -0.7071067811865474, 0.0)
        
          Which gives the same result as
        
          >>> x.derivative3At(x.FirstParameter -0.5*(x.LastParameter - x.FirstParameter))
          Vector (-0.7071067811865475, -0.7071067811865476, 0.0)
        
          Since it is a circle
        
          Returns:
          Vector: representing the third derivative to the Edge at the
          given location along its length (or extrapolated length)
      @constmethod
      - def curvatureAt(self, paramval: float, /) -> float
        doc:
          Get the curvature at the given parameter [First|Last] if defined
          curvatureAt(paramval) -> Float
      @constmethod
      - def centerOfCurvatureAt(self, paramval: float, /) -> Vector
        doc:
          Get the center of curvature at the given parameter [First|Last] if defined
          centerOfCurvatureAt(paramval) -> Vector
      @constmethod
      - def firstVertex(self, Orientation: bool=False, /) -> Vertex
        doc:
          Returns the Vertex of orientation FORWARD in this edge.
          firstVertex([Orientation=False]) -> Vertex
          --
          If there is none a Null shape is returned.
          Orientation = True : taking into account the edge orientation
      @constmethod
      - def lastVertex(self, Orientation: bool=False, /) -> Vertex
        doc:
          Returns the Vertex of orientation REVERSED in this edge.
          lastVertex([Orientation=False]) -> Vertex
          --
          If there is none a Null shape is returned.
          Orientation = True : taking into account the edge orientation
      @constmethod
      @overload
      - def discretize(self, Number: int, First: float=..., Last: float=...) -> List[Vector]
      @constmethod
      @overload
      - def discretize(self, QuasiNumber: int, First: float=..., Last: float=...) -> List[Vector]
      @constmethod
      @overload
      - def discretize(self, Distance: float, First: float=..., Last: float=...) -> List[Vector]
      @constmethod
      @overload
      - def discretize(self, Deflection: float, First: float=..., Last: float=...) -> List[Vector]
      @constmethod
      @overload
      - def discretize(self, QuasiDeflection: float, First: float=..., Last: float=...) -> List[Vector]
      @constmethod
      @overload
      - def discretize(self, Angular: float, Curvature: float, Minimum: int=..., First: float=..., Last: float=...) -> List[Vector]
      @constmethod
      - def discretize(self, **kwargs) -> List[Vector]
        doc:
          Discretizes the edge and returns a list of points.
          discretize(kwargs) -> list
          --
          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 edge
          discretize(QuasiDeflection=d) => gives a list of points with a maximum deflection 'd' to the edge (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 edge.
        
          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 float
          then the behaviour is as if using the keyword 'Distance'.
        
          Example:
        
          import Part
          e=Part.makeCircle(5)
          p=e.discretize(Number=50,First=3.14)
          s=Part.Compound([Part.Vertex(i) for i in p])
          Part.show(s)
        
          p=e.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)
      @constmethod
      - def countNodes(self) -> int
        doc:
          Returns the number of nodes of the 3D polygon of the edge.
      @constmethod
      - def split(self, paramval: float, /) -> Wire
        doc:
          Splits the edge at the given parameter values and builds a wire out of it
          split(paramval) -> Wire
          --
          Args:
          paramval (float or list_of_floats): The parameter values along the Edge at which to
          split it e.g:
        
          edge = Part.makeCircle(1, FreeCAD-compatible runtime.Vector(0,0,0), FreeCAD-compatible runtime.Vector(0,0,1), 0, 90)
          wire = edge.split([0.5, 1.0])
        
          Returns:
          Wire: wire made up of two Edges
      @constmethod
      - def isSeam(self, Face: object, /) -> bool
        doc:
          Checks whether the edge is a seam edge.
          isSeam(Face)
      @constmethod
      - def curveOnSurface(self, idx: int, /) -> Tuple[object, object, object, float, float]
        doc:
          Returns the 2D curve, the surface, the placement and the parameter range of index idx.
          curveOnSurface(idx) -> None or tuple
          --
          Returns None if index idx is out of range.
          Returns a 5-items tuple of a curve, a surface, a placement, first parameter and last parameter.
```

```text theme={null}
MODULE Mod/Part/App/TopoShapeFace.pyi
classes:
  class TopoShapeFace(TopoShape)
    doc:
      TopoShapeFace is the OpenCasCade topological face wrapper
    attributes:
      - Tolerance: float
        doc:
          Set or get the tolerance of the vertex
      - ParameterRange: Final[Tuple]
        doc:
          Returns a 4 tuple with the parameter range
      - Surface: Final[object]
        doc:
          Returns the geometric surface of the face
      - Wire: Final[object]
        doc:
          The outer wire of this face
          deprecated -- use OuterWire
      - OuterWire: Final[object]
        doc:
          The outer wire of this face
      - Mass: Final[object]
        doc:
          Returns the mass of the current system.
      - CenterOfMass: Final[object]
        doc:
          Returns the center of mass of the current system.
          If the gravitational field is uniform, it is the center of gravity.
          The coordinates returned for the center of mass are expressed in the
          absolute Cartesian coordinate system.
      - MatrixOfInertia: Final[object]
        doc:
          Returns the matrix of inertia. It is a symmetrical matrix.
          The coefficients of the matrix are the quadratic moments of
          inertia.
        
          | Ixx Ixy Ixz 0 |
          | Ixy Iyy Iyz 0 |
          | Ixz Iyz Izz 0 |
          | 0   0   0   1 |
        
          The moments of inertia are denoted by Ixx, Iyy, Izz.
          The products of inertia are denoted by Ixy, Ixz, Iyz.
          The matrix of inertia is returned in the central coordinate
          system (G, Gx, Gy, Gz) where G is the centre of mass of the
          system and Gx, Gy, Gz the directions parallel to the X(1,0,0)
          Y(0,1,0) Z(0,0,1) directions of the absolute cartesian
          coordinate system.
      - StaticMoments: Final[object]
        doc:
          Returns Ix, Iy, Iz, the static moments of inertia of the
          current system; i.e. the moments of inertia about the
          three axes of the Cartesian coordinate system.
      - PrincipalProperties: Final[Dict]
        doc:
          Computes the principal properties of inertia of the current system.
          There is always a set of axes for which the products
          of inertia of a geometric system are equal to 0; i.e. the
          matrix of inertia of the system is diagonal. These axes
          are the principal axes of inertia. Their origin is
          coincident with the center of mass of the system. The
          associated moments are called the principal moments of inertia.
          This function computes the eigen values and the
          eigen vectors of the matrix of inertia of the system.
    methods:
      @overload
      - def __init__(self) -> None
      @overload
      - def __init__(self, shape: TopoShape, /) -> None
      @overload
      - def __init__(self, face: TopoShape, wire: TopoShape, /) -> None
      @overload
      - def __init__(self, wires: Sequence[TopoShape], /) -> None
      - def addWire(self, wire: object, /) -> None
        doc:
          Adds a wire to the face.
          addWire(wire)
      @constmethod
      - def makeOffset(self, dist: float, /) -> object
        doc:
          Offset the face by a given amount.
          makeOffset(dist) -> Face
          --
          Returns Compound of Wires. Deprecated - use makeOffset2D instead.
      @constmethod
      - def makeEvolved(self, Profile: TopoShape, Join: int, *, AxeProf: bool, Solid: bool, ProfOnSpine: bool, Tolerance: float) -> TopoShape
        doc:
          Profile along the spine
      @constmethod
      - def getUVNodes(self) -> List[Tuple[float, float]]
        doc:
          Get the list of (u,v) nodes of the tessellation
          getUVNodes() -> list
          --
          An exception is raised if the face is not triangulated.
      @constmethod
      - def tangentAt(self, u: float, v: float, /) -> Vector
        doc:
          Get the tangent in u and v isoparametric at the given point if defined
          tangentAt(u,v) -> Vector
      @constmethod
      - def valueAt(self, u: float, v: float, /) -> Vector
        doc:
          Get the point at the given parameter [0|Length] if defined
          valueAt(u,v) -> Vector
      @constmethod
      - def normalAt(self, pos: float, /) -> Vector
        doc:
          Get the normal vector at the given parameter [0|Length] if defined
          normalAt(pos) -> Vector
      @constmethod
      - def derivative1At(self, u: float, v: float, /) -> Tuple[Vector, Vector]
        doc:
          Get the first derivative at the given parameter [0|Length] if defined
          derivative1At(u,v) -> (vectorU,vectorV)
      @constmethod
      - def derivative2At(self, u: float, v: float, /) -> Tuple[Vector, Vector]
        doc:
          Vector = d2At(pos) - Get the second derivative at the given parameter [0|Length] if defined
          derivative2At(u,v) -> (vectorU,vectorV)
      @constmethod
      - def curvatureAt(self, u: float, v: float, /) -> float
        doc:
          Get the curvature at the given parameter [0|Length] if defined
          curvatureAt(u,v) -> Float
      @constmethod
      - def isPartOfDomain(self, u: float, v: float, /) -> bool
        doc:
          Check if a given (u,v) pair is inside the domain of a face
          isPartOfDomain(u,v) -> bool
      @constmethod
      - def makeHalfSpace(self, pos: object, /) -> object
        doc:
          Make a half-space solid by this face and a reference point.
          makeHalfSpace(pos) -> Shape
      - def validate(self) -> None
        doc:
          Validate the face.
          validate()
      @constmethod
      - def countNodes(self) -> int
        doc:
          Returns the number of nodes of the triangulation.
      @constmethod
      - def countTriangles(self) -> int
        doc:
          Returns the number of triangles of the triangulation.
      @constmethod
      - def curveOnSurface(self, Edge: object, /) -> Optional[Tuple[object, float, float]]
        doc:
          Returns the curve associated to the edge in the parametric space of the face.
          curveOnSurface(Edge) -> (curve, min, max) or None
          --
          If this curve exists then a tuple of curve and parameter range is returned.
          Returns None if this curve does not exist.
      - def cutHoles(self, list_of_wires: List[object], /) -> None
        doc:
          Cut holes in the face.
          cutHoles(list_of_wires)
```

```text theme={null}
MODULE Mod/Part/App/TopoShapeShell.pyi
classes:
  class TopoShapeShell(TopoShape)
    doc:
      Create a shell out of a list of faces
    attributes:
      - Mass: Final[object]
        doc:
          Returns the mass of the current system.
      - CenterOfMass: Final[object]
        doc:
          Returns the center of mass of the current system.
          If the gravitational field is uniform, it is the center of gravity.
          The coordinates returned for the center of mass are expressed in the
          absolute Cartesian coordinate system.
      - MatrixOfInertia: Final[object]
        doc:
          Returns the matrix of inertia. It is a symmetrical matrix.
          The coefficients of the matrix are the quadratic moments of
          inertia.
        
          | Ixx Ixy Ixz 0 |
          | Ixy Iyy Iyz 0 |
          | Ixz Iyz Izz 0 |
          | 0   0   0   1 |
        
          The moments of inertia are denoted by Ixx, Iyy, Izz.
          The products of inertia are denoted by Ixy, Ixz, Iyz.
          The matrix of inertia is returned in the central coordinate
          system (G, Gx, Gy, Gz) where G is the centre of mass of the
          system and Gx, Gy, Gz the directions parallel to the X(1,0,0)
          Y(0,1,0) Z(0,0,1) directions of the absolute cartesian
          coordinate system.
      - StaticMoments: Final[object]
        doc:
          Returns Ix, Iy, Iz, the static moments of inertia of the
          current system; i.e. the moments of inertia about the
          three axes of the Cartesian coordinate system.
      - PrincipalProperties: Final[Dict]
        doc:
          Computes the principal properties of inertia of the current system.
          There is always a set of axes for which the products
          of inertia of a geometric system are equal to 0; i.e. the
          matrix of inertia of the system is diagonal. These axes
          are the principal axes of inertia. Their origin is
          coincident with the center of mass of the system. The
          associated moments are called the principal moments of inertia.
          This function computes the eigen values and the
          eigen vectors of the matrix of inertia of the system.
    methods:
      - def add(self, face: object, /) -> None
        doc:
          Add a face to the shell.
          add(face)
      @constmethod
      - def getFreeEdges(self) -> object
        doc:
          Get free edges as compound.
          getFreeEdges() -> compound
      @constmethod
      - def getBadEdges(self) -> object
        doc:
          Get bad edges as compound.
          getBadEdges() -> compound
      @constmethod
      - def makeHalfSpace(self, point: object, /) -> object
        doc:
          Make a half-space solid by this shell and a reference point.
          makeHalfSpace(point) -> Solid
```

```text theme={null}
MODULE Mod/Part/App/TopoShapeSolid.pyi
classes:
  class TopoShapeSolid(TopoShape)
    doc:
      Part.Solid(shape): Create a solid out of shells of shape. If shape is a compsolid, the overall volume solid is created.
    attributes:
      - Mass: Final[float]
        doc:
          Returns the mass of the current system.
      - CenterOfMass: Final[Vector]
        doc:
          Returns the center of mass of the current system.
          If the gravitational field is uniform, it is the center of gravity.
          The coordinates returned for the center of mass are expressed in the
          absolute Cartesian coordinate system.
      - MatrixOfInertia: Final[Matrix]
        doc:
          Returns the matrix of inertia. It is a symmetrical matrix.
          The coefficients of the matrix are the quadratic moments of
          inertia.
        
          | Ixx Ixy Ixz 0 |
          | Ixy Iyy Iyz 0 |
          | Ixz Iyz Izz 0 |
          | 0   0   0   1 |
        
          The moments of inertia are denoted by Ixx, Iyy, Izz.
          The products of inertia are denoted by Ixy, Ixz, Iyz.
          The matrix of inertia is returned in the central coordinate
          system (G, Gx, Gy, Gz) where G is the centre of mass of the
          system and Gx, Gy, Gz the directions parallel to the X(1,0,0)
          Y(0,1,0) Z(0,0,1) directions of the absolute cartesian
          coordinate system.
      - StaticMoments: Final[object]
        doc:
          Returns Ix, Iy, Iz, the static moments of inertia of the
          current system; i.e. the moments of inertia about the
          three axes of the Cartesian coordinate system.
      - PrincipalProperties: Final[Dict[str, float]]
        doc:
          Computes the principal properties of inertia of the current system.
          There is always a set of axes for which the products
          of inertia of a geometric system are equal to 0; i.e. the
          matrix of inertia of the system is diagonal. These axes
          are the principal axes of inertia. Their origin is
          coincident with the center of mass of the system. The
          associated moments are called the principal moments of inertia.
          This function computes the eigen values and the
          eigen vectors of the matrix of inertia of the system.
      - OuterShell: Final[TopoShape]
        doc:
          Returns the outer most shell of this solid or an null
          shape if the solid has no shells
    methods:
      @constmethod
      - def getMomentOfInertia(self, point: Vector, direction: Vector, /) -> float
        doc:
          computes the moment of inertia of the material system about the axis A.
          getMomentOfInertia(point,direction) -> Float
      @constmethod
      - def getRadiusOfGyration(self, point: Vector, direction: Vector, /) -> float
        doc:
          Returns the radius of gyration of the current system about the axis A.
          getRadiusOfGyration(point,direction) -> Float
      @overload
      @constmethod
      - def offsetFaces(self, facesTuple: Tuple[TopoShape, ...], offset: float, /) -> TopoShape
      @overload
      @constmethod
      - def offsetFaces(self, facesDict: Dict[TopoShape, float], /) -> TopoShape
      @constmethod
      - def offsetFaces(self, *args, **kwargs) -> TopoShape
        doc:
          Extrude single faces of the solid.
          offsetFaces(facesTuple, offset) -> Solid
          or
          offsetFaces(dict) -> Solid
          --
          Example:
          solid.offsetFaces((solid.Faces[0],solid.Faces[1]), 1.5)
        
          solid.offsetFaces({solid.Faces[0]:1.0,solid.Faces[1]:2.0})
```

```text theme={null}
MODULE Mod/Part/App/TopoShapeVertex.pyi
classes:
  class TopoShapeVertex(TopoShape)
    doc:
      TopoShapeVertex is the OpenCasCade topological vertex wrapper
    attributes:
      - X: Final[float]
        doc:
          X component of this Vertex.
      - Y: Final[float]
        doc:
          Y component of this Vertex.
      - Z: Final[float]
        doc:
          Z component of this Vertex.
      - Point: Final[Vector]
        doc:
          Position of this Vertex as a Vector
      - Tolerance: float
        doc:
          Set or get the tolerance of the vertex
    methods:
      @overload
      - def __init__(self, x: float=..., y: float=..., z: float=..., /) -> None
      @overload
      - def __init__(self, coordinates: Vector, /) -> None
      @overload
      - def __init__(self, coordinates: tuple[float, float, float], /) -> None
      @overload
      - def __init__(self, point: Point, /) -> None
      @overload
      - def __init__(self, shape: TopoShape, /) -> None
```

```text theme={null}
MODULE Mod/Part/App/TopoShapeWire.pyi
classes:
  class TopoShapeWire(TopoShape)
    doc:
      TopoShapeWire is the OpenCasCade topological wire wrapper
    
      DeveloperDocu: TopoShapeWire is the OpenCasCade topological wire wrapper
    attributes:
      - Mass: Final[object]
        doc:
          Returns the mass of the current system.
      - CenterOfMass: Final[object]
        doc:
          Returns the center of mass of the current system.
          If the gravitational field is uniform, it is the center of gravity.
          The coordinates returned for the center of mass are expressed in the
          absolute Cartesian coordinate system.
      - MatrixOfInertia: Final[object]
        doc:
          Returns the matrix of inertia. It is a symmetrical matrix.
          The coefficients of the matrix are the quadratic moments of
          inertia.
        
          | Ixx Ixy Ixz 0 |
          | Ixy Iyy Iyz 0 |
          | Ixz Iyz Izz 0 |
          | 0   0   0   1 |
        
          The moments of inertia are denoted by Ixx, Iyy, Izz.
          The products of inertia are denoted by Ixy, Ixz, Iyz.
          The matrix of inertia is returned in the central coordinate
          system (G, Gx, Gy, Gz) where G is the centre of mass of the
          system and Gx, Gy, Gz the directions parallel to the X(1,0,0)
          Y(0,1,0) Z(0,0,1) directions of the absolute cartesian
          coordinate system.
      - StaticMoments: Final[object]
        doc:
          Returns Ix, Iy, Iz, the static moments of inertia of the
          current system; i.e. the moments of inertia about the
          three axes of the Cartesian coordinate system.
      - PrincipalProperties: Final[Dict]
        doc:
          Computes the principal properties of inertia of the current system.
          There is always a set of axes for which the products
          of inertia of a geometric system are equal to 0; i.e. the
          matrix of inertia of the system is diagonal. These axes
          are the principal axes of inertia. Their origin is
          coincident with the center of mass of the system. The
          associated moments are called the principal moments of inertia.
          This function computes the eigen values and the
          eigen vectors of the matrix of inertia of the system.
      - OrderedEdges: Final[List]
        doc:
          List of ordered edges in this shape.
      - Continuity: Final[str]
        doc:
          Returns the continuity
      - OrderedVertexes: Final[List]
        doc:
          List of ordered vertexes in this shape.
    methods:
      @overload
      - def __init__(self) -> None
      @overload
      - def __init__(self, shape: TopoShape, /) -> None
      @overload
      - def __init__(self, shapes: Sequence[TopoShape], /) -> None
      @constmethod
      - def makeOffset(self) -> object
        doc:
          Offset the shape by a given amount. DEPRECATED - use makeOffset2D instead.
      - def add(self, edge: object, /) -> None
        doc:
          Add an edge to the wire
          add(edge)
      - def fixWire(self, face: Optional[object]=None, tolerance: Optional[float]=None, /) -> None
        doc:
          Fix wire
          fixWire([face, tolerance])
          --
          A face and a tolerance can optionally be supplied to the algorithm:
      @constmethod
      - def makeHomogenousWires(self, wire: object, /) -> object
        doc:
          Make this and the given wire homogeneous to have the same number of edges
          makeHomogenousWires(wire) -> Wire
      @constmethod
      - def makePipe(self, profile: object, /) -> object
        doc:
          Make a pipe by sweeping along a wire.
          makePipe(profile) -> Shape
      @constmethod
      - def makePipeShell(self, shapeList: List[object], isSolid: bool=False, isFrenet: bool=False, transition: int=0, /) -> object
        doc:
          Make a loft defined by a list of profiles along a wire.
          makePipeShell(shapeList,[isSolid=False,isFrenet=False,transition=0]) -> Shape
          --
          Transition can be 0 (default), 1 (right corners) or 2 (rounded corners).
      @constmethod
      - def makeEvolved(self, Profile: TopoShape, Join: int, *, AxeProf: bool, Solid: bool, ProfOnSpine: bool, Tolerance: float) -> TopoShape
        doc:
          Profile along the spine
      @constmethod
      - def approximate(self, Tol2d: float=None, Tol3d: float=0.0001, MaxSegments: int=10, MaxDegree: int=3) -> object
        doc:
          Approximate B-Spline-curve from this wire
          approximate([Tol2d,Tol3d=1e-4,MaxSegments=10,MaxDegree=3]) -> BSpline
      @overload
      @constmethod
      - def discretize(self, Number: int) -> List[object]
        doc:
          discretize(Number=n) -> list
      @overload
      @constmethod
      - def discretize(self, QuasiNumber: int) -> List[object]
        doc:
          discretize(QuasiNumber=n) -> list
      @overload
      @constmethod
      - def discretize(self, Distance: float) -> List[object]
        doc:
          discretize(Distance=d) -> list
      @overload
      @constmethod
      - def discretize(self, Deflection: float) -> List[object]
        doc:
          discretize(Deflection=d) -> list
      @overload
      @constmethod
      - def discretize(self, QuasiDeflection: float) -> List[object]
        doc:
          discretize(QuasiDeflection=d) -> list
      @overload
      @constmethod
      - def discretize(self, Angular: float, Curvature: float, Minimum: int=2) -> List[object]
        doc:
          discretize(Angular=a,Curvature=c,[Minimum=m]) -> list
      @constmethod
      - def discretize(self, **kwargs) -> List[object]
        doc:
          Discretizes the wire and returns a list of points.
          discretize(kwargs) -> list
          --
          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 wire
          discretize(QuasiDeflection=d) => gives a list of points with a maximum deflection 'd' to the wire (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 wire.
        
          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 float
          then the behaviour is as if using the keyword 'Distance'.
        
          Example:
        
          import Part
          V=App.Vector
        
          e1=Part.makeCircle(5,V(0,0,0),V(0,0,1),0,180)
          e2=Part.makeCircle(5,V(10,0,0),V(0,0,1),180,360)
          w=Part.Wire([e1,e2])
        
          p=w.discretize(Number=50)
          s=Part.Compound([Part.Vertex(i) for i in p])
          Part.show(s)
        
        
          p=w.discretize(Angular=0.09,Curvature=0.01,Minimum=100)
          s=Part.Compound([Part.Vertex(i) for i in p])
          Part.show(s)
```

```text theme={null}
MODULE Mod/Part/App/Toroid.pyi
classes:
  class Toroid(GeometrySurface)
    doc:
      Describes a toroid in 3D space
    attributes:
      - MajorRadius: float
        doc:
          The major radius of the toroid.
      - MinorRadius: float
        doc:
          The minor radius of the toroid.
      - Center: Vector
        doc:
          Center of the toroid.
      - Axis: Vector
        doc:
          The axis direction of the toroid
      - Area: Final[float]
        doc:
          Compute the area of the toroid.
      - Volume: Final[float]
        doc:
          Compute the volume of the toroid.
```

```text theme={null}
MODULE Mod/Part/App/TrimmedCurve.pyi
classes:
  class TrimmedCurve(BoundedCurve)
    doc:
      The abstract class TrimmedCurve is the root class of all trimmed curve objects.
    methods:
      - def setParameterRange(self, first: float, last: float, /) -> None
        doc:
          Re-trims this curve to the provided parameter range ([Float=First, Float=Last])
```

```text theme={null}
MODULE Mod/Part/Gui/ViewProviderPartExt.pyi
classes:
  class ViewProviderPartExt(ViewProviderGeometryObject)
    doc:
      This is the ViewProvider geometry class
```

```text theme={null}
MODULE Mod/PartDesign/App/Body.pyi
classes:
  class Body(BodyBase)
    doc:
      PartDesign body class
    attributes:
      - VisibleFeature: Final[object]
        doc:
          Return the visible feature of this body
    methods:
      - def insertObject(self, feature: object, target: object, after: bool=False, /) -> None
        doc:
          Insert the feature into the body after the given feature.
        
          @param feature  The feature to insert into the body
          @param target   The feature relative which one should be inserted the given.
          If target is NULL than insert into the end if where is InsertBefore
          and into the begin if where is InsertAfter.
          @param after    if true insert the feature after the target. Default is false.
        
          @note the method doesn't modify the Tip unlike addObject()
```

```text theme={null}
MODULE Mod/PartDesign/App/Feature.pyi
classes:
  class Feature(PartFeature)
    doc:
      This is the father of all PartDesign object classes
    methods:
      @overload
      - def getBaseObject(self) -> Optional[object]
        doc:
          getBaseObject: returns feature this one fuses itself to, or None. Normally, this should be the same as BaseFeature property, except for legacy workflow. In legacy workflow, it will look up the support of referenced sketch.
      - def getBaseObject(self) -> Optional[object]
        doc:
          getBaseObject: returns feature this one fuses itself to, or None. Normally, this should be the same as BaseFeature property, except for legacy workflow. In legacy workflow, it will look up the support of referenced sketch.
```

```text theme={null}
MODULE Mod/PartDesign/Gui/ViewProvider.pyi
classes:
  class ViewProvider(ViewProviderPartExt)
    doc:
      This is the father of all PartDesign ViewProvider classes
    methods:
      - def setBodyMode(self, mode: bool, /) -> None
        doc:
          body mode means that the object is part of a body
          and that the body is used to set the visual properties, not the features. Hence
          setting body mode to true will hide most viewprovider properties.
      - def makeTemporaryVisible(self, visible: bool, /) -> None
        doc:
          makes this viewprovider visible in the
          scene graph without changing any properties, not the visibility one and also not
          the display mode. This can be used to show the shape of this viewprovider from
          other viewproviders without doing anything to the document and properties.
```

```text theme={null}
MODULE Mod/Points/App/Points.pyi
classes:
  class Points(object)
    doc:
      Points() -- Create an empty points object.
    
      This class allows one to manipulate the Points object by adding new points, deleting facets, importing from an STL file,
      transforming and much more.
    attributes:
      - CountPoints: Final[int]
        doc:
          Return the number of vertices of the points object.
      - Points: Final[list]
        doc:
          A collection of points
          With this attribute it is possible to get access to the points of the object
        
          for p in pnt.Points:
          print p
    methods:
      @constmethod
      - def copy(self) -> Any
        doc:
          Create a copy of this points object
      - def read(self) -> Any
        doc:
          Read in a points object from file.
      @constmethod
      - def write(self) -> Any
        doc:
          Write the points object into file.
      @constmethod
      - def writeInventor(self) -> Any
        doc:
          Write the points in OpenInventor format to a string.
      - def addPoints(self) -> Any
        doc:
          add one or more (list of) points to the object
      @constmethod
      - def fromSegment(self) -> Any
        doc:
          Get a new point object from a given segment
      @constmethod
      - def fromValid(self) -> Any
        doc:
          Get a new point object from points with valid coordinates (i.e. that are not NaN)
```

```text theme={null}
MODULE Mod/Sketcher/App/Constraint.pyi
classes:
  class Constraint(Persistence)
    doc:
      With this object you can handle sketches
    attributes:
      - Type: Final[str]
        doc:
          Get the constraint type
      - First: int
        doc:
          First geometry index the Constraint refers to
      - FirstPos: int
        doc:
          Position of first geometry index the Constraint refers to
      - Second: int
        doc:
          Second geometry index the Constraint refers to
      - SecondPos: int
        doc:
          Position of second geometry index the Constraint refers to
      - Third: int
        doc:
          Third geometry index the Constraint refers to
      - ThirdPos: int
        doc:
          Position of third geometry index the Constraint refers to
      - Value: Final[float]
        doc:
          Value of the Constraint
      - Name: str
        doc:
          Name of the constraint
      - Driving: Final[bool]
        doc:
          Driving Constraint
      - InVirtualSpace: Final[bool]
        doc:
          Constraint in virtual space
      - IsActive: Final[bool]
        doc:
          Returns whether the constraint active (enforced) or not
      - LabelDistance: Final[float]
        doc:
          Label distance
      - LabelPosition: Final[float]
        doc:
          Label position
```

```text theme={null}
MODULE Mod/Sketcher/App/ExternalGeometryExtension.pyi
classes:
  class ExternalGeometryExtension(GeometryExtension)
    doc:
      Describes a ExternalGeometryExtension
    attributes:
      - Ref: str
        doc:
          Returns the reference string of this external geometry.
    methods:
      @constmethod
      - def testFlag(self) -> bool
        doc:
          Returns a boolean indicating whether the given bit is set.
      - def setFlag(self) -> None
        doc:
          Sets the given bit to true/false.
```

```text theme={null}
MODULE Mod/Sketcher/App/ExternalGeometryFacade.pyi
classes:
  class ExternalGeometryFacade(BaseClass)
    doc:
      Describes a GeometryFacade
    attributes:
      - Ref: str
        doc:
          Returns the reference string of this external geometry.
      - Id: int
        doc:
          Sets/returns the Internal Alignment Type of the Geometry.
      - Construction: bool
        doc:
          Sets/returns this geometry as a construction one, which will not be part of a later built shape.
      - GeometryLayerId: int
        doc:
          Returns the Id of the geometry Layer in which the geometry is located.
      - InternalType: str
        doc:
          Sets/returns the Internal Alignment Type of the Geometry.
      - Blocked: bool
        doc:
          Sets/returns whether the geometry is blocked or not.
      - Tag: Final[str]
        doc:
          Gives the tag of the geometry as string.
      - Geometry: object
        doc:
          Returns the underlying geometry object.
    methods:
      @constmethod
      - def testFlag(self) -> bool
        doc:
          Returns a boolean indicating whether the given bit is set.
      - def setFlag(self) -> None
        doc:
          Sets the given bit to true/false.
      - def mirror(self) -> None
        doc:
          Performs the symmetrical transformation of this geometric object
      - def rotate(self) -> None
        doc:
          Rotates this geometric object at angle Ang (in radians) about axis
      - def scale(self) -> None
        doc:
          Applies a scaling transformation on this geometric object with a center and scaling factor
      - def transform(self) -> None
        doc:
          Applies a transformation to this geometric object
      - def translate(self) -> None
        doc:
          Translates this geometric object
      @constmethod
      - def hasExtensionOfType(self) -> bool
        doc:
          Returns a boolean indicating whether a geometry extension of the type indicated as a string exists.
      @constmethod
      - def hasExtensionOfName(self) -> bool
        doc:
          Returns a boolean indicating whether a geometry extension with the name indicated as a string exists.
      @constmethod
      - def getExtensionOfType(self) -> object
        doc:
          Gets the first geometry extension of the type indicated by the string.
      @constmethod
      - def getExtensionOfName(self) -> object
        doc:
          Gets the first geometry extension of the name indicated by the string.
      - def setExtension(self) -> None
        doc:
          Sets a geometry extension of the indicated type.
      - def deleteExtensionOfType(self) -> None
        doc:
          Deletes all extensions of the indicated type.
      - def deleteExtensionOfName(self) -> None
        doc:
          Deletes all extensions of the indicated name.
      @constmethod
      - def getExtensions(self) -> List[object]
        doc:
          Returns a list with information about the geometry extensions.
```

```text theme={null}
MODULE Mod/Sketcher/App/GeometryFacade.pyi
classes:
  class GeometryFacade(BaseClass)
    doc:
      Describes a GeometryFacade
    attributes:
      - Id: int
        doc:
          Sets/returns the Id of the SketchGeometryExtension.
      - InternalType: str
        doc:
          Sets/returns the Internal Alignment Type of the Geometry.
      - Blocked: bool
        doc:
          Sets/returns whether the geometry is blocked or not.
      - Construction: bool
        doc:
          Sets/returns this geometry as a construction one, which will not be part of a later built shape.
      - GeometryLayerId: int
        doc:
          Returns the Id of the geometry Layer in which the geometry is located.
      - Tag: Final[str]
        doc:
          Gives the tag of the geometry as string.
      - Geometry: object
        doc:
          Returns the underlying geometry object.
    methods:
      @constmethod
      - def testGeometryMode(self) -> bool
        doc:
          Returns a boolean indicating whether the given bit is set.
      - def setGeometryMode(self) -> None
        doc:
          Sets the given bit to true/false.
      - def mirror(self) -> None
        doc:
          Performs the symmetrical transformation of this geometric object
      - def rotate(self, Ang: float, axis: Axis, /) -> None
        doc:
          Rotates this geometric object at angle Ang (in radians) about axis
      - def scale(self, center: CoordinateSystem, factor: float, /) -> None
        doc:
          Applies a scaling transformation on this geometric object with a center and scaling factor
      - def transform(self, transformation: Placement, /) -> None
        doc:
          Applies a transformation to this geometric object
      - def translate(self, offset: Vector, /) -> None
        doc:
          Translates this geometric object
      @constmethod
      - def hasExtensionOfType(self, type_str: str, /) -> bool
        doc:
          Returns a boolean indicating whether a geometry extension of the type indicated as a string exists.
      @constmethod
      - def hasExtensionOfName(self, name: str, /) -> bool
        doc:
          Returns a boolean indicating whether a geometry extension with the name indicated as a string exists.
      @constmethod
      - def getExtensionOfType(self, type_str: str, /) -> DocumentObjectExtension
        doc:
          Gets the first geometry extension of the type indicated by the string.
      @constmethod
      - def getExtensionOfName(self, name: str, /) -> DocumentObjectExtension
        doc:
          Gets the first geometry extension of the name indicated by the string.
      - def setExtension(self, extension: DocumentObjectExtension, /) -> None
        doc:
          Sets a geometry extension of the indicated type.
      - def deleteExtensionOfType(self, type_str: str, /) -> None
        doc:
          Deletes all extensions of the indicated type.
      - def deleteExtensionOfName(self, name: str, /) -> None
        doc:
          Deletes all extensions of the indicated name.
      @constmethod
      - def getExtensions(self) -> List[DocumentObjectExtension]
        doc:
          Returns a list with information about the geometry extensions.
```

```text theme={null}
MODULE Mod/Sketcher/App/Sketch.pyi
classes:
  class Sketch(Persistence)
    doc:
      With this objects you can handle constraint sketches
    attributes:
      - Constraint: Final[int]
        doc:
          0: exactly constraint, -1 under-constraint, 1 over-constraint
      - Conflicts: Final[Tuple]
        doc:
          Tuple of conflicting constraints
      - Redundancies: Final[Tuple]
        doc:
          Tuple of redundant constraints
      - Geometries: Final[Tuple]
        doc:
          Tuple of all geometric elements in this sketch
      - Shape: Final[object]
        doc:
          Resulting shape from the sketch geometry
    methods:
      - def solve(self) -> None
        doc:
          Solve the actual set of geometry and constraints
      - def addGeometry(self) -> None
        doc:
          Add a geometric object to the sketch
      - def addConstraint(self) -> None
        doc:
          Add an constraint object to the sketch
      - def clear(self) -> None
        doc:
          Clear the sketch
      - def moveGeometry(self, GeoIndex: int, PointPos: Vector, Vector: Vector, relative: bool=False, /) -> None
        doc:
          Move a given point (or curve).
          to another location.
          It moves the specified point (or curve) to the given location by adding some
          temporary weak constraints and solve the sketch.
          This method is mostly used to allow the user to drag some portions of the sketch
          in real time by e.g. the mouse and it works only for underconstrained portions of
          the sketch.
          The argument 'relative', if present, states if the new location is given
          relatively to the current one.
```

```text theme={null}
MODULE Mod/Sketcher/App/SketchGeometryExtension.pyi
classes:
  class SketchGeometryExtension(GeometryExtension)
    doc:
      Describes a SketchGeometryExtension
    attributes:
      - Id: int
        doc:
          Returns the Id of the SketchGeometryExtension.
      - InternalType: str
        doc:
          Returns the Id of the SketchGeometryExtension.
      - Blocked: bool
        doc:
          Sets/returns whether the geometry is blocked or not.
      - Construction: bool
        doc:
          Sets/returns this geometry as a construction one, which will not be part of a later built shape.
      - GeometryLayerId: int
        doc:
          Returns the Id of the geometry Layer in which the geometry is located.
    methods:
      @constmethod
      - def testGeometryMode(self) -> bool
        doc:
          Returns a boolean indicating whether the given bit is set.
      - def setGeometryMode(self) -> None
        doc:
          Sets the given bit to true/false.
```

```text theme={null}
MODULE Mod/Sketcher/App/SketchObject.pyi
classes:
  class SketchObject(Part2DObject)
    doc:
      Represents a sketch object
    attributes:
      - MissingPointOnPointConstraints: List
        doc:
          Returns a list of (First FirstPos Second SecondPos Type) tuples with all the detected endpoint constraints.
      - MissingVerticalHorizontalConstraints: List
        doc:
          Returns a list of (First FirstPos Second SecondPos Type) tuples with all the detected vertical/horizontal constraints.
      - MissingLineEqualityConstraints: List
        doc:
          Returns a list of (First FirstPos Second SecondPos) tuples with all the detected line segment equality constraints.
      - MissingRadiusConstraints: List
        doc:
          Returns a list of (First FirstPos Second SecondPos) tuples with all the detected radius constraints.
      - OpenVertices: Final[List]
        doc:
          Returns a list of vertices positions.
      - ConstraintCount: Final[int]
        doc:
          Number of Constraints in this sketch
      - GeometryCount: Final[int]
        doc:
          Number of geometric objects in this sketch
      - AxisCount: Final[int]
        doc:
          Return the number of construction lines in the sketch which can be used as axes
      - GeometryFacadeList: List
        doc:
          Return a list of GeometryFacade objects corresponding to the PropertyGeometryList
      - DoF: Final[int]
        doc:
          Return the DoFs of the current solved sketch
      - ConflictingConstraints: Final[List]
        doc:
          Return a list of integers indicating the constraints detected as conflicting
      - RedundantConstraints: Final[List]
        doc:
          Return a list of integers indicating the constraints detected as redundant
      - PartiallyRedundantConstraints: Final[List]
        doc:
          Return a list of integers indicating the constraints detected as partially redundant
      - MalformedConstraints: Final[List]
        doc:
          Return a list of integers indicating the constraints detected as malformed
    methods:
      - def solve(self) -> int
        doc:
          Solve the sketch and update the geometry.
        
          solve()
        
          Returns:
          0 in case of success, otherwise the following codes in this order of
          priority:
          -4 if over-constrained,
          -3 if conflicting constraints,
          -5 if malformed constraints
          -1 if solver error,
          -2 if redundant constraints.
      @overload
      - def addGeometry(self, geo: Geometry, isConstruction: bool=False, /) -> int
      @overload
      - def addGeometry(self, geo: List[Geometry], isConstruction: bool=False, /) -> Tuple[int, ...]
      - def addGeometry(self, geo: Union[Geometry, List[Geometry]], isConstruction: bool=False, /) -> Union[int, Tuple[int, ...]]
        doc:
          Add geometric objects to the sketch.
        
          addGeometry(geo:Geometry, isConstruction=False) -> int
          Add a single geometric object to the sketch.
        
          Args:
          geo: The geometry to add. e.g. a Part.LineSegement
          isConstruction: Whether the added geometry is a "construction geometry".
          Defaults to `False`, i.e. by omitting, a regular geometry is added.
        
          Returns:
          The zero-based index of the newly added geometry.
        
          addGeometry(geo:List(Geometry), isConstruction=False) -> Tuple(int)
          Add many geometric objects to the sketch.
        
          Args:
          geo: The geometry to add.
          isConstruction: see above.
        
          Returns:
          A tuple of zero-based indices of all newly added geometry.
      - def delGeometry(self, geoId: int, noSolve: bool, /) -> None
        doc:
          Delete a geometric object from the sketch.
        
          delGeometry(geoId:int)
        
          Args:
          geoId: The zero-based index of the geometry to delete.
          Any internal alignment geometry thereof will be deleted, too.
      - def delGeometries(self, geoIds: List[int], noSolve: bool, /) -> None
        doc:
          Delete a list of geometric objects from the sketch.
        
          delGeometries(geoIds:List(int))
        
          Args:
          geoId: A list of zero-based indices of the geometry to delete.
          Any internal alignment geometry thereof will be deleted, too.
      - def deleteAllGeometry(self, noSolve: bool, /) -> None
        doc:
          Delete all the geometry objects from the sketch, except external geometry.
        
          deleteAllGeometry()
      - def detectDegeneratedGeometries(self, tolerance: float, /) -> int
        doc:
          Detect degenerated geometries. A curve geometry is considered degenerated
          if the parameter range is less than the tolerance.
        
          detectDegeneratedGeometries(tolerance:float)
        
          Args:
          tolerance: The tolerance to check the parameter range of a curve.
        
          Returns:
          The number of degenerated geometries.
      - def removeDegeneratedGeometries(self, tolerance: float, /) -> int
        doc:
          Remove degenerated geometries. A curve geometry is considered degenerated
          if the parameter range is less than the tolerance.
        
          removeDegeneratedGeometries(tolerance:float)
        
          Args:
          tolerance: The tolerance to check the parameter range of a curve.
        
          Returns:
          The number of degenerated geometries.
      - def deleteAllConstraints(self) -> None
        doc:
          Delete all the constraints from the sketch.
        
          deleteAllConstraints()
      - def toggleConstruction(self, geoId: int, /) -> None
        doc:
          Toggles a geometry between regular and construction.
        
          toggleConstruction(geoId:int)
        
          Args:
          geoId: The zero-based index of the geometry to toggle.
      - def setConstruction(self, geoId: int, state: bool, /) -> None
        doc:
          Set construction mode of a geometry.
        
          setConstruction(geoId:int, state:bool)
        
          Args:
          geoId: The zero-based index of the geometry to configure.
          state: `True` configures the geometry to "construction geometry",
          `False` configures it to regular geometry.
      - def getConstruction(self, geoId: int, /) -> bool
        doc:
          Determine whether the given geometry is a "construction geometry".
        
          getConstruction(geoId:int)
        
          Args:
          geoId: The zero-based index of the geometry to query.
        
          Returns:
          `True` if the geometry is "construction geometry" and
          `False` if it s a regular geometry.
      @overload
      - def addConstraint(self, constraint: Constraint, /) -> int
      @overload
      - def addConstraint(self, constraints: List[Constraint], /) -> Tuple[int, ...]
      - def addConstraint(self, constraint: Union[Constraint, List[Constraint]], /) -> Union[int, Tuple[int, ...]]
        doc:
          Add constraints to the sketch.
        
          addConstraint(constraint:Constraint) -> int
          Add a single constraint to the sketch and solves it.
        
          Returns:
          The zero-based index of the newly added constraint.
        
          addConstraint(constraints:List(Constraint)) -> Tuple(int)
          Add many constraints to the sketch without solving.
        
          Returns:
          A tuple of zero-based indices of all newly added constraints.
      - def delConstraint(self, constraintIndex: int, noSolve: bool, /) -> None
        doc:
          Delete a constraint from the sketch.
        
          delConstraint(constraintIndex:int)
        
          Args:
          constraintIndex: The zero-based index of the constraint to delete.
      - def delConstraints(self, constraintIndices: List[int], updateGeometry: bool, noSolve: bool, /) -> None
        doc:
          Delete multiple constraints from a sketch
        
          delConstraints(constraintIndices: List[int], updateGeometry: bool)
        
          Args:
          constraintIndices: The zero-based indices of the constraints to delete
          updateGeometry: Whether to update the geometry after solve
      - def renameConstraint(self, constraintIndex: int, name: str, /) -> None
        doc:
          Rename a constraint in the sketch.
        
          renameConstraint(constraintIndex:int, name:str)
        
          Args:
          constraintIndex: The zero-based index of the constraint to rename.
          name: The new name for the constraint.
          An empty string makes the constraint "unnamed" again.
      @constmethod
      - def getIndexByName(self, name: str, /) -> int
        doc:
          Get the index of a constraint by name.
        
          getIndexByName(name:str)
        
          Args:
          name: The name for the constraint to look up.
          If there is no such constraint an exception is raised.
      - def setAllowUnaligned(self, state: bool, /) -> None
        doc:
          Set whether unaligned geometry is allowed in the sketch.
        
          setAllowUnaligned(state:bool)
        
          Args:
          state: `True` allows unaligned geometry,
          `False` enforces aligned geometry.
      - def carbonCopy(self, objName: str, asConstruction: bool=True, /) -> None
        doc:
          Copy another sketch's geometry and constraints into this sketch.
        
          carbonCopy(objName:str, asConstruction=True)
        
          Args:
          ObjName: The name of the sketch object to copy from.
          asConstruction: Whether to copy the geometry as "construction geometry".
      - def addExternal(self, objName: str, subName: str, defining: bool=False, intersection: bool=False, /) -> None
        doc:
          Add a link to an external geometry.
        
          addExternal(objName:str, subName:str, defining:bool=False, intersection:bool=False)
        
          Args:
          objName: The name of the document object to reference.
          subName: The name of the sub-element of the object's shape to link as
          "external geometry".
          defining: Should the external edges be defining or construction?
          intersection: Should the external edges be projections or intersections?
      - def delExternal(self, extGeoId: int, /) -> None
        doc:
          Delete an external geometry link from the sketch.
        
          delExternal(extGeoId:int)
        
          Args:
          extGeoId: The zero-based index of the external geometry to remove.
      - def delExternals(self, extGeoIds: List[int], /) -> None
        doc:
          Delete a list of external geometry links from the sketch.
        
          delExternals(extGeoIds:List(int))
        
          Args:
          extGeoIds: A list of zero-based indices of the external geometry to remove.
      @overload
      - def delConstraintOnPoint(self, vertexId: int, /) -> None
      @overload
      - def delConstraintOnPoint(self, geoId: int, pointPos: int, /) -> None
      - def delConstraintOnPoint(self, *args: int) -> None
        doc:
          Delete coincident constraints associated with a sketch point.
        
          delConstraintOnPoint(vertexId:int)
        
          Args:
          vertexId: A zero-based index of the shape's vertices.
        
          delConstraintOnPoint(geoId:int, pointPos:int)
        
          Args:
          geoId: The zero-based index of the geometry that contains the point.
          pointPos: Enum denoting which point on the geometry is meant:
          1: the start of a line or bounded curve.
          2: the end of a line or bounded curve.
          3: the center of a circle or ellipse.
      @no_args
      - def delConstraintsToExternal(self) -> None
        doc:
          Deletes all constraints referencing an external geometry.
      - def setDatum(self, constraint: Union[int, str], value: Union[float, Quantity], /) -> None
        doc:
          Set the value of a datum constraint (e.g. Distance or Angle)
        
          setDatum(constraint, value)
        
          Args:
          constraint (int or str): The index or name of the constraint to set.
          value (float or Quantity): The value to set for the constraint. When
          using floats, values for linear dimensions are interpreted as
          millimeter, angular ones as radians.
      - def setTextAndFont(self, constraint: int, text: str, font: str, isheight: bool, isConstruction: bool) -> None
        doc:
          Set the text and font of a Text constraint.
        
          setTextAndFont(constraint: int, text: str, font: str, isHeight: bool, isConstruction: bool)
        
          Args:
          constraint: The index of the Text constraint.
          text: The text string to display.
          font: The full path to the font file (.ttf, .otf, etc.).
          isHeight: Is the line handle of the group the height of the text.
          isConstruction: Are text geometry construction of not.
      @constmethod
      - def getDatum(self, constraint: Union[int, str], /) -> Quantity
        doc:
          Get the value of a datum constraint (e.g. Distance or Angle)
        
          getDatum(constraint) -> Quantity
        
          Args:
          constraint (int or str): The index or name of the constraint to query.
        
          Returns:
          The value of the constraint.
      - def setDriving(self, constraintIndex: int, state: bool, /) -> None
        doc:
          Set the Driving status of a datum constraint.
        
          setDriving(constraintIndex:int, state:bool)
        
          Args:
          constraintIndex: The zero-based index of the constraint to configure.
          state: `True` sets the constraint to driving,
          `False` configures it as non-driving, i.e. reference.
      - def setDatumsDriving(self, state: bool, /) -> None
        doc:
          Set the Driving status of all datum constraints.
        
          setDatumsDriving(state:bool)
        
          Args:
          state: `True` set all datum constraints to driving,
          `False` configures them as non-driving, i.e. reference.
      - def moveDatumsToEnd(self) -> None
        doc:
          Moves all datum constraints to the end of the constraint list.
        
          moveDatumsToEnd()
        
          Warning: This method reorders the constraint indices. Previously held
          numeric references to constraints may reference different constraints
          after this operation.
      @constmethod
      - def getDriving(self, constraintIndex: int, /) -> bool
        doc:
          Get the Driving status of a datum constraint.
        
          getDriving(constraintIndex:int)
        
          Args:
          constraintIndex: The zero-based index of the constraint to query.
        
          Returns:
          `True` if the constraint is driving,
          `False` if it is non-driving, i.e. reference.
      - def toggleDriving(self, constraintIndex: int, /) -> None
        doc:
          Toggle the Driving status of a datum constraint.
        
          toggleDriving(constraintIndex:int)
        
          Args:
          constraintIndex: The zero-based index of the constraint to toggle.
      - def setVirtualSpace(self) -> None
        doc:
          Set the VirtualSpace status of a constraint
      - def setVisibility(self) -> None
        doc:
          Set the visibility of a constraint
      - def getVirtualSpace(self) -> bool
        doc:
          Get the VirtualSpace status of a constraint
      - def toggleVirtualSpace(self) -> None
        doc:
          Toggle the VirtualSpace status of a constraint
      - def setActive(self, constraintIndex: int, state: bool, /) -> None
        doc:
          Activates or deactivates a constraint (enforce it or not).
        
          setActive(constraintIndex:int, state:bool)
        
          Args:
          constraintIndex: The zero-based index of the constraint to configure.
          state: `True` sets the constraint to active i.e. enforced,
          `False` configures it as inactive, i.e. not enforced.
      @constmethod
      - def getActive(self, constraintIndex: int, /) -> bool
        doc:
          Get whether a constraint is active, i.e. enforced, or not.
        
          getActive(constraintIndex:int)
        
          Args:
          constraintIndex: The zero-based index of the constraint to query.
        
          Returns:
          `True` if the constraint is active, i.e. enforced,
          `False` if it is inactive, i.e. not enforced.
      - def toggleActive(self, constraintIndex: int, /) -> None
        doc:
          Toggle the constraint between active (enforced) and inactive.
        
          toggleActive(constraintIndex:int)
        
          Args:
          constraintIndex: The zero-based index of the constraint to toggle.
      @constmethod
      - def getLabelPosition(self, constraintIndex: int, /) -> float
        doc:
          Get label position of the constraint.
        
          getLabelPosition(constraintIndex:int)
        
          Args:
          constraintIndex: The zero-based index of the constraint to query.
        
          Returns:
          float with the current value.
      - def setLabelPosition(self, constraintIndex: int, value: float, /) -> None
        doc:
          Set label position of the constraint.
        
          setLabelPosition(constraintIndex:int, value:float)
        
          Args:
          constraintIndex: The zero-based index of the constraint to query.
          value: Value of the label position.
      @constmethod
      - def getLabelDistance(self, constraintIndex: int, /) -> float
        doc:
          Get label distance of the constraint.
        
          getLabelDistance(constraintIndex:int)
        
          Args:
          constraintIndex: The zero-based index of the constraint to query.
        
          Returns:
          float with the current value.
      - def setLabelDistance(self, constraintIndex: int, value: float, /) -> None
        doc:
          Set label distance of the constraint.
        
          setLabelDistance(constraintIndex:int, value:float)
        
          Args:
          constraintIndex: The zero-based index of the constraint to query.
          value: Value of the label position.
      - def moveGeometry(self, GeoIndex: int, PointPos: int, Vector: Vector, relative: bool=False, /) -> None
        doc:
          Move a given point (or curve) to another location.
        
          moveGeometry(GeoIndex,PointPos,Vector,[relative])
        
          It moves the specified point (or curve) to the given location by adding some
          temporary weak constraints and solving the sketch.
          This method is mostly used to allow the user to drag some portions of the sketch
          in real time by e.g. the mouse and it works only for underconstrained portions of
          the sketch.
          The argument 'relative', if present, states if the new location is given
          relatively to the current one.
      - def moveGeometries(self, Geos: List[Tuple[int, int]], Vector: Vector, relative: bool=False, /) -> None
        doc:
          Move given points and curves to another location.
        
          moveGeometries(Geos,Vector,[relative])
        
          It moves the specified points and curves to the given location by adding some
          temporary weak constraints and solving the sketch.
          This method is mostly used to allow the user to drag some portions of the sketch
          in real time by e.g. the mouse and it works only for underconstrained portions of
          the sketch.
          The argument 'relative', if present, states if the new location is given
          relatively to the current one. For group dragging this is enforced.
          Geos is a vector of pairs of geoId and posId.
      @constmethod
      - def getPoint(self, GeoIndex: int, PointPos: int, /) -> Vector
        doc:
          Retrieve the vector of a point in the sketch.
        
          getPoint(GeoIndex,PointPos)
      @constmethod
      - def getGeoVertexIndex(self, index: int, /) -> Tuple[int, int]
        doc:
          Retrieve the GeoId and PosId of a point in the sketch.
        
          (geoId, posId) = getGeoVertexIndex(index)
      @constmethod
      - def getAxis(self) -> Axis
        doc:
          Return an axis based on the corresponding construction line
      - def fillet(self) -> None
        doc:
          Create a fillet between two edges or at a point
      - def trim(self) -> None
        doc:
          Trim a curve with a given id at a given reference point
      - def extend(self) -> None
        doc:
          Extend a curve to new start and end positions
      - def split(self) -> None
        doc:
          Split a curve with a given id at a given reference point
      - def join(self) -> None
        doc:
          Join two curves at the given end points
      - def addSymmetric(self) -> None
        doc:
          Add symmetric geometric objects to the sketch with respect to a reference point or line
      - def addCopy(self) -> None
        doc:
          Add a copy of geometric objects to the sketch displaced by a vector3d
      - def addMove(self) -> None
        doc:
          Move the geometric objects in the sketch displaced by a vector3d
      - def addRectangularArray(self) -> None
        doc:
          Add an array of size cols by rows where each element is a copy of the selected geometric objects displaced by a vector3d in the cols direction and by a vector perpendicular to it in the rows direction
      - def removeAxesAlignment(self) -> None
        doc:
          Modifies constraints so that the shape is not forced to be aligned with axes.
      - def ExposeInternalGeometry(self) -> None
        doc:
          Deprecated -- use exposeInternalGeometry
      - def DeleteUnusedInternalGeometry(self) -> None
        doc:
          Deprecated -- use deleteUnusedInternalGeometry
      - def exposeInternalGeometry(self) -> None
        doc:
          Exposes all internal geometry of an object supporting internal geometry
      - def deleteUnusedInternalGeometry(self) -> None
        doc:
          Deletes all unused (not further constrained) internal geometry
      - def convertToNURBS(self) -> None
        doc:
          Approximates the given geometry with a B-spline
      - def increaseBSplineDegree(self) -> None
        doc:
          Increases the given B-spline Degree by a number of degrees
      - def decreaseBSplineDegree(self) -> None
        doc:
          Decreases the given B-spline Degree by a number of degrees by approximating this curve
      - def modifyBSplineKnotMultiplicity(self) -> None
        doc:
          Increases or reduces the given BSpline knot multiplicity
      - def insertBSplineKnot(self) -> None
        doc:
          Inserts a knot into the BSpline at the given param with given multiplicity. If the knot already exists, this increases the knot multiplicity by the given multiplicity.
      - def calculateAngleViaPoint(self, GeoId1: int, GeoId2: int, px: float, py: float, /) -> float
        doc:
          calculateAngleViaPoint(GeoId1, GeoId2, px, py) - calculates angle between
          curves identified by GeoId1 and GeoId2 at point (x,y). The point must be
          on intersection of the curves, otherwise the result may be useless (except
          line-to-line, where (0,0) is OK). Returned value is in radians.
      - def isPointOnCurve(self, GeoIdCurve: int, x: float, y: float, /) -> bool
        doc:
          isPointOnCurve(GeoIdCurve, float x, float y) -> bool - tests if the point (x,y)
          geometrically lies on a curve (e.g. ellipse). It treats lines as infinite,
          arcs as full circles/ellipses/etc.
      - def calculateConstraintError(self, index: int, /) -> float
        doc:
          calculateConstraintError(index) - calculates the error function of the
          constraint identified by its index and returns the signed error value.
          The error value roughly corresponds to by how much the constraint is
          violated. If the constraint internally has more than one error function,
          the returned value is RMS of all errors (sign is lost in this case).
      - def changeConstraintsLocking(self, bLock: bool, /) -> None
        doc:
          changeConstraintsLocking(bLock) - locks or unlocks all tangent and
          perpendicular constraints. (Constraint locking prevents it from
          flipping to another valid configuration, when e.g. external geometry
          is updated from outside.) The sketch solve is not triggered by the
          function, but the SketchObject is touched (a recompute will be
          necessary). The geometry should not be affected by the function.
        
          The bLock argument specifies, what to do. If true, all constraints
          are unlocked and locked again. If false, all tangent and perp.
          constraints are unlocked.
      - def getGeometryWithDependentParameters(self) -> List[Tuple[int, int]]
        doc:
          getGeometryWithDependentParameters - returns a list of geoid posid pairs
          with all the geometry element edges and vertices which the solver regards
          as being dependent on other parameters.
      - def autoconstraint(self) -> None
        doc:
          Automatic sketch constraining algorithm.
      - def detectMissingPointOnPointConstraints(self) -> None
        doc:
          Detects missing Point On Point Constraints. The detect step just identifies possible missing constraints.
          The result may be retrieved or applied using the corresponding Get / Make methods.
      - def analyseMissingPointOnPointCoincident(self) -> None
        doc:
          Analyses the already detected missing Point On Point Constraints to detect endpoint tangency/perpendicular.
          The result may be retrieved or applied using the corresponding Get / Make methods.
      - def detectMissingVerticalHorizontalConstraints(self) -> None
        doc:
          Detects missing Horizontal/Vertical Constraints. The detect step just identifies possible missing constraints.
          The result may be retrieved or applied using the corresponding Get / Make methods.
      - def detectMissingEqualityConstraints(self) -> None
        doc:
          Detects missing Equality Constraints. The detect step just identifies possible missing constraints.
          The result may be retrieved or applied using the corresponding Get / Make methods.
      - def makeMissingPointOnPointCoincident(self, arg: bool, /) -> None
        doc:
          Applies the detected / set Point On Point coincident constraints. If the argument is True, then solving and redundant removal is done after each individual addition.
      - def makeMissingVerticalHorizontal(self, arg: bool, /) -> None
        doc:
          Applies the detected / set Vertical/Horizontal constraints. If the argument is True, then solving and redundant removal is done after each individual addition.
      - def makeMissingEquality(self, arg: bool, /) -> None
        doc:
          Applies the detected / set Equality constraints. If the argument is True, then solving and redundant removal is done after each individual addition.
      @constmethod
      @no_args
      - def evaluateConstraints(self) -> bool
        doc:
          Check for constraints with invalid indexes. Returns True if invalid constraints are found, False otherwise.
      @no_args
      - def validateConstraints(self) -> None
        doc:
          Removes constraints with invalid indexes.
      - def autoRemoveRedundants(self, arg: bool, /) -> None
        doc:
          Removes constraints currently detected as redundant by the solver. If the argument is True, then the geometry is updated after solving.
      - def toPythonCommands(self) -> None
        doc:
          Prints the commands that should be executed to recreate the Geometry and Constraints of the present sketch (excluding any External Geometry).
      - def setGeometryId()
        doc:
          Sets the GeometryId of the SketchGeometryExtension of the geometry with the provided GeoId
      - def setGeometryIds(GeoIdsToIds: List[Tuple[int, int]], /)
        doc:
          Sets the GeometryId of the SketchGeometryExtension of the geometries with the provided GeoIds
          Expects a list of pairs (GeoId, id)
      - def getGeometryId()
        doc:
          Gets the GeometryId of the SketchGeometryExtension of the geometry with the provided GeoId
```

```text theme={null}
MODULE Mod/Sketcher/App/SketchObjectSF.pyi
classes:
  class SketchObjectSF(Part2DObject)
    doc:
      With this objects you can handle sketches
```

```text theme={null}
MODULE Mod/Sketcher/Gui/ViewProviderSketchGeometryExtension.pyi
classes:
  class ViewProviderSketchGeometryExtension(GeometryExtension)
    doc:
      Describes a ViewProviderSketchGeometryExtension
    attributes:
      - VisualLayerId: int
        doc:
          Sets/returns this geometry's Visual Layer Id.
```

```text theme={null}
MODULE Mod/Spreadsheet/App/PropertyColumnWidths.pyi
classes:
  class PropertyColumnWidths(Persistence)
    doc:
      Internal spreadsheet object
```

```text theme={null}
MODULE Mod/Spreadsheet/App/PropertyRowHeights.pyi
classes:
  class PropertyRowHeights(Persistence)
    doc:
      Internal spreadsheet object
```

```text theme={null}
MODULE Mod/Spreadsheet/App/PropertySheet.pyi
classes:
  class PropertySheet(Persistence)
    doc:
      Internal spreadsheet object
    methods:
      @constmethod
      - def keys(self) -> Any
        doc:
          Get all cell names
```

```text theme={null}
MODULE Mod/Spreadsheet/App/Sheet.pyi
classes:
  class Sheet(DocumentObject)
    doc:
      With this object you can manipulate spreadsheets
    methods:
      - def set(self) -> Any
        doc:
          Set data into a cell
      - def get(self) -> Any
        doc:
          Get evaluated cell contents
      - def getContents(self) -> Any
        doc:
          Get cell contents
      - def clear(self) -> Any
        doc:
          Clear a cell
      - def clearAll(self) -> Any
        doc:
          Clear all cells in the spreadsheet
      - def importFile(self) -> Any
        doc:
          Import file into spreadsheet
      - def exportFile(self) -> Any
        doc:
          Export file from spreadsheet
      - def mergeCells(self) -> Any
        doc:
          Merge given cell area into one cell
      - def splitCell(self) -> Any
        doc:
          Split a previously merged cell
      - def insertColumns(self) -> Any
        doc:
          Insert a given number of columns into the spreadsheet.
      - def removeColumns(self) -> Any
        doc:
          Remove a given number of columns from the spreadsheet.
      - def insertRows(self) -> Any
        doc:
          Insert a given number of rows into the spreadsheet.
      - def removeRows(self) -> Any
        doc:
          Remove a given number of rows from the spreadsheet.
      - def setAlignment(self) -> Any
        doc:
          Set alignment of the cell
      - def getAlignment(self) -> Any
        doc:
          Get alignment of the cell
      - def setStyle(self) -> Any
        doc:
          Set style of the cell
      - def getStyle(self) -> Any
        doc:
          Get style of the cell
      - def setDisplayUnit(self) -> Any
        doc:
          Set display unit for cell
      - def setAlias(self) -> Any
        doc:
          Set alias for cell address
      - def getAlias(self) -> Any
        doc:
          Get alias for cell address
      - def getCellFromAlias(self) -> Any
        doc:
          Get cell address given an alias
      - def getDisplayUnit(self) -> Any
        doc:
          Get display unit for cell
      - def setForeground(self) -> Any
        doc:
          Set foreground color of the cell
      - def clearForeground(self) -> Any
        doc:
          Clears foreground color of the cell
      - def getForeground(self) -> Any
        doc:
          Get foreground color of the cell
      - def setBackground(self) -> Any
        doc:
          Set background color of the cell
      - def clearBackground(self) -> Any
        doc:
          Clears background color of the cell
      - def getBackground(self) -> Any
        doc:
          Get background color of the cell
      - def setColumnWidth(self) -> Any
        doc:
          Set given spreadsheet column to given width
      - def getColumnWidth(self) -> Any
        doc:
          Get given spreadsheet column width
      - def setRowHeight(self) -> Any
        doc:
          Set given spreadsheet row to given height
      - def getRowHeight(self) -> Any
        doc:
          Get given spreadsheet row height
      - def touchCells(self, address: str, address_to: str | None=None, /) -> None
        doc:
          touch cells in the given range
      - def recomputeCells(self, address: str, address_to: str | None=None, /) -> Any
        doc:
          Manually recompute cells in the given range with the given order without
          following dependency order.
      - def getUsedCells(self) -> list[str]
        doc:
          Get a list of the names of all cells that are marked as used. These cells may
          or may not have a non-empty string content.
      - def getNonEmptyCells(self) -> list[str]
        doc:
          Get a list of the names of all cells with data in them.
      - def getUsedRange(self) -> tuple[str, str]
        doc:
          Get a the total range of the used cells in a sheet, as a pair of strings
          representing the lowest row and column that are used, and the highest row and
          column that are used (inclusive). Note that the actual first and last cell
          of the block are not necessarily used.
      - def getNonEmptyRange(self) -> tuple[str, str]
        doc:
          Get a the total range of the used cells in a sheet, as a pair of cell addresses
          representing the lowest row and column that contain data, and the highest row and
          column that contain data (inclusive). Note that the actual first and last cell
          of the block do not necessarily contain anything.
```

```text theme={null}
MODULE Mod/Spreadsheet/Gui/ViewProviderSpreadsheet.pyi
classes:
  class ViewProviderSpreadsheet(ViewProviderDocumentObject)
    doc:
      ViewProviderSheet class
    methods:
      - def getView(self) -> Any
        doc:
          Get access to the sheet view
      - def showSheetMdi(self) -> None
        doc:
          Create (if necessary) and switch to the Spreadsheet MDI.
      - def exportAsFile(self) -> None
        doc:
          Export the sheet as a file.
```

```text theme={null}
MODULE Mod/Surface/App/Blending/BlendCurve.pyi
classes:
  class BlendCurve(PyObjectBase)
    doc:
      Create a BlendCurve that interpolate 2 BlendPoints.
      curve = BlendCurve(BlendPoint1, BlendPoint2)
    methods:
      - def compute(self) -> Any
        doc:
          Return the BezierCurve that interpolate the input BlendPoints.
      - def setSize(self) -> Any
        doc:
          Set the tangent size of the blendpoint at given index.
          If relative is true, the size is considered relative to the distance between the two blendpoints.
          myBlendCurve.setSize(idx, size, relative)
```

```text theme={null}
MODULE Mod/Surface/App/Blending/BlendPoint.pyi
classes:
  class BlendPoint(PyObjectBase)
    doc:
      Create BlendPoint from a point and some derivatives.
      myBlendPoint = BlendPoint([Point, D1, D2, ..., DN])
      BlendPoint can also be constructed from an edge
      myBlendPoint = BlendPoint(Edge, parameter = float, continuity = int)
    attributes:
      - Vectors: Final[list]
        doc:
          The list of vectors of this BlendPoint.
    methods:
      @constmethod
      - def getSize(self) -> Any
        doc:
          Return BlendPoint first derivative length.
      - def setSize(self) -> Any
        doc:
          Resizes the BlendPoint vectors,
          by setting the length of the first derivative.
          theBlendPoint.setSize(new_size)
      - def setvectors(self) -> Any
        doc:
          Set the vectors of BlendPoint.
          BlendPoint.setvectors([Point, D1, D2, ..., DN])
```

```text theme={null}
MODULE Mod/TechDraw/App/CenterLine.pyi
classes:
  class CenterLine(PyObjectBase)
    doc:
      CenterLine specifies additional mark up edges in a View
    attributes:
      - Tag: Final[str]
        doc:
          Gives the tag of the CenterLine as string.
      - Type: Final[int]
        doc:
          0 - face, 1 - 2 line, 2 - 2 point.
      - Mode: int
        doc:
          0 - vert/ 1 - horiz/ 2 - aligned.
      - Format: dict[str, Any]
        doc:
          The appearance attributes (style, color, weight, visible) for this CenterLine.
      - HorizShift: float
        doc:
          The left/right offset for this CenterLine.
      - VertShift: float
        doc:
          The up/down offset for this CenterLine.
      - Rotation: float
        doc:
          The rotation of the Centerline in degrees.
      - Extension: float
        doc:
          The additional length to be added to this CenterLine.
      - Flip: bool
        doc:
          Reverse the order of points for 2 point CenterLine.
      - Edges: list[Any]
        doc:
          The names of source edges for this CenterLine.
      - Faces: list[Any]
        doc:
          The names of source Faces for this CenterLine.
      - Points: list[Any]
        doc:
          The names of source Points for this CenterLine.
    methods:
      @constmethod
      - def clone(self) -> Any
        doc:
          Create a clone of this centerline
      @constmethod
      - def copy(self) -> Any
        doc:
          Create a copy of this centerline
```

```text theme={null}
MODULE Mod/TechDraw/App/CosmeticEdge.pyi
attributes:
  - PyCXXVector: TypeAlias
classes:
  class CosmeticEdge(PyObjectBase)
    doc:
      CosmeticEdge specifies an extra (cosmetic) edge in Views
    attributes:
      - Tag: Final[str]
        doc:
          Gives the tag of the CosmeticEdge as string.
      - Start: PyCXXVector
        doc:
          Gives the position of one end of this CosmeticEdge as vector.
      - End: PyCXXVector
        doc:
          Gives the position of one end of this CosmeticEdge as vector.
      - Center: PyCXXVector
        doc:
          Gives the position of center point of this CosmeticEdge as vector.
      - Radius: float
        doc:
          Gives the radius of CosmeticEdge in mm.
      - Format: dict
        doc:
          The appearance attributes (style, weight, color, visible) for this CosmeticEdge.
```

```text theme={null}
MODULE Mod/TechDraw/App/CosmeticExtension.pyi
classes:
  class CosmeticExtension(DocumentObjectExtension)
    doc:
      This object represents cosmetic features for a DrawViewPart.
```

```text theme={null}
MODULE Mod/TechDraw/App/CosmeticVertex.pyi
classes:
  class CosmeticVertex(PyObjectBase)
    doc:
      CosmeticVertex specifies an extra (cosmetic) vertex in Views
    attributes:
      - Tag: Final[str]
        doc:
          Gives the tag of the CosmeticVertex as string.
      - Point: Any
        doc:
          Gives the position of this CosmeticVertex as vector.
      - Show: bool
        doc:
          Show/hide the vertex.
      - Color: Any
        doc:
          set/return the vertex's colour using a tuple (rgba).
      - Size: Any
        doc:
          set/return the vertex's radius in mm.
      - Style: Any
        doc:
          set/return the vertex's style as integer.
    methods:
      @constmethod
      - def clone(self) -> Any
        doc:
          Create a clone of this CosmeticVertex
      @constmethod
      - def copy(self) -> Any
        doc:
          Create a copy of this CosmeticVertex
```

```text theme={null}
MODULE Mod/TechDraw/App/DrawBrokenView.pyi
classes:
  class DrawBrokenView(DrawViewPart)
    doc:
      Feature for creating and manipulating Technical Drawing broken views
    methods:
      - def mapPoint3dToView(self) -> Any
        doc:
          point2d = mapPoint3dToView(point3d) - returns the position of the 3d point within the broken view.
      - def mapPoint2dFromView(self) -> Any
        doc:
          point2d = mapPoint2dFromView(point3d) - returns the position of the 2d point within an unbroken view.
      - def getCompressedCenter(self) -> Any
        doc:
          point3d = getCompressedCenter() - returns the geometric center of the source shapes after break cuts and gap compression.
```

```text theme={null}
MODULE Mod/TechDraw/App/DrawGeomHatch.pyi
classes:
  class DrawGeomHatch(DocumentObject)
    doc:
      Feature for creating and manipulating Technical Drawing GeomHatch areas
    methods:
      - def translateLabel(self) -> Any
        doc:
          translateLabel(translationContext, objectBaseName, objectUniqueName).
          No return value.  Replace the current label with a translated version where possible.
```

```text theme={null}
MODULE Mod/TechDraw/App/DrawHatch.pyi
classes:
  class DrawHatch(DocumentObject)
    doc:
      Feature for creating and manipulating Technical Drawing Hatch areas
    methods:
      - def translateLabel(self) -> Any
        doc:
          translateLabel(translationContext, objectBaseName, objectUniqueName).
          No return value.  Replace the current label with a translated version where possible.
```

```text theme={null}
MODULE Mod/TechDraw/App/DrawLeaderLine.pyi
classes:
  class DrawLeaderLine(DrawView)
    doc:
      Feature for adding leaders to Technical Drawings
```

```text theme={null}
MODULE Mod/TechDraw/App/DrawPage.pyi
classes:
  class DrawPage(DocumentObject)
    doc:
      Feature for creating and manipulating Technical Drawing Pages
    attributes:
      - PageWidth: Final[float]
        doc:
          Returns the width of this page
      - PageHeight: Final[float]
        doc:
          Returns the height of this page
      - PageOrientation: Final[str]
        doc:
          Returns the orientation of this page
    methods:
      - def addView(self) -> Any
        doc:
          addView(DrawView) - Add a View to this Page
      - def removeView(self) -> Any
        doc:
          removeView(DrawView) - Remove a View to this Page
      - def getViews(self) -> Any
        doc:
          getViews() - returns a list of all the views on page excluding Views inside Collections
      - def getAllViews(self) -> Any
        doc:
          getAllViews() - returns a list of all the views on page including Views inside Collections
      - def translateLabel(self) -> Any
        doc:
          translateLabel(translationContext, objectBaseName, objectUniqueName).
          No return value.  Replace the current label with a translated version where possible.
      - def requestPaint(self) -> Any
        doc:
          Ask the Gui to redraw this page
```

```text theme={null}
MODULE Mod/TechDraw/App/DrawParametricTemplate.pyi
classes:
  class DrawParametricTemplate(DrawTemplate)
    doc:
      Feature for creating and manipulating Technical Drawing Templates
    attributes:
      - GeometryCount: Final[int]
        doc:
          Number of geometry in template
    methods:
      - def drawLine(self) -> Any
        doc:
          Draw a line
```

```text theme={null}
MODULE Mod/TechDraw/App/DrawProjGroup.pyi
classes:
  class DrawProjGroup(DrawViewCollection)
    doc:
      Feature for creating and manipulating Technical Drawing Projection Groups
    methods:
      - def addProjection(self) -> Any
        doc:
          addProjection(string projectionType) - Add a new Projection Item to this Group. Returns DocObj.
      - def removeProjection(self) -> Any
        doc:
          removeProjection(string projectionType) - Remove specified Projection Item from this Group. Returns int number of views in Group.
      - def purgeProjections(self) -> Any
        doc:
          purgeProjections() - Remove all Projection Items from this Group. Returns int number of views in Group (0).
      - def getItemByLabel(self) -> Any
        doc:
          getItemByLabel(string projectionType) - return specified Projection Item
      - def getXYPosition(self) -> Any
        doc:
          getXYPosition(string projectionType) - return the AutoDistribute position for specified Projection Item
```

```text theme={null}
MODULE Mod/TechDraw/App/DrawProjGroupItem.pyi
classes:
  class DrawProjGroupItem(DrawViewPart)
    doc:
      Feature for creating and manipulating component Views Technical Drawing Projection Groups
    methods:
      - def autoPosition(self) -> Any
        doc:
          autoPosition() - Move to AutoDistribute/Unlocked position on Page. Returns none.
```

```text theme={null}
MODULE Mod/TechDraw/App/DrawRichAnno.pyi
classes:
  class DrawRichAnno(DrawView)
    doc:
      Feature for adding rich annotation blocks to Technical Drawings
```

```text theme={null}
MODULE Mod/TechDraw/App/DrawSVGTemplate.pyi
classes:
  class DrawSVGTemplate(DrawTemplate)
    doc:
      Feature for creating and manipulating Technical Drawing SVG Templates
    methods:
      - def getEditFieldContent(self) -> Any
        doc:
          getEditFieldContent(EditFieldName) - returns the content of a specific Editable Text Field
      - def setEditFieldContent(self) -> Any
        doc:
          setEditFieldContent(EditFieldName, NewContent) - sets a specific Editable Text Field to a new value
      - def translateLabel(self) -> Any
        doc:
          translateLabel(translationContext, objectBaseName, objectUniqueName).
          No return value.  Replace the current label with a translated version where possible.
```

```text theme={null}
MODULE Mod/TechDraw/App/DrawTemplate.pyi
classes:
  class DrawTemplate(DocumentObject)
    doc:
      Feature for creating and manipulating Technical Drawing Templates
```

```text theme={null}
MODULE Mod/TechDraw/App/DrawTile.pyi
classes:
  class DrawTile(DocumentObject)
    doc:
      Feature for adding tiles to leader lines
```

```text theme={null}
MODULE Mod/TechDraw/App/DrawTileWeld.pyi
classes:
  class DrawTileWeld(DrawTile)
    doc:
      Feature for adding welding tiles to leader lines
```

```text theme={null}
MODULE Mod/TechDraw/App/DrawView.pyi
classes:
  class DrawView(DocumentObject)
    doc:
      Feature for creating and manipulating Technical Drawing Views
    methods:
      - def translateLabel(self) -> Any
        doc:
          translateLabel(translationContext, objectBaseName, objectUniqueName).
          No return value.  Replace the current label with a translated version where possible.
      @constmethod
      - def getScale(self) -> Any
        doc:
          float scale = getScale().  Returns the correct scale for this view.  Handles whether to
          use this view's scale property or a parent's view (as in a projection group).
      @constmethod
      - def findParentPage(self) -> Any
        doc:
          DrawPage parent = findParentPage().  Returns the parent page that contains this view.
```

```text theme={null}
MODULE Mod/TechDraw/App/DrawViewAnnotation.pyi
classes:
  class DrawViewAnnotation(DrawView)
    doc:
      Feature for creating and manipulating Technical Drawing Annotation Views
```

```text theme={null}
MODULE Mod/TechDraw/App/DrawViewClip.pyi
classes:
  class DrawViewClip(DrawView)
    doc:
      Feature for creating and manipulating Technical Drawing Clip Views
    methods:
      - def addView(self) -> Any
        doc:
          addView(DrawView) - Add a View to this ClipView
      - def removeView(self) -> Any
        doc:
          removeView(DrawView) - Remove specified View to this ClipView
      - def getChildViewNames(self) -> Any
        doc:
          getChildViewNames() - get a list of the DrawViews in this ClipView
```

```text theme={null}
MODULE Mod/TechDraw/App/DrawViewCollection.pyi
classes:
  class DrawViewCollection(DrawView)
    doc:
      Feature for creating and manipulating Technical Drawing View Collections
    methods:
      - def addView(self) -> Any
        doc:
          addView(DrawView object) - Add a new View to this Group. Returns count of views.
      - def removeView(self) -> Any
        doc:
          removeView(DrawView object) - Remove specified Viewfrom this Group. Returns count of views in Group.
```

```text theme={null}
MODULE Mod/TechDraw/App/DrawViewDimExtent.pyi
classes:
  class DrawViewDimExtent(DrawViewDimension)
    doc:
      Feature for creating and manipulating Technical Drawing DimExtents
    methods:
      - def tbd(self) -> Any
        doc:
          tbd() - returns tbd.
```

```text theme={null}
MODULE Mod/TechDraw/App/DrawViewDimension.pyi
classes:
  class DrawViewDimension(DrawView)
    doc:
      Feature for creating and manipulating Technical Drawing Dimensions
    methods:
      - def getRawValue(self) -> Any
        doc:
          getRawValue() - returns Dimension value in mm.
      - def getText(self) -> Any
        doc:
          getText() - returns Dimension text.
      - def getLinearPoints(self) -> Any
        doc:
          getLinearPoints() - returns list of points for linear Dimension
      - def getArcPoints(self) -> Any
        doc:
          getArcPoints() - returns list of points for circle/arc Dimension
      - def getAnglePoints(self) -> Any
        doc:
          getAnglePoints() - returns list of points for angle Dimension
      - def getAreaPoints(self) -> Any
        doc:
          getAreaPoints() - returns list of values (center, filled area, actual area) for area Dimension.
      - def getArrowPositions(self) -> Any
        doc:
          getArrowPositions() - returns list of locations or Dimension Arrowheads. Locations are in unscaled coordinates of parent View
```

```text theme={null}
MODULE Mod/TechDraw/App/DrawViewPart.pyi
classes:
  class DrawViewPart(DrawView)
    doc:
      Feature for creating and manipulating Technical Drawing Part Views
    methods:
      - def getVisibleEdges(self) -> Any
        doc:
          getVisibleEdges([conventionalCoords]) - get the visible edges in the View as Part::TopoShapeEdges. Edges are returned
          in conventional coordinates if conventionalCoords is True.  The default is to return Qt inverted Y coordinates.
      - def getVisibleVertexes(self) -> Any
        doc:
          getVisibleVertexes() - get the visible vertexes as App.Vector in the View's coordinate system.  App.Vectors are returned
          in conventional coordinates if conventionalCoords is True.  The default is to return Qt inverted Y coordinates.
      - def getHiddenEdges(self) -> Any
        doc:
          getHiddenEdges([conventionalCoords]) - get the hidden edges in the View as Part::TopoShapeEdges.  Edges are returned
          in conventional coordinates if conventionalCoords is True.  The default is to return Qt inverted Y coordinates.
      - def getHiddenVertexes(self) -> Any
        doc:
          getHiddenVertexes() - get the hidden vertexes as App.Vector in the View's coordinate system.  App.Vectors are returned
          in conventional coordinates if conventionalCoords is True.  The default is to return Qt inverted Y coordinates.
      - def makeCosmeticVertex(self) -> Any
        doc:
          id = makeCosmeticVertex(p1) - add a CosmeticVertex at p1 (View coordinates). Returns unique id vertex.
      - def makeCosmeticVertex3d(self) -> Any
        doc:
          id = makeCosmeticVertex3d(p1) - add a CosmeticVertex at p1 (3d model coordinates). Returns unique id vertex.
      - def getCosmeticVertex(self) -> Any
        doc:
          cv = getCosmeticVertex(id) - returns CosmeticVertex with unique id.
      - def getCosmeticVertexBySelection(self) -> Any
        doc:
          cv = getCosmeticVertexBySelection(name) - returns CosmeticVertex with name (Vertex6).  Used in selections.
      - def removeCosmeticVertex(self) -> Any
        doc:
          removeCosmeticVertex(cv) - remove CosmeticVertex from View. Returns None.
      - def clearCosmeticVertices(self) -> Any
        doc:
          clearCosmeticVertices() - remove all CosmeticVertices from the View. Returns None.
      - def makeCosmeticLine(self) -> Any
        doc:
          tag = makeCosmeticLine(p1, p2) - add a CosmeticEdge from p1 to p2(View coordinates). Returns tag of new CosmeticEdge.
      - def makeCosmeticLine3D(self) -> Any
        doc:
          tag = makeCosmeticLine3D(p1, p2) - add a CosmeticEdge from p1 to p2(3D coordinates). Returns tag of new CosmeticEdge.
      - def makeCosmeticCircle(self) -> Any
        doc:
          tag = makeCosmeticCircle(center, radius) - add a CosmeticEdge at center with radius radius(View coordinates). Returns tag of new CosmeticEdge.
      - def makeCosmeticCircleArc(self) -> Any
        doc:
          tag = makeCosmeticCircleArc(center, radius, start, end) - add a CosmeticEdge at center with radius radius(View coordinates) from start angle to end angle. Returns tag of new CosmeticEdge.
      - def makeCosmeticCircle3d(self) -> Any
        doc:
          tag = makeCosmeticCircle3d(center, radius) - add a CosmeticEdge at center (3d point) with radius. Returns tag of new CosmeticEdge.
      - def makeCosmeticCircleArc3d(self) -> Any
        doc:
          tag = makeCosmeticCircleArc3d(center, radius, start, end) - add a CosmeticEdge at center (3d point) with radius from start angle to end angle. Returns tag of new CosmeticEdge.
      - def getCosmeticEdge(self) -> Any
        doc:
          ce = getCosmeticEdge(id) - returns CosmeticEdge with unique id.
      - def getCosmeticEdgeBySelection(self) -> Any
        doc:
          ce = getCosmeticEdgeBySelection(name) - returns CosmeticEdge by name (Edge25).  Used in selections
      - def removeCosmeticEdge(self) -> Any
        doc:
          removeCosmeticEdge(ce) - remove CosmeticEdge ce from View. Returns None.
      - def makeCenterLine(self) -> Any
        doc:
          makeCenterLine(subNames, mode) - draw a center line on this viewPart. SubNames is a list of n Faces, 2 Edges or 2 Vertices (ex [Face1,Face2,Face3]. Returns unique tag of added CenterLine.
      - def getCenterLine(self) -> Any
        doc:
          cl = getCenterLine(id) - returns CenterLine with unique id.
      - def getCenterLineBySelection(self) -> Any
        doc:
          cl = getCenterLineBySelection(name) - returns CenterLine by name (Edge25).  Used in selections
      - def removeCenterLine(self) -> Any
        doc:
          removeCenterLine(cl) - remove CenterLine cl from View. Returns None.
      - def clearCosmeticEdges(self) -> Any
        doc:
          clearCosmeticEdges() - remove all CosmeticLines from the View. Returns None.
      - def clearCenterLines(self) -> Any
        doc:
          clearCenterLines() - remove all CenterLines from the View. Returns None.
      - def clearGeomFormats(self) -> Any
        doc:
          clearGeomFormats() - remove all GeomFormats from the View. Returns None.
      - def formatGeometricEdge(self) -> Any
        doc:
          formatGeometricEdge(index, style, weight, color, visible). Returns None.
      - def getEdgeByIndex(self) -> Any
        doc:
          getEdgeByIndex(edgeIndex). Returns Part.TopoShape.
      - def getEdgeBySelection(self) -> Any
        doc:
          getEdgeBySelection(edgeName). Returns Part.TopoShape.
      - def getVertexByIndex(self) -> Any
        doc:
          getVertexByIndex(vertexIndex). Returns Part.TopoShape.
      - def getVertexBySelection(self) -> Any
        doc:
          getVertexBySelection(vertexName). Returns Part.TopoShape.
      - def projectPoint(self) -> Any
        doc:
          projectPoint(vector3d point, [bool invert]). Returns the projection of point in the
          projection coordinate system of this DrawViewPart. Optionally inverts the Y coordinate of the
          result.
      - def getGeometricCenter(self) -> Any
        doc:
          point3d = getGeometricCenter() - returns the geometric center of the source shapes.
      - def requestPaint(self) -> Any
        doc:
          requestPaint(). Redraw the graphic for this View.
```

```text theme={null}
MODULE Mod/TechDraw/App/DrawViewSymbol.pyi
classes:
  class DrawViewSymbol(DrawView)
    doc:
      Feature for creating and manipulating Drawing SVG Symbol Views
    methods:
      - def dumpSymbol(self) -> Any
        doc:
          dumpSymbol(fileSpec) - dump the contents of Symbol to a file
```

```text theme={null}
MODULE Mod/TechDraw/App/DrawWeldSymbol.pyi
classes:
  class DrawWeldSymbol(DrawView)
    doc:
      Feature for adding welding tiles to leader lines
```

```text theme={null}
MODULE Mod/TechDraw/App/GeomFormat.pyi
classes:
  class GeomFormat(PyObjectBase)
    doc:
      GeomFormat specifies appearance parameters for TechDraw Geometry objects
    attributes:
      - Tag: Final[str]
        doc:
          Gives the tag of the GeomFormat as string.
    methods:
      @constmethod
      - def clone(self) -> Any
        doc:
          Create a clone of this geomformat
      @constmethod
      - def copy(self) -> Any
        doc:
          Create a copy of this geomformat
```
