# This file is automatically generated for code intellisense only.
# It does not reflect the actual implementation.

from __future__ import annotations
from collections.abc import Iterator

from . import core
from . import fusion

class AdditiveFEAAnalysisType():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The valid analysis types for an additive FEA simulation.
    """
    def __init__(self):
        pass
    Thermal = 2
    Mechanical = 4
    ThermoMechanical = 24

class AdditiveFEACard():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The valid keyword card names for an AdditiveFEADeckBuilderCard in an AdditiveFEADeckBuilder.  Any cards not in this enum can still be made using createGenericCard.
    """
    def __init__(self):
        pass
    TitleCard = 0
    STLToleranceCard = 1
    LayersPerElementCard = 2
    AmbientTemperatureCard = 3
    FinalTemperatureCard = 4
    BuildPlateZBoundsCard = 5
    STLMapCard = 6
    ConvectionCard = 7
    PRMsCard = 8
    STLsCard = 9
    BuildPlateXYExtensionCard = 10
    AdaptivityCard = 11
    AnalysisTypeCard = 12
    BinaryOutputCard = 13
    EnsightOutputCard = 14
    NoOffCoreCard = 15
    OnCore1Card = 16
    CoarseningGenerationsCard = 17
    EndCard = 18
    MaterialCard = 19
    LaserPathGenerationCard = 20
    TransientCard = 21
    PropertyScalingCard = 22
    PowderTypeCard = 23
    FineLayerCountCard = 24
    AutomaticTimingCard = 25
    DiskCheckCard = 26
    GoldakCard = 27
    PowderCard = 28
    AutomaticMeshingCard = 29
    PowderBedYSymmetryCard = 30
    NewPRMGenerationMethodCard = 31
    InitialTemperatureCard = 32
    EvaporationTemperatureCard = 33
    RelaxationCard = 34
    OutputFileFrequencyCard = 35
    SolutionParametersCard = 36
    MechanicalRelaxationCard = 37

class AdditiveFEAGenerationType():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The valid generation types for an additive FEA simulation.
    """
    def __init__(self):
        pass
    MeshPreCheck = 0
    PRM = 1
    Result = 2

class AdditiveFEAMaterial():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The valid materials for PRM generation.  For subsequent part scale models, material properties are automatically loaded from the PRM file.
    """
    def __init__(self):
        pass
    AISI4340AlloySteel = 0
    AlSi10Mg = 1
    CobaltChrome = 2
    Inconel625 = 3
    Inconel718 = 4
    Inconel718Plus = 5
    SAE304 = 6
    StainlessSteel174PH = 7
    StainlessSteel316 = 8
    Ti6Al4V = 9

class AdditiveFEAPowderType():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The valid types for the PowderTypeCard.
    """
    def __init__(self):
        pass
    Automatic = 0
    Scaled = 1
    Custom = 2

class AdditiveFEASTLConfiguration():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The STL configuration IDs for the *STLM card.
    """
    def __init__(self):
        pass
    Part = 1
    BuildPlate = 2
    Support = 3
    Ghost = 4

class AdditiveTechnologies():
    """
    List of technologies a additive machine could have
    """
    def __init__(self):
        pass
    FFFTechnology = 0
    DEDTechnology = 1
    MPBFTechnology = 2
    MFJTechnology = 3
    BinderJettingTechnology = 4
    SLATechnology = 5
    SLSTechnology = 6
    NATechnology = 7
    OtherTechnology = 8
    EbeamTechnology = 9

class ArrangePriorityTypes():
    """
    Enum for the types of priority for an arrange selection.
    """
    def __init__(self):
        pass
    VeryHighArrangePriorityType = 0
    HighArrangePriorityType = 1
    MediumArrangePriorityType = 2
    LowArrangePriorityType = 3
    VeryLowArrangePriorityType = 4

class AutomaticGenerationModes():
    """
    Defines the automatic generation during the creation of an operation using OperationInput or createFromCAMTemplate2.
    """
    def __init__(self):
        pass
    ForceGeneration = 0
    SkipGeneration = 1
    UserPreference = 2

class CAM3MFSupportInclusionType():
    """
    Sets how the support should be included into the 3mf
    Options are not to be included, as 3mf support object or as 3mf model object
    """
    def __init__(self):
        pass
    NotIncluded = 0
    IncludeAsSupportType = 1
    IncludeAsModelType = 2

class CAMAdditiveContainerTypes():
    """
    Enum specifying the types of additive containers available in Fusion.
    Some additive containers not listed here are available via other API classes, i.e. PrintSetting
    """
    def __init__(self):
        pass
    SupportCAMAdditiveContainerType = 0
    OptimizedOrientationCAMAdditiveContainerType = 1
    BodyPresetCAMAdditiveContainerType = 2
    AdditiveProcessSimulationCAMAdditiveContainerType = 3

class DefaultGroupType():
    """
    Types of default groups. Used to specify which default group to be retrieved by defaultGroup method.
    """
    def __init__(self):
        pass
    Fixture_GroupType = 0
    Model_GroupType = 1
    Drive_GroupType = 2
    Floor_GroupType = 3
    Wall_GroupType = 4
    Adjacent_GroupType = 5

class ExtensionMethods():
    """
    Enum for the types of extension methods for a chain selection. It defines how open curves are extended on their open end.
    """
    def __init__(self):
        pass
    TangentExtensionMethod = 0
    ClosestBoundaryExtensionMethod = 1
    ParallelExtensionMethod = 2

class ExtensionTypes():
    """
    Enum for types of extension capping.
    """
    def __init__(self):
        pass
    BoundaryExtensionType = 0
    DistanceExtensionType = 1

class FloatParameterValueTypes():
    """
    Defines the type of a FloatParameterValue.
    """
    def __init__(self):
        pass
    UnspecifiedValueType = 0
    LengthValueType = 1
    AngleValueType = 2
    LinearVelocityValueType = 3
    RotationalVelocityValueType = 4
    TimeValueType = 5
    WeightValueType = 6
    PowerValueType = 7
    FlowRateValueType = 8
    AreaValueType = 9
    VolumeValueType = 10
    TemperatureValueType = 11

class FusionHubExecutionBehaviors():
    """
    Enum to define the behavior when posting to Fusion hub.
    """
    def __init__(self):
        pass
    FusionHubExecutionBehavior_ForceExportWithRelationship = 0
    FusionHubExecutionBehavior_SilentForceExportWithRelationship = 1
    FusionHubExecutionBehavior_ExportWithRelationship = 2
    FusionHubExecutionBehavior_SkipRelationship = 3

class GeneratedDataType():
    """
    Enum for the identifiers of generated results an OperationBase object can have
    """
    def __init__(self):
        pass
    OptimizedOrientationGeneratedDataType = 0
    AdditiveFEAGeneratedDataType = 1

class HoleSegmentType():
    """
    Represents the recognized geometric shape of a hole segment.
    """
    def __init__(self):
        pass
    HoleSegmentTypeCylinder = 0
    HoleSegmentTypeCone = 1
    HoleSegmentTypeFlat = 2
    HoleSegmentTypeTorus = 3

class LibraryLocations():
    """
    List of locations representing folders in the library dialogs.
    """
    def __init__(self):
        pass
    LocalLibraryLocation = 0
    CloudLibraryLocation = 1
    NetworkLibraryLocation = 2
    OnlineSamplesLibraryLocation = 3
    ExternalLibraryLocation = 4
    Fusion360LibraryLocation = 5
    HubLibraryLocation = 6

class LoopTypes():
    """
    Enum to define the type of loop for a face contour selection.
    """
    def __init__(self):
        pass
    AllLoops = 0
    OnlyOutsideLoops = 1
    OnlyInsideLoops = 2

class MachineAnglePreferences():
    """
    Preference for rotary axis starting angles.
    """
    def __init__(self):
        pass
    MachineAngleNoPreference = 0
    MachineAnglePreferNegative = 1
    MachineAnglePreferPositive = 2

class MachineAxisCoordinates():
    """
    Options to control which coordinate is used for post processing, independent of the axis direction.
    Instructs the post processor to treat the axis as X, Y, or Z for linear and A, B, or C for rotary.
    """
    def __init__(self):
        pass
    MachineCoordinate_None = 0
    MachineCoordinate_X_A = 1
    MachineCoordinate_Y_B = 2
    MachineCoordinate_Z_C = 3

class MachineAxisTypes():
    """
    List of machine axis types for MachineAxis
    """
    def __init__(self):
        pass
    LinearMachineAxisType = 0
    RotaryMachineAxisType = 1

class MachineCoolant():
    """
    Enumeration of possible coolants that a machine can use.
    """
    def __init__(self):
        pass
    MachineCoolant_FLOOD = 0
    MachineCoolant_MIST = 1
    MachineCoolant_THROUGH_TOOL = 2
    MachineCoolant_AIR = 3
    MachineCoolant_AIR_THROUGH_TOOL = 4
    MachineCoolant_SUCTION = 5
    MachineCoolant_FLOOD_MIST = 6
    MachineCoolant_FLOOD_THROUGH_TOOL = 7

class MachineElementInputType():
    """
    Enumeration of the types of machine element inputs that can be created.
    """
    def __init__(self):
        pass
    MultiAxisElement = 0
    ToolingCapabilityElement = 1
    ExtruderElement = 2
    LaserElement = 3

class MachineItemType():
    """
    Enumeration of possible MachineItem types.
    """
    def __init__(self):
        pass
    MachineItemType_TOOL = 0
    MachineItemType_TOOL_CUTTER = 1
    MachineItemType_TOOL_NONCUTTER = 2
    MachineItemType_STOCK = 3
    MachineItemType_FIXTURE = 4
    MachineItemType_MODEL = 5
    MachineItemType_MACHINE_PART = 6
    MachineItemType_TURRET_ACTIVE_TOOL = 7
    MachineItemType_TURRET_INACTIVE_TOOL = 8
    MachineItemType_INVALID = 9

class MachineNonTCPInterpolationMode():
    """
    Interpolation modes available for non-TCP motions.
    """
    def __init__(self):
        pass
    MachineNonTCPInterpolationMode_SynchronizedAxes = 0
    MachineNonTCPInterpolationMode_IndependentAxes = 1

class MachinePartTypes():
    """
    List of part types for MachinePart
    """
    def __init__(self):
        pass
    BasicMachinePartType = 0
    AxisMachinePartType = 1
    ToolAttachmentMachinePartType = 2
    FixtureAttachmentMachinePartType = 3

class MachineResetOptions():
    """
    Axis reset preference options for MachineAxisConfiguration.whenToReset.
    """
    def __init__(self):
        pass
    MachineResetNever = 0
    MachineResetBeforeEveryOperation = 1
    MachineResetOnRewind = 2
    MachineResetBeforeOpAndOnRewind = 3

class MachineTCPInterpolationMode():
    """
    Interpolation modes available for TCP motions.
    """
    def __init__(self):
        pass
    MachineTCPInterpolationMode_SynchronizedAxes = 0
    MachineTCPInterpolationMode_IndependentAxes = 1
    MachineTCPInterpolationMode_ToolTip = 2

class MachineTemplate():
    """
    List of the machine templates to create a machine from.
    """
    def __init__(self):
        pass
    GenericLathe = 0
    Generic3Axis = 1
    Generic4Axis = 2
    Generic5AxisHeadHead = 3
    Generic5AxisHeadTable = 4
    Generic5AxisTableTable = 5
    GenericFFF = 6

class MachiningMode():
    """
    Specifies how to treat a surface group
    """
    def __init__(self):
        pass
    Avoid_MachiningMode = 0
    Machine_MachiningMode = 1
    Gouge_MachiningMode = 2
    Fixture_MachiningMode = 3

class ModifyUtilityTypes():
    """
    Types of provided ModifyUtility.
    """
    def __init__(self):
        pass
    AdditiveSetupModifyUtility = 0

class MultiAxisDegreesPerMinuteType():
    """
    Enumeration of the multi-axis degrees per minute types that can be used in MultiAxisDPMFeedrateSettings and its specializations.
    """
    def __init__(self):
        pass
    MultiAxisDegreesPerMinuteType_Standard = 0
    MultiAxisDegreesPerMinuteType_Combination = 1

class MultiAxisFeedMode():
    """
    Enumeration of the multi-axis feed modes that can be used in MultiAxisFeedrateSettings and its specializations.
    """
    def __init__(self):
        pass
    MultiAxisFeedMode_InverseTime = 0
    MultiAxisFeedMode_DegreesPerMinute = 1
    MultiAxisFeedMode_ProgrammerdFeedrate = 2

class MultiAxisInverseTimeUnit():
    """
    The time unit used to calculate the feedrate for the MultiAxisInverseTimeFeedrateSettings
    """
    def __init__(self):
        pass
    MultiAxisInverseTimeUnit_Seconds = 0
    MultiAxisInverseTimeUnit_Minutes = 1

class MultiAxisRetractPreference():
    """
    Enumeration of the multi-axis retract preferences that can be used in MultiAxisRetractAndReconfigureSettings.
    """
    def __init__(self):
        pass
    MultiAxisRetractPreference_RetractAtApex = 0
    MultiAxisRetractPreference_StayAtApex = 1

class MultiAxisRewindPreference():
    """
    Enumeration of the multi-axis rewind preferences that can be used in MultiAxisRetractAndReconfigureSettings.
    """
    def __init__(self):
        pass
    MultiAxisRewindPreference_RewindAtLinear = 0
    MultiAxisRewindPreference_RewindAtRapid = 1

class MultiAxisRotationTypes():
    """
    Enum for the types of multi-axis rotation for an arrange selection.
    """
    def __init__(self):
        pass
    MultiAxisRotationType_SingleAxis = 0
    MultiAxisRotationType_AllAxes = 1
    MultiAxisRotationType_XYAxes = 2
    MultiAxisRotationType_XZAxes = 3
    MultiAxisRotationType_YZAxes = 4

class MultiAxisSingularityLinearizeMethod():
    """
    The linearization method the MultiAxisSingularitySettings should use.
    Different values will be used in different MultiAxisSingularitySettings specializations.
    """
    def __init__(self):
        pass
    MultiAxisSingularityLinearize_Linear = 0
    MultiAxisSingularityLinearize_Rotary = 1

class NoteIconColors():
    """
    Available colors for the note icon.
    """
    def __init__(self):
        pass
    Gray = 0
    Red = 1
    Blue = 2
    Green = 3
    Yellow = 4

class OperationStates():
    """
    The possible states of an operation. Some operations do not generate toolpaths, their state ignores the potential toolpath states.
    """
    def __init__(self):
        pass
    IsValidOperationState = 0
    IsInvalidOperationState = 1
    SuppressedOperationState = 2
    NoToolpathOperationState = 3

class OperationTypes():
    """
    The valid options for the Operation Type of a Setup.
    """
    def __init__(self):
        pass
    MillingOperation = 0
    TurningOperation = 1
    JetOperation = 2
    AdditiveOperation = 3

class PostCapabilities():
    """
    List of capabilities a post configuration can support.
    These capabilities represent either a class of operations (milling, turning, etc.) or some additional functionality (e.g. machine simulation).
    """
    def __init__(self):
        pass
    Undefined = 0
    Milling = 1
    Turning = 2
    SetupSheet = 4
    Intermediate = 8
    Jet = 16
    Cascading = 32
    Additive = 64
    Inspection = 128
    MachineSimulation = 256

class PostOutputUnitOptions():
    """
    List of the valid options for the outputUnit property on a PostProcessInput object .
    """
    def __init__(self):
        pass
    DocumentUnitsOutput = 0
    InchesOutput = 1
    MillimetersOutput = 2

class PostProcessExecutionBehaviors():
    def __init__(self):
        pass
    PostProcessExecutionBehavior_OmitInvalidAndEmptyOperations = 0
    PostProcessExecutionBehavior_Fail = 1
    PostProcessExecutionBehavior_PostAll = 2

class PrintSettingItemTypes():
    """
    Enum that represents the types of CAMParameters.
    Represents the General and Exporter parameters type in PrintSetting.
    """
    def __init__(self):
        pass
    GENERAL = 0
    EXPORTER = 1

class RecognizedPocketBottomType():
    """
    Types of pocket bottoms that can exist. Flat represents a standard flat bottom with sharp
    edges at the walls. (Flat may also have some portions that are through, but may not have any
    portions that are chamfered or filleted.) Through represents a pocket with no bottom
    anywhere along the boundary and sharp edges at the walls. Chamfer and fillet represent pockets
    where that type of feature goes around all edges of the boundary and islands, between the bottom
    and the walls.  Other represents any other cases, such as a mix of different bottom types for
    different edges.
    """
    def __init__(self):
        pass
    RecognizedPocketBottomTypeFlat = 0
    RecognizedPocketBottomTypeThrough = 1
    RecognizedPocketBottomTypeChamfer = 2
    RecognizedPocketBottomTypeFillet = 3
    RecognizedPocketBottomTypeOther = 4

class SetupChangeEventType():
    """
    List of setup change event types.
    """
    def __init__(self):
        pass
    Arbitrary = 0
    PrintSettingSelection = 1

class SetupSheetFormats():
    """
    List of the formats to choose from when generating setup sheets
    """
    def __init__(self):
        pass
    HTMLFormat = 0
    ExcelFormat = 1

class SetupStockModes():
    """
    List of setup stock modes.
    """
    def __init__(self):
        pass
    FixedBoxStock = 0
    RelativeBoxStock = 1
    FixedCylinderStock = 2
    RelativeCylinderStock = 3
    FixedTubeStock = 4
    RelativeTubeStock = 5
    SolidStock = 6
    PreviousSetupStock = 7

class SideTypes():
    """
    Enum for the order of loops.
    """
    def __init__(self):
        pass
    AlwaysOutsideSideType = 0
    AlwaysInsideSideType = 1
    StartOutsideSideType = 2
    StartInsideSideType = 3

class SplitSupportTypes():
    """
    Split support behavior depending on the type of support.
    """
    def __init__(self):
        pass
    SolidOpenMergedSplitSupportType = 0
    SolidOpenSeparateSplitSupportType = 1

class AdditiveFEAConvection(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Convection defines the temperature-dependent heat loss boundary condition according to Newton's law of cooling.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AdditiveFEAConvection:
        return AdditiveFEAConvection()
    def append(self, convectionCoefficient: float, temperature: float) -> None:
        """
        Append a row of data to the convection table.
        convectionCoefficient : Convection in W/mm^2-K.
        temperature : Temperature in C.
        """
        pass

class AdditiveFEADeckBuilder(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The AdditiveFEADeckBuilder supplies methods to generate cards to be used for generating an FEA simulation result.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AdditiveFEADeckBuilder:
        return AdditiveFEADeckBuilder()
    @staticmethod
    def create() -> AdditiveFEADeckBuilder:
        """
        Creates a new AdditiveFEADeckBuilder object.
        Returns the newly created AdditiveFEADeckBuilder object or null if the creation failed.
        """
        return AdditiveFEADeckBuilder()
    def createSTLMap(self) -> AdditiveFEASTLMap:
        """
        Creates a new AdditiveFEASTLMap object to define *STLM data.
        Returns an initially empty AdditiveFEASTLMap.
        """
        return AdditiveFEASTLMap()
    def createConvection(self) -> AdditiveFEAConvection:
        """
        Creates a new AdditiveFEAConvection object to define *CONV data.
        Returns an initially empty AdditiveFEAConvection table.
        """
        return AdditiveFEAConvection()
    def append(self, card: AdditiveFEADeckBuilderCard) -> None:
        """
        Append an input card to the deck.
        """
        pass
    def createGenericCard(self, name: str, value: str) -> AdditiveFEADeckBuilderCard:
        """
        Creates a generic key value card.
        name : The name of the card keyword, e.g. "*TITLE" or "*ADAP".
        value : The value of the card's argument as a string.
        Returns the card name-value pair.
        """
        return AdditiveFEADeckBuilderCard()
    def createVoidCard(self, card: AdditiveFEACard) -> AdditiveFEADeckBuilderCard:
        """
        Creates a generic enumerated card with no arguments.  Cards that can be created as a void card include:
        - BinaryOutputCard
        - EnsightOutputCard
        - NoOffCoreCard
        - OnCore1Card
        - PowderCard
        - AutomaticMeshingCard
        - PowderBedYSymmetryCard
        - NewPRMGenerationMethodCard
        - EndCard
        card : The type of card to create, e.g. BinaryOutputCard.
        Returns the card name-value pair.  For void cards, the value is an empty string.
        """
        return AdditiveFEADeckBuilderCard()
    def createIntCard(self, card: AdditiveFEACard, value: int) -> AdditiveFEADeckBuilderCard:
        """
        Creates a generic enumerated card with a single integer argument.  Cards that can be created as an int card include:
        - AnalysisTypeCard
        - LayersPerElementCard
        - CoarseningGenerationsCard
        - AdaptivityCard
        - PowderTypeCard
        - FineLayerCountCard
        - OutputFileFrequencyCard
        card : The type of card to create, e.g. LayersPerElementCard.
        value : The int value argument of the card.
        Returns the card name-value pair.
        """
        return AdditiveFEADeckBuilderCard()
    def createDoubleCard(self, card: AdditiveFEACard, value: float) -> AdditiveFEADeckBuilderCard:
        """
        Creates a generic enumerated card with a single double argument.  Cards that can be created as a double card include:
        - STLToleranceCard
        - InitialTemperatureCard
        - AmbientTemperatureCard
        - FinalTemperatureCard
        - EvaporationTemperatureCard
        - AutomaticTimingCard
        card : The type of card to create, e.g. STLToleranceCard.
        value : The double value argument of the card.
        Returns the card name-value pair.
        """
        return AdditiveFEADeckBuilderCard()
    def createStringCard(self, card: AdditiveFEACard, value: str) -> AdditiveFEADeckBuilderCard:
        """
        Creates a generic enumerated card with a single string argument.
        Card(s) that can be created as a string card include:
        - TitleCard
        card : The type of card to create, e.g. TitleCard.
        value : The string value argument of the card.
        Returns the card name-value pair.
        """
        return AdditiveFEADeckBuilderCard()
    def createStringArrayCard(self, card: AdditiveFEACard, value: list[str]) -> AdditiveFEADeckBuilderCard:
        """
        Creates a generic enumerated card with an array of string arguments.  Cards that can be created as a string array card include:
        - STLsCard
        - PRMsCard
        card : The type of card to create, e.g. STLsCard.
        value : The string-array value argument of the card.
        Returns the card name-value pair.
        """
        return AdditiveFEADeckBuilderCard()
    def createBuildPlateZBoundsCard(self, zTop: float, zBottom: float) -> AdditiveFEADeckBuilderCard:
        """
        Creates the *DDM! card to define the build plate z position and thickness.
        zTop : The z coordinate of the top of the build plate in mm.  This should match the bottom z coordinate of the parts or supports.
        zBottom : The z coordinate of the bottom of the build plate in mm.
        Returns the *DDM! card name-value pair.
        """
        return AdditiveFEADeckBuilderCard()
    def createDiskCheckCard(self, i1: int, r1: float) -> AdditiveFEADeckBuilderCard:
        """
        Creates the *IOBN card to enable or disable the disk check.
        i1 : Set i1 to a negative value to disable the check, or 0 or a positive value to enable the check.
        r1 : Unused dummy argument.
        Returns the *IOBN card name-value pair.
        """
        return AdditiveFEADeckBuilderCard()
    def createSTLMapCard(self, map: AdditiveFEASTLMap) -> AdditiveFEADeckBuilderCard:
        """
        Creates the *STLM card to define the STL mapping.
        map : An AdditiveFEASTLMap object to define the mapping of configuration, PRM, material, and volume fraction for each body.
        Returns the *STLM card name-value pair.
        """
        return AdditiveFEADeckBuilderCard()
    def createConvectionCard(self, convection: AdditiveFEAConvection) -> AdditiveFEADeckBuilderCard:
        """
        Creates the *CONV card to define a convection boundary condition.
        convection : A convection table defining the temperature-dependent convection coefficients.
        Returns the *CONV card name-value pair.
        """
        return AdditiveFEADeckBuilderCard()
    def createBuildPlateXYExtensionCard(self, left: float, right: float, front: float, back: float) -> AdditiveFEADeckBuilderCard:
        """
        Creates the *SBXY card.  Arguments are per the Fusion view cube, i.e. left is -x, right is +x, front is -y, and back is +y.
        left : Relative left extension in mm.
        right : Relative right extension in mm.
        front : Relative front extension in mm.
        back : Relative back extension in mm.
        """
        return AdditiveFEADeckBuilderCard()
    def createMaterialCard(self, material: AdditiveFEAMaterial, materialId: int) -> AdditiveFEADeckBuilderCard:
        """
        Creates the *MATE card block.
        material : The type of material to be simulated.
        materialId : The integer material identifier, typically 1 for single-material simulations.
        """
        return AdditiveFEADeckBuilderCard()
    def createLaserPathGenerationCard(self, power: float, radius: float, speed: float, thickness: float, hatch: float, recoaterTime: float, layerCount: int, initialAngle: float, angleChange: float, xSize: float, ySize: float) -> AdditiveFEADeckBuilderCard:
        """
        Creates the *LSRP card.
        power : Heat source power in W.
        radius : Radius of the melt pool in mm.
        speed : Travel speed in mm/s.
        thickness : Layer thickness in mm.
        hatch : Hatch spacing (gap width) in mm.
        recoaterTime : Recoater time in s.
        layerCount : Number of layers.
        initialAngle : Initial vector angle in degrees.
        angleChange : Vector angle change from layer to layer, in degrees.
        xSize : x size of part in mm.
        ySize : y size of part in mm.
        """
        return AdditiveFEADeckBuilderCard()
    def createTransientCard(self, startTime: float, endTime: float, initialTimeIncrement: float, maxTimeIncrement: float, minTimeIncrement: float, incrementTol: float, maxCutbacks: int, maxIncrements: int) -> AdditiveFEADeckBuilderCard:
        """
        Creates the *TRAN card.
        startTime : Start time in s.
        endTime : End time in s.
        initialTimeIncrement : Initial time increment in s.
        maxTimeIncrement : Maximum allowable time increment in s.
        minTimeIncrement : Minimum allowable time increment in s.
        incrementTol : Incrementation tolerance.
        maxCutbacks : Maximum number of cutbacks.
        maxIncrements : Maximum number of increments.
        """
        return AdditiveFEADeckBuilderCard()
    def createPropertyScalingCard(self, conductivityScaling: float, specificHeatScaling: float, elasticModulusScaling: float, emissivityScaling: float) -> AdditiveFEADeckBuilderCard:
        """
        Creates the *DDM1 card.
        conductivityScaling : Scaling factor for thermal conductivity.
        specificHeatScaling : Scaling factor for specific heat.
        elasticModulusScaling : Scaling factor for elastic modulus.
        emissivityScaling : Scaling factor for thermal emissivity.
        """
        return AdditiveFEADeckBuilderCard()
    def createGoldakCard(self, efficiency: float, bAxisMultiplier: float, c1AxisMultiplier: float, c2AxisMultiplier: float, f1Factor: float, f2Factor: float) -> AdditiveFEADeckBuilderCard:
        """
        Creates the *GOLD card.  See the figure at the following link for an illustration of the axes:  https://help.autodesk.com/view/NETF/2026/ENU/?guid=GUID-3634FFD9-1976-4556-BE46-ED5850410853
        efficiency : Efficiency.
        bAxisMultiplier : b axis multiplier in the local y direction.
        c1AxisMultiplier : c1 axis multiplier in the local z direction.
        c2AxisMultiplier : c2 axis multiplier in the local z direction.
        f1Factor : f1 factor.
        f2Factor : f2 factor.
        """
        return AdditiveFEADeckBuilderCard()
    def createRelaxationCard(self, iterations: int, scalingFactor: float) -> AdditiveFEADeckBuilderCard:
        """
        Creates the *RELA card.
        iterations : Number of relaxation iterations.
        scalingFactor : Relaxation scaling factor.
        """
        return AdditiveFEADeckBuilderCard()
    def createSolutionParametersCard(self, maxIterations: int, tolerance: float, maxResidual: float) -> AdditiveFEADeckBuilderCard:
        """
        Creates the *SOLU card.
        maxIterations : Maximum number of iterations.
        tolerance : Residual tolerance.
        maxResidual : Maximum residual.
        
        """
        return AdditiveFEADeckBuilderCard()
    def createMechanicalRelaxationCard(self, isUsed: int, maxIterations: int, scalingFactor: float) -> AdditiveFEADeckBuilderCard:
        """
        Creates the *RELM card.
        isUsed : 1 if mechanical numerical relaxation is used; otherwise, 0 (or other value).
        maxIterations : Number of relaxation iterations.
        scalingFactor : Relaxation scaling factor.
        
        """
        return AdditiveFEADeckBuilderCard()
    @property
    def cards(self) -> list[AdditiveFEADeckBuilderCard]:
        """
        Gets the list of cards that makes up the deck.
        """
        return [AdditiveFEADeckBuilderCard()]

class AdditiveFEADeckBuilderCard(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    An AdditiveFEADeckBuilderCard is a single card in an additive FEA simulation input file.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AdditiveFEADeckBuilderCard:
        return AdditiveFEADeckBuilderCard()
    @property
    def name(self) -> str:
        return str()
    @property
    def stringValue(self) -> str:
        return str()
    @stringValue.setter
    def stringValue(self, value: str):
        pass

class AdditiveFEASTLMap(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The AdditiveFEASTLMap defines the relationship of geometries in STL format to parts, supports, materials, PRM files, and volume fractions or solidities.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AdditiveFEASTLMap:
        return AdditiveFEASTLMap()
    def append(self, configuration: AdditiveFEASTLConfiguration, prmId: int, materialId: int, volumeFraction: float) -> None:
        """
        Append a row of *STLM data for a single geometry to the STL map.
        configuration : Specifies the geometry as either part, support, build plate, or ghost part.  See the definition of the AdditiveFEASTLConfiguration enum.
        prmId : Maps a set of processing parameters from a PRM file to the geometry.
        materialId : Maps a set of material properties to the geometry.
        volumeFraction : Set a volume fraction for the geometry in the range [0, 1].
        """
        pass

class ArrangeSelections(core.Base):
    """
    Collection for all arrange selections to be passed to a CAMArrangeParameterValue object.
    This is a read-only container. It returns the arrange selections associated with the parent parameter value object, but does not write to it.
    To apply changes done to the collection and the selections it contains, CAMArrangeParameterValue.applyArrangeSelections() needs to be called.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ArrangeSelections:
        return ArrangeSelections()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ArrangeSelection:
        return None
    def __iter__(self) -> Iterator[ArrangeSelection]:
        return None
    def item(self, index: int) -> ArrangeSelection:
        """
        Function that returns the specified arrange selection object using an index into the collection.
        index : The index of the item within the collection to return.  The first item in the collection has an index of 0.
        Returns the specified item or null if an invalid index was specified.
        """
        return ArrangeSelection()
    def clear(self) -> None:
        """
        Clears all entries.
        """
        pass
    def remove(self, index: int) -> None:
        """
        Function that removes the specified arrange selection object using an index in the collection.
        index : The index of the item within the collection to remove.  The first item in the collection has an index of 0.
        """
        pass
    def removeByObject(self, selection: ArrangeSelection) -> None:
        """
        Function that removes the specified arrange selection object from the collection.
        selection : The item within the collection to remove.  Throws an exception if the arrange selection is not part of the given selection.
        """
        pass
    def createNewArrangeSelection(self) -> ArrangeSelection:
        """
        Creates a new occurrence selection meant for arrange operations and adds it to the end of the collection.
        Returns newly created ArrangeSelection.
        """
        return ArrangeSelection()
    @property
    def count(self) -> int:
        """
        The number of items in the collection.
        """
        return int()

class AssemblyComponentGeometry(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Represents the 3D geometry and attachment points for a tool component (such as a tool holder or tool block).
    
    AssemblyComponentGeometry provides the ability to define custom 3D geometry for tool components using STEP file data,
    along with joint origins that specify how the component attaches to other parts of the tool assembly (machine side and cutting side).
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AssemblyComponentGeometry:
        return AssemblyComponentGeometry()
    def setStepGeometry(self, stepFileContents: str) -> None:
        """
        Use the given step file geometry to set the geometry of the tool item.
        stepFileContents : Contents of a STEP file as a string that contains the geometry to use for this tool item.
        """
        pass
    @property
    def isValidGeometry(self) -> bool:
        """
        An Assembly Component Geometry instance is valid if we have all of:
        1. Valid solid geometry representing the shape of the item
        2. A valid joint origin for both Machine and Cutting side attachments
        
        If we are missing any or all of these elements the item is invalid, and will not be used by any tool it
        is attached to for rendering or simulation purposes.
        """
        return bool()

class CAM3MFExportMetadataOptions(core.Base):
    """
    Class providing read and write access to meta data of a 3MF file.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CAM3MFExportMetadataOptions:
        return CAM3MFExportMetadataOptions()
    @property
    def enabled(self) -> bool:
        """
        Enable or disable the integration of Metadata in the 3mf.
        This is true by default.
        """
        return bool()
    @enabled.setter
    def enabled(self, value: bool):
        """
        Enable or disable the integration of Metadata in the 3mf.
        This is true by default.
        """
        pass
    @property
    def title(self) -> str:
        """
        Title of the 3MF File
        """
        return str()
    @title.setter
    def title(self, value: str):
        """
        Title of the 3MF File
        """
        pass
    @property
    def designer(self) -> str:
        """
        Designer of the 3MF File
        """
        return str()
    @designer.setter
    def designer(self, value: str):
        """
        Designer of the 3MF File
        """
        pass
    @property
    def description(self) -> str:
        """
        Description of the 3MF File
        """
        return str()
    @description.setter
    def description(self, value: str):
        """
        Description of the 3MF File
        """
        pass
    @property
    def copyright(self) -> str:
        """
        Copyright of the 3MF File
        """
        return str()
    @copyright.setter
    def copyright(self, value: str):
        """
        Copyright of the 3MF File
        """
        pass
    @property
    def licenseTerms(self) -> str:
        """
        License terms of the 3MF File
        """
        return str()
    @licenseTerms.setter
    def licenseTerms(self, value: str):
        """
        License terms of the 3MF File
        """
        pass
    @property
    def creationDate(self) -> str:
        """
        Creation date of the 3MF File
        """
        return str()
    @creationDate.setter
    def creationDate(self, value: str):
        """
        Creation date of the 3MF File
        """
        pass
    @property
    def modificationDate(self) -> str:
        """
        Modification date of the 3MF File
        """
        return str()
    @modificationDate.setter
    def modificationDate(self, value: str):
        """
        Modification date of the 3MF File
        """
        pass

class CAM3MFExportStructure(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Options for the 3MF structure and naming conventions.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CAM3MFExportStructure:
        return CAM3MFExportStructure()
    @property
    def isBodyEncapsulatedInComponent(self) -> bool:
        """
        Flag indicating if each BRepBody or MeshBody should be encapsulated in its own component within the 3MF file.
        Supports belonging to that body will be included in the same component.
        By default, this is set to false, meaning that all bodies are exported directly into the parent component alongside their sibling bodies.
        The additional component is named after the body without any contatenation of parent component names.
        """
        return bool()
    @isBodyEncapsulatedInComponent.setter
    def isBodyEncapsulatedInComponent(self, value: bool):
        """
        Flag indicating if each BRepBody or MeshBody should be encapsulated in its own component within the 3MF file.
        Supports belonging to that body will be included in the same component.
        By default, this is set to false, meaning that all bodies are exported directly into the parent component alongside their sibling bodies.
        The additional component is named after the body without any contatenation of parent component names.
        """
        pass
    @property
    def isStructureStartingAtRoot(self) -> bool:
        """
        Flag indicating if the Item objects in the 3MF file reference only the asset, meaning the product of the Design or Manufacturing Model,
        or if the hierarchy is simplified to the lowest distinct component level.
        In the latter case a 3MF with multiple components is produced.
        By default, this is set to false.
        """
        return bool()
    @isStructureStartingAtRoot.setter
    def isStructureStartingAtRoot(self, value: bool):
        """
        Flag indicating if the Item objects in the 3MF file reference only the asset, meaning the product of the Design or Manufacturing Model,
        or if the hierarchy is simplified to the lowest distinct component level.
        In the latter case a 3MF with multiple components is produced.
        By default, this is set to false.
        """
        pass
    @property
    def maximumMeshParentCount(self) -> int:
        """
        Specifies the maximum number of parents listed in the name property for the mesh. If the number used is higher than the number of available parents, all parents are used.
        Given a body called Body1 whose assembly context's fullpath is "Manufacturing Models 1:1+ManufacturingModel 1:2+Unsaved (1)1:1+Component1:3",
        the following results are expected for the maximumMeshParentCount value given with "+" being used for the concatination:
        
        <ul>
        <li>-1 - id="8" name="Manufacturing Models 1:1+ManufacturingModel 1:2+Unsaved (1)1:1+Component1:3+Body1"</li>
        <li>0 - id="8" name="Body1"</li>
        <li>1 - id="8" name="Component1:3+Body1"</li>
        <li>2 - id="8" name="Unsaved (1)1:1+Component1:3+Body1"</li>
        </ul>
        
        By default, this value is set to 1.
        """
        return int()
    @maximumMeshParentCount.setter
    def maximumMeshParentCount(self, value: int):
        """
        Specifies the maximum number of parents listed in the name property for the mesh. If the number used is higher than the number of available parents, all parents are used.
        Given a body called Body1 whose assembly context's fullpath is "Manufacturing Models 1:1+ManufacturingModel 1:2+Unsaved (1)1:1+Component1:3",
        the following results are expected for the maximumMeshParentCount value given with "+" being used for the concatination:
        
        <ul>
        <li>-1 - id="8" name="Manufacturing Models 1:1+ManufacturingModel 1:2+Unsaved (1)1:1+Component1:3+Body1"</li>
        <li>0 - id="8" name="Body1"</li>
        <li>1 - id="8" name="Component1:3+Body1"</li>
        <li>2 - id="8" name="Unsaved (1)1:1+Component1:3+Body1"</li>
        </ul>
        
        By default, this value is set to 1.
        """
        pass
    @property
    def maximumComponentParentCount(self) -> int:
        """
        Specifies the maximum number of parents listed in the name property for the component. If the number used is higher than the number of available parents, all parents are used.
        Given a body called Body1 whose assembly context's fullpath is "Manufacturing Models 1:1+ManufacturingModel 1:2+Unsaved (1)1:1+Component1:3",
        the following results are expected for the maximumMeshParentCount value given with "+" being used for the concatination:
         In this example, the component with id 4 contains component with id 5, which contains component with id 6, which in turn contains component with id 7
        <ul>
        <li>-1 -
          <ul>
            <li>id="7" name="Manufacturing Models 1:1+ManufacturingModel 1:2+Unsaved (1)1:1+Component1:3" </li>
            <li>id="6" name="Manufacturing Models 1:1+ManufacturingModel 1:2+Unsaved (1)1:1" </li>
            <li>id="5" name="Manufacturing Models 1:1+ManufacturingModel 1:2" </li>
            <li>id="4" name="Manufacturing Models 1:1" </li>
          </ul>
        </li>
        <li>0 - 4 contains 5, which contains 6, which contains 7
          <ul>
            <li>id="7" name="Component1:3" </li>
            <li>id="6" name="Unsaved (1)1:1" </li>
            <li>id="5" name="ManufacturingModel 1:2" </li>
            <li>id="4" name="Manufacturing Models 1:1" </li>
          </ul>
        </li>
        <li>1 -
          <ul>
            <li>id="7" name="Unsaved (1)1:1+Component1:3" </li>
            <li>id="6" name="ManufacturingModel 1:2+Unsaved (1)1:1" </li>
            <li>id="5" name="Manufacturing Models 1:1+ManufacturingModel 1:2" </li>
            <li>id="4" name="Manufacturing Models 1:1" </li>
          </ul>
        </li>
        </ul>
        
        By default, this value is set to 0.
        """
        return int()
    @maximumComponentParentCount.setter
    def maximumComponentParentCount(self, value: int):
        """
        Specifies the maximum number of parents listed in the name property for the component. If the number used is higher than the number of available parents, all parents are used.
        Given a body called Body1 whose assembly context's fullpath is "Manufacturing Models 1:1+ManufacturingModel 1:2+Unsaved (1)1:1+Component1:3",
        the following results are expected for the maximumMeshParentCount value given with "+" being used for the concatination:
         In this example, the component with id 4 contains component with id 5, which contains component with id 6, which in turn contains component with id 7
        <ul>
        <li>-1 -
          <ul>
            <li>id="7" name="Manufacturing Models 1:1+ManufacturingModel 1:2+Unsaved (1)1:1+Component1:3" </li>
            <li>id="6" name="Manufacturing Models 1:1+ManufacturingModel 1:2+Unsaved (1)1:1" </li>
            <li>id="5" name="Manufacturing Models 1:1+ManufacturingModel 1:2" </li>
            <li>id="4" name="Manufacturing Models 1:1" </li>
          </ul>
        </li>
        <li>0 - 4 contains 5, which contains 6, which contains 7
          <ul>
            <li>id="7" name="Component1:3" </li>
            <li>id="6" name="Unsaved (1)1:1" </li>
            <li>id="5" name="ManufacturingModel 1:2" </li>
            <li>id="4" name="Manufacturing Models 1:1" </li>
          </ul>
        </li>
        <li>1 -
          <ul>
            <li>id="7" name="Unsaved (1)1:1+Component1:3" </li>
            <li>id="6" name="ManufacturingModel 1:2+Unsaved (1)1:1" </li>
            <li>id="5" name="Manufacturing Models 1:1+ManufacturingModel 1:2" </li>
            <li>id="4" name="Manufacturing Models 1:1" </li>
          </ul>
        </li>
        </ul>
        
        By default, this value is set to 0.
        """
        pass
    @property
    def parentNameConcatenationString(self) -> str:
        """
        String to be used to concatenate parent names.
        By default, this is set to "+".
        """
        return str()
    @parentNameConcatenationString.setter
    def parentNameConcatenationString(self, value: str):
        """
        String to be used to concatenate parent names.
        By default, this is set to "+".
        """
        pass

class CAMAdditiveBuildExportFilter(core.Base):
    """
    Export filter used by CAMAdditiveMachineBuildFileExportOptions.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CAMAdditiveBuildExportFilter:
        return CAMAdditiveBuildExportFilter()
    @property
    def isMultiFileExport(self) -> bool:
        """
        True if the export outputs multiple files.
        If so, fullFilename should point to a directory, not a file.
        """
        return bool()
    @property
    def extension(self) -> str:
        """
        The extension of the file format, including a leading "."
        """
        return str()
    @property
    def name(self) -> str:
        """
        The name of the file format. Might indicate whether a file format is binary or not.
        """
        return str()
    @property
    def id(self) -> str:
        """
        The id of the file format.
        """
        return str()

class CAMExportFuture(core.Base):
    """
     Used to check the state and get back the results of an operation generation.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CAMExportFuture:
        return CAMExportFuture()
    @property
    def exportOptions(self) -> CAMExportOptions:
        """
        Returns the export option used to define the export associated with this future object.
        """
        return CAMExportOptions()
    @property
    def isGenerationCompleted(self) -> bool:
        """
        Returns true if the export has finished generating.
        """
        return bool()
    @property
    def progress(self) -> float:
        """
        Returns the progress as a percentage value between 0.0% and 100.0%.
        """
        return float()
    @property
    def error(self) -> str:
        """
        Gets the last encountered error message generated on the export thread.
        Returns an empty string if no errors have been found.
        """
        return str()
    @property
    def warning(self) -> str:
        """
        Gets the last encountered warning message  generated on the export thread.
        Returns an empty string if no warnings have been found.
        """
        return str()

class CAMExportManager(core.Base):
    """
    Export manager used to export the setup's models in one of the formats defined the ExportOptions objects.
    The export is currently restricted to additive setups only and the availability of the export option and its settings depends on the chosen machine.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CAMExportManager:
        return CAMExportManager()
    def execute(self, exportOptions: CAMExportOptions) -> bool:
        """
        Executes an export based on the export options.
        exportOptions : The export options defining the export type and necessary meta data.
        Returns true if the export finished successfully.
        """
        return bool()
    def create3MFOptions(self) -> CAM3MFExportOptions:
        """
        Creates a new 3MF export option.
        Returns new CAM3MFExportOptions.
        """
        return CAM3MFExportOptions()
    def createCAMAdditiveBuildExportOptions(self) -> CAMAdditiveBuildExportOptions:
        """
        Creates a new export option based on the print setting's export formats.
        FFF and DED machines are not supported, their export files are generated using posts.
        Returns new CAMAdditiveBuildExportOptions.
        """
        return CAMAdditiveBuildExportOptions()
    def executeWithExportFuture(self, exportOptions: CAMExportOptions) -> CAMExportFuture:
        """
        Executes an export based on the export options
        exportOptions : The export options defining the export type and necessary meta data.
        Returns a CAMExportFuture object if the export has started successfully.
        """
        return CAMExportFuture()
    def createPRMExportOptions(self) -> PRMExportOptions:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Creates new PRM export options.
        Returns new PRM export options.
        """
        return PRMExportOptions()

class CAMExportOptions(core.Base):
    """
    Parent class for all ExportOptions objects giving access to the setup and file name used for the export.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CAMExportOptions:
        return CAMExportOptions()
    @property
    def fullFilename(self) -> str:
        """
        The file we want to export to. Needs to contain a valid path, as no intermediate folders are created.
        """
        return str()
    @fullFilename.setter
    def fullFilename(self, value: str):
        """
        The file we want to export to. Needs to contain a valid path, as no intermediate folders are created.
        """
        pass
    @property
    def exportObject(self) -> core.Base:
        """
        The export object we want to export. Depending on the actual export option, this might be geometry, an operation or a setup.
        """
        return core.Base()
    @exportObject.setter
    def exportObject(self, value: core.Base):
        """
        The export object we want to export. Depending on the actual export option, this might be geometry, an operation or a setup.
        """
        pass
    @property
    def thumbnailPath(self) -> str:
        """
        Path to the thumbnail for the buildfile
        """
        return str()
    @thumbnailPath.setter
    def thumbnailPath(self, value: str):
        """
        Path to the thumbnail for the buildfile
        """
        pass
    @property
    def isThumbnailSupported(self) -> bool:
        """
        Method to check if the exporter implementation supports thumbnail
        """
        return bool()
    @property
    def error(self) -> str:
        """
        Gets the last encountered error message.
        When the CAMExportManager's executeWithExportFuture() method is used, this method only returns errors encoutered when setting up the export.
        Errors thrown afterwards can be retrieved via the CAMExportFuture object.
        When the CAMExportManager's execute() method is used, any error can be retrieved using this property.
        Returns an empty string if no errors have been found.
        """
        return str()

class CAMFolders(core.Base):
    """
    Collection that provides access to the folders within an existing setup, folder or pattern.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CAMFolders:
        return CAMFolders()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> CAMFolder:
        return None
    def __iter__(self) -> Iterator[CAMFolder]:
        return None
    def item(self, index: int) -> CAMFolder:
        """
        Function that returns the specified folder using an index into the collection.
        index : The index of the item within the collection to return.  The first item in the collection has an index of 0.
        Returns the specified item or null if an invalid index was specified.
        """
        return CAMFolder()
    def itemByName(self, name: str) -> CAMFolder:
        """
        Returns the folder with the specified name (as appears in the browser).
        name : The name (as it appears in the browser) of the folder.
        Returns the specified folder or null in the case where there is no folder with the specified name.
        """
        return CAMFolder()
    def itemByOperationId(self, id: int) -> CAMFolder:
        """
        Returns the folder with the specified operation id.
        id : The id of the folder.
        Returns the specified folder or null in the case where there is no folder with the specified operation id.
        """
        return CAMFolder()
    def addFolder(self, name: str) -> CAMFolder:
        """
        Creates a folder with the specified name and returns it as CAMFolder object.
        name : The name (as it appears in the browser) of the folder.
        Returns the newly created folder or null if folder can't be created.
        """
        return CAMFolder()
    @property
    def count(self) -> int:
        """
        The number of items in the collection.
        """
        return int()

class CAMLibrary(core.Base):
    """
    The CAMLibrary is the base-class for all other asset-specific libraries.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CAMLibrary:
        return CAMLibrary()
    def urlByLocation(self, location: LibraryLocations) -> core.URL:
        """
        Get the URL for a given LibraryLocations.
        location : The LibraryLocations to be converted into an URL.
        Returns the URL for given location.
        """
        return core.URL()
    def displayName(self, url: core.URL) -> str:
        """
        Get the localized display name for a given URL. The URL must point to a folder.
        url : The URL that defines the path to a folder.
        Returns localized display name for the folder. Returns empty string for invalid URL.
        """
        return str()
    def childFolderURLs(self, url: core.URL) -> list[core.URL]:
        """
        Get all library folders under given URL.
        url : The URL to the parent folder.
        Returns list of folder URLs at given location.
        """
        return [core.URL()]
    def childAssetURLs(self, url: core.URL) -> list[core.URL]:
        """
        Get all assets under given URL.
        url : The URL to the parent folder.
        Returns list of asset URLs at given location.
        """
        return [core.URL()]
    def deleteFolder(self, url: core.URL) -> bool:
        """
        Delete folder by URL from the library. Any content of the folder will also be deleted.
        Throw an error if given URL does not point to a valid folder or the URL is read-only.
        url : The URL to the folder that should be removed.
        Returns true if folder was deleted successfully, false otherwise
        """
        return bool()
    def deleteAsset(self, url: core.URL) -> bool:
        """
        Delete asset by URL from the library.
        Throw an error if given URL does not point to a valid asset or the URL is read-only.
        url : The URL to the asset that should be removed.
        Returns true if asset was deleted successfully, false otherwise
        """
        return bool()
    def createFolder(self, parentUrl: core.URL, folderName: str) -> core.URL:
        """
        Create a new folder in the library. Create the folder under given parent URL with given folder name. Add counting suffix, in case a folder with given name already exists.
        Throw an error if given URL does not point to a valid folder or the URL is read-only. Also throws an error if given folder name is empty.
        parentUrl : The parent URL for the folder to be created.
        folderName : Name of the new folder to be created. Must not be empty.
        Returns the URL to the newly created folder
        """
        return core.URL()
    def doesPathExist(self, url: core.URL) -> bool:
        """
        Checks if the given URL points to an existing folder or asset in the library.
        url : The URL to be checked.
        Returns true if the URL points to an existing folder or asset, false otherwise.
        """
        return bool()
    @property
    def assetTypeName(self) -> str:
        """
        Get the name of the asset type which can be accessed by the library.
        """
        return str()

class CAMLibraryManager(core.Base):
    """
    CAMLibraryManager provides access to properties related to various libraries in the
    Fusion Manufacture workspace, such as the post library and machine library.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CAMLibraryManager:
        return CAMLibraryManager()
    @property
    def networkMachineFolder(self) -> str:
        """
        Gets the absolute path to the folder containing network machines. Network machines
        appear in the machine library under the network tab.
        """
        return str()
    @property
    def machineLibrary(self) -> MachineLibrary:
        """
        The MachineLibrary provides access to machines.
        """
        return MachineLibrary()
    @property
    def toolLibraries(self) -> ToolLibraries:
        """
        The ToolLibraries provides access to tools.
        """
        return ToolLibraries()
    @property
    def templateLibrary(self) -> CAMTemplateLibrary:
        """
        The CAMTemplateLibrary provides access to templates
        """
        return CAMTemplateLibrary()
    @property
    def printSettingLibrary(self) -> PrintSettingLibrary:
        """
        The PrintSettingLibrary provides access to print settings.
        """
        return PrintSettingLibrary()
    @property
    def postLibrary(self) -> PostLibrary:
        """
        The PostLibrary provides access to postConfigurations.
        """
        return PostLibrary()
    @property
    def stockMaterialLibrary(self) -> StockMaterialLibrary:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        The StockMaterialLibrary provides access to stock materials.
        You can only get a valid StockMaterialLibrary when you have access to Stock Materials private preview feature and enable the feature flag.
        """
        return StockMaterialLibrary()

class CAMManager(core.Base):
    """
    This singleton object provides access to application-level events and properties
    that relate to the CAM (Manufacture) workspace in Fusion.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CAMManager:
        return CAMManager()
    @staticmethod
    def get() -> CAMManager:
        """
        Access to the root CAMManager object.
        Return the root CAMManager object or null if it failed.
        """
        return CAMManager()
    @property
    def libraryManager(self) -> CAMLibraryManager:
        """
        CAMLibraryManager provides access to properties related to various libraries in the
        Fusion Manufacture workspace, such as the post library and machine library.
        Return a CAMLibraryManager object or null if it failed.
        """
        return CAMLibraryManager()
    @property
    def postEnginePath(self) -> str:
        """
        Gets the absolute path to the post engine (post.exe) installed with Fusion.
        """
        return str()
    @property
    def networkMachineIntegrationManager(self) -> NetworkMachineIntegrationManager:
        """
        Gets the NetworkMachineIntegrationManager needed to integrate add-ins into the 'Find network machines' dialog.
        Return a NetworkMachineIntegrationManager object or null if it failed.
        """
        return NetworkMachineIntegrationManager()

class CAMParameter(core.Base):
    """
    Base class for representing parameter of an operation.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CAMParameter:
        return CAMParameter()
    def saveExpressionAsUserDefault(self) -> bool:
        """
        Saves the current expression as user default value.
        Throws an exception if the parent is not an operation or does not support user default expressions.
        Returns true if saving was successful.
        """
        return bool()
    @property
    def name(self) -> str:
        """
        Gets the name (internal name) of the parameter.
        """
        return str()
    @property
    def title(self) -> str:
        """
        Returns the title of this parameter as seen in the user interface.
        This title is localized and can change based on the current language
        """
        return str()
    @property
    def expression(self) -> str:
        """
        Gets and sets the value expression of the parameter.
        """
        return str()
    @expression.setter
    def expression(self, value: str):
        """
        Gets and sets the value expression of the parameter.
        """
        pass
    @property
    def isEnabled(self) -> bool:
        """
        Gets if this parameter is enabled.  Some parameters are enabled/disabled depending on the values
        set for other parameters.
        """
        return bool()
    @property
    def error(self) -> str:
        """
        Returns a message corresponding to any active error associated with the value of this parameter.
        """
        return str()
    @property
    def warning(self) -> str:
        """
        Returns a message corresponding to any active warning associated with the value of this parameter.
        """
        return str()
    @property
    def isEditable(self) -> bool:
        """
        Returns whether or not the parameter's expression or value can be modified.
        """
        return bool()
    @property
    def value(self) -> ParameterValue:
        """
        Returns an object that allows you to get and set the value associated with the parameter.
        """
        return ParameterValue()
    @property
    def isDeprecated(self) -> bool:
        """
        Gets if this parameter is deprecated. Some parameters are deprecated when their usage becomes obsolete.
        Reading deprecated parameters is allowed, but setting deprecated parameters will throw an error.
        """
        return bool()
    @property
    def fullTitle(self) -> str:
        """
        Returns the full title of this parameter as seen in the user interface.
        This can potentially be more descriptive than the basic title.
        This title is localized and can change based on the current language.
        """
        return str()
    @property
    def isVisible(self) -> bool:
        """
        Gets if this parameter is visible in the user interface.
        """
        return bool()
    @property
    def userDefaultExpression(self) -> str:
        """
        Gets and sets the userDefaultExpression of this parameter.
        If no userDefaultExpression is set, the systemDefaultExpression is returned.
        Throws an exception if the parent is not an operation or does not support user default expressions.
        """
        return str()
    @property
    def systemDefaultExpression(self) -> str:
        """
        Returns the systemDefaultExpression of this parameter.
        """
        return str()

class CAMParameters(core.Base):
    """
    Collection that provides access to the parameters of an existing operation.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CAMParameters:
        return CAMParameters()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> CAMParameter:
        return None
    def __iter__(self) -> Iterator[CAMParameter]:
        return None
    def item(self, index: int) -> CAMParameter:
        """
        Function that returns the specified parameter using an index into the collection.
        index : The index of the item within the collection to return.  The first item in the collection has an index of 0.
        Returns the specified item or null if an invalid index was specified.
        """
        return CAMParameter()
    def itemByName(self, internalName: str) -> CAMParameter:
        """
        Returns the parameter of the specified id (internal name).
        internalName : The id (internal name) of the parameter.
        Returns the specified parameter or null in the case where there is no parameter with the specified id.
        """
        return CAMParameter()
    def resetToSystemDefaults(self) -> bool:
        """
        Resets each parameter to its system default.
        Returns true if the reset was successful.
        """
        return bool()
    @property
    def count(self) -> int:
        """
        The number of items in the collection.
        """
        return int()

class CAMPatterns(core.Base):
    """
    Collection that provides access to the patterns within an existing setup, folder or pattern.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CAMPatterns:
        return CAMPatterns()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> CAMPattern:
        return None
    def __iter__(self) -> Iterator[CAMPattern]:
        return None
    def item(self, index: int) -> CAMPattern:
        """
        Function that returns the specified pattern using an index into the collection.
        index : The index of the item within the collection to return.  The first item in the collection has an index of 0.
        Returns the specified item or null if an invalid index was specified.
        """
        return CAMPattern()
    def itemByName(self, name: str) -> CAMPattern:
        """
        Returns the pattern with the specified name (as appears in the browser).
        name : The name (as it appears in the browser) of the pattern.
        Returns the specified pattern or null in the case where there is no pattern with the specified name.
        """
        return CAMPattern()
    def itemByOperationId(self, id: int) -> CAMPattern:
        """
        Returns the pattern with the specified operation id.
        id : The id of the pattern.
        Returns the specified pattern or null in the case where there is no pattern with the specified operation id.
        """
        return CAMPattern()
    @property
    def count(self) -> int:
        """
        The number of items in the collection.
        """
        return int()

class CAMTemplate(core.Base):
    """
    Object that represents a template for a set of operations. These can be created from operations,
    optionally stored to files or in a library. The template can be used to re-create those operations
    in another document.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CAMTemplate:
        return CAMTemplate()
    @staticmethod
    def createFromXML(xml: str) -> CAMTemplate:
        """
        Creates a CAMTemplate from an XML string. Invalid template XML will produce errors
        xml : The XML representation to act as a base for creating a template.
        Returns the newly created template.
        """
        return CAMTemplate()
    @staticmethod
    def createFromOperations(operations: list[Operation]) -> CAMTemplate:
        """
        Create a CAMTemplate from a list of Operations
        operations : An array of operations to bundle into a template.
        Returns the newly created template.
        """
        return CAMTemplate()
    @staticmethod
    def createHoleTemplateFromOperations(operations: list[Operation]) -> CAMTemplate:
        """
        Create a hole CAMTemplate from a list of hole operations. Hole templates may be used in Hole Recognition
        operations : A list of operations to bundle into a template. Only 2D Adaptive, 2D Chamfer, 2D Contour, 2D Pocket, Bore,
        Circular, Drill and Thread operations are allowed in hole templates. Passing in other operation types will throw an error.
        Returns the newly created template.
        """
        return CAMTemplate()
    @staticmethod
    def createFromFile(filePath: str) -> CAMTemplate:
        """
        Create a CAMTemplate from a file on disk, i.e. Import the template file. Invalid files will produce errors
        filePath : The path to a template file.
        Returns the newly created template.
        """
        return CAMTemplate()
    @staticmethod
    def createEmpty() -> CAMTemplate:
        """
        Create an empty CAMTemplate
        Returns the newly created template.
        """
        return CAMTemplate()
    def save(self, filePath: str) -> bool:
        """
        Save the CAMTemplate to a file
        filePath : The path to the file you wish to save
        Returns true if the template was saved successfully, false otherwise.
        """
        return bool()
    def getHoleSignatureXML(self) -> str:
        """
        Convert hole signature to XML. This will be empty if this is not
        a hole template, or if there is no signature.
        """
        return str()
    def setHoleSignatureXML(self, xmlSnippet: str) -> bool:
        """
        Provide an XML snippet to specify a hole signature. This will
        have no effect if this is not a hole template. This will fail if
        the provided snippet is not valid.
        This will return true on success, false on failure.
        """
        return bool()
    @property
    def name(self) -> str:
        """
        Gets and sets the name of the template.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name of the template.
        """
        pass
    @property
    def description(self) -> str:
        """
        Gets and sets the description of the template.
        """
        return str()
    @description.setter
    def description(self, value: str):
        """
        Gets and sets the description of the template.
        """
        pass
    @property
    def isHoleTemplate(self) -> bool:
        """
        Whether or not this is a hole template
        """
        return bool()
    @property
    def operations(self) -> CAMTemplateOperations:
        """
         Expose operations.
        """
        return CAMTemplateOperations()
    @operations.setter
    def operations(self, value: CAMTemplateOperations):
        """
         Expose operations.
        """
        pass
    @property
    def attributes(self) -> core.Attributes:
        """
        Returns the collection of attributes associated with this template.
        """
        return core.Attributes()

class CAMTemplateOperationInput(core.Base):
    """
    A CAMTemplateOperationInput provides access to Operation Template parameters for editing, in much the same way as
    OperationInput provides access to Operation parameters for editing. Operation Template parameters are slightly different
    from Operation parameters, for instance in terms of how tools and geometry selections can be specified, so an OperationInput
    for a given strategy type has a slightly different set of parameters from a CAMTemplateOperationInput for that same strategy type.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CAMTemplateOperationInput:
        return CAMTemplateOperationInput()
    def isGeometryIndexEnabled(self, index: int) -> bool:
        """
        Get whether a geometry index is selected.
        index : 
        
        """
        return bool()
    def setGeometryIndexEnabled(self, index: int, enabled: bool) -> None:
        """
        Set whether a geometry index is selected.
        index : 
        enabled : 
        """
        pass
    @property
    def strategy(self) -> str:
        """
        Get the current strategy
        """
        return str()
    @property
    def parameters(self) -> CAMParameters:
        """
        Get all parameters for the current strategy. Parameters are initialized by user defaults.
        Configure operation parameters before creation for a better performance.
        """
        return CAMParameters()
    @property
    def tool(self) -> Tool:
        """
        Optionally specify the tool used by the operation. The ToolLibraries allows the access to Local and Fusion tools.
        """
        return Tool()
    @tool.setter
    def tool(self, value: Tool):
        """
        Optionally specify the tool used by the operation. The ToolLibraries allows the access to Local and Fusion tools.
        """
        pass
    @property
    def toolPreset(self) -> ToolPreset:
        """
        Optionally specify the preset of the tool. If no preset is specified, the operation gets its default feed and speed.
        The Tool provides access to available presets. Use one of those presets to override the default.
        An invalid preset will cause a failure during the creation of the operation.
        """
        return ToolPreset()
    @toolPreset.setter
    def toolPreset(self, value: ToolPreset):
        """
        Optionally specify the preset of the tool. If no preset is specified, the operation gets its default feed and speed.
        The Tool provides access to available presets. Use one of those presets to override the default.
        An invalid preset will cause a failure during the creation of the operation.
        """
        pass
    @property
    def displayName(self) -> str:
        """
        Optionally specify the display name that appears in the browser-tree to override the default.
        """
        return str()
    @displayName.setter
    def displayName(self, value: str):
        """
        Optionally specify the display name that appears in the browser-tree to override the default.
        """
        pass
    @property
    def geometryIndexCount(self) -> int:
        """
        Get the number of geometry indices that can be selected.
        """
        return int()

class CAMTemplateOperations(core.Base):
    """
    A list of CAMTemplateOperationInput.
    
    These are stored 'by value' -- get() returns a copy of the element at the given index,
    and set() will overwrite the element at the given index with a copy of the given element.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CAMTemplateOperations:
        return CAMTemplateOperations()
    def __len__(self) -> int:
        return 0
    def add(self, input: CAMTemplateOperationInput) -> None:
        """
        Add an item to the list.
        input : This element will be copied to the end of the list. Must come from get() or makeInput().
        """
        pass
    def get(self, operationIndex: int) -> CAMTemplateOperationInput:
        """
        Return a copy of an element.
        operationIndex : Index of the element to copy.
        
        """
        return CAMTemplateOperationInput()
    def set(self, operationIndex: int, input: CAMTemplateOperationInput) -> None:
        """
        Set the element at the given index.
        operationIndex : Index of the element to overwrite
        input : The element will be overwritten with a copy of this element. Must come from get() or makeInput().
        """
        pass
    def makeInput(self, strategyType: str) -> CAMTemplateOperationInput:
        """
        Make a CAMTemplateOperationInput of the given strategy type which is compatible with add() and set().
        strategyType : 
        
        """
        return CAMTemplateOperationInput()
    @property
    def count(self) -> int:
        """
        The number of items in the list.
        """
        return int()

class ChildOperationList(core.Base):
    """
    Provides access to the collection of child operations, folders and patterns of an existing setup.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ChildOperationList:
        return ChildOperationList()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> core.Base:
        return None
    def __iter__(self) -> Iterator[core.Base]:
        return None
    def item(self, index: int) -> core.Base:
        """
        Returns the specified item using an index into the collection.
        index : The index of the item within the collection to return.  The first item in the collection has an index of 0.
        Returns the specified item or null if an invalid index was specified.
        """
        return core.Base()
    def itemByName(self, name: str) -> core.Base:
        """
        Returns the operation, folder or pattern with the specified name (the name seen in the browser).
        name : The name of the operation, folder or pattern as seen in the browser.
        Returns the specified item or null in the case where there is no item with the specified name.
        """
        return core.Base()
    def itemByOperationId(self, id: int) -> core.Base:
        """
        Returns the operation, folder or pattern with the specified operation id.
        id : The id of the operation, folder or pattern.
        Returns the specified item or null in the case where there is no item with the specified operation id.
        """
        return core.Base()
    @property
    def count(self) -> int:
        """
        Gets the number of objects in the collection.
        """
        return int()

class CreateFromCAMTemplateInput(core.Base):
    """
    Object that contains the settings used by createFromCAMTemplate.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CreateFromCAMTemplateInput:
        return CreateFromCAMTemplateInput()
    @staticmethod
    def create() -> CreateFromCAMTemplateInput:
        """
        Creates an empty input object to be passed into createFromCAMTemplate
        The newly created input object.
        """
        return CreateFromCAMTemplateInput()
    @property
    def camTemplate(self) -> CAMTemplate:
        """
        Gets and sets the template to be instantiated.
        """
        return CAMTemplate()
    @camTemplate.setter
    def camTemplate(self, value: CAMTemplate):
        """
        Gets and sets the template to be instantiated.
        """
        pass
    @property
    def mode(self) -> AutomaticGenerationModes:
        """
        Gets and sets the mode to be used for generation. Defaults to Skip Generation.
        """
        return AutomaticGenerationModes()
    @mode.setter
    def mode(self, value: AutomaticGenerationModes):
        """
        Gets and sets the mode to be used for generation. Defaults to Skip Generation.
        """
        pass

class CurveSelections(core.Base):
    """
    Collection for all curve selections to be passed to a CadContours2DParameterValue object.
    This is a read-only container. It returns the curve selections associated with the parent parameter value object, but does not write to it.
    To apply changes done to the collection and the selections it contains, CadContours2DParameterValue.applyCurveSelections() needs to be called.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CurveSelections:
        return CurveSelections()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> CurveSelection:
        return None
    def __iter__(self) -> Iterator[CurveSelection]:
        return None
    def item(self, index: int) -> CurveSelection:
        """
        Function that returns the specified curve selection object using an index into the collection.
        index : The index of the item within the collection to return.  The first item in the collection has an index of 0.
        Returns the specified item or null if an invalid index was specified.
        """
        return CurveSelection()
    def clear(self) -> None:
        """
        Clears all entries.
        """
        pass
    def createNewChainSelection(self) -> ChainSelection:
        """
        Creates a new chain selection and adds it to the end of the collection.
        Returns newly created ChainSelection.
        """
        return ChainSelection()
    def createNewFaceContourSelection(self) -> FaceContourSelection:
        """
        Creates a new face contour selection and adds it to the end of the collection.
        Returns newly created FaceContourSelection.
        """
        return FaceContourSelection()
    def createNewSilhouetteSelection(self) -> SilhouetteSelection:
        """
        Creates a new silhouette selection and adds it to the end of the collection.
        Returns newly created SilhouetteSelection.
        """
        return SilhouetteSelection()
    def createNewPocketSelection(self) -> PocketSelection:
        """
        Creates a new pocket selection and adds it to the end of the collection.
        Returns newly created PocketSelection.
        """
        return PocketSelection()
    def createNewSketchSelection(self) -> SketchSelection:
        """
        Creates a new sketch selection and adds it to the end of the collection.
        """
        return SketchSelection()
    def createNewPocketRecognitionSelection(self) -> PocketRecognitionSelection:
        """
        Creates a new pocket recognition selection and adds it to the end of the collection.
        """
        return PocketRecognitionSelection()
    def remove(self, index: int) -> None:
        """
        Function that removes the specified curve selection object using an index in the collection.
        index : The index of the item within the collection to remove.  The first item in the collection has an index of 0.
        """
        pass
    def removeByObject(self, selection: CurveSelection) -> None:
        """
        Function that removes the specified curve selection object from the collection.
        selection : The item within the collection to remove.  Throws an exception if the curve selection is not part of the given selection.
        """
        pass
    @property
    def count(self) -> int:
        """
        The number of items in the collection.
        """
        return int()

class DocumentStockMaterialLibrary(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    DocumentStockMaterialLibrary provides access to stock materials used by the document.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> DocumentStockMaterialLibrary:
        return DocumentStockMaterialLibrary()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> StockMaterial:
        return None
    def __iter__(self) -> Iterator[StockMaterial]:
        return None
    def item(self, index: int) -> StockMaterial:
        """
        Get StockMaterial by index in DocumentStockMaterialLibrary.
        index : Index of the StockMaterial in the DocumentStockMaterialLibrary.
        Returns the StockMaterial in the DocumentStockMaterialLibrary by given index.
        """
        return StockMaterial()
    def setupsByStockMaterial(self, stockMaterial: StockMaterial) -> list[Setup]:
        """
        Returns all setups that use the given StockMaterial. The StockMaterial must exist in the document StockMaterial library.
        Raises an error if the StockMaterial is not in the document.
        stockMaterial : The StockMaterial to search for setups. The StockMaterial must exist in the document.
        Returns setups using a specific StockMaterial.
        """
        return [Setup()]
    def update(self, stockMaterial: StockMaterial) -> bool:
        """
        Update the given StockMaterial in the document StockMaterial library. The update applies all changes to the
        stockMaterial in the document stockMaterial library and therefore on all setups that use the stockMaterial.
        Will error if the stockMaterial does not exist in the document stockMaterial library.
        stockMaterial : The StockMaterial that should be updated.
        Returns true if the update was successful.
        """
        return bool()
    @property
    def count(self) -> int:
        """
        The number of StockMaterial in the DocumentStockMaterialLibrary.
        """
        return int()

class GeneratedData(core.Base):
    """
    Parent class of all generated data classes. Acts like a void pointer for the entries in the OperationBase.GeneratedDataCollection property.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> GeneratedData:
        return GeneratedData()

class GeneratedDataCollection(core.Base):
    """
    Collection can hold multiple GeneratedData results for a particular operation, setup or folder.
    In the case of folders and setups, the data associated with the child operations is not added to the collection.
    In most cases folders and setups will not have any items in the collection, whereas most operations will only have one.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> GeneratedDataCollection:
        return GeneratedDataCollection()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> GeneratedData:
        return None
    def __iter__(self) -> Iterator[GeneratedData]:
        return None
    def item(self, index: int) -> GeneratedData:
        """
        Gets the desired generated data at the given index.
        """
        return GeneratedData()
    def itemByIdentifier(self, resultType: GeneratedDataType) -> GeneratedData:
        """
        Gets the desired generated data. Generated result objects are unique for a given identifier, but may contain any number of child objects.
        """
        return GeneratedData()
    @property
    def count(self) -> int:
        """
        The number of items in the collection.
        """
        return int()

class GenerateToolpathFuture(core.Base):
    """
     Used to check the state and get back the results of an operation generation.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> GenerateToolpathFuture:
        return GenerateToolpathFuture()
    @property
    def numberOfOperations(self) -> int:
        """
        Returns the number of operations that need to be generated.
        """
        return int()
    @property
    def numberOfCompleted(self) -> int:
        """
        Returns the number of operations whose generation is complete.
        """
        return int()
    @property
    def operations(self) -> Operations:
        """
        Returns a collection of all operations that need to be generated.
        """
        return Operations()
    @property
    def isGenerationCompleted(self) -> bool:
        """
        Returns true if all operations are generated.
        """
        return bool()
    @property
    def numberOfTasks(self) -> int:
        """
        Returns the number of tasks of operations that need to be generated.
        """
        return int()
    @property
    def numberOfCompletedTasks(self) -> int:
        """
        Returns the number of tasks of operations whose generation is complete.
        """
        return int()

class GeometrySelection(core.Base):
    """
    Base parent class for all selection classes. All selections are currently restricted to B-Rep entities or sketches.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> GeometrySelection:
        return GeometrySelection()
    @property
    def value(self) -> list[core.Base]:
        """
        Returns the resulting value of the selection. In general, this returns the input selection, but child classes can override the return value if needed.
        Refer to the child classes comments for further details. The collection may contain duplicates.
        For OperationInputs, the return value may not be the same as for Operations, as additional geometry selected by child classes is not evaluated for OperationInputs.
        """
        return [core.Base()]
    @property
    def hasWarning(self) -> bool:
        """
        Gets if warnings were encountered when applying the selection to a parent.
        """
        return bool()
    @property
    def hasError(self) -> bool:
        """
        Gets if errors were encountered when applying the selection to a a parent.
        """
        return bool()
    @property
    def warning(self) -> str:
        """
        Gets the last warning string encountered after the selection was applied to a parent.
        """
        return str()
    @property
    def error(self) -> str:
        """
        Gets the last warning string encountered after the selection was applied to a parent.
        """
        return str()

class Machine(core.Base):
    """
    Object that represents a machine.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Machine:
        return Machine()
    @staticmethod
    def create(machineInput: MachineInput) -> Machine:
        """
        Creates a machine from a "MachineInput" input object
        machineInput : Input object that is used to hold the details needed for creating a machine.
        Returns the newly created machine in a valid state.
        """
        return Machine()
    def equivalentTo(self, machine: Machine) -> bool:
        """
        Checks if the machine is equivalent to this one.
        machine : The machine to compare this one to
        True if the machines are equivalent
        """
        return bool()
    def clearSimulationModel(self) -> None:
        """
        Clears the simulation model from the machine.
        """
        pass
    @property
    def vendor(self) -> str:
        """
        Gets and sets the vendor name of the machine.
        """
        return str()
    @vendor.setter
    def vendor(self, value: str):
        """
        Gets and sets the vendor name of the machine.
        """
        pass
    @property
    def model(self) -> str:
        """
        Gets and sets the model name of the machine.
        """
        return str()
    @model.setter
    def model(self, value: str):
        """
        Gets and sets the model name of the machine.
        """
        pass
    @property
    def description(self) -> str:
        """
        Gets and sets the description of the machine.
        """
        return str()
    @description.setter
    def description(self, value: str):
        """
        Gets and sets the description of the machine.
        """
        pass
    @property
    def id(self) -> str:
        """
        Gets the unique identifier of the machine.
        Can be used for comparing machines within the document.
        """
        return str()
    @property
    def capabilities(self) -> MachineCapabilities:
        """
        Gets the capabilities of the machine.
        """
        return MachineCapabilities()
    @property
    def hasPost(self) -> bool:
        """
        Checks if the machine has a post.
        Returns a boolean telling if the Machine has a post assigned.
        """
        return bool()
    @property
    def postURL(self) -> core.URL:
        """
        Gets or sets the URL of the post assigned to the machine.
        Returns a string with the URL of the post assigned to the machine.
        """
        return core.URL()
    @postURL.setter
    def postURL(self, value: core.URL):
        """
        Gets or sets the URL of the post assigned to the machine.
        Returns a string with the URL of the post assigned to the machine.
        """
        pass
    @property
    def elements(self) -> MachineElements:
        """
        Gets the list of elements that make up this machine.
        """
        return MachineElements()
    @property
    def hasSimulationModel(self) -> bool:
        """
        Returns true if the machine has a simulation model attached.
        """
        return bool()

class MachineAvoidGroups(core.Base):
    """
    Collection of all the mutually exclusive surface groups to be passed to a toolpath with stock to leave and avoid clearances associated to them.
    This is a read-only container that gets passed to CadMachineAvoidGroupsParameterValue object.
    It returns the groups associated with the parent parameter value object, but does not write to it.
    To apply changes done to the collection and the selections it contains, CadMachineAvoidGroupsParameterValue.applyMachineAvoidGroups() needs to be called.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineAvoidGroups:
        return MachineAvoidGroups()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> MachineAvoidSelectionBase:
        return None
    def __iter__(self) -> Iterator[MachineAvoidSelectionBase]:
        return None
    def item(self, index: int) -> MachineAvoidSelectionBase:
        """
        Function that returns the specified machine/avoid group selection object using an index into the collection.
        index : The index of the item within the collection to return. The first item in the collection has an index of 0.
        Returns the specified item or null if an invalid index was specified.
        """
        return MachineAvoidSelectionBase()
    def defaultGroup(self, type: DefaultGroupType) -> MachineAvoidSelectionBase:
        """
        Function that returns the specified machine/avoid default group selection object using the group type.
        Default groups contain surfaces that have a specific meaning within the toolpath operation, for example Model, Fixture, Drive etc.
        type : The type of the default group within the collection to return. There can be only one default group of a given type
        Returns the specified item or null if there isn't a group of the specified type
        """
        return MachineAvoidSelectionBase()
    def clear(self) -> None:
        """
        Clears all entries.
        """
        pass
    def createNewMachineAvoidDirectSelectionGroup(self) -> MachineAvoidDirectSelection:
        """
        Creates a new machine avoid group and adds it to the end of the collection.
        Returns newly created MachineAvoidDirectSelection.
        """
        return MachineAvoidDirectSelection()
    def remove(self, index: int) -> None:
        """
        Function that removes the specified group object using an index in the collection.
        index : The index of the item within the collection to remove. The first item in the collection has an index of 0.
        """
        pass
    def removeByObject(self, group: MachineAvoidSelectionBase) -> None:
        """
        Function that removes the specified group object from the collection.
        selection : The item within the collection to remove. Throws an exception if the machine avoid group is not part of the given selection.
        """
        pass
    def sync(self) -> None:
        """
        Function that synchronizes the selections and properties of the default groups from the current operation.
        This is needed when there are changes made to parameters that drive the default groups (e.g. Setup model or fixture
        selection changes to be reflected in the MachineAvoidGroups object on the API side).
        WARNING: This function must not be called before applyMachineAvoidGroups, because temporary
        group settings and selections will not have been stored in the operation object and will
        be overwritten.
        """
        pass
    @property
    def count(self) -> int:
        """
        The number of items in the collection.
        """
        return int()

class MachineAxis(core.Base):
    """
    Abstract base class representing a single machine axis.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineAxis:
        return MachineAxis()
    def useContinuousResolution(self) -> None:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Specifies the axis moves continuously.
        """
        pass
    @property
    def name(self) -> str:
        """
        The name of this axis.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        The name of this axis.
        """
        pass
    @property
    def axisType(self) -> MachineAxisTypes:
        """
        The type of axis.
        """
        return MachineAxisTypes()
    @property
    def hasLimits(self) -> bool:
        """
        Does this axis have a limited range of motion.
        """
        return bool()
    @property
    def homePosition(self) -> float:
        """
        Specifies the value that this axis returns to when the machine is homed.
        Units are cm for linear axes or radians for rotary axes.
        Will return NaN if home position isn't set.
        """
        return float()
    @homePosition.setter
    def homePosition(self, value: float):
        """
        Specifies the value that this axis returns to when the machine is homed.
        Units are cm for linear axes or radians for rotary axes.
        Will return NaN if home position isn't set.
        """
        pass
    @property
    def physicalRange(self) -> MachineAxisRange:
        """
        Range of possible values for this axis.
        Units are cm for linear axes or radians for rotary axes.
        """
        return MachineAxisRange()
    @physicalRange.setter
    def physicalRange(self, value: MachineAxisRange):
        """
        Range of possible values for this axis.
        Units are cm for linear axes or radians for rotary axes.
        """
        pass
    @property
    def toolChangePosition(self) -> float:
        """
        Specifies the value that this axis returns to, prior to a tool change.
        Units are cm for linear axes or radians for rotary axes.
        Will return NaN if tool change position isn't set.
        """
        return float()
    @toolChangePosition.setter
    def toolChangePosition(self, value: float):
        """
        Specifies the value that this axis returns to, prior to a tool change.
        Units are cm for linear axes or radians for rotary axes.
        Will return NaN if tool change position isn't set.
        """
        pass
    @property
    def resolutionStepSize(self) -> float:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Specifies the discrete step size used for axis movement.
        The step size should be greater than zero.
        Returns NaN if no step size is set or the axis move is configured for
        continuous rotation.
        """
        return float()
    @resolutionStepSize.setter
    def resolutionStepSize(self, value: float):
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Specifies the discrete step size used for axis movement.
        The step size should be greater than zero.
        Returns NaN if no step size is set or the axis move is configured for
        continuous rotation.
        """
        pass

class MachineAxisConfiguration(core.Base):
    """
    MachineAxisConfiguration holds controller settings that differ for each axis.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineAxisConfiguration:
        return MachineAxisConfiguration()
    def deleteMe(self) -> None:
        """
        Delete this axis configuration from the controller configuration.
        """
        pass
    @property
    def partId(self) -> str:
        """
        ID of the part in the KinematicsMachineElement that this axis configuration modifies.
        """
        return str()
    @property
    def type(self) -> MachineAxisTypes:
        """
        The type of this axis configuration. Use this to inform a cast to the derived types.
        """
        return MachineAxisTypes()
    @property
    def isReversed(self) -> bool:
        """
        Does the axis move in the opposite direction to usual. For rotary axes this would mean it
        uses the left hand rule, and for linear axes is moves in the opposite direction.
        """
        return bool()
    @isReversed.setter
    def isReversed(self, value: bool):
        """
        Does the axis move in the opposite direction to usual. For rotary axes this would mean it
        uses the left hand rule, and for linear axes is moves in the opposite direction.
        """
        pass
    @property
    def maxNormalSpeed(self) -> float:
        """
        Specifies the maximum normal speed for this axis.
        This would be called feedrate for a linear axis or rotary speed for a rotary axis.
        Units are cm/s for linear axes or rad/s for rotary axes.
        """
        return float()
    @maxNormalSpeed.setter
    def maxNormalSpeed(self, value: float):
        """
        Specifies the maximum normal speed for this axis.
        This would be called feedrate for a linear axis or rotary speed for a rotary axis.
        Units are cm/s for linear axes or rad/s for rotary axes.
        """
        pass
    @property
    def maxRapidSpeed(self) -> float:
        """
        Specifies the maximum rapid speed for this axis.
        This would be called feedrate for a linear axis or rotary speed for a rotary axis.
        Units are cm/s for linear axes or rad/s for rotary axes.
        """
        return float()
    @maxRapidSpeed.setter
    def maxRapidSpeed(self, value: float):
        """
        Specifies the maximum rapid speed for this axis.
        This would be called feedrate for a linear axis or rotary speed for a rotary axis.
        Units are cm/s for linear axes or rad/s for rotary axes.
        """
        pass
    @property
    def coordinate(self) -> MachineAxisCoordinates:
        """
        Coordinate to use for post processing.
        """
        return MachineAxisCoordinates()
    @coordinate.setter
    def coordinate(self, value: MachineAxisCoordinates):
        """
        Coordinate to use for post processing.
        """
        pass

class MachineAxisConfigurations(core.Base):
    """
    Collection of axis configuration objects.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineAxisConfigurations:
        return MachineAxisConfigurations()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> MachineAxisConfiguration:
        return None
    def __iter__(self) -> Iterator[MachineAxisConfiguration]:
        return None
    def addLinear(self, partId: str) -> LinearMachineAxisConfiguration:
        """
        Add a new linear axis configuration for a kinematics part.
        partId : ID used to label this axis configuration and link to a part in the kinematics tree.
        partID must match a part of type AxisMachinePartType in the kinematics tree and the part must be a linear axis.
        Returns the newly created LinearMachineAxisConfiguration or null if creation failed.
        """
        return LinearMachineAxisConfiguration()
    def addRotary(self, partId: str) -> RotaryMachineAxisConfiguration:
        """
        Add a new rotary axis configuration for a kinematics part.
        partId : ID used to label this axis configuration and link to a part in the kinematics tree.
        partID must match a part of type AxisMachinePartType in the kinematics tree and the part must be a rotary axis.
        Returns the newly created RotaryMachineAxisConfiguration or null if creation failed.
        """
        return RotaryMachineAxisConfiguration()
    def item(self, index: int) -> MachineAxisConfiguration:
        """
        Get the configuration at index in this collection
        index : Index of configuration.
        Returns the MachineAxisConfiguration at index.
        """
        return MachineAxisConfiguration()
    def itemById(self, id: str) -> MachineAxisConfiguration:
        """
        Get the configuration with the given ID
        id : The ID for the configuration to get.
        Return the MachineAxisConfiguration with the given ID, or null if the given ID does not
        match any configuration in the collection.
        """
        return MachineAxisConfiguration()
    @property
    def count(self) -> int:
        """
        Get the number of configurations in the collection.
        """
        return int()

class MachineAxisInput(core.Base):
    """
    Object that defines the properties required to create a machine axis object.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineAxisInput:
        return MachineAxisInput()
    def useContinuousResolution(self) -> None:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Specifies the axis moves continuously.
        """
        pass
    @property
    def axisType(self) -> MachineAxisTypes:
        """
        The type of axis.
        This axis type determines which parameters of this object are valid to be accessed
        or modified.
        """
        return MachineAxisTypes()
    @property
    def name(self) -> str:
        """
        The user facing name of this axis.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        The user facing name of this axis.
        """
        pass
    @property
    def homePosition(self) -> float:
        """
        Specifies the value that this axis returns to when the machine is homed.
        Units are cm for linear axes or radians for rotary axes.
        """
        return float()
    @homePosition.setter
    def homePosition(self, value: float):
        """
        Specifies the value that this axis returns to when the machine is homed.
        Units are cm for linear axes or radians for rotary axes.
        """
        pass
    @property
    def physicalRange(self) -> MachineAxisRange:
        """
        Range of possible values for this axis.
        Units are cm for linear axes or radians for rotary axes.
        """
        return MachineAxisRange()
    @physicalRange.setter
    def physicalRange(self, value: MachineAxisRange):
        """
        Range of possible values for this axis.
        Units are cm for linear axes or radians for rotary axes.
        """
        pass
    @property
    def toolChangePosition(self) -> float:
        """
        Specifies the value that this axis returns to, prior to a tool change.
        Units are cm for linear axes or radians for rotary axes.
        """
        return float()
    @toolChangePosition.setter
    def toolChangePosition(self, value: float):
        """
        Specifies the value that this axis returns to, prior to a tool change.
        Units are cm for linear axes or radians for rotary axes.
        """
        pass
    @property
    def resolutionStepSize(self) -> float:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Specifies the discrete step size used for axis movement.
        The step size should be greater than zero.
        Returns NaN if no step size is set or the axis move is configured for
        continuous rotation.
        """
        return float()
    @resolutionStepSize.setter
    def resolutionStepSize(self, value: float):
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Specifies the discrete step size used for axis movement.
        The step size should be greater than zero.
        Returns NaN if no step size is set or the axis move is configured for
        continuous rotation.
        """
        pass

class MachineAxisRange(core.Base):
    """
    Class representing limits of motion for a machine axis.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineAxisRange:
        return MachineAxisRange()
    @staticmethod
    def create(min: float, max: float) -> MachineAxisRange:
        """
        Creates a new range object with limited extents.
        Requires min to be less than or equal to max.
        Types of the fields depend on where this range is being used. Centimeters are used for distances and radians for angles.
        min : New minimum value for range.
        max : New maximum value for range.
        A new range object. Returns null if validation fails.
        """
        return MachineAxisRange()
    @staticmethod
    def createInfinite() -> MachineAxisRange:
        """
        Creates a new unbounded range object.
        A new range object.
        """
        return MachineAxisRange()
    @property
    def min(self) -> float:
        """
        Minimum value of range.
        Type depends on where this range is being used. Centimeters are used for distances and radians for angles.
        Returns -infinity if this range is infinite.
        """
        return float()
    @property
    def max(self) -> float:
        """
        Maximum value of range
        Type depends on where this range is being used. Centimeters are used for distances and radians for angles.
        Returns infinity if this range is infinite.
        """
        return float()
    @property
    def isInfinite(self) -> bool:
        """
        Is the range infinite.
        """
        return bool()

class MachineCapabilities(core.Base):
    """
    Object that represents the capabilities of the machine.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineCapabilities:
        return MachineCapabilities()
    @property
    def isMillingSupported(self) -> bool:
        """
        Gets and sets if the machine is capable of subtractive milling.
        """
        return bool()
    @isMillingSupported.setter
    def isMillingSupported(self, value: bool):
        """
        Gets and sets if the machine is capable of subtractive milling.
        """
        pass
    @property
    def isTurningSupported(self) -> bool:
        """
        Gets and sets if the machine is capable of subtractive turning.
        """
        return bool()
    @isTurningSupported.setter
    def isTurningSupported(self, value: bool):
        """
        Gets and sets if the machine is capable of subtractive turning.
        """
        pass
    @property
    def isCuttingSupported(self) -> bool:
        """
        Gets and sets if the machine is capable of subtractive cutting.
        """
        return bool()
    @isCuttingSupported.setter
    def isCuttingSupported(self, value: bool):
        """
        Gets and sets if the machine is capable of subtractive cutting.
        """
        pass
    @property
    def isAdditiveSupported(self) -> bool:
        """
        Gets and sets if the machine is capable of additive operations.
        """
        return bool()
    @isAdditiveSupported.setter
    def isAdditiveSupported(self, value: bool):
        """
        Gets and sets if the machine is capable of additive operations.
        """
        pass
    @property
    def additiveTechnology(self) -> AdditiveTechnologies:
        """
        Gets which additive technology the machine supports.
        Return "NA" if the machine does not support Additive
        """
        return AdditiveTechnologies()

class MachineElement(core.Base):
    """
    Base class for objects that compose a machine.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineElement:
        return MachineElement()
    @property
    def elementId(self) -> str:
        """
        Identifier for this element. Unique within an element type.
        """
        return str()
    @property
    def typeId(self) -> str:
        """
        Identifier for this type of machine element.
        """
        return str()

class MachineElementInput(core.Base):
    """
    Base class for machine element inputs.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineElementInput:
        return MachineElementInput()
    @property
    def inputType(self) -> MachineElementInputType:
        """
        The type of machine element this input will create.
        """
        return MachineElementInputType()

class MachineElements(core.Base):
    """
    Collection of machine elements.
    These elements contain the properties that define the machine.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineElements:
        return MachineElements()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> MachineElement:
        return None
    def __iter__(self) -> Iterator[MachineElement]:
        return None
    def item(self, index: int) -> MachineElement:
        """
        Get the element at a particular index in the collection.
        index : Index of element.
        Returns the element at the given index.
        """
        return MachineElement()
    def defaultItemByType(self, typeId: str) -> MachineElement:
        """
        Returns the default item of the given type.
        In most cases this will be the element with an element ID of "default".
        typeId : Element typeId to get the default for. See staticTypeId for the desired element type.
        Returns the specified Element or null if no matching type ID is found.
        """
        return MachineElement()
    def itemsByType(self, typeId: str) -> list[MachineElement]:
        """
        Gets the element of specified type.
        typeId : Element typeId to filter. See staticTypeId for the desired element type.
        Returns a list of elements filtered to the specified type or an empty array if there is no match with the specified typeId.
        """
        return [MachineElement()]
    def itemById(self, typeId: str, elementId: str) -> MachineElement:
        """
        Gets an element of a specific type by ID.
        typeId : Element typeId to filter. See staticTypeId for the desired element type.
        elementId : Element ID to select.
        Returns an element of the desired type with the specified ID or null in the case where no match is found.
        """
        return MachineElement()
    def countByType(self, typeId: str) -> int:
        """
        Number of elements of specified type.
        typeId : Element typeId to filter. See staticTypeId for the desired element type.
        Returns the number of elements of the requested type. Returns zero if no elements match the specified type ID.
        """
        return int()
    def createMachineElementInput(self, type: MachineElementInputType) -> MachineElementInput:
        """
        Create a new MachineElementInput object for the specified type.
        This is intedned to be used to create/add new machine elements.
        type :  The type of machine element to create the input for 
         A MachineElementInput object 
        """
        return MachineElementInput()
    def addElement(self, input: MachineElementInput) -> MachineElement:
        """
        Add a new machine element to the machine.
        input : A specialization of MachineElementInput class that contains the properties required to create a new machine element.
         The created MachineElement 
        """
        return MachineElement()
    @property
    def count(self) -> int:
        """
        Total number of elements in collection.
        """
        return int()

class MachineInput(core.Base):
    """
    Base abstract class for inputs to be used when creating machines.
    Used by Machine.create(MachineInput) method.
    Implemented by "MachineFromFileInput" and "MachineFromLibraryinput" classes.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineInput:
        return MachineInput()

class MachineInteractionPair(core.Base):
    """
    MachineInteractionPair objects control how a pair of MachineItems interact with each other.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineInteractionPair:
        return MachineInteractionPair()
    def reset(self) -> bool:
        """
        Clear this MachineInteractionPair.
        This pair will then represent two MachineItems that do not interact.
        """
        return bool()
    @property
    def item1(self) -> MachineItem:
        """
        The first MachineItem involved in this MachineInteractionPair.
        Returns a MachineItem.
        """
        return MachineItem()
    @property
    def item2(self) -> MachineItem:
        """
        The second MachineItem involved in this MachineInteractionPair.
        Returns a MachineItem.
        """
        return MachineItem()
    @property
    def isCheckedForCollisions(self) -> bool:
        """
        Whether these MachineItems should be checked for collisions.
        Returns true if the two MachineItems should be checked for collisions.
        """
        return bool()
    @isCheckedForCollisions.setter
    def isCheckedForCollisions(self, value: bool):
        """
        Whether these MachineItems should be checked for collisions.
        Returns true if the two MachineItems should be checked for collisions.
        """
        pass
    @property
    def isIgnored(self) -> bool:
        """
        Whether this MachineInteractionPair will be ignored.
        Returns true if this MachineInteractionPair represents
        a pair of MachineItems that do not interact.
        """
        return bool()

class MachineItem(core.Base):
    """
    An item on a machine that can collide.
    That is, a MachinePart, or something attached to a MachinePart.
    Create them via InteractionsMachineElement::createMachineItem
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineItem:
        return MachineItem()
    @property
    def itemType(self) -> MachineItemType:
        """
        The type of this MachineItem.
        """
        return MachineItemType()
    @property
    def part(self) -> MachinePart:
        """
        The machine part.
        """
        return MachinePart()

class MachinePart(core.Base):
    """
    Object representing some part of a machine, such as the static base of the machine, an
    axis, or the attachment points for tools and fixtures.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachinePart:
        return MachinePart()
    def deleteMe(self) -> None:
        """
        Delete this part and its children from the kinematics tree.
        """
        pass
    @property
    def children(self) -> MachineParts:
        """
        Get the collection of child parts.
        """
        return MachineParts()
    @property
    def parent(self) -> MachinePart:
        """
        Get or set the parent of this part.
        Returns null if this part is a root part.
        Setting the parent will add this part to the end of the parent's children
        collection. Setting the parent will throw an error if the new parent is this
        part or a child of this part.
        """
        return MachinePart()
    @parent.setter
    def parent(self, value: MachinePart):
        """
        Get or set the parent of this part.
        Returns null if this part is a root part.
        Setting the parent will add this part to the end of the parent's children
        collection. Setting the parent will throw an error if the new parent is this
        part or a child of this part.
        """
        pass
    @property
    def partType(self) -> MachinePartTypes:
        """
        Get the type of this part.
        """
        return MachinePartTypes()
    @property
    def id(self) -> str:
        """
        Get the internal ID of the part.
        This is unique with respect to other MachineParts in the Machine.
        """
        return str()
    @property
    def axis(self) -> MachineAxis:
        """
        Get the axis object for this part used to reference this part for other
        operations.
        Only valid when partType is Axis, otherwise returns null
        """
        return MachineAxis()
    @property
    def spindle(self) -> MachineSpindle:
        """
        Get the spindle object for this part used to reference this part for other
        operations.
        Will return null if the part has no spindle assigned.
        """
        return MachineSpindle()
    @property
    def toolStation(self) -> MachineToolStation:
        """
        Get the tool station object for this part.
        Will return null if the part has no tool station assigned.
        """
        return MachineToolStation()

class MachinePartInput(core.Base):
    """
    Object representing the set of inputs required to create a new MachinePart.
    Set an MachineAxisInput object on this object's axisInput parameter to create
    a new MachineAxis with this part.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachinePartInput:
        return MachinePartInput()
    def createAxisInput(self, axisType: MachineAxisTypes) -> MachineAxisInput:
        """
        Creates a new MachineAxisInput object to be used to create a new MachineAxis.
        Set this object on to an axis type MachinePartInput to create a new MachineAxis
        with that part.
        axisType : The type of MachineAxisInput to create.
        Returns a LinearMachineAxisInput or RotaryMachineAxisInput, or null if the creation failed.
        """
        return MachineAxisInput()
    def createSpindleInput(self) -> MachineSpindleInput:
        """
        Creates a new MachineSpindleInput object to be used to create a new MachineSpindle.
        Returns new MachineSpindleInput object.
        """
        return MachineSpindleInput()
    def createToolStationInput(self) -> MachineToolStationInput:
        """
        Creates a new MachineToolStationInput object to be used to create a new MachineToolStation.
        Returns new MachineToolStationInput object.
        """
        return MachineToolStationInput()
    @property
    def id(self) -> str:
        """
        Gets or sets the internal ID of the part, used to reference this part for other
        operations. This ID can be any string.
        This must be unique with respect to other MachineParts in the Machine.
        """
        return str()
    @id.setter
    def id(self, value: str):
        """
        Gets or sets the internal ID of the part, used to reference this part for other
        operations. This ID can be any string.
        This must be unique with respect to other MachineParts in the Machine.
        """
        pass
    @property
    def partType(self) -> MachinePartTypes:
        """
        Get the type of part this input will create.
        """
        return MachinePartTypes()
    @property
    def axisInput(self) -> MachineAxisInput:
        """
        Gets or sets an axis input object to create a new MachineAxis with this part.
        Only valid when partType is Axis.
        """
        return MachineAxisInput()
    @axisInput.setter
    def axisInput(self, value: MachineAxisInput):
        """
        Gets or sets an axis input object to create a new MachineAxis with this part.
        Only valid when partType is Axis.
        """
        pass
    @property
    def spindleInput(self) -> MachineSpindleInput:
        """
        Gets or sets an spindle input object to create a new MachineSpindle with this part.
        Only valid when partType is not Axis.
        """
        return MachineSpindleInput()
    @spindleInput.setter
    def spindleInput(self, value: MachineSpindleInput):
        """
        Gets or sets an spindle input object to create a new MachineSpindle with this part.
        Only valid when partType is not Axis.
        """
        pass
    @property
    def toolStationInput(self) -> MachineToolStationInput:
        """
        Gets or sets an tool station input object to create a new MachineToolStation with this part.
        Only valid when partType is not Axis.
        """
        return MachineToolStationInput()
    @toolStationInput.setter
    def toolStationInput(self, value: MachineToolStationInput):
        """
        Gets or sets an tool station input object to create a new MachineToolStation with this part.
        Only valid when partType is not Axis.
        """
        pass

class MachineParts(core.Base):
    """
    Object that represents a collection of machine parts.
    These parts are the children of another part or the collection of base parts from MachineKinematics.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineParts:
        return MachineParts()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> MachinePart:
        return None
    def __iter__(self) -> Iterator[MachinePart]:
        return None
    def add(self, partInput: MachinePartInput) -> MachinePart:
        """
        Add a new part to this collection. The part's parent will be set to the owner of
        this collection, or null if this is the root parts collection.
        
        If the passed MachinePartInput has a MachineAxisInput a new MachineAxis will be created.
        partInput : Part input object used to create the new MachinePart.
        Returns the newly created MachinePart or null if creation failed.
        """
        return MachinePart()
    def createPartInput(self, partType: MachinePartTypes) -> MachinePartInput:
        """
        Create a new MachinePartInput.
        partType : The type of part to create.
        When this parameter is Axis, you must set a value for axisInput.
        Returns the new MachinePartInput or null if creation failed.
        """
        return MachinePartInput()
    def item(self, index: int) -> MachinePart:
        """
        Get the part at index in this collection.
        index : The index of the part.
        The MachinePart at index.
        """
        return MachinePart()
    def itemById(self, id: str) -> MachinePart:
        """
        Get the part with the given ID.
        id : The ID for the part to get.
        Returns the MachinePart with the given ID, or null if the given ID does not
        match any part in the collection.
        """
        return MachinePart()
    @property
    def count(self) -> int:
        """
        Get the number of parts in this collection.
        """
        return int()

class MachineQuery(core.Base):
    """
    MachineQuery defines the query to access Machines.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineQuery:
        return MachineQuery()
    def execute(self) -> list[Machine]:
        """
        Executes the query for specific machines based on the query's properties.
        Returns a list of `Machine`. Each returned machine matches this query.
        """
        return [Machine()]
    @property
    def vendor(self) -> str:
        """
        The case-insensitive vendor specifies the vendor of the machine. The default empty vendor applies to all machines.
        """
        return str()
    @vendor.setter
    def vendor(self, value: str):
        """
        The case-insensitive vendor specifies the vendor of the machine. The default empty vendor applies to all machines.
        """
        pass
    @property
    def model(self) -> str:
        """
        The case-insensitive model specifies the model of the machine. The default empty model applies to all machines.
        """
        return str()
    @model.setter
    def model(self, value: str):
        """
        The case-insensitive model specifies the model of the machine. The default empty model applies to all machines.
        """
        pass
    @property
    def url(self) -> core.URL:
        """
        The URL specifies the location and folder to search for in the machine library.
        Setting the URL updates the location.
        """
        return core.URL()
    @url.setter
    def url(self, value: core.URL):
        """
        The URL specifies the location and folder to search for in the machine library.
        Setting the URL updates the location.
        """
        pass
    @property
    def location(self) -> LibraryLocations:
        """
        The location specifies the location to search in the machine library.
        Setting the location clears any previous specified URL.
        """
        return LibraryLocations()
    @location.setter
    def location(self, value: LibraryLocations):
        """
        The location specifies the location to search in the machine library.
        Setting the location clears any previous specified URL.
        """
        pass

class MachineSpindle(core.Base):
    """
    Object representing a spindle on the machine
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineSpindle:
        return MachineSpindle()
    @property
    def description(self) -> str:
        """
        The description of this spindle.
        """
        return str()
    @description.setter
    def description(self, value: str):
        """
        The description of this spindle.
        """
        pass
    @property
    def maxSpeed(self) -> float:
        """
        Specifies the maximum speed (rpm) for this spindle.
        """
        return float()
    @maxSpeed.setter
    def maxSpeed(self, value: float):
        """
        Specifies the maximum speed (rpm) for this spindle.
        """
        pass
    @property
    def minSpeed(self) -> float:
        """
        Specifies the minimum speed (rpm) for this spindle.
        """
        return float()
    @minSpeed.setter
    def minSpeed(self, value: float):
        """
        Specifies the minimum speed (rpm) for this spindle.
        """
        pass
    @property
    def power(self) -> float:
        """
        Specifies the power (kW) for this spindle.
        """
        return float()
    @power.setter
    def power(self, value: float):
        """
        Specifies the power (kW) for this spindle.
        """
        pass
    @property
    def peakTorque(self) -> float:
        """
        Specifies the peak torque (Nm) for this spindle.
        """
        return float()
    @peakTorque.setter
    def peakTorque(self, value: float):
        """
        Specifies the peak torque (Nm) for this spindle.
        """
        pass
    @property
    def peakTorqueSpeed(self) -> float:
        """
        Specifies the speed (rpm) at which this spindle reaches peak torque (Nm).
        """
        return float()
    @peakTorqueSpeed.setter
    def peakTorqueSpeed(self, value: float):
        """
        Specifies the speed (rpm) at which this spindle reaches peak torque (Nm).
        """
        pass

class MachineSpindleInput(core.Base):
    """
    Object representing the set of inputs required to create a new MachineSpindle.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineSpindleInput:
        return MachineSpindleInput()
    @property
    def description(self) -> str:
        """
        The description of this spindle.
        """
        return str()
    @description.setter
    def description(self, value: str):
        """
        The description of this spindle.
        """
        pass
    @property
    def maxSpeed(self) -> float:
        """
        Specifies the maximum speed (rpm) for this spindle.
        """
        return float()
    @maxSpeed.setter
    def maxSpeed(self, value: float):
        """
        Specifies the maximum speed (rpm) for this spindle.
        """
        pass
    @property
    def minSpeed(self) -> float:
        """
        Specifies the minimum speed (rpm) for this spindle.
        """
        return float()
    @minSpeed.setter
    def minSpeed(self, value: float):
        """
        Specifies the minimum speed (rpm) for this spindle.
        """
        pass
    @property
    def power(self) -> float:
        """
        Specifies the power for this spindle.
        """
        return float()
    @power.setter
    def power(self, value: float):
        """
        Specifies the power for this spindle.
        """
        pass
    @property
    def peakTorque(self) -> float:
        """
        Specifies the peak torque for this spindle.
        """
        return float()
    @peakTorque.setter
    def peakTorque(self, value: float):
        """
        Specifies the peak torque for this spindle.
        """
        pass
    @property
    def peakTorqueSpeed(self) -> float:
        """
        Specifies the peak torque speed for this spindle.
        """
        return float()
    @peakTorqueSpeed.setter
    def peakTorqueSpeed(self, value: float):
        """
        Specifies the peak torque speed for this spindle.
        """
        pass

class MachineToolStation(core.Base):
    """
    Object representing a tool station on the machine
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineToolStation:
        return MachineToolStation()
    @property
    def maxToolDiameter(self) -> float:
        """
        The maximum diameter in cm of the tool that can be held by this tool station.
        """
        return float()
    @maxToolDiameter.setter
    def maxToolDiameter(self, value: float):
        """
        The maximum diameter in cm of the tool that can be held by this tool station.
        """
        pass
    @property
    def maxToolLength(self) -> float:
        """
        The maximum length in cm of the tool that can be held by this tool station.
        """
        return float()
    @maxToolLength.setter
    def maxToolLength(self, value: float):
        """
        The maximum length in cm of the tool that can be held by this tool station.
        """
        pass
    @property
    def toolInterface(self) -> str:
        """
        The type of interface that this tool station uses.
        (e.g. BT40, CAPTO C5, HSK A100, SK50, etc.)
        Note: All newline characters will be removed, and if the string contains only ASCII characters, it will be converted to uppercase.
        """
        return str()
    @toolInterface.setter
    def toolInterface(self, value: str):
        """
        The type of interface that this tool station uses.
        (e.g. BT40, CAPTO C5, HSK A100, SK50, etc.)
        Note: All newline characters will be removed, and if the string contains only ASCII characters, it will be converted to uppercase.
        """
        pass
    @property
    def coolants(self) -> list[int]:
        """
        The coolants that this tool station can use.
        See MachineToolStationCoolant for possible values.
        """
        return [int()]
    @coolants.setter
    def coolants(self, value: list[int]):
        """
        The coolants that this tool station can use.
        See MachineToolStationCoolant for possible values.
        """
        pass

class MachineToolStationInput(core.Base):
    """
    Object representing the set of inputs required to create a new MachineToolStation.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineToolStationInput:
        return MachineToolStationInput()
    @property
    def maxToolDiameter(self) -> float:
        """
        The maximum diameter in cm of the tool that can be held by this tool station.
        """
        return float()
    @maxToolDiameter.setter
    def maxToolDiameter(self, value: float):
        """
        The maximum diameter in cm of the tool that can be held by this tool station.
        """
        pass
    @property
    def maxToolLength(self) -> float:
        """
        The maximum length in cm of the tool that can be held by this tool station.
        """
        return float()
    @maxToolLength.setter
    def maxToolLength(self, value: float):
        """
        The maximum length in cm of the tool that can be held by this tool station.
        """
        pass
    @property
    def toolInterface(self) -> str:
        """
        The type of interface that this tool station uses.
        (e.g. BT40, CAPTO C5, HSK A100, SK50, etc.)
        Note: All newline characters will be removed, and if the string contains only ASCII characters, it will be converted to uppercase.
        """
        return str()
    @toolInterface.setter
    def toolInterface(self, value: str):
        """
        The type of interface that this tool station uses.
        (e.g. BT40, CAPTO C5, HSK A100, SK50, etc.)
        Note: All newline characters will be removed, and if the string contains only ASCII characters, it will be converted to uppercase.
        """
        pass
    @property
    def coolants(self) -> list[int]:
        """
        The coolants that this tool station can use.
        See MachineToolStationCoolant for possible values.
        """
        return [int()]
    @coolants.setter
    def coolants(self, value: list[int]):
        """
        The coolants that this tool station can use.
        See MachineToolStationCoolant for possible values.
        """
        pass

class MachiningTime(core.Base):
    """
    Object returned when using the getMachiningTime method from the CAM class.
    Use the properties on this object to get the machining time results.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachiningTime:
        return MachiningTime()
    @property
    def feedDistance(self) -> float:
        """
        Gets the feed distance in centimeters.
        """
        return float()
    @property
    def totalFeedTime(self) -> float:
        """
        Get the total feed time in seconds.
        """
        return float()
    @property
    def rapidDistance(self) -> float:
        """
        Gets the calculated rapid distance in centimeters.
        """
        return float()
    @property
    def totalRapidTime(self) -> float:
        """
        Gets the total rapid feed time in seconds.
        """
        return float()
    @property
    def toolChangeCount(self) -> int:
        """
        Gets the number of tool changes.
        """
        return int()
    @property
    def totalToolChangeTime(self) -> float:
        """
        Gets the total tool change time in seconds.
        """
        return float()
    @property
    def machiningTime(self) -> float:
        """
        Gets the machining time in seconds.
        """
        return float()

class ManufacturingModel(core.Base):
    """
    Represents a ManufacturingModel within a CAM design. A Manufacturing Model is a derive of the Design scene, which can be augmented without any effects of the original Design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ManufacturingModel:
        return ManufacturingModel()
    def activate(self) -> bool:
        """
        Makes the ManufacturingModel the active edit target in the user interface. This is the same
        as enabling the radio button next to the occurrence in the browser.
        Returns true if the activation was successful.
        """
        return bool()
    def duplicate(self) -> ManufacturingModel:
        """
        Creates and returns a copy of the ManufacturingModel, within its parent collection.
        The newly created ManufacturingModel will have a new unique name assigned.
        Returns the newly created ManufacturingModel copy.
        """
        return ManufacturingModel()
    def deleteMe(self) -> bool:
        """
        Deletes this ManufacturingModel. If this is part of a setup, the reference to this will be lost. The deletion makes that reference invalid.
        Returns true if the delete is successful.
        """
        return bool()
    def syncManufacturingModel(self) -> bool:
        """
        Checks whether changes to the original design have been made. If so, the given manufacturing model is synchronized with its source.
        Returns true if the manufacturing model needed an update.
        """
        return bool()
    @property
    def name(self) -> str:
        """
        Gets or sets the display name of the ManufacturingModel.
        This is the name that will be shown in the browser and other locations.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets or sets the display name of the ManufacturingModel.
        This is the name that will be shown in the browser and other locations.
        """
        pass
    @property
    def id(self) -> str:
        """
        Gets the unique identifier of the ManufacturingModel within the document.
        """
        return str()
    @property
    def isActive(self) -> bool:
        """
        Gets whether this ManufacturingModel is active in the user interface.
        This is the same as checking the state of the radio button next to the ManufacturingModel in the browser.
        To activate the ManufacturingModel use the Activate method.
        """
        return bool()
    @property
    def occurrence(self) -> fusion.Occurrence:
        """
        Returns the occurrence for that ManufacturingModel.
        Returns true Occurrence for the current ManufacturingModel.
        """
        return fusion.Occurrence()

class ManufacturingModelInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a ManufacturingModel.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ManufacturingModelInput:
        return ManufacturingModelInput()
    @property
    def name(self) -> str:
        """
        Name of the new ManufacturingModel.
        The name is displayed in the browser tree.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Name of the new ManufacturingModel.
        The name is displayed in the browser tree.
        """
        pass

class ManufacturingModels(core.Base):
    """
    Referenced from CAM product to access manufacturing models in document.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ManufacturingModels:
        return ManufacturingModels()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ManufacturingModel:
        return None
    def __iter__(self) -> Iterator[ManufacturingModel]:
        return None
    def item(self, index: int) -> ManufacturingModel:
        """
        Get ManufacturingModel by index in collection.
        Returns ManufacturingModel at given index.
        """
        return ManufacturingModel()
    def itemByName(self, name: str) -> list[ManufacturingModel]:
        """
        Returns all ManufacturingModel with given name (as appears in the browser).
        name : The name (as it appears in the browser) of the ManufacturingModel.
        Returns all ManufacturingModel with the specified name.
        """
        return [ManufacturingModel()]
    def itemById(self, id: str) -> ManufacturingModel:
        """
        Returns ManufacturingModel with given id.
        id : The id of the ManufacturingModel.
        Returns ManufacturingModel with the specified id or null if no ManufacturingModel has that id.
        """
        return ManufacturingModel()
    def createInput(self) -> ManufacturingModelInput:
        """
        Create a new ManufacturingModelInput object. Use properties and methods on this object
        to define the ManufacturingModel you want to create and then use the Add method, passing in
        the ManufacturingModelInput object.
        Returns new ManufacturingModelInput object.
        """
        return ManufacturingModelInput()
    def add(self, input: ManufacturingModelInput) -> ManufacturingModel:
        """
        Create a new ManufacturingModel.
        input : A ManufacturingModelInput object that defines the desired ManufacturingModel. Use the createInput
        method to create a new ManufacturingModelInput object and then use methods on it to define the ManufacturingModel.
        Returns the newly created ManufacturingModel.
        """
        return ManufacturingModel()
    def syncAllManufacturingModels(self) -> bool:
        """
        Checks wether changes to the original design have been made. If so, all manufacturing models are synchronized with their sources.
        Returns true if any manufacturing model needed an update.
        """
        return bool()
    @property
    def count(self) -> int:
        """
        The number of items in the collection.
        """
        return int()

class ModifyUtility(core.Base):
    """
    Base class for all modify utilities.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ModifyUtility:
        return ModifyUtility()

class MultiAxisFeedrateSettings(core.Base):
    """
    Base class for the multi-axis feedrate settings
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MultiAxisFeedrateSettings:
        return MultiAxisFeedrateSettings()
    @property
    def feedMode(self) -> MultiAxisFeedMode:
        """
        The feedmode to use for the multi axis.
        """
        return MultiAxisFeedMode()

class MultiAxisFeedrateSettingsInput(core.Base):
    """
    Input class for creating MultiAxisFeedrateSettings objects.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MultiAxisFeedrateSettingsInput:
        return MultiAxisFeedrateSettingsInput()
    @property
    def feedMode(self) -> MultiAxisFeedMode:
        """
        The feed mode to use for the multi-axis feedrate settings.
        Determines the type of MultiAxisFeedrateSettings that will be created.
        """
        return MultiAxisFeedMode()
    @feedMode.setter
    def feedMode(self, value: MultiAxisFeedMode):
        """
        The feed mode to use for the multi-axis feedrate settings.
        Determines the type of MultiAxisFeedrateSettings that will be created.
        """
        pass
    @property
    def dpmType(self) -> MultiAxisDegreesPerMinuteType:
        """
        If the feedMode is MultiAxisFeedMode.MultiAxisFeedMode_DegreesPerMinute,
        determines what type of MultiAxisCombinationDPMFeedrateSettings will create.
        """
        return MultiAxisDegreesPerMinuteType()
    @dpmType.setter
    def dpmType(self, value: MultiAxisDegreesPerMinuteType):
        """
        If the feedMode is MultiAxisFeedMode.MultiAxisFeedMode_DegreesPerMinute,
        determines what type of MultiAxisCombinationDPMFeedrateSettings will create.
        """
        pass

class MultiAxisRetractAndReconfigureSettings(core.Base):
    """
    Settings for multi-axis retract and reconfigure.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MultiAxisRetractAndReconfigureSettings:
        return MultiAxisRetractAndReconfigureSettings()
    @property
    def rewindPreference(self) -> MultiAxisRewindPreference:
        """
        The rewind preferece. See MultiAxisRewindPreference values for more details.
        """
        return MultiAxisRewindPreference()
    @rewindPreference.setter
    def rewindPreference(self, value: MultiAxisRewindPreference):
        """
        The rewind preferece. See MultiAxisRewindPreference values for more details.
        """
        pass
    @property
    def retractPreference(self) -> MultiAxisRetractPreference:
        """
        The retract preference. See MultiAxisRetractPreference values for more details.
        """
        return MultiAxisRetractPreference()
    @retractPreference.setter
    def retractPreference(self, value: MultiAxisRetractPreference):
        """
        The retract preference. See MultiAxisRetractPreference values for more details.
        """
        pass
    @property
    def stockExpansion(self) -> core.Vector3D:
        """
        Defines the stock expansion for computing retract moves in rewinds.
        """
        return core.Vector3D()
    @stockExpansion.setter
    def stockExpansion(self, value: core.Vector3D):
        """
        Defines the stock expansion for computing retract moves in rewinds.
        """
        pass
    @property
    def safeRetractDistance(self) -> float:
        """
        The length of the retract moves along the tool axis, to perform a rewind.
        """
        return float()
    @safeRetractDistance.setter
    def safeRetractDistance(self, value: float):
        """
        The length of the retract moves along the tool axis, to perform a rewind.
        """
        pass
    @property
    def safeRetractFeedrate(self) -> float:
        """
        The safe retract feedrate for retract moves.
        (cm/min)
        """
        return float()
    @safeRetractFeedrate.setter
    def safeRetractFeedrate(self, value: float):
        """
        The safe retract feedrate for retract moves.
        (cm/min)
        """
        pass
    @property
    def safePlungeFeedrate(self) -> float:
        """
        The safe plunge feedrate for plunge moves.
        A plunge rate is the speed at which the tool is driven down into the material when starting a cut.
        It varies depending on the tool and material. Plunging too fast may damage the tip of the cutter.
        (cm/min)
        """
        return float()
    @safePlungeFeedrate.setter
    def safePlungeFeedrate(self, value: float):
        """
        The safe plunge feedrate for plunge moves.
        A plunge rate is the speed at which the tool is driven down into the material when starting a cut.
        It varies depending on the tool and material. Plunging too fast may damage the tip of the cutter.
        (cm/min)
        """
        pass

class MultiAxisSingularityLinearizationSettings(core.Base):
    """
    The class for the multi-axis singularity linearization settings.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MultiAxisSingularityLinearizationSettings:
        return MultiAxisSingularityLinearizationSettings()
    @property
    def linearizeMethod(self) -> MultiAxisSingularityLinearizeMethod:
        """
        The linearization method to use for the multi-axis singularity settings.
        """
        return MultiAxisSingularityLinearizeMethod()
    @linearizeMethod.setter
    def linearizeMethod(self, value: MultiAxisSingularityLinearizeMethod):
        """
        The linearization method to use for the multi-axis singularity settings.
        """
        pass
    @property
    def linearizationTolerance(self) -> float:
        """
        The linearization tolerance for the multi-axis singularity settings.
        """
        return float()
    @linearizationTolerance.setter
    def linearizationTolerance(self, value: float):
        """
        The linearization tolerance for the multi-axis singularity settings.
        """
        pass

class MultiAxisSingularitySettings(core.Base):
    """
    Base class for multi-axis singularity settings.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MultiAxisSingularitySettings:
        return MultiAxisSingularitySettings()
    def createLinearizationSettings(self) -> MultiAxisSingularityLinearizationSettings:
        """
        Creates a MultiAxisSingularityLinearizationSettings object.
        Set this object on the linearizationSettings property to apply the changes.
        The MultiAxisSingularityLinearizationSettings object created.
        """
        return MultiAxisSingularityLinearizationSettings()
    @property
    def cone(self) -> float:
        """
        The angular distance range between the tool axis vector and the singularity point before the singularity is adjusted.
        Typically, the angular distance is less than 5 degrees.
        The further the tool axis is from the singularity, the less visible the fluctuations in the rotary axes are.
        Value is in radians.
        """
        return float()
    @cone.setter
    def cone(self, value: float):
        """
        The angular distance range between the tool axis vector and the singularity point before the singularity is adjusted.
        Typically, the angular distance is less than 5 degrees.
        The further the tool axis is from the singularity, the less visible the fluctuations in the rotary axes are.
        Value is in radians.
        """
        pass
    @property
    def angle(self) -> float:
        """
        The minimum angular delta movement for the rotary axes before the singularity is adjusted.
        When fluctuations of the rotary axes are insignificant, this limit prevents adjustment of the tool axis vector.
        Typically set to 10 degrees or more.
        Value is in radians.
        """
        return float()
    @angle.setter
    def angle(self, value: float):
        """
        The minimum angular delta movement for the rotary axes before the singularity is adjusted.
        When fluctuations of the rotary axes are insignificant, this limit prevents adjustment of the tool axis vector.
        Typically set to 10 degrees or more.
        Value is in radians.
        """
        pass
    @property
    def tolerance(self) -> float:
        """
        The tolerance value for converting simultaneous multi-axis movements to linear movements when the tool axis is near a singularity.
        """
        return float()
    @tolerance.setter
    def tolerance(self, value: float):
        """
        The tolerance value for converting simultaneous multi-axis movements to linear movements when the tool axis is near a singularity.
        """
        pass
    @property
    def linearizationSettings(self) -> MultiAxisSingularityLinearizationSettings:
        """
        The settings for linearization of moves around the singularity.
        See MultiAxisSingularityLinearizeMethod for more details.
        Set this to null to not use linearization.
        For changes to to this object to take effect, re-assign them to this property.
        """
        return MultiAxisSingularityLinearizationSettings()
    @linearizationSettings.setter
    def linearizationSettings(self, value: MultiAxisSingularityLinearizationSettings):
        """
        The settings for linearization of moves around the singularity.
        See MultiAxisSingularityLinearizeMethod for more details.
        Set this to null to not use linearization.
        For changes to to this object to take effect, re-assign them to this property.
        """
        pass

class NCProgramInput(core.Base):
    """
    The NCProgramInput holds all necessary information to create a new NC program.
    It is needed for the NCPrograms.add method to instantiate a new NC program.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> NCProgramInput:
        return NCProgramInput()
    @property
    def parameters(self) -> CAMParameters:
        """
        Get all parameters for the current NC program. Parameters are initialized by user defaults.
        Configure operation parameters before creation for a better performance.
        """
        return CAMParameters()
    @property
    def operations(self) -> list[OperationBase]:
        """
        Gets and sets the operations which will be included in the NC program.
        Valid input contains any number of operations, setups or folders.
        For setups and folders all child operations will be added.
        Operations will be post processed in setup order, with operations from the same setup grouped together.
        Setting the nc_program_orderByTool BooleanParameterValue on the parameters property to true will reorder operations across multiple setups to reduce the number of tool changes.
        When the list of operations is associated to one setup and the setup has defined its job_programName or job_programComment parameters,
        then those values are applied to the nc_program_name and nc_program_comment parameters accordingly.
        """
        return [OperationBase()]
    @operations.setter
    def operations(self, value: list[OperationBase]):
        """
        Gets and sets the operations which will be included in the NC program.
        Valid input contains any number of operations, setups or folders.
        For setups and folders all child operations will be added.
        Operations will be post processed in setup order, with operations from the same setup grouped together.
        Setting the nc_program_orderByTool BooleanParameterValue on the parameters property to true will reorder operations across multiple setups to reduce the number of tool changes.
        When the list of operations is associated to one setup and the setup has defined its job_programName or job_programComment parameters,
        then those values are applied to the nc_program_name and nc_program_comment parameters accordingly.
        """
        pass
    @property
    def displayName(self) -> str:
        """
        Optionally specify the display name that appears in the browser-tree to override the default.
        """
        return str()
    @displayName.setter
    def displayName(self, value: str):
        """
        Optionally specify the display name that appears in the browser-tree to override the default.
        """
        pass

class NCProgramPostProcessOptions(core.Base):
    """
    The NCProgramPostProcessOptions provides settings to control the post processing of NC programs.
    It is needed for the NCPrograms.postProcess method for posting toolpaths and generating CNC files and setup sheets.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> NCProgramPostProcessOptions:
        return NCProgramPostProcessOptions()
    @staticmethod
    def create() -> NCProgramPostProcessOptions:
        """
        Creates a new NCProgramPostProcessOptions object to be used as an input argument by the postProcess()
        method.
        Returns the newly created NCProgramPostProcessOptions object or null if the creation failed.
        """
        return NCProgramPostProcessOptions()
    @property
    def isFailOnToolNumberDuplication(self) -> bool:
        """
        Toggles whether the post processing should abort if two tools with the same tool number have been detected.
        True by default. If true, an exception will be thrown if at least two tools map to the same tool number.
        If false, the post processor will not perform a tool change if the tool number is the same, which may mean that the wrong tool is used for an operation.
        """
        return bool()
    @isFailOnToolNumberDuplication.setter
    def isFailOnToolNumberDuplication(self, value: bool):
        """
        Toggles whether the post processing should abort if two tools with the same tool number have been detected.
        True by default. If true, an exception will be thrown if at least two tools map to the same tool number.
        If false, the post processor will not perform a tool change if the tool number is the same, which may mean that the wrong tool is used for an operation.
        """
        pass
    @property
    def postProcessExecutionBehavior(self) -> PostProcessExecutionBehaviors:
        """
        Gets and sets the post process behavior with regards to the operations' error or out of date states.
        Uses PostProcessExecutionBehavior_OmitInvalidAndEmptyOperations by default.
        """
        return PostProcessExecutionBehaviors()
    @postProcessExecutionBehavior.setter
    def postProcessExecutionBehavior(self, value: PostProcessExecutionBehaviors):
        """
        Gets and sets the post process behavior with regards to the operations' error or out of date states.
        Uses PostProcessExecutionBehavior_OmitInvalidAndEmptyOperations by default.
        """
        pass
    @property
    def fusionHubExecutionBehavior(self) -> FusionHubExecutionBehaviors:
        """
        Gets and sets the post process behavior for exporting to Fusion Hub.
        Uses fusionHubExecutionBehavior_ExportWithRelationship by default.
        """
        return FusionHubExecutionBehaviors()
    @fusionHubExecutionBehavior.setter
    def fusionHubExecutionBehavior(self, value: FusionHubExecutionBehaviors):
        """
        Gets and sets the post process behavior for exporting to Fusion Hub.
        Uses fusionHubExecutionBehavior_ExportWithRelationship by default.
        """
        pass

class NCPrograms(core.Base):
    """
    Container for all NC programs. Referenced from CAM product to access NC programs in a document, similar to what Setups is for all setup objects.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> NCPrograms:
        return NCPrograms()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> NCProgram:
        return None
    def __iter__(self) -> Iterator[NCProgram]:
        return None
    def item(self, index: int) -> NCProgram:
        """
        Function that returns the specified NC program using an index into the collection.
        index : The index of the item within the collection to return. The first item in the collection has an index of 0.
        Returns the specified item or null if an invalid index was specified.
        """
        return NCProgram()
    def itemByName(self, name: str) -> NCProgram:
        """
        Returns the NC program with the specified name.
        name : The name (as it appears in the browser) of the operation.
        Returns the specified NC program or null in the case where there is no NC program with the specified name.
        If there are multiple NC programs with the same name, the first item in the tree will be returned.
        """
        return NCProgram()
    def itemByOperationId(self, id: int) -> NCProgram:
        """
        Returns the NC program with the specified operation id.
        id : The id of the NC program.
        Returns the specified NC program or null in the case where there is no NC program with the specified operation id.
        """
        return NCProgram()
    def createInput(self) -> NCProgramInput:
        """
        Create a new NCProgramInput object. Use properties and methods on this object
        to define the NC program you want to create and then use the Add method, passing in
        the NCProgramInput object.
        Returns a new NCProgramInput object.
        """
        return NCProgramInput()
    def add(self, input: NCProgramInput) -> NCProgram:
        """
        Creates a new NC program.
        input : NCProgramInput which will be used to create the NC program.
        Returns the created NC program.
        """
        return NCProgram()
    @property
    def count(self) -> int:
        """
        The number of items in the collection.
        """
        return int()

class OperationBase(core.Base):
    """
    Base class object representing all operations, folders, patterns and setups.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> OperationBase:
        return OperationBase()
    def deleteMe(self) -> bool:
        """
        Deletes the operation from the document.
        In case of a setup or folder, all containing child operations will be deleted as well.
        Note: Child classes may overwrite this function and throw an exception if the object cannot be deleted.
        Returns true if the delete was successful.
        """
        return bool()
    def modifyUtility(self, utility: ModifyUtilityTypes) -> ModifyUtility:
        """
        Get ModifyUtility for the current operation by given utility type.
        utility : Defines the specific ModifyUtility.
        Returns ModifyUtility for specific type or null if the type is not compatible with the operation.
        """
        return ModifyUtility()
    def moveBefore(self, operation: OperationBase) -> bool:
        """
        Move operation in tree before the given operation.
        Throws an exception if a not allowed move is made for example moving a operation out of a setup.
        operation : Operation to move targeted operation before.
        Returns if move operation was successful.
        """
        return bool()
    def moveAfter(self, operation: OperationBase) -> bool:
        """
        Move operation in tree after the given operation.
        Throws an exception if a not allowed move is made for example moving a operation out of a setup.
        operation : Operation to move targeted operation after.
        Returns if move operation was successful.
        """
        return bool()
    def moveInto(self, container: OperationBase) -> bool:
        """
        Move operation in tree into the given container. This only works with setups, patterns and folders.
        Moved operation will be moved at the end of all operations already in the container.
        Throws an exception if a not allowed move is made for example moving a setup into a setup.
        container : Container to move targeted operation into.
        Returns if move operation was successful.
        """
        return bool()
    def copyBefore(self, operation: OperationBase) -> bool:
        """
        Creates a duplicate of the operation in the tree before the given operation.
        Throws an exception if a not allowed copy operation is made for example copying a operation out of a setup.
        operation : Operation to copy targeted operation before.
        Returns if copy command was successful.
        """
        return bool()
    def copyAfter(self, operation: OperationBase) -> bool:
        """
        Creates a duplicate of the operation in the tree after the given operation.
        Throws an exception if a not allowed copy operation is made for example copying a operation out of a setup.
        operation : Operation to copy targeted operation after.
        Returns if copy command was successful.
        """
        return bool()
    def copyInto(self, container: OperationBase) -> bool:
        """
        Creates a duplicate of the operation into the given container. You can only copy into containers, such as setups or folders.
        Copied operation will be copied at the end of all operations already in the container.
        Throws an exception if a not allowed copy operation is made for example copying a setup into a setup.
        container : Container to copy targeted operation into.
        Returns if copy command was successful.
        """
        return bool()
    def duplicate(self) -> bool:
        """
        Creates a duplicate of the operation in the tree after the itself.
        Returns if duplicate command was successful.
        """
        return bool()
    @property
    def name(self) -> str:
        """
        Gets and sets the name of the operation as seen in the browser.  This name is unique as compared
        to the names of all other operations in the document.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name of the operation as seen in the browser.  This name is unique as compared
        to the names of all other operations in the document.
        """
        pass
    @property
    def isProtected(self) -> bool:
        """
        Gets and sets the "protected" property value of the operation.
        Gets/sets true if the operation is protected.
        """
        return bool()
    @isProtected.setter
    def isProtected(self, value: bool):
        """
        Gets and sets the "protected" property value of the operation.
        Gets/sets true if the operation is protected.
        """
        pass
    @property
    def isOptional(self) -> bool:
        """
        Gets and sets the "Optional" property value of the operation.
        Gets/sets true if the operation is optional.
        """
        return bool()
    @isOptional.setter
    def isOptional(self, value: bool):
        """
        Gets and sets the "Optional" property value of the operation.
        Gets/sets true if the operation is optional.
        """
        pass
    @property
    def isSuppressed(self) -> bool:
        """
        Gets and sets the "Suppressed" property value of the operation.
        Gets/sets true if the operation is suppressed.
        """
        return bool()
    @isSuppressed.setter
    def isSuppressed(self, value: bool):
        """
        Gets and sets the "Suppressed" property value of the operation.
        Gets/sets true if the operation is suppressed.
        """
        pass
    @property
    def parentSetup(self) -> Setup:
        """
        Gets the Setup this operation belongs to.
        """
        return Setup()
    @property
    def isSelected(self) -> bool:
        """
        Gets if this operation is selected in the 'Setups' browser.
        """
        return bool()
    @property
    def notes(self) -> str:
        """
        Gets and sets the notes of the operation.
        """
        return str()
    @notes.setter
    def notes(self, value: str):
        """
        Gets and sets the notes of the operation.
        """
        pass
    @property
    def operationId(self) -> int:
        """
        Returns the id of the operation.  This id is unique as compared
        to the ids of all other operations in the document.
        This id will not change when changing the order or parent of the operation.
        This id will remain valid when the document is saved and reloaded.
        """
        return int()
    @property
    def parameters(self) -> CAMParameters:
        """
        Gets the CAMParameters collection for this operation.
        """
        return CAMParameters()
    @property
    def attributes(self) -> core.Attributes:
        """
        Returns the collection of attributes associated with this object.
        """
        return core.Attributes()
    @property
    def strategy(self) -> str:
        """
        Gets the name of the strategy associated with this operation.
        """
        return str()
    @property
    def hasWarning(self) -> bool:
        """
        Gets if problems were encountered when generating the operation.
        """
        return bool()
    @property
    def hasError(self) -> bool:
        """
        Gets if errors were encountered when generating the operation.
        """
        return bool()
    @property
    def error(self) -> str:
        """
        Returns a message corresponding to any active error associated with the value of this parameter.
        """
        return str()
    @property
    def warning(self) -> str:
        """
        Returns a message corresponding to any active warning associated with the value of this parameter.
        """
        return str()
    @property
    def isLightBulbOn(self) -> bool:
        """
        Gets if this operation is currently visible in the graphics window. Use the
        isLightBulbOn to change if the eye icon beside the operation node in the
        browser is on or not. Parent nodes in the browser can have their light
        bulb off which affects all of their children so this property does not
        indicate if the operation is actually visible, just that it should be visible
        if all of its parent nodes are also visible. Use the isVisible property
        to determine if it's actually visible.
        """
        return bool()
    @isLightBulbOn.setter
    def isLightBulbOn(self, value: bool):
        """
        Gets if this operation is currently visible in the graphics window. Use the
        isLightBulbOn to change if the eye icon beside the operation node in the
        browser is on or not. Parent nodes in the browser can have their light
        bulb off which affects all of their children so this property does not
        indicate if the operation is actually visible, just that it should be visible
        if all of its parent nodes are also visible. Use the isVisible property
        to determine if it's actually visible.
        """
        pass
    @property
    def isVisible(self) -> bool:
        """
        Gets if this operation is currently visible in the graphics window. Use the
        isLightBulbOn to change if the eye icon beside the operation node in the
        browser is on or not. Parent nodes in the browser can have their light
        bulb off which affects all of their children. This property indicates
        the final result and whether this operation is actually visible or not.
        """
        return bool()
    @property
    def generatedDataCollection(self) -> GeneratedDataCollection:
        """
        Get the generated data associated with a given operation base instance. The type of data depends on the strategy type and might not be available for all strategy types.
        The available types can be found in GeneratedData.cs
        null if the given object does not have available generated data, an instance in one of the child classes otherwise.
        """
        return GeneratedDataCollection()

class OperationInput(core.Base):
    """
    The OperationInput holds all necessary informations to create a new Operation.
    Can be added to the Operations instance for creation.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> OperationInput:
        return OperationInput()
    @property
    def strategy(self) -> str:
        """
        Get the current strategy
        """
        return str()
    @property
    def parameters(self) -> CAMParameters:
        """
        Get all parameters for the current strategy. Parameters are initialized by user defaults.
        Configure operation parameters before creation for a better performance.
        """
        return CAMParameters()
    @property
    def tool(self) -> Tool:
        """
        Optionally specify the tool used by the operation. The ToolLibraries allows the access to Local and Fusion tools.
        Setting the tool will overwrite tool parameters in the parameters property.
        """
        return Tool()
    @tool.setter
    def tool(self, value: Tool):
        """
        Optionally specify the tool used by the operation. The ToolLibraries allows the access to Local and Fusion tools.
        Setting the tool will overwrite tool parameters in the parameters property.
        """
        pass
    @property
    def toolPreset(self) -> ToolPreset:
        """
        Optionally specify the preset of the tool. If no preset is specified, the operation gets its default feed and speed.
        The Tool provides access to available presets. Use one of those presets to override the default.
        Setting the tool will overwrite a subset of tool parameters in the parameters property.
        An invalid preset will cause a failure during the creation of the operation.
        """
        return ToolPreset()
    @toolPreset.setter
    def toolPreset(self, value: ToolPreset):
        """
        Optionally specify the preset of the tool. If no preset is specified, the operation gets its default feed and speed.
        The Tool provides access to available presets. Use one of those presets to override the default.
        Setting the tool will overwrite a subset of tool parameters in the parameters property.
        An invalid preset will cause a failure during the creation of the operation.
        """
        pass
    @property
    def displayName(self) -> str:
        """
        Optionally specify the display name that appears in the browser-tree to override the default.
        """
        return str()
    @displayName.setter
    def displayName(self, value: str):
        """
        Optionally specify the display name that appears in the browser-tree to override the default.
        """
        pass
    @property
    def generationMode(self) -> AutomaticGenerationModes:
        """
        Defines the automatic generation during the creation of the operation.
        Can be used to force or skip the generation of the new operation.
        By default the newly created operation will not be generated.
        The default value is SkipGeneration.
        """
        return AutomaticGenerationModes()
    @generationMode.setter
    def generationMode(self, value: AutomaticGenerationModes):
        """
        Defines the automatic generation during the creation of the operation.
        Can be used to force or skip the generation of the new operation.
        By default the newly created operation will not be generated.
        The default value is SkipGeneration.
        """
        pass
    @property
    def referenceTool(self) -> Tool:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Optionally specify the reference tool used by the operation. The ToolLibraries allows the access to Local and Fusion tools.
        Setting the tool is only possible on operation strategies that support reference tools, an exception is thrown otherwise.
        Likewise null is returned if the operation strategy does not support reference tools.
        """
        return Tool()
    @referenceTool.setter
    def referenceTool(self, value: Tool):
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Optionally specify the reference tool used by the operation. The ToolLibraries allows the access to Local and Fusion tools.
        Setting the tool is only possible on operation strategies that support reference tools, an exception is thrown otherwise.
        Likewise null is returned if the operation strategy does not support reference tools.
        """
        pass

class Operations(core.Base):
    """
    Collection that provides access to the individual operations within an existing setup, folder or pattern.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Operations:
        return Operations()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> Operation:
        return None
    def __iter__(self) -> Iterator[Operation]:
        return None
    def item(self, index: int) -> Operation:
        """
        Function that returns the specified operation using an index into the collection.
        index : The index of the item within the collection to return.  The first item in the collection has an index of 0.
        Returns the specified item or null if an invalid index was specified.
        """
        return Operation()
    def itemByName(self, name: str) -> Operation:
        """
        Returns the operation with the specified name (as appears in the browser).
        name : The name (as it appears in the browser) of the operation.
        Returns the specified operation or null in the case where there is no operation with the specified name.
        """
        return Operation()
    def itemByOperationId(self, id: int) -> Operation:
        """
        Returns the operation with the specified operation id.
        id : The id of the operation.
        Returns the specified operation or null in the case where there is no operation with the specified operation id.
        """
        return Operation()
    def createInput(self, strategy: str) -> OperationInput:
        """
        Creates a new OperationInput object, which is used to define the operation you want to create.
        Use properties and methods on the returned OperationInput object to define the desired operation
        and then pass it into the add method to create the operation.
        strategy : The name of the strategy type that you want to create. Use the compatibleStrategies property of
        Operations object to get a list of the names of the strategies.
        Returns a new OperationInput object or will fail if an invalid strategy is specified.
        """
        return OperationInput()
    def add(self, input: OperationInput) -> OperationBase:
        """
        Create a new Operation.
        input : The OperationInput object defines the desired Operation. Use the createInput
        method to create a new OperationInput object and then use methods on it to define the Operation.
        The new Operation will be appended at the end of the current list of Operations.
        Throws an error if the strategy type is incompatible with the setup.
        Returns the newly created Operation.
        """
        return OperationBase()
    @property
    def count(self) -> int:
        """
        The number of items in the collection.
        """
        return int()
    @property
    def compatibleStrategies(self) -> list[OperationStrategy]:
        """
        Gets a list of the strategies that are compatible with the parent setup.
        This only returns strategies that are allowed to be added based on the active Setup or CAMFolder.
        
        Note: There may be cases where a compatible strategy might not be allowed to be created
        due to licensing or other issues like disabled preview features.
        Returns an array of compatible strategies.
        """
        return [OperationStrategy()]

class OperationStrategy(core.Base):
    """
    The OperationStrategy contains information about a strategy such as its name, title and description.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> OperationStrategy:
        return OperationStrategy()
    @staticmethod
    def createFromString(name: str) -> OperationStrategy:
        """
        Create an OperationStrategy for a given name.
        name : The name of the strategy.
        Throws an error if the strategy name is unknown.
        Returns the OperationStrategy for given strategy name.
        """
        return OperationStrategy()
    @property
    def name(self) -> str:
        """
        Get the name of the strategy. This is equivalent to the Operation's strategy property.
        Use as strategy parameter when creating a OperationInput.
        """
        return str()
    @property
    def title(self) -> str:
        """
        Get the localized title of the strategy.
        """
        return str()
    @property
    def description(self) -> str:
        """
        Get the localized description of the strategy.
        """
        return str()
    @property
    def isGenerationAllowed(self) -> bool:
        """
        Returns true if the strategy is allowed to be generated due to licensing and enabled preview features.
        Some strategies also require Active machining extension to be generated.
        Returns false otherwise.
        """
        return bool()
    @property
    def isMillingStrategy(self) -> bool:
        """
        Gets whether given OperationStrategy is a milling strategy.
        """
        return bool()
    @property
    def isTurningStrategy(self) -> bool:
        """
        Gets whether given OperationStrategy is a turning strategy.
        """
        return bool()
    @property
    def isRotaryStrategy(self) -> bool:
        """
        Gets whether given OperationStrategy is a rotary strategy.
        """
        return bool()
    @property
    def isDrillingStrategy(self) -> bool:
        """
        Gets whether given OperationStrategy is a drilling strategy.
        """
        return bool()
    @property
    def isCuttingStrategy(self) -> bool:
        """
        Gets whether given OperationStrategy is a cutting strategy.
        """
        return bool()
    @property
    def is2DStrategy(self) -> bool:
        """
        Gets whether given OperationStrategy is a 2D strategy.
        """
        return bool()
    @property
    def is3DStrategy(self) -> bool:
        """
        Gets whether given OperationStrategy is a 3D strategy.
        """
        return bool()
    @property
    def isFinishingStrategy(self) -> bool:
        """
        Gets whether given OperationStrategy is a finishing strategy.
        """
        return bool()
    @property
    def isAdditiveStrategy(self) -> bool:
        """
        Gets whether given OperationStrategy is an additive strategy.
        """
        return bool()
    @property
    def isSupportStrategy(self) -> bool:
        """
        Gets whether given OperationStrategy is an additive support strategy.
        """
        return bool()

class OptimizedOrientationResult(core.Base):
    """
    The orientation result instance.
    Contains properties that can be used to create a custom ranking and the orientation matrix.
    The calculated ranking is based on the orientation operation's ranking priorities.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> OptimizedOrientationResult:
        return OptimizedOrientationResult()
    @property
    def supportVolume(self) -> float:
        """
        The volume of the support hull below the oriented part.
        The value is given in cubic centimeters
        """
        return float()
    @property
    def supportArea(self) -> float:
        """
        The shadow area of the support hull below the oriented part.
        The value is given in squared centimeters
        """
        return float()
    @property
    def boundingBoxVolume(self) -> float:
        """
        The volume of the bounding box aligned to the world coordinate system of the oriented part.
        The value is given in cubic centimeters
        """
        return float()
    @property
    def partHeight(self) -> float:
        """
        The resulting height of the oriented part.
        The value is given in centimeters
        """
        return float()
    @property
    def centerOfGravityHeight(self) -> float:
        """
        The height of the center of gravity of the oriented part.
        The value is given in centimeters
        """
        return float()
    @property
    def rankingValue(self) -> float:
        """
        The value which the initial ordering is based on. Calculated based on the properties above by the orientation operation.
        """
        return float()
    @property
    def transformation(self) -> core.Matrix3D:
        """
        The transformation matrix to be applied onto the occurrence's existing transformation at the time of the calculation.
        """
        return core.Matrix3D()

class ParameterValue(core.Base):
    """
    Base class for representing the value of a parameter.
    Subclasses implement value handling for available parameter types.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ParameterValue:
        return ParameterValue()
    @property
    def parent(self) -> core.Base:
        """
        Get the parameter object that the value is associated with.
        """
        return core.Base()

class PostConfiguration(core.Base):
    """
    Object that represents a post configuration.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PostConfiguration:
        return PostConfiguration()
    @property
    def vendor(self) -> str:
        """
        Gets the name of the vendor of the machine tool or controller this post configuration supports.
        """
        return str()
    @property
    def description(self) -> str:
        """
        Gets the description of the post.
        """
        return str()
    @property
    def capability(self) -> PostCapabilities:
        """
        Gets the capabilities supported by the post.
        Capabilities define what types of operations can be post processed using this configuration.
        """
        return PostCapabilities()
    @property
    def version(self) -> str:
        """
        Gets the version of the post.
        """
        return str()
    @property
    def extension(self) -> str:
        """
        Gets the extension of the output file created by the post.
        """
        return str()

class PostConfigurationQuery(core.Base):
    """
    A PostConfigurationQuery can be used to search a LibraryLocation for a set of PostConfiguration objects matching the required properties.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PostConfigurationQuery:
        return PostConfigurationQuery()
    def execute(self) -> list[PostConfiguration]:
        """
        Query for specific posts. This PostConfiguration query.
        Returns a list of posts. Each returned post matches this query.
        """
        return [PostConfiguration()]
    @property
    def vendor(self) -> str:
        """
        The case-insensitive vendor specifies the vendor of the post configuration. The default empty vendor applies to all post configurations.
        """
        return str()
    @vendor.setter
    def vendor(self, value: str):
        """
        The case-insensitive vendor specifies the vendor of the post configuration. The default empty vendor applies to all post configurations.
        """
        pass
    @property
    def url(self) -> core.URL:
        """
        The URL specifies the location and folder to search for in the post library.
        Setting the URL updates the location.
        """
        return core.URL()
    @url.setter
    def url(self, value: core.URL):
        """
        The URL specifies the location and folder to search for in the post library.
        Setting the URL updates the location.
        """
        pass
    @property
    def capability(self) -> PostCapabilities:
        """
        Specifies the capability to search for in the post library.
        """
        return PostCapabilities()
    @capability.setter
    def capability(self, value: PostCapabilities):
        """
        Specifies the capability to search for in the post library.
        """
        pass
    @property
    def location(self) -> LibraryLocations:
        """
        The location specifies the location to search in the post library.
        Setting the location clears any previous specified URL.
        """
        return LibraryLocations()
    @location.setter
    def location(self, value: LibraryLocations):
        """
        The location specifies the location to search in the post library.
        Setting the location clears any previous specified URL.
        """
        pass

class PrintSetting(core.Base):
    """
    Object that represents a PrintSetting.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PrintSetting:
        return PrintSetting()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> PrintSettingItem:
        return None
    def __iter__(self) -> Iterator[PrintSettingItem]:
        return None
    @staticmethod
    def createFromXML(xmlContent: str) -> PrintSetting:
        """
        Creates a PrintSetting from a xml content.
        xmlContent : The xml content string of a PrintSetting file to act as a base for creating a PrintSetting from.
        Returns the newly created PrintSetting.
        """
        return PrintSetting()
    def parameters(self, type: PrintSettingItemTypes) -> CAMParameters:
        """
        Function that returns the specified parameterTable using an enum into the collection.
        type : The type of the item within the collection to return.
        Returns the specified type of parameters or null if an invalid type was specified.
        """
        return CAMParameters()
    def itemByName(self, name: str) -> PrintSettingItem:
        """
        Returns the PrintSetting item of the specified body preset.
        name : The body preset id of the parameters.
        Returns the specified parameters or  throws exception in the case where there is no parameters with the specified id.
        """
        return PrintSettingItem()
    def duplicatePrintSettingItem(self, name: str) -> PrintSettingItem:
        """
        Duplicates the PrintSetting item of the specified body preset.
        name : The body preset id of the parameters that has to be duplicated.
        Returns the specified parameters or throws exception in the case where there is no parameters with the specified id.
        """
        return PrintSettingItem()
    def deletePrintSettingItem(self, name: str) -> None:
        """
        Deletes the PrintSettingItem of the specified body preset.
        Throws an exception when the name does not match any available PrintSettingItems or when trying to delete the default PrintSettingItem.
        name : The body preset id of the parameters that has to be deleted.
        """
        pass
    def setDefaultPrintSettingItem(self, name: str) -> None:
        """
        Defaults the PrintSetting item of the specified body preset. Throws exception when name not found.
        name : The body preset id of the parameters that has to be defaulted.
        """
        pass
    def getDefaultPrintSettingItem(self) -> PrintSettingItem:
        """
        Gets the default PrintSetting item of the specified body preset. Throws exception when name not found.
        Returns the default parameters.
        """
        return PrintSettingItem()
    def item(self, index: int) -> PrintSettingItem:
        """
        Get the PrintSettingItem at index in PrintSetting.
        index : The index of the PrintSettingItem.
        The PrintSettingItem at index.
        """
        return PrintSettingItem()
    def syncWithMachine(self, machine: Machine) -> bool:
        """
        Synchronizes the print setting with the given machine, making extruder parameter options dependent on the available extruders in the machine.
        """
        return bool()
    def isCompatibleWithMachine(self, machine: Machine) -> bool:
        """
        Checks whether the print setting is usable with the given machine.
        """
        return bool()
    def toXML(self) -> str:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Generates and returns the print setting xml content string.
        Returns print setting xml content string.
        """
        return str()
    @property
    def name(self) -> str:
        """
        Gets and sets the name of the PrintSetting.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name of the PrintSetting.
        """
        pass
    @property
    def description(self) -> str:
        """
        Gets and sets the description of the PrintSetting.
        """
        return str()
    @description.setter
    def description(self, value: str):
        """
        Gets and sets the description of the PrintSetting.
        """
        pass
    @property
    def technology(self) -> str:
        """
        Gets the technology of the PrintSetting.
        """
        return str()
    @property
    def id(self) -> str:
        """
        Gets the unique identifier of the PrintSetting.
        Can be used for comparing PrintSettings within the document.
        """
        return str()
    @property
    def count(self) -> int:
        """
        Get the number of PrintSettingItems in this collection.
        """
        return int()

class PrintSettingItem(core.Base):
    """
    Collection that provides access to the print setting parameters.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PrintSettingItem:
        return PrintSettingItem()
    @property
    def name(self) -> str:
        """
        Body Preset get and set name.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Body Preset get and set name.
        """
        pass
    @property
    def description(self) -> str:
        """
        Body Preset get and set description.
        """
        return str()
    @description.setter
    def description(self, value: str):
        """
        Body Preset get and set description.
        """
        pass
    @property
    def parameters(self) -> CAMParameters:
        """
        Function that returns the parameters for reading and editing values.
        Returns the parameters of specified item.
        """
        return CAMParameters()

class PrintSettingQuery(core.Base):
    """
    A PrintSettingQuery can be used to search a LibraryLocation for a set of PrintSetting objects matching the required properties.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PrintSettingQuery:
        return PrintSettingQuery()
    def execute(self) -> list[PrintSetting]:
        """
        Query for specific PrintSettings. This PrintSettingQuery query.
        Returns a list of PrintSetting. Each returned PrintSetting matches this query.
        """
        return [PrintSetting()]
    @property
    def name(self) -> str:
        """
        The case-insensitive name specifies the name of the PrintSetting.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        The case-insensitive name specifies the name of the PrintSetting.
        """
        pass
    @property
    def technology(self) -> str:
        """
        The case-insensitive technology specifies technology of the PrintSetting.
        """
        return str()
    @technology.setter
    def technology(self, value: str):
        """
        The case-insensitive technology specifies technology of the PrintSetting.
        """
        pass
    @property
    def vendor(self) -> str:
        """
        The case-insensitive vendor specifies vendor of the PrintSetting. Generic FFF PrintSetting doesnt have a vendor.
        """
        return str()
    @vendor.setter
    def vendor(self, value: str):
        """
        The case-insensitive vendor specifies vendor of the PrintSetting. Generic FFF PrintSetting doesnt have a vendor.
        """
        pass
    @property
    def material(self) -> str:
        """
        The case-insensitive material specifies material of the MPBF PrintSetting.
        """
        return str()
    @material.setter
    def material(self, value: str):
        """
        The case-insensitive material specifies material of the MPBF PrintSetting.
        """
        pass
    @property
    def layerHeight(self) -> float:
        """
        The layer height specifies layer height of the PrintSetting. This should match the PrintSetting layer height in cm.
        """
        return float()
    @layerHeight.setter
    def layerHeight(self, value: float):
        """
        The layer height specifies layer height of the PrintSetting. This should match the PrintSetting layer height in cm.
        """
        pass
    @property
    def url(self) -> core.URL:
        """
        The URL specifies the location and folder to search for in the PrintSetting library.
        Setting the URL updates the location.
        """
        return core.URL()
    @url.setter
    def url(self, value: core.URL):
        """
        The URL specifies the location and folder to search for in the PrintSetting library.
        Setting the URL updates the location.
        """
        pass
    @property
    def location(self) -> LibraryLocations:
        """
        The location specifies the location to search in the PrintSetting library.
        Setting the location clears any previous specified URL.
        """
        return LibraryLocations()
    @location.setter
    def location(self, value: LibraryLocations):
        """
        The location specifies the location to search in the PrintSetting library.
        Setting the location clears any previous specified URL.
        """
        pass
    @property
    def machine(self) -> Machine:
        """
        The machine specifies which machine the found print setting are compatible with.
        """
        return Machine()
    @machine.setter
    def machine(self, value: Machine):
        """
        The machine specifies which machine the found print setting are compatible with.
        """
        pass

class RecognizedHole(core.Base):
    """
    Object that represents a hole, a hole is made of one or more segments.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RecognizedHole:
        return RecognizedHole()
    @staticmethod
    def recognizeHolesWithInput(bodies: list[core.Base], input: RecognizedHolesInput) -> RecognizedHoles:
        """
        Returns a collection of all recognized holes.
        bodies : Model bodies on which to recognize holes.
        input : Input object that contains filtering settings
        """
        return RecognizedHoles()
    def segment(self, index: int) -> RecognizedHoleSegment:
        """
        Returns the segment at the specified index from this hole. The collection of segments that comprise this hole
        are in order. The first segment is at the top of this hole and the last segment is at the bottom.
        index : The index of the segment within this hole to return. The first segment in this hole has an index of 0.
        """
        return RecognizedHoleSegment()
    def getHoleSignatureXML(self) -> str:
        """
        Convert hole signature to XML. The result can be used to create a hole template.
        """
        return str()
    @property
    def axis(self) -> core.Vector3D:
        """
        Returns the unit vector that points straight up out of the hole in the global coordinate system.
        """
        return core.Vector3D()
    @property
    def isThreaded(self) -> bool:
        """
        Returns true if at least one segment of this hole is threaded, i.e. associated with a thread feature.
        """
        return bool()
    @property
    def segmentCount(self) -> int:
        """
        Returns the number of segments contained in this hole.
        """
        return int()
    @property
    def top(self) -> core.Point3D:
        """
        Returns a point at the center of the hole top.
        """
        return core.Point3D()
    @property
    def bottom(self) -> core.Point3D:
        """
        Returns a point at the center of the hole bottom.
        """
        return core.Point3D()
    @property
    def topDiameter(self) -> float:
        """
        Returns the diameter of the top of this hole (top diameter of the first segment contained in this hole).
        """
        return float()
    @property
    def bottomDiameter(self) -> float:
        """
        Returns the diameter of the bottom of this hole (bottom diameter of the last segment contained in this hole).
        """
        return float()
    @property
    def totalLength(self) -> float:
        """
        Returns the total length of all segments contained in this hole.
        """
        return float()
    @property
    def hasWarnings(self) -> bool:
        """
        Returns true if there are any warnings associated with this hole.
        """
        return bool()
    @property
    def hasErrors(self) -> bool:
        """
        Returns true if there are any errors associated with this hole.
        """
        return bool()
    @property
    def isThrough(self) -> bool:
        """
        Returns true if this is a through hole, i.e. if the bottom is open.
        """
        return bool()

class RecognizedHoleGroup(core.Base):
    """
    Object that represents a collection of holes that contain similar geometry. Holes have similar geometry if they contain the same segment types with the same segment heights, diameters, etc...
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RecognizedHoleGroup:
        return RecognizedHoleGroup()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> RecognizedHole:
        return None
    def __iter__(self) -> Iterator[RecognizedHole]:
        return None
    @staticmethod
    def recognizeHoleGroupsWithInput(bodies: list[core.Base], input: RecognizedHolesInput) -> RecognizedHoleGroups:
        """
        Gets all recognized holes and returns them as hole groupings based on similar geometry.
        bodies : Model bodies on which to recognize holes.
        input : Input object that contains filtering settings
        """
        return RecognizedHoleGroups()
    def item(self, index: int) -> RecognizedHole:
        """
        Returns the hole at the specified index from this hole group.
        index : The index of the hole within this hole group to return. The first hole in this hole group has an index of 0.
        """
        return RecognizedHole()
    @property
    def count(self) -> int:
        """
        Returns the number of holes contained in this hole group.
        """
        return int()
    @property
    def hasWarnings(self) -> bool:
        """
        Returns true if there are any warnings associated with this hole group.
        """
        return bool()
    @property
    def hasErrors(self) -> bool:
        """
        Returns true if there are any errors associated with this hole group.
        """
        return bool()

class RecognizedHoleGroups(core.Base):
    """
    Object that represents a collection of hole groups.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RecognizedHoleGroups:
        return RecognizedHoleGroups()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> RecognizedHoleGroup:
        return None
    def __iter__(self) -> Iterator[RecognizedHoleGroup]:
        return None
    def item(self, index: int) -> RecognizedHoleGroup:
        """
        Returns the hole group at the specified index from this collection of hole groups.
        index : The index of the hole group within this hole group collection to return. The first hole group in this collection has an index of 0.
        """
        return RecognizedHoleGroup()
    @property
    def count(self) -> int:
        """
        Returns the number of hole groups contained in this hole group collection.
        """
        return int()

class RecognizedHoles(core.Base):
    """
    Object that represents a collection of holes.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RecognizedHoles:
        return RecognizedHoles()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> RecognizedHole:
        return None
    def __iter__(self) -> Iterator[RecognizedHole]:
        return None
    def item(self, index: int) -> RecognizedHole:
        """
        Returns the hole at the specified index from this collection of holes.
        index : The index of the hole within this hole collection to return. The first hole in this collection has an index of 0.
        """
        return RecognizedHole()
    @property
    def count(self) -> int:
        """
        Returns the number of holes contained in this hole collection.
        """
        return int()

class RecognizedHoleSegment(core.Base):
    """
    Object that represents a hole segment, i.e. a single geometric shape like a cylinder or cone within the context of a hole.
    A segment represents a hole face.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RecognizedHoleSegment:
        return RecognizedHoleSegment()
    @property
    def holeSegmentType(self) -> HoleSegmentType:
        """
        Returns whether this segment represents a cylinder, cone, flat, or torus geometry type
        """
        return HoleSegmentType()
    @property
    def topDiameter(self) -> float:
        """
        Returns the diameter of the top of this segment.
        """
        return float()
    @property
    def bottomDiameter(self) -> float:
        """
        Returns the diameter of the bottom of this segment.
        """
        return float()
    @property
    def height(self) -> float:
        """
        Returns the height of this segment from top to bottom.
        """
        return float()
    @property
    def axis(self) -> core.Vector3D:
        """
        Returns the unit vector that points straight up out of the segment in the global coordinate system.
        """
        return core.Vector3D()
    @property
    def isThreaded(self) -> bool:
        """
        Returns true if this segment is threaded, i.e. associated with a thread feature.
        """
        return bool()
    @property
    def threadFeatures(self) -> list[fusion.ThreadFeature]:
        """
        Returns the thread features associated with this segment, or null if none exist for this segment.
        """
        return [fusion.ThreadFeature()]
    @property
    def halfAngle(self) -> float:
        """
        For hole segments of type Cone, returns the cone's half angle,
        i.e. the angle between the axis of the cone and its surface. Returns 0 for other segment types.
        """
        return float()
    @property
    def faces(self) -> list[core.Base]:
        """
        Returns the model faces this segment references.
        """
        return [core.Base()]

class RecognizedHolesInput(core.Base):
    """
    Object that contains the settings used by recognizedHoles and recognizedHoleGroups.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RecognizedHolesInput:
        return RecognizedHolesInput()
    @staticmethod
    def create() -> RecognizedHolesInput:
        """
        Creates an empty input object to be passed into recognizedHoles or recognizedHoleGroups
        The newly created input object.
        """
        return RecognizedHolesInput()
    @property
    def filterPartialHoles(self) -> bool:
        """
        Partial holes will not be included in recognized holes when set to true.
        Holes that intersect edges are considered partial holes.
        If a hole has multiple segments, such as a counterbore hole, all the segments inside the hole must intersect an edge for the hole to be considered a partial hole.
        """
        return bool()
    @filterPartialHoles.setter
    def filterPartialHoles(self, value: bool):
        """
        Partial holes will not be included in recognized holes when set to true.
        Holes that intersect edges are considered partial holes.
        If a hole has multiple segments, such as a counterbore hole, all the segments inside the hole must intersect an edge for the hole to be considered a partial hole.
        """
        pass

class RecognizedPocket(core.Base):
    """
    Object that represents a single pocket (an outer boundary with depth and optional islands)
    which has been recognized on the model.
    See PocketRecognitionSelection for making a selection as in the UI.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RecognizedPocket:
        return RecognizedPocket()
    @staticmethod
    def recognizePockets(body: core.Base, attackVector: core.Vector3D) -> RecognizedPockets:
        """
        Gets all recognized pockets from the given body and returns them.
        This recognition method does not contain bosses.
        body : Model body on which to recognize pockets
        attackVector : A vector defining the orientation in which to search for pockets. This should be the
        vector pointing down along the tool towards its tip and the pocket floors.
        """
        return RecognizedPockets()
    @staticmethod
    def recognizePocketsWithInput(input: RecognizedPocketInput) -> RecognizedPockets:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Gets all recognized pockets based on the properties in the given input object and returns them.
        The method is only available with the Machining Extension.
        input : An input object defining the body and search parameters for recognizing pockets.
        """
        return RecognizedPockets()
    @property
    def boundaries(self) -> list[core.Curve3DPath]:
        """
        Returns the outside boundaries of this pocket (in cm).
        """
        return [core.Curve3DPath()]
    @property
    def islands(self) -> list[core.Curve3DPath]:
        """
        Returns each island inside this pocket as a separate ProfileLoop object (in cm).
        """
        return [core.Curve3DPath()]
    @property
    def depth(self) -> float:
        """
        Returns the depth of the pocket in centimeters, i.e. the positive distance from top to bottom
        """
        return float()
    @property
    def isThrough(self) -> bool:
        """
        Returns true if this is a through pocket, i.e. if the bottom is open.
        """
        return bool()
    @property
    def isClosed(self) -> bool:
        """
        Returns true if this pocket is closed, i.e. if its boundary is a single closed curve.
        """
        return bool()
    @property
    def bottomType(self) -> RecognizedPocketBottomType:
        """
        Returns the type of bottom edge this pocket has.
        """
        return RecognizedPocketBottomType()
    @property
    def faces(self) -> list[fusion.BRepFace]:
        """
        Returns all faces making up the pocket.
        """
        return [fusion.BRepFace()]
    @property
    def sharedFaces(self) -> list[fusion.BRepFace]:
        """
        Returns all faces making up the pocket, which are shared with other pockets.
        """
        return [fusion.BRepFace()]
    @property
    def attackVector(self) -> core.Vector3D:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the attack vector that was used to recognize this pocket.
        """
        return core.Vector3D()

class RecognizedPocketInput(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Input object containing properties used to recognize pockets. Includes bosses along open and closed pockets.
    The class is only available with the Machining Extension.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RecognizedPocketInput:
        return RecognizedPocketInput()
    @staticmethod
    def create() -> RecognizedPocketInput:
        """
        Creates a new RecognizedPocketInput object.
        """
        return RecognizedPocketInput()
    @property
    def body(self) -> core.Base:
        """
        The body on which to recognize pockets.
        """
        return core.Base()
    @body.setter
    def body(self, value: core.Base):
        """
        The body on which to recognize pockets.
        """
        pass
    @property
    def attackVectors(self) -> list[core.Vector3D]:
        """
        The attack vectors used to recognize pockets.
        If left empty, this array will be filled with normals of all planar faces on the given body.
        There vectors should be pointing down along the tool towards its tip and the pocket floors.
        """
        return [core.Vector3D()]
    @attackVectors.setter
    def attackVectors(self, value: list[core.Vector3D]):
        """
        The attack vectors used to recognize pockets.
        If left empty, this array will be filled with normals of all planar faces on the given body.
        There vectors should be pointing down along the tool towards its tip and the pocket floors.
        """
        pass
    @property
    def isIncludingBosses(self) -> bool:
        """
        Sets and gets whether bosses should be included in the recognized pockets.
        Bosses are defined as pockets that protrude above the surrounding model faces and thus only consist of islands without an outer boundary.
        This value is true by default.
        """
        return bool()
    @isIncludingBosses.setter
    def isIncludingBosses(self, value: bool):
        """
        Sets and gets whether bosses should be included in the recognized pockets.
        Bosses are defined as pockets that protrude above the surrounding model faces and thus only consist of islands without an outer boundary.
        This value is true by default.
        """
        pass

class RecognizedPockets(core.Base):
    """
    Object that represents a collection of pockets.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RecognizedPockets:
        return RecognizedPockets()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> RecognizedPocket:
        return None
    def __iter__(self) -> Iterator[RecognizedPocket]:
        return None
    def item(self, index: int) -> RecognizedPocket:
        """
        Returns the pocket at the specified index from this collection of pockets.
        index : The index of the pocket within this pocket collection to return. The first pocket in this collection has an index of 0.
        """
        return RecognizedPocket()
    @property
    def count(self) -> int:
        """
        Returns the number of pockets contained in this pocket collection.
        """
        return int()

class SetupChangeEventHandler(core.EventHandler):
    """
    The SetupChangeEventHandler is a client implemented class that can be added as a handler to a
    SetupChangeEvent.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SetupChangeEventHandler:
        return SetupChangeEventHandler()
    def notify(self, eventArgs: SetupChangeEventArgs) -> None:
        """
        The function called by CAM when the associated event is fired.
        eventArgs : Returns an object that provides access to additional information associated with the event.
        """
        pass

class SetupEventHandler(core.EventHandler):
    """
    The SetupEventHandler is a client implemented class that can be added as a handler to a
    SetupEvent.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SetupEventHandler:
        return SetupEventHandler()
    def notify(self, eventArgs: SetupEventArgs) -> None:
        """
        The function called by CAM when the associated event is fired.
        eventArgs : Returns an object that provides access to additional information associated with the event.
        """
        pass

class SetupInput(core.Base):
    """
    Object that represents an setup creation parameters.
    The input-object can be used from the Setups.add method
    to instantiate a new setup
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SetupInput:
        return SetupInput()
    @property
    def name(self) -> str:
        """
        Name of the new setup.
        This is displayed in the browser tree and can be used to access the setup from Setups.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Name of the new setup.
        This is displayed in the browser tree and can be used to access the setup from Setups.
        """
        pass
    @property
    def operationType(self) -> OperationTypes:
        """
        Operation Type for the setup
        """
        return OperationTypes()
    @property
    def models(self) -> list[core.Base]:
        """
        A list of models, where a model can be an Occurrence, BRepBody, or MeshBody.
        The returned array is connected to the SetupInput and can be added to directly
        without needing to create a new array, populate it, and assign it using this property,
        although, that is supported too.
        """
        return [core.Base()]
    @models.setter
    def models(self, value: list[core.Base]):
        """
        A list of models, where a model can be an Occurrence, BRepBody, or MeshBody.
        The returned array is connected to the SetupInput and can be added to directly
        without needing to create a new array, populate it, and assign it using this property,
        although, that is supported too.
        """
        pass
    @property
    def stockMode(self) -> SetupStockModes:
        """
        StockMode for the setup.
        """
        return SetupStockModes()
    @stockMode.setter
    def stockMode(self, value: SetupStockModes):
        """
        StockMode for the setup.
        """
        pass
    @property
    def stockSolids(self) -> list[core.Base]:
        """
        An array of models, where a model can be an Occurrence, ManufacturingModel, BRepBody, or MeshBody.
        Setting this property, or adding the first object to the returned array will automatically
        set the stockMode to "SolidStock".
        
        The returned array is connected to the SetupInput and can be added to directly
        without needing to create a new array, populate it, and assign it using this property,
        although, that is supported too.
        """
        return [core.Base()]
    @stockSolids.setter
    def stockSolids(self, value: list[core.Base]):
        """
        An array of models, where a model can be an Occurrence, ManufacturingModel, BRepBody, or MeshBody.
        Setting this property, or adding the first object to the returned array will automatically
        set the stockMode to "SolidStock".
        
        The returned array is connected to the SetupInput and can be added to directly
        without needing to create a new array, populate it, and assign it using this property,
        although, that is supported too.
        """
        pass
    @property
    def fixtureEnabled(self) -> bool:
        """
        Set this value to enable the use of fixtures for this setup.
        To then set the fixture models themselves use the `fixtures` property.
        """
        return bool()
    @fixtureEnabled.setter
    def fixtureEnabled(self, value: bool):
        """
        Set this value to enable the use of fixtures for this setup.
        To then set the fixture models themselves use the `fixtures` property.
        """
        pass
    @property
    def fixtures(self) -> list[core.Base]:
        """
        An array of models that represent fixtures, where a model can be an Occurrence,
        BRepBody, or MeshBody.
        
        The returned array is connected to the SetupInput and can be added to directly
        without needing to create a new array, populate it, and assign using this property,
        although, that is supported too.
        """
        return [core.Base()]
    @fixtures.setter
    def fixtures(self, value: list[core.Base]):
        """
        An array of models that represent fixtures, where a model can be an Occurrence,
        BRepBody, or MeshBody.
        
        The returned array is connected to the SetupInput and can be added to directly
        without needing to create a new array, populate it, and assign using this property,
        although, that is supported too.
        """
        pass
    @property
    def machine(self) -> Machine:
        """
        Gets and sets the Machine associated with the setup.
        """
        return Machine()
    @machine.setter
    def machine(self, value: Machine):
        """
        Gets and sets the Machine associated with the setup.
        """
        pass
    @property
    def printSetting(self) -> PrintSetting:
        """
        Gets and sets the PrintSetting associated with the setup.
        """
        return PrintSetting()
    @printSetting.setter
    def printSetting(self, value: PrintSetting):
        """
        Gets and sets the PrintSetting associated with the setup.
        """
        pass
    @property
    def parameters(self) -> CAMParameters:
        """
        Get all parameters for the setup to be created. Parameters are initialized by user defaults.
        Configure operation parameters before creation for a better performance.
        """
        return CAMParameters()
    @property
    def isUsingPreviousSetupData(self) -> bool:
        """
        Get and set if data from the previous setup should be used when creating another setup.
        The data applied from the previous setup is machine information and the stock from the preceeding setup.
        By default this value is false.
        """
        return bool()
    @isUsingPreviousSetupData.setter
    def isUsingPreviousSetupData(self, value: bool):
        """
        Get and set if data from the previous setup should be used when creating another setup.
        The data applied from the previous setup is machine information and the stock from the preceeding setup.
        By default this value is false.
        """
        pass

class Setups(core.Base):
    """
    Collection that provides access to all of the existing setups in a document.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Setups:
        return Setups()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> Setup:
        return None
    def __iter__(self) -> Iterator[Setup]:
        return None
    def item(self, index: int) -> Setup:
        """
        Function that returns the specified setup using an index into the collection.
        index : The index of the item within the collection to return.  The first item in the collection has an index of 0.
        Returns the specified item or null if an invalid index was specified.
        """
        return Setup()
    def itemByName(self, name: str) -> Setup:
        """
        Returns the setup with the specified name.
        name : The name (as it appears in the browser) of the operation.
        Returns the specified setup or null in the case where there is no setup with the specified name.
        """
        return Setup()
    def itemByOperationId(self, id: int) -> Setup:
        """
        Returns the setup with the specified operation id.
        id : The id of the operation.
        Returns the specified setup or null in the case where there is no setup with the specified operation id.
        """
        return Setup()
    def createInput(self, type: OperationTypes) -> SetupInput:
        """
        Creates a new SetupInput object that is used to specify the input needed to create a new setup.
        type : The type specifies the type of the setup that should be created.
        Returns new SetupInput object.
        """
        return SetupInput()
    def add(self, input: SetupInput) -> Setup:
        """
        Creates a new setup.
        input : The input holds all the information needed to create a valid setup.
        Returns newly created Setup instance.
        """
        return Setup()
    @property
    def count(self) -> int:
        """
        The number of setups in the collection.
        """
        return int()

class SetupVisibilityManager(core.Base):
    """
    Class to manage the visibility of various elements of the setup.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SetupVisibilityManager:
        return SetupVisibilityManager()
    @property
    def machineVisible(self) -> bool:
        """
        Controls the visibility of the setup's machine.
        """
        return bool()
    @machineVisible.setter
    def machineVisible(self, value: bool):
        """
        Controls the visibility of the setup's machine.
        """
        pass
    @property
    def machineBaseVisible(self) -> bool:
        """
        Controls the visibility of the setup's machine base where it exists.
        This is always disabled for additive setups.
        """
        return bool()
    @machineBaseVisible.setter
    def machineBaseVisible(self, value: bool):
        """
        Controls the visibility of the setup's machine base where it exists.
        This is always disabled for additive setups.
        """
        pass

class StockMaterial(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Represents a StockMaterial.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> StockMaterial:
        return StockMaterial()
    @staticmethod
    def createFromJson(json: str) -> StockMaterial:
        """
        Creates a StockMaterial object from given JSON string.
        json : The JSON should fully define the StockMaterial and contain all StockMaterial parameters.
        If the JSON contains more than one StockMaterial, only the first StockMaterial is loaded.
        Returns the newly created StockMaterial.
        """
        return StockMaterial()
    def toJson(self) -> str:
        """
        Generates and returns a JSON string that contains a description of this StockMaterial.
        Returns a JSON string that contains a description of this StockMaterial.
        """
        return str()
    @property
    def category(self) -> str:
        """
        Gets and sets the category of the stock material.
        """
        return str()
    @category.setter
    def category(self, value: str):
        """
        Gets and sets the category of the stock material.
        """
        pass
    @property
    def name(self) -> str:
        """
        Gets and sets the name of the stock material.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name of the stock material.
        """
        pass
    @property
    def designators(self) -> list[str]:
        """
        Gets a list of designators of the stock material.
        """
        return [str()]
    @designators.setter
    def designators(self, value: list[str]):
        """
        Gets a list of designators of the stock material.
        """
        pass
    @property
    def hardness(self) -> float:
        """
        Get and sets the hardness of the stock materials.
        NOTE: the hardness can be NaN if not set. and user can set the hardness to NaN.
        """
        return float()
    @hardness.setter
    def hardness(self, value: float):
        """
        Get and sets the hardness of the stock materials.
        NOTE: the hardness can be NaN if not set. and user can set the hardness to NaN.
        """
        pass

class Tool(core.Base):
    """
    Represents a Tool.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Tool:
        return Tool()
    @staticmethod
    def createFromJson(json: str) -> Tool:
        """
        Creates a Tool object from given JSON string.
        json : The JSON should fully define the tool and contain all tool parameters.
        If the JSON contains more than one tool, only the first Tool is loaded.
        Returns the newly created Tool.
        """
        return Tool()
    @staticmethod
    def createFromP21(p21: str) -> Tool:
        """
        Creates a Tool object given a string containing a tool defined using the P21 format.
        Throws an error if the given string does not conform to the P21 format.
        p21 : Creates a Tool object from the given P21 string.
        Returns the newly created Tool.
        """
        return Tool()
    def toJson(self) -> str:
        """
        Generates and returns a JSON string that contains a description of this tool.
        Returns a JSON string that contains a description of this tool.
        """
        return str()
    @property
    def parameters(self) -> CAMParameters:
        """
        Gets the CAMParameters collection associated with this tool. This
        defines all of the settings that describe the details of the tool.
        """
        return CAMParameters()
    @property
    def presets(self) -> ToolPresets:
        """
        Gets the ToolPresets collection associated with this tool.
        """
        return ToolPresets()
    @property
    def description(self) -> str:
        """
        Gets the descriptive text about the tool.
        Includes various pieces of information depending on the tool type.
        Usually contains the tool number, data describing the tool geometry and the description.
        In the UI, the same information is displayed in the operation tree or in the tool library table.
        """
        return str()

class ToolLibrary(core.Base):
    """
    ToolLibrary represents a collection of Tool objects.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ToolLibrary:
        return ToolLibrary()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> Tool:
        return None
    def __iter__(self) -> Iterator[Tool]:
        return None
    @staticmethod
    def createFromJson(json: str) -> ToolLibrary:
        """
        Creates a ToolLibrary by given JSON-string. Raises an error if the given JSON is invalid.
        json : The JSON contains all tools that should be added to the new ToolLibrary
        Returns the newly created ToolLibrary.
        """
        return ToolLibrary()
    @staticmethod
    def createEmpty() -> ToolLibrary:
        """
        Creates an empty ToolLibrary.
        Returns the newly created ToolLibrary.
        """
        return ToolLibrary()
    def item(self, index: int) -> Tool:
        """
        Get Tool by index in ToolLibrary.
        index : Index of the Tool in the ToolLibrary.
        Returns the Tool in the ToolLibrary by given index.
        """
        return Tool()
    def add(self, tool: Tool) -> bool:
        """
        Inserts a Tool at the end of the ToolLibrary.
        tool : The Tool that should be added.
        Returns true for successful insertion, false otherwise
        """
        return bool()
    def remove(self, index: int) -> bool:
        """
        Remove Tool by index from ToolLibrary.
        index : Index of the Tool in the ToolLibrary that should be removed.
        Returns true for successful deletion, false otherwise
        """
        return bool()
    def toJson(self) -> str:
        """
        Generate and return JSON string that contains all tools of that list.
        Returns JSON string that contains all tools of that list.
        """
        return str()
    def createQuery(self) -> ToolQuery:
        """
        Creates a new ToolQuery that is used to query the library for tools matching
        the query.
        Returns a new ToolQuery. The query is predefined by given parameter.
        """
        return ToolQuery()
    def updateTool(self, tool: Tool) -> bool:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Update the given tool in the tool library. Will error if the tool does not exist in the library or if
        the library URL is not set (library was not loaded from a URL).
        tool : The tool that should be updated and must exist in the library.
        Returns true if the update was successful.
        """
        return bool()
    @property
    def count(self) -> int:
        """
        The number of tools in the ToolLibrary.
        """
        return int()

class ToolPreset(core.Base):
    """
    A Preset defines the material specific properties of a Tool.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ToolPreset:
        return ToolPreset()
    @property
    def name(self) -> str:
        """
        Gets and sets the name of that Preset.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name of that Preset.
        """
        pass
    @property
    def id(self) -> str:
        """
        Gets and sets the identifier of that Preset. The id can be used to select a Preset for a Operation.
        """
        return str()
    @id.setter
    def id(self, value: str):
        """
        Gets and sets the identifier of that Preset. The id can be used to select a Preset for a Operation.
        """
        pass
    @property
    def parameters(self) -> CAMParameters:
        """
        Gets the CAMParameters collection for this Preset.
        """
        return CAMParameters()

class ToolPresets(core.Base):
    """
    ToolPresets represents a collection of ToolPreset.
    It provides access and allows the manipulation like removing and extending the list.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ToolPresets:
        return ToolPresets()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ToolPreset:
        return None
    def __iter__(self) -> Iterator[ToolPreset]:
        return None
    def item(self, index: int) -> ToolPreset:
        """
        Get Preset by index.
        index : Index of the Preset in the owning Tool that should be returned.
        Returns Preset at by given index, null otherwise
        """
        return ToolPreset()
    def itemsByName(self, name: str) -> list[ToolPreset]:
        """
        Search presets by name. Returns all presets for which the name matches the given pattern.
        Compare is case insensitive and characters * and ? are used for wild-card matching.
        name : Name of the Preset to search for. The string can define a pattern with wild-card matching.
        '*' represents an arbitrary sequence including the empty sequence and '?' represents one arbitrary character.
        Returns all presets with matching name.
        """
        return [ToolPreset()]
    def add(self) -> ToolPreset:
        """
        Creates and inserts a new Preset at the end of the Preset collection of the owning Tool.
        The new Preset will have the same values as the owning Tool.
        Returns the newly created Preset
        """
        return ToolPreset()
    def remove(self, index: int) -> bool:
        """
        Remove Preset by index from the owning Tool.
        index : Index of the Preset in the Tool that should be removed.
        Returns true for successful deletion, false otherwise
        """
        return bool()
    @property
    def count(self) -> int:
        """
        The number of Presets of the owning Tool.
        """
        return int()

class ToolQuery(core.Base):
    """
    ToolQuery objects are used to search for a set of Tools or ToolLibrary objects inside of the ToolLibraries collection or for a set of Tools inside of a particular ToolLibrary.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ToolQuery:
        return ToolQuery()
    def execute(self) -> list[ToolQueryResult]:
        """
        Query for specific a Tool or ToolLbrary.
        Returns a list of `ToolQueryResult`. Each result references a Tool that matches this query.
        """
        return [ToolQueryResult()]
    @property
    def vendor(self) -> str:
        """
        The case-insensitive vendor specifies the vendor of the tool. The default empty vendor applies to all tools.
        """
        return str()
    @vendor.setter
    def vendor(self, value: str):
        """
        The case-insensitive vendor specifies the vendor of the tool. The default empty vendor applies to all tools.
        """
        pass
    @property
    def url(self) -> core.URL:
        """
        The URL specifies the location and folder to search for in the Tool library.
        Setting the URL updates the location.
        When searching inside a ToolLibrary the URL will be ignored.
        """
        return core.URL()
    @url.setter
    def url(self, value: core.URL):
        """
        The URL specifies the location and folder to search for in the Tool library.
        Setting the URL updates the location.
        When searching inside a ToolLibrary the URL will be ignored.
        """
        pass
    @property
    def location(self) -> LibraryLocations:
        """
        Specifies the location to search in the Tool library.
        Setting the location clears any previous specified URL.
        When searching inside a ToolLibrary the location will be ignored.
        """
        return LibraryLocations()
    @location.setter
    def location(self, value: LibraryLocations):
        """
        Specifies the location to search in the Tool library.
        Setting the location clears any previous specified URL.
        When searching inside a ToolLibrary the location will be ignored.
        """
        pass
    @property
    def criteria(self) -> core.NamedValues:
        """
        List of all criteria a tool must fulfill. Use the suffix '.min' and '.max', to define a upper and / or lower boundary for a particular value.
        """
        return core.NamedValues()

class ToolQueryResult(core.Base):
    """
    The ToolQueryResult represents one result item of a ToolQuery.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ToolQueryResult:
        return ToolQueryResult()
    @property
    def toolLibraryURL(self) -> core.URL:
        """
        The URL defines the location of the ToolLibrary asset in ToolLibraries.
        """
        return core.URL()
    @property
    def toolLibrary(self) -> ToolLibrary:
        """
        The ToolLibrary contains a Tool that matches the query.
        """
        return ToolLibrary()
    @property
    def tool(self) -> Tool:
        """
        The Tool that matches the query.
        """
        return Tool()
    @property
    def toolItemIndex(self) -> int:
        """
        The index specifies the index of the Tool inside the ToolLibrary.
        """
        return int()

class AdditiveFEAOperation(OperationBase):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The AdditiveFEAOperation represents a finite element analysis for
    metal additive manufacturing processes.  The inherited
    generateToolpath() method can only be called if the Autodesk Fusion
    Manufacturing Extension is active.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AdditiveFEAOperation:
        return AdditiveFEAOperation()
    @property
    def logFileContents(self) -> str:
        """
        Contents of the human-readable log file generated by the solver.
        This property can be fetched during execution to monitor
        progress, or after execution is finished to confirm success or
        troubleshoot errors.
        """
        return str()
    @property
    def signalFileContents(self) -> str:
        """
        Contents of the machine-readable simsignal file generated by
        the solver.  Each line of the file is a JSON object.  These
        signals are meant to be more stable than logFileContents(), but
        less human-readable.
        """
        return str()

class AdditiveFEAOperationInput(OperationInput):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AdditiveFEAOperationInput:
        return AdditiveFEAOperationInput()
    def applyDeck(self, deck: AdditiveFEADeckBuilder) -> None:
        """
        Applies the deck builder cards needed for the result calculation.
        deck : A deck of solver cards.
        """
        pass
    def addSolverFileContent(self, destFileName: str, fileContentsBase64: str) -> None:
        """
        Add a file with contents encoded as base64 to the solver's working directory.  This can be used to create PRM files or other resource files that the solver needs.
        destFileName : The name of the resource file.  This name must match the card that refers to the resource, e.g. in PRMsCard.
        fileContentsBase64 : The contents of the resource file, encoded as a base64 string.  With PRM files for example, you can either get this string from the print settings using base64PRMData(), or generate a new PRM using AdditiveFEAGenerationType::PRM.
        """
        pass
    def linkDependentThermalInput(self, thermalInput: AdditiveFEAOperationInput) -> None:
        """
        Link this mechanical operation input to its weakly-coupled dependent thermal input.
        thermalInput : The AdditiveFEAOperationInput for the thermal analysis.
        """
        pass
    @property
    def text(self) -> str:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Text contents of the input deck file generated by applyDeck().
        """
        return str()
    @property
    def base64PRMData(self) -> str:
        """
        Contents of the PRM file from the print settings, encoded as a base64 string.
        """
        return str()
    @property
    def generationType(self) -> AdditiveFEAGenerationType:
        """
        Additive FEA operations perform simulations by default.  Setting this property to MeshPreCheck instead will only generate a mesh preview, or PRM will generate a process parameter file.
        """
        return AdditiveFEAGenerationType()
    @generationType.setter
    def generationType(self, value: AdditiveFEAGenerationType):
        """
        Additive FEA operations perform simulations by default.  Setting this property to MeshPreCheck instead will only generate a mesh preview, or PRM will generate a process parameter file.
        """
        pass

class AdditiveFFFLimitsMachineElement(MachineElement):
    """
    Machine element representing limits for fused filament fabrication (FFF) machine motion and temperatures.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AdditiveFFFLimitsMachineElement:
        return AdditiveFFFLimitsMachineElement()
    @staticmethod
    def staticTypeId() -> str:
        """
        Identifying name for all elements of this type.
        Pass this to the itemByType or itemById methods of MachineElements to filter to elements of this type.
        Returns identifier of this type.
        """
        return str()
    @property
    def homePosition(self) -> core.Point3D:
        """
        Position of the machine home location.
        """
        return core.Point3D()
    @homePosition.setter
    def homePosition(self, value: core.Point3D):
        """
        Position of the machine home location.
        """
        pass
    @property
    def parkPosition(self) -> core.Point3D:
        """
        Position machine moves to when "parked".
        """
        return core.Point3D()
    @parkPosition.setter
    def parkPosition(self, value: core.Point3D):
        """
        Position machine moves to when "parked".
        """
        pass
    @property
    def maximumBedTemperature(self) -> float:
        """
        Maximum bed temperature in degrees C.
        """
        return float()
    @maximumBedTemperature.setter
    def maximumBedTemperature(self, value: float):
        """
        Maximum bed temperature in degrees C.
        """
        pass
    @property
    def maximumXYSpeed(self) -> float:
        """
        Maximum supported speed for motion in the X or Y axes in cm/s.
        """
        return float()
    @maximumXYSpeed.setter
    def maximumXYSpeed(self, value: float):
        """
        Maximum supported speed for motion in the X or Y axes in cm/s.
        """
        pass
    @property
    def maximumZSpeed(self) -> float:
        """
        Maximum supported speed for motion in the Z axis in cm/s.
        """
        return float()
    @maximumZSpeed.setter
    def maximumZSpeed(self, value: float):
        """
        Maximum supported speed for motion in the Z axis in cm/s.
        """
        pass
    @property
    def maximumXYAcceleration(self) -> float:
        """
        Maximum supported acceleration for motion in the X or Y axes in cm/s^2.
        """
        return float()
    @maximumXYAcceleration.setter
    def maximumXYAcceleration(self, value: float):
        """
        Maximum supported acceleration for motion in the X or Y axes in cm/s^2.
        """
        pass
    @property
    def maximumZAcceleration(self) -> float:
        """
        Maximum supported acceleration for motion in the Z axis in cm/s^2.
        """
        return float()
    @maximumZAcceleration.setter
    def maximumZAcceleration(self, value: float):
        """
        Maximum supported acceleration for motion in the Z axis in cm/s^2.
        """
        pass

class AdditivePlatformMachineElement(MachineElement):
    """
    Machine element representing the additive platform settings.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AdditivePlatformMachineElement:
        return AdditivePlatformMachineElement()
    @staticmethod
    def staticTypeId() -> str:
        """
        Identifying name for all elements of this type.
        Pass this to the itemByType or itemById methods of MachineElements to filter to elements of this type.
        Returns identifier of this type.
        """
        return str()
    @property
    def size(self) -> core.Point3D:
        """
        Usable platform size.
        Units are cm.
        """
        return core.Point3D()
    @size.setter
    def size(self, value: core.Point3D):
        """
        Usable platform size.
        Units are cm.
        """
        pass
    @property
    def origin(self) -> core.Point3D:
        """
        Origin point specifying the platform coordinates that correspond to the origin of the platform mesh.
        Units are cm.
        """
        return core.Point3D()
    @origin.setter
    def origin(self, value: core.Point3D):
        """
        Origin point specifying the platform coordinates that correspond to the origin of the platform mesh.
        Units are cm.
        """
        pass
    @property
    def clearance(self) -> float:
        """
        Clearance height used for automatically arranging parts and suggested height for positioning part on the build platform.
        Units are cm.
        """
        return float()
    @clearance.setter
    def clearance(self, value: float):
        """
        Clearance height used for automatically arranging parts and suggested height for positioning part on the build platform.
        Units are cm.
        """
        pass
    @property
    def frameWidth(self) -> float:
        """
        Clearance width used for automatically arranging parts which is the distance from the edges of the build platform.
        Units are cm.
        """
        return float()
    @frameWidth.setter
    def frameWidth(self, value: float):
        """
        Clearance width used for automatically arranging parts which is the distance from the edges of the build platform.
        Units are cm.
        """
        pass
    @property
    def ceilingClearance(self) -> float:
        """
        Clearance height used for automatically arranging parts which is the distance from the top of the build platform.
        Units are cm.
        """
        return float()
    @ceilingClearance.setter
    def ceilingClearance(self, value: float):
        """
        Clearance height used for automatically arranging parts which is the distance from the top of the build platform.
        Units are cm.
        """
        pass
    @property
    def cornerRadius(self) -> float:
        """
        Radius used to round the corners of the build platform.
        Units are cm.
        """
        return float()
    @cornerRadius.setter
    def cornerRadius(self, value: float):
        """
        Radius used to round the corners of the build platform.
        Units are cm.
        """
        pass

class AdditiveSetupUtility(ModifyUtility):
    """
    AdditiveSetupUtility provides functionality for modifications of additive setups.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AdditiveSetupUtility:
        return AdditiveSetupUtility()
    def splitSupport(self, targets: list[core.Base], splitType: SplitSupportTypes) -> bool:
        """
        Splits support structure of given target bodies into separate mesh body.
        targets : Targets contain any input bodies whose support is to be inserted into a new mesh body.
        Input target must belong to the setup and must be part of the associated manufacturing model.
        Raises an error if any input target is not part of the setup or is not part of the associated manufacturing model.
        splitType : The splitType defines the behavior for support that contains solid and open mesh geometry.
        True on success, false on errors
        """
        return bool()
    def removeExcessParts(self) -> int:
        """
        Remove components from setups, that are outside of the buildroom.
        Returns count of removed parts on success and -1 on failure.
        """
        return int()
    def assignPartsToBodyPreset(self, parts: list[core.Base], presetName: str) -> Operation:
        """
        Assigns an array of parts to the body preset operation corresponding to the chosen PrintSettingItem in the PrintSetting. If a part has been previously assigned to a different preset (i.e. the default preset), it will be removed from its previous owner to ensure a body can only be mapped to one preset. If the previous owner preset ends up being empty, it will be removed from the setup.
        parts : Parts to be assigned to a preset. The array may contain BRepBody, MeshBody or Occurrence objects. If occurrences are passed in, the preset will contain their resolved bodies or meshes. If the array is empty, the preset will be removed from the setup, but the PrintSettingItem will stay in the PrintSetting.
        presetName : The name of the PrintSettingItem defined in the PrintSetting, which serves as the basis for the to be created operation.
        The preset corresponding to the preset name. Returns null if the preset has been removed from the setup due to passing an empty or invalid array.
        """
        return Operation()

class ArrangeSelection(GeometrySelection):
    """
    Class for arrange selections. Provides access to the selected geometry and its properties.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ArrangeSelection:
        return ArrangeSelection()
    @property
    def inputGeometry(self) -> core.Base:
        """
        Gets and sets the value of the input geometry.
        If the value originates from a component instead of an occurrence, or an occurrence outside of the CAM environment, then the subpath is checked against the CAM model tree.
        For some child classes, this may be the same as the value property, but might also consist of fewer elements.
        Valid elements depend on the capabilities of the derived class. An exception is thrown if the matching fails or the given entity does not match the expected type.
        """
        return core.Base()
    @inputGeometry.setter
    def inputGeometry(self, value: core.Base):
        """
        Gets and sets the value of the input geometry.
        If the value originates from a component instead of an occurrence, or an occurrence outside of the CAM environment, then the subpath is checked against the CAM model tree.
        For some child classes, this may be the same as the value property, but might also consist of fewer elements.
        Valid elements depend on the capabilities of the derived class. An exception is thrown if the matching fails or the given entity does not match the expected type.
        """
        pass
    @property
    def priorityType(self) -> ArrangePriorityTypes:
        """
        Gets and sets the priority value for each element in the selection list.
        This function is not available in Fusion for Personal Use.
        Throws an exception when calling this function in Fusion for Personal Use.
        The default value for this property is MediumArrangePriorityType.
        """
        return ArrangePriorityTypes()
    @priorityType.setter
    def priorityType(self, value: ArrangePriorityTypes):
        """
        Gets and sets the priority value for each element in the selection list.
        This function is not available in Fusion for Personal Use.
        Throws an exception when calling this function in Fusion for Personal Use.
        The default value for this property is MediumArrangePriorityType.
        """
        pass
    @property
    def customRotationX(self) -> float:
        """
        Gets and sets the rotation increments (in degrees) for the x-axis.
        This function is not available in Fusion for Personal Use.
        Throws an exception when calling this function in Fusion for Personal Use.
        To enable any rotation the parameter "arrange_rotation_group" of the operation must be set to true.
        To disable x-axis rotation for this selection, customRotationX must be set to 0.
        The default value for this property is 45 degrees.
        Note: If customRotationX is called, isUsingCustomRotationX will be set to true automatically.
        """
        return float()
    @customRotationX.setter
    def customRotationX(self, value: float):
        """
        Gets and sets the rotation increments (in degrees) for the x-axis.
        This function is not available in Fusion for Personal Use.
        Throws an exception when calling this function in Fusion for Personal Use.
        To enable any rotation the parameter "arrange_rotation_group" of the operation must be set to true.
        To disable x-axis rotation for this selection, customRotationX must be set to 0.
        The default value for this property is 45 degrees.
        Note: If customRotationX is called, isUsingCustomRotationX will be set to true automatically.
        """
        pass
    @property
    def isUsingCustomRotationX(self) -> bool:
        """
        Gets and sets if custom rotation is used for the x-axis.
        This function is not available in Fusion for Personal Use.
        Throws an exception when calling this function in Fusion for Personal Use.
        To enable any rotation the parameter "arrange_rotation_group" of the operation must be set to true.
        If isUsingCustomRotationX is false, the rotation of the operation's parameter "arrange_rotation_x" is used.
        The default value for this property false.
        """
        return bool()
    @isUsingCustomRotationX.setter
    def isUsingCustomRotationX(self, value: bool):
        """
        Gets and sets if custom rotation is used for the x-axis.
        This function is not available in Fusion for Personal Use.
        Throws an exception when calling this function in Fusion for Personal Use.
        To enable any rotation the parameter "arrange_rotation_group" of the operation must be set to true.
        If isUsingCustomRotationX is false, the rotation of the operation's parameter "arrange_rotation_x" is used.
        The default value for this property false.
        """
        pass
    @property
    def customRotationY(self) -> float:
        """
        Gets and sets the rotation increments (in degrees) for the y-axis.
        This function is not available in Fusion for Personal Use.
        Throws an exception when calling this function in Fusion for Personal Use.
        To enable any rotation the parameter "arrange_rotation_group" of the operation must be set to true.
        To disable y-axis rotation for this selection, customRotationY must be set to 0.
        The default value for this property is 45 degrees.
        Note: If customRotationY is called, isUsingCustomRotationY will be set to true automatically.
        """
        return float()
    @customRotationY.setter
    def customRotationY(self, value: float):
        """
        Gets and sets the rotation increments (in degrees) for the y-axis.
        This function is not available in Fusion for Personal Use.
        Throws an exception when calling this function in Fusion for Personal Use.
        To enable any rotation the parameter "arrange_rotation_group" of the operation must be set to true.
        To disable y-axis rotation for this selection, customRotationY must be set to 0.
        The default value for this property is 45 degrees.
        Note: If customRotationY is called, isUsingCustomRotationY will be set to true automatically.
        """
        pass
    @property
    def isUsingCustomRotationY(self) -> bool:
        """
        Gets and sets if custom rotation is used for the y-axis.
        This function is not available in Fusion for Personal Use.
        Throws an exception when calling this function in Fusion for Personal Use.
        To enable any rotation the parameter "arrange_rotation_group" of the operation must be set to true.
        If isUsingCustomRotationY is false, the rotation of the operation's parameter "arrange_rotation_y" is used.
        The default value for this property false.
        """
        return bool()
    @isUsingCustomRotationY.setter
    def isUsingCustomRotationY(self, value: bool):
        """
        Gets and sets if custom rotation is used for the y-axis.
        This function is not available in Fusion for Personal Use.
        Throws an exception when calling this function in Fusion for Personal Use.
        To enable any rotation the parameter "arrange_rotation_group" of the operation must be set to true.
        If isUsingCustomRotationY is false, the rotation of the operation's parameter "arrange_rotation_y" is used.
        The default value for this property false.
        """
        pass
    @property
    def customRotationZ(self) -> float:
        """
        Gets and sets the rotation increments (in degrees) for the z-axis.
        This function is not available in Fusion for Personal Use.
        Throws an exception when calling this function in Fusion for Personal Use.
        To enable any rotation the parameter "arrange_rotation_group" of the operation must be set to true.
        To disable z-axis rotation for this selection, customRotationZ must be set to 0.
        The default value for this property is 45 degrees.
        Note: If customRotationZ is called, isUsingCustomRotationZ will be set to true automatically.
        """
        return float()
    @customRotationZ.setter
    def customRotationZ(self, value: float):
        """
        Gets and sets the rotation increments (in degrees) for the z-axis.
        This function is not available in Fusion for Personal Use.
        Throws an exception when calling this function in Fusion for Personal Use.
        To enable any rotation the parameter "arrange_rotation_group" of the operation must be set to true.
        To disable z-axis rotation for this selection, customRotationZ must be set to 0.
        The default value for this property is 45 degrees.
        Note: If customRotationZ is called, isUsingCustomRotationZ will be set to true automatically.
        """
        pass
    @property
    def isUsingCustomRotationZ(self) -> bool:
        """
        Gets and sets if custom rotation is used for the z-axis.
        This function is not available in Fusion for Personal Use.
        Throws an exception when calling this function in Fusion for Personal Use.
        To enable any rotation the parameter "arrange_rotation_group" of the operation must be set to true.
        If isUsingCustomRotationZ is false, the rotation of the operation's parameter "arrange_rotation_z" is used.
        The default value for this property true.
        """
        return bool()
    @isUsingCustomRotationZ.setter
    def isUsingCustomRotationZ(self, value: bool):
        """
        Gets and sets if custom rotation is used for the z-axis.
        This function is not available in Fusion for Personal Use.
        Throws an exception when calling this function in Fusion for Personal Use.
        To enable any rotation the parameter "arrange_rotation_group" of the operation must be set to true.
        If isUsingCustomRotationZ is false, the rotation of the operation's parameter "arrange_rotation_z" is used.
        The default value for this property true.
        """
        pass
    @property
    def customQuantity(self) -> int:
        """
        Gets and sets the custom quantity.
        This function is not available in Fusion for Personal Use.
        Throws an exception when calling this function in Fusion for Personal Use.
        The default value for this property is 1.
        Note: If customQuantity is called, isUsingCustomQuantity will be set to true automatically.
        """
        return int()
    @customQuantity.setter
    def customQuantity(self, value: int):
        """
        Gets and sets the custom quantity.
        This function is not available in Fusion for Personal Use.
        Throws an exception when calling this function in Fusion for Personal Use.
        The default value for this property is 1.
        Note: If customQuantity is called, isUsingCustomQuantity will be set to true automatically.
        """
        pass
    @property
    def isUsingCustomQuantity(self) -> bool:
        """
        Gets and sets if custom quantity is used for this element.
        This function is not available in Fusion for Personal Use.
        Throws an exception when calling this function in Fusion for Personal Use.
        If isUsingCustomQuantity is false, the global quantity of the operation's parameter "arrange_global_quantity" is used.
        The default value for this property false.
        """
        return bool()
    @isUsingCustomQuantity.setter
    def isUsingCustomQuantity(self, value: bool):
        """
        Gets and sets if custom quantity is used for this element.
        This function is not available in Fusion for Personal Use.
        Throws an exception when calling this function in Fusion for Personal Use.
        If isUsingCustomQuantity is false, the global quantity of the operation's parameter "arrange_global_quantity" is used.
        The default value for this property false.
        """
        pass
    @property
    def customMultiAxisRotationType(self) -> MultiAxisRotationTypes:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Gets and sets the custom multi-axis rotation type.
        This function is not available in Fusion for Personal Use.
        To enable any rotation the parameter "arrange_rotation_group" of the operation must be set to true.
        Note: If customMultiAxisRotationType is called, isUsingCustomMultiAxisRotationType will be set to true automatically.
        The default value for this property is MultiAxisRotationType_SingleAxis.
        """
        return MultiAxisRotationTypes()
    @customMultiAxisRotationType.setter
    def customMultiAxisRotationType(self, value: MultiAxisRotationTypes):
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Gets and sets the custom multi-axis rotation type.
        This function is not available in Fusion for Personal Use.
        To enable any rotation the parameter "arrange_rotation_group" of the operation must be set to true.
        Note: If customMultiAxisRotationType is called, isUsingCustomMultiAxisRotationType will be set to true automatically.
        The default value for this property is MultiAxisRotationType_SingleAxis.
        """
        pass
    @property
    def isUsingCustomMultiAxisRotationType(self) -> bool:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Gets and sets if custom multi-axis rotation type is used for this element.
        This function is not available in Fusion for Personal Use.
        Throws an exception when calling this function in Fusion for Personal Use.
        If isUsingCustomMultiAxisRotationType is false, the global property of the operation's parameter "arrange_multiaxis_rotation" is used.
        The default value for this property false.
        """
        return bool()
    @isUsingCustomMultiAxisRotationType.setter
    def isUsingCustomMultiAxisRotationType(self, value: bool):
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Gets and sets if custom multi-axis rotation type is used for this element.
        This function is not available in Fusion for Personal Use.
        Throws an exception when calling this function in Fusion for Personal Use.
        If isUsingCustomMultiAxisRotationType is false, the global property of the operation's parameter "arrange_multiaxis_rotation" is used.
        The default value for this property false.
        """
        pass

class BooleanParameterValue(ParameterValue):
    """
    A parameter value that is a boolean.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BooleanParameterValue:
        return BooleanParameterValue()
    @property
    def value(self) -> bool:
        """
        Get or set the value of the parameter.
        """
        return bool()
    @value.setter
    def value(self, value: bool):
        """
        Get or set the value of the parameter.
        """
        pass

class CadContours2dParameterValue(ParameterValue):
    """
    A parameter value that is a CadContours2dParameterValue.
    The user needs to set the parameter anew via the API after a model update or after the CurveSelections returned by getCurveSelections() has been edited.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CadContours2dParameterValue:
        return CadContours2dParameterValue()
    def getCurveSelections(self) -> CurveSelections:
        """
        Get the values of the parameter as a collection of CadCurves, which might consist of chains, pockets, silhouettes and face countours.
        Returns current CurveSelections of the value.
        """
        return CurveSelections()
    def applyCurveSelections(self, curveSelections: CurveSelections) -> None:
        """
        Set the values of the parameter as a collection of CadCurves.
        If the input does not define continuous contours, the contour is amended and calculated, but only if used on Operations, not OperationInputs
        When used with OperationInputs, the contours are calculated when creating an operation out of the input.
        """
        pass

class CadMachineAvoidGroupsParameterValue(ParameterValue):
    """
    A parameter value that is a CadMachineAvoidGroupsParameterValue.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CadMachineAvoidGroupsParameterValue:
        return CadMachineAvoidGroupsParameterValue()
    def getMachineAvoidGroups(self) -> MachineAvoidGroups:
        """
        Get the values of the parameter as a collection of objects of type MachineAvoidSelectionGroup
        """
        return MachineAvoidGroups()
    def applyMachineAvoidGroups(self, machineAvoidSelectionGroups: MachineAvoidGroups) -> None:
        """
        Set the values of the parameter as a collection of MachineAvoidSelectionGroup.
        This can throw an exception when the combination of group type and machining mode is not allowed
        by the current toolpath strategy.
        """
        pass

class CadObjectParameterValue(ParameterValue):
    """
    A parameter value that is a collection of cad objects.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CadObjectParameterValue:
        return CadObjectParameterValue()
    @property
    def value(self) -> list[core.Base]:
        """
        Get or set the value of the parameter.
        If the value originates from a component instead of an occurrence, or an occurrence outside of the CAM environment, then the subpath is checked against the CAM model tree.
        An exception is thrown if the matching fails or the given entity does not match the expected type.
        """
        return [core.Base()]
    @value.setter
    def value(self, value: list[core.Base]):
        """
        Get or set the value of the parameter.
        If the value originates from a component instead of an occurrence, or an occurrence outside of the CAM environment, then the subpath is checked against the CAM model tree.
        An exception is thrown if the matching fails or the given entity does not match the expected type.
        """
        pass

class CAM(core.Product):
    """
    Object that represents the CAM environment of a Fusion document.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CAM:
        return CAM()
    def generateToolpath(self, operations: core.Base) -> GenerateToolpathFuture:
        """
        Generates or regenerates all the specified objects, including those nested in sub-folders or patterns.
        operations : An Operation, Setup, Folder, or Pattern object. You can also use an ObjectCollection
        to specify multiple objects of any of the supported types.
        Return GenerateToolpathFuture that includes the status of the operation generation.
        """
        return GenerateToolpathFuture()
    def generateAllToolpaths(self, skipValid: bool) -> GenerateToolpathFuture:
        """
        Generates or regenerates all the operations in the document, including those nested in sub-folders or patterns.
        skipValid : Option to skip valid operations and only regenerate invalid operations.
        Return GenerateToolpathFuture that includes the status of operation generation.
        """
        return GenerateToolpathFuture()
    def clearToolpath(self, operations: core.Base) -> bool:
        """
        Clears all the toolpaths for the specified objects, including those nested in sub-folders or patterns.
        operations : An Operation, Setup, Folder, or Pattern object. You can also use and ObjectCollection
        to specify multiple objects of any combination of types.
        Return true if successful.
        """
        return bool()
    def clearAllToolpaths(self) -> bool:
        """
        Clears all the toolpaths in the document, including those nested in sub-folders or patterns.
        Return true if successful.
        """
        return bool()
    def checkToolpath(self, operations: core.Base) -> bool:
        """
        Checks if the operations (including those nested in sub-folders or patterns) are valid and up to date.
        operations : An Operation, Setup, Folder, or Pattern object. You can also use an ObjectCollection
        to specify multiple objects of any of the supported types.
        Returns true if the operations are valid
        """
        return bool()
    def checkAllToolpaths(self) -> bool:
        """
        Checks if all the operations (includes those nested in sub-folders or patterns) in the document are valid and up to date.
        Returns true if the all operations are valid
        """
        return bool()
    def generateSetupSheet(self, operations: core.Base, format: SetupSheetFormats, folder: str, openDocument: bool = True) -> bool:
        """
        Generate the setup sheets for the specified objects
        operations : An Operation, Setup, Folder, or Pattern object. You can also use an ObjectCollection
        to specify multiple objects of any of the supported types.
        format : The document format for the setup sheet.  Valid options are HTMLFormat and ExcelFormat.
        Limitation: "ExcelFormat" can be used in windows OS only.
        folder : The destination folder to locate the setup sheet documents in.
        openDocument : An option to allow to open the document instantly after the generation. By default, the document is opened.
        Returns true if successful
        """
        return bool()
    def generateAllSetupSheets(self, format: SetupSheetFormats, folder: str, openDocument: bool = True) -> bool:
        """
        Generates all of the setup sheets for all of the operations in the document
        format : The document format for the setup sheet.  Valid options are HTMLFormat and ExcelFormat.
        Limitation: "ExcelFormat" can be used in windows OS only.
        folder : The destination folder to locate the setup sheet documents in.
        openDocument : An option to allow to open the document instantly after the generation. By default, the document is opened.
        Returns true if successful
        """
        return bool()
    def getMachiningTime(self, operations: core.Base, feedScale: float, rapidFeed: float, toolChangeTime: float) -> MachiningTime:
        """
        Get the machining time for the specified objects.
        operations : An Operation, Setup, Folder, or Pattern object. You can also use an ObjectCollection
        to specify multiple objects of any of the supported types.
        feedScale : The feed scale value (%) to use.
        rapidFeed : The rapid feed rate in centimeters per second.
        toolChangeTime : The tool change time in seconds.
        Returns a MachiningTime object that has properties holding the calculation results.
        """
        return MachiningTime()
    def generateTemplateXML(self, operations: core.Base) -> str:
        """
        Generates a template for the specified Operations, Setups, or Folders and returns
        the template as an XML string.
        operations : An Operation, Setup or Folder object from which to generate the template. You can also
        specify a collection of any combination of these object types.
        Returns the template XML as a string.
        """
        return str()
    def checkValidity(self) -> None:
        """
        Checks whether the models used by the operations have changed in the mean time
        and invalidates the affected operations if needed.
        Should be used for cases where the automatic detection does not work yet,
        for instance when design changes are expected before a Manufacture API call.
        Also recommended at the beginning of a script or the beginning of an event handler.
        """
        pass
    @property
    def setups(self) -> Setups:
        """
        Returns the Setups collection that provides access to existing setups.
        """
        return Setups()
    @property
    def allOperations(self) -> core.ObjectCollection:
        """
        Gets a collection containing all of the operations in the document.
        This includes all operations nested in folders and patterns.
        """
        return core.ObjectCollection()
    @property
    def genericPostFolder(self) -> str:
        """
        Gets the installed post folder.
        """
        return str()
    @property
    def personalPostFolder(self) -> str:
        """
        Gets the personal post folder.
        """
        return str()
    @property
    def temporaryFolder(self) -> str:
        """
        Gets the folder for temporary files.
        """
        return str()
    @property
    def customGraphicsGroups(self) -> fusion.CustomGraphicsGroups:
        """
        Returns the customGraphicsGroups object associated with the CAM product.
        """
        return fusion.CustomGraphicsGroups()
    @property
    def designRootOccurrence(self) -> fusion.Occurrence:
        """
        The CAM product has its own root component which has a single occurrence that
        references the Design root occurrence. This property returns this occurrence.
        """
        return fusion.Occurrence()
    @property
    def allMachines(self) -> list[Machine]:
        """
        Gets an array containing all the machines in the document.
        """
        return [Machine()]
    @property
    def setupCreated(self) -> SetupEvent:
        """
        The SetupCreated event fires when a new setup is created.
        """
        return SetupEvent()
    @property
    def setupDestroying(self) -> SetupEvent:
        """
        The setupDestroying event fires before a setup is destroyed.
        """
        return SetupEvent()
    @property
    def setupChanged(self) -> SetupChangeEvent:
        """
        The SetupChanged event fires when a setup is modified.
        """
        return SetupChangeEvent()
    @property
    def setupActivating(self) -> SetupEvent:
        """
        The SetupActivating event fires before a setup is activated.
        """
        return SetupEvent()
    @property
    def setupActivated(self) -> SetupEvent:
        """
        The SetupActivated event fires when a setup is activated.
        """
        return SetupEvent()
    @property
    def setupDeactivating(self) -> SetupEvent:
        """
        The SetupDeactivating event fires before a setup is deactivated.
        """
        return SetupEvent()
    @property
    def setupDeactivated(self) -> SetupEvent:
        """
        The SetupDeactivated event fires when a setup is deactivated.
        """
        return SetupEvent()
    @property
    def exportManager(self) -> CAMExportManager:
        """
        Returns the Export Manager which provides access to the functionality
        to export in various formats.
        """
        return CAMExportManager()
    @property
    def manufacturingModels(self) -> ManufacturingModels:
        """
        Returns the collection of manufacturing models in the document.
        """
        return ManufacturingModels()
    @property
    def documentToolLibrary(self) -> DocumentToolLibrary:
        """
        Gets the document ToolLibrary. The ToolLibrary contains all tools used by any operation inside the document.
        Changes to the original ToolLibrary will not affect any operation because the document ToolLibrary is an
        independent copy.
        """
        return DocumentToolLibrary()
    @property
    def ncPrograms(self) -> NCPrograms:
        """
        Returns the collection of NC programs in the document.
        """
        return NCPrograms()
    @property
    def documentStockMaterialLibrary(self) -> DocumentStockMaterialLibrary:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Gets the document StockMaterialLibrary. The StockMaterialLibrary contains all stock materials used by any setup inside the document.
        Changes to the original StockMaterialLibrary will not affect any setup because the document StockMaterialLibrary is an
        independent copy.
        You can only get a valid DocumentStockMaterialLibrary when you have access to Stock Materials private preview feature and enable the feature flag.
        """
        return DocumentStockMaterialLibrary()

class CAM3MFExportOptions(CAMExportOptions):
    """
    3MF export option. Available with all additive machines except Formlabs. Expects a setup as its export object.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CAM3MFExportOptions:
        return CAM3MFExportOptions()
    @property
    def isMachineInformationIncluded(self) -> bool:
        """
        Flag toggling if machine information should be included in the exported file.
        The machine information is only compatible with Netfabb.
        This option might not be available for all machine types.
        The default value is false.
        """
        return bool()
    @isMachineInformationIncluded.setter
    def isMachineInformationIncluded(self, value: bool):
        """
        Flag toggling if machine information should be included in the exported file.
        The machine information is only compatible with Netfabb.
        This option might not be available for all machine types.
        The default value is false.
        """
        pass
    @property
    def isProcessSimulationDataIncluded(self) -> bool:
        """
        Flag toggling if simulation information should be included in the exported file.
        This option might not be available for all machine types.
        The default value is false.
        """
        return bool()
    @isProcessSimulationDataIncluded.setter
    def isProcessSimulationDataIncluded(self, value: bool):
        """
        Flag toggling if simulation information should be included in the exported file.
        This option might not be available for all machine types.
        The default value is false.
        """
        pass
    @property
    def isSimulationPostProcessingIncluded(self) -> bool:
        """
        Flag toggling if post processing of the simulation should be included.
        This option might not be available for all machine types.
        The default value is false.
        """
        return bool()
    @isSimulationPostProcessingIncluded.setter
    def isSimulationPostProcessingIncluded(self, value: bool):
        """
        Flag toggling if post processing of the simulation should be included.
        This option might not be available for all machine types.
        The default value is false.
        """
        pass
    @property
    def areSimulationSurrogatesSplit(self) -> bool:
        """
        Flag toggling if surrogate supports used in the simulation should be split.
        This option might not be available for all machine types.
        The default value is false.
        """
        return bool()
    @areSimulationSurrogatesSplit.setter
    def areSimulationSurrogatesSplit(self, value: bool):
        """
        Flag toggling if surrogate supports used in the simulation should be split.
        This option might not be available for all machine types.
        The default value is false.
        """
        pass
    @property
    def areSimulationThickeningStructuresKept(self) -> bool:
        """
        Flag toggling if thickening structures used for simulation should be kept.
        This option might not be available for all machine types.
        The default value is false.
        """
        return bool()
    @areSimulationThickeningStructuresKept.setter
    def areSimulationThickeningStructuresKept(self, value: bool):
        """
        Flag toggling if thickening structures used for simulation should be kept.
        This option might not be available for all machine types.
        The default value is false.
        """
        pass
    @property
    def metadata(self) -> CAM3MFExportMetadataOptions:
        """
        Class for setting the meta data options with in the 3mf export
        """
        return CAM3MFExportMetadataOptions()
    @property
    def supportInclusion(self) -> CAM3MFSupportInclusionType:
        """
        Flag setting if support information should be included in the exported file.
        Includes both support structures marked as open or closed support as well as meta data used in Netfabb.
        This option might not be available for all machine types.
        The default value is NotIncluded.
        """
        return CAM3MFSupportInclusionType()
    @supportInclusion.setter
    def supportInclusion(self, value: CAM3MFSupportInclusionType):
        """
        Flag setting if support information should be included in the exported file.
        Includes both support structures marked as open or closed support as well as meta data used in Netfabb.
        This option might not be available for all machine types.
        The default value is NotIncluded.
        """
        pass
    @property
    def isVolumetricDataIncluded(self) -> bool:
        """
        Flag toggling if volumetric data should be included in the exported file. The flag is only evaluated if the user has bought the product design extension.
        The default value is false.
        """
        return bool()
    @isVolumetricDataIncluded.setter
    def isVolumetricDataIncluded(self, value: bool):
        """
        Flag toggling if volumetric data should be included in the exported file. The flag is only evaluated if the user has bought the product design extension.
        The default value is false.
        """
        pass
    @property
    def volumetricDataResolution(self) -> int:
        """
        Integer value representing the resolution of the volumetric data. The value is only evaluated if the user has bought the product design extension.
        The default value is 128.
        """
        return int()
    @volumetricDataResolution.setter
    def volumetricDataResolution(self, value: int):
        """
        Integer value representing the resolution of the volumetric data. The value is only evaluated if the user has bought the product design extension.
        The default value is 128.
        """
        pass
    @property
    def isSliceDataIncluded(self) -> bool:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Flag toggling if slice data which has been generated beforehand by generating the entire setup or the additive toolpath object should be included in the exported file.
        The default value is false.
        """
        return bool()
    @isSliceDataIncluded.setter
    def isSliceDataIncluded(self, value: bool):
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Flag toggling if slice data which has been generated beforehand by generating the entire setup or the additive toolpath object should be included in the exported file.
        The default value is false.
        """
        pass
    @property
    def structure(self) -> CAM3MFExportStructure:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Sets the structure type and naming convention used for the exported 3MF file.
        """
        return CAM3MFExportStructure()

class CAMAdditiveBuildExportOptions(CAMExportOptions):
    """
    Additive buildfile export option. Available with all additive machines except for FFF and DED based machines.
    Currently picks the first export filter from the print setting's export filter list.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CAMAdditiveBuildExportOptions:
        return CAMAdditiveBuildExportOptions()
    @property
    def exportFilters(self) -> list[CAMAdditiveBuildExportFilter]:
        """
        Gets a list of available export filters from the setup's print setting.
        The export object must be set before using this function.
        """
        return [CAMAdditiveBuildExportFilter()]
    @property
    def selectedExportFilterId(self) -> str:
        """
        Gets and sets the export filter to be used for the export.
        By default, this is the first entry in the print setting's filter list.
        """
        return str()
    @selectedExportFilterId.setter
    def selectedExportFilterId(self, value: str):
        """
        Gets and sets the export filter to be used for the export.
        By default, this is the first entry in the print setting's filter list.
        """
        pass

class CAMAdditiveContainer(OperationBase):
    """
    Object that represents an additive container in an existing Setup.
    Note: All additive containers cannot be duplicated and depending on the type, some cannot be deleted.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CAMAdditiveContainer:
        return CAMAdditiveContainer()
    @property
    def parent(self) -> core.Base:
        """
        Returns the parent Setup.
        """
        return core.Base()
    @property
    def allOperations(self) -> core.ObjectCollection:
        """
        Gets a collection containing all of the operations in this container.
        This includes all operations nested in folders and patterns.
        """
        return core.ObjectCollection()

class CAMArrangeParameterValue(ParameterValue):
    """
    A parameter value that is a CAMArrangeParameterValue.
    The user needs to set the parameter anew via the API after a model update or after the ArrangeSelections returned by getArrangeSelections() have been edited.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CAMArrangeParameterValue:
        return CAMArrangeParameterValue()
    def getArrangeSelections(self) -> ArrangeSelections:
        """
        Get the values of the parameter as a collection of CadObjects, which currently consist of occurrences.
        Returns current ArrangeSelections of the value.
        """
        return ArrangeSelections()
    def applyArrangeSelections(self, arrangeSelections: ArrangeSelections) -> None:
        """
        Set the values of the parameter as a collection of CadObjects.
        """
        pass

class CAMFolder(OperationBase):
    """
    Object that represents a folder in an existing Setup, Folder or Pattern.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CAMFolder:
        return CAMFolder()
    def activate(self) -> bool:
        """
        Sets this object as the default container.
        Returns true if the activation was successful.
        """
        return bool()
    def createFromCAMTemplate2(self, input: CreateFromCAMTemplateInput) -> list[OperationBase]:
        """
        Create new operations, folders, or patterns from the specified CAMTemplate. They
        are added to the end of the parent setup.
        input : Input object that contains the template to create from and the generation mode.
        Returns an array containing all of the operations, folders and patterns created from the template.
        """
        return [OperationBase()]
    @property
    def isActive(self) -> bool:
        """
        Gets if this folder is active.
        """
        return bool()
    @property
    def operations(self) -> Operations:
        """
        Returns the Operations collection that provides access to existing individual operations
        in this folder.
        """
        return Operations()
    @property
    def folders(self) -> CAMFolders:
        """
        Returns the Folders collection that provides access to existing folders
        in this folder.
        """
        return CAMFolders()
    @property
    def patterns(self) -> CAMPatterns:
        """
        Returns the Patterns collection that provides access to existing patterns
        in this folder.
        """
        return CAMPatterns()
    @property
    def children(self) -> ChildOperationList:
        """
        Returns a collection containing all of the immediate (top level) child operations, folders and patterns in this folder
        in the order they appear in the browser.
        """
        return ChildOperationList()
    @property
    def parent(self) -> core.Base:
        """
        Returns the parent Setup, Folder or Pattern for this Folder.
        """
        return core.Base()
    @property
    def allOperations(self) -> core.ObjectCollection:
        """
        Gets a collection containing all of the operations in this folder.
        This includes all operations nested in folders and patterns.
        """
        return core.ObjectCollection()

class CAMHoleRecognition(OperationBase):
    """
    Object that represents a hole recognition object in an existing Setup, Folder or Pattern.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CAMHoleRecognition:
        return CAMHoleRecognition()
    def activate(self) -> bool:
        """
        Set this object as the default container.
        Returns true if the activation was successful.
        """
        return bool()
    @property
    def isActive(self) -> bool:
        """
        Gets if this hole recognition is active.
        """
        return bool()
    @property
    def operations(self) -> Operations:
        """
        Returns the Operations collection that provides access to existing individual operations
        in this hole recognition.
        """
        return Operations()
    @property
    def folders(self) -> CAMFolders:
        """
        Returns the Folders collection that provides access to existing folders
        in this hole recognition.
        """
        return CAMFolders()
    @property
    def children(self) -> ChildOperationList:
        """
        Returns a collection containing all of the immediate (top level) child operations, folders and patterns in this folder
        in the order they appear in the browser.
        """
        return ChildOperationList()
    @property
    def parent(self) -> core.Base:
        """
        Returns the parent Setup, Folder or Pattern for this Folder.
        """
        return core.Base()
    @property
    def allOperations(self) -> list[OperationBase]:
        """
        Returns an array containing all of the operations in this hole recognition.
        This includes all operations nested in folders and patterns.
        """
        return [OperationBase()]

class CAMTemplateLibrary(CAMLibrary):
    """
    The CAMTemplateLibrary provides access to templates. Using this object you can import templates
    and get existing templates using a URL.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CAMTemplateLibrary:
        return CAMTemplateLibrary()
    def importTemplate(self, camTemplate: CAMTemplate, destinationUrl: core.URL) -> core.URL:
        """
        Import a given template at a specific location. The template will be stored in the library. Throws an error if the given URL is read-only.
        camTemplate : The template that should be imported.
        destinationUrl : The URL to the folder where to save the template.
        Returns the URL of the newly imported template, or null if the import failed.
        """
        return core.URL()
    def updateTemplate(self, camTemplate: CAMTemplate, url: core.URL) -> core.URL:
        """
        Update a template in the library. The library substitutes the existing template at the URL by given template. Throws an error if the URL does not already point to an existing template.
        If the name member of the CAMTemplate doesn't match the name portion of the URL then this will include a rename operation and the returned URL will reflect the new name.
        camTemplate : The template that should be persisted.
        url : The URL to the existing template in the library that should be updated.
        Returns the URL of the updated template, or null if the update failed.
        """
        return core.URL()
    def templateAtURL(self, url: core.URL) -> CAMTemplate:
        """
        Gets a specific template specified by the given URL. Returns null if the specified template does not exist.
        url : The URL to the template to be fetched.
        Returns the template for a valid URL, returns null otherwise.
        """
        return CAMTemplate()
    def childTemplates(self, url: core.URL) -> list[CAMTemplate]:
        """
        Get all templates by the given parent folder URL. Returns null if there is no folder at the URL.
        url : The URL of the folder to get the templates from.
        Returns an array of templates contained within the specified folder URL. Returns null if the URL is not valid.
        """
        return [CAMTemplate()]

class ChoiceParameterValue(ParameterValue):
    """
    A parameter value that is a list of choices.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ChoiceParameterValue:
        return ChoiceParameterValue()
    def getChoices(self) -> tuple[bool, list[str], list[str]]:
        """
        Method that returns the list of available choices.
        names : An array of the names of the choices. These coincide with the array of possible values returned by the values argument.
        values : An array of the possible values. These coincide with the array of names returned by the names argument.
        Returns true if the call was successful.
        """
        return (bool(), [str()], [str()])
    @property
    def value(self) -> str:
        """
        Get or set the value of the parameter.
        This value will correspond to one of the available values of the parameter.
        """
        return str()
    @value.setter
    def value(self, value: str):
        """
        Get or set the value of the parameter.
        This value will correspond to one of the available values of the parameter.
        """
        pass

class ControllerConfigurationMachineElement(MachineElement):
    """
    Machine element representing controller settings for kinematics.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ControllerConfigurationMachineElement:
        return ControllerConfigurationMachineElement()
    @staticmethod
    def staticTypeId() -> str:
        """
        Identifying name for all elements of this type.
        Pass this to the itemByType or itemById methods of MachineElements to filter to elements of this type.
        Returns identifier of this type.
        """
        return str()
    @property
    def axisConfigurations(self) -> MachineAxisConfigurations:
        """
        Gets the collection of axis configuration objects.
        """
        return MachineAxisConfigurations()
    @property
    def maxNormalSpeed(self) -> float:
        """
        Global maximum non-rapid linear motion speed.
        Units are cm/s.
        """
        return float()
    @maxNormalSpeed.setter
    def maxNormalSpeed(self, value: float):
        """
        Global maximum non-rapid linear motion speed.
        Units are cm/s.
        """
        pass
    @property
    def maxBlockProcessingSpeed(self) -> int:
        """
        Maximum block processing rate for the controller.
        """
        return int()
    @maxBlockProcessingSpeed.setter
    def maxBlockProcessingSpeed(self, value: int):
        """
        Maximum block processing rate for the controller.
        """
        pass
    @property
    def nonTcpRapidInterpolationMode(self) -> MachineNonTCPInterpolationMode:
        """
        Specifies how the CNC machine axes behave during rapid moves when TCP (Tool Center Point) is inactive, as defined in the machine's controller.
        Independent Axes moves the axes independently at maximum speed, potentially resulting in different completion times for each axis.
        Synchronized Axes moves the axes together, completing the motion simultaneously, although the tool's tip may deviate from the direct line between the start and finish points.
        """
        return MachineNonTCPInterpolationMode()
    @nonTcpRapidInterpolationMode.setter
    def nonTcpRapidInterpolationMode(self, value: MachineNonTCPInterpolationMode):
        """
        Specifies how the CNC machine axes behave during rapid moves when TCP (Tool Center Point) is inactive, as defined in the machine's controller.
        Independent Axes moves the axes independently at maximum speed, potentially resulting in different completion times for each axis.
        Synchronized Axes moves the axes together, completing the motion simultaneously, although the tool's tip may deviate from the direct line between the start and finish points.
        """
        pass
    @property
    def tcpRapidInterpolationMode(self) -> MachineTCPInterpolationMode:
        """
        Specifies how the CNC machine axes behave during rapid moves when TCP (Tool Center Point) is active, as defined in the machine's controller.
        Independent Axes moves the axes independently at maximum speed, potentially resulting in different completion times for each axis.
        Synchronized Axes moves the axes together, completing the motion simultaneously, although the tool's tip may deviate from the direct line between the start and finish points.
        Tool Tip adjusts the linear axes to keep the tool's tip positioned along the direct line between the start and finish points.
        """
        return MachineTCPInterpolationMode()
    @tcpRapidInterpolationMode.setter
    def tcpRapidInterpolationMode(self, value: MachineTCPInterpolationMode):
        """
        Specifies how the CNC machine axes behave during rapid moves when TCP (Tool Center Point) is active, as defined in the machine's controller.
        Independent Axes moves the axes independently at maximum speed, potentially resulting in different completion times for each axis.
        Synchronized Axes moves the axes together, completing the motion simultaneously, although the tool's tip may deviate from the direct line between the start and finish points.
        Tool Tip adjusts the linear axes to keep the tool's tip positioned along the direct line between the start and finish points.
        """
        pass

class CurveSelection(GeometrySelection):
    """
    Base class of all curve based geometry selections.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CurveSelection:
        return CurveSelection()
    @property
    def inputGeometry(self) -> list[core.Base]:
        """
        Get or set the value of the input geometry.
        If the value originates from a component instead of an occurrence, or an occurrence outside of the CAM environment, then the subpath is checked against the CAM model tree.
        For some child classes, this may be the same as the value property, but might also consist of fewer elements.
        Valid elements depend on the capabilities of the derived class. An exception is thrown if the matching fails or the given entity does not match the expected type.
        """
        return [core.Base()]
    @inputGeometry.setter
    def inputGeometry(self, value: list[core.Base]):
        """
        Get or set the value of the input geometry.
        If the value originates from a component instead of an occurrence, or an occurrence outside of the CAM environment, then the subpath is checked against the CAM model tree.
        For some child classes, this may be the same as the value property, but might also consist of fewer elements.
        Valid elements depend on the capabilities of the derived class. An exception is thrown if the matching fails or the given entity does not match the expected type.
        """
        pass

class DocumentToolLibrary(ToolLibrary):
    """
    DocumentToolLibrary provides access to tools used by the document. It supports
    adding, updating and deleting tools in the document tool library.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> DocumentToolLibrary:
        return DocumentToolLibrary()
    def operationsByTool(self, tool: Tool) -> list[Operation]:
        """
        Returns all operations that use the given tool. The tool must exist in the document tool library.
        Raises an error if the tool is not in the document.
        tool : The tool to search for in operations. The tool must exist in the document.
        Returns operations using a specific tool.
        """
        return [Operation()]
    def update(self, tool: Tool, updateFeedAndSpeed: bool) -> bool:
        """
        Update the given tool in the document tool library. The update applies all changes to the
        tool in the document tool library and therefore on all operations that use the tool.
        Will error if the tool does not exist in the document tool library.
        tool : The tool that should be updated.
        updateFeedAndSpeed : Setting updateFeedAndSpeed to true will override the feed and speed parameters of operations within the document which use the given tool.
        Returns true if the update was successful.
        """
        return bool()
    def toolsBySetupOrFolder(self, setupOrFolder: OperationBase) -> list[Tool]:
        """
        Returns all tools used in a given setup or folder. Given setup or folder must belong to the document of the DocumentToolLibrary.
        Raises an error if given operation is not in the document.
        setupOrFolder : The setup or folder to get tools from. Must belong to the document.
        Returns tools used by a specific setup or folder.
        """
        return [Tool()]

class ExtruderMachineElement(MachineElement):
    """
    Machine element representing an extruder on a fused filament fabrication (FFF) machine.
    A machine can have multiple extruders and thus multiple ExtruderMachineElement elements.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ExtruderMachineElement:
        return ExtruderMachineElement()
    @staticmethod
    def staticTypeId() -> str:
        """
        Identifying name for all elements of this type.
        Pass this to the itemByType or itemById methods of MachineElements to filter to elements of this type.
        Returns identifier of this type.
        """
        return str()
    def deleteMe(self) -> None:
        """
        Delete this extruder element from the machine. Throws an exception when trying to delete the last remaining element.
        """
        pass
    @property
    def name(self) -> str:
        """
        Name of this extruder. Depending on the post, this may be output in the resulting gcode as a comment.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Name of this extruder. Depending on the post, this may be output in the resulting gcode as a comment.
        """
        pass
    @property
    def offset(self) -> core.Vector3D:
        """
        Offset relative to the main extruder. The first extruder has an index of 0 and usually an offset of (0,0,0).
        """
        return core.Vector3D()
    @offset.setter
    def offset(self, value: core.Vector3D):
        """
        Offset relative to the main extruder. The first extruder has an index of 0 and usually an offset of (0,0,0).
        """
        pass
    @property
    def nozzleDiameter(self) -> float:
        """
        Nozzle diameter of this extruder in cm.
        """
        return float()
    @nozzleDiameter.setter
    def nozzleDiameter(self, value: float):
        """
        Nozzle diameter of this extruder in cm.
        """
        pass
    @property
    def filamentDiameter(self) -> float:
        """
        Filament diameter of this extruder in cm.
        """
        return float()
    @filamentDiameter.setter
    def filamentDiameter(self, value: float):
        """
        Filament diameter of this extruder in cm.
        """
        pass
    @property
    def temperature(self) -> float:
        """
        The maximum temperature this extruder can reach in degrees C.
        """
        return float()
    @temperature.setter
    def temperature(self, value: float):
        """
        The maximum temperature this extruder can reach in degrees C.
        """
        pass
    @property
    def volumePerSecond(self) -> float:
        """
        The maximum volume output measured in cm^3/s.
        """
        return float()
    @volumePerSecond.setter
    def volumePerSecond(self, value: float):
        """
        The maximum volume output measured in cm^3/s.
        """
        pass
    @property
    def isFanAvailable(self) -> bool:
        """
        Flag indicating if a fan, whose speed is settable in the post, is available.
        """
        return bool()
    @isFanAvailable.setter
    def isFanAvailable(self, value: bool):
        """
        Flag indicating if a fan, whose speed is settable in the post, is available.
        """
        pass

class ExtruderMachineElementInput(MachineElementInput):
    """
    Specialization of MachineElementInput for creating an additive FFF extruder element.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ExtruderMachineElementInput:
        return ExtruderMachineElementInput()

class FloatParameterValue(ParameterValue):
    """
    A parameter value that is a floating point value.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FloatParameterValue:
        return FloatParameterValue()
    @property
    def value(self) -> float:
        """
        Get or set the value of the parameter.
        """
        return float()
    @value.setter
    def value(self, value: float):
        """
        Get or set the value of the parameter.
        """
        pass
    @property
    def type(self) -> FloatParameterValueTypes:
        """
        Get the type of the float parameter.
        """
        return FloatParameterValueTypes()

class IntegerParameterValue(ParameterValue):
    """
    A parameter value that is an integer.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> IntegerParameterValue:
        return IntegerParameterValue()
    @property
    def value(self) -> int:
        """
        Get or set the value of the parameter.
        """
        return int()
    @value.setter
    def value(self, value: int):
        """
        Get or set the value of the parameter.
        """
        pass

class InteractionsMachineElement(MachineElement):
    """
    Machine element representing the machine's interactions.
    This controls how MachineItems interact with each other.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> InteractionsMachineElement:
        return InteractionsMachineElement()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> MachineInteractionPair:
        return None
    def __iter__(self) -> Iterator[MachineInteractionPair]:
        return None
    @staticmethod
    def staticTypeId() -> str:
        """
        Identifying name for all elements of this type.
        Pass this to the itemByType or itemById methods of MachineElements to filter to elements of this type.
        Returns identifier of this type.
        """
        return str()
    def item(self, index: int) -> MachineInteractionPair:
        """
        Get the MachineInteractionPair at index in this collection.
        index : The index of the MachineInteractionPair.
        The MachineInteractionPair at index.
        """
        return MachineInteractionPair()
    def apply(self, setting: MachineInteractionPair) -> bool:
        """
        Add an MachineInteractionPair.
        This will overwrite any existing MachineInteractionPair with the same item1 and item2.
        """
        return bool()
    def createMachineInteractionPair(self, item1: MachineItem, item2: MachineItem) -> MachineInteractionPair:
        """
        Create a MachineInteractionPair that will control how the two items interact.
        """
        return MachineInteractionPair()
    def createMachineItem(self, type: MachineItemType, part: MachinePart) -> MachineItem:
        """
        Create a MachineItem.
        """
        return MachineItem()
    def resetMachineInteractionPairs(self) -> bool:
        """
        Restore all MachineInteractionPairs to their defaults.
        """
        return bool()
    @property
    def count(self) -> int:
        """
        Get the number of pairs in this collection.
        """
        return int()

class KinematicsMachineElement(MachineElement):
    """
    Machine element representing the machine's kinematics tree.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> KinematicsMachineElement:
        return KinematicsMachineElement()
    @staticmethod
    def staticTypeId() -> str:
        """
        Identifying name for all elements of this type.
        Pass this to the itemByType or itemById methods of MachineElements to filter to elements of this type.
        Returns identifier of this type.
        """
        return str()
    @property
    def parts(self) -> MachineParts:
        """
        Get the root parts collection.
        """
        return MachineParts()

class LinearMachineAxis(MachineAxis):
    """
    Object that represents an axis with linear motion (e.g. X, Y, and Z).
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> LinearMachineAxis:
        return LinearMachineAxis()
    @property
    def direction(self) -> core.Vector3D:
        """
        The unit vector that represents the direction along which the axis will move.
        """
        return core.Vector3D()
    @direction.setter
    def direction(self, value: core.Vector3D):
        """
        The unit vector that represents the direction along which the axis will move.
        """
        pass

class LinearMachineAxisConfiguration(MachineAxisConfiguration):
    """
    A MachineAxisConfiguration holding settings specific to linear axes.
    This class currently has no members.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> LinearMachineAxisConfiguration:
        return LinearMachineAxisConfiguration()

class LinearMachineAxisInput(MachineAxisInput):
    """
    Object that defines the properties required to create a new linear machine axis object.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> LinearMachineAxisInput:
        return LinearMachineAxisInput()
    @property
    def direction(self) -> core.Vector3D:
        """
        The unit vector that represents the direction along which the linear axis will move.
        This vector is in the machine's coordinate system (e.g. the X axis is always (1,0,0)).
        """
        return core.Vector3D()
    @direction.setter
    def direction(self, value: core.Vector3D):
        """
        The unit vector that represents the direction along which the linear axis will move.
        This vector is in the machine's coordinate system (e.g. the X axis is always (1,0,0)).
        """
        pass

class MachineAvoidSelectionBase(GeometrySelection):
    """
    Base parent class for all machine/avoid selection classes.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineAvoidSelectionBase:
        return MachineAvoidSelectionBase()
    @property
    def machineMode(self) -> MachiningMode:
        """
        Desired machining mode. The default is Avoid.
        The current machining mode will determine which value the radial and axial offset functions
        refer to. When set to Machine, the radial and axial offset methods will read/set the stock to leave parameter.
        When set to Avoid, the radial and axial offset methods will read/set the clearance value,
        and the Fixture mode will map to the relative fixture clearance value.
        """
        return MachiningMode()
    @machineMode.setter
    def machineMode(self, value: MachiningMode):
        """
        Desired machining mode. The default is Avoid.
        The current machining mode will determine which value the radial and axial offset functions
        refer to. When set to Machine, the radial and axial offset methods will read/set the stock to leave parameter.
        When set to Avoid, the radial and axial offset methods will read/set the clearance value,
        and the Fixture mode will map to the relative fixture clearance value.
        """
        pass
    @property
    def radialOffset(self) -> float:
        """
        Radial offset - sets the corresponding radial offset value based on the machine mode
        """
        return float()
    @radialOffset.setter
    def radialOffset(self, value: float):
        """
        Radial offset - sets the corresponding radial offset value based on the machine mode
        """
        pass
    @property
    def axialOffset(self) -> float:
        """
        Axial offset - sets the corresponding axial offset value based on the machine mode
        """
        return float()
    @axialOffset.setter
    def axialOffset(self, value: float):
        """
        Axial offset - sets the corresponding axial offset value based on the machine mode
        """
        pass
    @property
    def combinedOffset(self) -> float:
        """
        Combined offset - clearance and stock to leave based on the machine mode
        This only applies to strategies that use a single offset value (Advanced Swarf,
        Multi-Axis Clearing, Multi-Axis Finishing, Deburr and Geodesic)
        """
        return float()
    @combinedOffset.setter
    def combinedOffset(self, value: float):
        """
        Combined offset - clearance and stock to leave based on the machine mode
        This only applies to strategies that use a single offset value (Advanced Swarf,
        Multi-Axis Clearing, Multi-Axis Finishing, Deburr and Geodesic)
        """
        pass

class MachineFromFileInput(MachineInput):
    """
    Object used as input to create a machine from a local file.
    It is used by the Machine.create method.
    The object holds the data needed to create a machine from a local machine file.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineFromFileInput:
        return MachineFromFileInput()
    @staticmethod
    def create(filePath: str) -> MachineFromFileInput:
        """
        Creates a MachineFromFileInput object to be used as
        input for Machine.create method.
        filePath : The path to a machine file to be processed.
        The filePath is expected to be an absolute path to the machine file on disk.
        The newly created "MachineFromFileInput" object in a valid state.
        """
        return MachineFromFileInput()
    @property
    def filePath(self) -> str:
        """
        The path to a file to act as a base for creating a machine from.
        The filePath is expected to be an absolute path to the local machine file.
        """
        return str()
    @property
    def ignoreSimulationModel(self) -> bool:
        """
        Whether or not to ignore the simulation model
        when creating/loading the machine.
        """
        return bool()
    @ignoreSimulationModel.setter
    def ignoreSimulationModel(self, value: bool):
        """
        Whether or not to ignore the simulation model
        when creating/loading the machine.
        """
        pass

class MachineFromLibraryInput(MachineInput):
    """
    Object used as input to create a machine from library URL.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineFromLibraryInput:
        return MachineFromLibraryInput()
    @staticmethod
    def create(url: core.URL) -> MachineFromLibraryInput:
        """
        Creates a MachineFromLibraryInput object to be used as
        input for Machine.create method, in order to create
        a machine from a library location.
        url : The URL path to the library machine.
        Returns newly created MachineFromLibraryInput object in a valid state.
        """
        return MachineFromLibraryInput()
    @property
    def url(self) -> core.URL:
        """
        The URL path to the library machine.
        """
        return core.URL()
    @property
    def ignoreSimulationModel(self) -> bool:
        """
        Gets and sets whether or not to ignore the simulation model
        when creating or loading the machine.
        """
        return bool()
    @ignoreSimulationModel.setter
    def ignoreSimulationModel(self, value: bool):
        """
        Gets and sets whether or not to ignore the simulation model
        when creating or loading the machine.
        """
        pass

class MachineFromTemplateInput(MachineInput):
    """
    Object used as input to create a machine from a given template.
    Used by "Machine.create(MachineInput)" method.
    The object holds the data needed to create a machine based on the specified template.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineFromTemplateInput:
        return MachineFromTemplateInput()
    @staticmethod
    def create(machineTemplate: MachineTemplate) -> MachineFromTemplateInput:
        """
        Create a "MachineFromTemplateInput" object to be used as
        input for "Machine.create(MachineInput)" method.
        machineTemplate : The template to act as a base for creating a machine from.
        The newly created "MachineFromTemplateInput" object in a valid state.
        """
        return MachineFromTemplateInput()
    @property
    def machineTemplate(self) -> MachineTemplate:
        """
        Machine template identifier used to generate a certain type of machine.
        """
        return MachineTemplate()

class MachineLibrary(CAMLibrary):
    """
    The MachineLibrary provides access to machines. Using this object you can import machines
    and get existing machines using either URL or query to find specific Machines.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineLibrary:
        return MachineLibrary()
    def createQuery(self, location: LibraryLocations, vendor: str = "", model: str = "") -> MachineQuery:
        """
        Creates a new MachineQuery that is used to query the library for machines matching
        the query.
        location : The location specifies the LibraryLocations where to search for in the machine library.
        vendor : The vendor specifies the vendor of the machine. The default empty vendor applies to all machines.
        model : The model specifies the model of the machine. The default empty model applies to all machines.
        Returns a new MachineQuery. The query is predefined by given parameter.
        """
        return MachineQuery()
    def importMachine(self, machine: Machine, destinationUrl: core.URL, machineName: str) -> core.URL:
        """
        Import a given machine at a specific location. The machine will be stored in the library. Throws an error, if the given URL is read-only.
        machine : The machine that should be imported.
        destinationUrl : The URL to the folder where to save the machine.
        machineName : The name of the machine that should be created due to the import. The name can be extended if the asset already exists at given location to ensure a unique name.
        Returns the URL of the newly imported machine, or null if the import failed.
        """
        return core.URL()
    def updateMachine(self, url: core.URL, machine: Machine) -> bool:
        """
        Update a machine in the library. The library overrides the URL by given machine. Throws an error if the URL does not already point to an existing machine.
        url : The URL to the existing asset in the library that should be updated.
        machine : The machine that should be persisted.
        Returns true if asset was updated successfully, false otherwise.
        """
        return bool()
    def machineAtURL(self, url: core.URL) -> Machine:
        """
        Get a specific machine by the given URL. Returns null, if the URL does not exist.
        url : The URL to the machine to be loaded.
        Returns the machine for a valid URL, returns null otherwise.
        """
        return Machine()
    def childMachines(self, url: core.URL) -> list[Machine]:
        """
        Get all machines by the given parent folder URL. Returns null, if the URL does not exist.
        url : The URL of the folder to get machines from.
        Returns the machine for a valid URL, returns null otherwise.
        """
        return [Machine()]

class MultiAxisDPMFeedrateSettings(MultiAxisFeedrateSettings):
    """
    Specialization of MultiAxisFeedrateSettings for standard degrees per minute feedrates.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MultiAxisDPMFeedrateSettings:
        return MultiAxisDPMFeedrateSettings()
    @property
    def dpmType(self) -> MultiAxisDegreesPerMinuteType:
        """
        The DPM settings type
        """
        return MultiAxisDegreesPerMinuteType()
    @property
    def maximumFeedrate(self) -> float:
        """
        The maximum feedrate value that can be output.
        """
        return float()
    @maximumFeedrate.setter
    def maximumFeedrate(self, value: float):
        """
        The maximum feedrate value that can be output.
        """
        pass
    @property
    def outputTolerance(self) -> float:
        """
        The tolerance for deciding whether to output a feedrate value or not. It helps to minimize the output of multi-axis feedrate numbers.
        If the feedrate value is within this tolerance of the previous feedrate value, then it is set to the previous value.
        Value is in deg/min.
        """
        return float()
    @outputTolerance.setter
    def outputTolerance(self, value: float):
        """
        The tolerance for deciding whether to output a feedrate value or not. It helps to minimize the output of multi-axis feedrate numbers.
        If the feedrate value is within this tolerance of the previous feedrate value, then it is set to the previous value.
        Value is in deg/min.
        """
        pass

class MultiAxisInverseTimeFeedrateSettings(MultiAxisFeedrateSettings):
    """
    Specialization of MultiAxisFeedrateSettings for inverse time feedrates.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MultiAxisInverseTimeFeedrateSettings:
        return MultiAxisInverseTimeFeedrateSettings()
    @property
    def maximumFeedrate(self) -> float:
        """
        The maximum feedrate value that can be output.
        """
        return float()
    @maximumFeedrate.setter
    def maximumFeedrate(self, value: float):
        """
        The maximum feedrate value that can be output.
        """
        pass
    @property
    def inverseTimeUnit(self) -> MultiAxisInverseTimeUnit:
        """
        The time units for calculating the inverse from.
        """
        return MultiAxisInverseTimeUnit()
    @inverseTimeUnit.setter
    def inverseTimeUnit(self, value: MultiAxisInverseTimeUnit):
        """
        The time units for calculating the inverse from.
        """
        pass

class MultiAxisMachineElement(MachineElement):
    """
    Machine element representing multi-axis machine settings.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MultiAxisMachineElement:
        return MultiAxisMachineElement()
    @staticmethod
    def staticTypeId() -> str:
        """
        Identifying name for all elements of this type.
        Pass this to the itemByType or itemById methods of MachineElements to filter to elements of this type.
        Returns identifier of this type.
        """
        return str()
    def deleteMe(self) -> None:
        """
        Delete this multi-axis machine element from the machine.
        """
        pass
    def createSingularitySettings(self) -> MultiAxisSingularitySettings:
        """
        Creates a MultiAxisSingularitySettings object.
        Set this object on the singularitySettings property to apply the changes.
        The MultiAxisSingularitySettings object created.
        """
        return MultiAxisSingularitySettings()
    def createFeedrateSettingsInput(self) -> MultiAxisFeedrateSettingsInput:
        """
        Creates a MultiAxisFeedrateSettingsInput object to be used as input for creating MultiAxisFeedrateSettings objects.
         The MultiAxisFeedrateSettingsInput object 
        """
        return MultiAxisFeedrateSettingsInput()
    def createFeedrateSettings(self, input: MultiAxisFeedrateSettingsInput) -> MultiAxisFeedrateSettings:
        """
        Creates a MultiAxisFeedrateSettings specialized object from the given input.
        input : The input object containing the settings to create the MultiAxisFeedrateSettings object.
        Set this object on the feedrateSettings property to apply the changes.
        The specialized MultiAxisFeedrateSettings object created from the input.
        """
        return MultiAxisFeedrateSettings()
    def createRetractAndReconfigureSettings(self) -> MultiAxisRetractAndReconfigureSettings:
        """
        Creates a MultiAxisRetractAndReconfigureSettings object.
        Set this object on the retractAndReconfigureSettings property to apply the changes.
        The MultiAxisRetractAndReconfigureSettings object created.
        """
        return MultiAxisRetractAndReconfigureSettings()
    @property
    def isUsingVirtualTooltip(self) -> bool:
        """
        Specifies if the position of the virtual tool tip (tool end) should be output. Only relevant for rotary head axes.
        """
        return bool()
    @isUsingVirtualTooltip.setter
    def isUsingVirtualTooltip(self, value: bool):
        """
        Specifies if the position of the virtual tool tip (tool end) should be output. Only relevant for rotary head axes.
        """
        pass
    @property
    def singularitySettings(self) -> MultiAxisSingularitySettings:
        """
        The multi-axis kinematics settings for this machine.
        For changes to to this object to take effect, re-assign them to this property.
        To not use multi-axis kinematics, set this to null.
        """
        return MultiAxisSingularitySettings()
    @singularitySettings.setter
    def singularitySettings(self, value: MultiAxisSingularitySettings):
        """
        The multi-axis kinematics settings for this machine.
        For changes to to this object to take effect, re-assign them to this property.
        To not use multi-axis kinematics, set this to null.
        """
        pass
    @property
    def feedrateSettings(self) -> MultiAxisFeedrateSettings:
        """
        The multi-axis feedrate settings for this machine.
        For changes to to this object to take effect, re-assign them to this property.
        Cannot be set to null.
        """
        return MultiAxisFeedrateSettings()
    @feedrateSettings.setter
    def feedrateSettings(self, value: MultiAxisFeedrateSettings):
        """
        The multi-axis feedrate settings for this machine.
        For changes to to this object to take effect, re-assign them to this property.
        Cannot be set to null.
        """
        pass
    @property
    def retractAndReconfigureSettings(self) -> MultiAxisRetractAndReconfigureSettings:
        """
        The multi-axis retract and reconfigure settings for this machine.
        For changes to to this object to take effect, re-assign them to this property.
        To not use multi-axis retract and reconfigure, set this to null.
        """
        return MultiAxisRetractAndReconfigureSettings()
    @retractAndReconfigureSettings.setter
    def retractAndReconfigureSettings(self, value: MultiAxisRetractAndReconfigureSettings):
        """
        The multi-axis retract and reconfigure settings for this machine.
        For changes to to this object to take effect, re-assign them to this property.
        To not use multi-axis retract and reconfigure, set this to null.
        """
        pass
    @property
    def isUsingTiltedWorkplane(self) -> bool:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Specifies if tilted workplane command (e.g., G68.2, G254, PLANE SPATIAL, CYCLE800) should be output for 3+2 operations.
        """
        return bool()
    @isUsingTiltedWorkplane.setter
    def isUsingTiltedWorkplane(self, value: bool):
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Specifies if tilted workplane command (e.g., G68.2, G254, PLANE SPATIAL, CYCLE800) should be output for 3+2 operations.
        """
        pass

class MultiAxisMachineElementInput(MachineElementInput):
    """
    Specialization of MachineElementInput for creating a multi-axis machine element.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MultiAxisMachineElementInput:
        return MultiAxisMachineElementInput()

class MultiAxisProgrammedFeedrateSettings(MultiAxisFeedrateSettings):
    """
    Specialization of MultiAxisFeedrateSettings for programmed feedrates.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MultiAxisProgrammedFeedrateSettings:
        return MultiAxisProgrammedFeedrateSettings()

class NCProgram(OperationBase):
    """
    Object that represents an existing NC program.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> NCProgram:
        return NCProgram()
    def updatePostParameters(self, parameters: CAMParameters) -> bool:
        """
        Overrides the default post parameters of this NC program with the given user's input.
        Returns true if the update was successful. False otherwise.
        """
        return bool()
    def postProcess(self, options: NCProgramPostProcessOptions) -> bool:
        """
        Creates machine-specific NC code for this NC program.
        options : NCProgramPostProcessOptions to speficy the behavior on internal warning.
        Can be null if the default values should be used.
        If needed it can be created by its static create() method.
        Returns true if the post process was successful.
        """
        return bool()
    @property
    def operations(self) -> list[OperationBase]:
        """
        Gets and sets the operations which will be included in the NC program.
        Valid input contains any number of operations, setups or folders.
        For setups and folders all child operations will be added.
        Operations will be post processed in setup order, with operations from the same setup grouped together.
        Setting the nc_program_orderByTool BooleanParameterValue on the parameters property to true will reorder operations across multiple setups to reduce the number of tool changes.
        """
        return [OperationBase()]
    @operations.setter
    def operations(self, value: list[OperationBase]):
        """
        Gets and sets the operations which will be included in the NC program.
        Valid input contains any number of operations, setups or folders.
        For setups and folders all child operations will be added.
        Operations will be post processed in setup order, with operations from the same setup grouped together.
        Setting the nc_program_orderByTool BooleanParameterValue on the parameters property to true will reorder operations across multiple setups to reduce the number of tool changes.
        """
        pass
    @property
    def filteredOperations(self) -> list[OperationBase]:
        """
        Gets all valid operations derived from the operations property. The list is ordered with respect to the nc_program_oderByTool parameter and considers the number of instances in a setup.
        """
        return [OperationBase()]
    @property
    def postConfiguration(self) -> PostConfiguration:
        """
        Gets and sets the post configuration of this NC program.
        """
        return PostConfiguration()
    @postConfiguration.setter
    def postConfiguration(self, value: PostConfiguration):
        """
        Gets and sets the post configuration of this NC program.
        """
        pass
    @property
    def machine(self) -> Machine:
        """
        Gets and sets the machine of this NC program.
        When a machine is set, "use machine configuration" is automatically set to true.
        If this machine has a default post assigned, this post will be set for the NC program as well.
        """
        return Machine()
    @machine.setter
    def machine(self, value: Machine):
        """
        Gets and sets the machine of this NC program.
        When a machine is set, "use machine configuration" is automatically set to true.
        If this machine has a default post assigned, this post will be set for the NC program as well.
        """
        pass
    @property
    def postParameters(self) -> CAMParameters:
        """
        Gets the post parameters of this NC program.
        """
        return CAMParameters()
    @property
    def fusionHubFolder(self) -> core.DataFolder:
        """
        Gets and sets the DataFolder to which the exported files should be uploaded to if the parameter nc_program_postToFusionTeam is set to true.
        When a DataFolder is set, nc_program_postToFusionTeam is automatically set to true.
        An exception will be thrown if the DataFolder to set is not valid or not accessible.
        Depending on the FusionHubExecutionBehaviors used for the export the design may be saved at this location as well.
        """
        return core.DataFolder()
    @fusionHubFolder.setter
    def fusionHubFolder(self, value: core.DataFolder):
        """
        Gets and sets the DataFolder to which the exported files should be uploaded to if the parameter nc_program_postToFusionTeam is set to true.
        When a DataFolder is set, nc_program_postToFusionTeam is automatically set to true.
        An exception will be thrown if the DataFolder to set is not valid or not accessible.
        Depending on the FusionHubExecutionBehaviors used for the export the design may be saved at this location as well.
        """
        pass

class Operation(OperationBase):
    """
    Object that represents an operation in an existing Setup, Folder or Pattern.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Operation:
        return Operation()
    @property
    def isToolpathValid(self) -> bool:
        """
        Gets if the toolpath for this operation is currently valid. (has not become invalidated by model changes).
        """
        return bool()
    @property
    def isGenerating(self) -> bool:
        """
        Gets if the operation is being generated.
        """
        return bool()
    @property
    def parent(self) -> core.Base:
        """
        Returns the parent Setup, Folder or Pattern for this operation.
        """
        return core.Base()
    @property
    def hasToolpath(self) -> bool:
        """
        Gets if a toolpath currently exists (has been generated) for this operation.
        """
        return bool()
    @property
    def operationState(self) -> OperationStates:
        """
        Gets the current state of this operation.
        """
        return OperationStates()
    @property
    def generatingProgress(self) -> str:
        """
        Gets the generation progress value for this operation.
        """
        return str()
    @property
    def tool(self) -> Tool:
        """
        Get or set the tool for this operation. The document's tool library will be updated accordingly.
        The tool instance returned is a copy and therefore is not referenced by the operation.
        To change the tool of the operation, the new tool must be assigned to the operation.
        Setting a tool will override the current preset and will fall back to the default preset of the new tool.
        """
        return Tool()
    @tool.setter
    def tool(self, value: Tool):
        """
        Get or set the tool for this operation. The document's tool library will be updated accordingly.
        The tool instance returned is a copy and therefore is not referenced by the operation.
        To change the tool of the operation, the new tool must be assigned to the operation.
        Setting a tool will override the current preset and will fall back to the default preset of the new tool.
        """
        pass
    @property
    def toolPreset(self) -> ToolPreset:
        """
        Get or set the tool preset to be used. Must be a valid preset of the already assigned tool. Returns null if the operation has no tool or preset.
        """
        return ToolPreset()
    @toolPreset.setter
    def toolPreset(self, value: ToolPreset):
        """
        Get or set the tool preset to be used. Must be a valid preset of the already assigned tool. Returns null if the operation has no tool or preset.
        """
        pass
    @property
    def referenceTool(self) -> Tool:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Get or set the tool for this operation. The document's tool library will be updated accordingly.
        The tool instance returned is a copy and therefore is not referenced by the operation.
        To change the reference tool of the operation, the new tool must be assigned to the operation, but once set it cannot be unset again.
        Setting the tool is only possible on operation strategies that support reference tools, an exception is thrown otherwise.
        Likewise null is returned if the operation strategy does not support reference tools.
        """
        return Tool()
    @referenceTool.setter
    def referenceTool(self, value: Tool):
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Get or set the tool for this operation. The document's tool library will be updated accordingly.
        The tool instance returned is a copy and therefore is not referenced by the operation.
        To change the reference tool of the operation, the new tool must be assigned to the operation, but once set it cannot be unset again.
        Setting the tool is only possible on operation strategies that support reference tools, an exception is thrown otherwise.
        Likewise null is returned if the operation strategy does not support reference tools.
        """
        pass

class OptimizedOrientationResults(GeneratedData):
    """
    Collection of OptimizedOrientationResult instances associated with a given optimized orientation object inside an additive setup.
    The number of instances is the number of results given and the initial orientation result.
    The initial orientation will contain the orientation matrix, but not the other values calculated by the orientation operation.
    Setting an OptimizedOrientationResult as the currentOrientationResult will transform the Occurrence assigned to the orientation operation.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> OptimizedOrientationResults:
        return OptimizedOrientationResults()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> OptimizedOrientationResult:
        return None
    def __iter__(self) -> Iterator[OptimizedOrientationResult]:
        return None
    def item(self, index: int) -> OptimizedOrientationResult:
        """
        Gets the desired orientation result at the given index. The list is ordered given the orientation parameters of the parent orientation operation.
        """
        return OptimizedOrientationResult()
    @property
    def initialOrientationResult(self) -> OptimizedOrientationResult:
        """
        Gets the initial orientation of the component before any result has been applied.
        """
        return OptimizedOrientationResult()
    @property
    def currentOrientationResult(self) -> OptimizedOrientationResult:
        """
        Gets or sets the desired OrientationResult.
        When setting, the orientation matrix is applied to the component selected in the parent orientation operation, possibly invalidating other operations.
        """
        return OptimizedOrientationResult()
    @currentOrientationResult.setter
    def currentOrientationResult(self, value: OptimizedOrientationResult):
        """
        Gets or sets the desired OrientationResult.
        When setting, the orientation matrix is applied to the component selected in the parent orientation operation, possibly invalidating other operations.
        """
        pass
    @property
    def count(self) -> int:
        """
        The number of items in the collection.
        """
        return int()

class PostLibrary(CAMLibrary):
    """
    The PostLibrary provides access to post configurations. Using this object you can import post configurations
    and get existing post configurations using either a URL or query to find specific post configurations.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PostLibrary:
        return PostLibrary()
    def createQuery(self, location: LibraryLocations) -> PostConfigurationQuery:
        """
        Creates a new PostConfigurationQuery that is used to query the library for post configurations matching
        the query.
        location : The location specifies the LibraryLocations where to search for in the post library.
        Returns a new PostConfigurationQuery. The query is predefined by given parameter.
        """
        return PostConfigurationQuery()
    def importPostConfiguration(self, postConfig: PostConfiguration, destinationUrl: core.URL, postName: str) -> core.URL:
        """
        Import a given post configuration at a specific location. The post configuration will be stored in the library. Throws an error, if the given URL is read-only.
        postConfig : The post configuration that should be imported.
        destinationUrl : The URL to the folder where to save the post configuration.
        postName : The name of the post configuration that should be created due to the import. The name can be extended if the name already exists at given location to ensure a unique name.
        Returns the URL of the newly imported post configuration, or null if the import failed.
        """
        return core.URL()
    def postConfigurationAtURL(self, url: core.URL) -> PostConfiguration:
        """
        Get a specific post configuration by the given URL. Returns null, if the URL does not exist.
        url : The URL to the post configuration to be loaded.
        Returns the post configuration for a valid URL, returns null otherwise.
        """
        return PostConfiguration()
    def childPostConfigurations(self, url: core.URL) -> list[PostConfiguration]:
        """
        Get all posts by the given parent folder URL. Returns null, if the URL does not exist.
        url : The URL of the folder to get post configurations from.
        Returns all children posts for a valid URL, returns null otherwise.
        """
        return [PostConfiguration()]

class PostProcessingMachineElement(MachineElement):
    """
    Machine element representing the post processor and post properties.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PostProcessingMachineElement:
        return PostProcessingMachineElement()
    @staticmethod
    def staticTypeId() -> str:
        """
        Identifying name for all elements of this type.
        Pass this to the itemByType or itemById methods of MachineElements to filter to elements of this type.
        Returns identifier of this type.
        """
        return str()
    def updatePostParameters(self, parameters: CAMParameters) -> bool:
        """
        Overrides the default post parameters with the given user's input.
        Returns true if the update was successful. False otherwise.
        """
        return bool()
    @property
    def postURL(self) -> core.URL:
        """
        Gets or sets the URL of the post assigned to the machine.
        Returns a string with the URL of the post assigned to the machine.
        """
        return core.URL()
    @postURL.setter
    def postURL(self, value: core.URL):
        """
        Gets or sets the URL of the post assigned to the machine.
        Returns a string with the URL of the post assigned to the machine.
        """
        pass
    @property
    def outputFolder(self) -> str:
        """
        Gets and sets the path for the output folder where the .nc files will be located.
        Returns a string of the output folder path for the post processing result.
        """
        return str()
    @outputFolder.setter
    def outputFolder(self, value: str):
        """
        Gets and sets the path for the output folder where the .nc files will be located.
        Returns a string of the output folder path for the post processing result.
        """
        pass
    @property
    def postParameters(self) -> CAMParameters:
        """
        Gets the machine scope post properties as parameters.
        """
        return CAMParameters()

class PrintSettingLibrary(CAMLibrary):
    """
    The PrintSettingLibrary provides access to PrintSettings. Using this object you can import PrintSettings
    and get existing PrintSettings using either URL or query to find specific PrintSetting.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PrintSettingLibrary:
        return PrintSettingLibrary()
    def createQuery(self, location: LibraryLocations) -> PrintSettingQuery:
        """
        Creates a new PrintSettingQuery that is used to query the library for PrintSettings matching
        the query.
        location : The location specifies the LibraryLocations where to search for in the PrintSetting library.
        Returns a new PrintSettingQuery. The query is predefined by given parameter.
        """
        return PrintSettingQuery()
    def importPrintSetting(self, printSetting: PrintSetting, destinationUrl: core.URL, printSettingName: str) -> core.URL:
        """
        Import a given PrintSetting at a specific location. The PrintSetting will be stored in the library. Throws an error if the given URL is read-only.
        printSetting : The PrintSetting that should be imported.
        destinationUrl : The URL to the folder where to save the PrintSetting.
        printSettingName : The name that should be assigned to imported PrintSetting. The name can be extended if there already exists a PrintSetting at given location to ensure a unique name.
        Returns the URL of the newly imported PrintSetting, or null if the import failed.
        """
        return core.URL()
    def updatePrintSetting(self, url: core.URL, printSetting: PrintSetting) -> bool:
        """
        Update a PrintSetting in the library. The library overrides the URL by given PrintSetting. Throws an error if the URL does not already point to an existing printSetting.
        url : The URL to the existing asset in the library that should be updated.
        printSetting : The PrintSetting that should be persisted.
        Returns true if asset was updated successfully, false otherwise.
        """
        return bool()
    def printSettingAtURL(self, url: core.URL) -> PrintSetting:
        """
        Get a specific PrintSetting by the given URL. Returns null if the URL does not exist.
        url : The URL to the PrintSetting to be loaded.
        Returns the PrintSetting for a valid URL, returns null otherwise.
        """
        return PrintSetting()
    def childPrintSettings(self, url: core.URL) -> list[PrintSetting]:
        """
        Get all PrintSettings by the given parent folder URL. Returns null, if the URL does not exist.
        url : The URL of the folder to get PrintSettings from.
        Returns the PrintSetting for a valid URL, returns null otherwise.
        """
        return [PrintSetting()]

class PRMExportOptions(CAMExportOptions):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    PRM export options for additive FEA.  A PRM file can only be
    exported if the Autodesk Fusion Manufacturing Extension is active.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PRMExportOptions:
        return PRMExportOptions()

class RotaryMachineAxis(MachineAxis):
    """
    Object that represents an axis with rotary motion (e.g. A, B, and C).
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RotaryMachineAxis:
        return RotaryMachineAxis()
    @property
    def rotationAxis(self) -> core.InfiniteLine3D:
        """
        The infinite line that defines the direction and location of the axis of rotation.
        """
        return core.InfiniteLine3D()
    @rotationAxis.setter
    def rotationAxis(self, value: core.InfiniteLine3D):
        """
        The infinite line that defines the direction and location of the axis of rotation.
        """
        pass

class RotaryMachineAxisConfiguration(MachineAxisConfiguration):
    """
    A MachineAxisConfiguration holding settings specific to rotary axes.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RotaryMachineAxisConfiguration:
        return RotaryMachineAxisConfiguration()
    @property
    def wrapAroundAtRange(self) -> MachineAxisRange:
        """
        Specify the range that the axis value wraps around for unlimited axes.
        If there are no wrap around limits then wrapAroundAtRange is infinite.
        Units are radians.
        """
        return MachineAxisRange()
    @wrapAroundAtRange.setter
    def wrapAroundAtRange(self, value: MachineAxisRange):
        """
        Specify the range that the axis value wraps around for unlimited axes.
        If there are no wrap around limits then wrapAroundAtRange is infinite.
        Units are radians.
        """
        pass
    @property
    def reset(self) -> MachineResetOptions:
        """
        Specify when to reset the initial axis position.
        """
        return MachineResetOptions()
    @reset.setter
    def reset(self, value: MachineResetOptions):
        """
        Specify when to reset the initial axis position.
        """
        pass
    @property
    def useToolCenterPointControl(self) -> bool:
        """
        Specify if the axis supports Tool Center Point Control (TCP).
        """
        return bool()
    @useToolCenterPointControl.setter
    def useToolCenterPointControl(self, value: bool):
        """
        Specify if the axis supports Tool Center Point Control (TCP).
        """
        pass
    @property
    def rotaryPreference(self) -> MachineAnglePreferences:
        """
        Specify the preferred angle direction at the beginning of an operation.
        """
        return MachineAnglePreferences()
    @rotaryPreference.setter
    def rotaryPreference(self, value: MachineAnglePreferences):
        """
        Specify the preferred angle direction at the beginning of an operation.
        """
        pass

class RotaryMachineAxisInput(MachineAxisInput):
    """
    Object that defines the properties required to create a new rotary machine axis object.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RotaryMachineAxisInput:
        return RotaryMachineAxisInput()
    @property
    def rotationAxis(self) -> core.InfiniteLine3D:
        """
        The infinite line that defines the direction and location of the axis of rotation.
        This direction is in the machine's coordinate system (e.g. an A axis would
        typically use (1,0,0) for the direction), and follows the right-hand rule.
        """
        return core.InfiniteLine3D()
    @rotationAxis.setter
    def rotationAxis(self, value: core.InfiniteLine3D):
        """
        The infinite line that defines the direction and location of the axis of rotation.
        This direction is in the machine's coordinate system (e.g. an A axis would
        typically use (1,0,0) for the direction), and follows the right-hand rule.
        """
        pass

class Setup(OperationBase):
    """
    Object that represents an existing Setup.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Setup:
        return Setup()
    def activate(self) -> bool:
        """
        Sets this object as the default container.
        Returns true if the activation was successful.
        """
        return bool()
    def createFromCAMTemplate2(self, input: CreateFromCAMTemplateInput) -> list[OperationBase]:
        """
        Create new operations, folders, or patterns from the specified CAMTemplate. They
        are added to the end of the parent setup.
        input : Input object that contains the template to create from and the generation mode.
        Returns an array containing all of the operations, folders and patterns created from the template.
        """
        return [OperationBase()]
    def additiveContainerByType(self, containerType: CAMAdditiveContainerTypes) -> CAMAdditiveContainer:
        """
        Returns the additive container with the specified type.
        containerType : The type of the container
        Returns the specified container or null in the case where there is no container with the specified type.
        """
        return CAMAdditiveContainer()
    @property
    def operationType(self) -> OperationTypes:
        """
        Gets the Operation Type.
        It can be MillingOperation, TurningOperation, JetOperation or AdditiveOperation.
        """
        return OperationTypes()
    @property
    def isActive(self) -> bool:
        """
        Gets if this setup is active.
        """
        return bool()
    @property
    def operations(self) -> Operations:
        """
        Returns the Operations collection that provides access to existing operations
        in this setup.
        """
        return Operations()
    @property
    def folders(self) -> CAMFolders:
        """
        Returns the Folders collection that provides access to existing folders
        in this setup.
        """
        return CAMFolders()
    @property
    def patterns(self) -> CAMPatterns:
        """
        Returns the Patterns collection that provides access to existing patterns
        in this setup.
        """
        return CAMPatterns()
    @property
    def children(self) -> ChildOperationList:
        """
        Returns a collection containing all of the immediate (top level) child operations, folders and patterns in this setup,
        in the order they appear in the browser.
        """
        return ChildOperationList()
    @property
    def allOperations(self) -> core.ObjectCollection:
        """
        Returns an ObjectCollection containing all of the operations in this setup.
        This includes all operations nested in folders and patterns.
        """
        return core.ObjectCollection()
    @property
    def models(self) -> core.ObjectCollection:
        """
        Gets and sets the input models associated with the setup. Passing in an empty ObjectCollection
        will remove all current inputs.  Valid collection items are Occurrence, BRepBody, or MeshBody.
        """
        return core.ObjectCollection()
    @models.setter
    def models(self, value: core.ObjectCollection):
        """
        Gets and sets the input models associated with the setup. Passing in an empty ObjectCollection
        will remove all current inputs.  Valid collection items are Occurrence, BRepBody, or MeshBody.
        """
        pass
    @property
    def fixtures(self) -> core.ObjectCollection:
        """
        Gets and sets the fixtures associated with the setup, which are represented by an ObjectCollection
        of models, where a model can be an Occurrence, BRepBody, or MeshBody.
        To be able to set models as fixtures, the fixturesEnabled property has to be set first.
        """
        return core.ObjectCollection()
    @fixtures.setter
    def fixtures(self, value: core.ObjectCollection):
        """
        Gets and sets the fixtures associated with the setup, which are represented by an ObjectCollection
        of models, where a model can be an Occurrence, BRepBody, or MeshBody.
        To be able to set models as fixtures, the fixturesEnabled property has to be set first.
        """
        pass
    @property
    def stockSolids(self) -> core.ObjectCollection:
        """
        Gets and sets the stock solids associated with the setup, which are represented by an ObjectCollection
        of models, where a model can be an Occurrence, BRepBody, or MeshBody.
        StockMode has to be set to `SolidStock` otherwise this will throw an error.
        """
        return core.ObjectCollection()
    @stockSolids.setter
    def stockSolids(self, value: core.ObjectCollection):
        """
        Gets and sets the stock solids associated with the setup, which are represented by an ObjectCollection
        of models, where a model can be an Occurrence, BRepBody, or MeshBody.
        StockMode has to be set to `SolidStock` otherwise this will throw an error.
        """
        pass
    @property
    def machine(self) -> Machine:
        """
        Gets and sets the Machine associated with the setup. The returned Machine is a transient copy, so the Machine needs to be set to the Setup again to apply any changes.
        """
        return Machine()
    @machine.setter
    def machine(self, value: Machine):
        """
        Gets and sets the Machine associated with the setup. The returned Machine is a transient copy, so the Machine needs to be set to the Setup again to apply any changes.
        """
        pass
    @property
    def stockMode(self) -> SetupStockModes:
        """
        Gets and sets the bodies associated with the setup.  Passing in an empty ObjectCollection
        will remove all current bodies.  Valid input is MeshBody and/or BRepBody objects.
        """
        return SetupStockModes()
    @stockMode.setter
    def stockMode(self, value: SetupStockModes):
        """
        Gets and sets the bodies associated with the setup.  Passing in an empty ObjectCollection
        will remove all current bodies.  Valid input is MeshBody and/or BRepBody objects.
        """
        pass
    @property
    def workCoordinateSystem(self) -> core.Matrix3D:
        """
        Gets the Work Coordinate System associated with the setup as 4x4 matrix. From Matrix3D,
        Orientation and Origin data can be fetched.
        """
        return core.Matrix3D()
    @property
    def fixtureEnabled(self) -> bool:
        """
        Set this value to enable the use of fixtures for this setup.
        To then set the fixture models themselves use the `fixtures` property.
        """
        return bool()
    @fixtureEnabled.setter
    def fixtureEnabled(self, value: bool):
        """
        Set this value to enable the use of fixtures for this setup.
        To then set the fixture models themselves use the `fixtures` property.
        """
        pass
    @property
    def printSetting(self) -> PrintSetting:
        """
        Gets and sets the PrintSetting associated with the setup.
        """
        return PrintSetting()
    @printSetting.setter
    def printSetting(self, value: PrintSetting):
        """
        Gets and sets the PrintSetting associated with the setup.
        """
        pass
    @property
    def visibilityManager(self) -> SetupVisibilityManager:
        """
        Visibility manager for this setup.
        """
        return SetupVisibilityManager()
    @property
    def stockMaterial(self) -> StockMaterial:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Gets/ and sets the Stock material associated with the setup.
        """
        return StockMaterial()
    @stockMaterial.setter
    def stockMaterial(self, value: StockMaterial):
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Gets/ and sets the Stock material associated with the setup.
        """
        pass

class SetupChangeEvent(core.Event):
    """
    A SetupChangeEvent represents a setup related change event.  It is used for SetupChanged notifications.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SetupChangeEvent:
        return SetupChangeEvent()
    def add(self, handler: SetupChangeEventHandler) -> bool:
        """
        Add a handler to be notified when the file event occurs.
        handler : The handler object to be called when this event is fired.
        Returns true if the addition of the handler was successful.
        """
        return bool()
    def remove(self, handler: SetupChangeEventHandler) -> bool:
        """
        Removes a handler from the event.
        handler : The handler object to be removed from the event.
        Returns true if removal of the handler was successful.
        """
        return bool()

class SetupChangeEventArgs(core.EventArgs):
    """
    The SetupChangeEventArgs provides information associated with a change event of a setup.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SetupChangeEventArgs:
        return SetupChangeEventArgs()
    @property
    def setup(self) -> Setup:
        """
        Provides access to the setup. Can be null in the case
        where the event is fired before the setup has been created or after it has been deleted.
        """
        return Setup()
    @property
    def info(self) -> str:
        """
        Provides access to an information string.
        The optional string may contain additional information about the change.
        """
        return str()
    @property
    def type(self) -> SetupChangeEventType:
        """
        The type specifies the actual change.
        """
        return SetupChangeEventType()

class SetupEvent(core.Event):
    """
    A SetupEvent represents a setup related event.  For example, SetupCreated or SetupDestroying.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SetupEvent:
        return SetupEvent()
    def add(self, handler: SetupEventHandler) -> bool:
        """
        Add a handler to be notified when the file event occurs.
        handler : The handler object to be called when this event is fired.
        Returns true if the addition of the handler was successful.
        """
        return bool()
    def remove(self, handler: SetupEventHandler) -> bool:
        """
        Removes a handler from the event.
        handler : The handler object to be removed from the event.
        Returns true if removal of the handler was successful.
        """
        return bool()

class SetupEventArgs(core.EventArgs):
    """
    The SetupEventArgs provides information associated with a setup event.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SetupEventArgs:
        return SetupEventArgs()
    @property
    def setup(self) -> Setup:
        """
        Provides access to the setup. Can be null in the case
        where the event is fired before the setup has been created or after it has been deleted.
        """
        return Setup()

class StockMaterialLibrary(CAMLibrary):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The StockMaterialLibraries object provides utilities to access, import and update stock material by URL.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> StockMaterialLibrary:
        return StockMaterialLibrary()
    def importStockMaterial(self, stockMaterial: StockMaterial, destinationUrl: core.URL, stockMaterialName: str) -> core.URL:
        """
        Import a given stockMaterial at a specific location. The stockMaterial will be stored in the library. Throws an error, if the given URL is read-only.
        stockMaterial : The stockMaterial that should be imported.
        destinationUrl : The URL to the folder where to save the stockMaterial.
        stockMaterialName : The name of the stockMaterial that should be created due to the import. The name can be extended if the asset already exists at given location to ensure a unique name.
        Returns the URL of the newly imported stockMaterial, or null if the import failed.
        """
        return core.URL()
    def updateStockMaterial(self, url: core.URL, stockMaterial: StockMaterial) -> bool:
        """
        Update a stockMaterial in the library. The library overrides the URL by given stockMaterial. Throws an error if the URL does not already point to an existing stockMaterial.
        url : The URL to the existing asset in the library that should be updated.
        stockMaterial : The stockMaterial that should be persisted.
        Returns true if asset was updated successfully, false otherwise.
        """
        return bool()
    def stockMaterialAtURL(self, url: core.URL) -> StockMaterial:
        """
        Get a specific stockMaterial by the given URL. Returns null, if the URL does not exist.
        url : The URL to the stockMaterial to be loaded.
        Returns the stockMaterial for a valid URL, returns null otherwise.
        """
        return StockMaterial()
    def childStockMaterials(self, url: core.URL) -> list[StockMaterial]:
        """
        Get all stockMaterials by the given parent folder URL. Returns null, if the URL does not exist.
        url : The URL of the folder to get stockMaterials from.
        Returns the stockMaterials for a valid URL, returns null otherwise.
        """
        return [StockMaterial()]

class StringParameterValue(ParameterValue):
    """
    A parameter value that is a string.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> StringParameterValue:
        return StringParameterValue()
    @property
    def value(self) -> str:
        """
        Get or set the value of the parameter.
        """
        return str()
    @value.setter
    def value(self, value: str):
        """
        Get or set the value of the parameter.
        """
        pass

class ToolBlock(Tool):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Represents a Tool Block.
    
    A tool block is a type of tool that can have 3D geometry associated with it. 3D geometry can be supplied to represent
    the shape of the tool block instead of an auto-generated shape derived from parameters.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ToolBlock:
        return ToolBlock()
    @property
    def geometry(self) -> AssemblyComponentGeometry:
        """
        Get or set the geometry and attachment points for this tool block.
        
        A Null Object represents a tool without any 3D data associated.
        
        """
        return AssemblyComponentGeometry()
    @geometry.setter
    def geometry(self, value: AssemblyComponentGeometry):
        """
        Get or set the geometry and attachment points for this tool block.
        
        A Null Object represents a tool without any 3D data associated.
        
        """
        pass

class ToolingCapabilitiesMachineElement(MachineElement):
    """
    Machine element representing the tooling capabilities of a machine.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ToolingCapabilitiesMachineElement:
        return ToolingCapabilitiesMachineElement()
    @staticmethod
    def staticTypeId() -> str:
        """
        Identifying name for all elements of this type.
        Pass this to the itemByType or itemById methods of MachineElements to filter to elements of this type.
        Returns identifier of this type.
        """
        return str()
    @property
    def isToolChangerAutomatic(self) -> bool:
        """
        If your machine has an automatic tool changer, set this to true.
        For machines with manual tool change capabilities, set this to false.
        """
        return bool()
    @isToolChangerAutomatic.setter
    def isToolChangerAutomatic(self, value: bool):
        """
        If your machine has an automatic tool changer, set this to true.
        For machines with manual tool change capabilities, set this to false.
        """
        pass
    @property
    def isToolPreloadSupported(self) -> bool:
        """
        If your machine has a staging function for the tool changer, set this to true.
        For machines without staging tool change capabilities, set this to false.
        """
        return bool()
    @isToolPreloadSupported.setter
    def isToolPreloadSupported(self, value: bool):
        """
        If your machine has a staging function for the tool changer, set this to true.
        For machines without staging tool change capabilities, set this to false.
        """
        pass
    @property
    def maxToolCount(self) -> int:
        """
        Property that represents the maximum number of tools available in the tool magazine,
        or the maximum number of tools that can be programmed in the control.
        """
        return int()
    @maxToolCount.setter
    def maxToolCount(self, value: int):
        """
        Property that represents the maximum number of tools available in the tool magazine,
        or the maximum number of tools that can be programmed in the control.
        """
        pass

class ToolingCapabilitiesMachineElementInput(MachineElementInput):
    """
    Input class for creating ToolingCapabilitiesMachineElement objects.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ToolingCapabilitiesMachineElementInput:
        return ToolingCapabilitiesMachineElementInput()

class ToolLibraries(CAMLibrary):
    """
    The ToolLibraries object provides utilities to access, import and update tool libraries.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ToolLibraries:
        return ToolLibraries()
    def importToolLibrary(self, toolLibrary: ToolLibrary, destinationUrl: core.URL, libraryName: str) -> core.URL:
        """
        Import a given ToolLibrary from a specific location. The imported ToolLibrary can be accessed
        through this ToolLibraries object. Throws an error, if the given URL is read-only.
        toolLibrary : The ToolLibrary that should be imported.
        destinationUrl : The URL to the parent folder where the imported tool library will be saved.
        libraryName : The name of the library that should be created due to the import. If the specified name already
        exists, a number will be added to the name to ensure it is unique.
        Returns the URL of the newly imported tool library, or null if the import failed.
        """
        return core.URL()
    def updateToolLibrary(self, url: core.URL, toolLibrary: ToolLibrary) -> bool:
        """
        Update ToolLibrary in ToolLibraries. Overrides the URL by given ToolLibrary.
        Throws an error if the URL does not already point to an existing ToolLibrary.
        url : The URL to the existing asset in the ToolLibraries that should be updated.
        toolLibrary : The ToolLibrary that should be persisted.
        Returns true if asset was updated successfully, false otherwise.
        """
        return bool()
    def toolLibraryAtURL(self, url: core.URL) -> ToolLibrary:
        """
        Get a specific ToolLibrary by given URL. Returns null, if the URL does not exist.
        url : The URL to the ToolLibrary to be loaded.
        Returns the ToolLibrary for a valid URL, returns null otherwise.
        """
        return ToolLibrary()
    def createQuery(self, location: LibraryLocations) -> ToolQuery:
        """
        Creates a new ToolQuery that is used to query the library for tools matching
        the query.
        location : The location specifies the LibraryLocations where to search.
        Returns a new ToolQuery. The query is predefined by given parameter.
        """
        return ToolQuery()

class TurningTool(Tool):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Represents a Turning Tool.
    
    A turning tool is comprised of an insert and potentially a holder. 3D geometry can be supplied to represent
    the shape of the holder instead of the auto-generated shape derived from parameters.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> TurningTool:
        return TurningTool()
    @property
    def holderGeometry(self) -> AssemblyComponentGeometry:
        """
        Get or set the geometry and attachment points for the holder for this turning tool.
        
        A Null Object represents a tool without any 3D data associated.
        
        """
        return AssemblyComponentGeometry()
    @holderGeometry.setter
    def holderGeometry(self, value: AssemblyComponentGeometry):
        """
        Get or set the geometry and attachment points for the holder for this turning tool.
        
        A Null Object represents a tool without any 3D data associated.
        
        """
        pass

class CAMPattern(CAMFolder):
    """
    Object that represents a pattern in an existing Setup, Folder or Pattern.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CAMPattern:
        return CAMPattern()

class ChainSelection(CurveSelection):
    """
    Represents a chain type of curve selection. Allows B-Rep edges and sketch geometry for the inputGeometry property.
    The automatic tool side detection is currently disabled when using the API, thus the side is determined
    based on the direction of the first edge and the z-axis of the tool orientation.
    
    This class overrides the value property of its GeometrySelection parent to return the result edge selection.
    The result may contain more edges than the input if gaps between the desired start and end edge were automatically filled.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ChainSelection:
        return ChainSelection()
    @property
    def isOpen(self) -> bool:
        """
        Property to get or set if an open contour should be closed or not.
        If true and the input does not specify a closed contour, additional curve segments will be generated to close the contour.
        """
        return bool()
    @isOpen.setter
    def isOpen(self, value: bool):
        """
        Property to get or set if an open contour should be closed or not.
        If true and the input does not specify a closed contour, additional curve segments will be generated to close the contour.
        """
        pass
    @property
    def isOpenAllowed(self) -> bool:
        """
        Property to specify if the underlying CadContours2DParameterValue allows open contours.
        Some examples of some open contours are adaptive clearing 3d and swarf. And, some examples
        of closed contours are face and machining boundary.
        """
        return bool()
    @property
    def isReverted(self) -> bool:
        """
        Property to control if the curve is reverted or not. The curve needs to be reverted,
        if Fusion's guess does not match the user's expectation.
        
        The initial tool placement depends on the first input edge or sketch line and the height
        of the bordering faces or sketch boundaries, with the tool being placed outside of the higher face or sketch boundary.
        """
        return bool()
    @isReverted.setter
    def isReverted(self, value: bool):
        """
        Property to control if the curve is reverted or not. The curve needs to be reverted,
        if Fusion's guess does not match the user's expectation.
        
        The initial tool placement depends on the first input edge or sketch line and the height
        of the bordering faces or sketch boundaries, with the tool being placed outside of the higher face or sketch boundary.
        """
        pass
    @property
    def extensionMethod(self) -> ExtensionMethods:
        """
        Property that gets and sets extension method to use. The default is TangentExtension.
        Only applicable to open contours.
        """
        return ExtensionMethods()
    @extensionMethod.setter
    def extensionMethod(self, value: ExtensionMethods):
        """
        Property that gets and sets extension method to use. The default is TangentExtension.
        Only applicable to open contours.
        """
        pass
    @property
    def extensionType(self) -> ExtensionTypes:
        """
        Property that gets and sets the desired extension type method. The default is DistanceCap.
        This is only applicable to open contours.
        """
        return ExtensionTypes()
    @extensionType.setter
    def extensionType(self, value: ExtensionTypes):
        """
        Property that gets and sets the desired extension type method. The default is DistanceCap.
        This is only applicable to open contours.
        """
        pass
    @property
    def startExtensionLength(self) -> float:
        """
        Property that gets and sets the length of the extension of an open curve at the start of the chain.
        This is only applicable to open contours and when DistanceCap is chosen as the extension cap.
        """
        return float()
    @startExtensionLength.setter
    def startExtensionLength(self, value: float):
        """
        Property that gets and sets the length of the extension of an open curve at the start of the chain.
        This is only applicable to open contours and when DistanceCap is chosen as the extension cap.
        """
        pass
    @property
    def endExtensionLength(self) -> float:
        """
        Property that gets and sets the length of the extension of an open curve at the end of the chain.
        The value is specified in centimeters. This is only applicable to open contours and when DistanceCap
        is chosen as the extension cap.
        """
        return float()
    @endExtensionLength.setter
    def endExtensionLength(self, value: float):
        """
        Property that gets and sets the length of the extension of an open curve at the end of the chain.
        The value is specified in centimeters. This is only applicable to open contours and when DistanceCap
        is chosen as the extension cap.
        """
        pass

class FaceContourSelection(CurveSelection):
    """
    Represents a face type of curve selection. It allows BRepFace objects for the input geometry.
    Overrides the GeometrySelection's value method to include other faces if the isSelectingSamePlaneFaces property is true and the selection has been applied.
    The result of the value property call may contain duplicates.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FaceContourSelection:
        return FaceContourSelection()
    @property
    def loopType(self) -> LoopTypes:
        """
        Property to get and set the desired loop type. The default is AllLoops.
        """
        return LoopTypes()
    @loopType.setter
    def loopType(self, value: LoopTypes):
        """
        Property to get and set the desired loop type. The default is AllLoops.
        """
        pass
    @property
    def sideType(self) -> SideTypes:
        """
        Property to get and set the desired side type. The default is StartOutside.
        """
        return SideTypes()
    @sideType.setter
    def sideType(self, value: SideTypes):
        """
        Property to get and set the desired side type. The default is StartOutside.
        """
        pass
    @property
    def isSelectingSamePlaneFaces(self) -> bool:
        """
        Property to get and set if all planar faces lying in the same plane as the selected face should be automatically selected as well.
        """
        return bool()
    @isSelectingSamePlaneFaces.setter
    def isSelectingSamePlaneFaces(self, value: bool):
        """
        Property to get and set if all planar faces lying in the same plane as the selected face should be automatically selected as well.
        """
        pass

class MachineAvoidDefaultSelection(MachineAvoidSelectionBase):
    """
    Machine/avoid default selection class. Represents a group of selections that are parameter
    driven. Provides access to the stored selections.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineAvoidDefaultSelection:
        return MachineAvoidDefaultSelection()
    @property
    def inputGeometry(self) -> list[core.Base]:
        """
        Get the value of the input geometry.
        """
        return [core.Base()]

class MachineAvoidDirectSelection(MachineAvoidSelectionBase):
    """
    Machine/avoid direct selection class. Represents a group of direct selections that
    the users can make (faces, bodies, components and higher level entities).
    Provides access to the stored selections.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MachineAvoidDirectSelection:
        return MachineAvoidDirectSelection()
    @property
    def inputGeometry(self) -> list[core.Base]:
        """
        Get or set the value of the input geometry.
        """
        return [core.Base()]
    @inputGeometry.setter
    def inputGeometry(self, value: list[core.Base]):
        """
        Get or set the value of the input geometry.
        """
        pass

class MultiAxisCombinationDPMFeedrateSettings(MultiAxisDPMFeedrateSettings):
    """
    Specialization of MultiAxisDPMFeedrateSettings for degrees per minute feedrates that require a combination of linear and rotary movements.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MultiAxisCombinationDPMFeedrateSettings:
        return MultiAxisCombinationDPMFeedrateSettings()
    @property
    def pulseWeight(self) -> float:
        """
        The pulse weight ratio for the rotary axes when DPM feedrates are output as a combination of linear and rotary movements.
        The pulse weight is a scale factor based on the rotary axes accuracy compared to the linear axes accuracy.
        For example, it should be set to .1 when the linear axes are output on .0001 increments and the rotary axes on .001 increments.
        """
        return float()
    @pulseWeight.setter
    def pulseWeight(self, value: float):
        """
        The pulse weight ratio for the rotary axes when DPM feedrates are output as a combination of linear and rotary movements.
        The pulse weight is a scale factor based on the rotary axes accuracy compared to the linear axes accuracy.
        For example, it should be set to .1 when the linear axes are output on .0001 increments and the rotary axes on .001 increments.
        """
        pass

class PocketRecognitionSelection(CurveSelection):
    """
    Pocket type curve selection. It searches for pockets matching the criteria on the selected bodies
    The result of the value property call may contain duplicates.
    See also RecognizedPockets for the ability to analyze the pockets
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PocketRecognitionSelection:
        return PocketRecognitionSelection()
    @property
    def isSetupModelSelected(self) -> bool:
        """
        Flag to include all B-Rep bodies set as the setup models.
        """
        return bool()
    @isSetupModelSelected.setter
    def isSetupModelSelected(self, value: bool):
        """
        Flag to include all B-Rep bodies set as the setup models.
        """
        pass
    @property
    def areHolesIncluded(self) -> bool:
        """
        Flag to interpret holes as pockets.
        """
        return bool()
    @areHolesIncluded.setter
    def areHolesIncluded(self, value: bool):
        """
        Flag to interpret holes as pockets.
        """
        pass
    @property
    def minimumHoleDiameter(self) -> float:
        """
        Lower bound for the diameter for the hole detection. It can only be set if areHoldeIncluded is set to true.
        """
        return float()
    @minimumHoleDiameter.setter
    def minimumHoleDiameter(self, value: float):
        """
        Lower bound for the diameter for the hole detection. It can only be set if areHoldeIncluded is set to true.
        """
        pass
    @property
    def minimumCornerRadius(self) -> float:
        """
        The smallest corner radius that can appear in a pocket to machine.
        """
        return float()
    @minimumCornerRadius.setter
    def minimumCornerRadius(self, value: float):
        """
        The smallest corner radius that can appear in a pocket to machine.
        """
        pass
    @property
    def maximumCornerRadius(self) -> float:
        """
        The largest corner radius that can appear in a pocket to machine.
        """
        return float()
    @maximumCornerRadius.setter
    def maximumCornerRadius(self, value: float):
        """
        The largest corner radius that can appear in a pocket to machine.
        """
        pass
    @property
    def minimumPocketDepth(self) -> float:
        """
        The shallowest pocket (measured from top to bottom) to machine.
        """
        return float()
    @minimumPocketDepth.setter
    def minimumPocketDepth(self, value: float):
        """
        The shallowest pocket (measured from top to bottom) to machine.
        """
        pass
    @property
    def maximumPocketDepth(self) -> float:
        """
        The deepest pocket (measured from top to bottom) to machine.
        """
        return float()
    @maximumPocketDepth.setter
    def maximumPocketDepth(self, value: float):
        """
        The deepest pocket (measured from top to bottom) to machine.
        """
        pass

class PocketSelection(CurveSelection):
    """
    Pocket type for a curve selection. Allows planar BREP face selections for the input geometry.
    Overrides the GeometrySelection's the value property to include other faces if isSelectingSamePlaneFaces is set to true and the selection has been applied.
    The result of the value property call may contain duplicates.
    Note: selecting arbitrary faces, only planar faces are actually added to the list of faces to work with.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PocketSelection:
        return PocketSelection()
    @property
    def extensionMethod(self) -> ExtensionMethods:
        """
        The desired extension method. TangentExtension by default.
        """
        return ExtensionMethods()
    @extensionMethod.setter
    def extensionMethod(self, value: ExtensionMethods):
        """
        The desired extension method. TangentExtension by default.
        """
        pass
    @property
    def isSelectingSamePlaneFaces(self) -> bool:
        """
        True if all planar faces lying in the same plane as the selected face should be automatically selected as well.
        False by default.
        """
        return bool()
    @isSelectingSamePlaneFaces.setter
    def isSelectingSamePlaneFaces(self, value: bool):
        """
        True if all planar faces lying in the same plane as the selected face should be automatically selected as well.
        False by default.
        """
        pass

class SilhouetteSelection(CurveSelection):
    """
    Represents a silhouette type of curve selection. Allows BRepBody selections for the input geometry.
    Overrides the GeometrySelection's the value property to include setup bodies if isSetupModelSelected is set to true and the selection has been applied.
    The results may contain duplicates.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SilhouetteSelection:
        return SilhouetteSelection()
    @property
    def loopType(self) -> LoopTypes:
        """
        Desired loop type. The default is AllLoops.
        """
        return LoopTypes()
    @loopType.setter
    def loopType(self, value: LoopTypes):
        """
        Desired loop type. The default is AllLoops.
        """
        pass
    @property
    def sideType(self) -> SideTypes:
        """
        Desired side type. The default is StartOutside.
        """
        return SideTypes()
    @sideType.setter
    def sideType(self, value: SideTypes):
        """
        Desired side type. The default is StartOutside.
        """
        pass
    @property
    def isSetupModelSelected(self) -> bool:
        """
        Flag to include all B-Rep bodies set as the setup models.
        """
        return bool()
    @isSetupModelSelected.setter
    def isSetupModelSelected(self, value: bool):
        """
        Flag to include all B-Rep bodies set as the setup models.
        """
        pass
    @property
    def silhouetteTolerance(self) -> float:
        """
        The distance the silhouette can differ from the model.
        This helps in creating a silhouette in situations where one cannot be created because of open contours.Generally, the tolerance value you use should be smaller than or equal to the machining tolerance.
        """
        return float()
    @silhouetteTolerance.setter
    def silhouetteTolerance(self, value: float):
        """
        The distance the silhouette can differ from the model.
        This helps in creating a silhouette in situations where one cannot be created because of open contours.Generally, the tolerance value you use should be smaller than or equal to the machining tolerance.
        """
        pass

class SketchSelection(CurveSelection):
    """
    Represents a sketch curve selection. It allows entire sketches for the input geometry.
    The result of the value property call may contain duplicates.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchSelection:
        return SketchSelection()
    @property
    def loopType(self) -> LoopTypes:
        """
        Property to get and set the desired loop type. The default is AllLoops.
        """
        return LoopTypes()
    @loopType.setter
    def loopType(self, value: LoopTypes):
        """
        Property to get and set the desired loop type. The default is AllLoops.
        """
        pass
    @property
    def sideType(self) -> SideTypes:
        """
        Property to get and set the desired side type. The default is StartOutside.
        """
        return SideTypes()
    @sideType.setter
    def sideType(self, value: SideTypes):
        """
        Property to get and set the desired side type. The default is StartOutside.
        """
        pass
