From 770dbe55800fd9827e38ee254333e549920cd2b9 Mon Sep 17 00:00:00 2001 From: tritao Date: Fri, 21 Mar 2025 19:27:30 +0000 Subject: [PATCH] Sketcher: Convert XML binding files to Python API bindings model. --- src/Mod/Sketcher/App/CMakeLists.txt | 8 + src/Mod/Sketcher/App/Constraint.pyi | 58 ++ .../App/ExternalGeometryExtension.pyi | 32 + .../App/ExternalGeometryExtensionPy.xml | 6 +- .../Sketcher/App/ExternalGeometryFacade.pyi | 136 +++ .../Sketcher/App/ExternalGeometryFacadePy.xml | 8 +- src/Mod/Sketcher/App/GeometryFacade.pyi | 139 +++ src/Mod/Sketcher/App/GeometryFacadePy.xml | 8 +- src/Mod/Sketcher/App/Sketch.pyi | 72 ++ .../Sketcher/App/SketchGeometryExtension.pyi | 45 + src/Mod/Sketcher/App/SketchObject.pyi | 875 ++++++++++++++++++ src/Mod/Sketcher/App/SketchObjectPy.xml | 188 ++-- src/Mod/Sketcher/App/SketchObjectSF.pyi | 16 + src/Mod/Sketcher/App/SketchPy.xml | 26 +- src/Mod/Sketcher/Gui/CMakeLists.txt | 1 + .../ViewProviderSketchGeometryExtension.pyi | 20 + 16 files changed, 1524 insertions(+), 114 deletions(-) create mode 100644 src/Mod/Sketcher/App/Constraint.pyi create mode 100644 src/Mod/Sketcher/App/ExternalGeometryExtension.pyi create mode 100644 src/Mod/Sketcher/App/ExternalGeometryFacade.pyi create mode 100644 src/Mod/Sketcher/App/GeometryFacade.pyi create mode 100644 src/Mod/Sketcher/App/Sketch.pyi create mode 100644 src/Mod/Sketcher/App/SketchGeometryExtension.pyi create mode 100644 src/Mod/Sketcher/App/SketchObject.pyi create mode 100644 src/Mod/Sketcher/App/SketchObjectSF.pyi create mode 100644 src/Mod/Sketcher/Gui/ViewProviderSketchGeometryExtension.pyi diff --git a/src/Mod/Sketcher/App/CMakeLists.txt b/src/Mod/Sketcher/App/CMakeLists.txt index bd75cfb0c2..09ae7ff1d0 100644 --- a/src/Mod/Sketcher/App/CMakeLists.txt +++ b/src/Mod/Sketcher/App/CMakeLists.txt @@ -31,13 +31,21 @@ set(Sketcher_LIBS ) generate_from_xml(SketchObjectSFPy) +generate_from_py_(SketchObjectSF) generate_from_xml(SketchObjectPy) +generate_from_py_(SketchObject) generate_from_xml(SketchGeometryExtensionPy) +generate_from_py_(SketchGeometryExtension) generate_from_xml(ExternalGeometryExtensionPy) +generate_from_py_(ExternalGeometryExtension) generate_from_xml(GeometryFacadePy) +generate_from_py_(GeometryFacade) generate_from_xml(ExternalGeometryFacadePy) +generate_from_py_(ExternalGeometryFacade) generate_from_xml(ConstraintPy) +generate_from_py_(Constraint) generate_from_xml(SketchPy) +generate_from_py_(Sketch) SET(Properties_SRCS diff --git a/src/Mod/Sketcher/App/Constraint.pyi b/src/Mod/Sketcher/App/Constraint.pyi new file mode 100644 index 0000000000..8c93386409 --- /dev/null +++ b/src/Mod/Sketcher/App/Constraint.pyi @@ -0,0 +1,58 @@ +from Base.Metadata import export +from Base.Persistence import Persistence +from typing import Final + +@export( + Include="Mod/Sketcher/App/Constraint.h", + Constructor=True, + Delete=True, +) +class Constraint(Persistence): + """ + With this object you can handle sketches + + Author: Juergen Riegel (FreeCAD@juergen-riegel.net) + Licence: LGPL + """ + + Type: Final[str] = "" + """Get the constraint type""" + + First: int = 0 + """First geometry index the Constraint refers to""" + + FirstPos: int = 0 + """Position of first geometry index the Constraint refers to""" + + Second: int = 0 + """Second geometry index the Constraint refers to""" + + SecondPos: int = 0 + """Position of second geometry index the Constraint refers to""" + + Third: int = 0 + """Third geometry index the Constraint refers to""" + + ThirdPos: int = 0 + """Position of third geometry index the Constraint refers to""" + + Value: Final[float] = 0.0 + """Value of the Constraint""" + + Name: str = "" + """Name of the constraint""" + + Driving: Final[bool] = False + """Driving Constraint""" + + InVirtualSpace: Final[bool] = False + """Constraint in virtual space""" + + IsActive: Final[bool] = False + """Returns whether the constraint active (enforced) or not""" + + LabelDistance: Final[float] = 0.0 + """Label distance""" + + LabelPosition: Final[float] = 0.0 + """Label position""" diff --git a/src/Mod/Sketcher/App/ExternalGeometryExtension.pyi b/src/Mod/Sketcher/App/ExternalGeometryExtension.pyi new file mode 100644 index 0000000000..3b809b32fb --- /dev/null +++ b/src/Mod/Sketcher/App/ExternalGeometryExtension.pyi @@ -0,0 +1,32 @@ +from Base.Metadata import export, constmethod +from Part.App.GeometryExtension import GeometryExtension +from typing import Final, overload + +@export( + PythonName="Sketcher.ExternalGeometryExtension", + Include="Mod/Sketcher/App/ExternalGeometryExtension.h", + FatherInclude="Mod/Part/App/GeometryExtensionPy.h", + Constructor=True, +) +class ExternalGeometryExtension(GeometryExtension): + """ + Describes a ExternalGeometryExtension + + Author: Abdullah Tahiri (abdullah.tahiri.yo@gmail.com) + Licence: LGPL + """ + + @constmethod + def testFlag(self) -> bool: + """ + Returns a boolean indicating whether the given bit is set. + """ + ... + + def setFlag(self) -> None: + """ + Sets the given bit to true/false. + """ + ... + Ref: str = "" + """Returns the reference string of this external geometry.""" diff --git a/src/Mod/Sketcher/App/ExternalGeometryExtensionPy.xml b/src/Mod/Sketcher/App/ExternalGeometryExtensionPy.xml index d8e2ab5b19..eb001465ff 100644 --- a/src/Mod/Sketcher/App/ExternalGeometryExtensionPy.xml +++ b/src/Mod/Sketcher/App/ExternalGeometryExtensionPy.xml @@ -17,18 +17,18 @@ - returns a boolean indicating whether the given bit is set. + Returns a boolean indicating whether the given bit is set. - sets the given bit to true/false. + Sets the given bit to true/false. - returns the reference string of this external geometry. +Returns the reference string of this external geometry. diff --git a/src/Mod/Sketcher/App/ExternalGeometryFacade.pyi b/src/Mod/Sketcher/App/ExternalGeometryFacade.pyi new file mode 100644 index 0000000000..3c5ac0082d --- /dev/null +++ b/src/Mod/Sketcher/App/ExternalGeometryFacade.pyi @@ -0,0 +1,136 @@ +from Base.Metadata import export, constmethod +from Base.BaseClass import BaseClass +from typing import Final, List + +@export( + PythonName="Sketcher.ExternalGeometryFacade", + Include="Mod/Sketcher/App/ExternalGeometryFacade.h", + Constructor=True, +) +class ExternalGeometryFacade(BaseClass): + """ + Describes a GeometryFacade + + Author: Abdullah Tahiri (abdullah.tahiri.yo@gmail.com) + Licence: LGPL + """ + + Ref: str = "" + """Returns the reference string of this external geometry.""" + + Id: int = 0 + """Sets/returns the Internal Alignment Type of the Geometry.""" + + Construction: bool = False + """Sets/returns this geometry as a construction one, which will not be part of a later built shape.""" + + GeometryLayerId: int = 0 + """Returns the Id of the geometry Layer in which the geometry is located.""" + + InternalType: str = "" + """Sets/returns the Internal Alignment Type of the Geometry.""" + + Blocked: bool = False + """Sets/returns whether the geometry is blocked or not.""" + + Tag: Final[str] = "" + """Gives the tag of the geometry as string.""" + + Geometry: object = ... + """Returns the underlying geometry object.""" + + @constmethod + def testFlag(self) -> bool: + """ + Returns a boolean indicating whether the given bit is set. + """ + ... + + def setFlag(self) -> None: + """ + Sets the given bit to true/false. + """ + ... + + def mirror(self) -> None: + """ + Performs the symmetrical transformation of this geometric object + """ + ... + + def rotate(self) -> None: + """ + Rotates this geometric object at angle Ang (in radians) about axis + """ + ... + + def scale(self) -> None: + """ + Applies a scaling transformation on this geometric object with a center and scaling factor + """ + ... + + def transform(self) -> None: + """ + Applies a transformation to this geometric object + """ + ... + + def translate(self) -> None: + """ + Translates this geometric object + """ + ... + + @constmethod + def hasExtensionOfType(self) -> bool: + """ + Returns a boolean indicating whether a geometry extension of the type indicated as a string exists. + """ + ... + + @constmethod + def hasExtensionOfName(self) -> bool: + """ + Returns a boolean indicating whether a geometry extension with the name indicated as a string exists. + """ + ... + + @constmethod + def getExtensionOfType(self) -> object: + """ + Gets the first geometry extension of the type indicated by the string. + """ + ... + + @constmethod + def getExtensionOfName(self) -> object: + """ + Gets the first geometry extension of the name indicated by the string. + """ + ... + + def setExtension(self) -> None: + """ + Sets a geometry extension of the indicated type. + """ + ... + + def deleteExtensionOfType(self) -> None: + """ + Deletes all extensions of the indicated type. + """ + ... + + def deleteExtensionOfName(self) -> None: + """ + Deletes all extensions of the indicated name. + """ + ... + + @constmethod + def getExtensions(self) -> List[object]: + """ + Returns a list with information about the geometry extensions. + """ + ... diff --git a/src/Mod/Sketcher/App/ExternalGeometryFacadePy.xml b/src/Mod/Sketcher/App/ExternalGeometryFacadePy.xml index 906f3dea9b..e9592ebdfd 100644 --- a/src/Mod/Sketcher/App/ExternalGeometryFacadePy.xml +++ b/src/Mod/Sketcher/App/ExternalGeometryFacadePy.xml @@ -28,7 +28,7 @@ - Returns the reference string of this external geometry. +Returns the reference string of this external geometry. @@ -36,7 +36,7 @@ - Sets/returns the Internal Alignment Type of the Geometry. +Sets/returns the Internal Alignment Type of the Geometry. @@ -50,7 +50,7 @@ - Returns the Id of the geometry Layer in which the geometry is located. +Returns the Id of the geometry Layer in which the geometry is located. @@ -66,7 +66,7 @@ - Sets/returns whether the geometry is blocked or not. +Sets/returns whether the geometry is blocked or not. diff --git a/src/Mod/Sketcher/App/GeometryFacade.pyi b/src/Mod/Sketcher/App/GeometryFacade.pyi new file mode 100644 index 0000000000..a78e115d2e --- /dev/null +++ b/src/Mod/Sketcher/App/GeometryFacade.pyi @@ -0,0 +1,139 @@ +from Base.Metadata import export, constmethod +from Base.BaseClass import BaseClass +from Base.Axis import Axis +from Base.CoordinateSystem import CoordinateSystem +from Base.Placement import Placement +from Base.Vector import Vector +from App.DocumentObjectExtension import DocumentObjectExtension +from typing import Final, List + +@export( + PythonName="Sketcher.GeometryFacade", + Include="Mod/Sketcher/App/GeometryFacade.h", + Constructor=True, + Delete=True, +) +class GeometryFacade(BaseClass): + """ + Describes a GeometryFacade + + Author: Abdullah Tahiri (abdullah.tahiri.yo@gmail.com) + Licence: LGPL + """ + + Id: int = ... + """Sets/returns the Id of the SketchGeometryExtension.""" + + InternalType: str = ... + """Sets/returns the Internal Alignment Type of the Geometry.""" + + Blocked: bool = ... + """Sets/returns whether the geometry is blocked or not.""" + + Construction: bool = ... + """Sets/returns this geometry as a construction one, which will not be part of a later built shape.""" + + GeometryLayerId: int = ... + """Returns the Id of the geometry Layer in which the geometry is located.""" + + Tag: Final[str] = ... + """Gives the tag of the geometry as string.""" + + Geometry: object = ... + """Returns the underlying geometry object.""" + + @constmethod + def testGeometryMode(self) -> bool: + """ + Returns a boolean indicating whether the given bit is set. + """ + ... + + def setGeometryMode(self) -> None: + """ + Sets the given bit to true/false. + """ + ... + + def mirror(self) -> None: + """ + Performs the symmetrical transformation of this geometric object + """ + ... + + def rotate(self, Ang: float, axis: Axis) -> None: + """ + Rotates this geometric object at angle Ang (in radians) about axis + """ + ... + + def scale(self, center: CoordinateSystem, factor: float) -> None: + """ + Applies a scaling transformation on this geometric object with a center and scaling factor + """ + ... + + def transform(self, transformation: Placement) -> None: + """ + Applies a transformation to this geometric object + """ + ... + + def translate(self, offset: Vector) -> None: + """ + Translates this geometric object + """ + ... + + @constmethod + def hasExtensionOfType(self, type_str: str) -> bool: + """ + Returns a boolean indicating whether a geometry extension of the type indicated as a string exists. + """ + ... + + @constmethod + def hasExtensionOfName(self, name: str) -> bool: + """ + Returns a boolean indicating whether a geometry extension with the name indicated as a string exists. + """ + ... + + @constmethod + def getExtensionOfType(self, type_str: str) -> DocumentObjectExtension: + """ + Gets the first geometry extension of the type indicated by the string. + """ + ... + + @constmethod + def getExtensionOfName(self, name: str) -> DocumentObjectExtension: + """ + Gets the first geometry extension of the name indicated by the string. + """ + ... + + def setExtension(self, extension: DocumentObjectExtension) -> None: + """ + Sets a geometry extension of the indicated type. + """ + ... + + def deleteExtensionOfType(self, type_str: str) -> None: + """ + Deletes all extensions of the indicated type. + """ + ... + + def deleteExtensionOfName(self, name: str) -> None: + """ + Deletes all extensions of the indicated name. + """ + ... + + @constmethod + def getExtensions(self) -> List[DocumentObjectExtension]: + """ + Returns a list with information about the geometry extensions. + """ + ... diff --git a/src/Mod/Sketcher/App/GeometryFacadePy.xml b/src/Mod/Sketcher/App/GeometryFacadePy.xml index d9c0fdfb2d..83ce9bf4cd 100644 --- a/src/Mod/Sketcher/App/GeometryFacadePy.xml +++ b/src/Mod/Sketcher/App/GeometryFacadePy.xml @@ -29,7 +29,7 @@ - Sets/returns the Id of the SketchGeometryExtension. +Sets/returns the Id of the SketchGeometryExtension. @@ -37,7 +37,7 @@ - Sets/returns the Internal Alignment Type of the Geometry. +Sets/returns the Internal Alignment Type of the Geometry. @@ -45,7 +45,7 @@ - Sets/returns whether the geometry is blocked or not. +Sets/returns whether the geometry is blocked or not. @@ -59,7 +59,7 @@ - Returns the Id of the geometry Layer in which the geometry is located. +Returns the Id of the geometry Layer in which the geometry is located. diff --git a/src/Mod/Sketcher/App/Sketch.pyi b/src/Mod/Sketcher/App/Sketch.pyi new file mode 100644 index 0000000000..6fa03c0c7a --- /dev/null +++ b/src/Mod/Sketcher/App/Sketch.pyi @@ -0,0 +1,72 @@ +from Base.Metadata import export, constmethod +from Base.Persistence import Persistence +from Base.Vector import Vector +from typing import Final, Tuple + +@export( + Include="Mod/Sketcher/App/Sketch.h", + FatherInclude="Base/PersistencePy.h", + Constructor=True, +) +class Sketch(Persistence): + """ + With this objects you can handle constraint sketches + + Author: Juergen Riegel (FreeCAD@juergen-riegel.net) + Licence: LGPL + """ + + Constraint: Final[int] = 0 + """0: exactly constraint, -1 under-constraint, 1 over-constraint""" + + Conflicts: Final[Tuple] = () + """Tuple of conflicting constraints""" + + Redundancies: Final[Tuple] = () + """Tuple of redundant constraints""" + + Geometries: Final[Tuple] = () + """Tuple of all geometric elements in this sketch""" + + Shape: Final[object] = None + """Resulting shape from the sketch geometry""" + + def solve(self) -> None: + """ + Solve the actual set of geometry and constraints + """ + ... + + def addGeometry(self) -> None: + """ + Add a geometric object to the sketch + """ + ... + + def addConstraint(self) -> None: + """ + Add an constraint object to the sketch + """ + ... + + def clear(self) -> None: + """ + Clear the sketch + """ + ... + + def moveGeometry( + self, GeoIndex: int, PointPos: Vector, Vector: Vector, relative: bool = False + ) -> None: + """ + moveGeometry(GeoIndex,PointPos,Vector,[relative]) - 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. + """ + ... diff --git a/src/Mod/Sketcher/App/SketchGeometryExtension.pyi b/src/Mod/Sketcher/App/SketchGeometryExtension.pyi new file mode 100644 index 0000000000..2fda454ba4 --- /dev/null +++ b/src/Mod/Sketcher/App/SketchGeometryExtension.pyi @@ -0,0 +1,45 @@ +from Base.Metadata import export, constmethod +from Part.App.GeometryExtension import GeometryExtension + +@export( + Name="SketchGeometryExtensionPy", + PythonName="Sketcher.SketchGeometryExtension", + Include="Mod/Sketcher/App/SketchGeometryExtension.h", + FatherInclude="Mod/Part/App/GeometryExtensionPy.h", + Constructor=True, +) +class SketchGeometryExtension(GeometryExtension): + """ + Describes a SketchGeometryExtension + + Author: Abdullah Tahiri (abdullah.tahiri.yo@gmail.com) + Licence: LGPL + """ + + Id: int = 0 + """Returns the Id of the SketchGeometryExtension.""" + + InternalType: str = "" + """Returns the Id of the SketchGeometryExtension.""" + + Blocked: bool = False + """Sets/returns whether the geometry is blocked or not.""" + + Construction: bool = False + """Sets/returns this geometry as a construction one, which will not be part of a later built shape.""" + + GeometryLayerId: int = 0 + """Returns the Id of the geometry Layer in which the geometry is located.""" + + @constmethod + def testGeometryMode(self) -> bool: + """ + Returns a boolean indicating whether the given bit is set. + """ + ... + + def setGeometryMode(self) -> None: + """ + Sets the given bit to true/false. + """ + ... diff --git a/src/Mod/Sketcher/App/SketchObject.pyi b/src/Mod/Sketcher/App/SketchObject.pyi new file mode 100644 index 0000000000..ebb8615186 --- /dev/null +++ b/src/Mod/Sketcher/App/SketchObject.pyi @@ -0,0 +1,875 @@ +from Base.Metadata import export, constmethod, no_args +from Base.Quantity import Quantity +from Base.Vector import Vector +from Base.Axis import Axis +from Part.App.Part2DObject import Part2DObject +from Part.App.Geometry import Geometry +from Sketcher.App.Constraint import Constraint +from typing import List, Tuple, Union, Final, overload + +@export( + Include="Mod/Sketcher/App/SketchObject.h", + FatherInclude="Mod/Part/App/Part2DObjectPy.h", +) +class SketchObject(Part2DObject): + """ + Represents a sketch object + + Author: Juergen Riegel + Licence: LGPL + """ + + MissingPointOnPointConstraints: List = ... + """Returns a list of (First FirstPos Second SecondPos Type) tuples with all the detected endpoint constraints.""" + + MissingVerticalHorizontalConstraints: List = ... + """Returns a list of (First FirstPos Second SecondPos Type) tuples with all the detected vertical/horizontal constraints.""" + + MissingLineEqualityConstraints: List = ... + """Returns a list of (First FirstPos Second SecondPos) tuples with all the detected line segment equality constraints.""" + + MissingRadiusConstraints: List = ... + """Returns a list of (First FirstPos Second SecondPos) tuples with all the detected radius constraints.""" + + OpenVertices: Final[List] = ... + """Returns a list of vertices positions.""" + + ConstraintCount: Final[int] = ... + """Number of Constraints in this sketch""" + + GeometryCount: Final[int] = ... + """Number of geometric objects in this sketch""" + + AxisCount: Final[int] = ... + """Return the number of construction lines in the sketch which can be used as axes""" + + GeometryFacadeList: List = ... + """Return a list of GeometryFacade objects corresponding to the PropertyGeometryList""" + + DoF: Final[int] = ... + """Return the DoFs of the current solved sketch""" + + ConflictingConstraints: Final[List] = ... + """Return a list of integers indicating the constraints detected as conflicting""" + + RedundantConstraints: Final[List] = ... + """Return a list of integers indicating the constraints detected as redundant""" + + PartiallyRedundantConstraints: Final[List] = ... + """Return a list of integers indicating the constraints detected as partially redundant""" + + MalformedConstraints: Final[List] = ... + """Return a list of integers indicating the constraints detected as malformed""" + + def solve(self) -> int: + """ + 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, ...]]: + """ + 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) -> None: + """ + 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]) -> None: + """ + 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) -> None: + """ + Delete all the geometry objects from the sketch, except external geometry. + + deleteAllGeometry() + """ + ... + + def detectDegeneratedGeometries(self, tolerance: float) -> int: + """ + 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: + """ + 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: + """ + Delete all the constraints from the sketch. + + deleteAllConstraints() + """ + ... + + def toggleConstruction(self, geoId: int) -> None: + """ + 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: + """ + 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: + """ + 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, ...]]: + """ + 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) -> None: + """ + Delete a constraint from the sketch. + + delConstraint(constraintIndex:int) + + Args: + constraintIndex: The zero-based index of the constraint to delete. + """ + ... + + def renameConstraint(self, constraintIndex: int, name: str) -> None: + """ + 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: + """ + 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 carbonCopy(self, objName: str, asConstruction: bool = True) -> None: + """ + 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: + """ + 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: + """ + Delete an external geometry link from the sketch. + + delExternal(extGeoId:int) + + Args: + extGeoId: The zero-based index 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: + """ + 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: + """ + Deletes all constraints referencing an external geometry. + """ + ... + + def setDatum(self, constraint: Union[int, str], value: Union[float, Quantity]) -> None: + """ + 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. + """ + ... + + @constmethod + def getDatum(self, constraint: Union[int, str]) -> Quantity: + """ + 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: + """ + 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: + """ + 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: + """ + 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: + """ + 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: + """ + 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: + """ + Set the VirtualSpace status of a constraint + """ + ... + + def getVirtualSpace(self) -> bool: + """ + Get the VirtualSpace status of a constraint + """ + ... + + def toggleVirtualSpace(self) -> None: + """ + Toggle the VirtualSpace status of a constraint + """ + ... + + def setActive(self, constraintIndex: int, state: bool) -> None: + """ + 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: + """ + 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: + """ + 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: + """ + 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: + """ + 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: + """ + 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: + """ + 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: + """ + 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: + """ + 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: + """ + Retrieve the vector of a point in the sketch. + + getPoint(GeoIndex,PointPos) + """ + ... + + @constmethod + def getGeoVertexIndex(self, index: int) -> Tuple[int, int]: + """ + Retrieve the GeoId and PosId of a point in the sketch. + + (geoId, posId) = getGeoVertexIndex(index) + """ + ... + + @constmethod + def getAxis(self) -> Axis: + """ + Return an axis based on the corresponding construction line + """ + ... + + def fillet(self) -> None: + """ + Create a fillet between two edges or at a point + """ + ... + + def trim(self) -> None: + """ + Trim a curve with a given id at a given reference point + """ + ... + + def extend(self) -> None: + """ + Extend a curve to new start and end positions + """ + ... + + def split(self) -> None: + """ + Split a curve with a given id at a given reference point + """ + ... + + def join(self) -> None: + """ + Join two curves at the given end points + """ + ... + + def addSymmetric(self) -> None: + """ + Add symmetric geometric objects to the sketch with respect to a reference point or line + """ + ... + + def addCopy(self) -> None: + """ + Add a copy of geometric objects to the sketch displaced by a vector3d + """ + ... + + def addMove(self) -> None: + """ + Move the geometric objects in the sketch displaced by a vector3d + """ + ... + + def addRectangularArray(self) -> None: + """ + 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: + """ + Modifies constraints so that the shape is not forced to be aligned with axes. + """ + ... + + def ExposeInternalGeometry(self) -> None: + """ + Deprecated -- use exposeInternalGeometry + """ + ... + + def DeleteUnusedInternalGeometry(self) -> None: + """ + Deprecated -- use deleteUnusedInternalGeometry + """ + ... + + def exposeInternalGeometry(self) -> None: + """ + Exposes all internal geometry of an object supporting internal geometry + """ + ... + + def deleteUnusedInternalGeometry(self) -> None: + """ + Deletes all unused (not further constrained) internal geometry + """ + ... + + def convertToNURBS(self) -> None: + """ + Approximates the given geometry with a B-spline + """ + ... + + def increaseBSplineDegree(self) -> None: + """ + Increases the given B-spline Degree by a number of degrees + """ + ... + + def decreaseBSplineDegree(self) -> None: + """ + Decreases the given B-spline Degree by a number of degrees by approximating this curve + """ + ... + + def modifyBSplineKnotMultiplicity(self) -> None: + """ + Increases or reduces the given BSpline knot multiplicity + """ + ... + + def insertBSplineKnot(self) -> None: + """ + 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: + """ + 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: + """ + 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: + """ + 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: + """ + 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]]: + """ + 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: + """ + Automatic sketch constraining algorithm. + """ + ... + + def detectMissingPointOnPointConstraints(self) -> None: + """ + 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: + """ + 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: + """ + 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: + """ + 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: + """ + 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: + """ + 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: + """ + 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: + """ + Check for constraints with invalid indexes. Returns True if invalid constraints are found, False otherwise. + """ + ... + + @no_args + def validateConstraints(self) -> None: + """ + Removes constraints with invalid indexes. + """ + ... + + def autoRemoveRedundants(self, arg: bool) -> None: + """ + 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: + """ + Prints the commands that should be executed to recreate the Geometry and Constraints of the present sketch (excluding any External Geometry). + """ + ... + + def setGeometryId(): + """ + Sets the GeometryId of the SketchGeometryExtension of the geometry with the provided GeoId + """ + ... + + def getGeometryId(): + """ + Gets the GeometryId of the SketchGeometryExtension of the geometry with the provided GeoId + """ + ... diff --git a/src/Mod/Sketcher/App/SketchObjectPy.xml b/src/Mod/Sketcher/App/SketchObjectPy.xml index 43dab8c3b7..70701700c6 100644 --- a/src/Mod/Sketcher/App/SketchObjectPy.xml +++ b/src/Mod/Sketcher/App/SketchObjectPy.xml @@ -20,14 +20,14 @@ 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. + 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. @@ -366,7 +366,7 @@ Moves all datum constraints to the end of the constraint list. moveDatumsToEnd() - Warning: This method reorders the constraint indices. Previously hold + Warning: This method reorders the constraint indices. Previously held numeric references to constraints may reference different constraints after this operation. @@ -402,7 +402,7 @@ toggleDriving(constraintIndex:int) - set the VirtualSpace status of a constraint + Set the VirtualSpace status of a constraint @@ -412,7 +412,7 @@ toggleDriving(constraintIndex:int) - toggle the VirtualSpace status of a constraint + Toggle the VirtualSpace status of a constraint @@ -516,103 +516,111 @@ setLabelDistance(constraintIndex:int, value:float) - moveGeometry(GeoIndex,PointPos,Vector,[relative]) - 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. +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. - moveGeometries(Geos,Vector,[relative]) - move given points and curves - to another location. - It moves the specified points and curves 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. For group dragging this is enforced. - Geos is a vector of pairs of geoId and posId. +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. - getPoint(GeoIndex,PointPos) - retrieve the vector of a point in the sketch +Retrieve the vector of a point in the sketch. + +getPoint(GeoIndex,PointPos) - (geoId, posId) = getGeoVertexIndex(index) - retrieve the GeoId and PosId of a point in the sketch +Retrieve the GeoId and PosId of a point in the sketch. + +(geoId, posId) = getGeoVertexIndex(index) - return an axis based on the corresponding construction line +Return an axis based on the corresponding construction line - create fillet between two edges or at a point + Create a fillet between two edges or at a point - trim a curve with a given id at a given reference point + Trim a curve with a given id at a given reference point - extend a curve to new start and end positions + Extend a curve to new start and end positions - split a curve with a given id at a given reference point + Split a curve with a given id at a given reference point - join two curves at the given end points + Join two curves at the given end points - add a symmetric geometric objects to the sketch with respect to a reference point or line + Add symmetric geometric objects to the sketch with respect to a reference point or line - add a copy of geometric objects to the sketch displaced by a vector3d + Add a copy of geometric objects to the sketch displaced by a vector3d - Moves the geometric objects in the sketch displaced by a vector3d + Move the geometric objects in the sketch displaced by a vector3d - 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 + 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 - modifies constraints so that the shape is not forced to be aligned with axes. + Modifies constraints so that the shape is not forced to be aligned with axes. @@ -663,150 +671,150 @@ setLabelDistance(constraintIndex:int, value:float) - 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. +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. - isPointOnObject(GeoIdCurve, float x, float y) - 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. Returns boolean value. +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. - 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). +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). - 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. +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. +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. - 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. +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. - Automatic sketch constraining algorithm. +Automatic sketch constraining algorithm. - 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. +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. - Analyses the already detected Missing Point On Point Constraints to detect endpoint tagency/perpendicular. - The result may be retrieved or applied using the corresponding Get / Make methods. +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. - 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. +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. - 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. +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. - 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. +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. - Applies the detected / set Vertical/Horizontal constraints. If the argument is True, then solving and redundant removal is done after each individual addition. +Applies the detected / set Vertical/Horizontal constraints. If the argument is True, then solving and redundant removal is done after each individual addition. - Applies the detected / set Equality constraints. If the argument is True, then solving and redundant removal is done after each individual addition. +Applies the detected / set Equality constraints. If the argument is True, then solving and redundant removal is done after each individual addition. - Check for constraints with invalid indexes. Returns True if invalid constraints are found, False otherwise. +Check for constraints with invalid indexes. Returns True if invalid constraints are found, False otherwise. - Removes constraints with invalid indexes. +Removes constraints with invalid indexes. - Removes constraints currently detected as redundant by the solver. If the argument is True, then the geometry is updated after solving. +Removes constraints currently detected as redundant by the solver. If the argument is True, then the geometry is updated after solving. - Prints the commands that should be executed to recreate the Geometry and Constraints of the present sketch (excluding any External Geometry). +Prints the commands that should be executed to recreate the Geometry and Constraints of the present sketch (excluding any External Geometry). - returns a list of (First FirstPos Second SecondPos Type) tuples with all the detected endpoint constraints. +Returns a list of (First FirstPos Second SecondPos Type) tuples with all the detected endpoint constraints. @@ -814,7 +822,7 @@ setLabelDistance(constraintIndex:int, value:float) - returns a list of (First FirstPos Second SecondPos Type) tuples with all the detected vertical/horizontal constraints. +Returns a list of (First FirstPos Second SecondPos Type) tuples with all the detected vertical/horizontal constraints. @@ -822,7 +830,7 @@ setLabelDistance(constraintIndex:int, value:float) - returns a list of (First FirstPos Second SecondPos) tuples with all the detected line segment equality constraints. +Returns a list of (First FirstPos Second SecondPos) tuples with all the detected line segment equality constraints. @@ -830,7 +838,7 @@ setLabelDistance(constraintIndex:int, value:float) - returns a list of (First FirstPos Second SecondPos) tuples with all the detected radius constraints. +Returns a list of (First FirstPos Second SecondPos) tuples with all the detected radius constraints. @@ -838,7 +846,7 @@ setLabelDistance(constraintIndex:int, value:float) - returns a list of vertices positions. +Returns a list of vertices positions. @@ -913,12 +921,12 @@ setLabelDistance(constraintIndex:int, value:float) - sets the GeometryId of the SketchGeometryExtension of the geometry with the provided GeoId + Sets the GeometryId of the SketchGeometryExtension of the geometry with the provided GeoId - gets the GeometryId of the SketchGeometryExtension of the geometry with the provided GeoId + Gets the GeometryId of the SketchGeometryExtension of the geometry with the provided GeoId diff --git a/src/Mod/Sketcher/App/SketchObjectSF.pyi b/src/Mod/Sketcher/App/SketchObjectSF.pyi new file mode 100644 index 0000000000..7766381e87 --- /dev/null +++ b/src/Mod/Sketcher/App/SketchObjectSF.pyi @@ -0,0 +1,16 @@ +from Base.Metadata import export +from Part.Part2DObject import Part2DObject + +@export( + Include="Mod/Sketcher/App/SketchObjectSF.h", + FatherInclude="Mod/Part/App/Part2DObjectPy.h", +) +class SketchObjectSF(Part2DObject): + """ + With this objects you can handle sketches + + Author: Juergen Riegel (FreeCAD@juergen-riegel.net) + Licence: LGPL + """ + + ... diff --git a/src/Mod/Sketcher/App/SketchPy.xml b/src/Mod/Sketcher/App/SketchPy.xml index 7285d7951e..6fd4a9f2a2 100644 --- a/src/Mod/Sketcher/App/SketchPy.xml +++ b/src/Mod/Sketcher/App/SketchPy.xml @@ -17,36 +17,36 @@ - solve the actual set of geometry and constraints + Solve the actual set of geometry and constraints - add a geometric object to the sketch + Add a geometric object to the sketch - add an constraint object to the sketch + Add an constraint object to the sketch - clear the sketch + Clear the sketch - moveGeometry(GeoIndex,PointPos,Vector,[relative]) - 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. +moveGeometry(GeoIndex,PointPos,Vector,[relative]) - 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. diff --git a/src/Mod/Sketcher/Gui/CMakeLists.txt b/src/Mod/Sketcher/Gui/CMakeLists.txt index 0b7b27ad7c..38ab21d39f 100644 --- a/src/Mod/Sketcher/Gui/CMakeLists.txt +++ b/src/Mod/Sketcher/Gui/CMakeLists.txt @@ -18,6 +18,7 @@ qt_create_resource_file(${Sketcher_TR_QRC} ${QM_SRCS}) qt_add_resources(SketcherGui_SRCS Resources/Sketcher.qrc ${Sketcher_TR_QRC}) generate_from_xml(ViewProviderSketchGeometryExtensionPy) +generate_from_py_(ViewProviderSketchGeometryExtension) set(SketcherGui_UIC_SRCS TaskSketcherConstraints.ui diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketchGeometryExtension.pyi b/src/Mod/Sketcher/Gui/ViewProviderSketchGeometryExtension.pyi new file mode 100644 index 0000000000..a3994baf4a --- /dev/null +++ b/src/Mod/Sketcher/Gui/ViewProviderSketchGeometryExtension.pyi @@ -0,0 +1,20 @@ +from Base.Metadata import export +from Part.App.GeometryExtension import GeometryExtension + +@export( + PythonName="SketcherGui.ViewProviderSketchGeometryExtension", + Include="Mod/Sketcher/Gui/ViewProviderSketchGeometryExtension.h", + Namespace="SketcherGui", + FatherInclude="Mod/Part/App/GeometryExtensionPy.h", + Constructor=True, +) +class ViewProviderSketchGeometryExtension(GeometryExtension): + """ + Describes a ViewProviderSketchGeometryExtension + + Author: Abdullah Tahiri (abdullah.tahiri.yo@gmail.com) + Licence: LGPL + """ + + VisualLayerId: int = ... + """Sets/returns this geometry's Visual Layer Id."""