# 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

class ArrangePriorities():
    """
    Defines the different types of arrange priorities that are supported.
    """
    def __init__(self):
        pass
    VeryLowArrangePriority = 0
    LowArrangePriority = 1
    MediumArrangePriority = 2
    HighArrangePriority = 3
    VeryHighArrangePriority = 4

class ArrangeRotationTypes():
    """
    Defines the different types of rotations supported.
    """
    def __init__(self):
        pass
    GlobalArrangeRotationType = 0
    AllRotationsArrangeRotationType = 1
    NoneArrangeRotationType = 2
    Only180ArrangeRotationType = 3
    Only90And270ArrangeRotationType = 4

class ArrangeSolverTypes():
    """
    Defines the different types of arrangement solvers that are supported.
    """
    def __init__(self):
        pass
    Arrange2DTrueShapeSolverType = 0
    Arrange2DRectangularSolverType = 1
    Arrange3DSolverType = 2

class AutoLookAtSketchSettings():
    """
    The different options for the AutoLookAtSketch preference setting.
    """
    def __init__(self):
        pass
    OffAutoLookAtSketchSetting = 0
    UserCameraAutoLookAtSketchSetting = 1
    AlwaysOrthographicAutoLookAtSketchSetting = 2

class BendPositionTypes():
    """
    Bend location types used for creating flanges and hems.
    """
    def __init__(self):
        pass
    LegacyBendPositionType = 0
    OutsideBendPositionType = 1
    InsideBendPositionType = 2
    StartEdgeBendPositionType = 3
    TangentToSideBendPositionType = 4

class BendReliefShapes():
    """
    The bend relief shapes used for a single bend.
    """
    def __init__(self):
        pass
    StraightBendReliefShape = 0
    TearBendReliefShape = 1
    RoundBendReliefShape = 2

class BooleanTypes():
    """
    Defines the different type of boolean operations that are supported.
    """
    def __init__(self):
        pass
    DifferenceBooleanType = 0
    IntersectionBooleanType = 1
    UnionBooleanType = 2

class BossAlignmentTypes():
    """
    List of different types of boss alignment shape types.
    """
    def __init__(self):
        pass
    BossAlignFlat = 0
    BossAlignStepOut = 1
    BossAlignStepIn = 2

class BossHoleExtentTypes():
    """
    List of the different types of boss hole extent types.
    """
    def __init__(self):
        pass
    BossHoleThrough = 0
    BossBlindFull = 1
    BossBlindDepth = 2

class BossRibExtentTypes():
    """
    List of different types of boss rib extent type.
    """
    def __init__(self):
        pass
    RibSizeByLength = 0
    RibSizeToNext = 1
    RibSuppressed = 2

class BossRibShapeTypes():
    """
    List of different types of boss rib shape.
    """
    def __init__(self):
        pass
    BossRibShapeNone = 0
    BossRibShapeChamfer = 1
    BossRibShapeFillet = 2

class BossShapeTypes():
    """
    List of different boss shank shape types.
    """
    def __init__(self):
        pass
    BossBlank = 0
    BossConstDiameter = 1
    BossConstThickness = 2

class BoundingBoxEntityTypes():
    """
    Specifies the various types of entities that can be included in bounding box calculations.
    This is a bitwise friendly enum so types can be combined to specify more than one type.
    """
    def __init__(self):
        pass
    AllEntitiesBoundingBoxEntityType = 0
    SolidBRepBodyBoundingBoxEntityType = 1
    SurfaceBodyBoundingBoxEntityType = 2
    MeshBodyBoundingBoxEntityType = 4
    SketchBoundingBoxEntityType = 8
    ConstructionBoundingBoxEntityType = 16

class BRepConvertOptions():
    """
    Defines the various options when converting the geometry of a B-Rep body or face
    to NURBS. This is used by the convert method of the BRepBody and BRepFace objects.
    """
    def __init__(self):
        pass
    ProceduralToNURBSConversion = 0
    AnalyticsToNURBSConversion = 1
    PlanesToNURBSConversion = 2
    SplitPeriodicFacesConversion = 4

class BRepEntityTypes():
    """
    Used by the findBRepUsingRay and findBRepUsingPoint methods to specify the desired return type.
    """
    def __init__(self):
        pass
    BRepBodyEntityType = 0
    BRepFaceEntityType = 1
    BRepEdgeEntityType = 2
    BRepVertexEntityType = 3

class CalculationAccuracy():
    """
    The different accuracy settings for calculating area and physical property related values.
    The higher the accuracy setting, the longer it will take to perform the calculations.
    """
    def __init__(self):
        pass
    LowCalculationAccuracy = 0
    MediumCalculationAccuracy = 1
    HighCalculationAccuracy = 2
    VeryHighCalculationAccuracy = 3

class ChainedCurveOptions():
    """
    Controls options used when creating a Path and determining the rules for how curves are
    considered to be chained or connected.
    """
    def __init__(self):
        pass
    noChainedCurves = 0
    connectedChainedCurves = 1
    tangentChainedCurves = 2
    openEdgesChainedCurves = 3
    tangentAndOpenEdgesChainedCurves = 4

class ChamferCornerTypes():
    """
    Specifies the type of corner to model when multiple edges come together at a vertex.
    """
    def __init__(self):
        pass
    ChamferCornerType = 0
    MiterCornerType = 1
    BlendCornertype = 2

class ClearanceHoleFits():
    """
    List of the different types of fit that a clearance hole can be.
    """
    def __init__(self):
        pass
    CloseClearanceHoleFit = 0
    NormalClearanceHoleFit = 1
    LooseClearanceHoleFit = 2

class CoilFeatureSectionPositions():
    """
    List of the section positions of coil feature.
    """
    def __init__(self):
        pass
    InsideCoilFeatureSectionPosition = 0
    OnCenterCoilFeatureSectionPosition = 1
    OutsideCoilFeatureSectionPosition = 2

class CoilFeatureSectionTypes():
    """
    List of the section types of coil primitive feature.
    """
    def __init__(self):
        pass
    CircularCoilFeatureSectionType = 0
    SquareCoilFeatureSectionType = 1
    TriangularExternalCoilFeatureSectionType = 2
    TriangularInternalCoilFeatureSectionType = 3

class CoilFeatureTypes():
    """
    List of the coil types.
    """
    def __init__(self):
        pass
    RevolutionsAndHeightCoilFeatureType = 0
    RevolutionsAndPitchCoilFeatureType = 1
    HeightAndPitchCoilFeatureType = 2
    SpiralCoilFeatureType = 3

class ConfigurationClearanceHoleColumns():
    """
    Enum that defines the valid combinations of clearance hole columns that can be configured.
    """
    def __init__(self):
        pass
    Standard_Type_Size_ClearanceHoleColumns = 0
    Type_Size_ClearanceHoleColumns = 1
    Size_ClearanceHoleColumns = 2

class ConfigurationFeatureAspectTypes():
    """
    Defines a list of all of the different aspects of a feature that can be configured.
    """
    def __init__(self):
        pass
    ThreadTypeFeatureAspectType = 0
    ThreadSizeFeatureAspectType = 1
    ThreadDesignationFeatureAspectType = 2
    ThreadClassFeatureAspectType = 3
    ThreadModeledFeatureAspectType = 4
    ThreadFullLengthFeatureAspectType = 5
    ThreadIsRightHandedFeatureAspectType = 6
    JointFlipFeatureAspectType = 7
    JointSnapOneFeatureAspectType = 8
    JointSnapTwoFeatureAspectType = 9
    ClearanceHoleStandardFeatureAspectType = 10
    ClearanceHoleTypeFeatureAspectType = 11
    ClearanceHoleSizeFeatureAspectType = 12
    ClearanceHoleFitFeatureAspectType = 13

class ConfigurationThreadColumns():
    """
    Enum that defines the valid combinations of thread columns that can be configured.
    """
    def __init__(self):
        pass
    ThreadType_Size_Designation_ClassColumns = 0
    ThreadSize_Designation_ClassColumns = 1
    ThreadDesignation_ClassColumns = 2
    ThreadClassColumns = 3
    TaperedThreadType_Size_DesignationColumns = 4
    TaperedSize_DesignationColumns = 5
    TaperedDesignationColumns = 6

class CornerBendTransitionTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The different bend transition types for corner closures.
    """
    def __init__(self):
        pass
    SmoothCornerBendTransitionType = 0
    StraightLineCornerBendTransitionType = 1
    TrimToBendCornerBendTransitionType = 2

class CornerClosureFeatureDefinitionTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The different types of corner closures that can be created.
    """
    def __init__(self):
        pass
    UndefinedCornerClosureFeatureDefinitionType = 0
    TwoBendCornerClosureFeatureDefinitionType = 1
    ThreeBendCornerClosureFeatureDefinitionType = 2

class CornerThreeBendReliefShapeTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The different relief shapes for three-bend corner closures.
    """
    def __init__(self):
        pass
    NoReplacementCornerThreeBendReliefShapeType = 0
    IntersectionCornerThreeBendReliefShapeType = 1
    FullRoundCornerThreeBendReliefShapeType = 2
    RoundWithRadiusCornerThreeBendReliefShapeType = 3

class CornerTwoBendReliefPlacementTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The different placement types for two-bend corner relief.
    """
    def __init__(self):
        pass
    TangentCornerTwoBendReliefPlacementType = 0
    IntersectionCornerTwoBendReliefPlacementType = 1
    VertexCornerTwoBendReliefPlacementType = 2

class CornerTwoBendReliefShapeTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The different relief shapes for two-bend corner closures.
    """
    def __init__(self):
        pass
    RoundCornerTwoBendReliefShapeType = 0
    SquareCornerTwoBendReliefShapeType = 1
    TearCornerTwoBendReliefShapeType = 2
    TrimToBendCornerTwoBendReliefShapeType = 3
    LinearWeldCornerTwoBendReliefShapeType = 4
    ArcWeldCornerTwoBendReliefShapeType = 5
    LaserWeldCornerTwoBendReliefShapeType = 6

class CustomGraphicsBillBoardStyles():
    """
    Specifies the different styles that can be used to control billboarding.
    """
    def __init__(self):
        pass
    ScreenBillBoardStyle = 1
    AxialBillBoardStyle = 2
    RightReadingBillBoardStyle = 3

class CustomGraphicsCullModes():
    """
    The various culling modes supported by custom graphics.
    """
    def __init__(self):
        pass
    CustomGraphicsCullFront = 0
    CustomGraphicsCullBack = 1
    CustomGraphicsCullNone = 2

class CustomGraphicsPointTypes():
    """
    A list of predefined point images that you can use for a CustomGraphicsPointSet.
    """
    def __init__(self):
        pass
    UserDefinedCustomGraphicsPointType = 0
    PointCloudCustomGraphicsPointType = 1

class DefaultDesignTypeOptions():
    """
    The valid options for the default modeling type setting.
    """
    def __init__(self):
        pass
    PromptForDesignTypeOption = 0
    DirectDesignTypeOption = 1
    ParametricDesignTypeOption = 2

class DefaultWorkspaces():
    """
    The valid options for the Default workspaces setting.
    """
    def __init__(self):
        pass
    ModelWorkspace = 0
    SculptWorkspace = 1
    PatchWorkspace = 2

class DeleteMeError():
    """
    Specific error types for DeleteMe methods.
    """
    def __init__(self):
        pass
    ParameterReferencedByOtherParameterError = 200

class DesignIntentTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The different types of design intent.
    """
    def __init__(self):
        pass
    PartDesignIntentType = 0
    AssemblyDesignIntentType = 1
    HybridDesignIntentType = 2

class DesignTypes():
    """
    Fusion design types
    """
    def __init__(self):
        pass
    DirectDesignType = 0
    ParametricDesignType = 1

class DimensionOrientations():
    """
    The different dimension orientations.
    """
    def __init__(self):
        pass
    AlignedDimensionOrientation = 0
    HorizontalDimensionOrientation = 1
    VerticalDimensionOrientation = 2

class DimensionStrategyTypes():
    """
    Defines the available dimension strategies for auto constraining sketches. These strategies
    control how dimensions are generated when automatically constraining sketch geometry.
    """
    def __init__(self):
        pass
    DefaultDimensionStrategyType = 0
    ChainDimensionStrategyType = 1
    BaselineDimensionStrategyType = 2
    EdgeAndAlignedDimensionStrategyType = 3
    SymmetricAndChainDimensionStrategyType = 4
    SymmetricAndBaselineDimensionStrategyType = 5
    EdgeAndAlignedHigherAngleDimPriorityDimensionStrategyType = 6
    EdgeAndAlignedWithBaselineDimensionStrategyType = 7

class DistanceUnits():
    """
    Valid unit types for distance.
    """
    def __init__(self):
        pass
    MillimeterDistanceUnits = 0
    CentimeterDistanceUnits = 1
    MeterDistanceUnits = 2
    InchDistanceUnits = 3
    FootDistanceUnits = 4
    YardDistanceUnits = 5
    MicronDistanceUnits = 6
    HectometerDistanceUnits = 7
    MileDistanceUnits = 8
    MilDistanceUnits = 9
    NauticalMileDistanceUnits = 10

class ExpressionError():
    """
    The expression of the parameter. Setting this can fail because of an invalid expression or
    because a cyclic reference is created between parameters.
    """
    def __init__(self):
        pass
    CyclicParameterReferenceError = 200

class ExtentDirections():
    """
    List of the valid extent directions.
    """
    def __init__(self):
        pass
    PositiveExtentDirection = 0
    NegativeExtentDirection = 1
    SymmetricExtentDirection = 2

class FeatureExtentTypes():
    """
    Used to indicate which type of extent is used for a feature.
    """
    def __init__(self):
        pass
    OneSideFeatureExtentType = 0
    TwoSidesFeatureExtentType = 1
    SymmetricFeatureExtentType = 2

class FeatureHealthStates():
    """
    The various states that a feature can be in. This is used for the
    states of modeling features, construction geometry, and sketches.
    """
    def __init__(self):
        pass
    HealthyFeatureHealthState = 0
    WarningFeatureHealthState = 1
    ErrorFeatureHealthState = 2
    SuppressedFeatureHealthState = 3
    RolledBackFeatureHealthState = 4
    UnknownFeatureHealthState = 5

class FeatureOperations():
    """
    List of the different operations a feature can perform.
    """
    def __init__(self):
        pass
    JoinFeatureOperation = 0
    CutFeatureOperation = 1
    IntersectFeatureOperation = 2
    NewBodyFeatureOperation = 3
    NewComponentFeatureOperation = 4

class FilletFeatureTypes():
    """
    List of the fillet feature types.
    """
    def __init__(self):
        pass
    FilletFeatureType = 0
    RuleFilletFeatureType = 1
    FullRoundFilletFeatureType = 2

class HemFeatureDefinitionTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The different types of hems that can be created.
    """
    def __init__(self):
        pass
    UndefinedHemFeatureDefinitionType = 0
    FlatHemFeatureDefinitionType = 1
    OpenHemFeatureDefinitionType = 2
    RolledHemFeatureDefinitionType = 3
    TeardropHemFeatureDefinitionType = 4
    RopeHemFeatureDefinitionType = 5
    DoubleHemFeatureDefinitionType = 6

class HoleEdgePositions():
    """
    List of the valid edge positions for holes.
    """
    def __init__(self):
        pass
    EdgeStartPointPosition = 0
    EdgeMidPointPosition = 1
    EdgeEndPointPosition = 2

class HoleTapTypes():
    """
    List of the valid tap types for holes.
    """
    def __init__(self):
        pass
    SimpleHoleTapType = 0
    ClearanceHoleTapType = 1
    TappedHoleTapType = 2
    TaperTappedHoleTapType = 3

class HoleTypes():
    """
    List of the different types of holes.
    """
    def __init__(self):
        pass
    SimpleHoleType = 0
    CounterboreHoleType = 1
    CountersinkHoleType = 2

class InterLoopDimensionStrategyTypes():
    """
    Defines dimension strategies for sketches with multiple loops. These strategies control how
    dimensions are created between different loops (profiles) within the same sketch.
    """
    def __init__(self):
        pass
    DefaultInterLoopDimensionStrategyType = 0
    ChainInterLoopDimensionStrategyType = 1
    BaselineInterLoopDimensionStrategyType = 2

class JointDirections():
    """
    Specifies the different types of directions that can be used to define directions of a joint.
    """
    def __init__(self):
        pass
    XAxisJointDirection = 0
    YAxisJointDirection = 1
    ZAxisJointDirection = 2
    CustomJointDirection = 3

class JointGeometryTypes():
    """
    List of the different types of ways that geometry for a joint can be defined.
    """
    def __init__(self):
        pass
    JointConstructionPointGeometry = 0
    JointSketchPointGeometry = 1
    JointBRepVertexGeometry = 2
    JointBRepEdgeGeometry = 3
    JointSketchCurveGeometry = 4
    JointProfileGeometry = 5
    JointPlanarBRepFaceGeometry = 6
    JointNonPlanarBRepFaceGeometry = 7
    JointBetweenTwoPlanesGeometry = 8
    JointByTwoEdgeIntersectionGeometry = 9
    JointTangentBRepFaceGeometry = 10
    JointTangentBRepFaceEdgeGeometry = 11

class JointKeyPointTypes():
    """
    List of the various keypoints of geometry that can be used when defining joint geometry.
    """
    def __init__(self):
        pass
    StartKeyPoint = 0
    MiddleKeyPoint = 1
    EndKeyPoint = 2
    CenterKeyPoint = 3

class JointMotionTypes():
    """
    List of the various types of motions of joints.
    """
    def __init__(self):
        pass
    BallJointPitchMotionType = 0
    BallJointRollMotionType = 1
    BallJointYawMotionType = 2
    CylindricalJointRotateMotionType = 3
    CylindricalJointSlideMotionType = 4
    PinSlotJointRotateMotionType = 5
    PinSlotJointSlideMotionType = 6
    PlanarJointRotateMotionType = 7
    PlanarJointSlideOneMotionType = 8
    PlanarJointSlideTwoMotionType = 9
    RevoluteJointRotateMotionType = 10
    SliderJointSlideMotionType = 11

class JointQuadrantAngleTypes():
    """
    List of the various angle types of geometry that can be used when defining joint geometry
    on cylinder or cone, sphere and torus
    """
    def __init__(self):
        pass
    StartJointQuadrantAngleType = 0
    QuarterJointQuadrantAngleType = 1
    MiddleJointQuadrantAngleType = 2
    ThirdQuarterJointQuadrantAngleType = 3

class JointTangentFaceEdgePointTypes():
    """
    List of the tangent face types, including cylinder or cone, sphere, torus and spline.
    """
    def __init__(self):
        pass
    StartJointTangentFaceEdgePointType = 0
    QuarterJointTangentFaceEdgePointType = 1
    MiddleJointTangentFaceEdgePointType = 2
    ThirdQuarterJointTangentFaceEdgePointType = 3
    EndJointTangentFaceEdgePointType = 4

class JointTangentFaceTypes():
    """
    List of the tangent face types, including cylinder or cone, sphere, torus and spline.
    """
    def __init__(self):
        pass
    NoneJointTangentFaceType = 0
    CylinderOrConeJointTangentFaceType = 1
    SphereJointTangentFaceType = 2
    TorusJointTangentFaceType = 3
    SplineJointTangentFaceType = 4

class JointTypes():
    """
    List of the various types of joints.
    """
    def __init__(self):
        pass
    RigidJointType = 0
    RevoluteJointType = 1
    SliderJointType = 2
    CylindricalJointType = 3
    PinSlotJointType = 4
    PlanarJointType = 5
    BallJointType = 6
    InferredJointType = 7

class LeaderLineNotePlaneTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Specifies the plane type used for Leader Line Note PMI positioning.
    
    This defines whether there is a referenced face/edge used in generating the plane positioning.
    """
    def __init__(self):
        pass
    UnknownLeaderLineNotePlaneType = 0
    NormalToFaceLeaderLineNotePlaneType = 1
    NormalToCustomFaceLeaderLineNotePlaneType = 2
    NormalToCircularEdgeLeaderLineNotePlaneType = 3
    AxisCylinderAndConeLeaderLineNotePlaneType = 4
    PrincipalXYLeaderLineNotePlaneType = 5
    PrincipalYZLeaderLineNotePlaneType = 6
    PrincipalZXLeaderLineNotePlaneType = 7

class LinearDiameterDimensionPreferenceTypes():
    """
    Defines preferences for linear diameter dimensions in sketches. Linear diameter dimensions
    measure the diameter of circular or rotational features using a centerline and parallel edges
    or points, rather than directly dimensioning a circle or arc. The dimension displays with the
    Ø symbol and measures the full diameter across the feature. This dimensioning style is commonly
    used for turned components and rotational features in machining drawings, where you dimension
    the diameter using a centerline as the reference rather than the circular geometry itself.
    """
    def __init__(self):
        pass
    DefaultLinearDiameterDimensionPreferenceType = 0
    PreferLinearDiameterDimensionPreferenceType = 1
    AvoidLinearDiameterDimensionPreferenceType = 2

class LineStylePatterns():
    """
    Specifies the line styles that can be applied to custom graphics lines and curves.
    """
    def __init__(self):
        pass
    continuousLineStylePattern = 0
    centerLineStylePattern = 1
    dashedLineStylePattern = 2
    dotLineStylePattern = 3
    hiddenLineStylePattern = 4
    phantomLineStylePattern = 5
    tracksLineStylePattern = 6
    zigzagLineStylePattern = 7

class LocalRenderStates():
    """
    The different states of a local rendering.
    """
    def __init__(self):
        pass
    QueuedLocalRenderState = 0
    ProcessingLocalRenderState = 1
    FinishedLocalRenderState = 2
    FailedLocalRenderState = 3

class LoftEdgeAlignments():
    """
    List of Loft Edge Alignment Options
    """
    def __init__(self):
        pass
    FreeEdgesLoftEdgeAlignment = 0
    AlignEdgesLoftEdgeAlignment = 1
    AlignToSurfaceLoftEdgeAlignment = 2

class LoftRailEdgeConditions():
    """
    Defines the different conditions that can be applied to a loft rail
    when the rail entity is defined by BRepEdge objects.
    """
    def __init__(self):
        pass
    G0LoftRailEdgeCondition = 0
    G1LoftRailEdgeCondition = 1
    G2LoftRailEdgeCondition = 2

class MassUnits():
    """
    Valid unit types for mass.
    """
    def __init__(self):
        pass
    GramMassUnits = 0
    KilogramMassUnits = 1
    PoundMassUnits = 2
    OunceMassUnits = 3
    TonMassUnits = 4
    SlugMassUnits = 5

class MeshCombineAlgorithmTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Specify the combine method for the mesh.
    """
    def __init__(self):
        pass
    LegacyMeshCombineAlgorithmType = 0
    EnhancedMeshCombineAlgorithmType = 1

class MeshCombineOperationTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Specify the combine method for the mesh.
    """
    def __init__(self):
        pass
    JoinMeshCombineType = 0
    CutMeshCombineType = 1
    IntersectMeshCombineType = 2
    MergeMeshCombineType = 3

class MeshConvertAccuracyTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Specify the resolution for the organic mesh conversion if ByAccuracyMeshConvertResolutionType is selected
    """
    def __init__(self):
        pass
    LowMeshConvertAccuracyType = 0
    MediumMeshConvertAccuracyType = 1
    HighMeshConvertAccuracyType = 2
    PreciseMeshConvertAccuracyType = 3

class MeshConvertMethodTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Specify the convert method for the mesh.
    """
    def __init__(self):
        pass
    FacetedMeshConvertMethodType = 0
    PrismaticMeshConvertMethodType = 1
    OrganicMeshConvertMethodType = 2

class MeshConvertOperationTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Specify the operation method for the mesh conversion.
    """
    def __init__(self):
        pass
    ParametricFeatureMeshConvertOperationType = 0
    BaseFeatureMeshConvertOperationType = 1

class MeshConvertResolutionTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Specify the resolution method for the organic mesh conversion.
    """
    def __init__(self):
        pass
    ByAccuracyMeshConvertResolutionType = 0
    ByFacetNumberMeshConvertResolutionType = 1

class MeshGenerateFaceGroupsMethodTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Specify the generate face group method for the mesh.
    """
    def __init__(self):
        pass
    FastGenerateFaceGroupsType = 0
    AccurateGenerateFaceGroupsType = 1

class MeshReduceMethodTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Specify the reduce method for the mesh.
    """
    def __init__(self):
        pass
    AdaptiveReduceType = 0
    UniformReduceType = 1

class MeshReduceTargetTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Specify what the target criteria for the reduction should be.
    """
    def __init__(self):
        pass
    MaximumDeviationMeshReduceTargetType = 0
    ProportionMeshReduceTargetType = 1
    FaceCountMeshReduceTargetType = 2

class MeshRefinementSettings():
    """
    The different refinement settings supported when exporting the design as an STL or 3MF file.
    """
    def __init__(self):
        pass
    MeshRefinementHigh = 0
    MeshRefinementMedium = 1
    MeshRefinementLow = 2
    MeshRefinementCustom = 3

class MeshRemeshMethodTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Specify the re-mesh method for the mesh.
    """
    def __init__(self):
        pass
    AdaptiveRemeshType = 0
    UniformRemeshType = 1

class MeshRepairRebuildTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Specify the method for the rebuild type of mesh repair. If AccurateMeshRepairRebuildType is chosen,
    an offset can be set.
    """
    def __init__(self):
        pass
    FastMeshRepairRebuildType = 0
    PreserveSharpEdgesMeshRepairRebuildType = 1
    AccurateMeshRepairRebuildType = 2
    BlockyMeshRepairRebuildType = 3
    AdaptiveMeshRepairRebuildType = 4
    AdaptivePreserveSharpEdgesMeshRepairRebuildType = 5

class MeshRepairTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Specify the main repair type for the mesh. If RebuildMeshRepairType is chosen, other parameters can be set.
    """
    def __init__(self):
        pass
    CloseHolesMeshRepairType = 0
    StitchAndRemoveMeshRepairType = 1
    WrapMeshRepairType = 2
    RebuildMeshRepairType = 3
    OneTouchFixMeshRepairType = 4

class MeshSeparateTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Specifies the output options for separating a mesh body. Only valid if the input is a mesh body.
    """
    def __init__(self):
        pass
    ShellMeshSeparateType = 0
    FaceGroupMeshSeparateType = 1

class MeshUnits():
    """
    The unit types that can be specified when importing a .stl or .obj file as a mesh.
    """
    def __init__(self):
        pass
    CentimeterMeshUnit = 0
    MillimeterMeshUnit = 1
    MeterMeshUnit = 2
    InchMeshUnit = 3
    FootMeshUnit = 4

class OffsetCornerTypes():
    """
    Specifies the different types of corners that can be created when offsetting a wire body.
    These settings are used when the curves are offset outwards, which creates a gap at the
    corner. These represent the three ways the gap is filled.
    """
    def __init__(self):
        pass
    CircularOffsetCornerType = 0
    LinearOffsetCornerType = 1
    ExtendedOffsetCornerType = 2

class ParameterValueTypes():
    """
    Specifies the different types of values that a parameter can be.
    """
    def __init__(self):
        pass
    NumericParameterValueType = 0
    TextParameterValueType = 1

class PatternComputeOptions():
    """
    List of the compute options for mirroring and patterning features in the parametric modeling environment.
    """
    def __init__(self):
        pass
    OptimizedPatternCompute = 0
    IdenticalPatternCompute = 1
    AdjustPatternCompute = 2

class PatternDistanceType():
    """
    Defines the different ways to specify the spacing between elements in a pattern.
    """
    def __init__(self):
        pass
    ExtentPatternDistanceType = 0
    SpacingPatternDistanceType = 1

class PatternEntityTypes():
    """
    Specifies the different types of entities that can be patterned.
    """
    def __init__(self):
        pass
    FacesPatternType = 0
    FeaturesPatternType = 1
    BodiesPatternType = 2
    OccurrencesPatternType = 3
    ConstructionGeometryPatternType = 4

class PipeSectionTypes():
    """
    List of the different section types of a Pipe.
    """
    def __init__(self):
        pass
    CircularPipeSectionType = 0
    SquarePipeSectionType = 1
    TriangularPipeSectionType = 2

class PMIAngleRelatorTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Defines the measured angle on an angular dimension.
    """
    def __init__(self):
        pass
    InvalidPMIAngleRelatorType = 0
    EqualPMIAngleRelatorType = 1
    LargePMIAngleRelatorType = 2
    SmallPMIAngleRelatorType = 3

class PMIDatumModifierTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Specifies the various types of datum modifiers that can be associated with a datum reference.
    """
    def __init__(self):
        pass
    FreeStatePMIDatumModifierType = 0
    BasicPMIDatumModifierType = 1
    TranslationPMIDatumModifierType = 2
    LeastMaterialRequirementPMIDatumModifierType = 3
    MaximumMaterialRequirementPMIDatumModifierType = 4
    PointPMIDatumModifierType = 5
    LinePMIDatumModifierType = 6
    PlanePMIDatumModifierType = 7
    OrientationPMIDatumModifierType = 8
    AnyCrossSectionPMIDatumModifierType = 9
    AnyLongitudinalSectionPMIDatumModifierType = 10
    ContactingFeaturePMIDatumModifierType = 11
    DistancingVariablePMIDatumModifierType = 12
    DegreeOfFreedomConstraintXPMIDatumModifierType = 13
    DegreeOfFreedomConstraintYPMIDatumModifierType = 14
    DegreeOfFreedomConstraintZPMIDatumModifierType = 15
    DegreeOfFreedomConstraintUPMIDatumModifierType = 16
    DegreeOfFreedomConstraintVPMIDatumModifierType = 17
    DegreeOfFreedomConstraintWPMIDatumModifierType = 18
    MinorDiameterPMIDatumModifierType = 19
    MajorDiameterPMIDatumModifierType = 20
    PitchDiameterPMIDatumModifierType = 21
    CircularOrCylindricalPMIDatumModifierType = 22
    DistancePMIDatumModifierType = 23
    ProjectedPMIDatumModifierType = 24
    SphericalPMIDatumModifierType = 25

class PMIDatumTargetTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Specifies the various types of a datum target.
    """
    def __init__(self):
        pass
    PointPMIDatumTargetType = 0
    LinePMIDatumTargetType = 1
    AreaPMIDatumTargetType = 2
    CirclePMIDatumTargetType = 3
    RectanglePMIDatumTargetType = 4

class PMILaySymbolTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Defines the lay symbol type, which indicates the direction of predominant surface pattern.
    """
    def __init__(self):
        pass
    NonePMILaySymbolType = 0
    ParallelPMILaySymbolType = 1
    PerpendicularPMILaySymbolType = 2
    CrosshatchPMILaySymbolType = 3
    MultidirectionalPMILaySymbolType = 4
    CircularPMILaySymbolType = 5
    RadialPMILaySymbolType = 6
    ParticulatePMILaySymbolType = 7

class PMISegmentTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Specifies the various types of PMISegment that can be used to define the text of a PMI.
    Used by both the PMIInput and PMICreatedAnnotation.
    """
    def __init__(self):
        pass
    TextPMISegmentType = 0
    SymbolPMISegmentType = 1
    LineBreakPMISegmentType = 2

class PMIStandardTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Specifies the PMI standard types.
    """
    def __init__(self):
        pass
    ASMEPMIStandardType = 0
    ISOPMIStandardType = 1

class PMISurfaceTextureParameterTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Specifies the surface texture parameter type.
    """
    def __init__(self):
        pass
    MeanRoughnessPMISurfaceTextureParameterType = 0
    MaximumRoughnessDepthPMISurfaceTextureParameterType = 1
    MeanRoughnessDepthPMISurfaceTextureParameterType = 2
    WavinessPMISurfaceTextureParameterType = 3

class PMISurfaceTextureStandardTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Specifies the surface texture standard used for the PMI.
    """
    def __init__(self):
        pass
    UnknownPMISurfaceTextureStandardType = 0
    JISPMISurfaceTextureStandardType = 1
    ISOPMISurfaceTextureStandardType = 2
    DINPMISurfaceTextureStandardType = 3
    GBPMISurfaceTextureStandardType = 4
    ESKDPMISurfaceTextureStandardType = 5
    ANSI_Y1436_1993PMISurfaceTextureStandardType = 6
    ASME_Y1436M_1996PMISurfaceTextureStandardType = 7
    ISO_1302_1992PMISurfaceTextureStandardType = 8
    DIN_EN_ISO_1302_1992PMISurfaceTextureStandardType = 9
    ISO_1302_2002PMISurfaceTextureStandardType = 10
    DIN_EN_ISO_1302_2002PMISurfaceTextureStandardType = 11

class PMISurfaceTextureTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Defines the type of surface texture PMI.
    """
    def __init__(self):
        pass
    OpenPMISurfaceTextureType = 0
    RemovalRequiredPMISurfaceTextureType = 1
    RemovalProhibitedPMISurfaceTextureType = 2

class PMISymbolTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Specifies the available symbols that can be used to create a PMISymbolSegment.
    
    These symbols represent GDT (Geometric Dimensioning and Tolerancing) and manufacturing symbols.
    """
    def __init__(self):
        pass
    DiameterPMISymbolType = 0
    TolerancePMISymbolType = 1
    DegreesPMISymbolType = 2
    SquarenessPMISymbolType = 3
    CenterLinePMISymbolType = 4
    PositionPMISymbolType = 5
    CounterborePMISymbolType = 6
    CountersinkPMISymbolType = 7
    DepthPMISymbolType = 8
    ConicalTaperPMISymbolType = 9
    SlopePMISymbolType = 10
    NotEqualPMISymbolType = 11
    EnvelopePMISymbolType = 12
    FreeStatePMISymbolType = 13
    LeastMaterialConditionPMISymbolType = 14
    MaximumMaterialConditionPMISymbolType = 15
    ProjectedTolerancePMISymbolType = 16
    StraightnessPMISymbolType = 17
    CylindricityPMISymbolType = 18
    AngularityPMISymbolType = 19
    SymmetryPMISymbolType = 20
    FlatnessPMISymbolType = 21
    LineProfilePMISymbolType = 22
    PerpendicularityPMISymbolType = 23
    ConcentricityPMISymbolType = 24
    TotalRunoutPMISymbolType = 25
    CircularityPMISymbolType = 26
    SurfaceProfilePMISymbolType = 27
    ParallelismPMISymbolType = 28
    CircularRunoutPMISymbolType = 29

class PMIToleranceTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Specifies the various types of tolerances that can be associated with PMIGeometricValue.
    """
    def __init__(self):
        pass
    SymmetricPMIToleranceType = 0
    DeviationPMIToleranceType = 1
    LimitsStackedPMIToleranceType = 2
    LimitsLinearPMIToleranceType = 3
    MAXPMIToleranceType = 4
    MINPMIToleranceType = 5
    LimitsFitsStackedPMIToleranceType = 6
    LimitsFitsLinearPMIToleranceType = 7
    LimitsFitsSizeLimitsPMIToleranceType = 8
    LimitsFitsTolerancePMIToleranceType = 9

class PMITypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Specifies the various types of PMI (Product Manufacturing Information).
    """
    def __init__(self):
        pass
    UnknownPMIType = 0
    FolderPMIType = 1
    GraphicalPMIType = 2
    DiameterDimensionPMIType = 3
    RadiusDimensionPMIType = 4
    MinorDiameterDimensionPMIType = 5
    MajorDiameterDimensionPMIType = 6
    MinorRadiusDimensionPMIType = 7
    MajorRadiusDimensionPMIType = 8
    CurveLengthDimensionPMIType = 9
    ThicknessDimensionPMIType = 10
    AngularSizeDimensionPMIType = 11
    LinearDimensionPMIType = 12
    CenterOuterDimensionPMIType = 13
    CenterInnerDimensionPMIType = 14
    OuterOuterDimensionPMIType = 15
    OuterInnerDimensionPMIType = 16
    InnerInnerDimensionPMIType = 17
    CurvedDimensionPMIType = 18
    AngularLocationDimensionPMIType = 19
    GDTDatumPMIType = 20
    FlatnessPMIType = 21
    RoundnessPMIType = 22
    StraightnessPMIType = 23
    AngularityPMIType = 24
    CylindricityPMIType = 25
    CoaxialityPMIType = 26
    ParallelismPMIType = 27
    PerpendicularityPMIType = 28
    PositionPMIType = 29
    SurfaceProfilePMIType = 30
    LineProfilePMIType = 31
    ConcentricityPMIType = 32
    SymmetryPMIType = 33
    CircularRunoutPMIType = 34
    TotalRunoutPMIType = 35
    NotePMIType = 36
    SurfaceTexturePMIType = 37
    HoleNotePMIType = 38

class PMIUnitTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Specifies the units to be used in displaying the PMIAnnotation.
    """
    def __init__(self):
        pass
    UseDocumentUnitPMIUnitType = 0
    MillimetersPMIUnitType = 1
    CentimetersPMIUnitType = 2
    MetersPMIUnitType = 3
    InchesPMIUnitType = 4
    FeetPMIUnitType = 5

class PointContainment():
    """
    Types that define the nature of the relationship between a point and a containing entity.
    """
    def __init__(self):
        pass
    PointInsidePointContainment = 0
    PointOnPointContainment = 1
    PointOutsidePointContainment = 2
    UnknownPointContainment = 3

class RenderAspectRatios():
    """
    Types that indicate the output aspect ratio when rendering a scene. This is
    used with in-canvas rendering, to allow you to define a different aspect
    ratio than the current active viewport.
    """
    def __init__(self):
        pass
    CurrentViewportRenderAspectRatio = 0
    Square1to1RenderAspectRatio = 1
    Presentation4to3RenderAspectRatio = 2
    Widescreen16to9RenderAspectRatio = 3
    Landscape5to4RenderAspectRatio = 4
    Portrait4to5RenderAspectRatio = 5
    CustomRenderAspectRatio = 6

class RenderResolutions():
    """
    The different standard resolutions supported when rendering.
    """
    def __init__(self):
        pass
    Web800x600RenderResolution = 0
    Web1024x768RenderResolution = 1
    Web1152x864RenderResolution = 2
    Web1280x1024RenderResolution = 3
    Web1600x1200RenderResolution = 4
    Mobile960x640RenderResolution = 5
    Mobile1136x640RenderResolution = 6
    Mobile1334x750RenderResolution = 7
    Mobile1920x1080RenderResolution = 8
    Mobile2048x1536RenderResolution = 9
    Print1800x1200RenderResolution = 10
    Print2100x1500RenderResolution = 11
    Print3000x2400RenderResolution = 12
    Print3300x2550RenderResolution = 13
    Video854x480RenderResolution = 14
    Video1280x720RenderResolution = 15
    Video1920x1080RenderResolution = 16
    CustomRenderResolution = 17

class RenderSceneBackgroundTypes():
    """
    Types that indicate the type of background being used to render the scene.
    """
    def __init__(self):
        pass
    EnvironmentRenderSceneBackgroundType = 0
    SolidColorRenderSceneBackgroundType = 1

class RipFeatureDefinitionTypes():
    """
    Specifies the different ways a Rip feature can be defined.
    """
    def __init__(self):
        pass
    UndefinedRipFeatureDefinitionType = 0
    FaceRipFeatureDefinitionType = 1
    AlongEdgeRipFeatureDefinitionType = 2
    BetweenPointsRipFeatureDefinitionType = 3

class RuledSurfaceCornerTypes():
    """
    List of Ruled Surface corner types.
    """
    def __init__(self):
        pass
    RoundedRuledSurfaceCornerType = 0
    MiteredRuledSurfaceCornerType = 1

class RuledSurfaceTypes():
    """
    List of Ruled Surface Types.
    """
    def __init__(self):
        pass
    TangentRuledSurfaceType = 0
    NormalRuledSurfaceType = 1
    DirectionRuledSurfaceType = 2

class RuleFilletRuleTypes():
    """
    List of the rule types of rule fillet.
    """
    def __init__(self):
        pass
    AllEdgesRuleFilletRuleType = 0
    BetweenFacesOrFeaturesRuleFilletRuleType = 1

class RuleFilletTopologyTypes():
    """
    List of the topology types of rule fillet.
    """
    def __init__(self):
        pass
    RoundsAndFilletsRuleFilletTopologyType = 0
    RoundsOnlyRuleFilletTopologyType = 1
    FilletsOnlyRuleFilletTopologyType = 2

class ShellTypes():
    """
    List of Shell Types
    """
    def __init__(self):
        pass
    SharpOffsetShellType = 0
    RoundedOffsetShellType = 1

class SilhouetteSplitOperations():
    """
    List of Silhouette Split feature operations.
    """
    def __init__(self):
        pass
    SilhouetteSplitFacesOnlyOperation = 0
    SilhouetteSplitShelledBodyOperation = 1
    SilhouetteSplitSolidBodyOperation = 2

class SketchCurveConstructionStates():
    """
    Used by the Sketch.setConstructionState method setting the construction state on sketch curves.
    """
    def __init__(self):
        pass
    ToggleSketchCurveConstructionState = 0
    ConstructionSketchCurveConstructionState = 1
    NormalSketchCurveConstructionState = 2

class SketchLineCenterlineStates():
    """
    Used by the Sketch.setCenterlineState method setting the centerline state on sketch lines.
    """
    def __init__(self):
        pass
    ToggleSketchLineCenterlineState = 0
    CenterlineSketchLineCenterlineState = 1
    NormalSketchLineCenterlineState = 2

class SplineDegrees():
    """
    Defines the options used when specifying the degree of a spline.
    """
    def __init__(self):
        pass
    SplineDegreeOne = 1
    SplineDegreeTwo = 2
    SplineDegreeThree = 3
    SplineDegreeFour = 4
    SplineDegreeFive = 5
    SplineDegreeSix = 6
    SplineDegreeSeven = 7
    SplineDegreeEight = 8
    SplineDegreeNine = 9

class SplitFaceSplitTypes():
    """
    List of the ways to split a face using the split face feature.
    """
    def __init__(self):
        pass
    surfaceIntersectionSplitType = 0
    alongVectorSplitType = 1
    closestPointSplitType = 2

class SurfaceContinuityTypes():
    """
    List of Surface Continuity Types.
    """
    def __init__(self):
        pass
    ConnectedSurfaceContinuityType = 0
    TangentSurfaceContinuityType = 1
    CurvatureSurfaceContinuityType = 2

class SurfaceExtendAlignment():
    """
    List of Surface Extend Alignments
    """
    def __init__(self):
        pass
    FreeEdges = 0
    AlignEdges = 1

class SurfaceExtendTypes():
    """
    List of Surface Extend Types.
    """
    def __init__(self):
        pass
    NaturalSurfaceExtendType = 0
    TangentSurfaceExtendType = 1
    PerpendicularSurfaceExtendType = 2

class SurfaceProjectTypes():
    """
    Used by the Sketch.projectToSurface method when defined how to project a curve onto a surface.
    """
    def __init__(self):
        pass
    ClosestPointSurfaceProjectType = 0
    AlongVectorSurfaceProjectType = 1

class SweepExtentTypes():
    """
    List of the types of sweep extent.
    """
    def __init__(self):
        pass
    PerpendicularToPathExtentType = 0
    FullExtentsExtentType = 1

class SweepOrientationTypes():
    """
    List of the types of sweep orientation.
    """
    def __init__(self):
        pass
    ParallelOrientationType = 0
    PerpendicularOrientationType = 1

class SweepProfileScalingOptions():
    """
    List of the sweep profile scaling options.
    """
    def __init__(self):
        pass
    SweepProfileScaleOption = 0
    SweepProfileStretchOption = 1
    SweepProfileNoScalingOption = 2

class SweepSolidOrientationTypes():
    """
    The various orientation types when doing a solid sweep.
    """
    def __init__(self):
        pass
    PerpendicularSolidOrientationType = 0
    RigidSolidOrientationType = 1
    AlignedSolidOrientationType = 2

class SymmetricDimensionStrategyTypes():
    """
    Defines dimension strategies for symmetric geometry. These strategies control how dimensions
    are created when symmetric features are detected in the sketch.
    """
    def __init__(self):
        pass
    DefaultSymmetricDimensionStrategyType = 0
    EndToEndSymmetricDimensionStrategyType = 1
    EndToCenterSymmetricDimensionStrategyType = 2
    CenterToEndSymmetricDimensionStrategyType = 3
    CenterToEndWithSymmetryConstraintSymmetricDimensionStrategyType = 4

class TessellateRefinementTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Specify the refinement setting type for the tessellation process.
    """
    def __init__(self):
        pass
    HighTessellateRefinementType = 0
    MediumTessellateRefinementType = 1
    LowTessellateRefinementType = 2
    CustomTessellateRefinementType = 3

class TextBoxKeyPoints():
    """
    Defines the nine key points that exist for a sketch text box and
    can be used as the origin when rotating the text. The named positions
    are with respect to the text box. For example when the text box has
    not been rotated the top-left key point will be the point in the upper-left
    corner of the text box. If the text box has been rotated 180 degrees,
    the top-left key point will be the point in the lower-right corner of
    the text box.
    """
    def __init__(self):
        pass
    TopLeftTextBoxKeyPoint = 0
    TopMiddleTextBoxKeyPoint = 1
    TopRightTextBoxKeyPoint = 2
    MiddleLeftTextBoxKeyPoint = 3
    MiddleTextBoxKeyPoint = 4
    MiddleRightTextBoxKeyPoint = 5
    BottomLeftTextBoxKeyPoint = 6
    BottomMiddleTextBoxKeyPoint = 7
    BottomRightTextBoxKeyPoint = 8

class TextStyles():
    """
    Defines the various text style formatting options that can be applied to text. These are
    bitwise values to they can be combined.
    """
    def __init__(self):
        pass
    TextStyleBold = 1
    TextStyleItalic = 2
    TextStyleUnderline = 4

class ThickenTypes():
    """
    List of Thicken Types
    """
    def __init__(self):
        pass
    SharpThickenType = 0
    RoundedThickenType = 1

class ThinExtrudeWallLocation():
    """
    List of Thin Extrude Wall Locations
    """
    def __init__(self):
        pass
    Side1 = 0
    Center = 1
    Side2 = 2

class ThreadLocations():
    """
    List of the positions of a thread feature when it is not full length.
    """
    def __init__(self):
        pass
    HighEndThreadLocation = 0
    LowEndThreadLocation = 1

class ThreeBendReliefShapes():
    """
    The bend relief shapes used when three bends intersect.
    """
    def __init__(self):
        pass
    NoReplacementThreeBendReliefShape = 0
    IntersectionThreeBendReliefShape = 1
    FullRoundThreeBendReliefShape = 2
    RoundWithRadiusThreeBendReliefShape = 3

class TriangleMeshQualityOptions():
    """
    Types that indicate the level of quality of a triangle mesh.
    """
    def __init__(self):
        pass
    LowQualityTriangleMesh = 8
    NormalQualityTriangleMesh = 11
    HighQualityTriangleMesh = 13
    VeryHighQualityTriangleMesh = 15

class TwoBendReliefPlacements():
    """
    The placement options for a two-bend relief.
    """
    def __init__(self):
        pass
    NoTwoBendReliefPlacement = 0
    IntersectionTwoBendReliefPlacement = 1
    TangentTwoBendReliefPlacement = 2
    VertexTwoBendReliefPlacement = 3

class TwoBendReliefShapes():
    """
    The bend relief shapes used when two bends intersect.
    """
    def __init__(self):
        pass
    RoundTwoBendReliefShape = 0
    SquareTwoBendReliefShape = 1
    TearTwoBendReliefShape = 2
    TrimToBendTwoBendReliefShape = 3
    LinearWeldTwoBendReliefShape = 4
    ArcWeldTwoBendReliefShape = 5
    LaserWeldTwoBendReliefShape = 6

class UnitSystems():
    """
    Predefined combinations of length and mass units used
    for units in the design.
    """
    def __init__(self):
        pass
    CustomUnitSystem = 0
    MillimeterGramUnitSystem = 1
    CentimeterGramUnitSystem = 2
    MeterKilogramUnitSystem = 3
    InchOunceUnitSystem = 4
    FootPoundUnitSystem = 5

class UntrimLoopTypes():
    """
    List of Untrim Loop Types.
    """
    def __init__(self):
        pass
    AllLoopsUntrimType = 0
    ExternalLoopsUntrimType = 1
    InternalLoopsUntrimType = 2
    ManualLoopsUntrimType = 3

class ViewCorners():
    """
    Specifies which of the four view corners custom graphics will be drawn in relation to. The
    notUsedViewCorner setting indicates the graphics are not positioned with respect to the view.
    """
    def __init__(self):
        pass
    upperLeftViewCorner = 0
    upperRightViewCorner = 1
    lowerLeftViewCorner = 2
    lowerRightViewCorner = 3

class VolumetricMeshingApproachTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    List of Meshing Approaches for converting a volumetric model to a mesh.
    """
    def __init__(self):
        pass
    VolumetricMeshingAdvancedType = 0
    VolumetricMeshingOriginalType = 1

class VolumetricMeshRefinementTypes():
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    List of Volumetric Model to Mesh Refinement Types.
    """
    def __init__(self):
        pass
    VolumetricMeshRefinementHighType = 0
    VolumetricMeshRefinementMediumType = 1
    VolumetricMeshRefinementLowType = 2
    VolumetricMeshRefinementCustomType = 3

class AccessibilityAnalyses(core.Base):
    """
    Provides access to any accessibility analyses results in the design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AccessibilityAnalyses:
        return AccessibilityAnalyses()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> AccessibilityAnalysis:
        return None
    def __iter__(self) -> Iterator[AccessibilityAnalysis]:
        return None
    def item(self, index: int) -> AccessibilityAnalysis:
        """
        A method that returns the specified AccessibilityAnalysis 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 AccessibilityAnalysis()
    def itemByName(self, name: str) -> AccessibilityAnalysis:
        """
        A method that returns the specified AccessibilityAnalysis object using the name of the analysis
        as displayed in the browser.
        name : The name of the AccessibilityAnalysis object as displayed in the browser.
        Returns the specified item or null if an invalid name was specified.
        """
        return AccessibilityAnalysis()
    @property
    def count(self) -> int:
        """
        Returns the number of AccessibilityAnalysis objects in the collection.
        """
        return int()

class Analyses(core.Base):
    """
    Provides access to the existing analysis results within a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Analyses:
        return Analyses()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> Analysis:
        return None
    def __iter__(self) -> Iterator[Analysis]:
        return None
    def item(self, index: int) -> Analysis:
        """
        A method that returns the specified Analysis 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 Analysis()
    def itemByName(self, name: str) -> Analysis:
        """
        A method that returns the specified Analysis using the name of the analysis
        as it is displayed in the browser.
        name : The name of the Analysis as it is displayed in the browser.
        Returns the specified item or null if an invalid name was specified.
        """
        return Analysis()
    @property
    def count(self) -> int:
        """
        Returns the number of Analysis objects in the collection.
        """
        return int()
    @property
    def accessibilityAnalyses(self) -> AccessibilityAnalyses:
        """
        Returns the AccessibilityAnalyses object, which provides access to any existing AccessibilityAnalysis
        objects in the design.
        """
        return AccessibilityAnalyses()
    @property
    def curvatureCombAnalyses(self) -> CurvatureCombAnalyses:
        """
        Returns the CurvatureCombAnalyses object, which provides access to any existing CurvatureCombAnalysis
        objects in the design.
        """
        return CurvatureCombAnalyses()
    @property
    def curvatureMapAnalyses(self) -> CurvatureMapAnalyses:
        """
        Returns the CurvatureMapAnalyses object, which provides access to any existing CurvatureMapAnalysis
        objects in the design.
        """
        return CurvatureMapAnalyses()
    @property
    def draftAnalyses(self) -> DraftAnalyses:
        """
        Returns the DraftAnalyses object, which provides access to any existing DraftAnalysis
        objects in the design.
        """
        return DraftAnalyses()
    @property
    def isoCurveAnalyses(self) -> IsoCurveAnalyses:
        """
        Returns the IsoCurveAnalyses object, which provides access to any existing IsoCurveAnalysis
        objects in the design.
        """
        return IsoCurveAnalyses()
    @property
    def minimumRadiusAnalyses(self) -> MinimumRadiusAnalyses:
        """
        Returns the MinimumRadiusAnalyses object, which provides access to any existing MinimumRadiusAnalysis
        objects in the design.
        """
        return MinimumRadiusAnalyses()
    @property
    def sectionAnalyses(self) -> SectionAnalyses:
        """
        Returns the SectionAnalyses object, which provides access to any existing SectionAnalysis
        objects in the design.
        """
        return SectionAnalyses()
    @property
    def zebraAnalyses(self) -> ZebraAnalyses:
        """
        Returns the ZebraAnalyses object, which provides access to any existing ZebraAnalysis
        objects in the design.
        """
        return ZebraAnalyses()
    @property
    def isLightBulbOn(self) -> bool:
        """
        A property that gets and sets if the display is enabled for all Analysis objects in the design.
        If this is false, all Analysis results will be hidden. If this is true, the Analysis
        objects whose isLightBulbOn property is also true will be visible.
        """
        return bool()
    @isLightBulbOn.setter
    def isLightBulbOn(self, value: bool):
        """
        A property that gets and sets if the display is enabled for all Analysis objects in the design.
        If this is false, all Analysis results will be hidden. If this is true, the Analysis
        objects whose isLightBulbOn property is also true will be visible.
        """
        pass

class Analysis(core.Base):
    """
    The base class Analysis object that represents all the types of analysis results.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Analysis:
        return Analysis()
    def deleteMe(self) -> bool:
        """
        A method that deletes this Analysis.
        Returns true if the delete was successful.
        """
        return bool()
    @property
    def name(self) -> str:
        """
        A property that gets and sets the name of the analysis. If you use a name that is not unique,
        Fusion will automatically append a number to the name to make it unique.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        A property that gets and sets the name of the analysis. If you use a name that is not unique,
        Fusion will automatically append a number to the name to make it unique.
        """
        pass
    @property
    def isLightBulbOn(self) -> bool:
        """
        A property that gets and sets if the display is enabled for this Analysis object. If false,
        this analysis will be hidden. If true and the IsLightBulbOn property of the
        Analyses object is True the Analysis will be visible.
        """
        return bool()
    @isLightBulbOn.setter
    def isLightBulbOn(self, value: bool):
        """
        A property that gets and sets if the display is enabled for this Analysis object. If false,
        this analysis will be hidden. If true and the IsLightBulbOn property of the
        Analyses object is True the Analysis will be visible.
        """
        pass
    @property
    def isVisible(self) -> bool:
        """
        Gets if this Analysis is currently visible in the graphics window. The visibility is
        controlled by a combination of the isLightBulbOn properties of the Analyses collection
        object and the Analysis object. If both are true, the Analysis will be visible.
        """
        return bool()
    @property
    def attributes(self) -> core.Attributes:
        """
        A property that returns the collection of attributes associated with this Analysis.
        """
        return core.Attributes()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the Analysis object. The token can be saved and used later with
        the Design.findEntityByToken method to get back the same Analysis.
        
        When using entity tokens, it's crucial to understand that the token string returned
        for a specific entity can be different over time. For example, you can have two different
        token strings obtained from the same entity at different times, and when you use
        findEntityByToken they will both return the same entity. Because of that, you should
        never compare entity tokens as a way to determine what the token represents. Instead,
        you need to use the findEntityByToken method to get the two entities identified by the
        tokens and then compare them.
        """
        return str()

class AreaProperties(core.Base):
    """
    The Area properties of a sketch profile or planar surface.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AreaProperties:
        return AreaProperties()
    def getPrincipalAxes(self) -> tuple[bool, core.Vector3D, core.Vector3D]:
        """
        Method that returns the principal axes.
        xAxis : The output Vector3D object that indicates the direction of the x axis.
        yAxis : The output Vector3D object that indicates the direction of the y axis.
        Returns true if successful
        """
        return (bool(), core.Vector3D(), core.Vector3D())
    def getMomentsOfInertia(self) -> tuple[bool, float, float, float, float, float, float]:
        """
        Method that, for a sketch, returns the moments of inertia about the sketch origin.
        For a planar face, this method returns the moments about the world coordinate system origin.
        Unit for returned values is kg*cm^2.
        ixx : Output Double that returns the XX partial moment.
        iyy : Output Double that returns the YY partial moment.
        izz : Output Double that returns the ZZ partial moment.
        ixy : Output Double that returns the XY partial moment.
        iyz : Output Double that returns the YZ partial moment.
        ixz : Output Double that returns the XZ partial moment.
        Returns true if successful
        """
        return (bool(), float(), float(), float(), float(), float(), float())
    def getCentroidMomentsOfInertia(self) -> tuple[bool, float, float, float, float, float, float]:
        """
        Method that returns the moments of inertia about the centroid. Unit for returned values is kg*cm^2.
        ixx : Output Double that returns the XX partial moment.
        iyy : Output Double that returns the YY partial moment.
        izz : Output Double that returns the ZZ partial moment.
        ixy : Output Double that returns the XY partial moment.
        iyz : Output Double that returns the YZ partial moment.
        ixz : Output Double that returns the XZ partial moment.
        Returns true if successful
        """
        return (bool(), float(), float(), float(), float(), float(), float())
    def getPrincipalMomentsOfInertia(self) -> tuple[bool, float, float, float]:
        """
        Method that returns the moments of inertia about the principal axes. Unit for returned values is kg*cm^2.
        i1 : Output Double that specifies the first moment of inertia.
        i2 : Output Double that specifies the second moment of inertia.
        i3 : Output Double that specifies the third moment of inertia.
        Returns true if successful
        """
        return (bool(), float(), float(), float())
    def getRadiusOfGyration(self) -> tuple[bool, float, float, float]:
        """
        Method that returns the radius of gyration about the principal axes. Unit for returned values is cm.
        kxx : Output Double that returns the X partial radius of gyration.
        kyy : Output Double that returns the Y partial radius of gyration.
        kzz : Output Double that returns the Z partial radius of gyration.
        Returns true if successful
        """
        return (bool(), float(), float(), float())
    @property
    def area(self) -> float:
        """
        Gets the area in the square centimeters.
        """
        return float()
    @property
    def centroid(self) -> core.Point3D:
        """
        Gets the centroid where the units are centimeters.
        The Location is relative to the sketch origin for a profile or relative to the world coordinate system for a planar face.
        """
        return core.Point3D()
    @property
    def perimeter(self) -> float:
        """
        Gets the perimeter in centimeters.
        The perimeter is the sum of the length of all the curves or edges of the profile or planar surface
        """
        return float()
    @property
    def rotationToPrincipal(self) -> float:
        """
        Gets the angle of rotation of the principal axes.
        """
        return float()
    @property
    def accuracy(self) -> CalculationAccuracy:
        """
        Returns the accuracy that was used for the calculation.
        """
        return CalculationAccuracy()

class ArrangeComponent(core.Base):
    """
    Defines a component within an arrangement. This specifies an occurrence along with additional
    arrangement information. This object is the API equivalent of a single line within the component
    list shown in the Arrange dialog. This object is used for both the creation of a new Arrange
    feature and querying and modifying an existing Arrange feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ArrangeComponent:
        return ArrangeComponent()
    def setRotationUsingEdge(self, edge: BRepEdge) -> bool:
        """
        Sets the rotation angle using the specified edge such that the edge
        is pointing in the zero rotation angle. This is a convenience method to
        set the rotation angle. The rotation property can be used to accomplish
        the same result.
        
        This is only valid for 2D True Shape arrangements and will fail for
        2D rectangular and 3D arrangements.
        edge : The BRepEdge object being used to define rotation of the component.
        Returns true if successful.
        """
        return bool()
    def deleteMe(self) -> bool:
        """
        Deletes this ArrangeComponent from the arrangement.
        Returns true if the deletion was successful.
        """
        return bool()
    @property
    def occurrenceOrFace(self) -> core.Base:
        """
        The BRepFace or Occurrence that was used to identify this ArrangeComponent.
        """
        return core.Base()
    @property
    def occurrence(self) -> Occurrence:
        """
        Returns the Occurrence associated with this ArrangeComponent. If an Occurrence was used to define
        this ArrangeComponent, this will return the same thing as the occurrenceOrFace. If a BRepFace was
        used to define this ArrangeComponent, this will return the Occurrence the face is in. This is a
        convenience property to make accessing the occurrence simpler.
        """
        return Occurrence()
    @property
    def quantity(self) -> int:
        """
        Specifies the quantity of this component to use in the arrange. This defaults
        to -1, which indicates that the global quantity is to be used.
        
        For a 3D arrange, this property is ignored and the quantity is always one.
        """
        return int()
    @quantity.setter
    def quantity(self, value: int):
        """
        Specifies the quantity of this component to use in the arrange. This defaults
        to -1, which indicates that the global quantity is to be used.
        
        For a 3D arrange, this property is ignored and the quantity is always one.
        """
        pass
    @property
    def isDirectionFlipped(self) -> bool:
        """
        Specifies if the direction is flipped from its default direction.
        
        For a component defined by a face the default direction is defined by the selected face
        and the isGlobalDirectionFaceUp property of the Arrange2DDefinition associated with the
        parent ArrangeFeature object.
        
        For a component defined by an occurrence, the default direction orients the occurrence
        such that the largest face points downward.
        
        For a 3D arrange, this property is ignored and the orientation of the part is
        the same as it exists in the original assembly.
        """
        return bool()
    @isDirectionFlipped.setter
    def isDirectionFlipped(self, value: bool):
        """
        Specifies if the direction is flipped from its default direction.
        
        For a component defined by a face the default direction is defined by the selected face
        and the isGlobalDirectionFaceUp property of the Arrange2DDefinition associated with the
        parent ArrangeFeature object.
        
        For a component defined by an occurrence, the default direction orients the occurrence
        such that the largest face points downward.
        
        For a 3D arrange, this property is ignored and the orientation of the part is
        the same as it exists in the original assembly.
        """
        pass
    @property
    def rotationType(self) -> ArrangeRotationTypes:
        """
        Gets and sets the rotation type for this ArrangeComponent. This defaults to
        use the global rotation type defined for the arrangement.
        
        For a 3D arrange, this property is ignored.
        """
        return ArrangeRotationTypes()
    @rotationType.setter
    def rotationType(self, value: ArrangeRotationTypes):
        """
        Gets and sets the rotation type for this ArrangeComponent. This defaults to
        use the global rotation type defined for the arrangement.
        
        For a 3D arrange, this property is ignored.
        """
        pass
    @property
    def rotation(self) -> float:
        """
        Gets and sets the rotation angle of this ArrangeComponent. The value is defined
        in Radians, is relative to the zero direction vector returned by the
        zeroDirectionVector property, and is in a counterclockwise direction.
        
        This is only valid for 2D True Shape arrangements and is ignored for
        2D rectangular and 3D arrangements.
        """
        return float()
    @rotation.setter
    def rotation(self, value: float):
        """
        Gets and sets the rotation angle of this ArrangeComponent. The value is defined
        in Radians, is relative to the zero direction vector returned by the
        zeroDirectionVector property, and is in a counterclockwise direction.
        
        This is only valid for 2D True Shape arrangements and is ignored for
        2D rectangular and 3D arrangements.
        """
        pass
    @property
    def zeroDirection(self) -> core.Vector3D:
        """
        Returns a vector that is the zero degree direction of this
        ArrangeComponent.
        """
        return core.Vector3D()
    @property
    def upDirection(self) -> core.Vector3D:
        """
        Returns a vector that is the up direction of this ArrangeComponent.
        """
        return core.Vector3D()
    @property
    def priority(self) -> ArrangePriorities:
        """
        Specifies the nesting priority for this component.
        
        For a 3D arrange, this property is ignored and setting it will fail.
        """
        return ArrangePriorities()
    @priority.setter
    def priority(self, value: ArrangePriorities):
        """
        Specifies the nesting priority for this component.
        
        For a 3D arrange, this property is ignored and setting it will fail.
        """
        pass
    @property
    def isFiller(self) -> bool:
        """
        Specifies if this component will be used to fill any left over
        empty space in the available envelopes.
        
        This is only valid for 2D True Shape arrangements and is ignored for
        2D rectangular and 3D arrangements.
        """
        return bool()
    @isFiller.setter
    def isFiller(self, value: bool):
        """
        Specifies if this component will be used to fill any left over
        empty space in the available envelopes.
        
        This is only valid for 2D True Shape arrangements and is ignored for
        2D rectangular and 3D arrangements.
        """
        pass
    @property
    def parentArrangeFeature(self) -> ArrangeFeature:
        """
        Returns the ArrangeFeature this ArrangeComponent is associated with. This
        property returns null in the case where a feature hasn't been created yet
        and there is only an ArrangeFeatureInput.
        """
        return ArrangeFeature()

class ArrangeComponents(core.Base):
    """
    The collection of ArrangeComponent objects associated with an arrangement. This provides
    access to existing ArrangeComponent objects and supports adding new components to
    the arrangement. An ArrangeComponent object defines an occurrence along with additional
    arrangement information. This object is used for both the creation of a new Arrange
    feature and querying and modifying an existing Arrange feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ArrangeComponents:
        return ArrangeComponents()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ArrangeComponent:
        return None
    def __iter__(self) -> Iterator[ArrangeComponent]:
        return None
    def item(self, index: int) -> ArrangeComponent:
        """
        Returns an ArrangeComponent 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 ArrangeComponent()
    def add(self, occurrenceOrFace: core.Base) -> ArrangeComponent:
        """
        Adds a new ArrangeComponent object to the collection.
        occurrenceOrFace : For a 2D arrange this can be an Occurrence or BRepFace object that defines which component to use.
        If a BRepFace object is used, the face is used to orient the part in the arrangement and will face
        up or down depending on the isGlobalDirectionFaceUp property on the ArrangeFeature2DInput object.
        
        For a 2D arrange, if an Occurrence is provided, the Occurrence will be oriented in the arrangement such that the
        largest face points downward.
        
        For a 3D arrange this can be an Occurrence or BRepFace object but if a BRepFace is provided it does
        not define the orientation but is only used to get the parent Occurrence. For a 3D arrange the arranged
        occurrences have the same orientation as the original occurrence but are positioned within the 3D envelope.
        Returns the created ArrangeComponent where you can use properties on it to define the various
        other settings supported to control how the component is arranged.
        """
        return ArrangeComponent()
    @property
    def count(self) -> int:
        """
        Returns the number of ArrangeComponent objects in the collection.
        """
        return int()

class ArrangeDefinition(core.Base):
    """
    The ArrangeDefinition object is the base class for the ArrangeDefinition2D and ArrangeDefinition3D
    objects. It provides access to the information that defines an existing Arrange feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ArrangeDefinition:
        return ArrangeDefinition()
    @property
    def solverType(self) -> ArrangeSolverTypes:
        """
        Gets the type of arrange feature defined by this definition.
        """
        return ArrangeSolverTypes()
    @property
    def isCreateCopies(self) -> bool:
        """
        Gets if the original components were moved to create the arrangement or copies were created.
        This value can only be set when creating a new arrangement.
        """
        return bool()

class ArrangeDefinitionInput(core.Base):
    """
    The ArrangeDefinition object is the base class for the ArrangeDefinition2D and ArrangeDefinition3D
    objects. It provides access to the information that defines an existing Arrange feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ArrangeDefinitionInput:
        return ArrangeDefinitionInput()
    @property
    def solverType(self) -> ArrangeSolverTypes:
        """
        Gets the type of arrange feature defined by this definition.
        """
        return ArrangeSolverTypes()
    @property
    def isCreateCopies(self) -> bool:
        """
        Gets and sets if the original components will be moved or copied to create the arrangement.
        This defaults to true.
        """
        return bool()
    @isCreateCopies.setter
    def isCreateCopies(self, value: bool):
        """
        Gets and sets if the original components will be moved or copied to create the arrangement.
        This defaults to true.
        """
        pass

class ArrangeEnvelopeDefinition(core.Base):
    """
    The ArrangeEnvelope object is the base class for the different types of arrangement
    envelopes and provides access to the information that defines the envelope(s). This
    defines the settings of the envelope and the EnvelopeResult provides access to the
    resulting envelope and its contents.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ArrangeEnvelopeDefinition:
        return ArrangeEnvelopeDefinition()
    @property
    def frameWidth(self) -> ModelParameter:
        """
        Returns the parameter that controls the width of the envelope frame. This defines the
        offset distance of the objects from the edge of the frame. You can modify the value by
        using the properties on the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def objectSpacing(self) -> ModelParameter:
        """
        Returns the parameter that controls the space between objects in the arrangement.
        You can modify the value by using the properties on the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def placementClearance(self) -> ModelParameter:
        """
        Returns the parameter that controls the offset of the objects from the base plane of
        the arrangement (the "up" direction). You can modify the value by using the properties on the returned
        ModelParameter object.
        """
        return ModelParameter()
    @property
    def isPartialArrangeAllowed(self) -> bool:
        """
        Gets and sets if a partial arrange is allowed for this envelope.
        """
        return bool()
    @isPartialArrangeAllowed.setter
    def isPartialArrangeAllowed(self, value: bool):
        """
        Gets and sets if a partial arrange is allowed for this envelope.
        """
        pass
    @property
    def parentArrange(self) -> ArrangeFeature:
        """
        Returns the parent ArrangeFeature this envelope is associated with.
        """
        return ArrangeFeature()

class ArrangeEnvelopeInput(core.Base):
    """
    The base class used to define the arrange envelope when creating an Arrange feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ArrangeEnvelopeInput:
        return ArrangeEnvelopeInput()
    @property
    def isPartialArrangeAllowed(self) -> bool:
        """
        Gets and sets if a partial arrange is allowed. If true, it will still create a result when there is not
        enough space on the envelope to fit all of the components. Components are arranged until all the
        available space is used up. The components that were not included in the partial arrangement are
        highlighted in the components list. If the envelope size increases, the arrangement recalculates
        to include the components that did not previously fit in the arrangement.
        """
        return bool()
    @isPartialArrangeAllowed.setter
    def isPartialArrangeAllowed(self, value: bool):
        """
        Gets and sets if a partial arrange is allowed. If true, it will still create a result when there is not
        enough space on the envelope to fit all of the components. Components are arranged until all the
        available space is used up. The components that were not included in the partial arrangement are
        highlighted in the components list. If the envelope size increases, the arrangement recalculates
        to include the components that did not previously fit in the arrangement.
        """
        pass
    @property
    def placementClearance(self) -> core.ValueInput:
        """
        Specifies the distance of the components and the bottom of the envelope. This raises the components
        above the X-Y plane of the specified construction plane.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created
        using a real number it is in centimeters. If you use a string, it is evaluated the same as a value
        would be in the command dialog and uses the current document units. For example, if the document
        units are inch and you specific "0.25" it will result in 1/4 inch clearance. You can also specify
        the units as part of the expression, such as "0.25 in + 2 mm". And you can define equations like
        "ToolDia + 2 mm" where "ToolDia" is an existing parameter.
        """
        return core.ValueInput()
    @placementClearance.setter
    def placementClearance(self, value: core.ValueInput):
        """
        Specifies the distance of the components and the bottom of the envelope. This raises the components
        above the X-Y plane of the specified construction plane.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created
        using a real number it is in centimeters. If you use a string, it is evaluated the same as a value
        would be in the command dialog and uses the current document units. For example, if the document
        units are inch and you specific "0.25" it will result in 1/4 inch clearance. You can also specify
        the units as part of the expression, such as "0.25 in + 2 mm". And you can define equations like
        "ToolDia + 2 mm" where "ToolDia" is an existing parameter.
        """
        pass
    @property
    def frameWidth(self) -> core.ValueInput:
        """
        Specifies the minimum distance between the components in the arrangement and the envelope frame.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created
        using a real number it is in centimeters. If you use a string, it is evaluated the same as a value
        would be in the command dialog and uses the current document units. For example, if the document
        units are inch and you specific "0.25" it will result in 1/4 inch clearance. You can also specify
        the units as part of the expression, such as "0.25 in + 2 mm". And you can define equations like
        "ToolDia + 2 mm" where "ToolDia" is an existing parameter.
        """
        return core.ValueInput()
    @frameWidth.setter
    def frameWidth(self, value: core.ValueInput):
        """
        Specifies the minimum distance between the components in the arrangement and the envelope frame.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created
        using a real number it is in centimeters. If you use a string, it is evaluated the same as a value
        would be in the command dialog and uses the current document units. For example, if the document
        units are inch and you specific "0.25" it will result in 1/4 inch clearance. You can also specify
        the units as part of the expression, such as "0.25 in + 2 mm". And you can define equations like
        "ToolDia + 2 mm" where "ToolDia" is an existing parameter.
        """
        pass
    @property
    def objectSpacing(self) -> core.ValueInput:
        """
        Specifies the minimum clearance between components in the arrangement. For a 3D layout, this
        also specifies the distance between the components in the Z direction.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created
        using a real number it is in centimeters. If you use a string, it is evaluated the same as a value
        would be in the command dialog and uses the current document units. For example, if the document
        units are inch and you specific "0.25" it will result in 1/4 inch clearance. You can also specify
        the units as part of the expression, such as "0.25 in + 2 mm". And you can define equations like
        "ToolDia + 2 mm" where "ToolDia" is an existing parameter.
        """
        return core.ValueInput()
    @objectSpacing.setter
    def objectSpacing(self, value: core.ValueInput):
        """
        Specifies the minimum clearance between components in the arrangement. For a 3D layout, this
        also specifies the distance between the components in the Z direction.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created
        using a real number it is in centimeters. If you use a string, it is evaluated the same as a value
        would be in the command dialog and uses the current document units. For example, if the document
        units are inch and you specific "0.25" it will result in 1/4 inch clearance. You can also specify
        the units as part of the expression, such as "0.25 in + 2 mm". And you can define equations like
        "ToolDia + 2 mm" where "ToolDia" is an existing parameter.
        """
        pass

class ArrangeFeatureInput(core.Base):
    """
    The ArrangeFeatureInput object is the base class for the different types of input
    objects used to create an arrange feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ArrangeFeatureInput:
        return ArrangeFeatureInput()
    def setPlaneEnvelope(self, plane: ConstructionPlane, length: core.ValueInput, width: core.ValueInput) -> Arrange2DPlaneEnvelopeInput:
        """
        Defines an envelope input defined by a plane for the arrange feature. Only a single envelope input can exist at a time. Calling
        this method will cause any existing envelope object input that has been created for this input to be invalid.
        plane : The Construction plane the envelope will be on.
        length : The length of the envelope. This is the size of the envelope as measured along the X axis of the specified
        construction plane.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in centimeters. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses the current document units. For example, if the document units are inch and you specific "0.25" it
        will result in 1/4 inch clearance. Using a string, you can also specify the units as part of the expression,
        such as "0.25 in + 2 mm". And you can define equations like "PartSize + 2 mm" where "PartSize" is an existing parameter.
        width : The width of the envelope. This is the size of the envelope as measured along the Y axis of the specified
        construction plane.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in centimeters. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses the current document units. For example, if the document units are inch and you specific "0.25" it
        will result in 1/4 inch clearance. Using a string, you can also specify the units as part of the expression,
        such as "0.25 in + 2 mm". And you can define equations like "PartSize + 2 mm" where "PartSize" is an existing parameter.
        Returns the created Arrange2DPlaneEnvelopeInput object or null if the creation fails.
        """
        return Arrange2DPlaneEnvelopeInput()
    def setProfileOrFaceEnvelope(self, profilesOrFaces: list[core.Base]) -> Arrange2DProfileOrFaceEnvelopeInput:
        """
        Defines an envelope defined by one or more profiles or planar faces. Only a single envelope input can exist at time.
        Calling this method will cause any existing envelope input object to be invalid.
        profilesOrFaces : An array of Profile and planar BRepFace objects that define the shape of the available envelopes.
        Returns the created Arrange2DProfileOrFaceEnvelopeInput object or null if the creation fails.
        """
        return Arrange2DProfileOrFaceEnvelopeInput()
    def set3DEnvelope(self, plane: ConstructionPlane, length: core.ValueInput, width: core.ValueInput, height: core.ValueInput) -> Arrange3DEnvelopeInput:
        """
        Defines a 3D envelope input. Only a single envelope input can exist at time. Calling this method will
        cause any existing envelope input object to be invalid.
        plane : The Construction plane the envelope will be on.
        length : The length of the envelope. This is the size of the envelope as measured along the X axis of the specified
        construction plane.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in centimeters. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses the current document units. For example, if the document units are inch and you specific "0.25" it
        will result in 1/4 inch clearance. Using a string, you can also specify the units as part of the expression,
        such as "0.25 in + 2 mm". And you can define equations like "PartSize + 2 mm" where "PartSize" is an existing parameter.
        width : The width of the envelope. This is the size of the envelope as measured along the Y axis of the specified
        construction plane.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in centimeters. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses the current document units. For example, if the document units are inch and you specific "0.25" it
        will result in 1/4 inch clearance. Using a string, you can also specify the units as part of the expression,
        such as "0.25 in + 2 mm". And you can define equations like "PartSize + 2 mm" where "PartSize" is an existing parameter.
        height : The height of the envelope. This is the size of the envelope as measured along the Z axis of the specified
        construction plane.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in centimeters. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses the current document units. For example, if the document units are inch and you specific "0.25" it
        will result in 1/4 inch clearance. Using a string, you can also specify the units as part of the expression,
        such as "0.25 in + 2 mm". And you can define equations like "PartSize + 2 mm" where "PartSize" is an existing parameter.
        Returns the created Arrange3DEnvelopeInput object or null if the creation fails.
        """
        return Arrange3DEnvelopeInput()
    @property
    def solverType(self) -> ArrangeSolverTypes:
        """
        Returns the arrange feature solver type defined by this input.
        """
        return ArrangeSolverTypes()
    @property
    def definition(self) -> ArrangeDefinitionInput:
        """
        Returns a definition input object that provides access to the information to define an arrange feature.
        This will return different types of definition inputs depending on the solver type specified when
        creating the input.
        """
        return ArrangeDefinitionInput()
    @property
    def arrangeComponents(self) -> ArrangeComponents:
        """
        Returns the ArrangeComponents object associated with this input. Use this to add and define
        the components that will be arranged.
        """
        return ArrangeComponents()

class ArrangeFeatures(core.Base):
    """
    Provides access to the Arrange features in a component and provides the functionality
    to create new Arrange features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ArrangeFeatures:
        return ArrangeFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ArrangeFeature:
        return None
    def __iter__(self) -> Iterator[ArrangeFeature]:
        return None
    def item(self, index: int) -> ArrangeFeature:
        """
        Returns the specified Arrange feature 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 ArrangeFeature()
    def itemByName(self, name: str) -> ArrangeFeature:
        """
        Returns the specified Arrange feature using the name of the feature.
        name : The name of the Arrange feature as seen in the timeline.
        Returns the specified Arrange feature, if it exists. Otherwise it returns null.
        """
        return ArrangeFeature()
    def createInput(self, solverType: ArrangeSolverTypes) -> ArrangeFeatureInput:
        """
        Creates a new ArrangeFeatureInput object. An ArrangeFeatureInput object is the logical equivalent to the
        command dialog when creating an Arrange feature. It provides access to the various options and collects
        all the required input when creating an Arrange feature. Once fully defined, you pass this into the add method
        to create the Arrange feature.
        solverType : Specify if the input will be used to define a "2D True Shape", "2D Rectangular", or "3D" type of arrange feature.
        Returns an ArrangeFeatureInput object or null in the case of failure.
        """
        return ArrangeFeatureInput()
    def add(self, input: ArrangeFeatureInput) -> ArrangeFeature:
        """
        Creates a new Arrange feature. Use the create2DInput or create3DInput method to first create an input object and fully
        define the required input. Then, pass that input object to the add method to create the Arrange feature.
        input : The ArrangeFeature2DInput or ArrangeFeature3DInput object that defines the required information needed to create a new Arrange feature.
        An ArrangeFeatureInput object is the logical equivalent to the command dialog when creating an Arrange feature.
        It provides access to the various options and collects all of the required input when creating an Arrange feature and
        calling the add method is the API equivalent to clicking the OK button on the command dialog to create the Arrange feature.
        Returns the newly created ArrangeFeature object.
        """
        return ArrangeFeature()
    @property
    def count(self) -> int:
        """
        Returns the number of Arrange features in the component.
        """
        return int()

class ArrangeOccurrenceResult(core.Base):
    """
    The ArrangeOccurrence object represents a single occurrence within an Arrange
    envelope.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ArrangeOccurrenceResult:
        return ArrangeOccurrenceResult()
    @property
    def occurrence(self) -> Occurrence:
        """
        The Occurrence object in the Arrange envelope.
        """
        return Occurrence()
    @property
    def arrangeComponent(self) -> ArrangeComponent:
        """
        The ArrangeComponent from the Arrange definition that resulted in the
        creation of this occurrence.
        """
        return ArrangeComponent()
    @property
    def parentEnvelope(self) -> ArrangeResultEnvelope:
        """
        The Arrange envelope this occurrence is within.
        """
        return ArrangeResultEnvelope()

class ArrangeOccurrenceResults(core.Base):
    """
    A collection that contains the occurrences in an Arrange envelope.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ArrangeOccurrenceResults:
        return ArrangeOccurrenceResults()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ArrangeOccurrenceResult:
        return None
    def __iter__(self) -> Iterator[ArrangeOccurrenceResult]:
        return None
    def item(self, index: int) -> ArrangeOccurrenceResult:
        """
        Returns the specified Arrange occurrence 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 ArrangeOccurrenceResult()
    @property
    def count(self) -> int:
        """
        Returns the number of Arrange occurrences in the collection.
        """
        return int()

class ArrangeResultEnvelope(core.Base):
    """
    The ArrangeResult object represents the results of an arrangement
    for a single envelope.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ArrangeResultEnvelope:
        return ArrangeResultEnvelope()
    @property
    def name(self) -> str:
        """
        Gets and sets the name of the envelope as seen in the browser.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name of the envelope as seen in the browser.
        """
        pass
    @property
    def occurrences(self) -> ArrangeOccurrenceResults:
        """
        Returns a collection object of the occurrences in this envelope.
        """
        return ArrangeOccurrenceResults()
    @property
    def parentFeature(self) -> ArrangeFeature:
        """
        Returns the ArrangeFeature object this result is for.
        """
        return ArrangeFeature()
    @property
    def envelopeDefinition(self) -> ArrangeEnvelopeDefinition:
        """
        Returns the envelope definition that provides the settings for this envelope.
        
        To use this property, you need to position the timeline marker immediately before the Arrange feature.
        This can be accomplished using the following code: arrangeFeature.timelineObject.rollTo(True)
        """
        return ArrangeEnvelopeDefinition()

class ArrangeResultEnvelopes(core.Base):
    """
    Provides access to the results of an arrangement. For 3D arrangements, this will always
    contain a single result. For plane or profile envelopes this can contain multiple envelope results.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ArrangeResultEnvelopes:
        return ArrangeResultEnvelopes()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ArrangeResultEnvelope:
        return None
    def __iter__(self) -> Iterator[ArrangeResultEnvelope]:
        return None
    def item(self, index: int) -> ArrangeResultEnvelope:
        """
        Returns the specified Arrange envelope result 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 ArrangeResultEnvelope()
    @property
    def count(self) -> int:
        """
        Returns the number of Arrange envelope results for this Arrange feature.
        """
        return int()

class AsBuiltJoint(core.Base):
    """
    Represent an as-built joint.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AsBuiltJoint:
        return AsBuiltJoint()
    def deleteMe(self) -> bool:
        """
        Deletes this as-built joint.
        Returns true if the delete was successful.
        """
        return bool()
    def setAsRigidJointMotion(self) -> bool:
        """
        Redefines the relationship between the two joint geometries as a rigid joint.
        
        To use this method, you need to position the timeline marker to immediately before this as-built joint.
        This can be accomplished using the following code: thisAsBuiltJoint.timelineObject.rollTo(True)
        Returns true if successful.
        """
        return bool()
    def setAsRevoluteJointMotion(self, rotationAxis: JointDirections, geometry: JointGeometry = None, customRotationAxisEntity: core.Base = None) -> bool:
        """
        Redefines the relationship between the two joint geometries as a revolute joint.
        
        To use this method, you need to position the timeline marker to immediately before this as-built joint.
        This can be accomplished using the following code: thisAsBuiltJoint.timelineObject.rollTo(True)
        rotationAxis : Specifies which axis the rotation is around. If this is set to CustomJointDirection then the
        customRotationAxisEntity argument must also be provided.
        geometry : Redefines the joint geometry. If not provided, the existing geometry is used. This argument is
        required if the current joint motion is rigid.
        customRotationAxisEntity : If the rotationAxis is customAxisEntity this argument is used to specify the entity that defines
        the custom axis of rotation. This can be several types of entities that an axis can be derived
        from.
        Returns true if the operation was successful.
        """
        return bool()
    def setAsSliderJointMotion(self, sliderDirection: JointDirections, geometry: JointGeometry = None, customSliderDirectionEntity: core.Base = None) -> bool:
        """
        Redefines the relationship between the two joint geometries as a slider joint.
        
        To use this method, you need to position the timeline marker to immediately before this as-built joint.
        This can be accomplished using the following code: thisAsBuiltJoint.timelineObject.rollTo(True)
        sliderDirection : Specifies which axis the slide direction is along. If this is set to CustomJointDirection then the
        customSliderDirectionEntity argument must also be provided.
        geometry : Redefines the joint geometry. If not provided, the existing geometry is used. This argument is
        required if the current joint motion is rigid.
        customSliderDirectionEntity : If the sliderDirection is CustomJointDirection this argument is used to specify the entity that defines
        the custom slider direction. This can be several types of entities that can define a direction.
        Returns true if the operation was successful.
        """
        return bool()
    def setAsCylindricalJointMotion(self, rotationAxis: JointDirections, geometry: JointGeometry = None, customRotationAxisEntity: core.Base = None) -> bool:
        """
        Redefines the relationship between the two joint geometries as a cylindrical joint.
        
        To use this method, you need to position the timeline marker to immediately before this as-built joint.
        This can be accomplished using the following code: thisAsBuiltJoint.timelineObject.rollTo(True)
        rotationAxis : Specifies which axis the rotation is around. If this is set to CustomJointDirection then the
        customRotationAxisEntity argument must also be provided.
        geometry : Redefines the joint geometry. If not provided, the existing geometry is used. This argument is
        required if the current joint motion is rigid.
        customRotationAxisEntity : If the rotationAxis is customAxisEntity this argument is used to specify the entity that defines
        the custom axis of rotation. This can be several types of entities that an axis can be derived
        from.
        Returns true if the operation was successful.
        """
        return bool()
    def setAsPinSlotJointMotion(self, rotationAxis: JointDirections, slideDirection: JointDirections, geometry: JointGeometry = None, customRotationAxisEntity: core.Base = None, customSlideDirectionEntity: core.Base = None) -> bool:
        """
        Redefines the relationship between the two joint geometries as a pin-slot joint.
        
        To use this method, you need to position the timeline marker to immediately before this as-built joint.
        This can be accomplished using the following code: thisAsBuiltJoint.timelineObject.rollTo(True)
        rotationAxis : Specifies which axis the rotation is around. If this is set to CustomJointDirection then the
        customRotationAxisEntity argument must also be provided.
        slideDirection : Specifies which axis the slide direction is along. If this is set to CustomJointDirection then the
        customSlideDirectionEntity argument must also be provided.
        geometry : Redefines the joint geometry. If not provided, the existing geometry is used. This argument is
        required if the current joint motion is rigid.
        customRotationAxisEntity : If the rotationAxis is customAxisEntity this argument is used to specify the entity that defines
        the custom axis of rotation. This can be several types of entities that an axis can be derived
        customSlideDirectionEntity : If the slideDirection is CustomJointDirection this argument is used to specify the entity that defines
        the custom slide direction. This can be several types of entities that can define a direction.
        Returns true if the operation was successful.
        """
        return bool()
    def setAsPlanarJointMotion(self, normalDirection: JointDirections, geometry: JointGeometry = None, customNormalDirectionEntity: core.Base = None, customPrimarySlideDirection: core.Base = None) -> bool:
        """
        Redefines the relationship between the two joint geometries as a planar joint.
        
        To use this method, you need to position the timeline marker to immediately before this as-built joint.
        This can be accomplished using the following code: thisAsBuiltJoint.timelineObject.rollTo(True)
        normalDirection : Defines the direction of the normal of the single degree of rotation.
        This can be set to XAxisJointDirection, YAxisJointDirection, ZAxisJointDirection,
        or CustomJointDirection. If set to CustomJointDirection then the customNormalDirectionEntity
        argument must also be provided.
        geometry : Redefines the joint geometry. If not provided, the existing geometry is used. This argument is
        required if the current joint motion is rigid.
        customNormalDirectionEntity : If the normalDirection is CustomJointDirection this argument is used to specify the entity that defines
        the direction of the normal. This can be several types of entities that can define a direction.
        customPrimarySlideDirection : This arguments defines the direction of the primary slide direction. A default primary slide direction
        is automatically chosen and will be used if this argument is not provided or is null. The secondary slide
        direction is automatically inferred from the normal and primary slide directions.
        Returns true if the operation was successful.
        """
        return bool()
    def setAsBallJointMotion(self, pitchDirection: JointDirections, yawDirection: JointDirections, geometry: JointGeometry = None, customPitchDirection: core.Base = None, customYawDirection: core.Base = None) -> bool:
        """
        Redefines the relationship between the two joint geometries as a ball joint.
        
        To use this method, you need to position the timeline marker to immediately before this as-built joint.
        This can be accomplished using the following code: thisAsBuiltJoint.timelineObject.rollTo(True)
        pitchDirection : Defines the direction the pitch angle is measured from. This can be ZAxisJointDirection or CustomJointDirection. If
        CustomJointDirection is specified then you must also provide a value for the customPitchDirection argument.
        yawDirection : Defines the direction the yaw is measured from. This can be XAxisJointDirection or CustomJointDirection. If
        CustomJointDirection is specified then you must also provide a value for the customYawDirection argument.
        geometry : Redefines the joint geometry. If not provided, the existing geometry is used. This argument is
        required if the current joint motion is rigid.
        customPitchDirection : If the pitchDirection argument is customPitchDirection this argument is used to define the direction the pitch
        angel is measured from. This can be several types of entities that can define a direction.
        customYawDirection : If the yawDirection argument is customPitchDirection this argument is used to define the direction the yaw
        angel is measured from. This can be several types of entities that can define a direction.
        Returns true if the operation was successful.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> AsBuiltJoint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return AsBuiltJoint()
    @property
    def parentComponent(self) -> Component:
        """
        Returns the parent component that owns this AsBuiltJoint.
        """
        return Component()
    @property
    def name(self) -> str:
        """
        The name of the as-built joint as it is displayed in the timeline and the browser. The
        name can be changed.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        The name of the as-built joint as it is displayed in the timeline and the browser. The
        name can be changed.
        """
        pass
    @property
    def occurrenceOne(self) -> Occurrence:
        """
        Specifies the first of two occurrences the joint is between.
        """
        return Occurrence()
    @property
    def occurrenceTwo(self) -> Occurrence:
        """
        Specifies the second of two occurrences the joint is between.
        """
        return Occurrence()
    @property
    def geometry(self) -> JointGeometry:
        """
        Specifies the position of the joint. Getting this property will return null and
        setting it will be ignored in the case where the joint motion is rigid.
        
        To set this property, you need to position the timeline marker to immediately before this as-built joint.
        This can be accomplished using the following code: thisAsBuiltJoint.timelineObject.rollTo(True)
        """
        return JointGeometry()
    @geometry.setter
    def geometry(self, value: JointGeometry):
        """
        Specifies the position of the joint. Getting this property will return null and
        setting it will be ignored in the case where the joint motion is rigid.
        
        To set this property, you need to position the timeline marker to immediately before this as-built joint.
        This can be accomplished using the following code: thisAsBuiltJoint.timelineObject.rollTo(True)
        """
        pass
    @property
    def timelineObject(self) -> TimelineObject:
        """
        Returns the timeline object associated with this as-built joint.
        """
        return TimelineObject()
    @property
    def jointMotion(self) -> JointMotion:
        """
        Returns a JointMotion object that defines the motion relationship between the two geometries.
        """
        return JointMotion()
    @property
    def nativeObject(self) -> AsBuiltJoint:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return AsBuiltJoint()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this object
        in an assembly. This is only valid in the case where this is acting
        as a proxy in an assembly. Returns null in the case where the object
        is not in the context of an assembly but is already the native object.
        """
        return Occurrence()
    @property
    def isSuppressed(self) -> bool:
        """
        Gets and sets if this as-built joint is suppressed.
        """
        return bool()
    @isSuppressed.setter
    def isSuppressed(self, value: bool):
        """
        Gets and sets if this as-built joint is suppressed.
        """
        pass
    @property
    def isLightBulbOn(self) -> bool:
        """
        Gets and sets if the light bulb of this as-built joint as displayed in the browser is on or off.
        A joint will only be visible if the light bulb is switched on. However,
        the light bulb can be on and the joint still invisible if a higher level occurrence
        in the assembly context is not visible because its light bulb is off or the joints folder
        is light bulb is off.
        """
        return bool()
    @isLightBulbOn.setter
    def isLightBulbOn(self, value: bool):
        """
        Gets and sets if the light bulb of this as-built joint as displayed in the browser is on or off.
        A joint will only be visible if the light bulb is switched on. However,
        the light bulb can be on and the joint still invisible if a higher level occurrence
        in the assembly context is not visible because its light bulb is off or the joints folder
        is light bulb is off.
        """
        pass
    @property
    def isVisible(self) -> bool:
        """
        Gets whether the as-built joint is visible. To change the visibility see the isLightBulbOn property.
        This property is affected by the assembly context.
        """
        return bool()
    @property
    def attributes(self) -> core.Attributes:
        """
        Returns the collection of attributes associated with this as-built joint.
        """
        return core.Attributes()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the AsBuiltJoint object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same as-built joint.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        """
        return str()
    @property
    def transform(self) -> core.Matrix3D:
        """
        Returns the position and orientation of the joint geometry associated with this as-built joint.
        This is returned as a 3D matrix which provides the origin and the X, Y, and Z axis vectors of the
        coordinate system.
        
        This property is especially useful in cases where the JointGeometry cannot be obtained. This can
        happen when the model has been modified in a way where the geometry used to create the joint is
        no longer available.
        """
        return core.Matrix3D()
    @property
    def motionLinks(self) -> list[MotionLink]:
        """
        Returns the MotionLink objects that this joint is involved in.
        """
        return [MotionLink()]

class AsBuiltJointInput(core.Base):
    """
    Defines all of the information needed to create an as-built joint.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AsBuiltJointInput:
        return AsBuiltJointInput()
    def setAsRigidJointMotion(self) -> bool:
        """
        Defines the relationship between the two joint geometries as a rigid joint.
        Returns true if successful.
        """
        return bool()
    def setAsRevoluteJointMotion(self, rotationAxis: JointDirections, customRotationAxisEntity: core.Base = None) -> bool:
        """
        Defines the relationship between the two joint geometries as a revolute joint.
        rotationAxis : Specifies which axis the rotation is around. If this is set to CustomJointDirection then the
        customRotationAxisEntity argument must also be provided.
        customRotationAxisEntity : If the rotationAxis is customAxisEntity this argument is used to specify the entity that defines
        the custom axis of rotation. This can be several types of entities that an axis can be derived
        from.
        Returns true if the operation was successful.
        """
        return bool()
    def setAsSliderJointMotion(self, sliderDirection: JointDirections, customSliderDirectionEntity: core.Base = None) -> bool:
        """
        Defines the relationship between the two joint geometries as a slider joint.
        sliderDirection : Specifies which axis the slide direction is along. If this is set to CustomJointDirection then the
        customSliderDirectionEntity argument must also be provided.
        customSliderDirectionEntity : If the sliderDirection is CustomJointDirection this argument is used to specify the entity that defines
        the custom slider direction. This can be several types of entities that can define a direction.
        Returns true if the operation was successful.
        """
        return bool()
    def setAsCylindricalJointMotion(self, rotationAxis: JointDirections, customRotationAxisEntity: core.Base = None) -> bool:
        """
        Defines the relationship between the two joint geometries as a cylindrical joint.
        rotationAxis : Specifies which axis the rotation is around. If this is set to CustomJointDirection then the
        customRotationAxisEntity argument must also be provided.
        customRotationAxisEntity : If the rotationAxis is customAxisEntity this argument is used to specify the entity that defines
        the custom axis of rotation. This can be several types of entities that an axis can be derived
        from.
        Returns true if the operation was successful.
        """
        return bool()
    def setAsPinSlotJointMotion(self, rotationAxis: JointDirections, slideDirection: JointDirections, customRotationAxisEntity: core.Base = None, customSlideDirectionEntity: core.Base = None) -> bool:
        """
        Defines the relationship between the two joint geometries as a pin-slot joint.
        rotationAxis : Specifies which axis the rotation is around. If this is set to CustomJointDirection then the
        customRotationAxisEntity argument must also be provided.
        slideDirection : Specifies which axis the slide direction is along. If this is set to CustomJointDirection then the
        customSlideDirectionEntity argument must also be provided.
        customRotationAxisEntity : If the rotationAxis is customAxisEntity this argument is used to specify the entity that defines
        the custom axis of rotation. This can be several types of entities that an axis can be derived
        customSlideDirectionEntity : If the slideDirection is CustomJointDirection this argument is used to specify the entity that defines
        the custom slide direction. This can be several types of entities that can define a direction.
        Returns true if the operation was successful.
        """
        return bool()
    def setAsPlanarJointMotion(self, normalDirection: JointDirections, customNormalDirectionEntity: core.Base = None, customPrimarySlideDirection: core.Base = None) -> bool:
        """
        Defines the relationship between the two joint geometries as a planar joint.
        normalDirection : Defines the direction of the normal of the single degree of rotation.
        This can be set to XAxisJointDirection, YAxisJointDirection, ZAxisJointDirection,
        or CustomJointDirection. If set to CustomJointDirection then the customNormalDirectionEntity
        argument must also be provided.
        customNormalDirectionEntity : If the normalDirection is CustomJointDirection this argument is used to specify the entity that defines
        the direction of the normal. This can be several types of entities that can define a direction.
        customPrimarySlideDirection : This arguments defines the direction of the primary slide direction. A default primary slide direction
        is automatically chosen and will be used if this argument is not provided or is null. The secondary slide
        direction is automatically inferred from the normal and primary slide directions.
        Returns true if the operation was successful.
        """
        return bool()
    def setAsBallJointMotion(self, pitchDirection: JointDirections, yawDirection: JointDirections, customPitchDirection: core.Base = None, customYawDirection: core.Base = None) -> bool:
        """
        Defines the relationship between the two joint geometries as a ball joint.
        pitchDirection : Defines the direction the pitch angle is measured from. This can be ZAxisJointDirection or CustomJointDirection. If
        CustomJointDirection is specified then you must also provide a value for the customPitchDirection argument.
        yawDirection : Defines the direction the yaw is measured from. This can be XAxisJointDirection or CustomJointDirection. If
        CustomJointDirection is specified then you must also provide a value for the customYawDirection argument.
        customPitchDirection : If the pitchDirection argument is customPitchDirection this argument is used to define the direction the pitch
        angel is measured from. This can be several types of entities that can define a direction.
        customYawDirection : If the yawDirection argument is customPitchDirection this argument is used to define the direction the yaw
        angel is measured from. This can be several types of entities that can define a direction.
        Returns true if the operation was successful.
        """
        return bool()
    @property
    def occurrenceOne(self) -> Occurrence:
        """
        Specifies the first of two occurrences the joint is between.
        """
        return Occurrence()
    @occurrenceOne.setter
    def occurrenceOne(self, value: Occurrence):
        """
        Specifies the first of two occurrences the joint is between.
        """
        pass
    @property
    def occurrenceTwo(self) -> Occurrence:
        """
        Specifies the second of two occurrences the joint is between.
        """
        return Occurrence()
    @occurrenceTwo.setter
    def occurrenceTwo(self, value: Occurrence):
        """
        Specifies the second of two occurrences the joint is between.
        """
        pass
    @property
    def geometry(self) -> JointGeometry:
        """
        Specifies the position of the joint.
        """
        return JointGeometry()
    @geometry.setter
    def geometry(self, value: JointGeometry):
        """
        Specifies the position of the joint.
        """
        pass
    @property
    def jointMotion(self) -> JointMotion:
        """
        Returns one of the objects derived from JointMotion that defines how the motion between
        the two joint geometries is defined. Can be null if the motion hasn't yet been defined.
        """
        return JointMotion()

class AsBuiltJointList(core.Base):
    """
    A list of as-built joints.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AsBuiltJointList:
        return AsBuiltJointList()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> AsBuiltJoint:
        return None
    def __iter__(self) -> Iterator[AsBuiltJoint]:
        return None
    def item(self, index: int) -> AsBuiltJoint:
        """
        Function that returns the specified as-built joint using an index into the list.
        index : The index of the item within the list to return. The first item in the list has an index of 0.
        Returns the specified item or null if an invalid index was specified.
        """
        return AsBuiltJoint()
    def itemByName(self, name: str) -> AsBuiltJoint:
        """
        Function that returns the specified as-built joint using a name.
        name : The name of the item within the list to return.
        Returns the specified item or null if an invalid name was specified.
        """
        return AsBuiltJoint()
    @property
    def count(self) -> int:
        """
        Returns number of as-built joints in the list.
        """
        return int()

class AsBuiltJoints(core.Base):
    """
    The collection of as-built joints in this component. This provides access to all existing
    as-built joints and supports the ability to create new as-built joints.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AsBuiltJoints:
        return AsBuiltJoints()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> AsBuiltJoint:
        return None
    def __iter__(self) -> Iterator[AsBuiltJoint]:
        return None
    def item(self, index: int) -> AsBuiltJoint:
        """
        Function that returns the specified as-built joint 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 AsBuiltJoint()
    def itemByName(self, name: str) -> AsBuiltJoint:
        """
        Function that returns the specified as-built joint using a name.
        name : The name of the item within the collection to return.
        Returns the specified item or null if an invalid name was specified.
        """
        return AsBuiltJoint()
    def createInput(self, occurrenceOne: Occurrence, occurrenceTwo: Occurrence, geometry: JointGeometry) -> AsBuiltJointInput:
        """
        Creates an AsBuiltJointInput object which is used to collect all of the information needed
        to create an as-built joint. This object is equivalent to the as-built joint dialog in the
        user-interface in that it doesn't represent an actual joint but just the information needed
        to create an as-built joint. Once this is fully defined the add method can be called, passing
        this object in to create the actual joint.
        occurrenceOne : Specifies the first of two occurrences the joint is between.
        occurrenceTwo : Specifies the second of two occurrences the joint is between.
        geometry : Specifies the geometry of where the joint will be positioned. If the as-built joint is
        a rigid joint, this argument should be null because no geometry is needed.
        Returns the new AsBuiltJointInput object or null in the case of failure.
        """
        return AsBuiltJointInput()
    def add(self, input: AsBuiltJointInput) -> AsBuiltJoint:
        """
        Creates a new as-built joint.
        input : An AsBuiltJointInput object that was created using the AsBuiltJoints.createInput method and then fully defined
        using the properties and methods on the AsBuiltJointInput object.
        Returns the new AsBuiltJoint object or null in the case of failure.
        """
        return AsBuiltJoint()
    @property
    def count(self) -> int:
        """
        Returns number of joint origins in the collection.
        """
        return int()

class AssemblyConstraint(core.Base):
    """
    Represents an assembly constraint.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AssemblyConstraint:
        return AssemblyConstraint()
    def deleteMe(self) -> bool:
        """
        Deletes this assembly constraint.
        Returns true if the delete is successful.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> AssemblyConstraint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return AssemblyConstraint()
    @property
    def name(self) -> str:
        """
        Gets and sets the name of the assembly constraint. This is the name seen in the browser and timeline.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name of the assembly constraint. This is the name seen in the browser and timeline.
        """
        pass
    @property
    def geometricRelationships(self) -> GeometricRelationships:
        """
        Returns the set of geometric relationships used for this assembly constraint.
        """
        return GeometricRelationships()
    @property
    def parentComponent(self) -> Component:
        """
        Returns the parent component that owns this assembly constraint.
        """
        return Component()
    @property
    def timelineObject(self) -> TimelineObject:
        """
        Returns the timeline object associated with this assembly constraint.
        """
        return TimelineObject()
    @property
    def nativeObject(self) -> AssemblyConstraint:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return AssemblyConstraint()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this object
        in an assembly. This is only valid in the case where this is acting
        as a proxy in an assembly. Returns null in the case where the object
        is not in the context of an assembly but is already the native object.
        """
        return Occurrence()
    @property
    def isSuppressed(self) -> bool:
        """
        Gets and sets if this assembly constraint is suppressed. If suppressed,
        all of the assembly constraints within the  will be suppressed.
        """
        return bool()
    @isSuppressed.setter
    def isSuppressed(self, value: bool):
        """
        Gets and sets if this assembly constraint is suppressed. If suppressed,
        all of the assembly constraints within the  will be suppressed.
        """
        pass
    @property
    def attributes(self) -> core.Attributes:
        """
        Returns the collection of attributes associated with this assembly constraint.
        """
        return core.Attributes()
    @property
    def healthState(self) -> FeatureHealthStates:
        """
        Returns the current health state of the assembly constraint.
        """
        return FeatureHealthStates()
    @property
    def errorOrWarningMessage(self) -> str:
        """
        Returns the error or warning message in the case where the healthState property returns either
        WarningFeatureHealthState or ErrorFeatureHealthState. Otherwise this property returns an empty string.
        """
        return str()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the assembly constraint object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same assembly constraint.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        """
        return str()
    @property
    def isLightBulbOn(self) -> bool:
        """
        Gets and sets if the light bulb of this assembly constraint, as displayed in the browser, is on or off.
        An assembly constraint will only be visible if the light bulb is switched on. However,
        the light bulb can be on and the assembly constraint still invisible if a higher level occurrence
        in the assembly context is not visible because its light bulb is off or the light bulb of the parent Joints
        folder is off.
        """
        return bool()
    @isLightBulbOn.setter
    def isLightBulbOn(self, value: bool):
        """
        Gets and sets if the light bulb of this assembly constraint, as displayed in the browser, is on or off.
        An assembly constraint will only be visible if the light bulb is switched on. However,
        the light bulb can be on and the assembly constraint still invisible if a higher level occurrence
        in the assembly context is not visible because its light bulb is off or the light bulb of the parent Joints
        folder is off.
        """
        pass
    @property
    def isVisible(self) -> bool:
        """
        Gets whether the assembly constraint is visible. To change the visibility see the isLightBulbOn property.
        This property is affected by the assembly context.
        """
        return bool()

class AssemblyConstraintInput(core.Base):
    """
    Defines all of the information required to create a new assembly constraint. This object provides
    equivalent functionality to the Assembly Relationships command dialog in that it gathers the required
    information to create an assembly constraint.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AssemblyConstraintInput:
        return AssemblyConstraintInput()
    @property
    def geometricRelationships(self) -> GeometricRelationships:
        """
        Returns the collection object used to define the geometric relationships that
        the constraints will be inferred from. A geometric relationship defines a pair of entities,
        if the relationships is flipped, and the offset or angle value.
        """
        return GeometricRelationships()

class AssemblyConstraints(core.Base):
    """
    The collection of assembly constraints in this component. This provides access to all existing
    assembly constraints and supports the ability to create new assembly constraints.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AssemblyConstraints:
        return AssemblyConstraints()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> AssemblyConstraint:
        return None
    def __iter__(self) -> Iterator[AssemblyConstraint]:
        return None
    def item(self, index: int) -> AssemblyConstraint:
        """
        Function that returns the specified assembly constraint 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 AssemblyConstraint()
    def itemByName(self, name: str) -> AssemblyConstraint:
        """
        Function that returns the specified assembly constraint object using a name.
        name : The name of the item within the collection to return.
        Returns the specified item or null if an invalid name was specified.
        """
        return AssemblyConstraint()
    def createInput(self) -> AssemblyConstraintInput:
        """
        Creates an assembly constraint input to define an assembly constraint. Use functionality
        on the returned AssemblyConstraintInput to define the input needed to create an assembly constraint.
        Returns an AssemblyConstraintInput.
        """
        return AssemblyConstraintInput()
    def add(self, input: AssemblyConstraintInput) -> AssemblyConstraint:
        """
        Creates a new assembly constraint.
        input : The AssemblyConstraintInput object that defines the geometry and various inputs that define an
        assembly constraint. An AssemblyConstraintInput object is created using
        the AssemblyConstraints.createInput method.
        Returns the newly created AssemblyConstraint or null in the case of failure.
        """
        return AssemblyConstraint()
    @property
    def count(self) -> int:
        """
        Returns the number of assembly constraint objects in the collection.
        """
        return int()

class AutoConstrainInput(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The AutoConstrainInput object is used to define the various options when adding dimension
    and geometric constraints to help constrain a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AutoConstrainInput:
        return AutoConstrainInput()
    @property
    def datumPoint(self) -> SketchPoint:
        """
        Gets and sets an optional datum point that the dimensions will be based on. This defaults to null,
        which indicates there is no datum point specified. When no datum point is provided, AutoConstrain
        will automatically select an appropriate datum based on the sketch content and geometry.
        """
        return SketchPoint()
    @datumPoint.setter
    def datumPoint(self, value: SketchPoint):
        """
        Gets and sets an optional datum point that the dimensions will be based on. This defaults to null,
        which indicates there is no datum point specified. When no datum point is provided, AutoConstrain
        will automatically select an appropriate datum based on the sketch content and geometry.
        """
        pass
    @property
    def parentSketch(self) -> Sketch:
        """
        Returns the Sketch this object is associated with and where the dimension and geometric constraints
        will be added when the autoConstrain method is called. This property is read-only and is set when
        the input object is created by the sketch's createAutoConstrainInput method.
        """
        return Sketch()

class AutoConstrainResult(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Provides the result information after a sketch auto constrain operation has been executed.
    This object contains details about what constraints and dimensions were added and whether
    the sketch was successfully fully constrained.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AutoConstrainResult:
        return AutoConstrainResult()
    @property
    def addedDimensions(self) -> list[SketchDimension]:
        """
        Returns an array of the SketchDimension objects that were added to constrain the sketch.
        If no dimensions were added during the auto constrain operation, this property returns
        an empty array.
        """
        return [SketchDimension()]
    @property
    def addedConstraints(self) -> list[GeometricConstraint]:
        """
        Returns an array of the GeometricConstraint objects that were added to constrain the sketch.
        If no geometric constraints were added during the auto constrain operation, this property
        returns an empty array.
        """
        return [GeometricConstraint()]
    @property
    def isFullyConstrained(self) -> bool:
        """
        Indicates if the auto constrain operation successfully auto constrained the sketch. Returns true if
        the sketch is fully constrained after the operation, false otherwise. A value of false may indicate
        that additional constraints are needed or that the current sketch geometry cannot be fully constrained
        with the current settings.
        """
        return bool()

class BaseComponent(core.Base):
    """
    The BaseComponent object that defines all of the common design data
    and is the base class for the product specific components.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BaseComponent:
        return BaseComponent()
    def occurrencesByComponent(self, component: Component) -> OccurrenceList:
        """
        Returns all occurrences at the top-level of this component that reference the specified component.
        The returned list is read-only.
        component : The component that is being referenced by the occurrences that will be returned.
        The occurrences referenced by the specified component.
        """
        return OccurrenceList()
    def allOccurrencesByComponent(self, component: Component) -> OccurrenceList:
        """
        Returns all occurrences, at any level of the assembly, that reference the specified component.
        The returned list is read-only.
        component : The component that is being referenced by the occurrences that will be returned.
        The occurrences referenced by the specified component.
        """
        return OccurrenceList()
    def findBRepUsingRay(self, originPoint: core.Point3D, rayDirection: core.Vector3D, entityType: BRepEntityTypes, proximityTolerance: float = -1, visibleEntitiesOnly: bool = True, hitPoints: core.ObjectCollection = None) -> core.ObjectCollection:
        """
        Finds all the B-Rep entities that are intersected by the specified ray. This can return BRepFace, BrepEdge,
        and BRepVertex objects.
        originPoint : Input point that defines the origin of the ray. The search for entities begins at this point.
        rayDirection : Input vector that defines the direction of the ray. The ray is infinite so the length of the vector is ignored.
        entityType : The type of B-Rep entity wanted. You can also take advantage of B-Rep topology to infer other intersections. For example,
        If you get a BRepEdge it implies that the faces the edge connects were also intersected. If a BRepVertex is returned it
        implies the edges that the vertex connects were intersected and the faces that the edges connect were intersected.
        proximityTolerance : Optional argument that specifies the tolerance for the search. All entities within this distance from the ray and of the specified type will be returned. If not specified a default small tolerance is used.
        visibleEntitiesOnly : Optional argument that indicates whether or not invisible entities should be included in the search. Defaults to True indicating that invisible entities will be ignored.
        hitPoints : An ObjectCollection of Point3D objects that represent the coordinates where the ray hit the found entity. There will be the same number of hit points as returned entities
        and they will be in the collections in the same order. In other words, hit point 1 corresponds with found entity 1, hit point 2 corresponds with found entity 2, and so on.
        Because of the proximity tolerance the hitPoint may not actually lie on the entity but will be within the proximity tolerance to it.
        It's an optional out argument, returns the hit points if an existing ObjectCollection is input. You can create a new ObjectCollection by using
        the static create method on the ObjectCollection class.
        Returns an ObjectCollection containing the entities found. The returned collection can be empty indicating nothing was found. The points are returned
        in an order where they are arranged based on their distance from the origin point where the closest point is first. If an entity is hit more than
        once, the entity is returned once for the first intersection.
        """
        return core.ObjectCollection()
    def findBRepUsingPoint(self, point: core.Point3D, entityType: BRepEntityTypes, proximityTolerance: float = -1, visibleEntitiesOnly: bool = True) -> core.ObjectCollection:
        """
        Finds all the entities of the specified type at the specified location.
        point : Input coordinate that specifies the component space point at which to find the entities.
        entityType : The type of B-Rep entity wanted. You can also take advantage of B-Rep topology to infer other that other entities were found. For example,
        If you get a BRepEdge it implies that the faces the edge connects were also found. If a BRepVertex is returned it
        implies the edges that the vertex connects were found and the faces that the edges connect were found.
        proximityTolerance : Specifies the tolerance for the search. All entities within this distance from the search point that match the filter will be returned. If not specified a default tolerance is used.
        visibleEntitiesOnly : indicates whether or not invisible objects should be included in the search. Defaults to True indicating that invisible objects will be ignored.
        Returns an ObjectCollection containing the entities found. The returned collection can be empty indicating nothing was found.
        """
        return core.ObjectCollection()
    @property
    def name(self) -> str:
        """
        Property that gets and sets the name of this component. This is the name
        shown in the browser for each occurrence referencing this component.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Property that gets and sets the name of this component. This is the name
        shown in the browser for each occurrence referencing this component.
        """
        pass
    @property
    def occurrences(self) -> Occurrences:
        """
        Property that returns the Occurrences collection associated with this component.
        This provides access to the occurrences at the top-level of this component and provides
        the functionality to add new occurrences.
        """
        return Occurrences()
    @property
    def allOccurrences(self) -> OccurrenceList:
        """
        Returns all of the occurrences in the assembly regardless of their level within the assembly structure.
        The returned list is read-only.
        """
        return OccurrenceList()
    @property
    def constructionPlanes(self) -> ConstructionPlanes:
        """
        Returns the construction planes collection associated with this component.
        This provides access to the existing construction planes and supports
        the creation of new construction planes.
        """
        return ConstructionPlanes()
    @property
    def constructionAxes(self) -> ConstructionAxes:
        """
        Returns the construction axes collection associated with this component.
        This provides access to the existing construction axes and supports
        the creation of new construction axes.
        """
        return ConstructionAxes()
    @property
    def constructionPoints(self) -> ConstructionPoints:
        """
        Returns the construction points collection associated with this component.
        This provides access to the existing construction points and supports
        the creation of new construction points.
        """
        return ConstructionPoints()
    @property
    def bRepBodies(self) -> BRepBodies:
        """
        Returns the B-Rep bodies collection associated with this component.
        """
        return BRepBodies()
    @property
    def parentDesign(self) -> Design:
        """
        Returns the parent product this component is owned by.
        """
        return Design()
    @property
    def canvases(self) -> Canvases:
        """
        Returns the canvases collection associated with this component. This provides access to the
        existing canvases and supports the creation of new canvases.
        """
        return Canvases()
    @property
    def propertyGroups(self) -> core.PropertyGroups:
        """
        Returns the PropertyGroups object associated with this component.
        """
        return core.PropertyGroups()
    @property
    def dataComponent(self) -> core.DataComponent:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the DataComponent associated with this component. The DataComponent
        provides ID information that can be used to access this component using the
        MFG DM API. These ID's don't exist until a component has been saved. The ID's
        are generated by MFG DM API on the cloud, so there will be a slight delay
        after saving before the ID's are available. This property returns null in
        the case the MFG DM API information doesn't exist yet.
        
        When opening a design, the MFG DM API information is obtained from the cloud
        and as a result may not be available immediately after opening a document. Again,
        this property will return null in this case too. Essentially, null is returned
        in all cases where good ID information is not yet available.
        """
        return core.DataComponent()
    @property
    def decals(self) -> Decals:
        """
        Returns the decals collection associated with this component. This provides access to the
        existing decals and supports the creation of new decals.
        """
        return Decals()
    @property
    def pmiAnnotations(self) -> PMIAnnotations:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the PMI collection associated with this component.
        This provides access to the existing PMI and supports the creation of new PMI.
        """
        return PMIAnnotations()

class BaseFeatures(core.Base):
    """
    The BaseFeature class represents a direct edit feature within a parametric design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BaseFeatures:
        return BaseFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> BaseFeature:
        return None
    def __iter__(self) -> Iterator[BaseFeature]:
        return None
    def item(self, index: int) -> BaseFeature:
        """
        Function that returns the specified base feature 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 BaseFeature()
    def itemByName(self, name: str) -> BaseFeature:
        """
        Function that returns the specified base feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return BaseFeature()
    def add(self) -> BaseFeature:
        """
        Creates a new empty base feature in the parent component.
        Returns the new BaseFeature or null in the case of an error.
        """
        return BaseFeature()
    @property
    def count(self) -> int:
        """
        The number of base features in the collection.
        """
        return int()

class BossFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a boss feature or a boss connection.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BossFeatureInput:
        return BossFeatureInput()
    def setPositionBySketchPoints(self, pointOrPoints: core.Base) -> bool:
        """
        Defines the position and orientation of the boss feature using a sketch point(s).
        pointOrPoints : The sketch point or ObjectCollection of sketch points that defines the position(s) for boss mating location.
        The orientation of the boss feature is inferred from the normal (Z-axis) of the point's parent sketch.
        The natural direction (or direction of the screw) will be opposite the normal of the sketch.
        If multiple sketch points are provided all must belong to the same sketch.
        Participant bodies will be inferred from closest visible bodies unless specified explicitly.
        Returns true if successful.
        """
        return bool()
    def createSideInput(self) -> BossFeatureSideInput:
        """
        Creates a new BossFeatureSideInput object that is used to specify the input for boss feature side.
        This object can be set to side1 or side2. Side1 is meant to be side where screw head engages with the boss
        and Side2 is meant to be a side where screw thread engages with the part or metal inserts.
        Returns BossFeatureSideInput if successful.
        """
        return BossFeatureSideInput()
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass
    @property
    def creationOccurrence(self) -> Occurrence:
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the boss feature is created based on geometry (e.g. point) in another
        component AND (the boss) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI.
        A value of null indicates that everything is in the context of a single component.
        The occurrence provided sets scope for detection of target participant bodies.
        """
        return Occurrence()
    @creationOccurrence.setter
    def creationOccurrence(self, value: Occurrence):
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the boss feature is created based on geometry (e.g. point) in another
        component AND (the boss) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI.
        A value of null indicates that everything is in the context of a single component.
        The occurrence provided sets scope for detection of target participant bodies.
        """
        pass
    @property
    def participantBodies(self) -> list[BRepBody]:
        """
        Gets and sets the list of bodies that will participate in the boss feature. If body provided does
        not intersect with direction vector at proposed position points it will be ignored. If more bodies intersect
        at given position point only the closest body will be accepted. Boss feature works with solid bodies only.
        If this property has not been set (or is empty) closest visible bodies will be detected automatically
        based on proposed positions and orientation.
        """
        return [BRepBody()]
    @participantBodies.setter
    def participantBodies(self, value: list[BRepBody]):
        """
        Gets and sets the list of bodies that will participate in the boss feature. If body provided does
        not intersect with direction vector at proposed position points it will be ignored. If more bodies intersect
        at given position point only the closest body will be accepted. Boss feature works with solid bodies only.
        If this property has not been set (or is empty) closest visible bodies will be detected automatically
        based on proposed positions and orientation.
        """
        pass
    @property
    def side1(self) -> BossFeatureSideInput:
        """
        Gets or sets inputs for top side of the boss feature connection. It is the side where screw head engages with the boss.
        Default Side1 direction is considered direction of Z-axis of the parent sketch for selected position point.
        """
        return BossFeatureSideInput()
    @side1.setter
    def side1(self, value: BossFeatureSideInput):
        """
        Gets or sets inputs for top side of the boss feature connection. It is the side where screw head engages with the boss.
        Default Side1 direction is considered direction of Z-axis of the parent sketch for selected position point.
        """
        pass
    @property
    def side2(self) -> BossFeatureSideInput:
        """
        Gets or sets inputs for bottom side of the boss feature connection. It is the side where screw thread engages with the part or metal insert.
        Default Side2 direction is considered opposite to the direction Z-axis of the parent sketch for selected position point.
        """
        return BossFeatureSideInput()
    @side2.setter
    def side2(self, value: BossFeatureSideInput):
        """
        Gets or sets inputs for bottom side of the boss feature connection. It is the side where screw thread engages with the part or metal insert.
        Default Side2 direction is considered opposite to the direction Z-axis of the parent sketch for selected position point.
        """
        pass
    @property
    def isDefaultDirection(self) -> bool:
        """
        Gets or sets if the boss feature (or boss connection) goes in the default direction or is reversed.
        """
        return bool()
    @isDefaultDirection.setter
    def isDefaultDirection(self, value: bool):
        """
        Gets or sets if the boss feature (or boss connection) goes in the default direction or is reversed.
        """
        pass
    @property
    def offset(self) -> core.ValueInput:
        """
        Gets or sets offset of the parting face from the selected position point.
        """
        return core.ValueInput()
    @offset.setter
    def offset(self, value: core.ValueInput):
        """
        Gets or sets offset of the parting face from the selected position point.
        """
        pass

class BossFeatures(core.Base):
    """
    Collection that provides access to all of the existing boss features in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BossFeatures:
        return BossFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> BossFeature:
        return None
    def __iter__(self) -> Iterator[BossFeature]:
        return None
    def item(self, index: int) -> BossFeature:
        """
        Function that returns the specified boss feature 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 BossFeature()
    def itemByName(self, name: str) -> BossFeature:
        """
        Function that returns the specified boss feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return BossFeature()
    def add(self, input: BossFeatureInput) -> list[BossFeature]:
        """
        Creates a new boss feature (or more boss features) based on the information provided
        by a BossFeatureInput object.
        To create a new boss or boss connection, use createInput function to define a new input object for
        the type of boss feature you want to create. Use the methods and properties on the input object
        to define any additional inputs. Once the information is defined on the input object, you
        can pass it to the Add method to create the boss feature or boss connection.
        input : The BossFeatureInput object that defines the boss or boss connection you want to create.
        Returns the newly created BossFeature objects or empty vector/list if the creation failed.
        """
        return [BossFeature()]
    def createInput(self) -> BossFeatureInput:
        """
        Creates a new BossFeatureInput object that is used to specify the input needed to create a new boss feature(s).
        Returns the newly created BossFeatureInput object or null if the creation failed.
        """
        return BossFeatureInput()
    @property
    def count(self) -> int:
        """
        The number of boss features in the collection.
        """
        return int()

class BossFeatureSideInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a single side of boss feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BossFeatureSideInput:
        return BossFeatureSideInput()
    def setBlank(self, diameter: core.ValueInput) -> None:
        """
        Set boss shape into blank constant diameter shank with no hole.
        diameter : The outside diameter for the boss feature shank.
        
        """
        pass
    def setSimple(self, diameter: core.ValueInput, holeDiameter: core.ValueInput) -> None:
        """
        Set boss shape into constant diameter shank with simple hole.
        diameter : The outside diameter for the boss feature shank.
        holeDiameter : The hole diameter.
        
        """
        pass
    def setCounterbore(self, diameter: core.ValueInput, holeDiameter: core.ValueInput, holeMajorDiameter: core.ValueInput, depth: core.ValueInput) -> None:
        """
        Set boss shape into constant diameter shank with counterbore hole.
        diameter : The outside diameter for the boss feature shank.
        holeDiameter : The hole diameter.
        holeMajorDiameter : The hole major (or counterbore) diameter.
        depth : With respect to hole orientation in the boss feature the parameter is either the counterbore depth or thickness of the material
        under the screw head.
        
        """
        pass
    def setCountersink(self, diameter: core.ValueInput, holeDiameter: core.ValueInput, holeMajorDiameter: core.ValueInput, depth: core.ValueInput, countersinkAngle: core.ValueInput = None) -> None:
        """
        Set boss shape into constant diameter shank with countersink hole.
        diameter : The outside diameter for the boss feature shank.
        holeDiameter : The hole diameter.
        holeMajorDiameter : The hole major (or countersink) diameter.
        depth : With respect to hole orientation in the boss feature the parameter is either the counterbore depth or thickness of the material
        under the screw head.
        countersinkAngle : Optional parameter for hole countersink angle. If not specified it is set to 90 deg.
        
        """
        pass
    def setRibExtent(self, position: core.Base, ribExtentTypes: list[int]) -> None:
        """
        Set rib extent type for particular rib for position point provided.
        position : Position point object for the rib extent types provided
        ribExtentTypes : Vector of BossRibExtentTypes for individual rib based on rib count input.
        
        """
        pass
    def clearRibExtent(self) -> None:
        """
        Clears rib extent types for all position points.
        
        """
        pass
    @property
    def alignmentType(self) -> BossAlignmentTypes:
        """
        Gets or sets boss alignment shape. This usually corresponds to the alignment shape of the boss counterpart.
        """
        return BossAlignmentTypes()
    @alignmentType.setter
    def alignmentType(self, value: BossAlignmentTypes):
        """
        Gets or sets boss alignment shape. This usually corresponds to the alignment shape of the boss counterpart.
        """
        pass
    @property
    def holeExtentType(self) -> BossHoleExtentTypes:
        """
        Gets or sets hole extent this feature represents. For top side only through hole extent is accepted.
        """
        return BossHoleExtentTypes()
    @holeExtentType.setter
    def holeExtentType(self, value: BossHoleExtentTypes):
        """
        Gets or sets hole extent this feature represents. For top side only through hole extent is accepted.
        """
        pass
    @property
    def ribType(self) -> BossRibShapeTypes:
        """
        Type of boss ribs this feature represents.
        """
        return BossRibShapeTypes()
    @ribType.setter
    def ribType(self, value: BossRibShapeTypes):
        """
        Type of boss ribs this feature represents.
        """
        pass
    @property
    def offsetClearance(self) -> core.ValueInput:
        """
        Gets or sets offset clearance as additional small offset from the selected parting plane and position point.
        """
        return core.ValueInput()
    @offsetClearance.setter
    def offsetClearance(self, value: core.ValueInput):
        """
        Gets or sets offset clearance as additional small offset from the selected parting plane and position point.
        """
        pass
    @property
    def diameter(self) -> core.ValueInput:
        """
        Gets or sets boss shank diameter.
        """
        return core.ValueInput()
    @diameter.setter
    def diameter(self, value: core.ValueInput):
        """
        Gets or sets boss shank diameter.
        """
        pass
    @property
    def draftAngle(self) -> core.ValueInput:
        """
        Gets or sets shank draft angle.
        """
        return core.ValueInput()
    @draftAngle.setter
    def draftAngle(self, value: core.ValueInput):
        """
        Gets or sets shank draft angle.
        """
        pass
    @property
    def alignmentDiameter(self) -> core.ValueInput:
        """
        Gets or sets alignment diameter.
        """
        return core.ValueInput()
    @alignmentDiameter.setter
    def alignmentDiameter(self, value: core.ValueInput):
        """
        Gets or sets alignment diameter.
        """
        pass
    @property
    def alignmentDepth(self) -> core.ValueInput:
        """
        Gets or sets alignment depth.
        """
        return core.ValueInput()
    @alignmentDepth.setter
    def alignmentDepth(self, value: core.ValueInput):
        """
        Gets or sets alignment depth.
        """
        pass
    @property
    def alignmentDraftAngle(self) -> core.ValueInput:
        """
        Gets or sets alignment draft angle.
        """
        return core.ValueInput()
    @alignmentDraftAngle.setter
    def alignmentDraftAngle(self, value: core.ValueInput):
        """
        Gets or sets alignment draft angle.
        """
        pass
    @property
    def holeDiameter(self) -> core.ValueInput:
        """
        Gets or sets hole diameter.
        """
        return core.ValueInput()
    @holeDiameter.setter
    def holeDiameter(self, value: core.ValueInput):
        """
        Gets or sets hole diameter.
        """
        pass
    @property
    def holeDraftAngle(self) -> core.ValueInput:
        """
        Gets or sets hole draft angle.
        """
        return core.ValueInput()
    @holeDraftAngle.setter
    def holeDraftAngle(self, value: core.ValueInput):
        """
        Gets or sets hole draft angle.
        """
        pass
    @property
    def holeDepth(self) -> core.ValueInput:
        """
        Gets or sets hole depth with respect to hole extent type.
        If hole extent type is set to BossHoleThrough parameter is ignored. If hole extent type is BossBlindFull
        the parameter is a distance from farthest face. If hole extent type is set to BossBlindDepth the parameter
        is a distance from start face of the hole.
        """
        return core.ValueInput()
    @holeDepth.setter
    def holeDepth(self, value: core.ValueInput):
        """
        Gets or sets hole depth with respect to hole extent type.
        If hole extent type is set to BossHoleThrough parameter is ignored. If hole extent type is BossBlindFull
        the parameter is a distance from farthest face. If hole extent type is set to BossBlindDepth the parameter
        is a distance from start face of the hole.
        """
        pass
    @property
    def holeMajorDiameter(self) -> core.ValueInput:
        """
        Gets or sets major hole diameter for counterbore or countersink hole.
        This input is ignored for blank boss or boss with simple hole.
        """
        return core.ValueInput()
    @holeMajorDiameter.setter
    def holeMajorDiameter(self, value: core.ValueInput):
        """
        Gets or sets major hole diameter for counterbore or countersink hole.
        This input is ignored for blank boss or boss with simple hole.
        """
        pass
    @property
    def holeMajorDepth(self) -> core.ValueInput:
        """
        Gets or sets major hole depth for counterbore and countersink hole or material thickness under screw head
        based on hole orientation in a boss feature. This input is ignored for blank boss or boss with simple hole.
        """
        return core.ValueInput()
    @holeMajorDepth.setter
    def holeMajorDepth(self, value: core.ValueInput):
        """
        Gets or sets major hole depth for counterbore and countersink hole or material thickness under screw head
        based on hole orientation in a boss feature. This input is ignored for blank boss or boss with simple hole.
        """
        pass
    @property
    def holeMajorDraftAngle(self) -> core.ValueInput:
        """
        Gets or sets major hole draft angle for counterbore and countersink hole.
        This input is ignored for blank boss or boss with simple hole.
        """
        return core.ValueInput()
    @holeMajorDraftAngle.setter
    def holeMajorDraftAngle(self, value: core.ValueInput):
        """
        Gets or sets major hole draft angle for counterbore and countersink hole.
        This input is ignored for blank boss or boss with simple hole.
        """
        pass
    @property
    def holeCountersinkAngle(self) -> core.ValueInput:
        """
        Gets or sets countersink angle for countersink hole. This input is used only for countersink hole.
        """
        return core.ValueInput()
    @holeCountersinkAngle.setter
    def holeCountersinkAngle(self, value: core.ValueInput):
        """
        Gets or sets countersink angle for countersink hole. This input is used only for countersink hole.
        """
        pass
    @property
    def rootRadius(self) -> core.ValueInput:
        """
        Gets or sets blend radius of the boss shank and participant body.
        """
        return core.ValueInput()
    @rootRadius.setter
    def rootRadius(self, value: core.ValueInput):
        """
        Gets or sets blend radius of the boss shank and participant body.
        """
        pass
    @property
    def tipRadius(self) -> core.ValueInput:
        """
        Gets or sets blend radius of the boss shank top parting face.
        """
        return core.ValueInput()
    @tipRadius.setter
    def tipRadius(self, value: core.ValueInput):
        """
        Gets or sets blend radius of the boss shank top parting face.
        """
        pass
    @property
    def alignmentTipRadius(self) -> core.ValueInput:
        """
        Gets or sets blend radius of the boss alignment tip.
        """
        return core.ValueInput()
    @alignmentTipRadius.setter
    def alignmentTipRadius(self, value: core.ValueInput):
        """
        Gets or sets blend radius of the boss alignment tip.
        """
        pass
    @property
    def alignmentRootRadius(self) -> core.ValueInput:
        """
        Gets or sets blend radius of the boss alignment root.
        """
        return core.ValueInput()
    @alignmentRootRadius.setter
    def alignmentRootRadius(self, value: core.ValueInput):
        """
        Gets or sets blend radius of the boss alignment root.
        """
        pass
    @property
    def holeStartRadius(self) -> core.ValueInput:
        """
        Gets or sets blend radius of the hole start.
        """
        return core.ValueInput()
    @holeStartRadius.setter
    def holeStartRadius(self, value: core.ValueInput):
        """
        Gets or sets blend radius of the hole start.
        """
        pass
    @property
    def holeEndRadius(self) -> core.ValueInput:
        """
        Gets or sets blend radius of the hole end.
        """
        return core.ValueInput()
    @holeEndRadius.setter
    def holeEndRadius(self, value: core.ValueInput):
        """
        Gets or sets blend radius of the hole end.
        """
        pass
    @property
    def holeMajorTipRadius(self) -> core.ValueInput:
        """
        Gets or sets blend radius of major hole counterbore.
        """
        return core.ValueInput()
    @holeMajorTipRadius.setter
    def holeMajorTipRadius(self, value: core.ValueInput):
        """
        Gets or sets blend radius of major hole counterbore.
        """
        pass
    @property
    def holeMajorRootRadius(self) -> core.ValueInput:
        """
        Gets or sets blend radius of major hole counterbore root.
        """
        return core.ValueInput()
    @holeMajorRootRadius.setter
    def holeMajorRootRadius(self, value: core.ValueInput):
        """
        Gets or sets blend radius of major hole counterbore root.
        """
        pass
    @property
    def ribLength(self) -> core.ValueInput:
        """
        Gets or sets ribs length measured from the shank axis.
        """
        return core.ValueInput()
    @ribLength.setter
    def ribLength(self, value: core.ValueInput):
        """
        Gets or sets ribs length measured from the shank axis.
        """
        pass
    @property
    def ribOffset(self) -> core.ValueInput:
        """
        Gets or sets ribs offset from the top face or alignment face.
        """
        return core.ValueInput()
    @ribOffset.setter
    def ribOffset(self, value: core.ValueInput):
        """
        Gets or sets ribs offset from the top face or alignment face.
        """
        pass
    @property
    def ribThickness(self) -> core.ValueInput:
        """
        Gets or sets ribs thickness.
        """
        return core.ValueInput()
    @ribThickness.setter
    def ribThickness(self, value: core.ValueInput):
        """
        Gets or sets ribs thickness.
        """
        pass
    @property
    def ribDraftAngle(self) -> core.ValueInput:
        """
        Gets or sets ribs draft angle.
        """
        return core.ValueInput()
    @ribDraftAngle.setter
    def ribDraftAngle(self, value: core.ValueInput):
        """
        Gets or sets ribs draft angle.
        """
        pass
    @property
    def ribOuterDraftAngle(self) -> core.ValueInput:
        """
        Gets or sets rib outer draft angle.
        """
        return core.ValueInput()
    @ribOuterDraftAngle.setter
    def ribOuterDraftAngle(self, value: core.ValueInput):
        """
        Gets or sets rib outer draft angle.
        """
        pass
    @property
    def ribCutSize(self) -> core.ValueInput:
        """
        Gets or sets size of rib chamfer or fillet.
        """
        return core.ValueInput()
    @ribCutSize.setter
    def ribCutSize(self, value: core.ValueInput):
        """
        Gets or sets size of rib chamfer or fillet.
        """
        pass
    @property
    def ribChamferAngle(self) -> core.ValueInput:
        """
        Gets or sets rib chamfer angle. This input is used only for rib with chamfer.
        """
        return core.ValueInput()
    @ribChamferAngle.setter
    def ribChamferAngle(self, value: core.ValueInput):
        """
        Gets or sets rib chamfer angle. This input is used only for rib with chamfer.
        """
        pass
    @property
    def ribTipRadius(self) -> core.ValueInput:
        """
        Gets or sets rib outer tip blend radius.
        """
        return core.ValueInput()
    @ribTipRadius.setter
    def ribTipRadius(self, value: core.ValueInput):
        """
        Gets or sets rib outer tip blend radius.
        """
        pass
    @property
    def ribRootRadius(self) -> core.ValueInput:
        """
        Gets or sets rib base root blend radius.
        """
        return core.ValueInput()
    @ribRootRadius.setter
    def ribRootRadius(self, value: core.ValueInput):
        """
        Gets or sets rib base root blend radius.
        """
        pass
    @property
    def ribRotation(self) -> core.ValueInput:
        """
        Gets or sets rotation angle of the first rib from the reference vector.
        Reference vector is X-axis of the parent sketch from selected sketch point(s).
        """
        return core.ValueInput()
    @ribRotation.setter
    def ribRotation(self, value: core.ValueInput):
        """
        Gets or sets rotation angle of the first rib from the reference vector.
        Reference vector is X-axis of the parent sketch from selected sketch point(s).
        """
        pass
    @property
    def ribTotalAngle(self) -> core.ValueInput:
        """
        Gets or sets total angle for ribs distribution. Default is 360 deg.
        """
        return core.ValueInput()
    @ribTotalAngle.setter
    def ribTotalAngle(self, value: core.ValueInput):
        """
        Gets or sets total angle for ribs distribution. Default is 360 deg.
        """
        pass
    @property
    def ribCount(self) -> core.ValueInput:
        """
        Gets or sets number of ribs.
        """
        return core.ValueInput()
    @ribCount.setter
    def ribCount(self, value: core.ValueInput):
        """
        Gets or sets number of ribs.
        """
        pass

class BossPositionDefinition(core.Base):
    """
    The base class for the classes that define how a boss feature can be positioned.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BossPositionDefinition:
        return BossPositionDefinition()

class BoundaryFillFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a BoundaryFillFeatureInput.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BoundaryFillFeatureInput:
        return BoundaryFillFeatureInput()
    def cancel(self) -> bool:
        """
        To determine the possible boundaries and allow you to choose which cells to keep, the boundary
        fill feature does a partial compute when the input object is created. To do this it starts a boundary
        fill feature transaction and completes the transaction when you call the add method. If you don't
        call the add method to finish the transaction it leaves Fusion in a bad state and there will be undo
        problems and possibly a crash. If you have created a BoundFillFeatureInput object and don't want to finish
        the feature creation, you need to call the cancel method on the BoundaryFillFeatureInput object to
        safely abort the current boundary fill transaction.
        Returns true if successful.
        """
        return bool()
    @property
    def bRepCells(self) -> BRepCells:
        """
        Returns the collection of the valid cells that have been calculated based on the set of input tools.
        You use this collection to specify which cells you want included in the output.
        """
        return BRepCells()
    @property
    def operation(self) -> FeatureOperations:
        """
        Gets and sets the type of operation performed by the boundary fill feature.
        """
        return FeatureOperations()
    @operation.setter
    def operation(self, value: FeatureOperations):
        """
        Gets and sets the type of operation performed by the boundary fill feature.
        """
        pass
    @property
    def creationOccurrence(self) -> Occurrence:
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the Boundary Fill is created based on geometry (e.g. a profile and/or face(s))
        in another component AND (the Boundary Fill) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI
        """
        return Occurrence()
    @creationOccurrence.setter
    def creationOccurrence(self, value: Occurrence):
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the Boundary Fill is created based on geometry (e.g. a profile and/or face(s))
        in another component AND (the Boundary Fill) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI
        """
        pass
    @property
    def tools(self) -> core.ObjectCollection:
        """
        Gets and sets the collection of one or more construction planes and open or closed
        BRepBody objects that are used in calculating the possible closed boundaries.
        """
        return core.ObjectCollection()
    @tools.setter
    def tools(self, value: core.ObjectCollection):
        """
        Gets and sets the collection of one or more construction planes and open or closed
        BRepBody objects that are used in calculating the possible closed boundaries.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass
    @property
    def isRemoveTools(self) -> bool:
        """
        Gets and sets whether any BRepBodys that were used as tools should be removed as part of the feature creation.
        """
        return bool()
    @isRemoveTools.setter
    def isRemoveTools(self, value: bool):
        """
        Gets and sets whether any BRepBodys that were used as tools should be removed as part of the feature creation.
        """
        pass

class BoundaryFillFeatures(core.Base):
    """
    Collection that provides access to all of the existing boundary fill features in a component
    and supports the ability to create new boundary fill features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BoundaryFillFeatures:
        return BoundaryFillFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> BoundaryFillFeature:
        return None
    def __iter__(self) -> Iterator[BoundaryFillFeature]:
        return None
    def item(self, index: int) -> BoundaryFillFeature:
        """
        Function that returns the specified boundary fill feature 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 BoundaryFillFeature()
    def createInput(self, tools: core.ObjectCollection, operation: FeatureOperations) -> BoundaryFillFeatureInput:
        """
        Creates a BoundaryFillFeatureInput object. Use properties and methods on this object
        to define the boundary fill you want to create and then use the Add method, passing in
        the BoundaryFillFeatureInput object.
        
        To determine the possible boundaries and allow you to choose which cells to keep, the boundary
        fill feature does a partial compute when the input object is created. To do this it starts a boundary
        fill feature transaction and completes the transaction when you call the add method. If you don't
        call the add method to finish the transaction it leaves Fusion in a bad state and there will be undo
        problems and possibly a crash. If you have created a BoundFillFeatureInput object and don't want to finish
        the feature creation, you need to call the cancel method on the BoundaryFillFeatureInput object to
        safely abort the current boundary fill transaction.
        tools : A collection of one or more construction planes and open or closed BRepBody objects that will be
        used in calculating the possible closed boundaries.
        operation : The operation type to perform.
        Returns the newly created BoundaryFillFeatureInput object or null if the creation failed.
        """
        return BoundaryFillFeatureInput()
    def add(self, input: BoundaryFillFeatureInput) -> BoundaryFillFeature:
        """
        Creates a new boundary fill feature.
        input : A BoundaryFillFeatureInput object that defines the desired boundary fill feature. Use the createInput
        method to create a new BoundaryFillFeatureInput object and then use methods on it
        (the BoundaryFillFeatureInput object) to define the boundary fill feature.
        Returns the newly created BoundaryFillFeature object or null if the creation failed.
        """
        return BoundaryFillFeature()
    def itemByName(self, name: str) -> BoundaryFillFeature:
        """
        Function that returns the specified boundary fill feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return BoundaryFillFeature()
    @property
    def count(self) -> int:
        """
        The number of boundary fill features in the collection.
        """
        return int()

class BoxFeatures(core.Base):
    """
    Collection that provides access to all of the existing box features in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BoxFeatures:
        return BoxFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> BoxFeature:
        return None
    def __iter__(self) -> Iterator[BoxFeature]:
        return None
    def item(self, index: int) -> BoxFeature:
        """
        Function that returns the specified box feature 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 BoxFeature()
    def itemByName(self, name: str) -> BoxFeature:
        """
        Function that returns the specified box feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return BoxFeature()
    @property
    def count(self) -> int:
        """
        The number of box features in the collection.
        """
        return int()

class BRepBodies(core.Base):
    """
    The BRepBodies collection provides access to all of the B-Rep
    bodies within a component.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepBodies:
        return BRepBodies()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> BRepBody:
        return None
    def __iter__(self) -> Iterator[BRepBody]:
        return None
    def item(self, index: int) -> BRepBody:
        """
        Function that returns the specified body 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 BRepBody()
    def itemByName(self, name: str) -> BRepBody:
        """
        Returns a specific body using the name of the body within the collection.
        name : The name of the body, as seen in the browser, to return.
        The BRepBody or null if a body with the defined name is not found.
        """
        return BRepBody()
    def add(self, body: BRepBody, targetBaseFeature: BaseFeature = None) -> BRepBody:
        """
        Creates a new BRepBody object. The input can be a persisted or transient BRepBody and the
        result is a persisted BRepBody. In a direct modeling design, the BRepBody is created within
        the component the BRepBodies collection was obtained from. In a parametric modeling design,
        the new BRepBody is created within the specified Base Feature.
        
        Because of a current limitation, if you want to create a BRepBody in a parametric model,
        you must first call the edit method of the base feature, then use the add method to create
        the body, and finally call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        body : The input BRepBody. Typically this is a transient BRepBody but that's not a requirement. In
        any case, there is not any association back to the original BRepBody.
        targetBaseFeature : The BaseFeature object that this BRep body will be associated with. This is an optional
        requirement. It is required in a parametric modeling design but is ignored in a direct
        modeling design.
        Returns the newly created BRepBody or null if the creation failed.
        """
        return BRepBody()
    @property
    def count(self) -> int:
        """
        Returns the number of bodies in the collection.
        """
        return int()

class BRepBody(core.Base):
    """
    Represents a B-Rep (Boundary Representation) body.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepBody:
        return BRepBody()
    def pointContainment(self, point: core.Point3D) -> PointContainment:
        """
        Determines the relationship of the input point with respect to this body.
        point : The point to do the containment check for.
        Returns a value from the PointContainment enum indicating the relationship of
        the input point to the body.
        """
        return PointContainment()
    def deleteMe(self) -> bool:
        """
        Deletes the body.
        
        This property is only valid if the IsTransient property is false.
        Returns true if the delete was successful.
        """
        return bool()
    def copy(self) -> bool:
        """
        Copies the body to the clipboard.
        
        This property is only valid if the IsTransient property is false.
        Returns true if the copy was successful.
        """
        return bool()
    def cut(self) -> bool:
        """
        Cuts the body to the clipboard.
        
        This property is only valid if the IsTransient property is false.
        Returns true if the cut was successful.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> BRepBody:
        """
        Returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        
        This method is only valid if the IsTransient property is false.
        occurrence : The occurrence that defines the context for the created proxy.
        Returns the new BRepBody proxy or null if this isn't the NativeObject.
        """
        return BRepBody()
    def createComponent(self) -> BRepBody:
        """
        Creates a new component and occurrence within the component that currently owns this body.
        This body is moved into the new component and returned. The newly created component can be
        obtained by using the parentComponent property of the BRepBody object.
        
        This method is only valid if the IsTransient property is false.
        Returns the BRepBody in the new component or null in the case the creation failed.
        """
        return BRepBody()
    def moveToComponent(self, target: core.Base) -> BRepBody:
        """
        Moves this body from its current component into the root component or the component owned by the
        specified occurrence.
        target : The target can be either the root component or an occurrence.
        
        In the case where an occurrence is specified, the body will be moved into the parent component of the target
        occurrence and the target occurrence defines the transform of how the body will be copied so that the body
        maintains its same position with respect to the assembly.
        Returns the moved BRepBody or null in the case the move failed.
        """
        return BRepBody()
    def copyToComponent(self, target: core.Base) -> BRepBody:
        """
        Creates a copy of this body into the specified target.
        target : The target can be either the root component or an occurrence.
        
        In the case where an occurrence is specified, the body will be copied into the parent component of the target
        occurrence and the target occurrence defines the transform of how the body will be copied so that the body
        maintains its same position with respect to the assembly.
        
        If target is null, then a copy of the body is created in the owning component of the original body.
        Returns the copied BRepBody or null in the case the copy failed.
        """
        return BRepBody()
    def convert(self, options: BRepConvertOptions) -> BRepBody:
        """
        Creates a new body where the faces and edges are converted to different
        types of geometry based on the input options. This is particularly useful
        when you need a body made up entirely of NURBS surfaces.
        
        The tempId on the faces, edges, and vertices on the new body will match
        with the corresponding tempId on the original body. In cases where faces are
        split as a result of the conversion there can be more than one face or edge in
        the new body that matches to a single face or edge in the original body. The
        findByTempId method will find the entity with the matching id.
        options : Input options that define how the conversion should be done. These are
        bitwise options so they can be combined.
        Returns the new converted body or null in the case of failure.
        """
        return BRepBody()
    def findByTempId(self, tempId: int) -> list[core.Base]:
        """
        Returns all of the faces, edges, or vertices that match the input ID.
        tempId : The ID of the B-Rep entity to find.
        Returns an array of entities that have the specified ID. This
        returns an array because it's possible that a body created by converting a
        body can have multiple entities with the same ID in the case where a curve
        or face was split. Returns an empty array in the case where no match is found.
        """
        return [core.Base()]
    def getPhysicalProperties(self, accuracy: CalculationAccuracy = CalculationAccuracy.LowCalculationAccuracy) -> PhysicalProperties:
        """
        Returns the PhysicalProperties object that has properties for getting the area, density, mass, volume, moments, etc
        of this body.
        accuracy : Specifies the desired level of computational accuracy of the property calculations.
        The default value of 'LowCalculationAccuracy' returns results within a +/- 1% error margin.
        Returns a PhysicalProperties object that can be used to get the various physical property related values.
        """
        return PhysicalProperties()
    @property
    def parentComponent(self) -> Component:
        """
        Returns the component this body is owned by.
        """
        return Component()
    @property
    def lumps(self) -> BRepLumps:
        """
        Returns a collection of all of the lumps in the body.
        """
        return BRepLumps()
    @property
    def shells(self) -> BRepShells:
        """
        Returns a collection of all of the shells in the body.
        """
        return BRepShells()
    @property
    def faces(self) -> BRepFaces:
        """
        Returns a collection of all of the faces in the body.
        """
        return BRepFaces()
    @property
    def edges(self) -> BRepEdges:
        """
        Returns a collection of all of the edges in the body.
        """
        return BRepEdges()
    @property
    def vertices(self) -> BRepVertices:
        """
        Returns a collection of all of the vertices in the body.
        """
        return BRepVertices()
    @property
    def isSolid(self) -> bool:
        """
        Returns whether this body is closed (solid) or not.
        """
        return bool()
    @property
    def boundingBox(self) -> core.BoundingBox3D:
        """
        Returns the bounding box of this body.
        """
        return core.BoundingBox3D()
    @property
    def concaveEdges(self) -> BRepEdges:
        """
        Returns all of the edges that connect concave faces.
        """
        return BRepEdges()
    @property
    def convexEdges(self) -> BRepEdges:
        """
        Returns all of the edges that connect convex faces.
        """
        return BRepEdges()
    @property
    def area(self) -> float:
        """
        Returns the area in cm ^ 2.
        """
        return float()
    @property
    def volume(self) -> float:
        """
        Returns the volume in cm ^ 3. Returns 0 in the case the body is not solid.
        """
        return float()
    @property
    def isTransient(self) -> bool:
        """
        Indicates if this body is represented in the model or is transient.
        """
        return bool()
    @property
    def name(self) -> str:
        """
        Gets and sets the name of the body.
        
        This property is only valid if the IsTransient property is false.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name of the body.
        
        This property is only valid if the IsTransient property is false.
        """
        pass
    @property
    def isVisible(self) -> bool:
        """
        Gets if this body is currently visible in the graphics window. Use the
        isLightBulbOn to change if the light bulb beside the body 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 body is actually visible or not.
        
        This property is only valid if the IsTransient property is false.
        """
        return bool()
    @isVisible.setter
    def isVisible(self, value: bool):
        """
        Gets if this body is currently visible in the graphics window. Use the
        isLightBulbOn to change if the light bulb beside the body 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 body is actually visible or not.
        
        This property is only valid if the IsTransient property is false.
        """
        pass
    @property
    def isSelectable(self) -> bool:
        """
        Gets and sets if this body is selectable.
        
        This property is only valid if the IsTransient property is false.
        """
        return bool()
    @isSelectable.setter
    def isSelectable(self, value: bool):
        """
        Gets and sets if this body is selectable.
        
        This property is only valid if the IsTransient property is false.
        """
        pass
    @property
    def appearance(self) -> core.Appearance:
        """
        Read-write property that gets and sets the current appearance of the body. Setting this property will result in applying
        an override appearance to the body and the AppearanceSourceType property will return OverrideAppearanceSource. Setting
        this property to null will remove any override.
        
        This property is only valid if the IsTransient property is false.
        """
        return core.Appearance()
    @appearance.setter
    def appearance(self, value: core.Appearance):
        """
        Read-write property that gets and sets the current appearance of the body. Setting this property will result in applying
        an override appearance to the body and the AppearanceSourceType property will return OverrideAppearanceSource. Setting
        this property to null will remove any override.
        
        This property is only valid if the IsTransient property is false.
        """
        pass
    @property
    def appearanceSourceType(self) -> core.AppearanceSourceTypes:
        """
        Read-write property that gets the source of the appearance for the body. If this returns OverrideAppearanceSource, an override exists
        on this body. The override can be removed by setting the Appearance property to null.
        
        This property is only valid if the IsTransient property is false.
        """
        return core.AppearanceSourceTypes()
    @property
    def material(self) -> core.Material:
        """
        Gets and sets the material assigned to this body.
        
        This property is only valid if the IsTransient property is false.
        """
        return core.Material()
    @material.setter
    def material(self, value: core.Material):
        """
        Gets and sets the material assigned to this body.
        
        This property is only valid if the IsTransient property is false.
        """
        pass
    @property
    def meshManager(self) -> MeshManager:
        """
        Returns the mesh manager object for this body.
        """
        return MeshManager()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this
        object in an assembly. This is only valid in the case where this
        BRepBody object is acting as a proxy in an assembly. Returns null
        in the case where the object is not in the context of an assembly,
        but is already the native object. Also returns null in the case
        where this body is transient.
        """
        return Occurrence()
    @property
    def nativeObject(self) -> BRepBody:
        """
        The NativeObject is the object outside the context of an assembly.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return BRepBody()
    @property
    def physicalProperties(self) -> PhysicalProperties:
        """
        Returns the PhysicalProperties object that has properties for getting the area, density, mass, volume, moments, etc
        of this body. Property values will be calculated using the 'LowCalculationAccuracy' setting when using this property
        to get the PhysicalProperties object. To specify a higher calculation tolerance, use the getPhysicalProperties method
        on the Design class instead.
        Returns a PhysicalProperties object that can be used to get the various physical property related values.
        """
        return PhysicalProperties()
    @property
    def isLightBulbOn(self) -> bool:
        """
        Gets and sets if the light bulb beside the body 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 body 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.
        
        This property is only valid if the IsTransient property is false.
        """
        return bool()
    @isLightBulbOn.setter
    def isLightBulbOn(self, value: bool):
        """
        Gets and sets if the light bulb beside the body 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 body 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.
        
        This property is only valid if the IsTransient property is false.
        """
        pass
    @property
    def attributes(self) -> core.Attributes:
        """
        Returns the collection of attributes associated with this face.
        """
        return core.Attributes()
    @property
    def baseFeature(self) -> BaseFeature:
        """
        If this body is associated with a base feature, this property will return that base feature.
        If it's not associated with a base feature, this property will return null.
        """
        return BaseFeature()
    @property
    def opacity(self) -> float:
        """
        Gets and sets the opacity override assigned to this body. A value of 1.0 specifies
        that it is completely opaque and a value of 0.0 specifies that it is completely transparent.
        
        This value is not necessarily related to what the user sees because the opacity is inherited.
        For example, if this body is in a component and that component's opacity is set to something
        other than 1.0, the body will also be shown as slightly transparent even though the opacity
        property for the body will return 1.0. Because the component that contains the body can be
        referenced as an occurrence in other components and they can have different opacity settings,
        it's possible that different instances of the same body can display using different opacity levels.
        To get the opacity that it is being displayed with use the BRepBody.visibleOpacity property.
        
        This is the API equivalent of the "Opacity Control" command available for the body in the browser.
        """
        return float()
    @opacity.setter
    def opacity(self, value: float):
        """
        Gets and sets the opacity override assigned to this body. A value of 1.0 specifies
        that it is completely opaque and a value of 0.0 specifies that it is completely transparent.
        
        This value is not necessarily related to what the user sees because the opacity is inherited.
        For example, if this body is in a component and that component's opacity is set to something
        other than 1.0, the body will also be shown as slightly transparent even though the opacity
        property for the body will return 1.0. Because the component that contains the body can be
        referenced as an occurrence in other components and they can have different opacity settings,
        it's possible that different instances of the same body can display using different opacity levels.
        To get the opacity that it is being displayed with use the BRepBody.visibleOpacity property.
        
        This is the API equivalent of the "Opacity Control" command available for the body in the browser.
        """
        pass
    @property
    def visibleOpacity(self) -> float:
        """
        The user can set an override opacity for components and bodies. These opacity overrides combine if
        children and parent components have overrides. This property returns the actual opacity that is
        being used to render the body. To set the opacity use the opacity property of the BRepBody object.
        """
        return float()
    @property
    def revisionId(self) -> str:
        """
        Returns the current revision ID of the body. This ID changes any time the body is modified in any way. By getting
        and saving the ID when you create any data that is dependent on the body, you can then compare the saved
        ID with the current ID to determine if the body has changed to know if you should update your data.
        """
        return str()
    @property
    def wires(self) -> BRepWires:
        """
        Returns any wire bodies that exist within this body.
        """
        return BRepWires()
    @property
    def isTemporary(self) -> bool:
        """
        Indicates if this body is represented in the model or is temporary.
        """
        return bool()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the BRepBody object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same body.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        
        This is only valid for bodies that exist in the design, (the isTemporary
        property is false).
        """
        return str()
    @property
    def textureMapControl(self) -> core.TextureMapControl:
        """
        Returns the TextureMapControl object associated with this body when there is an
        appearance assigned to the body that has a texture associated with it. If there
        isn't a texture, this property will return null. If there is a texture, you can
        use the returned object to query and modify how the texture is applied to the body.
        """
        return core.TextureMapControl()
    @property
    def isSheetMetal(self) -> bool:
        """
        Indicates if this body represents a sheet metal folded part or not and if a flat pattern can be created.
        """
        return bool()
    @property
    def orientedMinimumBoundingBox(self) -> core.OrientedBoundingBox3D:
        """
        Returns an oriented bounding box of the body that is best oriented to tightly fit the body.
        """
        return core.OrientedBoundingBox3D()
    @property
    def preciseBoundingBox(self) -> core.BoundingBox3D:
        """
        Returns a bounding box that tightly fits this body.
        """
        return core.BoundingBox3D()
    @property
    def isDerived(self) -> bool:
        """
        Returns if this BRepBody is derived from another design. If true, this body cannot be deleted.
        """
        return bool()
    @property
    def deriveFeature(self) -> DeriveFeature:
        """
        Returns the DeriveFeature if this BRepBody is derived from another design.
        This property returns null if the BRepBody is not derived from another design (i.e. isDerived property returns false).
        """
        return DeriveFeature()

class BRepBodyDefinition(core.Base):
    """
    This object is used to define a temporary B-Rep body. This includes solid, surface, and wire
    bodies. The class supports the ability to define the geometry and topology of the B-Rep and
    once the definition is complete, it supports the creation of a temporary BRepBody object.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepBodyDefinition:
        return BRepBodyDefinition()
    @staticmethod
    def create() -> BRepBodyDefinition:
        """
        Static function that creates a new BRepBodyDefinition object. It's initially empty but you can use
        the functionality it provides to define the geometry and topology of the B-Rep
        object you want to create.
        Returns the newly created BRepBodyDefinition object.
        """
        return BRepBodyDefinition()
    def createBody(self) -> BRepBody:
        """
        Attempts to create a temporary BRepBody object using the definition
        provided by this BRepBodyDefinition object. Properties on this BRepBodyDefinition
        are used to define some of the criteria that control how the body is created.
        Returns the newly created BRepBody object if successful, otherwise null is returned.
        Information about the body creation can be obtained by using the outcomeInfo property.
        The outcome info is especially useful when initially writing and debugging your code to understand
        why the creation of the body is failing.
        """
        return BRepBody()
    def createEdgeDefinitionByCurve(self, startVertex: BRepVertexDefinition, endVertex: BRepVertexDefinition, modelSpaceCurve: core.Curve3D) -> BRepEdgeDefinition:
        """
        Using a curve in model space it creates a new BRepEdgeDefinition object that's associated with the body.
        startVertex : Vertex definition that defines the start of the edge. For a closed curve, like a circle, you still
        need to provide a vertex on the curve but you should use the same BRepVertexDefinition for both the start and end vertices.
        endVertex : Vertex definition that defines the end of the edge. For a closed curve, like a circle, this should be the
        same vertex as used for the start vertex.
        modelSpaceCurve : A Curve3D object that defines the shape of the edge using 3D geometry in model space.
        Valid input is an Arc3D, NurbsCurve3D, Circle3D, Ellipse3D, EllipticalArc3D, or Line3D.
        Returns the created BRepEdgeDefinition object or null in the case of failure.
        """
        return BRepEdgeDefinition()
    def createVertexDefinition(self, position: core.Point3D) -> BRepVertexDefinition:
        """
        Creates a new BRepVertexDefinition object that's associated with the body.
        position : Specifies the position of the vertex in model space.
        Returns the created BRepVertexDefinition object or null in the case of failure.
        """
        return BRepVertexDefinition()
    @property
    def doFullHealing(self) -> bool:
        """
        Specifies if full healing is done when creating the body. This defaults to true and it's highly recommended
        that you do full healing because it can find and correct problems with the input. If you're sure that the
        B-Rep definition that you've constructed is correct then you can set this to false to skip the full
        healing process.
        """
        return bool()
    @doFullHealing.setter
    def doFullHealing(self, value: bool):
        """
        Specifies if full healing is done when creating the body. This defaults to true and it's highly recommended
        that you do full healing because it can find and correct problems with the input. If you're sure that the
        B-Rep definition that you've constructed is correct then you can set this to false to skip the full
        healing process.
        """
        pass
    @property
    def outcomeInfo(self) -> list[str]:
        """
        Returns an array of strings that contain information about the outcome of the previous
        call of the createBody method. This is especially useful when the createBody method fails,
        (returns null), because it provides information about why the failure occurred. It can
        also sometimes provide some information even when createBody succeeds.
        
        Each string that's returned represents a single set of information and is packaged as JSON
        such as '{"description":"vertex data is null or inconsistent with edge geometry","associativeID":"unknown","code":37}'
        
        The description is an English description of the error or warning. The associativeID maps back to the
        entity provided that is the cause of the problem. The ID is the associative ID you can optionally
        assign to the entity definition. The code is an internal code for the error or warning.
        
        An empty array is returned if createBody succeeded and there's no additional information.
        """
        return [str()]
    @property
    def lumpDefinitions(self) -> BRepLumpDefinitions:
        """
        Provides access to the BRepLumpDefinitions object associated with this BRepBodyDefinition.
        It's through the returned collection that you can create new BRepLumpDefinition objects.
        """
        return BRepLumpDefinitions()

class BRepCell(core.Base):
    """
    Object that represents an existing BRepCell.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepCell:
        return BRepCell()
    @property
    def isSelected(self) -> bool:
        """
        Gets and sets whether the cell is selected. For a Trim feature a selected cell is removed,
        whereas for a boundary fill feature, a selected cell is kept and used in the feature operation.
        """
        return bool()
    @isSelected.setter
    def isSelected(self, value: bool):
        """
        Gets and sets whether the cell is selected. For a Trim feature a selected cell is removed,
        whereas for a boundary fill feature, a selected cell is kept and used in the feature operation.
        """
        pass
    @property
    def sourceTools(self) -> core.ObjectCollection:
        """
        Returns the tools that we're using in the definition of this cell.
        """
        return core.ObjectCollection()
    @property
    def cellBody(self) -> BRepBody:
        """
        Returns a BRepBody that represents this cell. This is a transient B-Rep body.
        """
        return BRepBody()

class BRepCells(core.Base):
    """
    Collection that provides access to all of the existing BRepCells defined by a BoundaryFillFeatureInput
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepCells:
        return BRepCells()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> BRepCell:
        return None
    def __iter__(self) -> Iterator[BRepCell]:
        return None
    def item(self, index: int) -> BRepCell:
        """
        Function that returns the specified BRepCell 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 BRepCell()
    @property
    def count(self) -> int:
        """
        The number of BRepCells in the collection.
        """
        return int()

class BRepCoEdge(core.Base):
    """
    Represents the use of a BRepEdge by a BRepFace.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepCoEdge:
        return BRepCoEdge()
    def createForAssemblyContext(self, occurrence: Occurrence) -> BRepCoEdge:
        """
        Returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context for the created proxy.
        Returns the new BrepCoEdge proxy or null if this isn't the NativeObject.
        """
        return BRepCoEdge()
    @property
    def edge(self) -> BRepEdge:
        """
        Returns the edge this co-edge is associated with.
        """
        return BRepEdge()
    @property
    def loop(self) -> BRepLoop:
        """
        Returns the loop this co-edge is part of.
        """
        return BRepLoop()
    @property
    def evaluator(self) -> core.CurveEvaluator2D:
        """
        Returns a curve evaluator that can be used to perform geometric evaluations on the co-edge.
        """
        return core.CurveEvaluator2D()
    @property
    def geometry(self) -> core.Curve2D:
        """
        Returns a geometry object that represents the shape of this co-edge in parameter space of the parent face's surface.
        """
        return core.Curve2D()
    @property
    def isOpposedToEdge(self) -> bool:
        """
        Indicates if the orientation of this co-edge is in the same direction or opposed to its associated edge.
        """
        return bool()
    @property
    def isParamReversed(self) -> bool:
        """
        Returns if the parametric direction of this co-edge is reversed
        from the parametric direction of the underlying curve obtained from the geometry property.
        A co-edge's parametric direction is from the start vertex to the end vertex.
        But the underlying curve geometry may have the opposite parameterization.
        This property indicates if the parameterization order of the evaluator obtained from
        this co-edge is reversed from the order of the geometry curve's evaluator.
        """
        return bool()
    @property
    def next(self) -> BRepCoEdge:
        """
        Returns the next co-edge in the loop.
        """
        return BRepCoEdge()
    @property
    def body(self) -> BRepBody:
        """
        Returns the body this co-edge is part of.
        """
        return BRepBody()
    @property
    def partner(self) -> BRepCoEdge:
        """
        Returns the co-edge on the adjacent face
        """
        return BRepCoEdge()
    @property
    def previous(self) -> BRepCoEdge:
        """
        Returns the previous co-edge in the loop.
        """
        return BRepCoEdge()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this
        object in an assembly. This is only valid in the case where this
        BRepCoEdge object is acting as a proxy in an assembly. Returns null
        in the case where the object is not in the context of an assembly.
        but is already the native object.
        """
        return Occurrence()
    @property
    def nativeObject(self) -> BRepCoEdge:
        """
        The NativeObject is the object outside the context of an assembly.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return BRepCoEdge()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the BRepCoEdge object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same co-edge.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        
        This is only valid for co-edges that exist in the design, (the isTemporary
        property is false).
        """
        return str()

class BRepCoEdgeDefinition(core.Base):
    """
    Represents the definition of a B-Rep co-edge that can be used as input to create a BRepBody that includes this co-edge.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepCoEdgeDefinition:
        return BRepCoEdgeDefinition()
    @property
    def edgeDefinition(self) -> BRepEdgeDefinition:
        """
        Gets and sets the BRepEdgeDefinition object associated with this BrepCoEdgeDefinition object.
        """
        return BRepEdgeDefinition()
    @edgeDefinition.setter
    def edgeDefinition(self, value: BRepEdgeDefinition):
        """
        Gets and sets the BRepEdgeDefinition object associated with this BrepCoEdgeDefinition object.
        """
        pass
    @property
    def isOpposedToEdge(self) -> bool:
        """
        Gets and sets if the orientation of this BRepCoEdgeDefinition object is reversed with
        respect to the associated BRepEdgeDefinition object.
        """
        return bool()
    @isOpposedToEdge.setter
    def isOpposedToEdge(self, value: bool):
        """
        Gets and sets if the orientation of this BRepCoEdgeDefinition object is reversed with
        respect to the associated BRepEdgeDefinition object.
        """
        pass

class BRepCoEdgeDefinitions(core.Base):
    """
    Provides access to the BRepCoEdgeDefinition objects associated with the parent BRepLoopDefinition object.
    It's through this object that you create new BRepCoEdgeDefinition objects.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepCoEdgeDefinitions:
        return BRepCoEdgeDefinitions()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> BRepCoEdgeDefinition:
        return None
    def __iter__(self) -> Iterator[BRepCoEdgeDefinition]:
        return None
    def item(self, index: int) -> BRepCoEdgeDefinition:
        """
        Function that returns the specified BRepCoEdgeDefinition 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 BRepCoEdgeDefinition()
    def add(self, edgeDefinition: BRepEdgeDefinition, isOpposedToEdge: bool) -> BRepCoEdgeDefinition:
        """
        Creates a new BrepCoEdgeDefinition object associated with the parent BrepLoopDefinition object.
        edgeDefinition : The BRepEdgeDefinition object this co-edge is related to.
        isOpposedToEdge : Boolean that indicates if the orientation of this BRepCoEdgeDefinition is reversed with respect
        to the associated BRepEdgeDefinition object.
        Returns the newly created BrepCoEdgeDefinition object or null in the case of failure.
        """
        return BRepCoEdgeDefinition()
    @property
    def count(self) -> int:
        """
        The number of B-Rep co-edge definition objects in the collection.
        """
        return int()

class BRepCoEdges(core.Base):
    """
    BRepCoEdge Collection.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepCoEdges:
        return BRepCoEdges()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> BRepCoEdge:
        return None
    def __iter__(self) -> Iterator[BRepCoEdge]:
        return None
    def item(self, index: int) -> BRepCoEdge:
        """
        Function that returns the specified co-edge 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 BRepCoEdge()
    @property
    def count(self) -> int:
        """
        The number of co-edges in the collection.
        """
        return int()

class BRepEdge(core.Base):
    """
    Represents a one-dimensional topological element that can be used to bound a BRepFace A BRepEdge uses a single, connected and bounded subset of a curve for it geometry.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepEdge:
        return BRepEdge()
    def createForAssemblyContext(self, occurrence: Occurrence) -> BRepEdge:
        """
        Returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context for the created proxy.
        Returns the new BrepEdge proxy or null if this isn't the NativeObject.
        """
        return BRepEdge()
    @property
    def startVertex(self) -> BRepVertex:
        """
        Returns the BRepVertex that bounds its low parameter end.
        """
        return BRepVertex()
    @property
    def endVertex(self) -> BRepVertex:
        """
        Returns the BRepVertex that bounds its high parameter end.
        """
        return BRepVertex()
    @property
    def faces(self) -> BRepFaces:
        """
        Returns the BRepFaces that are associated with this edge through its BRepCoEdges.
        """
        return BRepFaces()
    @property
    def shell(self) -> BRepShell:
        """
        Returns the parent shell of the edge.
        """
        return BRepShell()
    @property
    def body(self) -> BRepBody:
        """
        Returns the parent body of the edge.
        """
        return BRepBody()
    @property
    def isDegenerate(self) -> bool:
        """
        Returns if the edge's geometry is degenerate.
        For example, the apex of a cone is a degenerate edge.
        """
        return bool()
    @property
    def evaluator(self) -> core.CurveEvaluator3D:
        """
        Returns CurveEvaluator3D for evaluation.
        """
        return core.CurveEvaluator3D()
    @property
    def geometry(self) -> core.Curve3D:
        """
        Returns the underlying curve geometry of the edge.
        """
        return core.Curve3D()
    @property
    def isTolerant(self) -> bool:
        """
        Returns if the edge is tolerant.
        The tolerance used is available from the tolerance property.
        """
        return bool()
    @property
    def tolerance(self) -> float:
        """
        Returns the tolerance used by a tolerant edge.
        This value is only useful when isTolerant is true.
        """
        return float()
    @property
    def pointOnEdge(self) -> core.Point3D:
        """
        Returns a sample point guaranteed to lie on the edge's curve, within its boundaries,
        and not on a vertex (unless this is a degenerate edge).
        """
        return core.Point3D()
    @property
    def coEdges(self) -> BRepCoEdges:
        """
        Returns the BRepCoEdges on the edge.
        """
        return BRepCoEdges()
    @property
    def isParamReversed(self) -> bool:
        """
        Returns if the parametric direction of this edge is reversed
        from the parametric direction of the underlying curve obtained from the geometry property.
        An edge's parametric direction is from the start vertex to the end vertex.
        But the underlying curve geometry may have the opposite parameterization.
        This property indicates if the parameterization order of the evaluator obtained from
        this edge is reversed from the order of the geometry curve's evaluator.
        """
        return bool()
    @property
    def tangentiallyConnectedEdges(self) -> core.ObjectCollection:
        """
        Returns a collection of edges that includes all of the edges tangentially connected
        to this edge. The result includes this edge. The edges are in the collection
        in their connected order.
        """
        return core.ObjectCollection()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this
        object in an assembly. This is only valid in the case where this
        BRepEdge object is acting as a proxy in an assembly. Returns null
        in the case where the object is not in the context of an assembly.
        but is already the native object.
        """
        return Occurrence()
    @property
    def nativeObject(self) -> BRepEdge:
        """
        The NativeObject is the object outside the context of an assembly.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return BRepEdge()
    @property
    def attributes(self) -> core.Attributes:
        """
        Returns the collection of attributes associated with this face.
        """
        return core.Attributes()
    @property
    def length(self) -> float:
        """
        Returns the length of the edge in centimeters.
        """
        return float()
    @property
    def tempId(self) -> int:
        """
        Returns the temporary ID of this edge. This ID is only good while the document
        remains open and as long as the owning BRepBody is not modified in any way.
        The findByTempId method of the BRepBody will return the entity in the body with the given ID.
        """
        return int()
    @property
    def boundingBox(self) -> core.BoundingBox3D:
        """
        Returns the bounding box of this edge.
        """
        return core.BoundingBox3D()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the BRepEdge object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same edge.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        
        This is only valid for edges that exist in the design, (the isTemporary
        property is false).
        """
        return str()

class BRepEdgeDefinition(core.Base):
    """
    Represents the definition of a B-Rep edge that can be used as input to create a BRepBody.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepEdgeDefinition:
        return BRepEdgeDefinition()
    @property
    def associativeID(self) -> int:
        """
        Gets and sets the associate ID of this edge definition. This ID will be copied to the corresponding
        edge when the BRepBodyDefinition is used to create a BRepBody. It is used internally by Fusion as
        the identifier for the edge and is used for tracking this geometry for parametric recomputes.
        """
        return int()
    @associativeID.setter
    def associativeID(self, value: int):
        """
        Gets and sets the associate ID of this edge definition. This ID will be copied to the corresponding
        edge when the BRepBodyDefinition is used to create a BRepBody. It is used internally by Fusion as
        the identifier for the edge and is used for tracking this geometry for parametric recomputes.
        """
        pass
    @property
    def startVertex(self) -> BRepVertexDefinition:
        """
        Gets and sets the start vertex of the edge definition.
        """
        return BRepVertexDefinition()
    @startVertex.setter
    def startVertex(self, value: BRepVertexDefinition):
        """
        Gets and sets the start vertex of the edge definition.
        """
        pass
    @property
    def endVertex(self) -> BRepVertexDefinition:
        """
        Gets and sets the end vertex of the edge definition.
        """
        return BRepVertexDefinition()
    @endVertex.setter
    def endVertex(self, value: BRepVertexDefinition):
        """
        Gets and sets the end vertex of the edge definition.
        """
        pass
    @property
    def modelSpaceCurve(self) -> core.Curve3D:
        """
        Gets and sets the curve that defines the shape of the edge.
        """
        return core.Curve3D()
    @modelSpaceCurve.setter
    def modelSpaceCurve(self, value: core.Curve3D):
        """
        Gets and sets the curve that defines the shape of the edge.
        """
        pass
    @property
    def isMergeable(self) -> bool:
        """
        Gets and sets if the two faces that share this edge can be merged along this
        edge. This property defaults to true so that merging is always done but this
        can be set to false in cases where you want to preserve the edge.
        
        An example where merging is typically done is when you have multiple planar
        faces that all lie on the same plane and are connected. When merging is allowed
        these faces can be replaced by a single face and the edges connecting the
        faces (the merged edges) are no longer part of the body.
        """
        return bool()
    @isMergeable.setter
    def isMergeable(self, value: bool):
        """
        Gets and sets if the two faces that share this edge can be merged along this
        edge. This property defaults to true so that merging is always done but this
        can be set to false in cases where you want to preserve the edge.
        
        An example where merging is typically done is when you have multiple planar
        faces that all lie on the same plane and are connected. When merging is allowed
        these faces can be replaced by a single face and the edges connecting the
        faces (the merged edges) are no longer part of the body.
        """
        pass

class BRepEdges(core.Base):
    """
    BRepEdge collection.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepEdges:
        return BRepEdges()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> BRepEdge:
        return None
    def __iter__(self) -> Iterator[BRepEdge]:
        return None
    def item(self, index: int) -> BRepEdge:
        """
        Function that returns the specified edge 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 BRepEdge()
    @property
    def count(self) -> int:
        """
        The number of edges in the collection.
        """
        return int()

class BRepFace(core.Base):
    """
    Represent a connected region on a single geometric surface.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepFace:
        return BRepFace()
    def createForAssemblyContext(self, occurrence: Occurrence) -> BRepFace:
        """
        Returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context for the created proxy.
        Returns the new BRepFace proxy or null if this isn't the NativeObject.
        """
        return BRepFace()
    def convert(self, options: BRepConvertOptions) -> BRepBody:
        """
        Creates a new body where this face and its edges are converted to different
        types of geometry based on the input options.
        
        The tempId on the faces, edges, and vertices on the new body will match
        with the corresponding tempId on the original body. In cases where the face is
        split as a result of the conversion there can be more than one face or edge in
        the new body that matches to a single face or edge in the original body.
        options : Input options that define how the conversion should be done. These are
        bitwise options so they can be combined.
        Returns the new converted body or null in the case of failure.
        """
        return BRepBody()
    def isPointOnFace(self, point: core.Point3D, tolerance: float = 0) -> bool:
        """
        Checks if input point is on this BRepFace. This takes into account any boundaries so if the point is within a void area of the face, this will return false.
        point : The input point to check.
        tolerance : Specifies how close the point must be to the face to be considered on the face.
        Defaults to the point tolerance which can be obtained using the Application.pointTolerance
        property. The value is in centimeters.
        Returns true if the point lies on the face.
        """
        return bool()
    @property
    def edges(self) -> BRepEdges:
        """
        Returns the BRepEdges used by this face
        """
        return BRepEdges()
    @property
    def vertices(self) -> BRepVertices:
        """
        Returns the BRepVertices used by this face
        """
        return BRepVertices()
    @property
    def shell(self) -> BRepShell:
        """
        Returns the parent shell of the face.
        """
        return BRepShell()
    @property
    def loops(self) -> BRepLoops:
        """
        Returns the BRepLoops owned by this face
        """
        return BRepLoops()
    @property
    def body(self) -> BRepBody:
        """
        Returns the parent body of the face.
        """
        return BRepBody()
    @property
    def geometry(self) -> core.Surface:
        """
        Returns the underlying surface geometry of this face
        """
        return core.Surface()
    @property
    def evaluator(self) -> core.SurfaceEvaluator:
        """
        Returns a SurfaceEvaluator to allow geometric evaluations across the face's surface.
        This evaluator differs from the evaluator available from the Surface obtained from the geometry
        property by being bounded by the topological boundaries of this face.
        """
        return core.SurfaceEvaluator()
    @property
    def pointOnFace(self) -> core.Point3D:
        """
        Returns a sample point guaranteed to lie on the face's surface, within the face's boundaries, and not on a boundary edge.
        """
        return core.Point3D()
    @property
    def tangentiallyConnectedFaces(self) -> BRepFaces:
        """
        Returns the set of faces that are tangentially adjacent to this face.
        In other words, it is the set of faces that are adjacent to this face's edges
        and have a smooth transition across those edges.
        """
        return BRepFaces()
    @property
    def meshManager(self) -> MeshManager:
        """
        Returns a MeshManager object that allows access to existing and new meshes of this face.
        """
        return MeshManager()
    @property
    def appearance(self) -> core.Appearance:
        """
        Read-write property that gets and sets the current appearance of the face. Setting this property will result in applying
        an override appearance to the face and the AppearanceSourceType property will return OverrideAppearanceSource. Setting
        this property to null will remove any override.
        """
        return core.Appearance()
    @appearance.setter
    def appearance(self, value: core.Appearance):
        """
        Read-write property that gets and sets the current appearance of the face. Setting this property will result in applying
        an override appearance to the face and the AppearanceSourceType property will return OverrideAppearanceSource. Setting
        this property to null will remove any override.
        """
        pass
    @property
    def appearanceSourceType(self) -> core.AppearanceSourceTypes:
        """
        Read-write property that gets the source of the appearance for the face. If this returns OverrideAppearanceSource, an override exists
        on this face. The override can be removed by setting the Appearance property to null.
        """
        return core.AppearanceSourceTypes()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this
        object in an assembly. This is only valid in the case where this
        BRepFace object is acting as a proxy in an assembly. Returns null
        in the case where the object is not in the context of an assembly.
        but is already the native object.
        """
        return Occurrence()
    @property
    def nativeObject(self) -> BRepFace:
        """
        The NativeObject is the object outside the context of an assembly.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return BRepFace()
    @property
    def area(self) -> float:
        """
        Returns the area in cm ^ 2.
        """
        return float()
    @property
    def boundingBox(self) -> core.BoundingBox3D:
        """
        Returns the bounding box of this face
        """
        return core.BoundingBox3D()
    @property
    def centroid(self) -> core.Point3D:
        """
        Returns a point at the centroid (aka, geometric center) of the face.
        """
        return core.Point3D()
    @property
    def attributes(self) -> core.Attributes:
        """
        Returns the collection of attributes associated with this face.
        """
        return core.Attributes()
    @property
    def tempId(self) -> int:
        """
        Returns the temporary ID of this face. This ID is only good while the document
        remains open and as long as the owning BRepBody is not modified in any way.
        The findByTempId method of the BRepBody will return the entity in the body with the given ID.
        """
        return int()
    @property
    def isParamReversed(self) -> bool:
        """
        Gets if the normal of this face is reversed with respect to the surface geometry associated
        with this face.
        """
        return bool()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the BRepFace object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same face.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        
        This is only valid for faces that exist in the design, (the isTemporary
        property is false).
        """
        return str()

class BRepFaceDefinition(core.Base):
    """
    Represents the definition of a B-Rep face that can be used as input to create a BRepBody that includes this face.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepFaceDefinition:
        return BRepFaceDefinition()
    @property
    def associativeID(self) -> int:
        """
        Gets and sets the associate ID of this face definition. This ID will be copied to the corresponding
        face when the BRepBodyDefinition is used to create a BRepBody. It is used by Fusion as
        the identifier for the face and is used for tracking this geometry for parametric recomputes.
        """
        return int()
    @associativeID.setter
    def associativeID(self, value: int):
        """
        Gets and sets the associate ID of this face definition. This ID will be copied to the corresponding
        face when the BRepBodyDefinition is used to create a BRepBody. It is used by Fusion as
        the identifier for the face and is used for tracking this geometry for parametric recomputes.
        """
        pass
    @property
    def loopDefinitions(self) -> BRepLoopDefinitions:
        """
        Provides access to the BRepLoopDefinitions object associated with this BRepFaceDefinition.
        It's through the returned collection that you can create new BRepLoopDefinition objects.
        """
        return BRepLoopDefinitions()
    @property
    def surfaceGeometry(self) -> core.Surface:
        """
        Gets and sets the surface geometry associated with this face definition.
        """
        return core.Surface()
    @surfaceGeometry.setter
    def surfaceGeometry(self, value: core.Surface):
        """
        Gets and sets the surface geometry associated with this face definition.
        """
        pass
    @property
    def isParamReversed(self) -> bool:
        """
        Gets and sets if the normal of this face is reversed with respect to the surface geometry associated
        with this face definition.
        """
        return bool()
    @isParamReversed.setter
    def isParamReversed(self, value: bool):
        """
        Gets and sets if the normal of this face is reversed with respect to the surface geometry associated
        with this face definition.
        """
        pass

class BRepFaceDefinitions(core.Base):
    """
    Provides access to the BRepFaceDefinition objects associated with the object the collection was obtained from.
    It's through this object that you create new BRepFaceDefinition objects.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepFaceDefinitions:
        return BRepFaceDefinitions()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> BRepFaceDefinition:
        return None
    def __iter__(self) -> Iterator[BRepFaceDefinition]:
        return None
    def item(self, index: int) -> BRepFaceDefinition:
        """
        Function that returns the specified BRepFaceDefinition 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 BRepFaceDefinition()
    def add(self, surfaceGeometry: core.Surface, isParamReversed: bool) -> BRepFaceDefinition:
        """
        Creates a new BrepFaceDefinition within the parent BRepShellDefinition object.
        surfaceGeometry : Input surface object that defines the geometry of the face. Valid objects for input are
        NurbsSurface, Cone, Cylinder, EllipticalCone, EllipticalCylinder, Plane, Sphere, and Torus.
        isParamReversed : Input Boolean that indicates if the normal of this face is reversed with respect to the
        surface geometry associated with this face definition.
        Returns the newly created BRepFaceDefinition object or null in the case of failure.
        """
        return BRepFaceDefinition()
    @property
    def count(self) -> int:
        """
        The number of B-Rep face definition objects in the collection.
        """
        return int()

class BRepFaces(core.Base):
    """
    BRepFace collection.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepFaces:
        return BRepFaces()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> BRepFace:
        return None
    def __iter__(self) -> Iterator[BRepFace]:
        return None
    def item(self, index: int) -> BRepFace:
        """
        Function that returns the specified face 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 BRepFace()
    @property
    def count(self) -> int:
        """
        The number of faces in the collection.
        """
        return int()

class BRepLoop(core.Base):
    """
    Represents a connected portion of a BRepFace boundary. It consists of a chain of BRepCoEdges.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepLoop:
        return BRepLoop()
    def createForAssemblyContext(self, occurrence: Occurrence) -> BRepLoop:
        """
        Returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context for the created proxy.
        Returns the new BrepLoop proxy or null if this isn't the NativeObject.
        """
        return BRepLoop()
    @property
    def edges(self) -> BRepEdges:
        """
        Returns the BRepEdges used by this loop
        """
        return BRepEdges()
    @property
    def coEdges(self) -> BRepCoEdges:
        """
        Returns the BRepCoEdges consisting this loop
        """
        return BRepCoEdges()
    @property
    def isOuter(self) -> bool:
        """
        Returns true of this loop is an outer loop of a face
        """
        return bool()
    @property
    def boundingBox(self) -> core.BoundingBox3D:
        """
        Returns the bounding box of this loop
        """
        return core.BoundingBox3D()
    @property
    def face(self) -> BRepFace:
        """
        Returns the parent face of the loop.
        """
        return BRepFace()
    @property
    def body(self) -> BRepBody:
        """
        Returns the parent body of the loop.
        """
        return BRepBody()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this
        object in an assembly. This is only valid in the case where this
        BRepLoop object is acting as a proxy in an assembly. Returns null
        in the case where the object is not in the context of an assembly.
        but is already the native object.
        """
        return Occurrence()
    @property
    def nativeObject(self) -> BRepLoop:
        """
        The NativeObject is the object outside the context of an assembly.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return BRepLoop()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the BRepLoop object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same loop.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        
        This is only valid for loops that exist in the design, (the isTemporary
        property is false).
        """
        return str()

class BRepLoopDefinition(core.Base):
    """
    Represents the definition of a B-Rep loop that can be used as input to create a BRepBody that includes this loop.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepLoopDefinition:
        return BRepLoopDefinition()
    @property
    def bRepCoEdgeDefinitions(self) -> BRepCoEdgeDefinitions:
        """
        Provides access to the BRepCoEdgeDefinitions object associated with the parent BRepFaceDefinition object.
        It's through the returned collection that you can create new BRepCoEdgeDefinition objects.
        """
        return BRepCoEdgeDefinitions()

class BRepLoopDefinitions(core.Base):
    """
    Provides access to the BRepLoopDefinition objects associated with the parent BRepFaceDefinition object.
    It's through this object that you create new BRepLoopDefinition objects.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepLoopDefinitions:
        return BRepLoopDefinitions()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> BRepLoopDefinition:
        return None
    def __iter__(self) -> Iterator[BRepLoopDefinition]:
        return None
    def item(self, index: int) -> BRepLoopDefinition:
        """
        Function that returns the specified BRepLoopDefinition 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 BRepLoopDefinition()
    def add(self) -> BRepLoopDefinition:
        """
        Creates a new empty loop associated with the parent face definition.
        Returns the newly created BRepLoopDefinition object.
        """
        return BRepLoopDefinition()
    @property
    def count(self) -> int:
        """
        The number of B-Rep loop definition objects in the collection.
        """
        return int()

class BRepLoops(core.Base):
    """
    BRepLoop collection.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepLoops:
        return BRepLoops()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> BRepLoop:
        return None
    def __iter__(self) -> Iterator[BRepLoop]:
        return None
    def item(self, index: int) -> BRepLoop:
        """
        Function that returns the specified loop 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 BRepLoop()
    @property
    def count(self) -> int:
        """
        The number of loops in the collection.
        """
        return int()

class BRepLump(core.Base):
    """
    Represents an entirely connected set of entities. A BRepBody consists of BRepLumps.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepLump:
        return BRepLump()
    def pointContainment(self, point: core.Point3D) -> PointContainment:
        """
        Determines the relationship of the input point with respect to this lump.
        point : The point to do the containment check for.
        Returns a value from the PointContainment enum indicating the relationship of
        the input point to the lump.
        """
        return PointContainment()
    def createForAssemblyContext(self, occurrence: Occurrence) -> BRepLump:
        """
        Returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context for the created proxy.
        Returns the new BrepLump proxy or null if this isn't the NativeObject.
        """
        return BRepLump()
    @property
    def shells(self) -> BRepShells:
        """
        Returns the BRepShells owned by the lump
        """
        return BRepShells()
    @property
    def faces(self) -> BRepFaces:
        """
        Returns the BRepFaces owned by the lump
        """
        return BRepFaces()
    @property
    def edges(self) -> BRepEdges:
        """
        Returns the BRepEdges owned by the lump
        """
        return BRepEdges()
    @property
    def vertices(self) -> BRepVertices:
        """
        Returns the BRepVertices owned by the lump
        """
        return BRepVertices()
    @property
    def body(self) -> BRepBody:
        """
        Returns the immediate owner BRepBody of the lump
        """
        return BRepBody()
    @property
    def isClosed(self) -> bool:
        """
        Returns true of the lump is closed
        """
        return bool()
    @property
    def boundingBox(self) -> core.BoundingBox3D:
        """
        Returns the bounding box of the lump
        """
        return core.BoundingBox3D()
    @property
    def area(self) -> float:
        """
        Returns the area in cm ^ 2.
        """
        return float()
    @property
    def volume(self) -> float:
        """
        Returns the volume in cm ^ 3. Returns 0 in the case the lump is not solid.
        """
        return float()
    @property
    def meshManager(self) -> MeshManager:
        """
        Returns the mesh manager object for this lump.
        """
        return MeshManager()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly context that is directly referencing this
        object in an assembly. This is only valid in the case where this
        BRepLump object is acting as a proxy in an assembly. Returns null
        in the case where the object is not in the context of an assembly.
        but is already the native object.
        """
        return Occurrence()
    @property
    def nativeObject(self) -> BRepLump:
        """
        The NativeObject is the object outside the context of an assembly.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return BRepLump()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the BRepLump object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same lump.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        
        This is only valid for lump that exist in the design, (the isTemporary
        property is false).
        """
        return str()

class BRepLumpDefinition(core.Base):
    """
    Represents the definition of a B-Rep lump which is used in defining the topology of a B-Rep body.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepLumpDefinition:
        return BRepLumpDefinition()
    @property
    def shellDefinitions(self) -> BRepShellDefinitions:
        """
        Provides access to the BRepShellDefinitions object associated with this BRepLumpDefinition.
        It's through the returned collection that you can create new BRepShellDefinition objects.
        """
        return BRepShellDefinitions()

class BRepLumpDefinitions(core.Base):
    """
    Provides access to the BRepLumpDefinition objects associated with the BRepBodyDefinition
    and it's through this object that you create new BRepLumpDefinition objects.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepLumpDefinitions:
        return BRepLumpDefinitions()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> BRepLumpDefinition:
        return None
    def __iter__(self) -> Iterator[BRepLumpDefinition]:
        return None
    def item(self, index: int) -> BRepLumpDefinition:
        """
        Function that returns the specified BRepLumpDefinition 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 BRepLumpDefinition()
    def add(self) -> BRepLumpDefinition:
        """
        Creates a new empty BRepLumpDefinition associated with the parent BRepBodyDefinition object.
        Returns the newly created BRepLumpDefinition object.
        """
        return BRepLumpDefinition()
    @property
    def count(self) -> int:
        """
        The number of B-Rep lump definition objects in the collection.
        """
        return int()

class BRepLumps(core.Base):
    """
    BRepLump collection.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepLumps:
        return BRepLumps()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> BRepLump:
        return None
    def __iter__(self) -> Iterator[BRepLump]:
        return None
    def item(self, index: int) -> BRepLump:
        """
        Function that returns the specified lump 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 BRepLump()
    @property
    def count(self) -> int:
        """
        Returns the number of lumps in the collection.
        """
        return int()

class BRepShell(core.Base):
    """
    Represents an entirely connected set of BRepFaces. A BRepLump may contain multiple BRepShells.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepShell:
        return BRepShell()
    def pointContainment(self, point: core.Point3D) -> PointContainment:
        """
        Determines the relationship of the input point with respect to this shell.
        point : The point to do the containment check for.
        Returns a value from the PointContainment enum indicating the relationship of
        the input point to the shell.
        """
        return PointContainment()
    def createForAssemblyContext(self, occurrence: Occurrence) -> BRepShell:
        """
        Returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context for the created proxy.
        Returns the new BrepShell proxy or null if this isn't the NativeObject.
        """
        return BRepShell()
    @property
    def faces(self) -> BRepFaces:
        """
        Returns the BRepFaces directly owned by this shell
        """
        return BRepFaces()
    @property
    def edges(self) -> BRepEdges:
        """
        returns the BRepEdges owned by this shell
        """
        return BRepEdges()
    @property
    def vertices(self) -> BRepVertices:
        """
        Returns the BRepVertices owned by this shell
        """
        return BRepVertices()
    @property
    def lump(self) -> BRepLump:
        """
        Returns the parent lump of this shell.
        """
        return BRepLump()
    @property
    def body(self) -> BRepBody:
        """
        Returns the parent body of the shell.
        """
        return BRepBody()
    @property
    def boundingBox(self) -> core.BoundingBox3D:
        """
        Returns the bounding box of this shell
        """
        return core.BoundingBox3D()
    @property
    def isClosed(self) -> bool:
        """
        Returns true if this shell is closed
        """
        return bool()
    @property
    def isVoid(self) -> bool:
        """
        Returns true if the faces of this shell bound a void or an empty space within an outer shell.
        """
        return bool()
    @property
    def area(self) -> float:
        """
        Returns the area in cm ^ 2.
        """
        return float()
    @property
    def volume(self) -> float:
        """
        Returns the volume in cm ^ 3. Returns 0 in the case the shell is not solid.
        """
        return float()
    @property
    def meshManager(self) -> MeshManager:
        """
        Returns the mesh manager object for this shell.
        """
        return MeshManager()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this
        object in an assembly. This is only valid in the case where this
        BRepShell object is acting as a proxy in an assembly. Returns null
        in the case where the object is not in the context of an assembly.
        but is already the native object.
        """
        return Occurrence()
    @property
    def nativeObject(self) -> BRepShell:
        """
        The NativeObject is the object outside the context of an assembly.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return BRepShell()
    @property
    def wire(self) -> BRepWire:
        """
        Returns the wire body, if any, that exists in this shell. Returns null if the
        shell doesn't have a wire body.
        """
        return BRepWire()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the BRepShell object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same shell.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        
        This is only valid for shells that exist in the design, (the isTemporary
        property is false).
        """
        return str()

class BRepShellDefinition(core.Base):
    """
    Represents the definition of a B-Rep shell that can be used as input to create a BRepBody that includes this shell.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepShellDefinition:
        return BRepShellDefinition()
    @property
    def faceDefinitions(self) -> BRepFaceDefinitions:
        """
        Provides access to the BRepFaceDefinitions object associated with this BRepShellDefinition.
        It's through the returned collection that you can create new BRepFaceDefinition objects.
        """
        return BRepFaceDefinitions()
    @property
    def wireDefinition(self) -> BRepWireDefinition:
        """
        Returns the single BRepWireDefinition associated with this shell definition.
        """
        return BRepWireDefinition()

class BRepShellDefinitions(core.Base):
    """
    Provides access to the BRepShellDefinition objects associated with the object the collection was obtained from.
    It's through this object that you create new BRepShellDefinition objects.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepShellDefinitions:
        return BRepShellDefinitions()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> BRepShellDefinition:
        return None
    def __iter__(self) -> Iterator[BRepShellDefinition]:
        return None
    def item(self, index: int) -> BRepShellDefinition:
        """
        Function that returns the specified BRepShellDefinition 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 BRepShellDefinition()
    def add(self) -> BRepShellDefinition:
        """
        Creates a new empty BRepShellDefinition object associated with the parent BRepLumpDefinition.
        Returns the newly created BRepShellDefinition object.
        """
        return BRepShellDefinition()
    @property
    def count(self) -> int:
        """
        The number of B-Rep shell definition objects in the collection.
        """
        return int()

class BRepShells(core.Base):
    """
    BRepShell collection.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepShells:
        return BRepShells()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> BRepShell:
        return None
    def __iter__(self) -> Iterator[BRepShell]:
        return None
    def item(self, index: int) -> BRepShell:
        """
        Function that returns the specified shell 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 BRepShell()
    @property
    def count(self) -> int:
        """
        The number of shells in the collection.
        """
        return int()

class BRepVertex(core.Base):
    """
    A 0-dimensional topological entity that bounds a BRepEdge.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepVertex:
        return BRepVertex()
    def createForAssemblyContext(self, occurrence: Occurrence) -> BRepVertex:
        """
        Returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context for the created proxy.
        Returns the new BrepVertex proxy or null if this isn't the NativeObject.
        """
        return BRepVertex()
    @property
    def faces(self) -> BRepFaces:
        """
        Returns the BRepFaces that uses this vertex through BRepEdge
        """
        return BRepFaces()
    @property
    def edges(self) -> BRepEdges:
        """
        Returns the BRepEdges bounded by this vertex
        """
        return BRepEdges()
    @property
    def isTolerant(self) -> bool:
        """
        Returns if the vertex is tolerant.
        The tolerance used is available from the tolerance property.
        """
        return bool()
    @property
    def tolerance(self) -> float:
        """
        Returns the tolerance used by a tolerant vertex.
        This value is only useful when isTolerant is true.
        """
        return float()
    @property
    def geometry(self) -> core.Point3D:
        """
        Returns the underlying geometry point
        """
        return core.Point3D()
    @property
    def shell(self) -> BRepShell:
        """
        Returns the parent shell.
        """
        return BRepShell()
    @property
    def body(self) -> BRepBody:
        """
        Returns the parent body.
        """
        return BRepBody()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this
        object in an assembly. This is only valid in the case where this
        BRepVertex object is acting as a proxy in an assembly. Returns null
        in the case where the object is not in the context of an assembly.
        but is already the native object.
        """
        return Occurrence()
    @property
    def nativeObject(self) -> BRepVertex:
        """
        The NativeObject is the object outside the context of an assembly.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return BRepVertex()
    @property
    def attributes(self) -> core.Attributes:
        """
        Returns the collection of attributes associated with this face.
        """
        return core.Attributes()
    @property
    def tempId(self) -> int:
        """
        Returns the temporary ID of this vertex. This ID is only good while the document
        remains open and as long as the owning BRepBody is not modified in any way.
        The findByTempId method of the BRepBody will return the entity in the body with the given ID.
        """
        return int()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the BRepVertex object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same vertex.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        
        This is only valid for vertices that exist in the design, (the isTemporary
        property is false).
        """
        return str()

class BRepVertexDefinition(core.Base):
    """
    Represents the definition of a B-Rep vertex that can be used as input to create a BRepBody that includes this vertex.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepVertexDefinition:
        return BRepVertexDefinition()
    @property
    def position(self) -> core.Point3D:
        """
        Gets and sets the position of the vertex in model space.
        """
        return core.Point3D()
    @position.setter
    def position(self, value: core.Point3D):
        """
        Gets and sets the position of the vertex in model space.
        """
        pass

class BRepVertices(core.Base):
    """
    BRepVertex collection.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepVertices:
        return BRepVertices()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> BRepVertex:
        return None
    def __iter__(self) -> Iterator[BRepVertex]:
        return None
    def item(self, index: int) -> BRepVertex:
        """
        Function that returns the specified vertex 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 BRepVertex()
    @property
    def count(self) -> int:
        """
        The number of vertices in the collection.
        """
        return int()

class BRepWire(core.Base):
    """
    Represents a single B-Rep wire body. A wire body consists of one or
    more edges and their vertices.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepWire:
        return BRepWire()
    def offsetPlanarWire(self, planeNormal: core.Vector3D, distance: float, cornerType: OffsetCornerTypes) -> BRepBody:
        """
        Method that computes the offset for a planar wire. A BRepBody containing the resulting
        BRepWire object(s) is returned. It's possible that the offset result of a single wire
        can result in multiple wires.
        planeNormal : Input Vector3D object that defines the positive direction of the
        plane the plane the wire lies on. This vector must be normal to the plane and is used to
        determine the side to offset the curves to. A positive offset distance is in the direction
        of the cross product (wire_tangent x wire_plane_normal). A negative offset is in the
        opposite direction.
        distance : The offset distance in centimeters. See the description for the Normal argument to see how
        a positive or negative value for the distance specifies the direction of the offset.
        cornerType : Specifies how the corners are connected when offsetting the curves results in gaps in the corners.
        See the documentation of the enum for a detailed description of each option.
        Returns a new temporary BRepBody that contains one or more wires that represent the offset.
        """
        return BRepBody()
    def createForAssemblyContext(self, occurrence: Occurrence) -> BRepWire:
        """
        Returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context for the created proxy.
        Returns the new BRepWire proxy or null if this isn't the NativeObject.
        """
        return BRepWire()
    @property
    def edges(self) -> BRepEdges:
        """
        Returns the B-Rep edges associated with this wire body.
        """
        return BRepEdges()
    @property
    def vertices(self) -> BRepVertices:
        """
        Returns the B-Rep vertices associated with this wire body.
        """
        return BRepVertices()
    @property
    def coEdges(self) -> BRepCoEdges:
        """
        Returns the co-edges associated with this wire body. The co-edges record
        the connections between the edges in the wire body.
        """
        return BRepCoEdges()
    @property
    def isPlanar(self) -> bool:
        """
        Indicates if this entities making up this wire body are planar and all lie on the same plane.
        """
        return bool()
    @property
    def parent(self) -> BRepBody:
        """
        Returns the parent BRepBody object that contains this wire.
        """
        return BRepBody()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this
        object in an assembly. This is only valid in the case where this
        BRepFace object is acting as a proxy in an assembly. Returns null
        in the case where the object is not in the context of an assembly.
        but is already the native object.
        """
        return Occurrence()
    @property
    def nativeObject(self) -> BRepWire:
        """
        The NativeObject is the object outside the context of an assembly.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return BRepWire()

class BRepWireDefinition(core.Base):
    """
    Represents the definition of a B-Rep wire that can be used as input to create a BRepBody that includes this wire.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepWireDefinition:
        return BRepWireDefinition()
    @property
    def wireEdgeDefinitions(self) -> BRepWireEdgeDefinitions:
        """
        Provides access to the BRepWireEdgeDefinitions object associated with the parent BRepWireDefinition object.
        It's through the returned collection that you can create new BRepWireEdgeDefinitions objects.
        """
        return BRepWireEdgeDefinitions()

class BRepWireEdgeDefinition(core.Base):
    """
    Represents the definition of an edge in B-Rep wire that can be used as input to create a BRepBody that includes this wire edge.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepWireEdgeDefinition:
        return BRepWireEdgeDefinition()
    @property
    def associativeID(self) -> int:
        """
        Gets and sets the associate ID of this B-Rep wire definition. This ID will be copied to the corresponding
        edge when the BRepBodyDefinition is used to create a BRepBody. It is used by Fusion as
        the identifier for the edge and is used for tracking this geometry for parametric recomputes.
        """
        return int()
    @associativeID.setter
    def associativeID(self, value: int):
        """
        Gets and sets the associate ID of this B-Rep wire definition. This ID will be copied to the corresponding
        edge when the BRepBodyDefinition is used to create a BRepBody. It is used by Fusion as
        the identifier for the edge and is used for tracking this geometry for parametric recomputes.
        """
        pass
    @property
    def startVertex(self) -> BRepVertexDefinition:
        """
        Gets and sets the start vertex of the wire edge definition.
        """
        return BRepVertexDefinition()
    @startVertex.setter
    def startVertex(self, value: BRepVertexDefinition):
        """
        Gets and sets the start vertex of the wire edge definition.
        """
        pass
    @property
    def endVertex(self) -> BRepVertexDefinition:
        """
        Gets and sets the end vertex of the wire edge definition.
        """
        return BRepVertexDefinition()
    @endVertex.setter
    def endVertex(self, value: BRepVertexDefinition):
        """
        Gets and sets the end vertex of the wire edge definition.
        """
        pass
    @property
    def modelSpaceCurve(self) -> core.Curve3D:
        """
        Gets and sets the Curve3D object that defines the shape of the edge using 3D geometry in model space.
        Valid objects are an Arc3D, NurbsCurve3D, Circle3D, Ellipse3D, EllipticalArc3D, or Line3D.
        """
        return core.Curve3D()
    @modelSpaceCurve.setter
    def modelSpaceCurve(self, value: core.Curve3D):
        """
        Gets and sets the Curve3D object that defines the shape of the edge using 3D geometry in model space.
        Valid objects are an Arc3D, NurbsCurve3D, Circle3D, Ellipse3D, EllipticalArc3D, or Line3D.
        """
        pass

class BRepWireEdgeDefinitions(core.Base):
    """
    A collection of BRepWireEdgeDefinition objects. Using this collection you can create new
    BRepWireDefinition objects to full define a wire body.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepWireEdgeDefinitions:
        return BRepWireEdgeDefinitions()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> BRepWireEdgeDefinition:
        return None
    def __iter__(self) -> Iterator[BRepWireEdgeDefinition]:
        return None
    def item(self, index: int) -> BRepWireEdgeDefinition:
        """
        Function that returns the specified BRepWireEdgeDefinition 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 BRepWireEdgeDefinition()
    def add(self, startVertex: BRepVertexDefinition, endVertex: BRepVertexDefinition, modelSpaceCurve: core.Curve3D) -> BRepWireEdgeDefinition:
        """
        Creates a new BRepWireEdgeDefinition object associated with the parent BRepWireDefinition object.
        startVertex : Vertex definition that defines the start of the edge. For a closed curve, like a circle, you still
        need to provide a vertex on the curve but should use the same BRepVertexDefinition for both the start and end vertices.
        endVertex : Vertex definition that defines the end of the edge. For a closed curve, like a circle, this should be the
        same vertex as used for the start vertex.
        modelSpaceCurve : A Curve3D object that defines the shape of the edge using 3D geometry in model space.
        Valid input is an Arc3D, NurbsCurve3D, Circle3D, Ellipse3D, EllipticalArc3D, or Line3D.
        Returns the newly created BRepWireEdgeDefinition object or null in the case of failure.
        """
        return BRepWireEdgeDefinition()
    @property
    def count(self) -> int:
        """
        The number of B-Rep wire edge definition objects in the collection.
        """
        return int()

class BRepWires(core.Base):
    """
    Provides access to B-Rep wire bodies.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BRepWires:
        return BRepWires()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> BRepWire:
        return None
    def __iter__(self) -> Iterator[BRepWire]:
        return None
    def item(self, index: int) -> BRepWire:
        """
        Function that returns the specified wire 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 BRepWire()
    @property
    def count(self) -> int:
        """
        The number of B-Rep wire bodies in the collection.
        """
        return int()

class Canvas(core.Base):
    """
    Represents a Canvas within a component.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Canvas:
        return Canvas()
    def deleteMe(self) -> bool:
        """
        Deletes the canvas from the component.
        """
        return bool()
    def saveImage(self, filename: str) -> bool:
        """
        Saves the image associated with the canvas to the specified file. This is useful in
        cases where the original image file is no longer available but you need the image
        for some other purpose.
        filename : The full filename of the image to save, including the file extension, which controls
        the format of the image file. If a file extension other than png, jpg, or tiff is
        specified, a png extension will be added to the filename by default.
        
        This method will fail if a file with the specified filename already exists.
        If you want to overwrite the file, you'll need to delete it first before
        calling this method.
        Returns true if writing the file was successful.
        """
        return bool()
    def flipHorizontal(self) -> bool:
        """
        Flips the image along the horizontal axis. This is a convenience method that
        flips the direction of the X axis of the transform.
        Returns true if the flip was successful.
        """
        return bool()
    def flipVertical(self) -> bool:
        """
        Flips the image along the vertical axis. This is a convenience method that
        flips the direction of the Y axis of the transform.
        Returns true if the flip was successful.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> Canvas:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return Canvas()
    @property
    def name(self) -> str:
        """
        Gets and sets the name of the canvas. This is the name seen in the browser and timeline.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name of the canvas. This is the name seen in the browser and timeline.
        """
        pass
    @property
    def planarEntity(self) -> core.Base:
        """
        Gets and sets the plane the canvas is associated with. This can be either a planar Face
        or a construction plane. In a direct modeling design or the canvas is being created in
        a base feature, this can be a Plane object.
        """
        return core.Base()
    @planarEntity.setter
    def planarEntity(self, value: core.Base):
        """
        Gets and sets the plane the canvas is associated with. This can be either a planar Face
        or a construction plane. In a direct modeling design or the canvas is being created in
        a base feature, this can be a Plane object.
        """
        pass
    @property
    def opacity(self) -> int:
        """
        Gets and sets the opacity of the canvas where 0 is completely
        transparent and 100 is completely opaque. Setting this property
        to a value outside the range of 0-100 will result in the value
        being set to the closest valid value.
        """
        return int()
    @opacity.setter
    def opacity(self, value: int):
        """
        Gets and sets the opacity of the canvas where 0 is completely
        transparent and 100 is completely opaque. Setting this property
        to a value outside the range of 0-100 will result in the value
        being set to the closest valid value.
        """
        pass
    @property
    def isDisplayedThrough(self) -> bool:
        """
        Controls if the image is visible through the model or not.
        """
        return bool()
    @isDisplayedThrough.setter
    def isDisplayedThrough(self, value: bool):
        """
        Controls if the image is visible through the model or not.
        """
        pass
    @property
    def isSelectable(self) -> bool:
        """
        Controls if the canvas is selectable or not within the graphics window.
        """
        return bool()
    @isSelectable.setter
    def isSelectable(self, value: bool):
        """
        Controls if the canvas is selectable or not within the graphics window.
        """
        pass
    @property
    def isRenderable(self) -> bool:
        """
        Controls if the canvas will be rendered when ray tracing within the Render workspace.
        """
        return bool()
    @isRenderable.setter
    def isRenderable(self, value: bool):
        """
        Controls if the canvas will be rendered when ray tracing within the Render workspace.
        """
        pass
    @property
    def isVisible(self) -> bool:
        """
        Returns if the canvas is currently visible in the graphics window. The isLightBulbOn
        property of the canvas controls if the canvas should be displayed or not, but even
        when true, the canvas may not be visible because the occurrence that references the
        component may not be visible. It's also possible to turn off the visibility of all
        canvases for a component. This property takes all of that into account when reporting
        if the canvas is visible or not.
        """
        return bool()
    @property
    def imageFilename(self) -> str:
        """
        Gets and sets the filename of the image used for the canvas. When getting this property,
        the filename returned is the file that was used when the canvas was initially created.
        It's possible the file may no longer exist.
        
        When setting this property, it is the full filename to the image to use for the canvas.
        PNG, JPEG, and TIFF files are supported.
        """
        return str()
    @imageFilename.setter
    def imageFilename(self, value: str):
        """
        Gets and sets the filename of the image used for the canvas. When getting this property,
        the filename returned is the file that was used when the canvas was initially created.
        It's possible the file may no longer exist.
        
        When setting this property, it is the full filename to the image to use for the canvas.
        PNG, JPEG, and TIFF files are supported.
        """
        pass
    @property
    def plane(self) -> core.Plane:
        """
        Returns a Plane object that represents the position and orientation of the canvas in model space.
        """
        return core.Plane()
    @property
    def transform(self) -> core.Matrix2D:
        """
        Gets and sets the transform of the canvas. This allows you to control the position, rotation,
        scaling, and flipping. The X and Y axes defined by the matrix must be perpendicular to one another.
        
        This is a 3x3 matrix where the third column controls the position of the canvas and
        defines the position using 2D coordinates in the model space.
        """
        return core.Matrix2D()
    @transform.setter
    def transform(self, value: core.Matrix2D):
        """
        Gets and sets the transform of the canvas. This allows you to control the position, rotation,
        scaling, and flipping. The X and Y axes defined by the matrix must be perpendicular to one another.
        
        This is a 3x3 matrix where the third column controls the position of the canvas and
        defines the position using 2D coordinates in the model space.
        """
        pass
    @property
    def isLightBulbOn(self) -> bool:
        """
        Gets and sets if the light bulb of this canvas as displayed in the browser is on or off.
        
        A canvas will only be visible if the light bulb is switched on. However, the light bulb
        can be on and the canvas still invisible if the visibility of a higher level occurrence
        has its light bulb off or if the light bulb for Canvases folder is off to turn off all
        canvases in a component.
        """
        return bool()
    @isLightBulbOn.setter
    def isLightBulbOn(self, value: bool):
        """
        Gets and sets if the light bulb of this canvas as displayed in the browser is on or off.
        
        A canvas will only be visible if the light bulb is switched on. However, the light bulb
        can be on and the canvas still invisible if the visibility of a higher level occurrence
        has its light bulb off or if the light bulb for Canvases folder is off to turn off all
        canvases in a component.
        """
        pass
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the Canvas object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same canvas.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as a way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        """
        return str()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this object
        in an assembly. This is only valid in the case where this is acting
        as a proxy in an assembly. Returns null in the case where the object
        is not in the context of an assembly but is already the native object.
        """
        return Occurrence()
    @property
    def nativeObject(self) -> Canvas:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return Canvas()
    @property
    def timelineObject(self) -> TimelineObject:
        """
        Returns the timeline object associated with the creation of this canvas.
        """
        return TimelineObject()
    @property
    def isDerived(self) -> bool:
        """
        Returns if this canvas is derived from another design. If true, the canvas cannot be deleted.
        You should not attempt to make any edits to the derived canvas. Any edits made to this derived canvas will be lost when the derive updates.
        """
        return bool()
    @property
    def deriveFeature(self) -> DeriveFeature:
        """
        Returns the DeriveFeature if this canvas is derived from another design.
        This property returns null if the canvas is not derived from another design (i.e. isDerived property returns false).
        """
        return DeriveFeature()

class Canvases(core.Base):
    """
    Provides access to the Canvases in a component and provides the functionality
    to add new Canvases.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Canvases:
        return Canvases()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> Canvas:
        return None
    def __iter__(self) -> Iterator[Canvas]:
        return None
    def item(self, index: int) -> Canvas:
        """
        Returns the specified canvas 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 Canvas()
    def itemByName(self, name: str) -> Canvas:
        """
        Returns the specified canvas using the name of the canvas.
        name : The name of the canvas as seen in the browser and timeline.
        Returns the specified Canvas, if it exists. Otherwise it returns null.
        """
        return Canvas()
    def add(self, input: CanvasInput) -> Canvas:
        """
        Creates a new canvas. Use the createInput method to first create an input object and
        set the available options. Then, pass that input object to the add method to create the canvas.
        input : The CanvasInput object that defines the required information needed to create a new canvas.
        A CanvasInput object is the logical equivalent to the command dialog when creating
        a canvas. It provides access to the various options when creating a canvas. Calling the add method and passing
        in the CanvasInput is the equivalent to clicking the OK button on the dialog to create the canvas.
        Returns the newly created Canvas object.
        """
        return Canvas()
    def createInput(self, imageFilename: str, planarEntity: core.Base) -> CanvasInput:
        """
        Creates a new CanvasInput object. A CanvasInput object is the logical equivalent to the command dialog when creating
        a canvas. It provides access to the various options when creating a canvas. Calling the add method and passing
        in the CanvasInput is the equivalent to clicking the OK button on the dialog to create the canvas.
        imageFilename : The full filename to the image to use for the canvas. PNG, JPEG, and TIFF files are supported.
        planarEntity : A planar BRepFace or a Construction plane to create the canvas on. If the canvas is being created in a base
        feature or in a direct modeling design, this can be a Plane object.
        Returns a CanvasInput object or null in the case of failure.
        """
        return CanvasInput()
    @property
    def count(self) -> int:
        """
        Returns the number of canvases in the component.
        """
        return int()

class CanvasInput(core.Base):
    """
    The CanvasInput object is used to define the various options when creating a new canvas. It's created
    using the Canvases.createInput method and is used by the Canvases.add method to create a Canvas.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CanvasInput:
        return CanvasInput()
    def flipHorizontal(self) -> bool:
        """
        Flips the image along the horizontal axis. This is a convenience method that
        flips the direction of the X axis of the transform.
        Returns true if the flip was successful.
        """
        return bool()
    def flipVertical(self) -> bool:
        """
        Flips the image along the vertical axis. This is a convenience method that
        flips the direction of the Y axis of the transform.
        Returns true if the flip was successful.
        """
        return bool()
    @property
    def planarEntity(self) -> core.Base:
        """
        Gets and sets the plane the canvas is associated with. This can be either a planar Face
        or a construction plane. In a direct modeling design or the canvas is being created in a
        base feature, this can be a Plane object.
        """
        return core.Base()
    @planarEntity.setter
    def planarEntity(self, value: core.Base):
        """
        Gets and sets the plane the canvas is associated with. This can be either a planar Face
        or a construction plane. In a direct modeling design or the canvas is being created in a
        base feature, this can be a Plane object.
        """
        pass
    @property
    def opacity(self) -> int:
        """
        Gets and sets the opacity of the canvas where 0 is completely
        transparent and 100 is completely opaque. Setting this property
        to a value outside the range of 0-100 will result in the value
        being set to the closest valid value.
        
        Defaults to 50 when the input is created.
        """
        return int()
    @opacity.setter
    def opacity(self, value: int):
        """
        Gets and sets the opacity of the canvas where 0 is completely
        transparent and 100 is completely opaque. Setting this property
        to a value outside the range of 0-100 will result in the value
        being set to the closest valid value.
        
        Defaults to 50 when the input is created.
        """
        pass
    @property
    def isDisplayedThrough(self) -> bool:
        """
        Controls if the image is visible through the model or not.
        
        Defaults to true when the input is created.
        """
        return bool()
    @isDisplayedThrough.setter
    def isDisplayedThrough(self, value: bool):
        """
        Controls if the image is visible through the model or not.
        
        Defaults to true when the input is created.
        """
        pass
    @property
    def isSelectable(self) -> bool:
        """
        Controls if the canvas is selectable or not within the graphics window.
        
        Defaults to false when the input is created.
        """
        return bool()
    @isSelectable.setter
    def isSelectable(self, value: bool):
        """
        Controls if the canvas is selectable or not within the graphics window.
        
        Defaults to false when the input is created.
        """
        pass
    @property
    def isRenderable(self) -> bool:
        """
        Controls if the canvas will be rendered when ray tracing within the Render workspace.
        
        Defaults to false when the input is created.
        """
        return bool()
    @isRenderable.setter
    def isRenderable(self, value: bool):
        """
        Controls if the canvas will be rendered when ray tracing within the Render workspace.
        
        Defaults to false when the input is created.
        """
        pass
    @property
    def imageFilename(self) -> str:
        """
        Gets and sets the filename of the image used for the canvas.
        
        When setting this property, it is the full filename to the image to use for the canvas.
        PNG, JPEG, and TIFF files are supported.
        """
        return str()
    @imageFilename.setter
    def imageFilename(self, value: str):
        """
        Gets and sets the filename of the image used for the canvas.
        
        When setting this property, it is the full filename to the image to use for the canvas.
        PNG, JPEG, and TIFF files are supported.
        """
        pass
    @property
    def plane(self) -> core.Plane:
        """
        Returns a Plane object that is obtained from the planar face or construction plane
        and defines the parameter space the canvas is positioned relative to.
        """
        return core.Plane()
    @property
    def transform(self) -> core.Matrix2D:
        """
        Gets and sets the transform of the canvas. This allows you to control the position, rotation,
        scaling, and flipping. The X and Y axes defined by the matrix must be perpendicular to one another.
        The directions of the X and Y axes define the orientation of the image.
        
        This is a 3x3 matrix where the third column controls the position of the canvas and is relative to
        the parameter space of the plane defined by the specified planar face or construction plane.
        """
        return core.Matrix2D()
    @transform.setter
    def transform(self, value: core.Matrix2D):
        """
        Gets and sets the transform of the canvas. This allows you to control the position, rotation,
        scaling, and flipping. The X and Y axes defined by the matrix must be perpendicular to one another.
        The directions of the X and Y axes define the orientation of the image.
        
        This is a 3x3 matrix where the third column controls the position of the canvas and is relative to
        the parameter space of the plane defined by the specified planar face or construction plane.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class ChamferEdgeSet(core.Base):
    """
    The base class for the classes that define the different types of chamfer edge sets.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ChamferEdgeSet:
        return ChamferEdgeSet()
    def deleteMe(self) -> bool:
        """
        Deletes the chamfer edge set from the chamfer.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        Returns true if the operation was successful.
        """
        return bool()
    @property
    def isTangentChain(self) -> bool:
        """
        Gets and sets the Tangent chain for chamfer. This enables tangent chain option for chamfer.
        """
        return bool()
    @isTangentChain.setter
    def isTangentChain(self, value: bool):
        """
        Gets and sets the Tangent chain for chamfer. This enables tangent chain option for chamfer.
        """
        pass

class ChamferEdgeSets(core.Base):
    """
    Collection that provides access to all of the existing chamfer edge sets associated with a chamfer feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ChamferEdgeSets:
        return ChamferEdgeSets()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ChamferEdgeSet:
        return None
    def __iter__(self) -> Iterator[ChamferEdgeSet]:
        return None
    def item(self, index: int) -> ChamferEdgeSet:
        """
        Function that returns the specified chamfer edge set 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 ChamferEdgeSet()
    def addEqualDistanceChamferEdgeSet(self, edges: core.ObjectCollection, distance: core.ValueInput, isTangentChain: bool) -> bool:
        """
        Adds a set of edges an equal distance offset to this chamfer feature.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        edges : An ObjectCollection containing the edges to be chamfered. Edges can be defined by passing in BrepEdge,
        BRepFace, or Feature objects. If BRepFace or Feature objects are passed in all of the edges associated
        with those objects will be chamfered. If BRepEdge objects are provided and the isTangentChain argument is true
        additional edges may also get chamfered if they are tangentially connected to any of the input edges.
        distance : A ValueInput object that defines the distance offset of the chamfer. If the ValueInput uses
        a real then it is interpreted as centimeters. If it is a string then the units
        can be defined as part of the string (i.e. "2 in") or if no units are specified
        it is interpreted using the current default units for length.
        isTangentChain : A boolean value for setting whether or not edges that are tangentially connected to
        the input edges (if any) will also be chamfered.
        Returns true if the set of edges was successfully added to the ChamferFeatureInput.
        """
        return bool()
    def addTwoDistancesChamferEdgeSet(self, edges: core.ObjectCollection, distanceOne: core.ValueInput, distanceTwo: core.ValueInput, isFlipped: bool, isTangentChain: bool) -> bool:
        """
        Adds a set of edges an equal distance offset to this chamfer feature.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        edges : An ObjectCollection containing the edges to be chamfered. Edges can be defined by passing in BrepEdge,
        BRepFace, or Feature objects. If BRepFace or Feature objects are passed in all of the edges associated
        with those objects will be chamfered. If BRepEdge objects are provided and the isTangentChain argument is true
        additional edges may also get chamfered if they are tangentially connected to any of the input edges.
        distanceOne : A ValueInput object that defines the first distance offset of the chamfer. If the ValueInput uses
        a real then it is interpreted as centimeters. If it is a string then the units
        can be defined as part of the string (i.e. "2 in") or if no units are specified
        it is interpreted using the current default units for length.
        distanceTwo : A ValueInput object that defines the second distance offset of the chamfer. If the ValueInput uses
        a real then it is interpreted as centimeters. If it is a string then the units
        can be defined as part of the string (i.e. "2 in") or if no units are specified
        it is interpreted using the current default units for length.
        isFlipped : Swaps the directions for distance one and two.
        isTangentChain : A boolean value for setting whether or not edges that are tangentially connected to
        the input edges (if any) will also be chamfered.
        Returns true if the set of edges was successfully added to the ChamferFeatureInput.
        """
        return bool()
    def addDistanceAndAngleChamferEdgeSet(self, edges: core.ObjectCollection, distance: core.ValueInput, angle: core.ValueInput, isFlipped: bool, isTangentChain: bool) -> bool:
        """
        Adds a set of edges an equal distance offset to this chamfer feature.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        edges : An ObjectCollection containing the edges to be chamfered. Edges can be defined by passing in BrepEdge,
        BRepFace, or Feature objects. If BRepFace or Feature objects are passed in all of the edges associated
        with those objects will be chamfered. If BRepEdge objects are provided and the isTangentChain argument is true
        additional edges may also get chamfered if they are tangentially connected to any of the input edges.
        distance : A ValueInput object that defines the distance offset of the chamfer. If the ValueInput uses
        a real then it is interpreted as centimeters. If it is a string then the units
        can be defined as part of the string (i.e. "2 in") or if no units are specified
        it is interpreted using the current default units for length.
        angle : A ValueInput object that defines the angle of the chamfer. If the ValueInput uses
        a real then it is interpreted as radians. If it is a string then the units
        can be defined as part of the string (i.e. "2 rad") or if no units are specified
        it is interpreted as degrees.
        isFlipped : Swaps the directions for distance one and two.
        isTangentChain : A boolean value for setting whether or not edges that are tangentially connected to
        the input edges (if any) will also be chamfered.
        Returns true if the set of edges was successfully added to the ChamferFeatureInput.
        """
        return bool()
    @property
    def count(self) -> int:
        """
        The number of chamfer edge sets in the collection.
        """
        return int()

class ChamferFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a chamfer
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ChamferFeatureInput:
        return ChamferFeatureInput()
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass
    @property
    def cornerType(self) -> ChamferCornerTypes:
        """
        Gets and sets the type of corner to be modeled when multiple edges connect at a vertex.
        """
        return ChamferCornerTypes()
    @cornerType.setter
    def cornerType(self, value: ChamferCornerTypes):
        """
        Gets and sets the type of corner to be modeled when multiple edges connect at a vertex.
        """
        pass
    @property
    def chamferEdgeSets(self) -> ChamferEdgeSets:
        """
        Returns the collection of edge sets for this chamfer feature input.
        """
        return ChamferEdgeSets()

class ChamferFeatures(core.Base):
    """
    Collection that provides access to all of the existing chamfer features in a component
    and supports the ability to create new chamfer features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ChamferFeatures:
        return ChamferFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ChamferFeature:
        return None
    def __iter__(self) -> Iterator[ChamferFeature]:
        return None
    def item(self, index: int) -> ChamferFeature:
        """
        Function that returns the specified chamfer feature 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 ChamferFeature()
    def add(self, input: ChamferFeatureInput) -> ChamferFeature:
        """
        Creates a new chamfer feature.
        input : A ChamferFeatureInput object that defines the desired chamfer. Use the createInput
        method to create a new ChamferFeatureInput object and then use methods on it
        (the ChamferFeatureInput object) to define the chamfer.
        Returns the newly created ChamferFeature object or null if the creation failed.
        """
        return ChamferFeature()
    def itemByName(self, name: str) -> ChamferFeature:
        """
        Function that returns the specified chamfer feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return ChamferFeature()
    def createInput2(self) -> ChamferFeatureInput:
        """
        Creates a ChamferFeatureInput object. Use properties and methods on this object
        to define the chamfer you want to create and then use the Add method, passing in
        the ChamferFeatureInput object.
        Returns the newly created ChamferFeatureInput object or null if the creation failed.
        """
        return ChamferFeatureInput()
    @property
    def count(self) -> int:
        """
        The number of chamfer features in the collection.
        """
        return int()

class CircularPatternConstraintInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a circular pattern
    in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CircularPatternConstraintInput:
        return CircularPatternConstraintInput()
    @property
    def entities(self) -> list[SketchEntity]:
        """
        Gets and sets the entities to pattern. Sketch points and curves are valid
        entities to pattern.
        """
        return [SketchEntity()]
    @entities.setter
    def entities(self, value: list[SketchEntity]):
        """
        Gets and sets the entities to pattern. Sketch points and curves are valid
        entities to pattern.
        """
        pass
    @property
    def centerPoint(self) -> SketchPoint:
        """
        Gets and sets the sketch point that defines the center of the pattern.
        """
        return SketchPoint()
    @centerPoint.setter
    def centerPoint(self, value: SketchPoint):
        """
        Gets and sets the sketch point that defines the center of the pattern.
        """
        pass
    @property
    def quantity(self) -> core.ValueInput:
        """
        Gets and sets quantity of the elements.
        """
        return core.ValueInput()
    @quantity.setter
    def quantity(self, value: core.ValueInput):
        """
        Gets and sets quantity of the elements.
        """
        pass
    @property
    def totalAngle(self) -> core.ValueInput:
        """
        Gets and sets total angle. A positive angle is a counter-clockwise direction and
        a negative angle can be used to reverse the direction.
        An angle of 360 degrees or 2 pi radians will create a full circular pattern.
        """
        return core.ValueInput()
    @totalAngle.setter
    def totalAngle(self, value: core.ValueInput):
        """
        Gets and sets total angle. A positive angle is a counter-clockwise direction and
        a negative angle can be used to reverse the direction.
        An angle of 360 degrees or 2 pi radians will create a full circular pattern.
        """
        pass
    @property
    def isSymmetric(self) -> bool:
        """
        Gets and sets if the angle extent is in one direction or is symmetric.
        """
        return bool()
    @isSymmetric.setter
    def isSymmetric(self, value: bool):
        """
        Gets and sets if the angle extent is in one direction or is symmetric.
        """
        pass
    @property
    def isSuppressed(self) -> list[bool]:
        """
        Specifies which, if any, instances of the pattern are suppressed. This
        defaults to all instances being visible. This returns an array of Booleans
        that indicates if a particular instance in the pattern is suppressed or
        not. A value of true will result in the associated instance being
        suppressed.
        """
        return [bool()]
    @isSuppressed.setter
    def isSuppressed(self, value: list[bool]):
        """
        Specifies which, if any, instances of the pattern are suppressed. This
        defaults to all instances being visible. This returns an array of Booleans
        that indicates if a particular instance in the pattern is suppressed or
        not. A value of true will result in the associated instance being
        suppressed.
        """
        pass

class CircularPatternFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a circular pattern
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CircularPatternFeatureInput:
        return CircularPatternFeatureInput()
    @property
    def inputEntities(self) -> core.ObjectCollection:
        """
        Gets and sets the input entities. The collection can contain BRepFace, PartFeature, BRepBody, or Occurrence
        objects. All of the entities provided must be the same type. For example, it must contain only bodies and can't
        contain both bodies and faces.
        
        You can also pattern ConstructionPoint, ConstructionAxis, and ConstructionPlane objects. When patterning any
        construction goemetry, only one entity can be patterned at a time, so the ObjectCollection must contain a
        single item.
        """
        return core.ObjectCollection()
    @inputEntities.setter
    def inputEntities(self, value: core.ObjectCollection):
        """
        Gets and sets the input entities. The collection can contain BRepFace, PartFeature, BRepBody, or Occurrence
        objects. All of the entities provided must be the same type. For example, it must contain only bodies and can't
        contain both bodies and faces.
        
        You can also pattern ConstructionPoint, ConstructionAxis, and ConstructionPlane objects. When patterning any
        construction goemetry, only one entity can be patterned at a time, so the ObjectCollection must contain a
        single item.
        """
        pass
    @property
    def axis(self) -> core.Base:
        """
        Gets and sets the axis of circular pattern. This can be a sketch line, linear edge,
        construction axis, an edge/sketch curve that defines an axis (circle, etc.) or a face that defines an axis (cylinder, cone, torus, etc.).
        """
        return core.Base()
    @axis.setter
    def axis(self, value: core.Base):
        """
        Gets and sets the axis of circular pattern. This can be a sketch line, linear edge,
        construction axis, an edge/sketch curve that defines an axis (circle, etc.) or a face that defines an axis (cylinder, cone, torus, etc.).
        """
        pass
    @property
    def quantity(self) -> core.ValueInput:
        """
        Gets and sets quantity of the elements.
        """
        return core.ValueInput()
    @quantity.setter
    def quantity(self, value: core.ValueInput):
        """
        Gets and sets quantity of the elements.
        """
        pass
    @property
    def totalAngle(self) -> core.ValueInput:
        """
        Gets and sets total angle. A negative angle can be used to reverse the direction.
        An angle of 360 degrees or 2 pi radians will create a full circular pattern.
        """
        return core.ValueInput()
    @totalAngle.setter
    def totalAngle(self, value: core.ValueInput):
        """
        Gets and sets total angle. A negative angle can be used to reverse the direction.
        An angle of 360 degrees or 2 pi radians will create a full circular pattern.
        """
        pass
    @property
    def isSymmetric(self) -> bool:
        """
        Gets and sets if the angle extent is in one direction or symmetric.
        """
        return bool()
    @isSymmetric.setter
    def isSymmetric(self, value: bool):
        """
        Gets and sets if the angle extent is in one direction or symmetric.
        """
        pass
    @property
    def patternComputeOption(self) -> PatternComputeOptions:
        """
        Gets and sets the compute option when patterning features. The default value for this is AdjustPatternCompute.
        This property only applies when patterning features and is ignored in the direct modeling environment.
        """
        return PatternComputeOptions()
    @patternComputeOption.setter
    def patternComputeOption(self, value: PatternComputeOptions):
        """
        Gets and sets the compute option when patterning features. The default value for this is AdjustPatternCompute.
        This property only applies when patterning features and is ignored in the direct modeling environment.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class CircularPatternFeatures(core.Base):
    """
    Collection that provides access to all of the existing circular pattern features in a component
    and supports the ability to create new circular pattern features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CircularPatternFeatures:
        return CircularPatternFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> CircularPatternFeature:
        return None
    def __iter__(self) -> Iterator[CircularPatternFeature]:
        return None
    def item(self, index: int) -> CircularPatternFeature:
        """
        Function that returns the specified circular pattern feature 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 CircularPatternFeature()
    def createInput(self, inputEntities: core.ObjectCollection, axis: core.Base) -> CircularPatternFeatureInput:
        """
        Creates a CircularPatternFeatureInput object. Use properties and methods on this object
        to define the circular pattern you want to create and then use the Add method, passing in
        the CircularPatternFeatureInput object.
        inputEntities : An ObjectCollection of the entities to pattern. The collection can contain BRepFace, PartFeature, BRepBody, or Occurrence
        objects. All of the entities provided must be the same type. For example, it must contain only bodies and can't
        contain both bodies and faces.
        
        You can also pattern ConstructionPoint, ConstructionAxis, and ConstructionPlane objects. When patterning any
        construction goemetry, only one entity can be patterned at a time, so the ObjectCollection must contain a
        single item.
        axis : Input linear entity or the entity has axis that defines axis of circular pattern. This can be a sketch line, linear edge,
        construction axis, an edge/sketch curve that defines an axis (circle, etc.) or a face that defines an axis (cylinder, cone, torus, etc.).
        Returns the newly created CircularPatternFeatureInput object or null if the creation failed.
        """
        return CircularPatternFeatureInput()
    def add(self, input: CircularPatternFeatureInput) -> CircularPatternFeature:
        """
        Creates a new circular pattern feature.
        input : A CircularPatternFeatureInput object that defines the desired circular pattern. Use the createInput
        method to create a new CircularPatternFeatureInput object and then use methods on it
        (the CircularPatternFeatureInput object) to define the circular pattern.
        Returns the newly created CircularPatternFeature object or null if the creation failed.
        """
        return CircularPatternFeature()
    def itemByName(self, name: str) -> CircularPatternFeature:
        """
        Function that returns the specified circular pattern feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return CircularPatternFeature()
    @property
    def count(self) -> int:
        """
        The number of circular pattern features in the collection.
        """
        return int()

class ClearanceHoleDataQuery(core.Base):
    """
    This object provides methods to query the clearance hole to find valid definitions for creating
    a clearance hole.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ClearanceHoleDataQuery:
        return ClearanceHoleDataQuery()
    @staticmethod
    def create() -> ClearanceHoleDataQuery:
        """
        Static method to create a new ClearanceHoleDataQuery object. The ClearanceHoleDataQuery object
        is a utility object that provides methods to query for the valid clearance hole definitions
        defined in Fusion. This object provides similar functionality as the hole command dialog to
        find valid clearance standards, fastener types, and sizes, which can be used to create clearance
        hole features.
        Returns a ClearanceHoleDataQuery object.
        """
        return ClearanceHoleDataQuery()
    def standardCustomName(self, standard: str) -> str:
        """
        Method that returns the custom name for a given standard. The custom name is the localized name
        of the standard using the current language specified for Fusion.
        standard : The standard you want to get the custom name for.
        Returns the specified custom name or an empty string if an invalid standard is specified.
        """
        return str()
    def allFastenerTypes(self, standard: str) -> list[str]:
        """
        This method returns an array of all the available fastener types for the given standard.
        To get the available standards, use the allStandards property.
        standard : The standard to search within.
        Returns the specified fastener types or an empty array if an invalid standard is specified.
        """
        return [str()]
    def allSizes(self, standard: str, fastenerType: str) -> list[str]:
        """
        This method returns an array of all the sizes for the given standard and fastener type. Valid standards and
        fastener types can be obtained using the allStandards and allFastenerTypes functions.
        standard : The standard to search within.
        fastenerType : The fastener type in the specified standard to search within.
        Returns the specified sizes or empty array if an invalid standard or fastener type is specified.
        """
        return [str()]
    @property
    def allStandards(self) -> list[str]:
        """
        This method returns an array of all the available standards. The standards' names are always
        English. This English name should be used in the other methods that take the standard as an
        input argument. If you need to display the standard name to the user, you can use the
        standardCustomName method To get the localized name.
        """
        return [str()]

class ClearanceHoleInfo(core.Base):
    """
    This object defines the methods and properties that define the size of a clearance hole. This object is used
    to create new hole features whose size is defined as a clearance hole for a specific size fastener. A new
    ClearanceHoleInfo object is created by using the ClearanceHoleInfo.create method. To determine valid values
    when creating a ClearanceHoleInfo object, you can use the ClearanceHoleDataQuery object, which is statically
    created using the ClearanceHoleDataQuery.create method.
    
    If the ClearanceHoleInfo object is obtained from an existing HoleFeature object, modifying properties on
    the returned ClearanceHoleInfo object will modify the feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ClearanceHoleInfo:
        return ClearanceHoleInfo()
    @staticmethod
    def create(standard: str, fastenerType: str, size: str, fit: ClearanceHoleFits) -> ClearanceHoleInfo:
        """
        Method that creates a new ClearanceHoleInfo object to use in creating clearance holes.
        The ClearanceHoleInfo object defines the type, size, and fit of the clearance hole to create.
        Fusion uses this information to look up the full details of the clearance hole in tables delivered
        with Fusion. The ClearanceHoleDataQuery object can be used to determine valid input for this information.
        It's statically created using the ClearanceHoleDataQuery.create method.
        standard : Input string that specifies the standard.
        fastenerType : Input string that specifies the fastener type.
        size : Input string that specifies the fastener size.
        fit : Input enum value that specifies the fit of the fastener within the hole.
        Returns the newly created ClearanceHoleInfo object or null if the creation failed.
        """
        return ClearanceHoleInfo()
    def redefine(self, standard: str, fastenerType: str, size: str, fit: ClearanceHoleFits) -> bool:
        """
        Method that redefines the values associated with an existing ClearanceHoleInfo object. This is
        done to modify an existing clearance hole. The ClearanceHoleInfo object defines the type, size,
        and fit of the clearance hole to create. Fusion uses this information to look up the full details
        of the clearance hole in tables delivered with Fusion. The ClearanceHoleDataQuery object can be
        used to determine valid input for this information.
        standard : Input string that specifies the standard.
        fastenerType : Input string that specifies the fastener type.
        size : Input string that specifies the fastener size.
        fit : Input enum value that specifies the amount of clearance between the hole and the fastener.
        Returns true if the redefinition was successful.
        """
        return bool()
    @property
    def standard(self) -> str:
        """
        Returns the string that defines the standard. This is typically obtained by using the
        ClearanceHoleDataQuery object.
        """
        return str()
    @property
    def fastenerType(self) -> str:
        """
        Returns the string that defines the fastener type.
        """
        return str()
    @property
    def size(self) -> str:
        """
        Returns the string that defines the fastener size the clearance hole is sized for.
        """
        return str()
    @property
    def fit(self) -> ClearanceHoleFits:
        """
        Returns the enum value that defines the amount of clearance
        between the hole and the fastener.
        """
        return ClearanceHoleFits()

class CoilFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a coil feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CoilFeatureInput:
        return CoilFeatureInput()
    def setToRevolutionAndHeight(self, revolutions: core.ValueInput, height: core.ValueInput, angle: core.ValueInput) -> bool:
        """
        Sets the coil type to RevolutionsAndHeightCoilType.
        revolutions : A ValueInput object that defines the number of revolutions.
        height : A ValueInput object that defines the height.
        angle : A ValueInput object that defines angle.
        Returns true if successful.
        """
        return bool()
    def setToRevolutionsAndPitch(self, revolutions: core.ValueInput, pitch: core.ValueInput, angle: core.ValueInput) -> bool:
        """
        Sets the coil type to RevolutionsAndPitchCoilType.
        revolutions : A ValueInput object that defines the number of revolutions.
        pitch : A ValueInput object that defines the pitch.
        angle : A ValueInput object that defines angle.
        Returns true if successful.
        """
        return bool()
    def setToHeightAndPitchCoil(self, height: core.ValueInput, pitch: core.ValueInput, angle: core.ValueInput) -> bool:
        """
        Sets the coil type to HeightAndPitchCoilType.
        height : A ValueInput object that defines the height.
        pitch : A ValueInput object that defines the pitch.
        angle : A ValueInput object that defines angle.
        Returns true if successful.
        """
        return bool()
    def setToSpiral(self, revolutions: core.ValueInput, pitch: core.ValueInput) -> bool:
        """
        Sets the coil type to SpiralCoilType.
        revolutions : A ValueInput object that defines the number of revolutions.
        pitch : A ValueInput object that defines the pitch.
        Returns true if successful.
        """
        return bool()
    @property
    def isSolid(self) -> bool:
        """
        Specifies if the coil should be created as a solid or surface. This is
        initialized to true so a solid will be created if it's not changed.
        It only can be set to false in non-parametric modeling.
        """
        return bool()
    @isSolid.setter
    def isSolid(self, value: bool):
        """
        Specifies if the coil should be created as a solid or surface. This is
        initialized to true so a solid will be created if it's not changed.
        It only can be set to false in non-parametric modeling.
        """
        pass
    @property
    def revolutions(self) -> core.ValueInput:
        """
        Gets the revolutions number. Returns null in the case where the coilType property returns HeightAndPitchCoilType.
        """
        return core.ValueInput()
    @property
    def height(self) -> core.ValueInput:
        """
        Gets the height. Returns null in the case where the coilType property returns RevolutionsAndPitchCoilType.
        """
        return core.ValueInput()
    @property
    def pitch(self) -> core.ValueInput:
        """
        Gets the pitch. Returns null in the case where the coilType property returns RevolutionsAndHeightCoilType or SpiralCoilType.
        """
        return core.ValueInput()
    @property
    def angle(self) -> core.ValueInput:
        """
        Gets the angle. Returns null in the case where the coilType property returns SpiralCoilType.
        """
        return core.ValueInput()
    @property
    def coilType(self) -> CoilFeatureTypes:
        """
        Gets the type of the coil.
        """
        return CoilFeatureTypes()
    @property
    def operation(self) -> FeatureOperations:
        """
        Gets and sets the type of operation performed by the coil.
        """
        return FeatureOperations()
    @operation.setter
    def operation(self, value: FeatureOperations):
        """
        Gets and sets the type of operation performed by the coil.
        """
        pass
    @property
    def basePlane(self) -> core.Base:
        """
        Gets and sets the base plane.
        """
        return core.Base()
    @basePlane.setter
    def basePlane(self, value: core.Base):
        """
        Gets and sets the base plane.
        """
        pass
    @property
    def isClockwiseRotation(self) -> bool:
        """
        Gets and sets whether the rotation is clockwise or counter-clockwise. A value of true indicates clockwise rotation.
        It defaults to true.
        """
        return bool()
    @isClockwiseRotation.setter
    def isClockwiseRotation(self, value: bool):
        """
        Gets and sets whether the rotation is clockwise or counter-clockwise. A value of true indicates clockwise rotation.
        It defaults to true.
        """
        pass
    @property
    def diameter(self) -> core.ValueInput:
        """
        Gets and sets the diameter.
        """
        return core.ValueInput()
    @diameter.setter
    def diameter(self, value: core.ValueInput):
        """
        Gets and sets the diameter.
        """
        pass
    @property
    def coilSectionType(self) -> CoilFeatureSectionTypes:
        """
        Gets the section type of the coil.
        It defaults to CircularCoilSectionType.
        """
        return CoilFeatureSectionTypes()
    @coilSectionType.setter
    def coilSectionType(self, value: CoilFeatureSectionTypes):
        """
        Gets the section type of the coil.
        It defaults to CircularCoilSectionType.
        """
        pass
    @property
    def coilSectionPosition(self) -> CoilFeatureSectionPositions:
        """
        Gets the section position of the coil.
        It defaults to InsideCoilSectionPosition.
        """
        return CoilFeatureSectionPositions()
    @coilSectionPosition.setter
    def coilSectionPosition(self, value: CoilFeatureSectionPositions):
        """
        Gets the section position of the coil.
        It defaults to InsideCoilSectionPosition.
        """
        pass
    @property
    def sectionSize(self) -> core.ValueInput:
        """
        Gets and sets the section size.
        """
        return core.ValueInput()
    @sectionSize.setter
    def sectionSize(self, value: core.ValueInput):
        """
        Gets and sets the section size.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class CoilFeatures(core.Base):
    """
    Collection that provides access to all of the existing coil features in a design
    and supports the ability to create new coil features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CoilFeatures:
        return CoilFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> CoilFeature:
        return None
    def __iter__(self) -> Iterator[CoilFeature]:
        return None
    def item(self, index: int) -> CoilFeature:
        """
        Function that returns the specified coil feature 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 CoilFeature()
    def itemByName(self, name: str) -> CoilFeature:
        """
        Function that returns the specified coil feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return CoilFeature()
    @property
    def count(self) -> int:
        """
        The number of coil features in the collection.
        """
        return int()

class CombineFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a combine
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CombineFeatureInput:
        return CombineFeatureInput()
    @property
    def targetBody(self) -> BRepBody:
        """
        Gets and sets the BRep Body object that represents the blank body.
        """
        return BRepBody()
    @targetBody.setter
    def targetBody(self, value: BRepBody):
        """
        Gets and sets the BRep Body object that represents the blank body.
        """
        pass
    @property
    def toolBodies(self) -> core.ObjectCollection:
        """
        Gets and sets the BRep Body objects that represent the tool bodies.
        """
        return core.ObjectCollection()
    @toolBodies.setter
    def toolBodies(self, value: core.ObjectCollection):
        """
        Gets and sets the BRep Body objects that represent the tool bodies.
        """
        pass
    @property
    def operation(self) -> FeatureOperations:
        """
        Gets and sets the type of operation performed by the combine.
        The valid values are JoinFeatureOperation, CutFeatureOperation and IntersectFeatureOperation.
        The default value is JoinFeatureOperation.
        """
        return FeatureOperations()
    @operation.setter
    def operation(self, value: FeatureOperations):
        """
        Gets and sets the type of operation performed by the combine.
        The valid values are JoinFeatureOperation, CutFeatureOperation and IntersectFeatureOperation.
        The default value is JoinFeatureOperation.
        """
        pass
    @property
    def isNewComponent(self) -> bool:
        """
        Gets and sets a boolean value for whether or not a new component will be created with the results. The default value is false.
        In Base feature environment NewComponent does not work.
        """
        return bool()
    @isNewComponent.setter
    def isNewComponent(self, value: bool):
        """
        Gets and sets a boolean value for whether or not a new component will be created with the results. The default value is false.
        In Base feature environment NewComponent does not work.
        """
        pass
    @property
    def isKeepToolBodies(self) -> bool:
        """
        Gets and sets a boolean value for whether or not the tool bodies are retrained after the combine results. The default value is false.
        """
        return bool()
    @isKeepToolBodies.setter
    def isKeepToolBodies(self, value: bool):
        """
        Gets and sets a boolean value for whether or not the tool bodies are retrained after the combine results. The default value is false.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class CombineFeatures(core.Base):
    """
    Collection that provides access to all of the existing Combine features in a component
    and supports the ability to create new Combine features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CombineFeatures:
        return CombineFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> CombineFeature:
        return None
    def __iter__(self) -> Iterator[CombineFeature]:
        return None
    def item(self, index: int) -> CombineFeature:
        """
        Function that returns the specified combine feature 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.
        This property returns nothing in the case where the feature is non-parametric.
        """
        return CombineFeature()
    def createInput(self, targetBody: BRepBody, toolBodies: core.ObjectCollection) -> CombineFeatureInput:
        """
        Creates a CombineFeatureInput object. Use properties and methods on this object
        to define the combine you want to create and then use the Add method, passing in
        the CombineFeatureInput object.
        targetBody : A BRep body that represents the blank body.
        toolBodies : An ObjectCollection containing one or more BRep bodies that represent tool bodies.
        Returns the newly created CombineFeatureInput object or null if the creation failed.
        """
        return CombineFeatureInput()
    def add(self, input: CombineFeatureInput) -> CombineFeature:
        """
        Creates a new combine feature.
        input : A CombineFeatureInput object that defines the desired combine. Use the createInput
        method to create a new CombineFeatureInput object and then use methods on it
        (the CombineFeatureInput object) to define the combine.
        Returns the newly created CombineFeature object or null if the creation failed.
        This function returns nothing in the case where the feature is non-parametric.
        """
        return CombineFeature()
    def itemByName(self, name: str) -> CombineFeature:
        """
        Function that returns the specified combine feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return CombineFeature()
    @property
    def count(self) -> int:
        """
        The number of combine features in the collection.
        This property returns nothing in the case where the feature is non-parametric.
        """
        return int()

class ComponentList(core.Base):
    """
    Provides a list of components.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ComponentList:
        return ComponentList()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> Component:
        return None
    def __iter__(self) -> Iterator[Component]:
        return None
    def item(self, index: int) -> Component:
        """
        Function that returns the specified component 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 Component()
    @property
    def count(self) -> int:
        """
        Returns the number of components in the collection.
        """
        return int()

class Components(core.Base):
    """
    The Components collection object provides access to existing components in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Components:
        return Components()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> Component:
        return None
    def __iter__(self) -> Iterator[Component]:
        return None
    def item(self, index: int) -> Component:
        """
        Function that returns the specified component 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 Component()
    def itemByName(self, name: str) -> Component:
        """
        Function that returns the specified component by name.
        name : The name of the component within the collection to return.
        Returns the specified component or null if the name is not found.
        """
        return Component()
    def itemById(self, id: str) -> Component:
        """
        Returns the Component that has the specified ID.
        id : The ID of the Component to get. This is the same id used by PIM (Product Information Model).
        Returns the specified Component or null in the case where there isn't a Component with the specified ID in this Design.
        """
        return Component()
    @property
    def count(self) -> int:
        """
        The number of components in the collection.
        """
        return int()

class ConfigurationAppearanceColumns(core.Base):
    """
    Provides access to the columns in an appearance table. This collection can be empty when no
    columns have been created. When the table is empty, it is not displayed in the user interface,
    and adding a column causes the table to be displayed.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationAppearanceColumns:
        return ConfigurationAppearanceColumns()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ConfigurationAppearanceColumn:
        return None
    def __iter__(self) -> Iterator[ConfigurationAppearanceColumn]:
        return None
    def item(self, index: int) -> ConfigurationAppearanceColumn:
        """
        A method that returns the specified column using an index into the collection.
        These are returned in the same order as they appear in the table.
        index : The index of the column to return, where the first column is index 0. The name column is not included.
        Returns the specified column or null if an invalid index was specified.
        """
        return ConfigurationAppearanceColumn()
    def itemById(self, id: str) -> ConfigurationAppearanceColumn:
        """
        A method that returns the column with the specified ID.
        id : The id of the column to return.
        Returns the specified column or null if a column with the specified ID does not exist.
        """
        return ConfigurationAppearanceColumn()
    def add(self, entity: core.Base) -> ConfigurationAppearanceColumn:
        """
        Adds a new column to the appearance table. If you are adding the first column to the table and
        it is anything other than the root component, an additional column for the root component will
        automatically be created as the first column.
        entity : The root component, occurrence, or body whose appearance will be controlled by this column.
        Returns the newly created ConfigurationAppearanceColumn object or null if it fails.
        """
        return ConfigurationAppearanceColumn()
    @property
    def count(self) -> int:
        """
        Returns the number of columns in the table where the name column is not included.
        """
        return int()

class ConfigurationCell(core.Base):
    """
    Represents a single cell within a configuration table. This is the base class for the type-specific cell objects.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationCell:
        return ConfigurationCell()
    @property
    def parentRow(self) -> ConfigurationRow:
        """
        Returns the row this cell is in.
        """
        return ConfigurationRow()

class ConfigurationColumn(core.Base):
    """
    Represents a column in a configuration table. This is the base class for the more specific
    column types. The "Name" column is not considered a standard column but is a value associated
    with each table row.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationColumn:
        return ConfigurationColumn()
    def deleteMe(self) -> bool:
        """
        Deletes this column from the table. Property columns cannot be deleted. If the table was
        obtained from a DataFile, this method will fail.
        Returns true if the deletion was successful.
        """
        return bool()
    @property
    def title(self) -> str:
        """
        The title of this column. In a top table, this can only be edited for suppression,
        visibility, parameter, and theme table columns. It behaves as read-only for all other types.
        In a theme table, the title of all the columns can be modified except for the column that
        represents the root component for materials and appearances.
        
        If the table was obtained from a DataFile, this property behaves as read-only for all the columns.
        """
        return str()
    @title.setter
    def title(self, value: str):
        """
        The title of this column. In a top table, this can only be edited for suppression,
        visibility, parameter, and theme table columns. It behaves as read-only for all other types.
        In a theme table, the title of all the columns can be modified except for the column that
        represents the root component for materials and appearances.
        
        If the table was obtained from a DataFile, this property behaves as read-only for all the columns.
        """
        pass
    @property
    def index(self) -> int:
        """
        The index position of this column within the table. The first column is at index 0 and
        does not include the "Name" column.
        """
        return int()
    @property
    def id(self) -> str:
        """
        The id of the column. This is constant and cannot be changed by the user.
        """
        return str()
    @property
    def rowCount(self) -> int:
        """
        Returns the number of rows in this column.
        """
        return int()

class ConfigurationColumns(core.Base):
    """
    Returns a collection of the columns in the table. The Name column is not included in this list.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationColumns:
        return ConfigurationColumns()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ConfigurationColumn:
        return None
    def __iter__(self) -> Iterator[ConfigurationColumn]:
        return None
    def item(self, index: int) -> ConfigurationColumn:
        """
        A method that returns the specified column 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 ConfigurationColumn()
    def itemById(self, id: str) -> ConfigurationColumn:
        """
        A method that returns the specified column object using the ID of the column.
        id : The ID of the column within the collection to return.
        Returns the specified item or null if no column matches the provided ID.
        """
        return ConfigurationColumn()
    def addParameterColumn(self, parameter: Parameter) -> ConfigurationParameterColumn:
        """
        Adds a new parameter column to the configuration table. If a parameter column already
        exists for the parameter, the existing column is returned.
        
        This is only valid for TopConfigurationTable and ThemeConfigurationTable objects.
        It will fail for all other table types.
        parameter : The parameter to add to the table.
        Returns the new column or null in the case of failure.
        """
        return ConfigurationParameterColumn()
    def addSuppressColumn(self, feature: core.Base) -> ConfigurationSuppressColumn:
        """
        Adds a new column to control the suppression of a feature. The term "feature" is
        used broadly and includes anything displayed in the timeline. If a suppression column already
        exists for the feature, the existing column is returned.
        
        This is only valid for TopConfigurationTable and ThemeConfigurationTable objects.
        It will fail for all other table types.
        feature : The feature to add to the table. Any object that is displayed in the timeline can be
        used as input. For example, some valid objects are any modeling features, sketches,
        construction geometry, and joints.
        Returns the new column or null in the case of failure.
        """
        return ConfigurationSuppressColumn()
    def addVisibilityColumn(self, entity: core.Base) -> ConfigurationVisibilityColumn:
        """
        Adds a new column to control the visibility of an entity. If a visibility column already
        exists for the entity, the existing column is returned.
        
        This is only valid for ConfigurationTopTable and ConfigurationCustomThemeTable objects
        and will fail for all other table types.
        entity : Returns the entity whose visibility will be controlled by this column.
        Returns the new column or null in the case of failure.
        """
        return ConfigurationVisibilityColumn()
    def addInsertColumn(self, occurrence: Occurrence) -> ConfigurationInsertColumn:
        """
        Add a new column to control which configuration is used for an inserted configuration.
        If an insert column already exists for the occurrence, the existing column is returned.
        
        This is only valid for ConfigurationTopTable and ConfigurationCustomThemeTable objects
        and will fail for all other table types.
        occurrence : The occurrence that references a configuration.
        Returns the new column or null in the case of failure.
        """
        return ConfigurationInsertColumn()
    def addPropertyColumn(self, property: core.Property) -> ConfigurationPropertyColumn:
        """
        Add a new column to control the property inside the component.
        The component is the owner of the property.
        This is only valid for TopConfigurationTable.
        It will fail for all other table types.
        property : The property to add to the table.
        Returns the new column or null in the case of failure.
        """
        return ConfigurationPropertyColumn()
    def addThreadTypeColumns(self, threadFeature: Feature, threadColumns: ConfigurationThreadColumns) -> list[ConfigurationFeatureAspectColumn]:
        """
        Creates the columns in the configuration table to control the type of thread associated with a
        thread feature or a tapped hole. Because configuring a thread requires several pieces of information,
        this method collects it all at once and creates all the corresponding feature aspect columns.
        threadFeature : The thread or tapped hole feature whose thread will be controlled by the configuration table.
        threadColumns : Enum value that indicates which columns should be created to control the thread type. You can fully
        define the thread type by specifying the type, size, designation, and class. Or you can leave the
        thread type controlled by the feature and only configure the size, designation, and class. Or you
        can leave the thread type and size controlled by the feature and only configure the designation and
        class. Or you can leave the thread type, size, and designation controlled by the feature and only
        configure the class. As a result, this can create and return 4, 3, 2, or 1 columns.
        Returns an array of the columns created. They are in order of type, size, designation, and class.
        """
        return [ConfigurationFeatureAspectColumn()]
    def addFeatureAspectColumn(self, feature: core.Base, aspectType: ConfigurationFeatureAspectTypes) -> ConfigurationFeatureAspectColumn:
        """
        Creates a new column to control an aspect of a feature that supports being configured.
        feature : The feature to be configured. The term "feature" is used broadly and includes ThreadFeature, HoleFeature that is tapped, Joint,
        and AsBuiltJoint objects. The existing column is returned if a feature aspect column already exists for the feature and aspect type.
        aspectType : The aspect type to create a column for. The type specified must be a valid type for the specified feature; otherwise, this will fail with an error.
        Returns the created ConfigurationFeatureAspectColumn or null in the case of failure.
        """
        return ConfigurationFeatureAspectColumn()
    def addClearanceTypeColumns(self, holeFeature: HoleFeature, holeClearanceColumns: ConfigurationClearanceHoleColumns) -> list[ConfigurationFeatureAspectColumn]:
        """
        Creates the columns in the configuration table to control the clearance information associated with a
        clearance hole. Because configuring a clearance hole requires several pieces of related information,
        this method collects it all at once and creates all the corresponding feature aspect columns.
        
        The fit is also a setting that controls the hole clearance, but it's independent of the other settings and can be
        created independently using the addFeatureAspectColumn method.
        holeFeature : The hole feature that defines a clearance hole whose clearance will be controlled by the configuration table.
        holeClearanceColumns : Enum value that indicates which columns should be created to control the clearance hole definition. You can fully
        define the clearance hole by specifying the standard, fastener type, and size. Or you can leave the
        standard controlled by the hole and only configure the fastener type, and size. Or you
        can leave the standard and fastener type controlled by the hole and only configure the size.
        As a result, this can create and return 3, 2, or 1 columns.
        
        The fit is also a setting that controls the hole clearance, but it's independent of the other settings and can be
        created independently using the addFeatureAspectColumn method.
        Returns an array of the columns created. They are in order of standard, fastener type, and size.
        """
        return [ConfigurationFeatureAspectColumn()]
    def addInsertStandardDesignColumn(self, occurrence: Occurrence) -> ConfigurationInsertStandardDesignColumn:
        """
        Add a new column to control which standard design is used for an inserted design.
        If an insert column already exists for the occurrence, the existing column is returned.
        
        This is only valid for ConfigurationTopTable and ConfigurationCustomThemeTable objects
        and will fail for all other table types.
        occurrence : The occurrence that references a standard design.
        Returns the new column or null in the case of failure.
        """
        return ConfigurationInsertStandardDesignColumn()
    @property
    def count(self) -> int:
        """
        Returns the number of columns in the table. The name column is not included.
        """
        return int()

class ConfigurationCustomThemeTables(core.Base):
    """
    Provides access to the custom theme tables associated with a configuration table and provides the
    functionality to create new custom theme tables.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationCustomThemeTables:
        return ConfigurationCustomThemeTables()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ConfigurationCustomThemeTable:
        return None
    def __iter__(self) -> Iterator[ConfigurationCustomThemeTable]:
        return None
    def add(self, columns: list[ConfigurationColumn]) -> ConfigurationCustomThemeTable:
        """
        Creates a new custom theme table using the specified columns.
        columns : An array of ConfigurationColumn objects used to create a new custom theme table. The columns
        must exist within the top configuration table, and they cannot include any ConfigurationThemeColumn,
        ConfigurationPropertyColumn, ConfigurationAppearanceColumn, ConfigurationMaterialColumn, ConfigurationPlasticRuleColumn,
        or ConfigurationSheetMetalRuleColumn objects. The specified columns will be removed from the main table,
        and a new ConfigurationThemeColumn will be created in the top table to reference the newly created custom theme table.
        Returns the newly created ConfigurationCustomThemeTable or null if the creation fails.
        """
        return ConfigurationCustomThemeTable()
    def item(self, index: int) -> ConfigurationCustomThemeTable:
        """
        A method that returns the specified custom theme table 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 ConfigurationCustomThemeTable()
    @property
    def count(self) -> int:
        """
        Returns the number of custom theme tables associated with the top table.
        """
        return int()

class ConfigurationJointSnap(core.Base):
    """
    This object represents an individual joint snap that has been defined for a
    ConfigurationJointSnapColumn. Multiple joint snaps can be defined for a column
    and then one of those joint snaps is specified in each cell of the column.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationJointSnap:
        return ConfigurationJointSnap()
    def deleteMe(self) -> bool:
        """
        Deletes this joint snap.
        Returns true if the deletion was successful.
        """
        return bool()
    @property
    def name(self) -> str:
        """
        Gets and sets the name of the snap.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name of the snap.
        """
        pass
    @property
    def jointGeometry(self) -> core.Base:
        """
        Gets and sets the JointGeometry object for this snap.
        """
        return core.Base()
    @jointGeometry.setter
    def jointGeometry(self, value: core.Base):
        """
        Gets and sets the JointGeometry object for this snap.
        """
        pass

class ConfigurationJointSnaps(core.Base):
    """
    Collection object that provides access to all the joint snaps that have been
    defined for a ConfigurationJointSnapColumn. You can also use this collection
    to define new joint snaps that will then be available when specifying which
    snap to use in a cell.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationJointSnaps:
        return ConfigurationJointSnaps()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ConfigurationJointSnap:
        return None
    def __iter__(self) -> Iterator[ConfigurationJointSnap]:
        return None
    def item(self, index: int) -> ConfigurationJointSnap:
        """
        A method that returns the specified snap using an index into the collection.
        index : The index of the snap to return, where the first row is index 0.
        Returns the specified snap or null if an invalid index was specified.
        """
        return ConfigurationJointSnap()
    def itemByName(self, name: str) -> ConfigurationJointSnap:
        """
        A method that returns the snap with the specified name.
        name : The name of the snap to return.
        Returns the specified snap or null if a snap with the specified name does not exist.
        """
        return ConfigurationJointSnap()
    def add(self, name: str, jointGeometry: core.Base) -> ConfigurationJointSnap:
        """
        Adds a new snap to the column. The snaps associated with the column can be used
        in the cells in the column.
        name : The name of the new snap. The name must be unique with respect to the other snaps
        defined for this column. An empty string can be provided, which will cause Fusion
        to use a default naming scheme to create a name.
        jointGeometry : A JointGeometry object that defines how the snap is defined. When creating the JointGeometry
        object, it must be limited to geometry in the occurrence associated with the column.
        Returns the newly created ConfigurationJointSnap.
        """
        return ConfigurationJointSnap()
    @property
    def count(self) -> int:
        """
        Returns the number of snaps for the column.
        """
        return int()

class ConfigurationMaterialColumns(core.Base):
    """
    Provides access to the columns in a material table. This collection can be empty when
    no columns have been created. When the table is empty, it is not displayed in the
    user interface, and adding a column causes the table to be displayed.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationMaterialColumns:
        return ConfigurationMaterialColumns()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ConfigurationMaterialColumn:
        return None
    def __iter__(self) -> Iterator[ConfigurationMaterialColumn]:
        return None
    def item(self, index: int) -> ConfigurationMaterialColumn:
        """
        A method that returns the specified column using an index into the collection.
        These are returned in the same order as they appear in the table.
        index : The index of the column to return, where the first column is index 0.
        The name column is not included.
        Returns the specified column or null if an invalid index was specified.
        """
        return ConfigurationMaterialColumn()
    def itemById(self, id: str) -> ConfigurationMaterialColumn:
        """
        A method that returns the column with the specified ID.
        id : The id of the column to return.
        Returns the specified column or null if a column with the specified ID does not exist.
        """
        return ConfigurationMaterialColumn()
    def add(self, entity: core.Base) -> ConfigurationMaterialColumn:
        """
        Adds a new column to the material table. If you are adding the first column to the table
        and it is anything other than the root component, an additional column for the root
        component will automatically be created as the first column.
        entity : The component or body whose material will be controlled by this column.
        Returns the newly created ConfigurationMaterialColumn object or null if it fails.
        """
        return ConfigurationMaterialColumn()
    @property
    def count(self) -> int:
        """
        Returns the number of columns in the table where the name column is not included.
        """
        return int()

class ConfigurationPlasticRuleColumns(core.Base):
    """
    Provides access to the columns in a plastic rule table. This collection can be empty
    when no columns have been created. When the table is empty, it is not displayed in the
    user interface, and adding a column causes the table to be displayed.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationPlasticRuleColumns:
        return ConfigurationPlasticRuleColumns()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ConfigurationPlasticRuleColumn:
        return None
    def __iter__(self) -> Iterator[ConfigurationPlasticRuleColumn]:
        return None
    def item(self, index: int) -> ConfigurationPlasticRuleColumn:
        """
        A method that returns the specified column using an index into the collection.
        These are returned in the same order as they appear in the table.
        index : The index of the column to return, where the first column is index 0.
        The name column is not included.
        Returns the specified column or null if an invalid index was specified.
        """
        return ConfigurationPlasticRuleColumn()
    def itemById(self, id: str) -> ConfigurationPlasticRuleColumn:
        """
        A method that returns the column with the specified ID.
        id : The id of the column to return.
        Returns the specified column or null if a column with the specified ID does not exist.
        """
        return ConfigurationPlasticRuleColumn()
    def add(self, component: Component) -> ConfigurationPlasticRuleColumn:
        """
        Adds a new column to the plastic rule table.
        component : The component whose active plastic rule will be controlled by this column.
        Returns the newly created ConfigurationPlasticRuleColumn object or null if it fails.
        """
        return ConfigurationPlasticRuleColumn()
    @property
    def count(self) -> int:
        """
        Returns the number of columns in the table where the name column is not included.
        """
        return int()

class ConfigurationReplaceDesign(core.Base):
    """
    This object represents an individual ConfigurationReplaceDesign object that has been defined for a
    ConfigurationReplaceDesignColumn. Multiple ConfigurationReplaceDesign objects can be defined for a
    column and then one of those ConfigurationReplaceDesign objects is specified in each cell of the column.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationReplaceDesign:
        return ConfigurationReplaceDesign()
    def deleteMe(self) -> bool:
        """
        Deletes this ConfigurationReplaceDesign.
        Returns true if the deletion was successful.
        """
        return bool()
    @property
    def name(self) -> str:
        """
        Gets the name of the ConfigurationReplaceDesign object.
        """
        return str()
    @property
    def dataFile(self) -> core.DataFile:
        """
        Gets the Design object associated with this ConfigurationReplaceDesign object.
        This must be a DataFile object that represents a standard design, not a configured design.
        """
        return core.DataFile()

class ConfigurationReplaceDesigns(core.Base):
    """
    Collection object that provides access to all the ConfigurationReplaceDesign objects
    that have been defined for a ConfigurationReplaceDesignColumn. You can also use this
    collection to define new replace designs that will then be available when specifying which
    design to use in a cell.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationReplaceDesigns:
        return ConfigurationReplaceDesigns()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ConfigurationReplaceDesign:
        return None
    def __iter__(self) -> Iterator[ConfigurationReplaceDesign]:
        return None
    def item(self, index: int) -> ConfigurationReplaceDesign:
        """
        A method that returns the specified ConfigurationReplaceDesign object using an index into the collection.
        index : The index of the ConfigurationReplaceDesign object to return, where the first row is index 0.
        Returns the specified ConfigurationReplaceDesign object or null if an invalid index was specified.
        """
        return ConfigurationReplaceDesign()
    def itemByName(self, name: str) -> ConfigurationReplaceDesign:
        """
        A method that returns the ConfigurationReplaceDesign object with the specified name.
        name : The name of the ConfigurationReplaceDesign object to return.
        Returns the specified ConfigurationReplaceDesign object or null if a ConfigurationReplaceDesign
        object with the specified name does not exist.
        """
        return ConfigurationReplaceDesign()
    def add(self, name: str, dataFile: core.DataFile) -> ConfigurationReplaceDesign:
        """
        Adds a new ConfigurationReplaceDesign object to the column. The ConfigurationReplaceDesign objects
        associated with the column can be used in the cells in the column.
        name : The name of the new ConfigurationReplaceDesign object. The name must be unique with respect to the
        other ConfigurationReplaceDesign objects defined for this column. An empty string can be provided,
        which will cause Fusion to use a default naming scheme to create a name.
        dataFile : A DataFile object that defines which Design to use. This must be a DataFile object that represents
        a standard design, not a configured design.
        Returns the newly created ConfigurationReplaceDesign.
        """
        return ConfigurationReplaceDesign()
    @property
    def count(self) -> int:
        """
        Returns the number of ConfigurationReplaceDesign objects defined for the column.
        """
        return int()

class ConfigurationRow(core.Base):
    """
    Represents a row in a configuration table. The header row is not considered a standard row but
    is information associated with each column.
    
    For a top table, each row represents a configuration, and for a theme table, each row represents a theme.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationRow:
        return ConfigurationRow()
    def deleteMe(self) -> bool:
        """
        Deletes this row from the table. The first row of the top table cannot be deleted, and this method will fail.
        Returns true if the deletion was successful.
        """
        return bool()
    def activate(self) -> bool:
        """
        Causes this row to become the active row in the table.
        Returns true if the activation was successful.
        """
        return bool()
    def getCellByColumnIndex(self, columnIndex: int) -> ConfigurationCell:
        """
        Gets the cell in this row at the specified column index. The first column has an index of 0 and does not include the name column.
        columnIndex : The index of the column to return the cell for. The first column has an index 0.
        Returns the specified cell if successful and null if an invalid index was specified.
        """
        return ConfigurationCell()
    def getCellByColumnId(self, columnId: str) -> ConfigurationCell:
        """
        Gets the cell in this row at the column with the specified ID.
        columnId : The ID of the column the cell is in.
        Returns the specified cell if successful or null if a column with the specified ID does not exist.
        """
        return ConfigurationCell()
    def copy(self, name: str) -> ConfigurationRow:
        """
        Creates a new row by copying this row.
        name : The name to use for the new row. An empty string indicates that Fusion should use the default naming scheme.
        
        Names must be unique with respect to other rows in this table. If you specify a name that exists,
        Fusion will append a counter to ensure uniqueness. For example, if "Small" is already used and you name
        another row "Small", you will end up with "Small (1)".
        Returns the newly created row or null in the case of failure.
        """
        return ConfigurationRow()
    def generate(self) -> ConfigurationFuture:
        """
        Causes this row to be generated.
        Returns a future that can be used to determine when the generation is complete.
        Null is returned in the case where starting the generation fails.
        """
        return ConfigurationFuture()
    @property
    def id(self) -> str:
        """
        Gets the unique ID that identifies this row. The ID remains constant for this row as
        long as the row exists. This is different than the name, which the user can change.
        """
        return str()
    @property
    def name(self) -> str:
        """
        Gets and sets the name of this row. Names must be unique with respect to other rows in this
        table. If you specify a name that exists, Fusion will append a counter to ensure uniqueness.
        For example, if "Small" is already used and you name another row "Small", you will end up with "Small (1)".
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name of this row. Names must be unique with respect to other rows in this
        table. If you specify a name that exists, Fusion will append a counter to ensure uniqueness.
        For example, if "Small" is already used and you name another row "Small", you will end up with "Small (1)".
        """
        pass
    @property
    def index(self) -> int:
        """
        The index position of this row within the table. The first row is at index 0 and does not include the header row.
        """
        return int()
    @property
    def parentTable(self) -> ConfigurationTable:
        """
        Returns the configuration table this row is a member of.
        """
        return ConfigurationTable()

class ConfigurationRows(core.Base):
    """
    Returns a collection of the rows in the table. The header row is not included in this list.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationRows:
        return ConfigurationRows()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ConfigurationRow:
        return None
    def __iter__(self) -> Iterator[ConfigurationRow]:
        return None
    def item(self, index: int) -> ConfigurationRow:
        """
        A method that returns the specified row using an index into the collection. These are returned
        in the same order as in the table; the first row is the default row.
        index : The index of the row to return, where the first row is index 0. The headers do not count as a row.
        Returns the specified row or null if an invalid index was specified.
        """
        return ConfigurationRow()
    def itemById(self, id: str) -> ConfigurationRow:
        """
        A method that returns the row with the specified ID.
        id : The id of the row to return.
        Returns the specified row or null if a row with the specified ID does not exist.
        """
        return ConfigurationRow()
    def itemByName(self, name: str) -> ConfigurationRow:
        """
        A method that returns the row with the specified name.
        name : The name of the row to return.
        Returns the specified row or null if the named row does not exist.
        """
        return ConfigurationRow()
    def add(self, name: str) -> ConfigurationRow:
        """
        Adds a new row to the table.  For the top table, this creates a new configuration.
        For theme tables, this creates a new theme. The new row is added to the bottom of the table,
        and the cell values are copied from the row above it. You can also use the ConfigurationRow.copy
        method to create a new row by copying any existing row.
        name : The name of the new row. An empty string can be provided, which will cause Fusion to use a
        default naming scheme to create a name.
        Returns the newly created row.
        """
        return ConfigurationRow()
    @property
    def count(self) -> int:
        """
        Returns the number of rows in the table where the header row is not included.
        """
        return int()

class ConfigurationSheetMetalRuleColumns(core.Base):
    """
    Provides access to the columns in a sheet metal rule table. This collection can be empty when
    no columns have been created. When the table is empty, it is not displayed in the user interface,
    and adding a column causes the table to be displayed.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationSheetMetalRuleColumns:
        return ConfigurationSheetMetalRuleColumns()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ConfigurationSheetMetalRuleColumn:
        return None
    def __iter__(self) -> Iterator[ConfigurationSheetMetalRuleColumn]:
        return None
    def item(self, index: int) -> ConfigurationSheetMetalRuleColumn:
        """
        A method that returns the specified column using an index into the collection.
        These are returned in the same order as they appear in the table.
        index : The index of the column to return, where the first column is index 0. The name column is not included.
        Returns the specified column or null if an invalid index was specified.
        """
        return ConfigurationSheetMetalRuleColumn()
    def itemById(self, id: str) -> ConfigurationSheetMetalRuleColumn:
        """
        A method that returns the column with the specified ID.
        id : The id of the column to return.
        Returns the specified column or null if a column with the specified ID does not exist.
        """
        return ConfigurationSheetMetalRuleColumn()
    def add(self, component: Component) -> ConfigurationSheetMetalRuleColumn:
        """
        Adds a new column to the sheet metal rule table.
        component : The component whose active sheet metal rule will be controlled by this column.
        Returns the newly created ConfigurationPlasticRuleColumn object or null if it fails.
        """
        return ConfigurationSheetMetalRuleColumn()
    @property
    def count(self) -> int:
        """
        Returns the number of columns in the table where the name column is not included.
        """
        return int()

class ConfigurationTable(core.Base):
    """
    The base class of all configuration tables.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationTable:
        return ConfigurationTable()
    def getCell(self, column: int, row: int) -> ConfigurationCell:
        """
        Returns the cell at the specified row and column.
        column : The index of the column the cell is in. An index of 0 is the first column and does not include the name column.
        row : The index of the row the cell is in. An index of 0 is the first row and does not include the header row.
        """
        return ConfigurationCell()
    @property
    def id(self) -> str:
        """
        Returns the unique ID of this table.
        """
        return str()
    @property
    def rows(self) -> ConfigurationRows:
        """
        Returns the rows (configurations) defined for this table and provides the functionality to create new rows.
        """
        return ConfigurationRows()

class ConstructionAxes(core.Base):
    """
    Provides access to the construction axes within a component and provides
    methods to create new construction axes.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionAxes:
        return ConstructionAxes()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ConstructionAxis:
        return None
    def __iter__(self) -> Iterator[ConstructionAxis]:
        return None
    def item(self, index: int) -> ConstructionAxis:
        """
        Function that returns the specified construction axis 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 ConstructionAxis()
    def itemByName(self, name: str) -> ConstructionAxis:
        """
        Returns the specified construction axis using the name of the construction
        axis as it is displayed in the browser.
        name : The name of the axis as it is displayed in the browser
        Returns the specified item or null if an invalid name was specified.
        """
        return ConstructionAxis()
    def createInput(self, occurrenceForCreation: Occurrence = None) -> ConstructionAxisInput:
        """
        Create a ConstructionAxisInput object that is in turn used to create a ConstructionAxis.
        occurrenceForCreation : A creation occurrence is needed if the input is in another component AND the
        construction axis is not in the root component. The occurrenceForCreation is analogous
        to the active occurrence in the UI.
        Returns a ConstructionAxisInput object
        """
        return ConstructionAxisInput()
    def add(self, input: ConstructionAxisInput) -> ConstructionAxis:
        """
        Creates and adds a new ConstructionAxis using the creation parameters in the ConstructionAxisInput.
        
        If the ConstructionAxisInput was defined using the setByLine method then
        the add will only work in the direct modeling mode and will fail in the parametric modeling mode.
        input : A ConstructionAxisInput object
        Returns the newly created construction axis or null if the creation failed.
        """
        return ConstructionAxis()
    @property
    def count(self) -> int:
        """
        The number of construction axes in the collection.
        """
        return int()
    @property
    def component(self) -> Component:
        """
        The component that owns this collection.
        """
        return Component()

class ConstructionAxis(core.Base):
    """
    ConstructionAxis Object
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionAxis:
        return ConstructionAxis()
    def deleteMe(self) -> bool:
        """
        Deletes the construction axis.
        Returns a bool indicating if the delete was successful or not.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> ConstructionAxis:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return ConstructionAxis()
    @property
    def geometry(self) -> core.InfiniteLine3D:
        """
        Returns an infinite line that represents the position and orientation of the
        construction axis. This geometry is defined in the AssemblyContext of this
        ConstructionAxis.
        """
        return core.InfiniteLine3D()
    @property
    def name(self) -> str:
        """
        The name of the construction axis as it is shown in the browser.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        The name of the construction axis as it is shown in the browser.
        """
        pass
    @property
    def definition(self) -> ConstructionAxisDefinition:
        """
        Returns the construction axis definition object which provides access to the information
        defining the construction axis.
        """
        return ConstructionAxisDefinition()
    @property
    def isParametric(self) -> bool:
        """
        Indicates if this construction axis is parametric or not.
        """
        return bool()
    @property
    def isDeletable(self) -> bool:
        """
        Indicates if this construction axis can be deleted. Base
        construction axes can not be deleted.
        """
        return bool()
    @property
    def isLightBulbOn(self) -> bool:
        """
        Indicates if the light bulb (as displayed in the browser) is on.
        A construction axis will only be visible if its light bulb, and that of its
        containing folder and parent component/s are also on.
        """
        return bool()
    @isLightBulbOn.setter
    def isLightBulbOn(self, value: bool):
        """
        Indicates if the light bulb (as displayed in the browser) is on.
        A construction axis will only be visible if its light bulb, and that of its
        containing folder and parent component/s are also on.
        """
        pass
    @property
    def isVisible(self) -> bool:
        """
        Gets if the construction plane is visible.
        This property is affected by the AssemblyContext of the construction axis.
        """
        return bool()
    @property
    def parent(self) -> core.Base:
        """
        Returns the parent component or base feature. If both the design and the construction
        axis are parametric, the parent will be a component. If the design is parametric and
        the construction axis is not, the parent will be a base feature. If
        the design is not parametric the parent will be a component.
        """
        return core.Base()
    @property
    def component(self) -> Component:
        """
        Returns the component this construction plane belongs to.
        """
        return Component()
    @property
    def timelineObject(self) -> TimelineObject:
        """
        Returns the timeline object associated with this construction axis.
        """
        return TimelineObject()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this object
        in an assembly. This is only valid in the case where this is acting
        as a proxy in an assembly. Returns null in the case where the object
        is not in the context of an assembly but is already the native object.
        """
        return Occurrence()
    @property
    def nativeObject(self) -> ConstructionAxis:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return ConstructionAxis()
    @property
    def baseFeature(self) -> BaseFeature:
        """
        If this construction axis is associated with a base feature, this property will return that base feature.
        If it's not associated with a base feature, this property will return null.
        """
        return BaseFeature()
    @property
    def attributes(self) -> core.Attributes:
        """
        Returns the collection of attributes associated with this construction axis.
        """
        return core.Attributes()
    @property
    def healthState(self) -> FeatureHealthStates:
        """
        Returns the current health state of this construction axis.
        """
        return FeatureHealthStates()
    @property
    def errorOrWarningMessage(self) -> str:
        """
        Returns the error or warning message in the case where the healthState property returns either
        WarningFeatureHealthState or ErrorFeatureHealthState. Otherwise this property returns an empty string.
        """
        return str()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the ConstructionAxis object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same construction axis.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        """
        return str()
    @property
    def isDerived(self) -> bool:
        """
        Returns if this construction axis is derived from another design. If true, the construction axis cannot be deleted.
        You should not attempt to make any edits to the derived construction axis. Any edits made to this derived construction axis will be lost when the derive updates.
        """
        return bool()
    @property
    def deriveFeature(self) -> DeriveFeature:
        """
        Returns the DeriveFeature if this construction axis is derived from another design.
        This property returns null if the construction axis is not derived from another design (i.e. isDerived property returns false).
        """
        return DeriveFeature()

class ConstructionAxisDefinition(core.Base):
    """
    A Base class to return the information (possibly parametric) used to
    define a ConstructionAxis.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionAxisDefinition:
        return ConstructionAxisDefinition()
    @property
    def parentConstructionAxis(self) -> ConstructionAxis:
        """
        Returns the ConstructionAxis object
        """
        return ConstructionAxis()

class ConstructionAxisInput(core.Base):
    """
    A ConstructionAxisInput is a throwaway object used to create a ConstructionAxis
    The usage pattern is:
    a. create a ConstructionAxisInput (ConstructionAxes.CreateInput)
    b. call one of the member functions to specify how the ConstructionAxis is created
    c. create the ConstructionAxis (call ConstructionAxes.Add)
    d. stop referencing the ConstructionAxisInput (so it gets deleted).
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionAxisInput:
        return ConstructionAxisInput()
    def setByLine(self, line: core.InfiniteLine3D) -> bool:
        """
        This input method is for creating a non-parametric construction axis whose position
        in space is defined by an InfiniteLine3D object.
        
        This method of defining a construction axis is only valid when working in the direct modeling mode.
        This is not valid when working in the parametric modeling mode and will fail.
        line : An InFiniteLine3D object
        Returns true if the creation of the ConstructionAxisInput is successful.
        """
        return bool()
    def setByCircularFace(self, circularFace: BRepFace) -> bool:
        """
        This input method is for creating an axis coincident with the axis of a
        cylindrical, conical or torus face.
        
        This can result in a parametric or non-parametric construction axis depending
        on whether the parent component is parametric or is a direct edit component.
        circularFace : The face from a cylinder, cone, or torus.
        Returns true if the creation of the ConstructionAxisInput is successful.
        """
        return bool()
    def setByPerpendicularAtPoint(self, face: BRepFace, pointEntity: core.Base) -> bool:
        """
        This input method is for creating an axis that is normal to a face
        at a specified point.
        face : A face (BRepFace object) to create the axis normal to.
        pointEntity : A construction point, sketch point or vertex the axis is to pass through.
        Returns true if the creation of the ConstructionAxisInput is successful.
        """
        return bool()
    def setByTwoPlanes(self, planarEntityOne: core.Base, planarEntityTwo: core.Base) -> bool:
        """
        This input method is for creating a construction axis coincident with the
        intersection of two planes or planar faces.
        This will fail if the two planes are parallel.
        This can result in a parametric or non-parametric construction axis depending
        on whether the parent component is parametric or is a direct edit component.
        planarEntityOne : The first planar face or construction plane to intersect
        planarEntityTwo : The second planar face or construction plane to intersect
        Returns true if the creation of the ConstructionAxisInput is successful.
        """
        return bool()
    def setByTwoPoints(self, pointEntityOne: core.Base, pointEntityTwo: core.Base) -> bool:
        """
        This input method is for creating a construction axis that passes through the two points
        (work points, sketch points or vertices).
        This will fail if the two points are coincident.
        This can result in a parametric or non-parametric construction axis depending
        on whether the parent component is parametric or is a direct edit component.
        pointEntityOne : The first construction point, sketch point or vertex the axis passes through
        pointEntityTwo : The second construction point, sketch point or vertex the axis passes through
        Returns true if the creation of the ConstructionAxisInput is successful.
        """
        return bool()
    def setByEdge(self, edgeEntity: core.Base) -> bool:
        """
        This input method is for creating a construction axis from a specified linear/circular edge
        or sketch curve.
        This can result in a parametric or non-parametric construction axis depending
        on whether the parent component is parametric or is a direct edit component.
        edgeEntity : A linear/circular edge, construction line, or sketch line
        Returns true if the creation of the ConstructionAxisInput is successful.
        """
        return bool()
    def setByNormalToFaceAtPoint(self, face: BRepFace, pointEntity: core.Base) -> bool:
        """
        This input method if for creating a construction axis normal to a specified face
        or sketch profile and that passes through a specified point.
        This can result in a parametric or non-parametric construction axis depending
        on whether the parent component is parametric or is a direct edit component.
        face : The face (BRepFace object) to create the axis normal to.
        pointEntity : A construction point, sketch point or vertex the axis passes through.
        This point does not have to lie on the face.
        Returns true if the creation of the ConstructionAxisInput is successful.
        """
        return bool()
    @property
    def creationOccurrence(self) -> Occurrence:
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs
        to be specified when the ConstructionAxis is created based on geometry
        (e.g. a straight edge) in another component AND (the ConstructionAxis) is not in the
        root component. The CreationOccurrence is analogous to the active occurrence in the UI
        """
        return Occurrence()
    @creationOccurrence.setter
    def creationOccurrence(self, value: Occurrence):
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs
        to be specified when the ConstructionAxis is created based on geometry
        (e.g. a straight edge) in another component AND (the ConstructionAxis) is not in the
        root component. The CreationOccurrence is analogous to the active occurrence in the UI
        """
        pass
    @property
    def targetBaseOrFormFeature(self) -> core.Base:
        """
        When creating a construction axis that is owned by a base or form feature, set this property to the
        base or form feature you want to associate the new construction plane with. By default, this is null,
        meaning it will not be associated with a base or form feature.
        
        Because of a current limitation, if you want to create a construction axis associated with a base
        or form feature, you must set this property AND call the startEdit method of the base or form feature,
        create the feature, and then call the finishEdit method of the base or form feature. The base or form
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return core.Base()
    @targetBaseOrFormFeature.setter
    def targetBaseOrFormFeature(self, value: core.Base):
        """
        When creating a construction axis that is owned by a base or form feature, set this property to the
        base or form feature you want to associate the new construction plane with. By default, this is null,
        meaning it will not be associated with a base or form feature.
        
        Because of a current limitation, if you want to create a construction axis associated with a base
        or form feature, you must set this property AND call the startEdit method of the base or form feature,
        create the feature, and then call the finishEdit method of the base or form feature. The base or form
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class ConstructionPlane(core.Base):
    """
    ConstructionPlane Object
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionPlane:
        return ConstructionPlane()
    def deleteMe(self) -> bool:
        """
        Deletes the construction plane.
        Returns a bool indicating if the delete was successful or not.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> ConstructionPlane:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return ConstructionPlane()
    @property
    def geometry(self) -> core.Plane:
        """
        Returns a plane that represents the position and orientation of the construction plane.
        This geometry is defined in the AssemblyContext of this ConstructionPlane.
        """
        return core.Plane()
    @property
    def name(self) -> str:
        """
        Returns the name of the construction plane as it is shown in the browser.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Returns the name of the construction plane as it is shown in the browser.
        """
        pass
    @property
    def definition(self) -> ConstructionPlaneDefinition:
        """
        Returns the ConstructionPlaneDefinition object which provides access to the information
        defining this ConstructionPlane.
        """
        return ConstructionPlaneDefinition()
    @property
    def isDeletable(self) -> bool:
        """
        Indicates if this construction plane can be deleted. Base
        construction planes can not be deleted.
        """
        return bool()
    @property
    def isParametric(self) -> bool:
        """
        Indicates if this construction plane is parametric or not.
        """
        return bool()
    @property
    def isLightBulbOn(self) -> bool:
        """
        Indicates if the light bulb (as displayed in the browser) is on.
        A construction plane will only be visible if its light bulb, and that of its
        containing folder and parent component/s are also on.
        """
        return bool()
    @isLightBulbOn.setter
    def isLightBulbOn(self, value: bool):
        """
        Indicates if the light bulb (as displayed in the browser) is on.
        A construction plane will only be visible if its light bulb, and that of its
        containing folder and parent component/s are also on.
        """
        pass
    @property
    def isVisible(self) -> bool:
        """
        Indicates if the construction plane is visible.
        This property is affected by the AssemblyContext of the construction plane.
        """
        return bool()
    @property
    def displayBounds(self) -> core.BoundingBox2D:
        """
        Gets and sets the display size of the construction plane. The bounding
        box defines the min and max corners of the plane as defined in the
        2D space of the construction plane.
        """
        return core.BoundingBox2D()
    @displayBounds.setter
    def displayBounds(self, value: core.BoundingBox2D):
        """
        Gets and sets the display size of the construction plane. The bounding
        box defines the min and max corners of the plane as defined in the
        2D space of the construction plane.
        """
        pass
    @property
    def parent(self) -> core.Base:
        """
        Returns the parent component or base feature. If both the design and the construction
        plane are parametric, the parent will be a component. If the design is parametric and
        the construction plane is not, the parent will be a base feature. If
        the design is not parametric the parent will be a component.
        """
        return core.Base()
    @property
    def component(self) -> Component:
        """
        Returns the component this construction plane belongs to.
        """
        return Component()
    @property
    def timelineObject(self) -> TimelineObject:
        """
        Returns the timeline object associated with this construction plane.
        """
        return TimelineObject()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this object
        in an assembly. This is only valid in the case where this is acting
        as a proxy in an assembly. Returns null in the case where the object
        is not in the context of an assembly but is already the native object.
        """
        return Occurrence()
    @property
    def nativeObject(self) -> ConstructionPlane:
        """
        The NativeObject is the object outside the context of an assembly.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return ConstructionPlane()
    @property
    def baseFeature(self) -> BaseFeature:
        """
        If this construction plane is associated with a base feature, this property will return that base feature.
        If it's not associated with a base feature, this property will return null.
        """
        return BaseFeature()
    @property
    def attributes(self) -> core.Attributes:
        """
        Returns the collection of attributes associated with this construction plane.
        """
        return core.Attributes()
    @property
    def healthState(self) -> FeatureHealthStates:
        """
        Returns the current health state of this construction plane.
        """
        return FeatureHealthStates()
    @property
    def errorOrWarningMessage(self) -> str:
        """
        Returns the error or warning message in the case where the healthState property returns either
        WarningFeatureHealthState or ErrorFeatureHealthState. Otherwise this property returns an empty string.
        """
        return str()
    @property
    def transform(self) -> core.Matrix3D:
        """
        Returns the current position and orientation of the construction plane as a matrix.
        For a parametric construction plane, this property is read-only. For a construction
        plane in a direct modeling model or in a base feature, this is read-write and can be
        used to reposition the constructions plane.
        """
        return core.Matrix3D()
    @transform.setter
    def transform(self, value: core.Matrix3D):
        """
        Returns the current position and orientation of the construction plane as a matrix.
        For a parametric construction plane, this property is read-only. For a construction
        plane in a direct modeling model or in a base feature, this is read-write and can be
        used to reposition the constructions plane.
        """
        pass
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the ConstructionPlane object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same construction plane.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        """
        return str()
    @property
    def isDerived(self) -> bool:
        """
        Returns if this construction plane is derived from another design. If true, the construction plane cannot be deleted.
        You should not attempt to make any edits to the derived construction plane. Any edits made to this derived construction plane will be lost when the derive updates.
        """
        return bool()
    @property
    def deriveFeature(self) -> DeriveFeature:
        """
        Returns the DeriveFeature if this construction plane is derived from another design.
        This property returns null if the construction plane is not derived from another design (i.e. isDerived property returns false).
        """
        return DeriveFeature()

class ConstructionPlaneDefinition(core.Base):
    """
    A Base class to return the information, possibly parametric, used to define the ConstructionPlane.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionPlaneDefinition:
        return ConstructionPlaneDefinition()
    @property
    def parentConstructionPlane(self) -> ConstructionPlane:
        """
        Returns the ConstructionPlane object
        """
        return ConstructionPlane()

class ConstructionPlaneInput(core.Base):
    """
    A ConstructionPlaneInput is a throwaway object used to create a ConstructionPlane.
    The usage pattern is:
    a. create a ConstructionPlaneInput (ConstructionPlanes.CreateInput)
    b. call one of the member functions to specify how the ConstructionPlane is created
    c. create the ConstructionPlane (call ConstructionPlanes.Add)
    d. stop referencing the ConstructionPlaneInput (so it gets deleted).
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionPlaneInput:
        return ConstructionPlaneInput()
    def setByPlane(self, plane: core.Plane) -> bool:
        """
        This input method is for creating a non-parametric construction plane positioned in
        space as defined by the input Plane object.
        
        This method of defining a construction plane is only valid when working in the direct modeling mode.
        This is not valid when working in the parametric modeling mode and will fail.
        plane : A transient plane object
        Returns true if the construction plane definition is successful.
        """
        return bool()
    def setByOffset(self, planarEntity: core.Base, offset: core.ValueInput) -> bool:
        """
        This input method is for creating a construction plane that is offset from a planar
        face or construction plane at a specified distance. This can result in
        a parametric or non-parametric construction plane depending on whether the parent
        component is parametric or is a direct edit component.
        planarEntity : A plane, planar face or construction plane from which to create the offset plane.
        offset : ValueInput object that specifies the offset distance for the plane.
        Returns true if the construction plane definition is successful.
        """
        return bool()
    def setByAngle(self, linearEntity: core.Base, angle: core.ValueInput, planarEntity: core.Base) -> bool:
        """
        This input method is for creating a construction plane through an edge, axis or line
        at a specified angle. This can result in a parametric or non-parametric construction
        plane depending on whether the parent component is parametric or is a direct edit
        component.
        linearEntity : The axis about which to rotate the plane.
        angle : The angle at which to create the plane.
        planarEntity : The planar face or construction plane the angle is measured from.
        Returns true if the construction plane definition is successful.
        """
        return bool()
    def setByTangent(self, tangentFace: BRepFace, angle: core.ValueInput, planarEntity: core.Base) -> bool:
        """
        This input method is for creating a construction plane tangent to a cylindrical or
        conical face at a specified point. This can result in a parametric or non-parametric construction
        plane depending on whether the parent component is parametric or is a direct edit
        component.
        tangentFace : A cylindrical or conical face to create the plane tangent to.
        angle : The angle relative to the planarEntity input at which to create the tangent plane.
        planarEntity : The planar face or construction plane the tangent is measured from.
        Returns true if the construction plane definition is successful.
        """
        return bool()
    def setByTwoPlanes(self, planarEntityOne: core.Base, planarEntityTwo: core.Base) -> bool:
        """
        This input method is for creating a construction plane at the midpoint between
        two planar faces or construction planes. This can result in a parametric or
        non-parametric construction plane depending on whether the parent component is
        parametric or is a direct edit component.
        planarEntityOne : The first planar face or construction plane to create a bisecting plane between
        planarEntityTwo : The second planar face or construction plane to create a bisecting plane between
        Returns true if the construction plane definition is successful.
        This will fail if the two planes are co-planar.
        """
        return bool()
    def setByTwoEdges(self, linearEntityOne: core.Base, linearEntityTwo: core.Base) -> bool:
        """
        This input method is for creating a construction plane that passes through two
        coplanar linear entities or axes.
        Defines a plane by specifying two coplanar linear entities. This can result in a
        parametric or non-parametric construction plane depending on whether the parent
        component is parametric or is a direct edit component.
        linearEntityOne : The first of two coplanar linear entities to define the plane
        linearEntityTwo : The second of two coplanar linear entities to define the plane
        Returns true if the construction plane definition is successful.
        This will fail if the two linear entities are not coplanar.
        """
        return bool()
    def setByThreePoints(self, pointEntityOne: core.Base, pointEntityTwo: core.Base, pointEntityThree: core.Base) -> bool:
        """
        This input method is for creating a construction plane through three points that
        define a triangle. This can result in a parametric or non-parametric construction
        plane depending on whether the parent component is parametric or is a direct edit
        component.
        pointEntityOne : The first construction point, sketch point or vertex in the triangle
        pointEntityTwo : The second construction point, sketch point or vertex in the triangle
        pointEntityThree : The third construction point, sketch point or vertex in the triangle
        Returns true if the construction plane definition is successful.
        This will fail if the points do not form a triangle (no two
        points can be coincident and all three cannot be collinear).
        """
        return bool()
    def setByTangentAtPoint(self, tangentFace: BRepFace, pointEntity: core.Base) -> bool:
        """
        This input method is for creating a construction plane tangent to a face
        and aligned to a point. This can result in a parametric or non-parametric
        construction plane depending on whether the parent component is parametric or is a
        direct edit component.
        tangentFace : A face to create the plane tangent to
        pointEntity : A construction point, sketch point or vertex the tangent plane aligns to.
        This point need not lie on the tangent face.
        Returns true if the construction plane definition is successful.
        """
        return bool()
    def setByDistanceOnPath(self, pathEntity: core.Base, distance: core.ValueInput) -> bool:
        """
        This input method is for creating a construction plane normal to, and at
        specified distance along, a path defined by an edge or sketch profile.
        This can result in a parametric or non-parametric
        construction plane depending on whether the parent component is parametric or is a
        direct edit component.
        pathEntity : The path can be an edge, sketch curve, or a path of multiple entities.
        distance : The distance is a value from 0 to 1 indicating the position along the path where 0
        is at the start and 1 is at the end.
        Returns true if the construction plane definition is successful.
        """
        return bool()
    def setByOffsetThroughPoint(self, planarEntity: core.Base, point: core.Base) -> bool:
        """
        Defines a construction plane that is offset from a planar face or construction plane
        and whose offset distance is defined by a vertex, sketch point, or construction point where
        the plane passes through the point.
        planarEntity : A planar BRepFace, ConstructionPlane, or Plane object that the new construction plane will be
        offset from. A Plane object is only valid in a direct-edit design or a base feature. In that case
        a non-parametric result is created.
        point : A BRepVertex, SketchPoint, ConstructionPoint, or Point3D that defines the offset distance.
        A Point3D is only valid in a direct-edit design. In that case a non-parametric result is created.
        Returns true if construction plane definition is successful.
        """
        return bool()
    @property
    def creationOccurrence(self) -> Occurrence:
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the ConstructionPlane is created based on geometry (e.g. a planarEntity)
        in another component AND (the ConstructionPlane) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI.
        """
        return Occurrence()
    @creationOccurrence.setter
    def creationOccurrence(self, value: Occurrence):
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the ConstructionPlane is created based on geometry (e.g. a planarEntity)
        in another component AND (the ConstructionPlane) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI.
        """
        pass
    @property
    def targetBaseOrFormFeature(self) -> core.Base:
        """
        When creating a construction plane that is owned by a base or form feature, set this property to the
        base or form feature you want to associate the new construction plane with. By default, this is null,
        meaning it will not be associated with a base or form feature.
        
        Because of a current limitation, if you want to create a construction plane associated with a base
        or form feature, you must set this property AND call the startEdit method of the base or form feature,
        create the feature, and then call the finishEdit method of the base or form feature. The base or form
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return core.Base()
    @targetBaseOrFormFeature.setter
    def targetBaseOrFormFeature(self, value: core.Base):
        """
        When creating a construction plane that is owned by a base or form feature, set this property to the
        base or form feature you want to associate the new construction plane with. By default, this is null,
        meaning it will not be associated with a base or form feature.
        
        Because of a current limitation, if you want to create a construction plane associated with a base
        or form feature, you must set this property AND call the startEdit method of the base or form feature,
        create the feature, and then call the finishEdit method of the base or form feature. The base or form
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class ConstructionPlanes(core.Base):
    """
    Provides access to the construction planes within a component and provides
    methods to create new construction planes.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionPlanes:
        return ConstructionPlanes()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ConstructionPlane:
        return None
    def __iter__(self) -> Iterator[ConstructionPlane]:
        return None
    def item(self, index: int) -> ConstructionPlane:
        """
        Function that returns the specified construction plane 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 ConstructionPlane()
    def itemByName(self, name: str) -> ConstructionPlane:
        """
        Returns the specified construction plane using the name of the construction
        plane as it is displayed in the browser.
        name : The name of the construction plane as it is displayed in the browser.
        Returns the specified item or null if an invalid name was specified.
        """
        return ConstructionPlane()
    def createInput(self, occurrenceForCreation: Occurrence = None) -> ConstructionPlaneInput:
        """
        Create a ConstructionPlaneInput object that is in turn used to create a ConstructionPlane.
        occurrenceForCreation : A creation occurrence is needed if the input is in another component AND the
        construction plane is not in the root component. The occurrenceForCreation is analogous
        to the active occurrence in the UI.
        Returns a ConstructionPlaneInput object.
        """
        return ConstructionPlaneInput()
    def add(self, input: ConstructionPlaneInput) -> ConstructionPlane:
        """
        Creates and adds a new ConstructionPlane using the creation parameters in
        the ConstructionPlaneInput.
        
        If the ConstructionPlaneInput was defined using the setByPlane method then
        the add will only work in the direct modeling model and will fail in the parametric modeling mode.
        input : A ConstructionPlaneInput object
        Returns the newly created construction plane or null if the creation failed.
        """
        return ConstructionPlane()
    @property
    def count(self) -> int:
        """
        Returns the number of construction planes in the collection.
        """
        return int()
    @property
    def component(self) -> Component:
        """
        Returns the component that owns this collection.
        """
        return Component()

class ConstructionPoint(core.Base):
    """
    ConstructionPoint Object
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionPoint:
        return ConstructionPoint()
    def deleteMe(self) -> bool:
        """
        Deletes the construction point.
        Returns a bool indicating if the delete was successful or not.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> ConstructionPoint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return ConstructionPoint()
    @property
    def geometry(self) -> core.Point3D:
        """
        Returns a Point3D object that represents the position of the construction point.
        The returned geometry is in the AssemblyContext of this ConstructionPoint.
        """
        return core.Point3D()
    @property
    def name(self) -> str:
        """
        The name of the construction point as it is displayed in the browser.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        The name of the construction point as it is displayed in the browser.
        """
        pass
    @property
    def definition(self) -> ConstructionPointDefinition:
        """
        Returns the construction point definition object which provides access to the
        information defining the construction point.
        """
        return ConstructionPointDefinition()
    @property
    def isDeletable(self) -> bool:
        """
        Indicates if this construction point can be deleted. The base
        construction point cannot be deleted.
        """
        return bool()
    @property
    def isLightBulbOn(self) -> bool:
        """
        Indicates if the light bulb (as displayed in the browser) is on.
        A construction point will only be visible if its light bulb, and that of its
        containing folder and parent component/s are also on.
        """
        return bool()
    @isLightBulbOn.setter
    def isLightBulbOn(self, value: bool):
        """
        Indicates if the light bulb (as displayed in the browser) is on.
        A construction point will only be visible if its light bulb, and that of its
        containing folder and parent component/s are also on.
        """
        pass
    @property
    def isVisible(self) -> bool:
        """
        Gets if the construction point is visible.
        This property is affected by the AssemblyContext of the construction point.
        """
        return bool()
    @property
    def parent(self) -> core.Base:
        """
        Returns the parent component or base feature. If both the design and the construction
        point are parametric, the parent will be a component. If the design is parametric and
        the construction point is not, the parent will be a base feature. If
        the design is not parametric the parent will be a component.
        """
        return core.Base()
    @property
    def component(self) -> Component:
        """
        Returns the component this construction point belongs to.
        """
        return Component()
    @property
    def isParametric(self) -> bool:
        """
        Indicates if the construction point is parametric.
        """
        return bool()
    @property
    def timelineObject(self) -> TimelineObject:
        """
        Returns the timeline object associated with this construction point.
        """
        return TimelineObject()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this object
        in an assembly. This is only valid in the case where this is acting
        as a proxy in an assembly. Returns null in the case where the object
        is not in the context of an assembly but is already the native object.
        """
        return Occurrence()
    @property
    def nativeObject(self) -> ConstructionPoint:
        """
        The NativeObject is the object outside the context of an assembly.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return ConstructionPoint()
    @property
    def baseFeature(self) -> BaseFeature:
        """
        If this construction point is associated with a base feature, this property will return that base feature.
        If it's not associated with a base feature, this property will return null.
        """
        return BaseFeature()
    @property
    def attributes(self) -> core.Attributes:
        """
        Returns the collection of attributes associated with this construction point.
        """
        return core.Attributes()
    @property
    def healthState(self) -> FeatureHealthStates:
        """
        Returns the current health state of this construction point.
        """
        return FeatureHealthStates()
    @property
    def errorOrWarningMessage(self) -> str:
        """
        Returns the error or warning message in the case where the healthState property returns either
        WarningFeatureHealthState or ErrorFeatureHealthState. Otherwise this property returns an empty string.
        """
        return str()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the ConstructionPoint object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same construction point.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        """
        return str()
    @property
    def isDerived(self) -> bool:
        """
        Returns if this construction point is derived from another design. If true, the construction point cannot be deleted.
        You should not attempt to make any edits to the derived construction point. Any edits made to this derived construction point will be lost when the derive updates.
        """
        return bool()
    @property
    def deriveFeature(self) -> DeriveFeature:
        """
        Returns the DeriveFeature if this construction point is derived from another design.
        This property returns null if the construction point is not derived from another design (i.e. isDerived property returns false).
        """
        return DeriveFeature()

class ConstructionPointDefinition(core.Base):
    """
    A Base class to return the information (possibly parametric) used to
    define a ConstructionPoint.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionPointDefinition:
        return ConstructionPointDefinition()
    @property
    def parentConstructionPoint(self) -> ConstructionPoint:
        """
        Returns the ConstructionPoint object
        """
        return ConstructionPoint()

class ConstructionPointInput(core.Base):
    """
    A ConstructionPointInput is a throwaway object used to create a ConstructionPoint.
    The usage pattern is:
    
    a. create a ConstructionPointInput (ConstructionPoints.CreateInput)
    
    b. call one of the member functions to specify how the ConstructionPoint is created
    
    c. create the ConstructionPoint (call ConstructionPoints.Add)
    
    d. stop referencing the ConstructionPointInput (so it gets deleted).
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionPointInput:
        return ConstructionPointInput()
    def setByTwoEdges(self, edgeOne: core.Base, edgeTwo: core.Base) -> bool:
        """
        This input method is for creating a construction point at the intersection of
        the two linear edges or sketch lines.
        The edges can be B-Rep edges or sketch lines.
        This can result in a parametric or non-parametric construction point depending
        on whether the parent component is parametric or is a direct edit component.
        edgeOne : The first B-Rep edge or sketch line.
        edgeTwo : The second B-Rep edge or sketch line.
        Returns true if the creation of the ConstructionPointInput is successful.
        """
        return bool()
    def setByThreePlanes(self, planeOne: core.Base, planeTwo: core.Base, planeThree: core.Base) -> bool:
        """
        This input method is for creating a construction point at the intersection of the
        three planes or planar faces.
        This can result in a parametric or non-parametric construction point depending
        on whether the parent component is parametric or is a direct edit component.
        planeOne : The first plane or planar face to intersect
        planeTwo : The second plane or planar face to intersect
        planeThree : The third plane or planar face to intersect
        Returns true if the creation of the ConstructionPointInput is successful.
        """
        return bool()
    def setByEdgePlane(self, edge: core.Base, plane: core.Base) -> bool:
        """
        This input method is for creating a construction point at the intersection of a
        construction plane, planar face or sketch profile and a linear edge, construction axis
        or sketch line.
        This can result in a parametric or non-parametric construction point depending
        on whether the parent component is parametric or is a direct edit component.
        edge : A linear B-Rep edge, construction axis or sketch line.
        plane : A plane, planar B-Rep face or construction plane.
        Returns true if the creation of the ConstructionPointInput is successful.
        """
        return bool()
    def setByCenter(self, circularEntity: core.Base) -> bool:
        """
        This input method is for creating a construction point at the center of a spherical
        face (sphere or torus), circular edge or sketch arc/circle
        This can result in a parametric or non-parametric construction point depending
        on whether the parent component is parametric or is a direct edit component.
        circularEntity : A spherical face (sphere or torus), circular edge or sketch arc/circle
        Returns true if the creation of the ConstructionPointInput is successful.
        """
        return bool()
    def setByPoint(self, point: core.Base) -> bool:
        """
        This input method is for creating a construction point on the specified point
        or vertex. The point can be either a B-Rep vertex, SketchPoint, or a Point3D object.
        
        Providing a Point3D object is only valid when working in the direct edit modeling mode.
        This is not valid when working in the parametric modeling mode and will fail.
        
        Even when providing a B-Rep vertex, or SketchPoint the result will be non-parametric
        if the parent component is a direct edit component.
        point : A B-Rep vertex, SketchPoint, or Point object
        Returns true if the creation of the ConstructionPointInput is successful.
        """
        return bool()
    @property
    def creationOccurrence(self) -> Occurrence:
        """
        In order for geometry to be transformed correctly, an occurrence for creation needs
        to be specified when the ConstructionPoint is created based on geometry
        (e.g. a sketch point) in another component AND (the ConstructionPoint) is not in the
        root component. The CreationOccurrence is analogous to the active occurrence in the UI
        """
        return Occurrence()
    @creationOccurrence.setter
    def creationOccurrence(self, value: Occurrence):
        """
        In order for geometry to be transformed correctly, an occurrence for creation needs
        to be specified when the ConstructionPoint is created based on geometry
        (e.g. a sketch point) in another component AND (the ConstructionPoint) is not in the
        root component. The CreationOccurrence is analogous to the active occurrence in the UI
        """
        pass
    @property
    def targetBaseOrFormFeature(self) -> core.Base:
        """
        When creating a construction point that is owned by a base or form feature, set this property to the
        base or form feature you want to associate the new construction point with. By default, this is null,
        meaning it will not be associated with a base or form feature.
        
        Because of a current limitation, if you want to create a construction point associated with a base
        or form feature, you must set this property AND call the startEdit method of the base or form feature,
        create the feature, and then call the finishEdit method of the base or form feature. The base or form
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return core.Base()
    @targetBaseOrFormFeature.setter
    def targetBaseOrFormFeature(self, value: core.Base):
        """
        When creating a construction point that is owned by a base or form feature, set this property to the
        base or form feature you want to associate the new construction point with. By default, this is null,
        meaning it will not be associated with a base or form feature.
        
        Because of a current limitation, if you want to create a construction point associated with a base
        or form feature, you must set this property AND call the startEdit method of the base or form feature,
        create the feature, and then call the finishEdit method of the base or form feature. The base or form
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class ConstructionPoints(core.Base):
    """
    Provides access to the construction points within a component and provides
    methods to create new construction points.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionPoints:
        return ConstructionPoints()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ConstructionPoint:
        return None
    def __iter__(self) -> Iterator[ConstructionPoint]:
        return None
    def item(self, index: int) -> ConstructionPoint:
        """
        Function that returns the specified construction point 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 ConstructionPoint()
    def itemByName(self, name: str) -> ConstructionPoint:
        """
        Returns the specified construction point using the name of the construction
        point as it is displayed in the browser.
        name : The name of the construction point as it is displayed in the browser.
        Returns the specified item or null if an invalid name was specified.
        """
        return ConstructionPoint()
    def createInput(self, occurrenceForCreation: Occurrence = None) -> ConstructionPointInput:
        """
        Create a ConstructionPointInput object that is in turn used
        to create a ConstructionPoint.
        occurrenceForCreation : A creation occurrence is needed if the input is in another component AND the
        construction point is not in the root component. The occurrenceForCreation is analogous
        to the active occurrence in the UI.
        Returns a ConstructionPointInput object
        """
        return ConstructionPointInput()
    def add(self, input: ConstructionPointInput) -> ConstructionPoint:
        """
        Creates a new construction point.
        
        If the ConstructionPointInput was defined using the setByPoint method using a Point3D object then
        the add will only work in the direct modeling mode and will fail in the parametric modeling mode.
        input : A ConstructionPointInput object
        Returns the newly created construction point or null if the creation failed.
        """
        return ConstructionPoint()
    @property
    def count(self) -> int:
        """
        The number of construction points in the collection.
        """
        return int()
    @property
    def component(self) -> Component:
        """
        The component that owns this collection.
        """
        return Component()

class ContactSet(core.Base):
    """
    Represents a contact set in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ContactSet:
        return ContactSet()
    def deleteMe(self) -> bool:
        """
        Deletes this contact set from the design.
        Returns true if the delete was successful.
        """
        return bool()
    @property
    def name(self) -> str:
        """
        Gets and sets the name of the contact set.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name of the contact set.
        """
        pass
    @property
    def occurencesAndBodies(self) -> list[core.Base]:
        """
        Gets and sets the group of Occurrence and/or BRepBody objects that are part of this contact set.
        """
        return [core.Base()]
    @occurencesAndBodies.setter
    def occurencesAndBodies(self, value: list[core.Base]):
        """
        Gets and sets the group of Occurrence and/or BRepBody objects that are part of this contact set.
        """
        pass
    @property
    def isSuppressed(self) -> bool:
        """
        Gets and sets if this contact set is currently suppressed.
        """
        return bool()
    @isSuppressed.setter
    def isSuppressed(self, value: bool):
        """
        Gets and sets if this contact set is currently suppressed.
        """
        pass

class ContactSets(core.Base):
    """
    Provides access to the existing contact sets in a design and supports creating new contact sets.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ContactSets:
        return ContactSets()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ContactSet:
        return None
    def __iter__(self) -> Iterator[ContactSet]:
        return None
    def item(self, index: int) -> ContactSet:
        """
        Returns the specified contact set 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 ContactSet()
    def itemByName(self, name: str) -> ContactSet:
        """
        Returns the specified contact set.
        name : The name of the contact set to return.
        Returns the specified contact set or null there isn't a contact set with that name.
        """
        return ContactSet()
    def add(self, occurrencesAndBodies: list[core.Base]) -> ContactSet:
        """
        Creates a new contact set for the provided occurrences and/or bodies.
        occurrencesAndBodies : An array of Occurrence or BRepBody objects that will be included in the contact set.
        All occurrences and bodies must be in the context of the root component.
        Returns the newly created ContactSet or null in the case of failure.
        """
        return ContactSet()
    @property
    def count(self) -> int:
        """
        Returns the number of contacts sets in the design.
        """
        return int()

class CopyPasteBodies(core.Base):
    """
    Collection that provides access to all of the existing copy-paste features in a design.
    These are created in the UI by copying and then pasting a B-Rep body.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CopyPasteBodies:
        return CopyPasteBodies()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> CopyPasteBody:
        return None
    def __iter__(self) -> Iterator[CopyPasteBody]:
        return None
    def item(self, index: int) -> CopyPasteBody:
        """
        Function that returns the specified Copy/Paste Body feature 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 CopyPasteBody()
    def itemByName(self, name: str) -> CopyPasteBody:
        """
        Function that returns the specified Copy/Paste Body feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return CopyPasteBody()
    def add(self, sourceBody: core.Base) -> CopyPasteBody:
        """
        Copies the specified body into the component that owns this CopyPasteBodies collection.
        sourceBody : Either an ObjectCollection of BRepBodies or a single BRepBody object to copy.
        Returns the newly created BRepBody object or null in the case of failure.
        """
        return CopyPasteBody()
    @property
    def count(self) -> int:
        """
        The number of Copy/Paste Body features in the collection.
        """
        return int()

class CornerClosureFeatureDefinition(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    A Base class to return the information used to define the CornerClosureFeature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CornerClosureFeatureDefinition:
        return CornerClosureFeatureDefinition()
    @property
    def dominantEdge(self) -> BRepEdge:
        """
        Gets the dominant edge for the corner closure.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        
        After setting the edge, the definitionType property on CornerClosureFeature should be examined
        to determine whether the corner is two-bend or three-bend, as after the setting another edge
        the type of corner might be altered.
        """
        return BRepEdge()
    @dominantEdge.setter
    def dominantEdge(self, value: BRepEdge):
        """
        Gets the dominant edge for the corner closure.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        
        After setting the edge, the definitionType property on CornerClosureFeature should be examined
        to determine whether the corner is two-bend or three-bend, as after the setting another edge
        the type of corner might be altered.
        """
        pass
    @property
    def submissiveEdge(self) -> BRepEdge:
        """
        Gets and sets the submissive edge for the corner closure.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        
        After setting the edge, the definitionType property on CornerClosureFeature should be examined
        to determine whether the corner is two-bend or three-bend, as after the setting another edge
        the type of corner might be altered.
        """
        return BRepEdge()
    @submissiveEdge.setter
    def submissiveEdge(self, value: BRepEdge):
        """
        Gets and sets the submissive edge for the corner closure.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        
        After setting the edge, the definitionType property on CornerClosureFeature should be examined
        to determine whether the corner is two-bend or three-bend, as after the setting another edge
        the type of corner might be altered.
        """
        pass
    @property
    def miterGap(self) -> ModelParameter:
        """
        Gets the miter gap for the corner closure.
        """
        return ModelParameter()
    @property
    def isExtendAligned(self) -> bool:
        """
        Gets and sets whether the corner closure extends aligned to the edges.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isExtendAligned.setter
    def isExtendAligned(self, value: bool):
        """
        Gets and sets whether the corner closure extends aligned to the edges.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def bendTransition(self) -> CornerBendTransitionTypes:
        """
        Gets and sets the bend transition type for the corner closure.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return CornerBendTransitionTypes()
    @bendTransition.setter
    def bendTransition(self, value: CornerBendTransitionTypes):
        """
        Gets and sets the bend transition type for the corner closure.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass

class CornerClosureFeatureInput(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    This class defines the methods and properties that pertain to the definition of a corner closure feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CornerClosureFeatureInput:
        return CornerClosureFeatureInput()
    def setTwoBendCornerClosure(self, parameters: TwoBendCornerClosureInputDefinition) -> bool:
        """
        Sets the corner closure input with the values to be used to create a two-bend corner closure feature.
        Before using this method, the definitionType property should be examined
        to determine whether the corner is two-bend or three-bend, as this method is only applicable
        for two-bend corner closures.
        parameters : A TwoBendCornerClosureParameters object that encapsulates all the required parameters for creating
        a two-bend corner closure feature. This includes miter gap, alignment settings, bend transition type,
        relief shape, relief size, and relief placement options.
        Returns true if defining the corner closure is successful.
        """
        return bool()
    def setThreeBendCornerClosure(self, parameters: ThreeBendCornerClosureInputDefinition) -> bool:
        """
        Sets the corner closure input with the values to be used to create a three-bend corner closure feature.
        Before using this method, the definitionType property should be examined
        to determine whether the corner is two-bend or three-bend, as this method is only applicable
        for three-bend corner closures.
        parameters : A ThreeBendCornerClosureParameters object that encapsulates all the required parameters for creating
        a three-bend corner closure feature. This includes miter gap, alignment settings, bend transition type,
        relief shape, and relief radius options.
        Returns true if defining the corner closure is successful.
        """
        return bool()
    @property
    def definitionType(self) -> CornerClosureFeatureDefinitionTypes:
        """
        Gets the type of corner closure defined.
        """
        return CornerClosureFeatureDefinitionTypes()
    @property
    def dominantEdge(self) -> BRepEdge:
        """
        Gets and sets the dominant edge for the corner closure
        
        After setting the edge, the definitionType property should be examined
        to determine whether the corner is two-bend or three-bend, as after the setting another edge
        the type of corner might be altered.
        """
        return BRepEdge()
    @dominantEdge.setter
    def dominantEdge(self, value: BRepEdge):
        """
        Gets and sets the dominant edge for the corner closure
        
        After setting the edge, the definitionType property should be examined
        to determine whether the corner is two-bend or three-bend, as after the setting another edge
        the type of corner might be altered.
        """
        pass
    @property
    def submissiveEdge(self) -> BRepEdge:
        """
        Gets and sets the submissive edge for the corner closure
        
        After setting the edge, the definitionType property should be examined
        to determine whether the corner is two-bend or three-bend, as after the setting another edge
        the type of corner might be altered.
        """
        return BRepEdge()
    @submissiveEdge.setter
    def submissiveEdge(self, value: BRepEdge):
        """
        Gets and sets the submissive edge for the corner closure
        
        After setting the edge, the definitionType property should be examined
        to determine whether the corner is two-bend or three-bend, as after the setting another edge
        the type of corner might be altered.
        """
        pass

class CornerClosureFeatures(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Collection that provides access to all of the existing corner closure features in a design and supports the ability to create new corner closure features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CornerClosureFeatures:
        return CornerClosureFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> CornerClosureFeature:
        return None
    def __iter__(self) -> Iterator[CornerClosureFeature]:
        return None
    def item(self, index: int) -> CornerClosureFeature:
        """
        Function that returns the specified corner closure feature 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 CornerClosureFeature()
    def itemByName(self, name: str) -> CornerClosureFeature:
        """
        Function that returns the specified corner closure feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return CornerClosureFeature()
    def createInput(self, dominantEdge: BRepEdge, submissiveEdge: BRepEdge) -> CornerClosureFeatureInput:
        """
        Creates a CornerClosureFeatureInput object. Use methods on this object to define the corner closure you want
        to create and then use the add method, passing in the CornerClosureFeatureInput object.
        dominantEdge : The BRepEdge that defines the dominant edge of the corner closure.
        submissiveEdge : The BRepEdge that defines the submissive edge of the corner closure.
        Returns the newly created CornerClosureFeatureInput object or null if the creation failed.
        """
        return CornerClosureFeatureInput()
    def add(self, input: CornerClosureFeatureInput) -> CornerClosureFeature:
        """
        Creates a new Corner Closure feature.
        input : A CornerClosureFeatureInput object that defines the desired corner closure. Use the createCornerClosureFeatureInput
        method to create a new CornerClosureFeatureInput object and then use methods on it
        (the CornerClosureFeatureInput object) to define the corner closure.
        Returns the newly created CornerClosureFeature object or null if the creation failed.
        """
        return CornerClosureFeature()
    @property
    def count(self) -> int:
        """
        The number of corner closure features in the collection.
        """
        return int()

class CornerClosureInputDefinition(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Defines the common input properties shared by both two-bend and three-bend corner closure features.
    This class provides the fundamental properties required for any corner closure operation, including miter gap,
    alignment settings, and bend transition behavior.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CornerClosureInputDefinition:
        return CornerClosureInputDefinition()
    @property
    def miterGap(self) -> core.ValueInput:
        """
        Gets and sets the gap distance for the miter in the corner closure.
        This value defines the spacing between the sheets at the corner miter joint.
        If this property is not set (null) and useSheetMetalRuleMiterGap is false,
        the miter gap value will be taken from the Sheet Metal Rule as a fallback.
        """
        return core.ValueInput()
    @miterGap.setter
    def miterGap(self, value: core.ValueInput):
        """
        Gets and sets the gap distance for the miter in the corner closure.
        This value defines the spacing between the sheets at the corner miter joint.
        If this property is not set (null) and useSheetMetalRuleMiterGap is false,
        the miter gap value will be taken from the Sheet Metal Rule as a fallback.
        """
        pass
    @property
    def isExtendAligned(self) -> bool:
        """
        Gets and sets a value indicating whether the corner closure extends aligned to the edges.
        When true, the corner closure will extend in alignment with the adjacent edges.
        When false, the corner closure will use the default extension behavior.
        The default value is true.
        """
        return bool()
    @isExtendAligned.setter
    def isExtendAligned(self, value: bool):
        """
        Gets and sets a value indicating whether the corner closure extends aligned to the edges.
        When true, the corner closure will extend in alignment with the adjacent edges.
        When false, the corner closure will use the default extension behavior.
        The default value is true.
        """
        pass
    @property
    def bendTransition(self) -> CornerBendTransitionTypes:
        """
        Gets and sets the bend transition type for the corner closure.
        This determines how the bend transitions are handled at the corner intersection.
        The default value is TrimToBendCornerBendTransitionType.
        """
        return CornerBendTransitionTypes()
    @bendTransition.setter
    def bendTransition(self, value: CornerBendTransitionTypes):
        """
        Gets and sets the bend transition type for the corner closure.
        This determines how the bend transitions are handled at the corner intersection.
        The default value is TrimToBendCornerBendTransitionType.
        """
        pass
    @property
    def isUseSheetMetalRuleMiterGap(self) -> bool:
        """
        Gets and sets whether to use the miter gap value from the Sheet Metal Rule.
        When true, the miter gap value is taken from the active Sheet Metal Rule and any value set in the miterGap property is ignored.
        When false (default), the behavior depends on the miterGap property:
          - If miterGap is set: uses the specified value
          - If miterGap is not set (null): uses the value from the Sheet Metal Rule as a fallback
        The default value is false.
        """
        return bool()
    @isUseSheetMetalRuleMiterGap.setter
    def isUseSheetMetalRuleMiterGap(self, value: bool):
        """
        Gets and sets whether to use the miter gap value from the Sheet Metal Rule.
        When true, the miter gap value is taken from the active Sheet Metal Rule and any value set in the miterGap property is ignored.
        When false (default), the behavior depends on the miterGap property:
          - If miterGap is set: uses the specified value
          - If miterGap is not set (null): uses the value from the Sheet Metal Rule as a fallback
        The default value is false.
        """
        pass

class CurvatureCombAnalyses(core.Base):
    """
    Provides access to any curvature comb analyses results in the design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CurvatureCombAnalyses:
        return CurvatureCombAnalyses()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> CurvatureCombAnalysis:
        return None
    def __iter__(self) -> Iterator[CurvatureCombAnalysis]:
        return None
    def item(self, index: int) -> CurvatureCombAnalysis:
        """
        A method that returns the specified CurvatureCombAnalysis 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 CurvatureCombAnalysis()
    def itemByName(self, name: str) -> CurvatureCombAnalysis:
        """
        A method that returns the specified CurvatureCombAnalysis object using the name of the analysis
        as displayed in the browser.
        name : The name of the CurvatureCombAnalysis object as displayed in the browser.
        Returns the specified item or null if an invalid name was specified.
        """
        return CurvatureCombAnalysis()
    @property
    def count(self) -> int:
        """
        Returns the number of CurvatureCombAnalysis objects in the collection.
        """
        return int()

class CurvatureMapAnalyses(core.Base):
    """
    Provides access to any curvature map analyses results in the design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CurvatureMapAnalyses:
        return CurvatureMapAnalyses()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> CurvatureMapAnalysis:
        return None
    def __iter__(self) -> Iterator[CurvatureMapAnalysis]:
        return None
    def item(self, index: int) -> CurvatureMapAnalysis:
        """
        A method that returns the specified CurvatureMapAnalysis 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 CurvatureMapAnalysis()
    def itemByName(self, name: str) -> CurvatureMapAnalysis:
        """
        A method that returns the specified CurvatureMapAnalysis object using the name of the analysis
        as displayed in the browser.
        name : The name of the CurvatureMapAnalysis object as displayed in the browser.
        Returns the specified item or null if an invalid name was specified.
        """
        return CurvatureMapAnalysis()
    @property
    def count(self) -> int:
        """
        Returns the number of CurvatureMapAnalysis objects in the collection.
        """
        return int()

class CustomFeatureDefinition(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The CustomFeatureDefinition object defines a specific type of custom feature. It contains
    the settings that apply to all custom features of that type and is used when creating new
    custom features of that type. It also supports the events used to handle changes to custom
    features of that type.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomFeatureDefinition:
        return CustomFeatureDefinition()
    @staticmethod
    def create(id: str, defaultName: str, iconFolder: str) -> CustomFeatureDefinition:
        """
        A static function that creates a new CustomFeatureDefinition object. The creation of a
        CustomFeatureDefinition object is required to be able to create new custom features and
        for existing custom features to behave correctly. The CustomFeatureDefinition object defines
        all of the information that is common for all custom features of a particular type. For example,
        it defines the icon and the default name. The CustomFeatureDefinition object also supports the
        events that used to react to an existing feature being edited or re-computed.
        
        The custom feature definition should be created when your add-in is initially loaded to notify
        Fusion that the add-in that supports that custom feature type is available.
        id : The unique ID for custom features of a particular type. Care must be taken to ensure that this
        is unique and you must be consistent in its use once you've chosen an ID. A good practice to
        help ensure unique naming is to use the name of your company in combination with the name of
        the feature, such as "CompanyName.FeatureName". For example, "WoodTools4U.Dovetail".
        defaultName : The default name of the feature. Fusion will use this name and append a number to each feature
        instance as it's created. For example, if this is "Dovetail" the first custom feature created
        will be named "Dovetail1" and the second will be "Dovetail2".
        
        If you want to localize this name you can use the Application.Preferences.generalPreferences.userLanguage
        property to determine what language the user has chosen and use the corresponding name for that language.
        iconFolder : The folder that contains the image files that will be used for the icon for this feature in
        the timeline. This can be a full path or a relative path where it will be relative to the add-in
        file. The folder should contain the image files named 16x16.png and 32x32.png which should be
        images that are 16 and 32 pixels square.
        Returns the newly created CustomFeatureDefinition or null in the case of failure.
        """
        return CustomFeatureDefinition()
    @property
    def id(self) -> str:
        """
        Gets the unique ID used for this type of custom feature.
        """
        return str()
    @property
    def iconFolder(self) -> str:
        """
        Gets and sets the folder that contains the images that are used for the icon in the timeline for
        this custom feature. The folder should contain the image files named 16x16.png and 32x32.png
        which should be images that are 16 and 32 pixels square.
        """
        return str()
    @iconFolder.setter
    def iconFolder(self, value: str):
        """
        Gets and sets the folder that contains the images that are used for the icon in the timeline for
        this custom feature. The folder should contain the image files named 16x16.png and 32x32.png
        which should be images that are 16 and 32 pixels square.
        """
        pass
    @property
    def defaultName(self) -> str:
        """
        Gets and sets the default name of the feature. Fusion will use this name and append a number
        to each feature instance as it's created. For example, if this is "Dovetail" the first
        custom feature created will be named "Dovetail1" and the second will be "Dovetail2".
        
        If you want to localize this name you can use the Application.Preferences.generalPreferences.userLanguage
        property to determine what language the user has chosen and use the corresponding name for that language.
        """
        return str()
    @defaultName.setter
    def defaultName(self, value: str):
        """
        Gets and sets the default name of the feature. Fusion will use this name and append a number
        to each feature instance as it's created. For example, if this is "Dovetail" the first
        custom feature created will be named "Dovetail1" and the second will be "Dovetail2".
        
        If you want to localize this name you can use the Application.Preferences.generalPreferences.userLanguage
        property to determine what language the user has chosen and use the corresponding name for that language.
        """
        pass
    @property
    def editCommandId(self) -> str:
        """
        Gets and sets which command will be invoked when the feature is edited. This is the id of the
        CommandDefinition object that you have created to do the edit of the feature.
        """
        return str()
    @editCommandId.setter
    def editCommandId(self, value: str):
        """
        Gets and sets which command will be invoked when the feature is edited. This is the id of the
        CommandDefinition object that you have created to do the edit of the feature.
        """
        pass
    @property
    def customFeatureCompute(self) -> CustomFeatureEvent:
        """
        The customFeatureCompute event fires when Fusion is computing the timeline and reaches
        the custom feature. The event is fired if any of the dependencies of the custom feature
        have changed. You can modify the results of your custom feature based on the dependencies.
        """
        return CustomFeatureEvent()

class CustomFeatureDependencies(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    A collection of dependencies associated with a particular custom feature. These
    are the entities that the custom feature is dependent on. If these entities are
    modified, it will cause the custom feature to recompute so it can be up to date.
    These dependencies are saved with the custom feature and can be accessed at a
    later time, typically during the compute, to access and use the entities.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomFeatureDependencies:
        return CustomFeatureDependencies()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> CustomFeatureDependency:
        return None
    def __iter__(self) -> Iterator[CustomFeatureDependency]:
        return None
    def item(self, index: int) -> CustomFeatureDependency:
        """
        Function that returns the specified custom dependency 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 CustomFeatureDependency()
    def itemById(self, id: str) -> CustomFeatureDependency:
        """
        Function that returns the specified custom dependency given its ID.
        id : The ID of the dependency, which was assigned when the dependency was defined.
        Returns the specified item or null if the specified ID was not found.
        """
        return CustomFeatureDependency()
    def add(self, id: str, entity: core.Base) -> CustomFeatureDependency:
        """
        Adds an entity or parameter that this feature is dependent on. This is used by Fusion to know
        when to recompute this feature and to control the behavior of the feature's node in the timeline.
        id : An ID for this dependency. This is used to allow you to identify which dependency is which in the future.
        The ID must be unique with respect to the other dependencies of this custom feature.
        entity : The entity or parameter you want to add as a dependency. This can be a BRepBody, BRepFace, BrepEdge,
        BRepVertex, a sketch, any sketch entities, a profile, any construction geometry, or any parameter.
        Returns the created CustomFeatureDependency object and asserts if it failed.
        """
        return CustomFeatureDependency()
    def deleteAll(self) -> bool:
        """
        Deletes all of the current dependencies. This method is for convenience and
        is equivalent to iterating through the collection and deleting them one at a time.
        Returns true if the operation was successful.
        """
        return bool()
    @property
    def count(self) -> int:
        """
        The number of CustomFeatureParameter objects in the collection.
        """
        return int()

class CustomFeatureDependency(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    A custom feature dependency defines a dependency the custom feature has on an entity
    outside the custom feature. For example, a feature might be dependent on a face or a
    point and if those entities are modified the custom feature needs to recompute to be
    up to date.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomFeatureDependency:
        return CustomFeatureDependency()
    def deleteMe(self) -> bool:
        """
        Deletes this dependency from the custom feature.
        Returns true if the delete was successful.
        """
        return bool()
    @property
    def id(self) -> str:
        """
        Returns the ID of this custom feature dependency.
        """
        return str()
    @property
    def entity(self) -> core.Base:
        """
        Gets and sets the entity associated with this dependency.
        """
        return core.Base()
    @entity.setter
    def entity(self, value: core.Base):
        """
        Gets and sets the entity associated with this dependency.
        """
        pass
    @property
    def parentCustomFeature(self) -> CustomFeature:
        """
        Returns the custom feature this dependency is associated with.
        """
        return CustomFeature()

class CustomFeatureEventHandler(core.EventHandler):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The CustomFeatureEventHandler is a client implemented class that can be added as
    a handler to a CustomFeatureEvent.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomFeatureEventHandler:
        return CustomFeatureEventHandler()
    def notify(self, eventArgs: CustomFeatureEventArgs) -> None:
        """
        The function called by Fusion when the associated event is fired.
        eventArgs : Returns an object that provides access to additional information associated with the event.
        """
        pass

class CustomFeatureInput(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    This class defines the methods and properties that pertain to the definition of a Ruled Surface feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomFeatureInput:
        return CustomFeatureInput()
    def addDependency(self, id: str, entity: core.Base) -> bool:
        """
        Adds an entity or parameter this feature is dependent on. This is used by Fusion to know
        when to recompute this feature and to control the behavior of the feature's node in the timeline.
        id : An ID for this dependency. This is used to allow you to identify which dependency is which in the future.
        The ID must be unique with respect to the other dependencies of this custom feature.
        entity : The entity or parameter you want to add as a dependency. This can be a BRepBody, BRepFace, BrepEdge,
        BRepVertex, a sketch, any sketch entities, a profile, any construction geometry, or any parameter.
        Returns true if the dependency was successfully added.
        """
        return bool()
    def addCustomParameter(self, id: str, label: str, value: core.ValueInput, units: str, isVisible: bool = True) -> bool:
        """
        Defines the information needed to create a new custom parameter that will be associated with
        this feature. A custom parameter appears as a model parameter and will be listed as a child of the
        custom feature in the parameter dialog. The custom feature will automatically have a dependency
        on this parameter.
        id : An id for this parameter. This is used to allow you to identify the parameter in the future. This
        must be unique with respect to all other parameters associated with this custom feature. It's needed
        because the label does not need to be unique and the Fusion auto-generated name can be edited by
        the user.
        label : The label for this parameter as seen in the parameters dialog. This identifies to the user the purpose
        of this parameter. For example, when you create an extrusion with a specific distance, there are two
        parameters displayed in the parameters dialog with the labels "AlongDistance" and "TaperAngle". This does
        not have to be unique because in the case of a fillet feature there can be multiple parameters all labeled "Radius".
        value : ValueInput object that specifies the value of the parameter. If the ValueInput was created using a real,
        the value will be interpreted using the internal unit for the unit type specified by the "units" argument.
        For example, if the ValueInput was created using the real value 5 and the input to the "units" argument is
        any valid length unit, the value will be interpreted as 5 centimeters since centimeters is the internal unit
        for lengths. If the "units" argument is a valid angle unit the value will be interpreted as 5 radians.
        
        If the ValueInput was created using a string, the string is used as-is for the expression of the parameter.
        This means if there are units as part of the string it must evaluate to the same unit type as that specified
        by the "units" argument and if no units are specified it will use the current default units specified for
        the current document. For example, if the ValueInput was created with the string "5 in", then the "units"
        argument must define any valid length so it is compatible. If the ValueInput was created with the string "5",
        any unit type can be used and the result will be 5 of that unit.
        
        When using a ValueInput created using a string, it's the same as creating a parameter in the user-interface.
        You can specify any valid expression, i.e. "5", "5 in", "5 in / 2", "5 + Length", etc. and you can choose
        from many different types of units. The only requirement is that the units must match in type. For example,
        they must both be lengths, or they must both be angles.
        units : The units to use for the value of the parameter. Units specified must match the units specified (if any)
        in the ValueInput object.
        
        To create a parameter with no units (unitless) you can specify either an empty string.
        isVisible : Optional argument that specifies if the parameter will be visible in the parameters dialog or not. By
        default the parameter will be visible.
        
        This can be useful in cases where the feature can be edited to be in different states where a parameter
        is only valid in a certain state. You can change the visibility based on the current state of the feature
        and if that parameter should be available for edit. This implies that you create all the parameters that
        might be needed and then change their visibility based on the current state of the feature. The parameters
        that are not visible will not be returned by the ModelParameters collection and are only available through
        the custom feature they're associated with.
        Returns true if the definition of the model parameter was successfully added.
        """
        return bool()
    def setStartAndEndFeatures(self, startFeature: core.Base, endFeature: core.Base) -> bool:
        """
        Sets the start and end features that the custom feature will group. A "feature" in this
        case is an object that is visible in the timeline, such as modeling features, sketches,
        and construction geometry. The custom feature will group the input start and end features
        and all features between them in the timeline.
        
        You can determine the current start and end features using the features property and use
        the first and last features returned. If the custom feature contains a single feature,
        you can use the same feature for both the start and end feature arguments. You can also
        use null for both arguments to remove all features from a custom feature. The custom feature
        still exists but will be empty, and the features will be displayed individually within the timeline.
        startFeature : The first feature in the timeline that the custom feature will group.
        endFeature : The last feature in the timeline that the custom feature will group. When creating a custom feature
        that contains a single feature, this can be the same feature as the startFeature argument.
        Returns true if setting the start and end features was successful.
        """
        return bool()
    @property
    def features(self) -> list[core.Base]:
        """
        Returns the features that are grouped by this custom feature. The start and end features and all of
        the features between them in the timeline are returned. This includes all entities represented in
        the timeline including modeling features, construction geometry, sketches, etc.
        """
        return [core.Base()]

class CustomFeatureParameters(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    A collection of custom parameters associated with a particular custom feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomFeatureParameters:
        return CustomFeatureParameters()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> CustomFeatureParameter:
        return None
    def __iter__(self) -> Iterator[CustomFeatureParameter]:
        return None
    def item(self, index: int) -> CustomFeatureParameter:
        """
        Function that returns the specified custom parameter feature 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 CustomFeatureParameter()
    def itemById(self, id: str) -> CustomFeatureParameter:
        """
        Function that returns the specified CustomParameter object given its ID.
        id : The ID of the custom parameter, which was assigned when the parameter was defined and the custom feature was created.
        Returns the specified item or null if the specified ID was not found.
        """
        return CustomFeatureParameter()
    @property
    def count(self) -> int:
        """
        The number of CustomFeatureParameter objects in the collection.
        """
        return int()

class CustomFeatures(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Collection that provides access to all of the existing custom features in a component
    and supports the ability to create new custom features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomFeatures:
        return CustomFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> CustomFeature:
        return None
    def __iter__(self) -> Iterator[CustomFeature]:
        return None
    def item(self, index: int) -> CustomFeature:
        """
        Function that returns the specified ruled surface feature 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 CustomFeature()
    def itemByName(self, name: str) -> CustomFeature:
        """
        Function that returns the specified CustomFeature feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return CustomFeature()
    def createInput(self, definition: CustomFeatureDefinition) -> CustomFeatureInput:
        """
        Creates a new input object that you use to define a custom feature. Creating an input object doesn't
        create the feature but provides a way to gather all of the input needed to create a custom feature.
        To create the custom feature, the fully defined input object is passed to the add method.
        definition : The CustomFeatureDefinition for the type of custom feature being created.
        Returns the newly created CustomFeatureInput object or null in the case of invalid input.
        """
        return CustomFeatureInput()
    def add(self, input: CustomFeatureInput) -> CustomFeature:
        """
        Creates a new custom feature.
        input : The CustomFeatureInput object that defines the information needed to create a custom feature.
        Returns the newly created CustomFeature.
        """
        return CustomFeature()
    @property
    def count(self) -> int:
        """
        The number of CustomFeature objects in the collection.
        """
        return int()

class CustomGraphicsBillBoard(core.Base):
    """
    Used to specify if the orientation of custom graphics are defined relative to the screen instead of model space.
    This is commonly used for legends and symbols that you want to always face the user, even as the
    camera is rotated.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomGraphicsBillBoard:
        return CustomGraphicsBillBoard()
    @staticmethod
    def create(anchorPoint: core.Point3D) -> CustomGraphicsBillBoard:
        """
        Creates a new CustomGraphicsBillBoard object that can be used when calling the billBoarding property
        of the CustomGraphicsEntity object to specify the billboarding behavior of some custom graphics. Once
        created you can assign it to a custom graphics entity using its billBoarding property.
        anchorPoint : The parameter must be input and can be null but the value is ignored. Use of the anchor point has been retired and it is no longer used.
        Returns the newly created CustomGraphicsBillBoard object or null in the case of failure. This can be assigned
        to a custom graphics entity using its billBoarding property.
        """
        return CustomGraphicsBillBoard()
    @property
    def anchorPoint(self) -> core.Point3D:
        """
        
        <mark>RETIRED - This property has been retired. It is not needed since the matrix defined for the CustomGraphicsText
        object defines the position and anchor for the billboarded text. Getting the value of this property will return a
        point at the origin. Setting this property will be ignored.
        </mark>
        
        Specifies the coordinate in model or view space that the graphics will anchor to. For graphics that
        represent a label, this will typically be the point where the label attaches to the model. A
        CustomGraphicsAnchorPoint can be created using the static create method on the CustomGraphicsAnchorPoint
        object.
        
        """
        return core.Point3D()
    @anchorPoint.setter
    def anchorPoint(self, value: core.Point3D):
        """
        
        <mark>RETIRED - This property has been retired. It is not needed since the matrix defined for the CustomGraphicsText
        object defines the position and anchor for the billboarded text. Getting the value of this property will return a
        point at the origin. Setting this property will be ignored.
        </mark>
        
        Specifies the coordinate in model or view space that the graphics will anchor to. For graphics that
        represent a label, this will typically be the point where the label attaches to the model. A
        CustomGraphicsAnchorPoint can be created using the static create method on the CustomGraphicsAnchorPoint
        object.
        
        """
        pass
    @property
    def billBoardStyle(self) -> CustomGraphicsBillBoardStyles:
        """
        Specifies the type of billboarding to use. When a new CustomGraphicsBillBoard object is created
        this defaults to ScreenBillBoardStyle so the graphics will all be facing the view plane. It can also
        be set to an arbitrary plane by setting this to AxialBillBoardStyle and can be defined so that it never
        appear backwards by setting it to RightReadingBillBoardStyle.
        """
        return CustomGraphicsBillBoardStyles()
    @billBoardStyle.setter
    def billBoardStyle(self, value: CustomGraphicsBillBoardStyles):
        """
        Specifies the type of billboarding to use. When a new CustomGraphicsBillBoard object is created
        this defaults to ScreenBillBoardStyle so the graphics will all be facing the view plane. It can also
        be set to an arbitrary plane by setting this to AxialBillBoardStyle and can be defined so that it never
        appear backwards by setting it to RightReadingBillBoardStyle.
        """
        pass
    @property
    def axis(self) -> core.Vector3D:
        """
        When the billBoardStyle property is set to AxialBillBoardStyle, this is used to control the direction
        of the graphics. Otherwise it uses the x axis of the view.
        """
        return core.Vector3D()
    @axis.setter
    def axis(self, value: core.Vector3D):
        """
        When the billBoardStyle property is set to AxialBillBoardStyle, this is used to control the direction
        of the graphics. Otherwise it uses the x axis of the view.
        """
        pass

class CustomGraphicsColorEffect(core.Base):
    """
    The base class for all custom graphics color effects.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomGraphicsColorEffect:
        return CustomGraphicsColorEffect()

class CustomGraphicsCoordinates(core.Base):
    """
    Represents coordinates that are used to define vertices in custom graphics.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomGraphicsCoordinates:
        return CustomGraphicsCoordinates()
    @staticmethod
    def create(coordinates: list[float]) -> CustomGraphicsCoordinates:
        """
        Static method that creates a CustomGraphicsCoordinates object which can be used as input to
        various custom graphics methods.
        coordinates : An array of doubles where the values are the x, y, z components of each coordinate where
        the unit of measure is centimeters.
        Returns the created CustomGraphicsCoordinates object or null in the case of failure.
        """
        return CustomGraphicsCoordinates()
    def getCoordinate(self, index: int) -> core.Point3D:
        """
        Gets the coordinate at the specified index.
        index : The index of the coordinate to return. The first coordinate has an index of 0.
        Returns the coordinate as a Point3D object.
        """
        return core.Point3D()
    def setCoordinate(self, index: int, coordinate: core.Point3D) -> bool:
        """
        Sets the coordinate at the specified index.
        index : The index of the coordinate to set. The first coordinate has an index of 0.
        coordinate : The coordinate value as a Point3D object.
        Returns true if setting the coordinate was successful.
        """
        return bool()
    def getColor(self, index: int) -> core.Color:
        """
        Gets the color assigned to the coordinate at the specified index.
        index : The index of the color to return. The first color has an index of 0.
        Returns the color associated with the index. Can also return null in the case
        where there is no color assigned.
        """
        return core.Color()
    def setColor(self, index: int, color: core.Color) -> bool:
        """
        Sets the color of the coordinate at the specified index.
        index : The index of the coordinate to set. The first coordinate has an index of 0.
        color : The color value as a Color object.
        Returns true if setting the color was successful.
        """
        return bool()
    @property
    def coordinates(self) -> list[float]:
        """
        Gets and sets the coordinate data associated with this CustomGraphicsCoordinates object.
        This data represents the x, y, z components of the coordinates where the unit of measure is centimeters.
        """
        return [float()]
    @coordinates.setter
    def coordinates(self, value: list[float]):
        """
        Gets and sets the coordinate data associated with this CustomGraphicsCoordinates object.
        This data represents the x, y, z components of the coordinates where the unit of measure is centimeters.
        """
        pass
    @property
    def coordinateCount(self) -> int:
        """
        Returns the number of coordinates defined in the CustomGraphicsCoordinates object.
        """
        return int()
    @property
    def colors(self) -> list[int]:
        """
        Gets and sets the colors associated with the coordinate data. This is used when a mesh is
        displayed using per-vertex coloring.
        The color at each vertex is represented by four values where they are the red, green, blue,
        and alpha values. This should contain the same number of colors as vertices.
        """
        return [int()]
    @colors.setter
    def colors(self, value: list[int]):
        """
        Gets and sets the colors associated with the coordinate data. This is used when a mesh is
        displayed using per-vertex coloring.
        The color at each vertex is represented by four values where they are the red, green, blue,
        and alpha values. This should contain the same number of colors as vertices.
        """
        pass

class CustomGraphicsEntity(core.Base):
    """
    The base class for all visible and selectable custom graphics objects.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomGraphicsEntity:
        return CustomGraphicsEntity()
    def deleteMe(self) -> bool:
        """
        Deletes the entity from the custom graphics group.
        Returns true if the deletion was successful.
        """
        return bool()
    def setOpacity(self, opacity: float, isOverride: bool) -> bool:
        """
        Sets the opacity of the graphics entity. By default, when a new entity is created it is
        completely opaque and does not override the opacity defined by the material.
        opacity : The opacity value where 1.0 is completely opaque and 0.0 is completely transparent.
        isOverride : Indicates if this entity's opacity will override the opacity defined by the material.
        If true, it will override the material opacity and if false the opacity values will
        accumulate.
        Returns true if setting the opacity information was successful.
        """
        return bool()
    def getOpacity(self) -> tuple[bool, float, bool]:
        """
        Gets the opacity of the graphics entity.
        opacity : The opacity value where 1.0 is completely opaque and 0.0 is completely transparent.
        isOverride : Indicates if this entity's opacity will override the opacity defined by the material.
        If true, it will override the material opacity and if false the opacity values will
        accumulate.
        Returns true if getting the opacity information was successful.
        """
        return (bool(), float(), bool())
    @property
    def isVisible(self) -> bool:
        """
        Gets and sets if the graphics entity is visible in the graphics window. By
        default, when a new entity is created it is visible.
        """
        return bool()
    @isVisible.setter
    def isVisible(self, value: bool):
        """
        Gets and sets if the graphics entity is visible in the graphics window. By
        default, when a new entity is created it is visible.
        """
        pass
    @property
    def isSelectable(self) -> bool:
        """
        Gets and sets if the graphics entity is selectable within the graphics window. By
        default, when a new entity is created it is selectable.
        """
        return bool()
    @isSelectable.setter
    def isSelectable(self, value: bool):
        """
        Gets and sets if the graphics entity is selectable within the graphics window. By
        default, when a new entity is created it is selectable.
        """
        pass
    @property
    def transform(self) -> core.Matrix3D:
        """
        Gets and sets the transform associated with the graphics entity. When a new graphics
        entity is created its default transform is an identity matrix which results in the graphics entity
        being displayed in model space using the original coordinate data used to define the entity.
        """
        return core.Matrix3D()
    @transform.setter
    def transform(self, value: core.Matrix3D):
        """
        Gets and sets the transform associated with the graphics entity. When a new graphics
        entity is created its default transform is an identity matrix which results in the graphics entity
        being displayed in model space using the original coordinate data used to define the entity.
        """
        pass
    @property
    def depthPriority(self) -> int:
        """
        Gets and sets the depth priority associated with the graphics entity. The depth priority defines
        how one graphics entity will be drawn with respect to another entity. This is useful when there
        are entities that lie in the same space so it's ambiguous which should be drawn on top of the other. For
        example, if you draw a curve on a planar mesh and want the curve to be completely visible. You can
        set the depth priority of the curve to be greater than the mesh so it will be drawn after the mesh
        and will remain visible.
        
        When a new graphics entity is created its default depth priority is 0.
        """
        return int()
    @depthPriority.setter
    def depthPriority(self, value: int):
        """
        Gets and sets the depth priority associated with the graphics entity. The depth priority defines
        how one graphics entity will be drawn with respect to another entity. This is useful when there
        are entities that lie in the same space so it's ambiguous which should be drawn on top of the other. For
        example, if you draw a curve on a planar mesh and want the curve to be completely visible. You can
        set the depth priority of the curve to be greater than the mesh so it will be drawn after the mesh
        and will remain visible.
        
        When a new graphics entity is created its default depth priority is 0.
        """
        pass
    @property
    def cullMode(self) -> CustomGraphicsCullModes:
        """
        Gets and sets the culling model to use when rendering the entity. Culling is used when the entity contains
        a mesh or B-Rep faces and defines which sides of the mesh or face are rendered. This is primarily used
        for a watertight mesh or solid B-Rep so that the "inside" of the faces is not rendered since it's never
        visible to the user.
        
        When a new graphics entity is created its default cull mode is CustomGraphicsCullBack which will optimize
        the rendering of "solid" meshes so the inside is not rendered.
        """
        return CustomGraphicsCullModes()
    @cullMode.setter
    def cullMode(self, value: CustomGraphicsCullModes):
        """
        Gets and sets the culling model to use when rendering the entity. Culling is used when the entity contains
        a mesh or B-Rep faces and defines which sides of the mesh or face are rendered. This is primarily used
        for a watertight mesh or solid B-Rep so that the "inside" of the faces is not rendered since it's never
        visible to the user.
        
        When a new graphics entity is created its default cull mode is CustomGraphicsCullBack which will optimize
        the rendering of "solid" meshes so the inside is not rendered.
        """
        pass
    @property
    def color(self) -> CustomGraphicsColorEffect:
        """
        Gets and sets the current color definition for this entity. The color of custom graphics can
        be defined in many ways; solid color, simple material, and appearance.
        """
        return CustomGraphicsColorEffect()
    @color.setter
    def color(self, value: CustomGraphicsColorEffect):
        """
        Gets and sets the current color definition for this entity. The color of custom graphics can
        be defined in many ways; solid color, simple material, and appearance.
        """
        pass
    @property
    def parent(self) -> core.Base:
        """
        Returns the parent Component for a top-level group or the CustomGraphicsGroup object for
        graphics entities and child groups.
        """
        return core.Base()
    @property
    def id(self) -> str:
        """
        An id you can specify for the entity. By default, all new graphics entities do not have an id and
        this property will return an empty string. But in cases where entities will be selected, assigning
        an id can make understanding what was selected much easier.
        """
        return str()
    @id.setter
    def id(self, value: str):
        """
        An id you can specify for the entity. By default, all new graphics entities do not have an id and
        this property will return an empty string. But in cases where entities will be selected, assigning
        an id can make understanding what was selected much easier.
        """
        pass
    @property
    def boundingBox(self) -> core.BoundingBox3D:
        """
        Returns a box oriented parallel to the world x-y-z axes that contains the graphics entity.
        Depending on whether the graphics are drawn in model space or screen space this will return
        the bounding box in either centimeters (model) or pixels (screen). In the case where it
        returns the bounding box in pixel space, the Z coordinates of the box will be 0 and can be ignored.
        """
        return core.BoundingBox3D()
    @property
    def billBoarding(self) -> CustomGraphicsBillBoard:
        """
        Gets and sets the billboarding behavior of this custom graphics entity. To define billboarding
        you can set this property using a CustomGraphicsBillBoard objects that you statically create using
        the create method of the CustomGraphicsBillBoard class. To remove billboarding from this entity
        you can set this property to null.
        
        Billboarding is used to specify that the orientation of custom graphics is defined relative to the
        screen instead of model space. This is commonly used for legends and symbols that you want to
        always face the user, even as the camera is rotated.
        """
        return CustomGraphicsBillBoard()
    @billBoarding.setter
    def billBoarding(self, value: CustomGraphicsBillBoard):
        """
        Gets and sets the billboarding behavior of this custom graphics entity. To define billboarding
        you can set this property using a CustomGraphicsBillBoard objects that you statically create using
        the create method of the CustomGraphicsBillBoard class. To remove billboarding from this entity
        you can set this property to null.
        
        Billboarding is used to specify that the orientation of custom graphics is defined relative to the
        screen instead of model space. This is commonly used for legends and symbols that you want to
        always face the user, even as the camera is rotated.
        """
        pass
    @property
    def viewPlacement(self) -> CustomGraphicsViewPlacement:
        """
        Gets and sets the graphics view placement being applied to this graphics entity. A
        CustomGraphicsViewPlacement object can be created using the static create method of the
        class. When assigned to a graphics entity the position of the graphics is defined
        relative to the view in 2D view space (pixels) rather than in 3D model space (centimeters).
        """
        return CustomGraphicsViewPlacement()
    @viewPlacement.setter
    def viewPlacement(self, value: CustomGraphicsViewPlacement):
        """
        Gets and sets the graphics view placement being applied to this graphics entity. A
        CustomGraphicsViewPlacement object can be created using the static create method of the
        class. When assigned to a graphics entity the position of the graphics is defined
        relative to the view in 2D view space (pixels) rather than in 3D model space (centimeters).
        """
        pass
    @property
    def viewScale(self) -> CustomGraphicsViewScale:
        """
        Gets and sets the graphics view scale being applied to this graphics entity. A
        CustomGraphicsViewScale object can be created using the static create method of the
        class. When assigned to a graphics entity the size of the graphics entity is defined
        in view space (pixels) instead of model space (centimeters).
        """
        return CustomGraphicsViewScale()
    @viewScale.setter
    def viewScale(self, value: CustomGraphicsViewScale):
        """
        Gets and sets the graphics view scale being applied to this graphics entity. A
        CustomGraphicsViewScale object can be created using the static create method of the
        class. When assigned to a graphics entity the size of the graphics entity is defined
        in view space (pixels) instead of model space (centimeters).
        """
        pass
    @property
    def name(self) -> str:
        """
        Gets and sets the name displayed when this entity is selected. If no name has been set,
        "Custom Graphics" will be displayed.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name displayed when this entity is selected. If no name has been set,
        "Custom Graphics" will be displayed.
        """
        pass

class CustomGraphicsGroups(core.Base):
    """
    Provides access to a set of graphics groups that are either associated with a component or owned by another
    CustomGraphicsGroup object. This object also supports the creation of new custom graphics groups.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomGraphicsGroups:
        return CustomGraphicsGroups()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> CustomGraphicsGroup:
        return None
    def __iter__(self) -> Iterator[CustomGraphicsGroup]:
        return None
    def item(self, index: int) -> CustomGraphicsGroup:
        """
        Function that returns the specified graphics group 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 CustomGraphicsGroup()
    def add(self) -> CustomGraphicsGroup:
        """
        Creates a new, empty CustomGraphicsGroup.
        Returns the new CustomGraphicsGroup object or null in the case of a failure.
        """
        return CustomGraphicsGroup()
    @property
    def count(self) -> int:
        """
        Returns the number of graphics groups in the collection.
        """
        return int()

class CustomGraphicsViewPlacement(core.Base):
    """
    Positions custom graphics relative to one of the four corners of the view. Graphics positioned
    this way will always appear on top of the model graphics. This is typically used to display
    legends or small interactive tools.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomGraphicsViewPlacement:
        return CustomGraphicsViewPlacement()
    @staticmethod
    def create(anchorPoint: core.Point3D, viewCorner: ViewCorners, viewPoint: core.Point2D) -> CustomGraphicsViewPlacement:
        """
        Creates a new CustomGraphicsViewPlacement object that can be used when setting the viewPlacement property
        of a custom graphics entity to specify the billboarding behavior.
        anchorPoint : The position within the defined graphics that will serve as the anchor. This is the location
        on the graphics that will be positioned at the specified view point.
        viewCorner : Defines which of the four corners of the view the graphics are drawn relative to.
        viewPoint : A 2D point in the view that defines the position of the graphics. This is relative to the corner
        and is in pixels. The x and y directions vary for each of the corners. These directions are only
        used to position the 2D point and do not affect the standard coordinate system the graphics were
        drawn in.
        
        upperLeftViewCorner - The x direction is to the right and y is down.
        
        upperRightViewCorner - The x direction is to the left and y is down.
        
        lowerLeftViewCorner - The x direction is to the right and y is up.
        
        lowerRightViewCorner - The x direction is to the left and y is up.
        Returns the newly created CustomGraphicsViewPlacement object or null in the case of failure. This can then
        be assigned to any custom graphics entity using its viewPlacement property.
        """
        return CustomGraphicsViewPlacement()
    @property
    def anchorPoint(self) -> core.Point3D:
        """
        Gets and sets the position within the defined graphics that serves as the anchor. This is the location
        on the graphics that is positioned at the specified view point.
        """
        return core.Point3D()
    @anchorPoint.setter
    def anchorPoint(self, value: core.Point3D):
        """
        Gets and sets the position within the defined graphics that serves as the anchor. This is the location
        on the graphics that is positioned at the specified view point.
        """
        pass
    @property
    def viewPoint(self) -> core.Point2D:
        """
        A 2D point in the view that defines the position of the graphics. This is relative to the corner
        and is in pixels. The x and y directions vary for each of the corners. These directions are only
        used to position the 2D point and do not affect the standard coordinate system the graphics were
        drawn in.
        
        upperLeftViewCorner - The x direction is to the right and y is down.
        
        upperRightViewCorner - The x direction is to the left and y is down.
        
        lowerLeftViewCorner - The x direction is to the right and y is up.
        
        lowerRightViewCorner - The x direction is to the left and y is up.
        """
        return core.Point2D()
    @viewPoint.setter
    def viewPoint(self, value: core.Point2D):
        """
        A 2D point in the view that defines the position of the graphics. This is relative to the corner
        and is in pixels. The x and y directions vary for each of the corners. These directions are only
        used to position the 2D point and do not affect the standard coordinate system the graphics were
        drawn in.
        
        upperLeftViewCorner - The x direction is to the right and y is down.
        
        upperRightViewCorner - The x direction is to the left and y is down.
        
        lowerLeftViewCorner - The x direction is to the right and y is up.
        
        lowerRightViewCorner - The x direction is to the left and y is up.
        """
        pass
    @property
    def viewCorner(self) -> ViewCorners:
        """
        Gets and sets which corner the graphics are positioned relative to.
        """
        return ViewCorners()
    @viewCorner.setter
    def viewCorner(self, value: ViewCorners):
        """
        Gets and sets which corner the graphics are positioned relative to.
        """
        pass

class CustomGraphicsViewScale(core.Base):
    """
    Specifies that custom graphics are to be scaled relative to the view (pixels) and not model space.
    If this is applied to some custom graphics then they will stay the same size on the screen regardless
    of the user zooming in or out. This is commonly used for glyphs and other interactive widgets so they don't
    get too large or too small.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomGraphicsViewScale:
        return CustomGraphicsViewScale()
    @staticmethod
    def create(pixelScale: float, anchorPoint: core.Point3D) -> CustomGraphicsViewScale:
        """
        Creates a new CustomGraphicsViewScale object that can be used when setting the viewScale property
        of a custom graphics entity to specify the scaling behavior.
        pixelScale : Defines the scale of the custom graphics relative to the view. If a custom graphics line is defined
        to be 100 units long it would usually display as 100 cm long. When it is view scaled with a pixel scale of
        1 it will display as 100 pixels long.
        anchorPoint : Defines the point in the graphics that defines the origin of the scaling. The graphics will be scaled
        up or down relative to that point.
        Returns the newly created CustomGraphicsViewScale object or null in the case of failure. This can then
        be assigned to any custom graphics entity using its viewScale property.
        """
        return CustomGraphicsViewScale()
    @property
    def pixelScale(self) -> float:
        """
        Gets and sets the scale of the custom graphics relative to the view. If a custom graphics line is defined
        to be 100 units long it would usually display as 100 cm long. When it is view scaled with a pixel scale of
        1 it will display as 100 pixels long.
        """
        return float()
    @pixelScale.setter
    def pixelScale(self, value: float):
        """
        Gets and sets the scale of the custom graphics relative to the view. If a custom graphics line is defined
        to be 100 units long it would usually display as 100 cm long. When it is view scaled with a pixel scale of
        1 it will display as 100 pixels long.
        """
        pass
    @property
    def anchorPoint(self) -> core.Point3D:
        """
        Gets and sets the point in the graphics that defines the origin of the scaling. The graphics will be scaled
        up or down relative to that point.
        """
        return core.Point3D()
    @anchorPoint.setter
    def anchorPoint(self, value: core.Point3D):
        """
        Gets and sets the point in the graphics that defines the origin of the scaling. The graphics will be scaled
        up or down relative to that point.
        """
        pass

class CustomNamedValues(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    A collection of named values. The values are strings that Fusion stores but can be
    anything you choose. If you have several things you need to save you can choose to
    combine the data into a JSON or XML representation and save it as a single custom value
    or create a new custom value or each unique value you want to store. Fusion doesn't care
    what the value is or what it represents but only saves and provides access to it.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomNamedValues:
        return CustomNamedValues()
    def __len__(self) -> int:
        return 0
    def addOrSetValue(self, id: str, value: str) -> bool:
        """
        Adds or updates a value. If the specified ID does not exist, a new named value is
        added. If the ID does exist, the named value is updated with the specified value.
        id : The ID of the value to create or change.
        value : The string to assign to the value.
        Returns true is successful and false if it failed.
        """
        return bool()
    def isExistingValue(self, id: str) -> bool:
        """
        Function that returns if a value with the specified ID exists or not.
        id : The ID of the value to check if it exists.
        Returns true if a value with the ID exists.
        """
        return bool()
    def value(self, id: str) -> str:
        """
        Function that returns the specified value given its ID.
        id : The ID of the value, which was assigned when the value was created.
        Returns the value or an empty string if the specified ID was not found.
        """
        return str()
    def idByIndex(self, index: int) -> str:
        """
        Function that returns the name of a value specified by its index.
        index : The index of the item within the collection to return the name of. The first item in the collection has an index of 0
        and the last item is the count of this collection minus 1.
        Returns the ID of the specified item or asserts if an out of bounds index is used.
        """
        return str()
    def remove(self, id: str) -> bool:
        """
        Removes the specified value from the collection.
        id : The ID of the value to remove.
        Returns true if the value was successfully removed and false if it failed.
        Failure is typically because the specified ID does not exist within the collection.
        """
        return bool()
    @property
    def count(self) -> int:
        """
        The number of values in the collection.
        """
        return int()

class CutPasteBodies(core.Base):
    """
    Collection that provides access to all of the existing cut-paste features in a design.
    These are created in the UI by cutting and then pasting a B-Rep body.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CutPasteBodies:
        return CutPasteBodies()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> CutPasteBody:
        return None
    def __iter__(self) -> Iterator[CutPasteBody]:
        return None
    def item(self, index: int) -> CutPasteBody:
        """
        Function that returns the specified Cut/Paste Body feature 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 CutPasteBody()
    def itemByName(self, name: str) -> CutPasteBody:
        """
        Function that returns the specified Cut/Paste Body feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return CutPasteBody()
    def add(self, sourceBody: core.Base) -> CutPasteBody:
        """
        Cuts and copies the specified body into the component that owns this CutPasteBodies collection.
        This is effectively the equivalent of moving a body.
        sourceBody : Either an ObjectCollection of BRepBodies or a single BRepBody object to cut.
        Returns the newly created BRepBody object or null in the case of failure.
        """
        return CutPasteBody()
    @property
    def count(self) -> int:
        """
        The number of Cut/Paste Body features in the collection.
        """
        return int()

class CylinderFeatures(core.Base):
    """
    Collection that provides access to all of the existing cylinder features in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CylinderFeatures:
        return CylinderFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> CylinderFeature:
        return None
    def __iter__(self) -> Iterator[CylinderFeature]:
        return None
    def item(self, index: int) -> CylinderFeature:
        """
        Function that returns the specified cylinder feature 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 CylinderFeature()
    def itemByName(self, name: str) -> CylinderFeature:
        """
        Function that returns the specified cylinder feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return CylinderFeature()
    @property
    def count(self) -> int:
        """
        The number of cylinder features in the collection.
        """
        return int()

class Decal(core.Base):
    """
    Represents a Decal within a component.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Decal:
        return Decal()
    def deleteMe(self) -> bool:
        """
        Deletes the decal from the component.
        """
        return bool()
    def saveImage(self, filename: str) -> bool:
        """
        Saves the image associated with the decal to the specified file. This is useful in
        cases where the original image file is no longer available but you need the image
        for some other purpose.
        filename : The full filename of the image to save, including the extension of the file, which
        controls what format the image file will be. If the file extension is other than png, jpg,
        or tiff, then by default a png extension will be added to the filename.
        This method will fail if a file with the specified filename already exists.
        If you want to overwrite the file, you'll need to delete it first before
        calling this method.
        Returns true if writing the file was successful.
        """
        return bool()
    def redefine(self, position: core.Matrix3D, faces: list[BRepFace], isChainFaces: bool) -> bool:
        """
        Redefines the position, orientation, and how the decal is applied to the body.
        
        To call this method, you need to position the timeline marker to immediately before this decal.
        This can be accomplished using the following code: thisDecal.timelineObject.rollTo(True)
        position : Defines the position, rotation, scaling, and flipping of the decal. The input 3D matrix defines a
        3D coordinate system in model space. The origin of the matrix defines the center of the decal and must
        lie somewhere on the first face. The Z-axis of the matrix should be the same as the normal of the face at the
        origin. The X and Y axes define the orientation of the decal and must be both perpendicular to
        the Z axis and each other. Reversing the direction of the X or Y axis will flip the decal in that
        direction. The magnitude of the X and Y axes controls the scale, and the scale can be non-uniform,
        meaning the length of the X and Y vectors do not need to be the same.
        faces : Defines the face where the decal will be placed. The first face in the array is the primary face, which
        is where the position point must be on. If the isChainFaces argument is true, only the primary face is needed
        and it will be used to define the position and orientation of the decal and the decal can wrap onto all the
        faces of the body. If the isChainFaces argument is false, the decal can only be applied to the specified
        faces with the first face in the array being used as the primary face.
        isChainFaces : If true, only one face is needed and the decal wraps onto all the faces of the body.
        If false, the decal can only be applied to the specified faces with the first face being used to calculate
        the position and orientation.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> Decal:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return Decal()
    @property
    def name(self) -> str:
        """
        Gets and sets the name of the decal. This is the name seen in the browser and timeline.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name of the decal. This is the name seen in the browser and timeline.
        """
        pass
    @property
    def faces(self) -> list[BRepFace]:
        """
        Gets the faces the decal is associated with. Typically, this is an array containing a single
        face. If the isChainFaces property is true, this will return the primary
        face. If the isChainFaces property is false, the decal is limited to the faces in this
        list.
        
        If multiple faces have been provided, the first face in the list is the
        primary face, which is used to position and orient the decal.
        
        To set the faces, use the redefine method.
        """
        return [BRepFace()]
    @property
    def opacity(self) -> float:
        """
        Gets and sets the opacity of the decal where 0 is completely transparent and 1.0 is completely
        opaque. Setting this property to a value outside the range of 0-1 will result in the value
        being set to the closest valid value.
        
        Defaults to 1.0 when the input is created.
        """
        return float()
    @opacity.setter
    def opacity(self, value: float):
        """
        Gets and sets the opacity of the decal where 0 is completely transparent and 1.0 is completely
        opaque. Setting this property to a value outside the range of 0-1 will result in the value
        being set to the closest valid value.
        
        Defaults to 1.0 when the input is created.
        """
        pass
    @property
    def isChainFaces(self) -> bool:
        """
        Returns if the decal is limited to a specified set of faces or wraps onto all faces in the body. If this
        property is True, a single face has been specified and the decal can wrap onto other faces of the body.
        If False, the decal is limited to the set of specified faces.
        
        To change this setting, use the redefine method.
        """
        return bool()
    @property
    def isVisible(self) -> bool:
        """
        Returns if the decal is currently visible in the graphics window. The isLightBulbOn
        property of the decal controls if the decal should be displayed or not, but even
        when true, the decal may not be visible because the occurrence that references the
        component may not be visible. It's also possible to turn off the visibility of all the
        decals in a component. This property takes all of that into account when reporting
        if the decal is visible or not.
        """
        return bool()
    @property
    def imageFilename(self) -> str:
        """
        Gets and sets the filename of the image used for the decal. When getting this property,
        the filename returned is the file that was used when the decal was initially created.
        It's possible the file may no longer exist.
        
        When setting this property, it is the full filename to the image to use for the decal.
        PNG, JPEG, and TIFF files are supported.
        """
        return str()
    @imageFilename.setter
    def imageFilename(self, value: str):
        """
        Gets and sets the filename of the image used for the decal. When getting this property,
        the filename returned is the file that was used when the decal was initially created.
        It's possible the file may no longer exist.
        
        When setting this property, it is the full filename to the image to use for the decal.
        PNG, JPEG, and TIFF files are supported.
        """
        pass
    @property
    def transform(self) -> core.Matrix3D:
        """
        Gets the transform of the decal. The returned matrix defines the position, rotation,
        scaling, and flipping. This is done by providing a 3D matrix which defines a 3D coordinate system
        in model space. The origin of the matrix defines the center of the decal and must lie somewhere on
        the first face. The normal of the face defines the Z axis of the matrix and the X and Y axes
        define the orientation of the decal and must be both perpendicular to the Z axis and to each other.
        Reversing the direction of the X or Y axis will flip the decal in that direction. The magnitude
        of the X and Y axes controls the scale and the scale can be non-uniform, meaning the length of
        the X and Y vectors do not need to be the same.
        
        To set the transform, use the redefine method.
        """
        return core.Matrix3D()
    @property
    def isLightBulbOn(self) -> bool:
        """
        Gets and sets if the light bulb of this decal as displayed in the browser is on or off.
        
        A decal will only be visible if the light bulb is switched on. However, the light bulb
        can be on and the decal still invisible if the visibility of a higher level occurrence
        has its light bulb off or if the light bulb for the Decals folder is off to turn off all
        decals in a component.
        """
        return bool()
    @isLightBulbOn.setter
    def isLightBulbOn(self, value: bool):
        """
        Gets and sets if the light bulb of this decal as displayed in the browser is on or off.
        
        A decal will only be visible if the light bulb is switched on. However, the light bulb
        can be on and the decal still invisible if the visibility of a higher level occurrence
        has its light bulb off or if the light bulb for the Decals folder is off to turn off all
        decals in a component.
        """
        pass
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the Decal object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same Decal.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as a way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        """
        return str()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this object
        in an assembly. This is only valid in the case where this is acting
        as a proxy in an assembly. Returns null in the case where the object
        is not in the context of an assembly but is already the native object.
        """
        return Occurrence()
    @property
    def nativeObject(self) -> Decal:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return Decal()
    @property
    def timelineObject(self) -> TimelineObject:
        """
        Returns the timeline object associated with the creation of this decal.
        """
        return TimelineObject()
    @property
    def isDerived(self) -> bool:
        """
        Returns if this decal is derived from another design. If true, the decal cannot be deleted.
        You should not attempt to make any edits to the derived decal. Any edits made to this derived decal will be lost when the derive updates.
        """
        return bool()
    @property
    def deriveFeature(self) -> DeriveFeature:
        """
        Returns the DeriveFeature if this decal is derived from another design.
        This property returns null if the decal is not derived from another design (i.e. isDerived property returns false).
        """
        return DeriveFeature()

class DecalInput(core.Base):
    """
    The DecalInput object is used to define the various options when creating a new decal. It's created
    using the Decals.createInput method and is used by the Decals.add method to create a Decal.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> DecalInput:
        return DecalInput()
    @property
    def faces(self) -> list[BRepFace]:
        """
        Gets and sets the faces the decal will be associated with. Typically, this will be an array containing
        a single face and the isChainFaces property on the input will be true. The position and orientation of
        the decal is based on this face and the decal can wrap onto other faces in the body.
        
        If the isChainFaces property is false, the decal will only be applied to the provided faces where the
        first face is used to calculate the position and orientation of the decal.
        """
        return [BRepFace()]
    @faces.setter
    def faces(self, value: list[BRepFace]):
        """
        Gets and sets the faces the decal will be associated with. Typically, this will be an array containing
        a single face and the isChainFaces property on the input will be true. The position and orientation of
        the decal is based on this face and the decal can wrap onto other faces in the body.
        
        If the isChainFaces property is false, the decal will only be applied to the provided faces where the
        first face is used to calculate the position and orientation of the decal.
        """
        pass
    @property
    def opacity(self) -> float:
        """
        Gets and sets the opacity of the decal where 0 is completely transparent and 1.0 is completely
        opaque. Setting this property to a value outside the range of 0-1 will result in the value
        being set to the closest valid value.
        
        Defaults to 1.0 when the input is created.
        """
        return float()
    @opacity.setter
    def opacity(self, value: float):
        """
        Gets and sets the opacity of the decal where 0 is completely transparent and 1.0 is completely
        opaque. Setting this property to a value outside the range of 0-1 will result in the value
        being set to the closest valid value.
        
        Defaults to 1.0 when the input is created.
        """
        pass
    @property
    def isChainFaces(self) -> bool:
        """
        Controls if the decal will wrap onto the faces that connect to the face the decal is placed on. When this
        is true, the list of faces should contain only one face.
        
        Defaults to true when the input is created.
        """
        return bool()
    @isChainFaces.setter
    def isChainFaces(self, value: bool):
        """
        Controls if the decal will wrap onto the faces that connect to the face the decal is placed on. When this
        is true, the list of faces should contain only one face.
        
        Defaults to true when the input is created.
        """
        pass
    @property
    def imageFilename(self) -> str:
        """
        Gets and sets the filename of the image used for the decal.
        
        When setting this property, it is the full filename to the image to use for the decal.
        PNG, JPG, and TIFF files are supported.
        """
        return str()
    @imageFilename.setter
    def imageFilename(self, value: str):
        """
        Gets and sets the filename of the image used for the decal.
        
        When setting this property, it is the full filename to the image to use for the decal.
        PNG, JPG, and TIFF files are supported.
        """
        pass
    @property
    def transform(self) -> core.Matrix3D:
        """
        Gets and sets the transform of the decal. This controls the position, rotation,
        scaling, and flipping. This is done by providing a 3D matrix that defines a 3D coordinate system
        in model space. The origin of the matrix defines the center of the decal and must lie somewhere
        on the first face. The Z-axis of the matrix should be the same as the normal of the face at the
        origin. The X and Y axes define the orientation of the decal and must be both perpendicular to
        the Z and each other. Reversing the direction of the X or Y axis will flip the decal in that
        direction. The magnitude of the X and Y axes controls the scale, and the scale can be non-uniform,
        meaning the length of the X and Y vectors do not need to be the same.
        """
        return core.Matrix3D()
    @transform.setter
    def transform(self, value: core.Matrix3D):
        """
        Gets and sets the transform of the decal. This controls the position, rotation,
        scaling, and flipping. This is done by providing a 3D matrix that defines a 3D coordinate system
        in model space. The origin of the matrix defines the center of the decal and must lie somewhere
        on the first face. The Z-axis of the matrix should be the same as the normal of the face at the
        origin. The X and Y axes define the orientation of the decal and must be both perpendicular to
        the Z and each other. Reversing the direction of the X or Y axis will flip the decal in that
        direction. The magnitude of the X and Y axes controls the scale, and the scale can be non-uniform,
        meaning the length of the X and Y vectors do not need to be the same.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class Decals(core.Base):
    """
    Provides access to the Decals in a component and provides the functionality
    to add new Decals.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Decals:
        return Decals()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> Decal:
        return None
    def __iter__(self) -> Iterator[Decal]:
        return None
    def item(self, index: int) -> Decal:
        """
        Returns the specified Decal 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 Decal()
    def itemByName(self, name: str) -> Decal:
        """
        Returns the specified decal using the name of the decal.
        name : The name of the decal as seen in the browser and timeline.
        Returns the specified Decal object, if it exists. Otherwise it returns null.
        """
        return Decal()
    def add(self, input: DecalInput) -> Decal:
        """
        Creates a new decal. Use the createInput method to first create an input object and
        set the available options. Then, pass that input object to the add method to create the decal.
        input : The DecalInput object that defines the required information needed to create a new decal.
        
        A DecalInput object is the logical equivalent to the Decal command dialog by providing access to
        all the decal options. Passing in the DecalInput object to the add method is the equivalent of
        clicking the OK button on the dialog to create the decal.
        Returns the newly created Decal object.
        """
        return Decal()
    def createInput(self, imageFilename: str, faces: list[BRepFace], point: core.Point3D) -> DecalInput:
        """
        Creates a new DecalInput object. A DecalInput object is the logical equivalent to the Decal
        command dialog by providing access to all the decal options. Passing in the DecalInput object
        to the add method is the equivalent of clicking the OK button on the dialog to create the decal.
        imageFilename : The full filename to the image to use for the decal. PNG, JPEG, and TIFF files are supported.
        faces : Specifies the faces the decal will be associated with. Typically, this will be an array containing
        a single face. If the isChainFaces property on the input is true, only a single face is needed,
        and the rest of the faces in the body will automatically be used. If the isChainFaces property is
        false, this defines a subset of faces in the body to which the decal will be applied.
        
        If multiple faces are provided, the first face in the array is used to position and orient the
        decal. The position and orientation are relative to the first face. Any additional faces should
        connect directly or indirectly through other connected faces to the first face.
        point : Specifies a point on the first face that defines the center position of the decal.
        Returns a DecalInput object or null in the case of failure.
        """
        return DecalInput()
    @property
    def count(self) -> int:
        """
        Returns the number of decals in the component.
        """
        return int()

class DeleteFaceFeatures(core.Base):
    """
    Collection that provides access to all of the existing DeleteFaceFeature features in a component
    and supports the ability to create new DeleteFaceFeature features.
    
    The SurfaceDeleteFaceFeature and DeleteFaceFeature differ in that the SurfaceDeleteFaceFeature
    can delete any face without any restrictions. If the body is a solid, it will become a surface
    when the first face is deleted. The specified face is deleted without any other changes being
    made to the body. The DeleteFaceFeature deletes the specified face and also modifies the other faces
    in the body to heal or fill in the area of the deleted face. This means that a solid body will
    remain solid.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> DeleteFaceFeatures:
        return DeleteFaceFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> DeleteFaceFeature:
        return None
    def __iter__(self) -> Iterator[DeleteFaceFeature]:
        return None
    def item(self, index: int) -> DeleteFaceFeature:
        """
        Function that returns the specified DeleteFaceFeature 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 DeleteFaceFeature()
    def itemByName(self, name: str) -> DeleteFaceFeature:
        """
        Function that returns the specified DeleteFaceFeature object using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return DeleteFaceFeature()
    def add(self, facesToDelete: core.Base) -> DeleteFaceFeature:
        """
        Creates a new SurfaceDeleteFace feature. This deletes the specified faces
        from their bodies and attempts to heal the body. The method will fail if
        the body cannot be healed. This is equivalent to selecting and deleting
        faces when in the Patch workspace.
        facesToDelete : A single BRepFace or an ObjectCollection containing multiple BRepFace objects.
        Returns the newly created DeleteFaceFeature object or null if the creation failed.
        """
        return DeleteFaceFeature()
    @property
    def count(self) -> int:
        """
        The number of DeleteFaceFeature objects in the collection.
        """
        return int()

class DeriveFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a derive feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> DeriveFeatureInput:
        return DeriveFeatureInput()
    @property
    def sourceDesign(self) -> Design:
        """
        The Design that is obtained from the input DataFile. You can use the API to access various elements within the
        design to add them to the list of elements to be derived.
        """
        return Design()
    @property
    def sourceEntities(self) -> list[core.Base]:
        """
        The array of entities that will be derived. These can be any entity that is supported by derive.
        For example, BRepBody, MeshBody, Sketch, ConstructionPlane, Occurrence, Component(rootComponent), FlatPattern, Canvas etc.
        """
        return [core.Base()]
    @sourceEntities.setter
    def sourceEntities(self, value: list[core.Base]):
        """
        The array of entities that will be derived. These can be any entity that is supported by derive.
        For example, BRepBody, MeshBody, Sketch, ConstructionPlane, Occurrence, Component(rootComponent), FlatPattern, Canvas etc.
        """
        pass
    @property
    def excludedEntities(self) -> list[core.Base]:
        """
        The array of entities that will be excluded from the sourceEntities. These can be any entity that is supported by derive.
        For example, BRepBody, MeshBody, Sketch, ConstructionPlane, Occurrence, Component(rootComponent), FlatPattern, Canvas etc.
        """
        return [core.Base()]
    @excludedEntities.setter
    def excludedEntities(self, value: list[core.Base]):
        """
        The array of entities that will be excluded from the sourceEntities. These can be any entity that is supported by derive.
        For example, BRepBody, MeshBody, Sketch, ConstructionPlane, Occurrence, Component(rootComponent), FlatPattern, Canvas etc.
        """
        pass
    @property
    def isIncludeFavoriteParameters(self) -> bool:
        """
        Gets or sets whether favorite parameters in the source design are derived or not.
        """
        return bool()
    @isIncludeFavoriteParameters.setter
    def isIncludeFavoriteParameters(self, value: bool):
        """
        Gets or sets whether favorite parameters in the source design are derived or not.
        """
        pass
    @property
    def isIncludeComponentParameters(self) -> bool:
        """
        Gets or sets whether all feature parameters from all selected components
        from the source design are derived or not.
        """
        return bool()
    @isIncludeComponentParameters.setter
    def isIncludeComponentParameters(self, value: bool):
        """
        Gets or sets whether all feature parameters from all selected components
        from the source design are derived or not.
        """
        pass
    @property
    def isPlaceObjectsAtOrigin(self) -> bool:
        """
        Gets or sets whether to place all derived objects at the origin in
        the destination design or not.
        """
        return bool()
    @isPlaceObjectsAtOrigin.setter
    def isPlaceObjectsAtOrigin(self, value: bool):
        """
        Gets or sets whether to place all derived objects at the origin in
        the destination design or not.
        """
        pass

class DeriveFeatures(core.Base):
    """
    Collection that provides access to all of the existing derive features in a component
    and supports the ability to create new derive features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> DeriveFeatures:
        return DeriveFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> DeriveFeature:
        return None
    def __iter__(self) -> Iterator[DeriveFeature]:
        return None
    def item(self, index: int) -> DeriveFeature:
        """
        Function that returns the specified derive feature 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 DeriveFeature()
    def createInput(self, sourceDesign: Design) -> DeriveFeatureInput:
        """
        Creates a DeriveFeatureInput object. Use properties and methods on this object
        to define the derive you want to create and then use the Add method, passing in
        the DeriveFeatureInput object.
        sourceDesign : The Design that will be derived.
        Returns a DeriveFeatureInput or null if the creation failed.
        """
        return DeriveFeatureInput()
    def add(self, input: DeriveFeatureInput) -> DeriveFeature:
        """
        Creates a new derive feature.
        input : A DeriveFeatureInput object that defines the desired derive. Use the createInput method
        to create a new DeriveFeatureInput object and then use methods on it to define the derive.
        Returns the newly created DeriveFeature object or null if the creation failed.
        """
        return DeriveFeature()
    def itemByName(self, name: str) -> DeriveFeature:
        """
        Function that returns the specified derive feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return DeriveFeature()
    @property
    def count(self) -> int:
        """
        The number of derive features in the collection.
        """
        return int()

class DraftAnalyses(core.Base):
    """
    Provides access to any draft analyses results in the design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> DraftAnalyses:
        return DraftAnalyses()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> DraftAnalysis:
        return None
    def __iter__(self) -> Iterator[DraftAnalysis]:
        return None
    def item(self, index: int) -> DraftAnalysis:
        """
        A method that returns the specified DraftAnalysis 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 DraftAnalysis()
    def itemByName(self, name: str) -> DraftAnalysis:
        """
        A method that returns the specified DraftAnalysis object using the name of the analysis
        as displayed in the browser.
        name : The name of the DraftAnalysis object as displayed in the browser.
        Returns the specified item or null if an invalid name was specified.
        """
        return DraftAnalysis()
    @property
    def count(self) -> int:
        """
        Returns the number of DraftAnalysis objects in the collection.
        """
        return int()

class DraftFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a draft
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> DraftFeatureInput:
        return DraftFeatureInput()
    def setSingleAngle(self, isSymmetric: bool, angle: core.ValueInput) -> bool:
        """
        Defines the draft to be defined so that a single angle is used for all drafts.
        If the isSymmetric is true then the faces are split along the parting plane and drafted
        independently using the same angle.
        isSymmetric : Set to true if the faces are to be split along the plane or parting line and drafted symmetrically. This
        will have the side effect of setting the isSymmetric property to the same value.
        angle : The ValueInput object that defines the angle of the draft. This can be a positive or negative
        value which will affect the direction of the draft along with the isDirectionFlipped property.
        Returns true if successful
        """
        return bool()
    def setTwoAngles(self, angleOne: core.ValueInput, angleTwo: core.ValueInput) -> bool:
        """
        Defines both angles to use when the surfaces are split along the draft plane or parting line and
        the faces on each side of the plane are drafted independently.
        angleOne : The ValueInput object that defines the angle for the faces on the first side of the draft plane
        or parting line.
        angleTwo : The ValueInput object that defines the angle for the faces on the second side of the draft plane
        or parting line.
        Returns true if successful
        """
        return bool()
    @property
    def inputFaces(self) -> list[BRepFace]:
        """
        Gets and sets the input faces.
        If IsTangentChain is true, all the faces that are tangentially connected to the input faces (if any) will also be included.
        """
        return [BRepFace()]
    @inputFaces.setter
    def inputFaces(self, value: list[BRepFace]):
        """
        Gets and sets the input faces.
        If IsTangentChain is true, all the faces that are tangentially connected to the input faces (if any) will also be included.
        """
        pass
    @property
    def plane(self) -> core.Base:
        """
        Gets and sets the plane that defines the direction in which the draft is applied. This is also referred to
        as the pull direction. This can be defined using either a planar BRepFace or a ConstructionPlane.
        """
        return core.Base()
    @plane.setter
    def plane(self, value: core.Base):
        """
        Gets and sets the plane that defines the direction in which the draft is applied. This is also referred to
        as the pull direction. This can be defined using either a planar BRepFace or a ConstructionPlane.
        """
        pass
    @property
    def isTangentChain(self) -> bool:
        """
        Gets and sets if any faces that are tangentially connected to any of
        the input faces will also be included in setting InputEntities. It defaults to true.
        """
        return bool()
    @isTangentChain.setter
    def isTangentChain(self, value: bool):
        """
        Gets and sets if any faces that are tangentially connected to any of
        the input faces will also be included in setting InputEntities. It defaults to true.
        """
        pass
    @property
    def isDirectionFlipped(self) -> bool:
        """
        Gets and sets if the direction of the draft is flipped. This defaults to false.
        """
        return bool()
    @isDirectionFlipped.setter
    def isDirectionFlipped(self, value: bool):
        """
        Gets and sets if the direction of the draft is flipped. This defaults to false.
        """
        pass
    @property
    def angleOne(self) -> core.ValueInput:
        """
        Gets the first, or the only angle in the case of a single angle definition.
        """
        return core.ValueInput()
    @property
    def angleTwo(self) -> core.ValueInput:
        """
        Gets the second angle. This can be null in the case where a single angle definition is used.
        """
        return core.ValueInput()
    @property
    def isSymmetric(self) -> bool:
        """
        Gets if the draft is symmetric from the draft plane. This only applies in the case where two
        angles have been specified and should be ignored otherwise.
        """
        return bool()
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class DraftFeatures(core.Base):
    """
    Collection that provides access to all of the existing draft features in a component
    and supports the ability to create new draft features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> DraftFeatures:
        return DraftFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> DraftFeature:
        return None
    def __iter__(self) -> Iterator[DraftFeature]:
        return None
    def item(self, index: int) -> DraftFeature:
        """
        Function that returns the specified draft feature 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 DraftFeature()
    def createInput(self, inputFaces: list[BRepFace], plane: core.Base, isTangentChain: bool = True) -> DraftFeatureInput:
        """
        Creates a DraftFeatureInput object. Use properties and methods on this object
        to define the draft you want to create and then use the Add method, passing in
        the DraftFeatureInput object.
        inputFaces : BRepFace array that contains the faces to which draft will be applied.
        The picked point on face is always the point returned from pointOnFace property of the first BRepFace in this collection.
        plane : Input object that defines the direction in which the draft is applied. This can be a planar BrepFace, or a ConstructionPlane.
        isTangentChain : A boolean value for setting whether or not faces that are tangentially connected to
        any of the input faces (if any) will also be included. It defaults to true.
        Returns the newly created DraftFeatureInput object or null if the creation failed.
        """
        return DraftFeatureInput()
    def add(self, input: DraftFeatureInput) -> DraftFeature:
        """
        Creates a new draft feature.
        input : A DraftFeatureInput object that defines the desired draft. Use the createInput
        method to create a new DraftFeatureInput object and then use methods on it
        (the DraftFeatureInput object) to define the draft.
        Returns the newly created DraftFeature object or null if the creation failed.
        """
        return DraftFeature()
    def itemByName(self, name: str) -> DraftFeature:
        """
        Function that returns the specified draft feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return DraftFeature()
    @property
    def count(self) -> int:
        """
        The number of draft features in the collection.
        """
        return int()

class EmbossFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of an emboss feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> EmbossFeatureInput:
        return EmbossFeatureInput()
    @property
    def profiles(self) -> list[core.Base]:
        """
        Gets and sets an array of Profile objects that define the shape of the emboss.
        The profile argument can be Profile and SketchText objects.
        When multiple objects are used, all profiles and sketch texts must be co-planar.
        """
        return [core.Base()]
    @profiles.setter
    def profiles(self, value: list[core.Base]):
        """
        Gets and sets an array of Profile objects that define the shape of the emboss.
        The profile argument can be Profile and SketchText objects.
        When multiple objects are used, all profiles and sketch texts must be co-planar.
        """
        pass
    @property
    def inputFaces(self) -> list[BRepFace]:
        """
        Gets and sets an array of BRepFace objects that define the faces the emboss will be performed on. By default,
        faces that are tangent to any of the input faces are also used. Use the isTangentChain property of the
        EmbossFeatureInput object to disable the use of tangent faces. If multiple inputFaces are provided, they must
        all be on the same body.
        """
        return [BRepFace()]
    @inputFaces.setter
    def inputFaces(self, value: list[BRepFace]):
        """
        Gets and sets an array of BRepFace objects that define the faces the emboss will be performed on. By default,
        faces that are tangent to any of the input faces are also used. Use the isTangentChain property of the
        EmbossFeatureInput object to disable the use of tangent faces. If multiple inputFaces are provided, they must
        all be on the same body.
        """
        pass
    @property
    def isTangentChain(self) -> bool:
        """
        Gets and sets whether any faces that are tangentially connected to any of the input faces will
        also be used. By default this property is true.
        """
        return bool()
    @isTangentChain.setter
    def isTangentChain(self, value: bool):
        """
        Gets and sets whether any faces that are tangentially connected to any of the input faces will
        also be used. By default this property is true.
        """
        pass
    @property
    def depth(self) -> core.ValueInput:
        """
        Gets and sets the ValueInput object that defines the depth of the emboss. A positive value results in the emboss
        protruding out of the body and the negative value results in the emboss going into the body.
        """
        return core.ValueInput()
    @depth.setter
    def depth(self, value: core.ValueInput):
        """
        Gets and sets the ValueInput object that defines the depth of the emboss. A positive value results in the emboss
        protruding out of the body and the negative value results in the emboss going into the body.
        """
        pass
    @property
    def horizontalDistance(self) -> core.ValueInput:
        """
        Gets and sets the horizontal offset distance. This defaults to zero.
        """
        return core.ValueInput()
    @horizontalDistance.setter
    def horizontalDistance(self, value: core.ValueInput):
        """
        Gets and sets the horizontal offset distance. This defaults to zero.
        """
        pass
    @property
    def verticalDistance(self) -> core.ValueInput:
        """
        Gets and sets the vertical offset distance. This defaults to zero.
        """
        return core.ValueInput()
    @verticalDistance.setter
    def verticalDistance(self, value: core.ValueInput):
        """
        Gets and sets the vertical offset distance. This defaults to zero.
        """
        pass
    @property
    def rotationAngle(self) -> core.ValueInput:
        """
        Gets and sets the rotation angle. This defaults to zero.
        """
        return core.ValueInput()
    @rotationAngle.setter
    def rotationAngle(self, value: core.ValueInput):
        """
        Gets and sets the rotation angle. This defaults to zero.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass
    @property
    def creationOccurrence(self) -> Occurrence:
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the emboss feature is created based on geometry (e.g. a profile and/or face(s))
        in another component AND (the emboss feature) is not in the root component.
        The creationOccurrence is analogous to the active occurrence in the UI
        """
        return Occurrence()
    @creationOccurrence.setter
    def creationOccurrence(self, value: Occurrence):
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the emboss feature is created based on geometry (e.g. a profile and/or face(s))
        in another component AND (the emboss feature) is not in the root component.
        The creationOccurrence is analogous to the active occurrence in the UI
        """
        pass

class EmbossFeatures(core.Base):
    """
    Collection that provides access to all of the existing emboss features in a component
    and supports the ability to create new emboss features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> EmbossFeatures:
        return EmbossFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> EmbossFeature:
        return None
    def __iter__(self) -> Iterator[EmbossFeature]:
        return None
    def item(self, index: int) -> EmbossFeature:
        """
        Function that returns the specified emboss feature 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 EmbossFeature()
    def itemByName(self, name: str) -> EmbossFeature:
        """
        Function that returns the specified emboss feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return EmbossFeature()
    def createInput(self, profiles: list[core.Base], faces: list[BRepFace], depth: core.ValueInput) -> EmbossFeatureInput:
        """
        Creates an EmbossFeatureInput object. Use properties and methods on this object
        to define the emboss feature you want to create and then use the Add method, passing in
        the EmbossFeatureInput object to create the feature.
        profiles : An array of Profile objects that define the shape of the emboss.
        The profile argument can be Profile and SketchText objects.
        When multiple objects are used, all profiles and sketch texts must be co-planar.
        faces : An array of BRepFace objects that define the faces the emboss will be performed on. By default,
        faces that are tangent to any of the input faces are also used. Use the isTangentChain property
        on the input object to disable the use of tangent faces.
        depth : A ValueInput object that defines the depth of the emboss. A positive value results in the emboss
        protruding out of the body and a negative value results in the emboss going into the body.
        Returns the newly created EmbossFeatureInput object or null if the creation failed.
        """
        return EmbossFeatureInput()
    def add(self, input: EmbossFeatureInput) -> EmbossFeature:
        """
        Creates a new emboss feature.
        input : An EmbossFeatureInput object that defines the desired emboss feature. Use the createInput
        method to create a new EmbossFeatureInput object and then use methods on the EmbossFeatureInput
        object to define the emboss feature.
        Returns the newly created EmbossFeature object or null if the creation failed.
        """
        return EmbossFeature()
    @property
    def count(self) -> int:
        """
        The number of emboss features in the collection.
        """
        return int()

class ExportManager(core.Base):
    """
    Provides support for exporting model data to various formats.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ExportManager:
        return ExportManager()
    def createIGESExportOptions(self, filename: str, geometry: core.Base = None) -> IGESExportOptions:
        """
        Creates an IGESExportOptions object that's used to export a design in IGES format. Creation
        of the IGESExportOptions object does not perform the export. You must pass this object to the
        ExportManager.execute method to perform the export. The IGESExportOptions supports any available
        options when exporting to IGES format.
        filename : The filename of the IGES file to be created.
        geometry : The geometry to export. Valid geometry for this is currently a Component object. This argument is optional
        and if not specified, it results in the root component and it entire contents being exported.
        The created IGESExportOptions object or null if the creation failed.
        """
        return IGESExportOptions()
    def createSTEPExportOptions(self, filename: str, geometry: core.Base = None) -> STEPExportOptions:
        """
        Creates an STEPExportOptions object that's used to export a design in STEP format. Creation
        of the STEPExportOptions object does not perform the export. You must pass this object to the
        ExportManager.execute method to perform the export. The STEPExportOptions supports any available
        options when exporting to STEP format.
        filename : The filename of the STEP file to be created.
        geometry : The geometry to export. Valid geometry for this is currently a Component object. This argument is optional
        and if not specified, it results in the root component and it entire contents being exported.
        The created STEPExportOptions object or null if the creation failed.
        """
        return STEPExportOptions()
    def createSATExportOptions(self, filename: str, geometry: core.Base = None) -> SATExportOptions:
        """
        Creates an SATExportOptions object that's used to export a design in SAT format. Creation
        of the SATExportOptions object does not perform the export. You must pass this object to the
        ExportManager.execute method to perform the export. The SATExportOptions supports any available
        options when exporting to SAT format.
        filename : The filename of the SAT file to be created.
        geometry : The geometry to export. Valid geometry for this is currently a Component object. This argument is optional
        and if not specified, it results in the root component and it entire contents being exported.
        The created SATExportOptions object or null if the creation failed.
        """
        return SATExportOptions()
    def createSMTExportOptions(self, filename: str, geometry: core.Base = None) -> SMTExportOptions:
        """
        Creates an SMTExportOptions object that's used to export a design in SMT format. Creation
        of the SMTExportOptions object does not perform the export. You must pass this object to the
        ExportManager.execute method to perform the export. The SMTExportOptions supports any available
        options when exporting to SMT format.
        filename : The filename of the SMT file to be created.
        geometry : The geometry to export. Valid geometry for this is currently a Component object. This argument is optional
        and if not specified, it results in the root component and it entire contents being exported.
        The created SMTExportOptions object or null if the creation failed.
        """
        return SMTExportOptions()
    def createFusionArchiveExportOptions(self, filename: str, geometry: core.Base = None) -> FusionArchiveExportOptions:
        """
        Creates an FusionArchiveExportOptions object that's used to export a design in Fusion archive format. Creation
        of the FusionArchiveExportOptions object does not perform the export. You must pass this object to the
        ExportManager.execute method to perform the export. The FusionArchiveExportOptions supports any available
        options when exporting to Fusion archive format.
        filename : The filename of the Fusion archive file to be created.
        geometry : The geometry to export. Valid geometry for this is currently a Component object. This argument is optional
        and if not specified, it results in the root component and it entire contents being exported.
        The created FusionArchiveExportOptions object or null if the creation failed.
        """
        return FusionArchiveExportOptions()
    def createSTLExportOptions(self, geometry: core.Base, filename: str = "") -> STLExportOptions:
        """
        Creates an STLExportOptions object that's used to export a design in STL format. Creation
        of the STLExportOptions object does not perform the export. You must pass this object to the
        ExportManager.execute method to perform the export.
        geometry : The geometry to export. This can be a BRepBody, Occurrence, or Component object.
        filename : The filename of the STL file to be created. This is optional and can be left out if the mesh will be opened in a mesh editor.
        The created createSTLExportOptions object or null if the creation failed.
        """
        return STLExportOptions()
    def execute(self, exportOptions: ExportOptions) -> bool:
        """
        Executes the export operation to create the file in the format specified by the provided ExportOptions object.
        exportOptions : An ExportOptions object that is created using one of the create methods on the ExportManager object. This
        defines the type of file and any available options supported for that file type.
        Returns true if the export was successful.
        """
        return bool()
    def createC3MFExportOptions(self, geometry: core.Base, filename: str = "") -> C3MFExportOptions:
        """
        Creates a C3MFExportOptions object that's used to export a design in 3MF format. Creation
        of the C3MFExportOptions object does not perform the export. You must pass this object to the
        ExportManager.execute method to perform the export.
        geometry : The geometry to export. This can be a BRepBody, Occurrence, or Component object.
        filename : The filename of the 3MF file to be created. This is optional and can be left out if the mesh will be opened in a mesh editor.
        The created createC3MFExportOptions object or null if the creation failed.
        """
        return C3MFExportOptions()
    def createUSDExportOptions(self, filename: str, geometry: core.Base = None) -> USDExportOptions:
        """
        Creates an USDExportOptions object that's used to export a design in USD format. Creation
        of the USDExportOptions object does not perform the export. You must pass this object to the
        ExportManager.execute method to perform the export. The USDExportOptions supports any available
        options when exporting to USD format.
        filename : The filename of the USD file to be created.
        geometry : The geometry to export. Valid geometry for this is currently a Component object. This argument is optional
        and if not specified, it results in the root component and it entire contents being exported.
        The created USDExportOptions object or null if the creation failed.
        """
        return USDExportOptions()
    def createOBJExportOptions(self, geometry: core.Base, filename: str = "") -> OBJExportOptions:
        """
        Creates an OBJExportOptions object that's used to export a design in OBJ format. Creation
        of the OBJExportOptions object does not perform the export. You must pass this object to the
        ExportManager.execute method to perform the export.
        geometry : The geometry to export. This can be a BRepBody, Occurrence, or Component object.
        filename : The filename of the OBJ file to be created. This is optional and can be left out if the mesh will be opened in a mesh editor.
        The created createOBJExportOptions object or null if the creation failed.
        """
        return OBJExportOptions()
    def createDXFFlatPatternExportOptions(self, filename: str, flatPattern: FlatPattern) -> DXFFlatPatternExportOptions:
        """
        Creates a DXFFlatPatternExport object that's used to export a flat pattern in DXF format. Creation
        of the DXFFlatPatternExport object does not perform the export. You must call the execute method.
        You can change any additional settings by setting properties on the returned object before calling
        the execute method.
        filename : The filename of the DXF file to be created.
        flatPattern : The FlatPattern object to export.
        The created DXFFlatPatternExport object or null if the creation failed.
        """
        return DXFFlatPatternExportOptions()
    def createDXFSketchExportOptions(self, filename: str, sketch: Sketch) -> DXFSketchExportOptions:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Creates a DXFSketchExportOptions object that's used to export a sketch in DXF format. Creation
        of the DXFSketchExportOptions object does not perform the export. You must call the execute method after changing
        the settings to the desired values.
        filename : The filename of the DXF file to be created.
        sketch : The Sketch object to export.
        The created DXFSketchExportOptions object or null if the creation failed.
        """
        return DXFSketchExportOptions()

class ExportOptions(core.Base):
    """
    The base class for the different export types. This class is never directly used
    in an export because you need the specific export type to specify the type of
    export to be performed.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ExportOptions:
        return ExportOptions()
    @property
    def filename(self) -> str:
        """
        Gets and sets the filename that the exported file will be written to. This can
        be empty in the case of STL export and sending the result to the mesh editor.
        """
        return str()
    @filename.setter
    def filename(self, value: str):
        """
        Gets and sets the filename that the exported file will be written to. This can
        be empty in the case of STL export and sending the result to the mesh editor.
        """
        pass
    @property
    def geometry(self) -> core.Base:
        """
        Specifies the geometry to export. This can be an Occurrence, or the root Component.
        For STL, OBJ, and 3MF export, it can be a BRepBody. For DXF export, it can be a sketch of flat pattern.
        """
        return core.Base()
    @geometry.setter
    def geometry(self, value: core.Base):
        """
        Specifies the geometry to export. This can be an Occurrence, or the root Component.
        For STL, OBJ, and 3MF export, it can be a BRepBody. For DXF export, it can be a sketch of flat pattern.
        """
        pass

class ExtendFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of an extend feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ExtendFeatureInput:
        return ExtendFeatureInput()
    @property
    def edges(self) -> core.ObjectCollection:
        """
        Gets and sets the edges to extend
        """
        return core.ObjectCollection()
    @edges.setter
    def edges(self, value: core.ObjectCollection):
        """
        Gets and sets the edges to extend
        """
        pass
    @property
    def distance(self) -> core.ValueInput:
        """
        Gets and sets the ValueInput object that defines the extend distance
        """
        return core.ValueInput()
    @distance.setter
    def distance(self, value: core.ValueInput):
        """
        Gets and sets the ValueInput object that defines the extend distance
        """
        pass
    @property
    def extendType(self) -> SurfaceExtendTypes:
        """
        Gets and sets surface extend type to use
        """
        return SurfaceExtendTypes()
    @extendType.setter
    def extendType(self, value: SurfaceExtendTypes):
        """
        Gets and sets surface extend type to use
        """
        pass
    @property
    def isChainingEnabled(self) -> bool:
        """
        Gets and sets if all edges that are tangent or curvature continuous, and end point connected, will be found
        automatically and extended.
        """
        return bool()
    @isChainingEnabled.setter
    def isChainingEnabled(self, value: bool):
        """
        Gets and sets if all edges that are tangent or curvature continuous, and end point connected, will be found
        automatically and extended.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass
    @property
    def extendAlignment(self) -> SurfaceExtendAlignment:
        """
        Gets and sets surface extend alignment to use.
        """
        return SurfaceExtendAlignment()
    @extendAlignment.setter
    def extendAlignment(self, value: SurfaceExtendAlignment):
        """
        Gets and sets surface extend alignment to use.
        """
        pass

class ExtendFeatures(core.Base):
    """
    Collection that provides access to all of the existing Extend features in a component
    and supports the ability to create new Extend features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ExtendFeatures:
        return ExtendFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ExtendFeature:
        return None
    def __iter__(self) -> Iterator[ExtendFeature]:
        return None
    def item(self, index: int) -> ExtendFeature:
        """
        Function that returns the specified extend feature 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 ExtendFeature()
    def createInput(self, edges: core.ObjectCollection, distance: core.ValueInput, extendType: SurfaceExtendTypes, isChainingEnabled: bool = True) -> ExtendFeatureInput:
        """
        Creates an ExtendFeatureInput object. Use properties and methods on this object
        to define the extend feature you want to create and then use the Add method, passing in
        the ExtendFeatureInput object.
        edges : The surface edges to extend.
        Only the outer edges from an open body can be extended. The edges must all be from the same body.
        Depending on the extend type there can also be some limitations on the edges being input as described below
        for the extendType argument.
        distance : ValueInput object that defines the distance to extend the face/s.
        Natural and Tangent Extend types require a positive distance value.
        Perpendicular Extend Type supports either a positive or negative value to
        control the direction of the extend. A positive number results in the
        perpendicular extension being in the same direction as the positive normal
        of the connected faces.
        extendType : The extension type to use when extending the face(s).
        Input edges must be connected at endpoints when Tangent or Perpendicular Extend Types are used.
        Input edges need not be connected when Natural Extend type is used.
        isChainingEnabled : An optional boolean argument whose default is true. If this argument is true, all edges that are
        tangent or curvature continuous, and end point connected, will be found automatically and include
        in the set of edges to extend.
        Returns the newly created ExtendFeatureInput object or null if the creation failed.
        """
        return ExtendFeatureInput()
    def add(self, input: ExtendFeatureInput) -> ExtendFeature:
        """
        Creates a new extend feature.
        input : An ExtendFeatureInput object that defines the desired extend feature. Use the createInput
        method to create a new ExtendFeatureInput object and then use methods on it
        (the ExtendFeatureInput object) to define the desired options for the extent feature.
        Returns the newly created ExtendFeature object or null if the creation failed.
        """
        return ExtendFeature()
    def itemByName(self, name: str) -> ExtendFeature:
        """
        Function that returns the specified extend feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return ExtendFeature()
    @property
    def count(self) -> int:
        """
        The number of Extend features in the collection.
        """
        return int()

class ExtentDefinition(core.Base):
    """
    The base class for the various definition objects used to define the extent of a feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ExtentDefinition:
        return ExtentDefinition()
    @property
    def parentFeature(self) -> Feature:
        """
        Returns the parent feature that this definition is associated with. If this definition has been created
        statically and is not associated with a feature this property will return null.
        """
        return Feature()

class ExtrudeFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of an extrude
    feature. This class also provides properties for setting/getting the Profile and Operation
    of the extrude. The Profile and Operation are defined when the ExtrudeFeatures.createInput
    method is called so they do not exist as properties on this class.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ExtrudeFeatureInput:
        return ExtrudeFeatureInput()
    def setOneSideExtent(self, extent: ExtentDefinition, direction: ExtentDirections, taperAngle: core.ValueInput = None) -> bool:
        """
        Defines the extrusion to go in one direction from the profile. The extent of the extrusion is
        defined by the extent argument.
        extent : An ExtentDefinition object that defines how the extent of the extrusion is defined. This can be
        a specified distance (DistanceExtentDefinition), to an entity (ToEntityExtent), or through-all (AllExtentDefinition).
        These objects can be obtained by using the static create method on the appropriate class.
        direction : Specifies the direction of the extrusion. PositiveExtentDirection and NegativeExtentDirection
        are valid values. PositiveExtentDirection is in the same direction as the normal of the profile's
        parent sketch plane.
        taperAngle : Optional argument that specifies the taper angle. If omitted a taper angle of 0 is used.
        Returns true is setting the input to a one sided extent was successful.
        """
        return bool()
    def setTwoSidesExtent(self, sideOneExtent: ExtentDefinition, sideTwoExtent: ExtentDefinition, sideOneTaperAngle: core.ValueInput = None, sideTwoTaperAngle: core.ValueInput = None) -> bool:
        """
        Defines the extrusion to go in both directions from the profile. The extent is defined independently
        for each direction using the input arguments.
        sideOneExtent : An ExtentDefinition object that defines how the extent of the extrusion towards side one is defined. This can be
        a specified distance (DistanceExtentDefinition), to an entity (ToEntityExtent), or through-all (AllExtentDefinition).
        These objects can be obtained by using the static create method on the appropriate class.
        sideTwoExtent : An ExtentDefinition object that defines how the extent of the extrusion towards side two is defined. This can be
        a specified distance (DistanceExtentDefinition), to an entity (ToEntityExtent), or through-all (AllExtentDefinition).
        These objects can be obtained by using the static create method on the appropriate class.
        sideOneTaperAngle : Optional argument that specifies the taper angle for side one. If omitted a taper angle of 0 is used.
        sideTwoTaperAngle : Optional argument that specifies the taper angle for side two. If omitted a taper angle of 0 is used.
        Returns true is setting the extent was successful.
        """
        return bool()
    def setSymmetricExtent(self, distance: core.ValueInput, isFullLength: bool, taperAngle: core.ValueInput = None) -> bool:
        """
        Defines the extrusion to go symmetrically in both directions from the profile.
        distance : The distance of the extrusions. This is either the full length of half of the length of the final extrusion
        depending on the value of the isFullLength property.
        isFullLength : Defines if the value defines the full length of the extrusion or half of the length. A value of true indicates
        it defines the full length.
        taperAngle : Optional argument that specifies the taper angle. The same taper angle is used for both sides for a symmetric
        extrusion. If omitted a taper angle of 0 is used.
        Returns true is setting the extent was successful.
        """
        return bool()
    def setThinExtrude(self, thinExtrudeWallLocationOne: ThinExtrudeWallLocation, thinExtrudeWallThicknessOne: core.ValueInput, thinExtrudeWallLocationTwo: ThinExtrudeWallLocation = ThinExtrudeWallLocation.Side1, thinExtrudeWallThicknessTwo: core.ValueInput = None) -> bool:
        """
        Changes the extrude feature to be a thin extrude. This is only valid if the isThinExtrude property
        is False. If the extrusion is already a thin extrude, you can use the properties on the ExtrudeFeature
        to modify the thin extrude specific values.
        thinExtrudeWallLocationOne : Specifies the position of the thin wall extrude with respect to the profile being extruded. This defines
        the direction for a single sided thin extrude or side one of a two-sided extrusion.
        thinExtrudeWallThicknessOne : A ValueInput object that defines the thickness for a single sided thin extrude or side one of a two-sided
        extrusion .
        thinExtrudeWallLocationTwo : Optional argument that specifies the position of side two of a two-sided extrusion. This argument is ignored
        for a single sided thin extrude.
        thinExtrudeWallThicknessTwo : Optional argument that is a ValueInput object that defines the thickness for side two of a
        two-sided extrusion. This argument is ignored for a single sided thin extrude.
        Returns true if successful.
        """
        return bool()
    @property
    def profile(self) -> core.Base:
        """
        Gets and sets the profiles or planar faces used to define the shape of the extrude.
        This property can return or be set with a single profile, a single planar face, or
        an ObjectCollection consisting of multiple profiles and planar faces. When an
        ObjectCollection is used all of the profiles and faces must be co-planar.
        
        To create a surface (non-solid) extrusion, you can use the createOpenProfile and createBRepEdgeProfile
        methods of the Component object to create an open profile. The isSolid property of the
        ExtrudeFeatureInput property must also be False.
        """
        return core.Base()
    @profile.setter
    def profile(self, value: core.Base):
        """
        Gets and sets the profiles or planar faces used to define the shape of the extrude.
        This property can return or be set with a single profile, a single planar face, or
        an ObjectCollection consisting of multiple profiles and planar faces. When an
        ObjectCollection is used all of the profiles and faces must be co-planar.
        
        To create a surface (non-solid) extrusion, you can use the createOpenProfile and createBRepEdgeProfile
        methods of the Component object to create an open profile. The isSolid property of the
        ExtrudeFeatureInput property must also be False.
        """
        pass
    @property
    def operation(self) -> FeatureOperations:
        """
        Gets and sets the type of operation performed by the extrusion.
        """
        return FeatureOperations()
    @operation.setter
    def operation(self, value: FeatureOperations):
        """
        Gets and sets the type of operation performed by the extrusion.
        """
        pass
    @property
    def creationOccurrence(self) -> Occurrence:
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the Extrusion is created based on geometry (e.g. a profile and/or face(s))
        in another component AND (the Extrusion) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI
        """
        return Occurrence()
    @creationOccurrence.setter
    def creationOccurrence(self, value: Occurrence):
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the Extrusion is created based on geometry (e.g. a profile and/or face(s))
        in another component AND (the Extrusion) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI
        """
        pass
    @property
    def isSolid(self) -> bool:
        """
        Specifies if the extrusion should be created as a solid or surface. If
        it's a surface then there aren't any end caps and it's open. When an ExtrudeFeature
        input is created, this is initialized to true so a solid will be created if it's not changed.
        """
        return bool()
    @isSolid.setter
    def isSolid(self, value: bool):
        """
        Specifies if the extrusion should be created as a solid or surface. If
        it's a surface then there aren't any end caps and it's open. When an ExtrudeFeature
        input is created, this is initialized to true so a solid will be created if it's not changed.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass
    @property
    def startExtent(self) -> ExtentDefinition:
        """
        Gets and sets the extent used to define the start of the extrusion. When a new ExtrudeFeatureInput
        object is created the start extent is initialized to be the profile plane but you can change it
        to a profile plane with offset or from an object by setting this property with either a
        OffsetStartDefinition or an EntityStartDefinition object. You can get either one
        of those objects by using the static create method on the class.
        """
        return ExtentDefinition()
    @startExtent.setter
    def startExtent(self, value: ExtentDefinition):
        """
        Gets and sets the extent used to define the start of the extrusion. When a new ExtrudeFeatureInput
        object is created the start extent is initialized to be the profile plane but you can change it
        to a profile plane with offset or from an object by setting this property with either a
        OffsetStartDefinition or an EntityStartDefinition object. You can get either one
        of those objects by using the static create method on the class.
        """
        pass
    @property
    def extentOne(self) -> ExtentDefinition:
        """
        Gets the extent assigned for a single sided extrude or side one of a two-sided extrusion. To set the extent, use
        one of the set methods on the ExtrudeFeatureInput object.
        """
        return ExtentDefinition()
    @property
    def extentTwo(self) -> ExtentDefinition:
        """
        Gets the extent assigned for side two of the extrusion. If the extrude is single sided extrude this
        property will return null. The hasTwoExtents property can be used to determine if there
        are two sides or not. To set the extent, use one of the set methods on the ExtrudeFeatureInput object.
        """
        return ExtentDefinition()
    @property
    def taperAngleOne(self) -> core.ValueInput:
        """
        Gets the value that will be used as the taper angle for a single sided extrusion or side one of a two-sided
        extrusion. To set the taper angle, use one of the set methods on the ExtrudeFeatureInput object.
        """
        return core.ValueInput()
    @property
    def taperAngleTwo(self) -> core.ValueInput:
        """
        Gets the value that will be used as the taper angle for side two of a two-sided extrusion. If the extrusion is
        single-sided, this property will return null. The hasTwoExtents property can be used to determine if there
        are two sides or not. To set the taper angle, use one of the set methods on the ExtrudeFeatureInput object.
        """
        return core.ValueInput()
    @property
    def hasTwoExtents(self) -> bool:
        """
        Property that indicates if the extrusion is a single or two-sided extrusion. If false, the extentTwo
        and taperAngleTwo properties should not be used.
        """
        return bool()
    @property
    def participantBodies(self) -> list[BRepBody]:
        """
        Gets and sets the list of bodies that will participate in the feature when the operation is a cut or intersection.
        
        If this property has not been set, the default behavior is that all bodies that are intersected by the
        feature will participate.
        
        This property can return null in the case where the feature has not been fully defined so that
        possible intersecting bodies can be computed.
        """
        return [BRepBody()]
    @participantBodies.setter
    def participantBodies(self, value: list[BRepBody]):
        """
        Gets and sets the list of bodies that will participate in the feature when the operation is a cut or intersection.
        
        If this property has not been set, the default behavior is that all bodies that are intersected by the
        feature will participate.
        
        This property can return null in the case where the feature has not been fully defined so that
        possible intersecting bodies can be computed.
        """
        pass
    @property
    def isThinExtrude(self) -> bool:
        """
        Sets or returns whether the extrude is a thin extrude.
        Setting it as false will make it a regular extrude.
        """
        return bool()
    @isThinExtrude.setter
    def isThinExtrude(self, value: bool):
        """
        Sets or returns whether the extrude is a thin extrude.
        Setting it as false will make it a regular extrude.
        """
        pass
    @property
    def thinExtrudeWallLocationOne(self) -> ThinExtrudeWallLocation:
        """
        Gets and sets the wall location for a one sided thin extrude or side one of a two sided thin extrude
        """
        return ThinExtrudeWallLocation()
    @thinExtrudeWallLocationOne.setter
    def thinExtrudeWallLocationOne(self, value: ThinExtrudeWallLocation):
        """
        Gets and sets the wall location for a one sided thin extrude or side one of a two sided thin extrude
        """
        pass
    @property
    def thinExtrudeWallLocationTwo(self) -> ThinExtrudeWallLocation:
        """
        Gets and sets the wall location for side two of a two sided thin extrude
        """
        return ThinExtrudeWallLocation()
    @thinExtrudeWallLocationTwo.setter
    def thinExtrudeWallLocationTwo(self, value: ThinExtrudeWallLocation):
        """
        Gets and sets the wall location for side two of a two sided thin extrude
        """
        pass
    @property
    def thinExtrudeWallThicknessOne(self) -> core.ValueInput:
        """
        Gets and sets the wall thickness for a one sided thin extrude or side one of a two sided thin extrude
        """
        return core.ValueInput()
    @thinExtrudeWallThicknessOne.setter
    def thinExtrudeWallThicknessOne(self, value: core.ValueInput):
        """
        Gets and sets the wall thickness for a one sided thin extrude or side one of a two sided thin extrude
        """
        pass
    @property
    def thinExtrudeWallThicknessTwo(self) -> core.ValueInput:
        """
        Gets and sets the wall thickness for side two of a two sided thin extrude
        """
        return core.ValueInput()
    @thinExtrudeWallThicknessTwo.setter
    def thinExtrudeWallThicknessTwo(self, value: core.ValueInput):
        """
        Gets and sets the wall thickness for side two of a two sided thin extrude
        """
        pass

class ExtrudeFeatures(core.Base):
    """
    Collection that provides access to all of the existing extrude features in a design
    and supports the ability to create new extrude features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ExtrudeFeatures:
        return ExtrudeFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ExtrudeFeature:
        return None
    def __iter__(self) -> Iterator[ExtrudeFeature]:
        return None
    def item(self, index: int) -> ExtrudeFeature:
        """
        Function that returns the specified extrude feature 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 ExtrudeFeature()
    def createInput(self, profile: core.Base, operation: FeatureOperations) -> ExtrudeFeatureInput:
        """
        Creates a new ExtrudeFeatureInput object that is used to specify the input needed
        to create a new extrude feature.
        profile : The profile argument can be a single Profile, a single planar face, a single SketchText object,
        or an ObjectCollection consisting of multiple profiles, planar faces, and sketch texts.
        When an ObjectCollection is used all of the profiles, faces, and sketch texts must be co-planar.
        
        To create a surface (non-solid) extrusion, you can use the createOpenProfile and createBRepEdgeProfile
        methods of the Component object to create an open profile. You also need to set the isSolid property
        of the returned ExtrudeFeatureInput property to False.
        operation : The feature operation to perform.
        Returns the newly created ExtrudeFeatureInput object or null if the creation failed.
        """
        return ExtrudeFeatureInput()
    def add(self, input: ExtrudeFeatureInput) -> ExtrudeFeature:
        """
        Creates a new extrude feature based on the information defined by the provided ExtrudeFeatureInput object.
        To create a new extrusion use the createInput function to create a new input object and use the methods and
        properties on that object to define the required input for an extrusion. Once the information is defined on the
        input object you can pass it to the Add method to create the extrusion.
        input : The ExtrudeFeatureInput object that specifies the input needed to create a new extrude
        feature.
        Returns the newly created ExtrudeFeature or null if the creation failed.
        """
        return ExtrudeFeature()
    def itemByName(self, name: str) -> ExtrudeFeature:
        """
        Function that returns the specified extrude feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return ExtrudeFeature()
    def addSimple(self, profile: core.Base, distance: core.ValueInput, operation: FeatureOperations) -> ExtrudeFeature:
        """
        Creates a basic extrusion that goes from the profile plane the specified distance.
        profile : The profile argument can be a single Profile, a single planar face, a single SketchText object,
        or an ObjectCollection consisting of multiple profiles, planar faces, and sketch texts.
        When an ObjectCollection is used all of the profiles, faces, and sketch texts must be co-planar.
        
        This method can only be used to create solid extrusions. To create a surface extrusion you need
        to use the add method.
        distance : ValueInput object that defines the extrude distance. A positive value extrudes in the positive direction
        of the sketch plane and negative value is in the opposite direction.
        operation : The feature operation to perform.
        Returns the newly created ExtrudeFeature or null if the creation failed.
        """
        return ExtrudeFeature()
    @property
    def count(self) -> int:
        """
        The number of extrude features in the collection.
        """
        return int()

class FaceGroup(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Represent a connected region on a single geometric surface.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FaceGroup:
        return FaceGroup()
    def createForAssemblyContext(self, occurrence: Occurrence) -> FaceGroup:
        """
        Returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context for the created proxy.
        Returns the new face group proxy or null if this isn't the NativeObject.
        """
        return FaceGroup()
    @property
    def parentBody(self) -> MeshBody:
        """
        Returns the parent body of the face.
        """
        return MeshBody()
    @property
    def area(self) -> float:
        """
        Returns the area in cm ^ 2.
        """
        return float()
    @property
    def boundingBox(self) -> core.BoundingBox3D:
        """
        Returns the bounding box of this face
        """
        return core.BoundingBox3D()
    @property
    def centroid(self) -> core.Point3D:
        """
        Returns a point at the centroid (aka, geometric center) of the face.
        """
        return core.Point3D()
    @property
    def tempId(self) -> int:
        """
        Returns the temporary ID of this face group. This ID is only good while the document
        remains open and as long as the owning mesh body is not modified in any way.
        """
        return int()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the face group object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same face.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as a way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        
        This is only valid for faces that exist in the design, (the isTemporary
        property is false).
        """
        return str()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this
        object in an assembly. This is only valid in the case where this
        face group object is acting as a proxy in an assembly. Returns null
        in the case where the object is not in the context of an assembly.
        but is already the native object.
        """
        return Occurrence()
    @property
    def nativeObject(self) -> FaceGroup:
        """
        The NativeObject is the object outside the context of an assembly.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return FaceGroup()
    @property
    def isPlanar(self) -> bool:
        """
        Returns if the face group is planar or not.
        """
        return bool()
    @property
    def attributes(self) -> core.Attributes:
        """
        Returns the collection of attributes associated with this face group.
        """
        return core.Attributes()

class FaceGroups(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    FaceGroup collection.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FaceGroups:
        return FaceGroups()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> FaceGroup:
        return None
    def __iter__(self) -> Iterator[FaceGroup]:
        return None
    def item(self, index: int) -> FaceGroup:
        """
        Function that returns the specified faceGroup 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 FaceGroup()
    @property
    def count(self) -> int:
        """
        The number of FaceGroup objects in the collection.
        """
        return int()

class Feature(core.Base):
    """
    Base class object representing all features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Feature:
        return Feature()
    def deleteMe(self) -> bool:
        """
        Deletes the feature.
        This works for both parametric and non-parametric features.
        Returns a bool indicating if the delete was successful or not.
        """
        return bool()
    def dissolve(self) -> bool:
        """
        Dissolves the feature so that the feature information is lost
        and only the B-Rep geometry defined by the feature remains.
        This is only valid for non-parametric features.
        Returns a bool indicating if the dissolve was successful or not.
        """
        return bool()
    @property
    def name(self) -> str:
        """
        Returns the name of the feature as seen in the browser (non-parametric) or in the timeline (parametric).
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Returns the name of the feature as seen in the browser (non-parametric) or in the timeline (parametric).
        """
        pass
    @property
    def isSuppressed(self) -> bool:
        """
        Gets and sets if this feature is suppressed. This is only valid
        for parametric features.
        """
        return bool()
    @isSuppressed.setter
    def isSuppressed(self, value: bool):
        """
        Gets and sets if this feature is suppressed. This is only valid
        for parametric features.
        """
        pass
    @property
    def isParametric(self) -> bool:
        """
        Indicates if this feature is parametric or not.
        """
        return bool()
    @property
    def faces(self) -> BRepFaces:
        """
        Returns the faces that were created by this feature. This works for
        both parametric and non-parametric features.
        
        Depending on the modifications made to the body after the feature was
        created, this may not return all of the faces. For example, when a
        component is created from a body, the original body and its faces
        no longer exist, so this won't return any faces. However, you can
        roll the timeline to immediately after the feature, and all the
        original faces will be available.
        """
        return BRepFaces()
    @property
    def parentComponent(self) -> Component:
        """
        Returns the parent component that owns this feature.
        """
        return Component()
    @property
    def linkedFeatures(self) -> FeatureList:
        """
        Returns the set of features that are linked to this feature. The set of linked features
        are all of the features that were created in various components as the result of a
        single feature being created in the user interface.
        """
        return FeatureList()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this object
        in an assembly. This is only valid in the case where this is acting
        as a proxy in an assembly. Returns null in the case where the object
        is not in the context of an assembly but is already the native object.
        """
        return Occurrence()
    @property
    def timelineObject(self) -> TimelineObject:
        """
        Returns the timeline object associated with this feature.
        """
        return TimelineObject()
    @property
    def bodies(self) -> BRepBodies:
        """
        Returns the bodies that were modified or created by this feature.
        This property works for both parametric and non-parametric features.
        
        For a BaseFeature, this property has two different behaviors depending
        on if the BaseFeature is active for edit or not. When the base feature is
        active, this property returns the bodies owned by the base feature or the
        source bodies. When the base feature is not active, this property returns
        the result bodies.
        
        When a body is added to a base feature, that body is owned by the base feature
        and is only seen in the UI when the base feature is active. This body is referred
        to as a "source body". Fusion creates a parametric copy of the body when you
        exit the base feature. This copy is referred to as the "result body," and it
        is used for subsequent modeling operations.
        
        You can map between the source and result bodies by using their position
        within the bodies returned. To get a valid list of result bodies, you should
        roll the timeline to immediately after the base feature node in the timeline.
        Otherwise, subsequent operations could have done something to cause one or
        more bodies to no longer be available.
        """
        return BRepBodies()
    @property
    def attributes(self) -> core.Attributes:
        """
        Returns the collection of attributes associated with this face.
        """
        return core.Attributes()
    @property
    def baseFeature(self) -> BaseFeature:
        """
        If this feature is associated with a base feature, this property will return that base feature.
        If it's not associated with a base feature, this property will return null.
        """
        return BaseFeature()
    @property
    def healthState(self) -> FeatureHealthStates:
        """
        Returns the current health state of the feature.
        """
        return FeatureHealthStates()
    @property
    def errorOrWarningMessage(self) -> str:
        """
        Returns the error or warning message in the case where the healthState property returns either
        WarningFeatureHealthState or ErrorFeatureHealthState. Otherwise this property returns an empty string.
        """
        return str()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the Feature object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same feature.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        """
        return str()

class FeatureList(core.Base):
    """
    Provides access to a list of features. This is used in the API to return
    a list of features from an API call.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FeatureList:
        return FeatureList()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> Feature:
        return None
    def __iter__(self) -> Iterator[Feature]:
        return None
    def item(self, index: int) -> Feature:
        """
        Returns the specified folder.
        index : The index of the feature to return. The first feature in the list has an index of 0.
        Returns the specified item or null if an invalid index was specified.
        """
        return Feature()
    @property
    def count(self) -> int:
        """
        The number of features in this collection.
        """
        return int()

class Features(core.Base):
    """
    The features collection which provides access to all existing features. This collection
    provides direct access to all features regardless of type. It also provides access
    to type specific collections where you can get features of a specific type and also create
    new features of that type.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Features:
        return Features()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> Feature:
        return None
    def __iter__(self) -> Iterator[Feature]:
        return None
    def item(self, index: int) -> Feature:
        """
        Function that returns the specified feature 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 Feature()
    def createPath(self, curve: core.Base, isChain: bool = True) -> Path:
        """
        Method that creates a Path used to define the shape of a Sweep feature. A Path is a contiguous
        set of curves that can be a combination of sketch curves and model edges.
        curve : A SketchCurve or an ObjectCollection containing multiple sketch entities and/or BRepEdge objects. If a single sketch curve
        or edge is input the isChain argument is checked to determine if connected curves (they do not need to be tangent)
        should be automatically found. If multiple curves are provided the isChain argument is always
        treated as false so you must provide all of the curves in the object collection that you want included in the path.
        The provided curves must all connect together in a single path.
        
        The input curves can be from multiple sketches and bodies and they need to geometrically connect for
        a valid path to be created.
        isChain : Optional argument, that defaults to true. If this argument is set to true, all curves and edges that are end point
        connected to the single input curve will be found and used to create the path.
        This argument is only used when the first argument is a single SketchCurve/BRepEdge object.
        Returns the newly created Path.
        """
        return Path()
    def itemByName(self, name: str) -> Feature:
        """
        Function that returns the specified feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the same name seen in the timeline.
        Returns the specified item or null if a feature matching the name was not found.
        """
        return Feature()
    @property
    def count(self) -> int:
        """
        Returns the number of features in the collection.
        """
        return int()
    @property
    def extrudeFeatures(self) -> ExtrudeFeatures:
        """
        Returns the collection that provides access to the extrude features within the component
        and supports the creation of new extrude features.
        """
        return ExtrudeFeatures()
    @property
    def revolveFeatures(self) -> RevolveFeatures:
        """
        Returns the collection that provides access to the revolve features within the component
        and supports the creation of new revolved features.
        """
        return RevolveFeatures()
    @property
    def holeFeatures(self) -> HoleFeatures:
        """
        Returns the collection that provides access to the hole features within the component
        and supports the creation of new hole features.
        """
        return HoleFeatures()
    @property
    def filletFeatures(self) -> FilletFeatures:
        """
        Returns the collection that provides access to the fillet features within the component
        and supports the creation of new fillet features.
        """
        return FilletFeatures()
    @property
    def sweepFeatures(self) -> SweepFeatures:
        """
        Returns the collection that provides access to the sweep features within the component
        and supports the creation of new sweep features.
        """
        return SweepFeatures()
    @property
    def chamferFeatures(self) -> ChamferFeatures:
        """
        Returns the collection that provides access to the chamfer features within the component
        and supports the creation of new chamfer features.
        """
        return ChamferFeatures()
    @property
    def shellFeatures(self) -> ShellFeatures:
        """
        Returns the collection that provides access to the shell features within the component
        and supports the creation of new shell features.
        """
        return ShellFeatures()
    @property
    def mirrorFeatures(self) -> MirrorFeatures:
        """
        Returns the collection that provides access to the mirror features within the component
        and supports the creation of new mirror features.
        """
        return MirrorFeatures()
    @property
    def circularPatternFeatures(self) -> CircularPatternFeatures:
        """
        Returns the collection that provides access to the circular pattern features within the component
        and supports the creation of new circular pattern features.
        """
        return CircularPatternFeatures()
    @property
    def rectangularPatternFeatures(self) -> RectangularPatternFeatures:
        """
        Returns the collection that provides access to the rectangular pattern features within the component
        and supports the creation of new rectangular pattern features.
        """
        return RectangularPatternFeatures()
    @property
    def pathPatternFeatures(self) -> PathPatternFeatures:
        """
        Returns the collection that provides access to the path pattern features within the component
        and supports the creation of new path pattern features.
        """
        return PathPatternFeatures()
    @property
    def combineFeatures(self) -> CombineFeatures:
        """
        Returns the collection that provides access to the combine features within the component
        and supports the creation of new combine features.
        """
        return CombineFeatures()
    @property
    def threadFeatures(self) -> ThreadFeatures:
        """
        Returns the collection that provides access to the thread features within the component
        and supports the creation of new thread features.
        """
        return ThreadFeatures()
    @property
    def draftFeatures(self) -> DraftFeatures:
        """
        Returns the collection that provides access to the draft features within the component
        and supports the creation of new draft features.
        """
        return DraftFeatures()
    @property
    def scaleFeatures(self) -> ScaleFeatures:
        """
        Returns the collection that provides access to the scale features within the component
        and supports the creation of new scale features.
        """
        return ScaleFeatures()
    @property
    def replaceFaceFeatures(self) -> ReplaceFaceFeatures:
        """
        Returns the collection that provides access to the replaceFace features within the component
        and supports the creation of new replaceFace features.
        """
        return ReplaceFaceFeatures()
    @property
    def moveFeatures(self) -> MoveFeatures:
        """
        Returns the collection that provides access to the Move features within the component
        and supports the creation of new Move features.
        """
        return MoveFeatures()
    @property
    def splitFaceFeatures(self) -> SplitFaceFeatures:
        """
        Returns the collection that provides access to the SplitFace features within the component and supports the creation
        of new SplitFace features
        """
        return SplitFaceFeatures()
    @property
    def splitBodyFeatures(self) -> SplitBodyFeatures:
        """
        Returns the collection that provides access to the SplitBody features within the component and supports the creation
        of new SplitBody features
        """
        return SplitBodyFeatures()
    @property
    def silhouetteSplitFeatures(self) -> SilhouetteSplitFeatures:
        """
        Returns the collection that provides access to the Parting Line Split features within the component and supports
        the creation of new Parting Line Split features
        """
        return SilhouetteSplitFeatures()
    @property
    def offsetFeatures(self) -> OffsetFeatures:
        """
        Returns the collection that provides access to the Offset features within the component
        and supports the creation of new Offset features.
        """
        return OffsetFeatures()
    @property
    def extendFeatures(self) -> ExtendFeatures:
        """
        Returns the collection that provides access to the Extend features within the component
        and supports the creation of new Extend features.
        """
        return ExtendFeatures()
    @property
    def stitchFeatures(self) -> StitchFeatures:
        """
        Returns the collection that provides access to the Stitch features within the component
        and supports the creation of new Stitch features.
        """
        return StitchFeatures()
    @property
    def boundaryFillFeatures(self) -> BoundaryFillFeatures:
        """
        Returns the collection that provides access to the Boundary Fill features within the component
        and supports the creation of new Boundary Fill features.
        """
        return BoundaryFillFeatures()
    @property
    def trimFeatures(self) -> TrimFeatures:
        """
        Returns the collection that provides access to the Trim features within the component
        and supports the creation of new Trim features.
        """
        return TrimFeatures()
    @property
    def thickenFeatures(self) -> ThickenFeatures:
        """
        Returns the collection that provides access to the Thicken features within the component
        and supports the creation of new Thicken features.
        """
        return ThickenFeatures()
    @property
    def unstitchFeatures(self) -> UnstitchFeatures:
        """
        Returns the collection that provides access to the Unstitch features within the component
        and supports the creation of new Unstitch features.
        """
        return UnstitchFeatures()
    @property
    def removeFeatures(self) -> RemoveFeatures:
        """
        Returns the collection that provides access to the Remove features within the component
        and supports the creation of new Remove features.
        """
        return RemoveFeatures()
    @property
    def baseFeatures(self) -> BaseFeatures:
        """
        Returns the collection that provides access to the existing base features
        and supports the creation of new base features. A base feature represents
        a body that is non-parametric.
        """
        return BaseFeatures()
    @property
    def coilFeatures(self) -> CoilFeatures:
        """
        Returns the collection that provides access to the Coil Primitive features within the component.
        """
        return CoilFeatures()
    @property
    def boxFeatures(self) -> BoxFeatures:
        """
        Returns the collection that provides access to the existing box features.
        """
        return BoxFeatures()
    @property
    def cylinderFeatures(self) -> CylinderFeatures:
        """
        Returns the collection that provides access to the existing cylinder features.
        """
        return CylinderFeatures()
    @property
    def sphereFeatures(self) -> SphereFeatures:
        """
        Returns the collection that provides access to the existing sphere features.
        """
        return SphereFeatures()
    @property
    def torusFeatures(self) -> TorusFeatures:
        """
        Returns the collection that provides access to the existing torus features.
        """
        return TorusFeatures()
    @property
    def pipeFeatures(self) -> PipeFeatures:
        """
        Returns the collection that provides access to the existing pipe features.
        """
        return PipeFeatures()
    @property
    def ribFeatures(self) -> RibFeatures:
        """
        Returns the collection that provides access to the existing rib features.
        """
        return RibFeatures()
    @property
    def webFeatures(self) -> WebFeatures:
        """
        Returns the collection that provides access to the existing web features.
        """
        return WebFeatures()
    @property
    def formFeatures(self) -> FormFeatures:
        """
        Returns the collection that provides access to the existing form features.
        """
        return FormFeatures()
    @property
    def reverseNormalFeatures(self) -> ReverseNormalFeatures:
        """
        Returns the collection that provides access to the Reverse Normal features within the component
        and supports the creation of new Reverse Normal features.
        """
        return ReverseNormalFeatures()
    @property
    def patchFeatures(self) -> PatchFeatures:
        """
        Returns the collection that provides access to the Patch features within the component
        and supports the creation of new Patch features.
        """
        return PatchFeatures()
    @property
    def loftFeatures(self) -> LoftFeatures:
        """
        Returns the collection that provides access to the existing loft features and
        supports the creation of new loft features.
        """
        return LoftFeatures()
    @property
    def surfaceDeleteFaceFeatures(self) -> SurfaceDeleteFaceFeatures:
        """
        Returns the collection that provides access to the existing Surface Delete Face features.
        """
        return SurfaceDeleteFaceFeatures()
    @property
    def deleteFaceFeatures(self) -> DeleteFaceFeatures:
        """
        Returns the collection that provides access to the existing Delete Face features.
        """
        return DeleteFaceFeatures()
    @property
    def offsetFacesFeatures(self) -> OffsetFacesFeatures:
        """
        Returns the collection that provides access to the existing Offset Face features.
        """
        return OffsetFacesFeatures()
    @property
    def copyPasteBodies(self) -> CopyPasteBodies:
        """
        Returns the collection that provides access to the existing copy-paste features
        and supports the creation of new copy-paste features.
        """
        return CopyPasteBodies()
    @property
    def cutPasteBodies(self) -> CutPasteBodies:
        """
        Returns the collection that provides access to the existing cut-paste features
        and supports the creation of new cut-paste features.
        """
        return CutPasteBodies()
    @property
    def flangeFeatures(self) -> FlangeFeatures:
        """
        Returns the collection that provides access to the existing flange features.
        """
        return FlangeFeatures()
    @property
    def unfoldFeatures(self) -> UnfoldFeatures:
        """
        Returns the collection that provides access to the existing unfold features.
        """
        return UnfoldFeatures()
    @property
    def refoldFeatures(self) -> RefoldFeatures:
        """
        Returns the collection that provides access to the existing refold features.
        """
        return RefoldFeatures()
    @property
    def ruledSurfaceFeatures(self) -> RuledSurfaceFeatures:
        """
        Returns the collection that provides access to the Ruled Surface features within the component
        and supports the creation of new Ruled Surface features.
        """
        return RuledSurfaceFeatures()
    @property
    def customFeatures(self) -> CustomFeatures:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the collection that provides access to the custom features within the component
        and supports the creation of new custom features.
        """
        return CustomFeatures()
    @property
    def untrimFeatures(self) -> UntrimFeatures:
        """
        Returns the collection that provides access to the Untrim features within the component
        and supports the creation of new Untrim features.
        """
        return UntrimFeatures()
    @property
    def bossFeatures(self) -> BossFeatures:
        """
        Returns the collection that provides access to the boss features within the component
        and supports the creation of new boss features.
        """
        return BossFeatures()
    @property
    def meshRepairFeatures(self) -> MeshRepairFeatures:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the collection that provides access to the mesh repair features within the component
        and supports the creation of new mesh repair features.
        """
        return MeshRepairFeatures()
    @property
    def meshSmoothFeatures(self) -> MeshSmoothFeatures:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the collection that provides access to the mesh smooth features within the component
        and supports the creation of new mesh smooth features.
        """
        return MeshSmoothFeatures()
    @property
    def meshReduceFeatures(self) -> MeshReduceFeatures:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the collection that provides access to the mesh reduce features within the component
        and supports the creation of new mesh reduce features.
        """
        return MeshReduceFeatures()
    @property
    def meshRemeshFeatures(self) -> MeshRemeshFeatures:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the collection that provides access to the mesh remesh features within the component
        and supports the creation of new mesh remesh features.
        """
        return MeshRemeshFeatures()
    @property
    def meshGenerateFaceGroupsFeatures(self) -> MeshGenerateFaceGroupsFeatures:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the collection that provides access to the mesh generate facegroup features
        within the component and supports the creation of new mesh generate facegroup features.
        """
        return MeshGenerateFaceGroupsFeatures()
    @property
    def meshShellFeatures(self) -> MeshShellFeatures:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the collection that provides access to the mesh shell features
        within the component and supports the creation of new mesh shell features.
        """
        return MeshShellFeatures()
    @property
    def tessellateFeatures(self) -> TessellateFeatures:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the collection that provides access to the tessellate features
        within the component and supports the creation of new tessellate features.
        """
        return TessellateFeatures()
    @property
    def meshCombineFeatures(self) -> MeshCombineFeatures:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the collection that provides access to the mesh combine features
        within the component and supports the creation of new mesh combine features.
        """
        return MeshCombineFeatures()
    @property
    def ripFeatures(self) -> RipFeatures:
        """
        Returns the collection that provides access to the existing Rip features.
        """
        return RipFeatures()
    @property
    def meshConvertFeatures(self) -> MeshConvertFeatures:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the collection that provides access to the mesh convert features
        within the component and supports the creation of new mesh convert features.
        """
        return MeshConvertFeatures()
    @property
    def meshCombineFaceGroupsFeatures(self) -> MeshCombineFaceGroupsFeatures:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the collection that provides access to the mesh combine face groups features
        within the component and supports the creation of new mesh combine face groups features.
        """
        return MeshCombineFaceGroupsFeatures()
    @property
    def mergeFacesFeatures(self) -> MergeFacesFeatures:
        """
        Returns the collection object that supports the ability to merge faces.
        Merging faces is currently limited to a Direct Modeling design or a body in a base feature.
        The result of merging faces is a direct B-Rep modification, and the change is not represented
        as a feature in the browser.
        """
        return MergeFacesFeatures()
    @property
    def meshSeparateFeatures(self) -> MeshSeparateFeatures:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the collection that provides access to the mesh separate features
        within the component and supports the creation of new mesh separate features.
        """
        return MeshSeparateFeatures()
    @property
    def meshReverseNormalFeatures(self) -> MeshReverseNormalFeatures:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the collection that provides access to the mesh reverse normal features
        within the component and supports the creation of new mesh reverse normal features.
        """
        return MeshReverseNormalFeatures()
    @property
    def arrangeFeatures(self) -> ArrangeFeatures:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the collection that provides access to the Arrange features
        within the component and supports the creation of new Arrange features.
        """
        return ArrangeFeatures()
    @property
    def volumetricCustomFeatures(self) -> VolumetricCustomFeatures:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the collection that provides access to volumetric custom features within the component
        and supports the creation of new volumetric custom features.
        """
        return VolumetricCustomFeatures()
    @property
    def volumetricModelToMeshFeatures(self) -> VolumetricModelToMeshFeatures:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the collection that provides access to the Volumetric Model to Mesh features
        within the component and supports the creation of new Volumetric Model to Mesh features.
        """
        return VolumetricModelToMeshFeatures()
    @property
    def embossFeatures(self) -> EmbossFeatures:
        """
        Returns the collection that provides access to the emboss features
        within the component and supports the creation of new emboss features.
        """
        return EmbossFeatures()
    @property
    def hemFeatures(self) -> HemFeatures:
        """
        Returns the collection that provides access to the existing Hem features.
        """
        return HemFeatures()
    @property
    def meshRemoveFeatures(self) -> MeshRemoveFeatures:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the collection that provides access to the mesh remove features
        within the component and supports the creation of new mesh remove features.
        """
        return MeshRemoveFeatures()
    @property
    def deriveFeatures(self) -> DeriveFeatures:
        """
        Returns the collection that provides access to the Derive features
        within the component and supports the creation of new Derive features.
        """
        return DeriveFeatures()
    @property
    def cornerClosureFeatures(self) -> CornerClosureFeatures:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the collection that provides access to the existing Corner Closure features.
        """
        return CornerClosureFeatures()

class FilletEdgeSet(core.Base):
    """
    The base class for the classes that define the different types of fillet edge sets.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FilletEdgeSet:
        return FilletEdgeSet()
    def deleteMe(self) -> bool:
        """
        Deletes the fillet edge set from the fillet.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        Returns true if the operation was successful.
        """
        return bool()
    @property
    def isTangentChain(self) -> bool:
        """
        Gets and sets the Tangent chain for fillet. This enables tangent chain option for fillet.
        """
        return bool()
    @isTangentChain.setter
    def isTangentChain(self, value: bool):
        """
        Gets and sets the Tangent chain for fillet. This enables tangent chain option for fillet.
        """
        pass
    @property
    def continuity(self) -> SurfaceContinuityTypes:
        """
        Gets and sets the continuity of the fillet edge set. Valid values are
        TangentSurfaceContinuityType and CurvatureSurfaceContinuityType.
        """
        return SurfaceContinuityTypes()
    @continuity.setter
    def continuity(self, value: SurfaceContinuityTypes):
        """
        Gets and sets the continuity of the fillet edge set. Valid values are
        TangentSurfaceContinuityType and CurvatureSurfaceContinuityType.
        """
        pass
    @property
    def tangencyWeight(self) -> ModelParameter:
        """
        Returns the model parameter that controls the G1 or G2 tangency weight of the fillet.
        It must be a real value between 0.1 and 2.0 inclusive. You can edit the tangency weight
        by using the properties on the returned ModelParameter object.
        """
        return ModelParameter()

class FilletEdgeSetInput(core.Base):
    """
    Represents the input to define a fillet edge set.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FilletEdgeSetInput:
        return FilletEdgeSetInput()
    @property
    def entities(self) -> core.ObjectCollection:
        """
        Gets and sets the entities associated with this fillet edge set. For constant radius and chord length
        edge sets, this can be edges, faces, and features. For variable radius edges sets, this must be edges.
        """
        return core.ObjectCollection()
    @entities.setter
    def entities(self, value: core.ObjectCollection):
        """
        Gets and sets the entities associated with this fillet edge set. For constant radius and chord length
        edge sets, this can be edges, faces, and features. For variable radius edges sets, this must be edges.
        """
        pass
    @property
    def continuity(self) -> SurfaceContinuityTypes:
        """
        Gets and sets the continuity of the fillet edge set. Valid values are
        TangentSurfaceContinuityType and CurvatureSurfaceContinuityType. The default
        is TangentSurfaceContinuityType.
        
        For an asymmetric fillet edge set, this must always be tangent continuity (G1)
        and setting it to another value will fail.
        """
        return SurfaceContinuityTypes()
    @continuity.setter
    def continuity(self, value: SurfaceContinuityTypes):
        """
        Gets and sets the continuity of the fillet edge set. Valid values are
        TangentSurfaceContinuityType and CurvatureSurfaceContinuityType. The default
        is TangentSurfaceContinuityType.
        
        For an asymmetric fillet edge set, this must always be tangent continuity (G1)
        and setting it to another value will fail.
        """
        pass
    @property
    def tangencyWeight(self) -> core.ValueInput:
        """
        Gets and sets the tangency weight for the given edge set. The tangency weight controls the influence
        of the continuity (G1 or G2) on the fillet. The ValueInput must be a real value between 0.1 and 2.0 inclusive,
        with no units. The default value is 1.0.
        """
        return core.ValueInput()
    @tangencyWeight.setter
    def tangencyWeight(self, value: core.ValueInput):
        """
        Gets and sets the tangency weight for the given edge set. The tangency weight controls the influence
        of the continuity (G1 or G2) on the fillet. The ValueInput must be a real value between 0.1 and 2.0 inclusive,
        with no units. The default value is 1.0.
        """
        pass

class FilletEdgeSetInputs(core.Base):
    """
    Collection of edge sets associated with the input object that will be used
    to create the new fillet feature. Use the various add methods on this object
    to add new edge sets to the input object.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FilletEdgeSetInputs:
        return FilletEdgeSetInputs()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> FilletEdgeSetInput:
        return None
    def __iter__(self) -> Iterator[FilletEdgeSetInput]:
        return None
    def item(self, index: int) -> FilletEdgeSetInput:
        """
        Function that returns the specified fillet edge set input 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.
        The edge sets are returned in the same order they were created in.
        Returns the specified item or null if an invalid index was specified.
        """
        return FilletEdgeSetInput()
    def addConstantRadiusEdgeSet(self, entities: core.ObjectCollection, radius: core.ValueInput, isTangentChain: bool) -> ConstantRadiusFilletEdgeSetInput:
        """
        Adds a constant radius fillet edge set to the fillet feature input. Some settings are initialized
        with a default value and can be set by modifying properties on the returned ConstantRadiusFilletEdgeSetInput object.
        entities : An ObjectCollection containing the BRepEdge, BRepFace, and Feature objects to be filleted. If the isTangentChain argument is true
        additional edges or faces may also get filleted if they are tangentially connected to any of the
        input edges or faces.
        radius : A ValueInput object that defines the radius of the fillet. If the ValueInput uses
        a real then it is interpreted as centimeters. If it is a string then the units
        can be defined as part of the string (i.e. "2 in") or if no units are specified
        it is interpreted using the current default units for length.
        isTangentChain : A boolean value for setting whether or not edges that are tangentially connected to
        the input edges (if any) will also be filleted.
        Returns the newly created ConstantRadiusFilletEdgeSetInput. This object provides access to additional settings.
        """
        return ConstantRadiusFilletEdgeSetInput()
    def addVariableRadiusEdgeSet(self, tangentEdges: core.ObjectCollection, startRadius: core.ValueInput, endRadius: core.ValueInput, isTangentChain: bool) -> VariableRadiusFilletEdgeSetInput:
        """
        Adds a single edge or set of tangent edges to the fillet feature input. Some settings are initialized
        with a default value and can be set by modifying properties on the returned VariableRadiusFilletEdgeSetInput object.
        tangentEdges : An object collection containing a single edge or multiple edges. Multiple edges
        must be tangentially connected and added to the collection in their connected order. If a single edge
        is input, you can use the isTangentChain argument to automatically find any tangentially connected edges.
        startRadius : A ValueInput object that defines the starting radius of the fillet. If a single edge is
        being filleted, the start radius is at the start end of the edge. If multiple tangent
        edges are being filleted the start radius is the start end of the first edge in the
        collection.
        
        If the ValueInput uses a real then it is interpreted as centimeters. If it is a string then
        the units can be defined as part of the string (i.e. "2 in") or if no units are specified
        it is interpreted using the current default units for length.
        endRadius : A ValueInput object that defines the ending radius of the fillet. If a single edge is
        being filleted, the end radius is at the end of the edge. If multiple tangent
        edges are being filleted the end radius is the open end of the last edge in the
        collection.
        
        If the ValueInput uses a real then it is interpreted as centimeters. If it is a string then
        the units can be defined as part of the string (i.e. "2 in") or if no units are specified
        it is interpreted using the current default units for length.
        isTangentChain : A boolean value for setting whether or not edges that are tangentially connected to the single
        input edge will also be filleted.
        Returns the newly created VariableRadiusFilletEdgeSetInput. This object provides access to additional settings.
        """
        return VariableRadiusFilletEdgeSetInput()
    def addChordLengthEdgeSet(self, entities: core.ObjectCollection, chordLength: core.ValueInput, isTangentChain: bool) -> ChordLengthFilletEdgeSetInput:
        """
        Adds a set of edges to be filleted with a chord length fillet to the fillet feature input. Some settings are
        initialized with a default value and can be set by modifying properties on the returned ChordLengthFilletEdgeSetInput object.
        entities : An ObjectCollection containing the BRepEdge, BRepFace, and Feature objects to be filleted. If the isTangentChain argument is true
        additional edges or faces may also get filleted if they are tangentially connected to any of the
        input edges or faces.
        chordLength : A ValueInput object that defines the chord length of the fillet. If the ValueInput uses
        a real value then it is interpreted as centimeters. If it is a string then the units
        can be defined as part of the string (i.e. "2 in") or if no units are specified
        it is interpreted using the current document units for length.
        isTangentChain : A boolean value for setting whether or not edges or faces that are tangentially connected to
        the input edges or faces (if any) will also be filleted.
        Returns the newly created ChordLengthFilletEdgeSetInput. This object provides access to additional settings.
        """
        return ChordLengthFilletEdgeSetInput()
    def addAsymmetricRadiusEdgeSet(self, entities: core.ObjectCollection, offsetOne: core.ValueInput, offsetTwo: core.ValueInput, isTangentChain: bool) -> AsymmetricFilletEdgeSetInput:
        """
        Adds an asymmetric fillet edge set to the fillet feature input. Some settings are initialized with a
        default value and can be set by modifying properties on the returned AsymmetricFilletEdgeSetInput object.
        entities : An ObjectCollection containing the BRepEdge, BRepFace, and Feature objects to be filleted. If the isTangentChain argument is true
        additional edges or faces may also get filleted if they are tangentially connected to any of the
        input edges or faces.
        offsetOne : A ValueInput object that defines the offset of the fillet in the first direction. If the ValueInput uses
        a real then it is interpreted as centimeters. If it is a string then the units
        can be defined as part of the string (i.e. "2 in") or if no units are specified
        it is interpreted using the current default units for length.
        offsetTwo : A ValueInput object that defines the offset of the fillet in the second direction. If the ValueInput uses
        a real then it is interpreted as centimeters. If it is a string then the units
        can be defined as part of the string (i.e. "2 in") or if no units are specified
        it is interpreted using the current default units for length.
        isTangentChain : A boolean value for setting whether or not edges or faces that are tangentially connected to
        the input edges or faces will also be filleted.
        Returns the newly created AsymmetricFilletEdgeSetInput. This object provides access to additional settings.
        """
        return AsymmetricFilletEdgeSetInput()
    @property
    def count(self) -> int:
        """
        The number of fillet edge set input objects in the collection.
        """
        return int()

class FilletEdgeSets(core.Base):
    """
    Collection that provides access to all of the existing fillet edge sets associated with a fillet feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FilletEdgeSets:
        return FilletEdgeSets()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> FilletEdgeSet:
        return None
    def __iter__(self) -> Iterator[FilletEdgeSet]:
        return None
    def item(self, index: int) -> FilletEdgeSet:
        """
        Function that returns the specified fillet edge set 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 FilletEdgeSet()
    def addConstantRadiusEdgeSet(self, entities: core.ObjectCollection, radius: core.ValueInput, isTangentChain: bool) -> ConstantRadiusFilletEdgeSet:
        """
        Adds a set of edges with a constant radius to this fillet feature.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        entities : An ObjectCollection containing the BRepEdge, BRepFace, and Feature objects to be filleted. If the isTangentChain argument is true
        additional edges or faces may also get filleted if they are tangentially connected to any of the
        input edges or faces.
        radius : A ValueInput object that defines the radius of the fillet. If the ValueInput uses
        a real then it is interpreted as centimeters. If it is a string then the units
        can be defined as part of the string (i.e. "2 in") or if no units are specified
        it is interpreted using the current default units for length.
        isTangentChain : A boolean value for setting whether or not edges that are tangentially connected to
        the input edges (if any) will also be filleted.
        Returns the newly created FilletEdgeSet.
        """
        return ConstantRadiusFilletEdgeSet()
    def addVariableRadiusEdgeSet(self, tangentEdges: core.ObjectCollection, startRadius: core.ValueInput, endRadius: core.ValueInput, positions: list[core.ValueInput], radii: list[core.ValueInput], isTangentChain: bool) -> VariableRadiusFilletEdgeSet:
        """
        Adds a single edge or set of tangent edges along with variable radius information to this fillet feature.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        tangentEdges : An object collection containing a single edge or multiple edges. Multiple edges
        must be tangentially connected and added to the collection in their connected order. If a single edge
        is input, you can use the isTangentChain argument to automatically find any tangentially connected edges.
        startRadius : A ValueInput object that defines the starting radius of the fillet. If a single edge is
        being filleted, the start radius is at the start end of the edge. If multiple tangent
        edges are being filleted the start radius is the open end of the first edge in the
        collection.
        
        If the ValueInput uses a real then it is interpreted as centimeters. If it is a string then
        the units can be defined as part of the string (i.e. "2 in") or if no units are specified
        it is interpreted using the current default units for length.
        endRadius : A ValueInput object that defines the ending radius of the fillet. If a single edge is
        being filleted, the end radius is at the end of the edge. If multiple tangent
        edges are being filleted the end radius is the open end of the last edge in the
        collection.
        If the ValueInput uses a real then it is interpreted as centimeters. If it is a string then
        the units can be defined as part of the string (i.e. "2 in") or if no units are specified
        it is interpreted using the current default units for length.
        positions : An array of ValueInput objects that defines the positions of any additional radii
        along the edge(s). The value must be between 0 and 1 and defines the percentage along the
        curve where a radius is defined. The value is unitless. This array must have the same
        number of values as the array passed in for the radii argument.
        radii : An array of ValueInput objects that define the radii at positions along the edge(s).
        This array must have the same number of values as the array passed in for
        the positions argument. If the ValueInput uses a real then it is interpreted as centimeters.
        If it is a string then the units can be defined as part of the string (i.e. "2 in").
        If no units are specified it will be interpreted using the current default units for length.
        isTangentChain : A boolean value for setting whether or not edges that are tangentially connected to the single
        input edge will also be filleted.
        Returns the newly created FilletEdgeSet.
        """
        return VariableRadiusFilletEdgeSet()
    def addChordLengthEdgeSet(self, entities: core.ObjectCollection, chordLength: core.ValueInput, isTangentChain: bool) -> ChordLengthFilletEdgeSet:
        """
        Adds a set of edges with a chord length to this fillet feature.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        entities : An ObjectCollection containing the BRepEdge, BRepFace, and Feature objects to be filleted. If the isTangentChain argument is true
        additional edges or faces may also get filleted if they are tangentially connected to any of the
        input edges or faces.
        chordLength : A ValueInput object that defines the chord length of the fillet. If the ValueInput uses
        a real then it is interpreted as centimeters. If it is a string then the units
        can be defined as part of the string (i.e. "2 in") or if no units are specified
        it is interpreted using the current default units for length.
        isTangentChain : A boolean value for setting whether or not edges that are tangentially connected to
        the input edges (if any) will also be filleted.
        Returns the newly created FilletEdgeSet.
        """
        return ChordLengthFilletEdgeSet()
    def addAsymmetricRadiusEdgeSet(self, entities: core.ObjectCollection, offsetOne: core.ValueInput, offsetTwo: core.ValueInput, isTangentChain: bool) -> AsymmetricFilletEdgeSet:
        """
        Adds an asymmetric fillet edge set to the fillet feature.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        entities : An ObjectCollection containing the BRepEdge, BRepFace, and Feature objects to be filleted. If the isTangentChain argument is true
        additional edges or faces may also get filleted if they are tangentially connected to any of the
        input edges or faces.
        offsetOne : A ValueInput object that defines the offset distance of the fillet in the first direction. If the ValueInput uses
        a real then it is interpreted as centimeters. If it is a string then the units
        can be defined as part of the string (i.e. "2 in") or if no units are specified
        it is interpreted using the current default units for length.
        offsetTwo : A ValueInput object that defines the offset distance of the fillet in the second direction. If the ValueInput uses
        a real then it is interpreted as centimeters. If it is a string then the units
        can be defined as part of the string (i.e. "2 in") or if no units are specified
        it is interpreted using the current default units for length.
        isTangentChain : A boolean value for setting whether or not edges or faces that are tangentially connected to
        the input edges or faces will also be filleted.
        Returns the newly created AsymmetricFilletEdgeSet.
        """
        return AsymmetricFilletEdgeSet()
    @property
    def count(self) -> int:
        """
        The number of fillet edge sets in the collection.
        """
        return int()

class FilletFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a fillet
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FilletFeatureInput:
        return FilletFeatureInput()
    @property
    def isRollingBallCorner(self) -> bool:
        """
        Gets and sets if a rolling ball or setback solution is to be used in any corners.
        For an asymmetric fillet only a setback solution is supported, so any asymmetric
        edge sets will ignore this setting and will always be a setback corner.
        """
        return bool()
    @isRollingBallCorner.setter
    def isRollingBallCorner(self, value: bool):
        """
        Gets and sets if a rolling ball or setback solution is to be used in any corners.
        For an asymmetric fillet only a setback solution is supported, so any asymmetric
        edge sets will ignore this setting and will always be a setback corner.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass
    @property
    def edgeSetInputs(self) -> FilletEdgeSetInputs:
        """
        Gets the FilletEdgeSetInputs object that provides support to create the various types of edge
        sets that will be used to create the fillet.
        """
        return FilletEdgeSetInputs()

class FilletFeatures(core.Base):
    """
    Collection that provides access to all of the existing fillet features in a component
    and supports the ability to create new fillet features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FilletFeatures:
        return FilletFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> FilletFeature:
        return None
    def __iter__(self) -> Iterator[FilletFeature]:
        return None
    def item(self, index: int) -> FilletFeature:
        """
        Function that returns the specified fillet feature 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 FilletFeature()
    def createInput(self) -> FilletFeatureInput:
        """
        Creates a FilletFeatureInput object. Use properties and methods on this object
        to define the fillet you want to create and then use the Add method, passing in
        the FilletFeatureInput object.
        Returns the newly created FilletFeatureInput object or null if the creation failed.
        """
        return FilletFeatureInput()
    def add(self, input: FilletFeatureInput) -> FilletFeature:
        """
        Creates a new fillet feature.
        input : A FilletFeatureInput object that defines the desired fillet. Use the createInput
        method to create a new FilletFeatureInput object and then use methods on it
        (the FilletFeatureInput object) to define the fillet.
        Returns the newly created FilletFeature object or null if the creation failed.
        """
        return FilletFeature()
    def itemByName(self, name: str) -> FilletFeature:
        """
        Function that returns the specified fillet feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return FilletFeature()
    def createFullRoundFilletInput(self) -> FullRoundFilletFeatureInput:
        """
        Creates a FullRoundFilletFeatureInput object. Use properties and methods on this object
        to define the fillet you want to create and then use the addFullRoundFillet method, passing in
        the FullRoundFilletFeatureInput object.
        Returns the newly created FullRoundFilletFeatureInput object or null if the creation failed.
        """
        return FullRoundFilletFeatureInput()
    def addFullRoundFillet(self, input: FullRoundFilletFeatureInput) -> FilletFeature:
        """
        Creates a new full round fillet feature.
        input : A FullRoundFilletFeatureInput object that defines the desired fillet.
        Use the createFullRoundFilletInput method to create a new FullRoundFilletFeatureInput object
        and then use methods on it (the FullRoundFilletFeatureInput object) to define the fillet.
        Returns the newly created FilletFeature object or null if the creation failed.
        """
        return FilletFeature()
    def createRuleFilletInput(self) -> RuleFilletFeatureInput:
        """
        Creates a RuleFilletFeatureInput object. Use properties and methods on this object
        to define the fillet you want to create and then use the addRuleFillet method, passing in
        the RuleFilletFeatureInput object.
        Returns the newly created RuleFilletFeatureInput object or null if the creation failed.
        """
        return RuleFilletFeatureInput()
    def addRuleFillet(self, input: RuleFilletFeatureInput) -> FilletFeature:
        """
        Creates a new rule fillet feature.
        input : A RuleFilletFeatureInput object that defines the desired fillet.
        Use the createRuleFilletInput method to create a new RuleFilletFeatureInput object
        and then use methods on it(the RuleFilletFeatureInput object) to define the fillet.
        Returns the newly created FilletFeature object or null if the creation failed.
        """
        return FilletFeature()
    @property
    def count(self) -> int:
        """
        The number of fillet features in the collection.
        """
        return int()

class FlangeFeatures(core.Base):
    """
    Collection that provides access to all of the existing flange features in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FlangeFeatures:
        return FlangeFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> FlangeFeature:
        return None
    def __iter__(self) -> Iterator[FlangeFeature]:
        return None
    def item(self, index: int) -> FlangeFeature:
        """
        Function that returns the specified flange feature 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 FlangeFeature()
    def itemByName(self, name: str) -> FlangeFeature:
        """
        Function that returns the specified flange feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return FlangeFeature()
    @property
    def count(self) -> int:
        """
        The number of flange features in the collection.
        """
        return int()

class FormFeatures(core.Base):
    """
    Collection that provides access to all of the existing Form features in a component.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FormFeatures:
        return FormFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> FormFeature:
        return None
    def __iter__(self) -> Iterator[FormFeature]:
        return None
    def item(self, index: int) -> FormFeature:
        """
        Function that returns the specified Form feature 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 FormFeature()
    def itemByName(self, name: str) -> FormFeature:
        """
        Function that returns the specified form feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return FormFeature()
    def add(self) -> FormFeature:
        """
        Creates a new empty form feature in the parent component.
        Returns the new FormFeature or null in the case of an error.
        """
        return FormFeature()
    @property
    def count(self) -> int:
        """
        The number of Form features in the collection.
        """
        return int()

class FullRoundFilletFaceSet(core.Base):
    """
    The class for the full round fillet face set.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FullRoundFilletFaceSet:
        return FullRoundFilletFaceSet()
    def deleteMe(self) -> bool:
        """
        Deletes the full round fillet face set from the fillet.
        
        When this face set is associated with an existing fillet feature, to use this method you
        need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True).
        Returns true if the operation was successful.
        """
        return bool()
    @property
    def centerFace(self) -> BRepFace:
        """
        Gets the center face associated with this full round fillet face set.
        When a center face has tangentially connected faces then
        all the tangentially connected faces will be filleted automatically.
        
        When this face set is associated with an existing fillet feature, to get the center face you
        need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True).
        """
        return BRepFace()
    @property
    def sideOneFaces(self) -> list[BRepFace]:
        """
        Gets the side one faces.
        
        When this face set is associated with an existing fillet feature, to get the side one faces you
        need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True).
        """
        return [BRepFace()]
    @property
    def sideTwoFaces(self) -> list[BRepFace]:
        """
        Gets the side two faces.
        
        When this face set is associated with an existing fillet feature, to get the side two faces you
        need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True).
        """
        return [BRepFace()]
    @property
    def areAutomaticSideFaces(self) -> bool:
        """
        Property that returns a boolean value indicating whether the side faces are used as automatically inferred side faces.
        It returns true indicating that the side faces are not being shown in the dialog when the user edits the feature.
        Calling the setSideFaces method will cause this property to be changed to false.
        """
        return bool()

class FullRoundFilletFaceSets(core.Base):
    """
    Collection that provides access to all existing full round fillet face sets associated with a full round fillet feature
    or a FullRoundFilletFeatureInput object, and allows adding new full round fillet face sets.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FullRoundFilletFaceSets:
        return FullRoundFilletFaceSets()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> FullRoundFilletFaceSet:
        return None
    def __iter__(self) -> Iterator[FullRoundFilletFaceSet]:
        return None
    def item(self, index: int) -> FullRoundFilletFaceSet:
        """
        Function that returns the specified full round fillet face set 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 FullRoundFilletFaceSet()
    def add(self, centerFace: BRepFace, sideOneFaces: list[BRepFace], sideTwoFaces: list[BRepFace], areAutomaticSideFaces: bool = True) -> FullRoundFilletFaceSet:
        """
        Adds a set of faces to be filleted to the full round fillet feature.
        
        When this face set is associated with an existing fillet feature, to use this method you
        need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True).
        centerFace : Input a BRepFace object that specifies the center face to be filleted.
        
        When specifying a center face which has tangentially connected faces then
        all the tangentially connected faces will be filleted automatically.
        sideOneFaces : Input array of BRepFace objects to specify the side one faces.
        Only one BRepFace object which is adjacent to the center face can be provided if you set areAutomaticSideFaces to true.
        sideTwoFaces : Input array of BRepFace objects to specify the side two faces.
        Only one BRepFace object which is adjacent to the center face can be provided if you set areAutomaticSideFaces to true.
        areAutomaticSideFaces : Optional input boolean that specifies whether the input side faces are used as automatically inferred side faces.
        It defaults to true, which results in the side faces not being shown in the dialog when the user edits the feature.
        The same as when the user infers the side faces from the center face selection.
        When this is set to false, the side faces will be shown in the dialog as if the user had used the side face selection inputs when creating the feature.
        For the default to apply the input must meet the requirements that one side one face and one side two face is input
        and those faces are connected to the center face.
        Returns the newly created FullRoundFilletFaceSet or null in the case of failure.
        """
        return FullRoundFilletFaceSet()
    @property
    def count(self) -> int:
        """
        The number of full round fillet face sets in the collection.
        """
        return int()

class FullRoundFilletFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a full round fillet feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FullRoundFilletFeatureInput:
        return FullRoundFilletFeatureInput()
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass
    @property
    def faceSets(self) -> FullRoundFilletFaceSets:
        """
        Gets the FullRoundFilletFaceSets object that provides support to create the face
        sets that will be used to create the full round fillet.
        """
        return FullRoundFilletFaceSets()

class GeometricConstraint(core.Base):
    """
    The base class for all geometric constraints.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> GeometricConstraint:
        return GeometricConstraint()
    def deleteMe(self) -> bool:
        """
        Deletes this constraint. The IsDeletable property can be used to determine if this
        constraint can be deleted.
        Returns true if the delete was successful.
        """
        return bool()
    @property
    def isDeletable(self) -> bool:
        """
        Indicates if this constraint is deletable.
        """
        return bool()
    @property
    def parentSketch(self) -> Sketch:
        """
        Returns the parent sketch object.
        """
        return Sketch()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this object
        in an assembly. This is only valid in the case where this is acting
        as a proxy in an assembly. Returns null in the case where the object
        is not in the context of an assembly but is already the native object.
        """
        return Occurrence()
    @property
    def attributes(self) -> core.Attributes:
        """
        Returns the collection of attributes associated with this geometric constraint.
        """
        return core.Attributes()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the GeometricConstraint object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same geometric constraint.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        """
        return str()

class GeometricConstraintList(core.Base):
    """
    A list of geometric constraints.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> GeometricConstraintList:
        return GeometricConstraintList()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> GeometricConstraint:
        return None
    def __iter__(self) -> Iterator[GeometricConstraint]:
        return None
    def item(self, index: int) -> GeometricConstraint:
        """
        Function that returns the specified geometry constraint 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 GeometricConstraint()
    @property
    def count(self) -> int:
        """
        Returns the number of constraints in the sketch.
        """
        return int()

class GeometricConstraints(core.Base):
    """
    A collection of all of the geometric constraints in a sketch. This object
    also supports the methods to create new geometric constraints.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> GeometricConstraints:
        return GeometricConstraints()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> GeometricConstraint:
        return None
    def __iter__(self) -> Iterator[GeometricConstraint]:
        return None
    def item(self, index: int) -> GeometricConstraint:
        """
        Function that returns the specified sketch constraint 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 GeometricConstraint()
    def addCoincident(self, point: SketchPoint, entity: SketchEntity) -> CoincidentConstraint:
        """
        Creates a new coincident constraint between two entities. The first argument
        is a sketch point. The second argument is a sketch curve or point.
        point : The SketchPoint that will be made coincident.
        entity : The SketchPoint or sketch curve that the point will be made coincident to.
        Returns the newly created CoincidentConstraint object or null if the creation failed.
        """
        return CoincidentConstraint()
    def addCollinear(self, lineOne: SketchLine, lineTwo: SketchLine) -> CollinearConstraint:
        """
        Creates a new collinear constraint between two lines.
        lineOne : The first line to create the constraint on.
        lineTwo : The second line to create the constraint on.
        Returns the newly created CollinearConstraint object or null if the creation failed.
        """
        return CollinearConstraint()
    def addConcentric(self, entityOne: SketchCurve, entityTwo: SketchCurve) -> ConcentricConstraint:
        """
        Creates a new concentric constraint between two circles, arcs, ellipses, or elliptical arcs.
        entityOne : The first circle, arc, ellipse or elliptical arc.
        entityTwo : The second circle, arc, ellipse or elliptical arc.
        Returns the newly created ConcentricConstraint object or null if the creation failed.
        """
        return ConcentricConstraint()
    def addMidPoint(self, point: SketchPoint, midPointCurve: SketchCurve) -> MidPointConstraint:
        """
        Creates a new midpoint constraint between a point and a curve.
        point : The point to constrain to the midpoint of a curve.
        midPointCurve : The curve that defines the midpoint to constraint to.
        Returns the newly created MidPointConstraint object or null if the creation failed.
        """
        return MidPointConstraint()
    def addParallel(self, lineOne: SketchLine, lineTwo: SketchLine) -> ParallelConstraint:
        """
        Creates a new parallel constraint between two lines.
        lineOne : The first SketchLine.
        lineTwo : The second SketchLine.
        Returns the newly created ParallelConstraint object or null if the creation failed.
        """
        return ParallelConstraint()
    def addPerpendicular(self, lineOne: SketchLine, lineTwo: SketchLine) -> PerpendicularConstraint:
        """
        Creates a new perpendicular constraint between two lines.
        lineOne : The first SketchLine.
        lineTwo : The second SketchLine.
        Returns the newly created PerpendicularConstraint object or null if the creation failed.
        """
        return PerpendicularConstraint()
    def addHorizontal(self, line: SketchLine) -> HorizontalConstraint:
        """
        Creates a new horizontal constraint on a line.
        line : The line to constrain horizontally.
        Returns the newly created HorizontalConstraint object or null if the creation failed.
        """
        return HorizontalConstraint()
    def addHorizontalPoints(self, pointOne: SketchPoint, pointTwo: SketchPoint) -> HorizontalPointsConstraint:
        """
        Creates a new horizontal constraint between two points.
        pointOne : The first SketchPoint to constrain horizontally.
        pointTwo : The second SketchPoint to constrain horizontally.
        Returns the newly created HorizontalPointsConstraint object or null if the creation failed.
        """
        return HorizontalPointsConstraint()
    def addVertical(self, line: SketchLine) -> VerticalConstraint:
        """
        Creates a new vertical constraint on a line.
        line : The line to constrain vertically.
        Returns the newly created VerticalConstraint object or null if the creation failed.
        """
        return VerticalConstraint()
    def addVerticalPoints(self, pointOne: SketchPoint, pointTwo: SketchPoint) -> VerticalPointsConstraint:
        """
        Creates a new vertical constraint between two points.
        pointOne : The first SketchPoint to constrain vertically.
        pointTwo : The second SketchPoint to constrain vertically.
        Returns the newly created VerticalPointsConstraint object or null if the creation failed.
        """
        return VerticalPointsConstraint()
    def addTangent(self, curveOne: SketchCurve, curveTwo: SketchCurve) -> TangentConstraint:
        """
        Creates a new tangent constraint between two curves.
        curveOne : The first curve to be tangent.
        curveTwo : The second curve to be tangent.
        Returns the newly created TangentConstraint object or null if the creation failed.
        """
        return TangentConstraint()
    def addSmooth(self, curveOne: SketchCurve, curveTwo: SketchCurve) -> SmoothConstraint:
        """
        Creates a new smooth constraint between two curves. One of the curves
        must be a spline. The other curve can be a spline or any other type of curve.
        curveOne : The first curve to be constrained to be smooth to the second curve.
        curveTwo : The second curve to be constrained to be smooth to the first curve.
        Returns the newly created SmoothConstraint object or null if the creation failed.
        """
        return SmoothConstraint()
    def addEqual(self, curveOne: SketchCurve, curveTwo: SketchCurve) -> EqualConstraint:
        """
        Creates a new equal constraint between two lines, or between arcs and circles.
        curveOne : The first line, arc, or circle.
        curveTwo : The second line, arc, or circle.
        Returns the newly created EqualConstraint object or null if the creation failed.
        """
        return EqualConstraint()
    def addSymmetry(self, entityOne: SketchEntity, entityTwo: SketchEntity, symmetryLine: SketchLine) -> SymmetryConstraint:
        """
        Creates a new symmetry constraint.
        entityOne : The first sketch entity to be symmetric.
        entityTwo : The second sketch entity to be symmetric. It must be the same type as the first entity.
        symmetryLine : The SketchLine that defines the axis of symmetry.
        Returns the newly created SymmetryConstraint object or null if the creation failed.
        """
        return SymmetryConstraint()
    def createRectangularPatternInput(self, entities: list[SketchEntity], distanceType: PatternDistanceType) -> RectangularPatternConstraintInput:
        """
        Creates a new RectangularPatternConstraintInput object. Use this object to define the various settings
        associated with a rectangular pattern in a sketch. Once the pattern is defined you can call the addRectangularPattern
        method and pass in the input object to create the sketch rectangular pattern.
        entities : An array of sketch entities to pattern. These can be sketch points and curves.
        distanceType : Specifies if the distances defined for the pattern define the overall size of the pattern or the distance between the rows and columns.
        Returns the created RectangularPatternsConstraintInput object or null in the case of failure.
        """
        return RectangularPatternConstraintInput()
    def addRectangularPattern(self, input: RectangularPatternConstraintInput) -> RectangularPatternConstraint:
        """
        Creates a new rectangular pattern in the sketch.
        input : A RectangularPatternConstraintInput object that defines all of inputs required to create
        the desired rectangular pattern. Use the createRectangularPatternInput method to create the
        input object.
        
        """
        return RectangularPatternConstraint()
    def createCircularPatternInput(self, inputEntities: list[SketchEntity], centerPoint: SketchPoint) -> CircularPatternConstraintInput:
        """
        Creates a CircularPatternConstraintInput object. Use properties and methods on this object
        to define the circular pattern you want to create and then use the Add method, passing in
        the CircularPatternConstraintInput object.
        inputEntities : An array of sketch entities to be patterned.
        All of the entities must be from the current sketch.
        centerPoint : A SketchPoint from the same sketch that defines the center of the pattern.
        Returns the newly created CircularPatternConstraintInput object or null if the creation failed.
        """
        return CircularPatternConstraintInput()
    def addCircularPattern(self, input: CircularPatternConstraintInput) -> CircularPatternConstraint:
        """
        Creates a new circular pattern in the sketch.
        input : A CircularPatternConstraintInput object that defines the desired circular pattern. Use the
        createCircularPatternInput method to create a new CircularPatternConstraintInput
        object and then use methods on it to define the circular pattern.
        Returns the newly created CircularPatternConstraint object or null if the creation failed.
        """
        return CircularPatternConstraint()
    def addCoincidentToSurface(self, point: SketchPoint, surface: core.Base) -> CoincidentToSurfaceConstraint:
        """
        Creates a new coincident constraint between the sketch point and surface. This forces the point to
        lie on the surface.
        point : The SketchPoint to constrain to the surface.
        surface : The BRepFace or ConstructionPlane the point will be coincident to.
        Returns the newly created CoincidentToSurfaceConstraint object or null if the creation failed.
        """
        return CoincidentToSurfaceConstraint()
    def addLineParallelToPlanarSurface(self, line: SketchLine, planarSurface: core.Base) -> LineParallelToPlanarSurfaceConstraint:
        """
        Creates a new parallel constraint between a sketch line and a planar surface that will constrain
        the line to lie on a plane parallel to the specified surface.
        line : The SketchLine to constrain to the surface.
        planarSurface : The planar BRepFace or CosntructionPlane the sketch line will be parallel to.
        Returns the newly created LineParallelToPlanarSurfaceConstraint object or null if the creation failed.
        """
        return LineParallelToPlanarSurfaceConstraint()
    def addLineOnPlanarSurface(self, line: SketchLine, planarSurface: core.Base) -> LineOnPlanarSurfaceConstraint:
        """
        Creates a new constraint that forces the sketch line to lie on a planar surface.
        line : The SketchLine to constrain to the surface.
        planarSurface : The planar BRepFace or CosntructionPlane the sketch line will lie on.
        Returns the newly created LineOnPlanarSurfaceConstraint object or null if the creation failed.
        """
        return LineOnPlanarSurfaceConstraint()
    def addPerpendicularToSurface(self, curve: SketchCurve, surface: core.Base) -> PerpendicularToSurfaceConstraint:
        """
        Creates a new perpendicular constraint that forces the sketch curve to be perpendicular to the specified surface. Line and spline curves are supported.
        curve : The SketchCurve to constrain to the surface.
        surface : The BRepFace or ConstructionPlane the line will be perpendicular to.
        Returns the newly created PerpendicularToSurfaceConstraint object or null if the creation failed.
        """
        return PerpendicularToSurfaceConstraint()
    def createOffsetInput(self, curves: list[SketchCurve], offset: core.ValueInput) -> OffsetConstraintInput:
        """
        Creates an OffsetConstraintInput object. Use properties and methods on this object to define the offset you
        want to create and then use the addOffset2 method, passing in the OffsetConstraintInput object, to create the offset.
        curves : A set of end connected curves. The Sketch.FindConnectedCurves method is a convenient way to get
        this set of curves.
        offset : The value that defines the offset. This is a ValueInput object so it can be a float value to define the offset
        in centimeters or it can be a string defining an expression that will be used by the parameter controlling the
        offset. A positive offset value creates the offset curve to the "right" and a negative offset value goes to the "left".
        
        The flow direction of the provided curves implies the offset direction. For example, if two connected lines
        are offset, the flow direction is from line 1 to line 2. Left and right are evaluated relative to the input
        geometry. If you are standing on line 1 and looking towards line 2, the offset's left side is on your left,
        and the right side is to your right. Closed single curves like circles and ellipses always have a counterclockwise
        flow, so a positive offset is always to the outside. For closed splines, the positive direction is based on
        the spline's parameterization.
        Returns an OffsetConstraintInput object or null in the case of invalid input.
        """
        return OffsetConstraintInput()
    def addOffset2(self, input: OffsetConstraintInput) -> OffsetConstraint:
        """
        Creates an offset constraint, which results in creating a new set of curves that are an offset of
        the input curves. The returned offset constraint object provides access to the created curves and the
        parameter controlling the offset.
        input : The OffsetConstraintInput object that defines the offset to create.
        Returns the newly created OffsetConstraint object or null if the creation failed.
        """
        return OffsetConstraint()
    def addTwoSidesOffset(self, input: OffsetConstraintInput, linkOffsets: bool) -> list[OffsetConstraint]:
        """
        Creates two offset constraints, which results in creating two new sets of curves that are an offset of
        the input curves on each side of the original set of curves. The returned offset constraint objects
        provide access to the created curves and the parameters controlling the offsets.
        input : The OffsetConstraintInput object that defines the offset to create. The same definition applies to
        both offsets that are created.
        linkOffsets : Defines if the parameter driving the offset of the second side should reference the parameter of
        the first side. This sets up the parameters so if the first side is edited, the second side will
        automatically update using the same value. A value of true will create the linked parameter.
        Returns an array containing the two OffsetConstraint objects or errors if the creation failed.
        """
        return [OffsetConstraint()]
    def addPolygon(self, lines: list[SketchLine]) -> PolygonConstraint:
        """
        Creates a polygon constraint on existing lines in the sketch.
        lines : An array of existing SketchLine objects in this sketch that define a valid polygon.
        They must be the same length, connect at their endpoints, have the same angle between them,
        and define a closed shape. The order of the lines within the array does not matter.
        Returns the created PolygonConstraint or null if the creation failed.
        """
        return PolygonConstraint()
    @property
    def count(self) -> int:
        """
        Returns the number of constraints in the sketch.
        """
        return int()

class GeometricRelationship(core.Base):
    """
    This object represents a pair of entity inputs that are used when inferring a joint from geometry
    or for an assembly constraint.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> GeometricRelationship:
        return GeometricRelationship()
    def redefineOffsetOrAngle(self, isMate: bool, offsetOrAngleValue: core.ValueInput) -> bool:
        """
        This method redefines an existing geometric relationship by defining if it is a mate or
        angle and specifying a new value.
        
        If the GeometricRelationship is associated with an existing joint or assembly constraint
        (the isTemporary property is false), you need to position the timeline marker immediately
        before the joint or assembly constraint. This can be accomplished using the following code:
        thisJointOrConstraint.timelineObject.rollTo(True).
        isMate : This argument indicates if the geometric relationship defines a mate or an angle. A value
        of true indicates a mate relationship.
        offsetOrAngleValue : This argument specifies the value associated with the geometric relationship. If isMate
        is true, the value is a length, and if it is a real value, then it is centimeters. If it
        is a string, it is an expression that must evaluate to a length. If isMate is False,
        the value is an angle, and if it is a real value, then it is radians. If it is a string,
        it is an expression that must evaluate to an angle.
        Returns true if the redefinition was successful.
        """
        return bool()
    def deleteMe(self) -> bool:
        """
        This method deletes this geometric relationship.
        
        If the isTemporary property is True, it removes it from the input object.
        
        If the GeometricRelationship is associated with an existing joint or assembly constraint
        (the isTemporary property is false), you need to position the timeline marker immediately
        before the joint or assembly constraint. This can be accomplished using the following code:
        thisJointOrConstraint.timelineObject.rollTo(True).
        Returns true if the delete was successful.
        """
        return bool()
    @property
    def isSuppressed(self) -> bool:
        """
        Gets and sets if this relationship is suppressed. This property is only valid when this geometric
        relationship is associated with an existing AssemblyConstraint. Otherwise, getting the value of
        this property will always return false, and setting it will be ignored.
        """
        return bool()
    @isSuppressed.setter
    def isSuppressed(self, value: bool):
        """
        Gets and sets if this relationship is suppressed. This property is only valid when this geometric
        relationship is associated with an existing AssemblyConstraint. Otherwise, getting the value of
        this property will always return false, and setting it will be ignored.
        """
        pass
    @property
    def name(self) -> str:
        """
        Returns the name of the constraint as seen in the browser. This property will only return a name
        when the geometric relationship is associated with an existing AssemblyConstraint or inferred
        Joint (the isTemporary property is false). Otherwise, it will return an empty string.
        """
        return str()
    @property
    def entityOne(self) -> core.Base:
        """
        Gets and sets the first entity in the relationship. The entity can be a BRepFace, BRepedge,
        BRepVertex, SketchPoint, SketchCurve, ConstructionPlane, ConstructionAxis, or ConstructionPoint object.
        
        If the GeometricRelationship is associated with an existing joint or assembly constraint
        (the isTemporary property is false), you need to position the timeline marker immediately
        before the joint or assembly constraint. This can be accomplished using the following code:
        thisJointOrConstraint.timelineObject.rollTo(True).
        """
        return core.Base()
    @entityOne.setter
    def entityOne(self, value: core.Base):
        """
        Gets and sets the first entity in the relationship. The entity can be a BRepFace, BRepedge,
        BRepVertex, SketchPoint, SketchCurve, ConstructionPlane, ConstructionAxis, or ConstructionPoint object.
        
        If the GeometricRelationship is associated with an existing joint or assembly constraint
        (the isTemporary property is false), you need to position the timeline marker immediately
        before the joint or assembly constraint. This can be accomplished using the following code:
        thisJointOrConstraint.timelineObject.rollTo(True).
        """
        pass
    @property
    def entityTwo(self) -> core.Base:
        """
        Gets and sets the second entity in the relationship. The entity can be a BRepFace, BRepedge,
        BRepVertex, SketchPoint, SketchCurve, ConstructionPlane, ConstructionAxis, or ConstructionPoint object.
        
        If the GeometricRelationship is associated with an existing joint or assembly constraint
        (the isTemporary property is false), you need to position the timeline marker immediately
        before the joint or assembly constraint. This can be accomplished using the following code:
        thisJointOrConstraint.timelineObject.rollTo(True).
        """
        return core.Base()
    @entityTwo.setter
    def entityTwo(self, value: core.Base):
        """
        Gets and sets the second entity in the relationship. The entity can be a BRepFace, BRepedge,
        BRepVertex, SketchPoint, SketchCurve, ConstructionPlane, ConstructionAxis, or ConstructionPoint object.
        
        If the GeometricRelationship is associated with an existing joint or assembly constraint
        (the isTemporary property is false), you need to position the timeline marker immediately
        before the joint or assembly constraint. This can be accomplished using the following code:
        thisJointOrConstraint.timelineObject.rollTo(True).
        """
        pass
    @property
    def isFlipped(self) -> bool:
        """
        Gets and sets if the directions of the entities are aligned or opposed. The natural direction
        is for them to be opposed, and flipping them will align them.
        
        If the GeometricRelationship is associated with an existing joint or assembly constraint
        (the isTemporary property is false), you need to position the timeline marker immediately
        before the joint or assembly constraint. This can be accomplished using the following code:
        thisJointOrConstraint.timelineObject.rollTo(True).
        """
        return bool()
    @isFlipped.setter
    def isFlipped(self, value: bool):
        """
        Gets and sets if the directions of the entities are aligned or opposed. The natural direction
        is for them to be opposed, and flipping them will align them.
        
        If the GeometricRelationship is associated with an existing joint or assembly constraint
        (the isTemporary property is false), you need to position the timeline marker immediately
        before the joint or assembly constraint. This can be accomplished using the following code:
        thisJointOrConstraint.timelineObject.rollTo(True).
        """
        pass
    @property
    def isMate(self) -> bool:
        """
        Gets and sets if this geometric relationships defines a mate or angle relationship between
        the two input entities. If true, it is a mate relationship.
        """
        return bool()
    @property
    def offsetOrAngleValue(self) -> core.ValueInput:
        """
        This property is used when creating a new joint or assembly constraint and defines the
        offset or angle associated with this geometric relationship. The value defaults to 0,
        but can be set with a ValueInput defining a length or angle. It can be either a real
        value, which will be in centimeters or radians, or a string, which is an expression
        whose units are length or angle.
        
        If the GeometricRelationship is associated with an existing joint or assembly constraint
        (the isTemporary property is false), this property will return null and fail if set. To
        get and set the value in this case you should use the offsetOrAngle property to access
        the controlling parameter.
        """
        return core.ValueInput()
    @offsetOrAngleValue.setter
    def offsetOrAngleValue(self, value: core.ValueInput):
        """
        This property is used when creating a new joint or assembly constraint and defines the
        offset or angle associated with this geometric relationship. The value defaults to 0,
        but can be set with a ValueInput defining a length or angle. It can be either a real
        value, which will be in centimeters or radians, or a string, which is an expression
        whose units are length or angle.
        
        If the GeometricRelationship is associated with an existing joint or assembly constraint
        (the isTemporary property is false), this property will return null and fail if set. To
        get and set the value in this case you should use the offsetOrAngle property to access
        the controlling parameter.
        """
        pass
    @property
    def offsetOrAngle(self) -> ModelParameter:
        """
        This property is used when the geometric relationship is associated with an existing joint
        or assembly constraint (the isTemporary property is false). It returns the parameter that
        controls the offset or angle of this geometric relationship. You can change the value
        by editing properties on the returned ModelParameter object.
        
        If this geometric relationship is associated with a JointInput object (the isTemporary
        property is true), this property returns null, and you should use the offsetOrAngleValue
        property to get and set the value.
        """
        return ModelParameter()
    @property
    def parent(self) -> core.Base:
        """
        Returns the parent AssemblyConstraint, Joint, InferredJointInput, or  AssemblyConstraintInput
        object with which this geometric relationship is associated.
        """
        return core.Base()
    @property
    def isTemporary(self) -> bool:
        """
        Specifies if this GeometricRelationship is a child of an input object is being used to create a
        new Joint or AssemblyConstraint or is being used by an existing Joint or AssemblyConstraint.
        """
        return bool()
    @property
    def angleReferenceEntity(self) -> core.Base:
        """
        This property is used to define a third vector when an angle constraint is being defined.
        This property is ignored for mate constraints.
        
        In some cases, when specifying entityOne and entityTwo for an angle constraint there
        is more than one solution. When the constraint is solved, entityOne and entityTwo each define
        a vector. When the reference entity is provided, the vectors need to follow the "right hand rule"
        with respect to the reference entity. This means the angle between the reference entity and the
        cross product of entityOne and entityTwo should be between 0 and 90 deg.
        
        The reference entity can be a planar BRepFace or a linear or circular BRepedge.
        
        This property can return and be set to null to indicate there is no reference entity.
        """
        return core.Base()
    @angleReferenceEntity.setter
    def angleReferenceEntity(self, value: core.Base):
        """
        This property is used to define a third vector when an angle constraint is being defined.
        This property is ignored for mate constraints.
        
        In some cases, when specifying entityOne and entityTwo for an angle constraint there
        is more than one solution. When the constraint is solved, entityOne and entityTwo each define
        a vector. When the reference entity is provided, the vectors need to follow the "right hand rule"
        with respect to the reference entity. This means the angle between the reference entity and the
        cross product of entityOne and entityTwo should be between 0 and 90 deg.
        
        The reference entity can be a planar BRepFace or a linear or circular BRepedge.
        
        This property can return and be set to null to indicate there is no reference entity.
        """
        pass

class GeometricRelationships(core.Base):
    """
    This object represents a set of geometry relationships. They are used when creating a new inferred
    joint or assembly constraint and querying an existing one.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> GeometricRelationships:
        return GeometricRelationships()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> GeometricRelationship:
        return None
    def __iter__(self) -> Iterator[GeometricRelationship]:
        return None
    def item(self, index: int) -> GeometricRelationship:
        """
        Function that returns the specified GeometricRelationship 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 GeometricRelationship()
    def add(self, entityOne: core.Base, entityTwo: core.Base, isMate: bool, value: core.ValueInput, biasPointOne: core.Point3D = None, biasPointTwo: core.Point3D = None) -> GeometricRelationship:
        """
        Creates a GeometricRelationship object, which defines two entities that will be used to either infer
        a joint or to create an assembly constraint.
        entityOne : Specifies the entity from the first occurrence being constrained. The entity can be a BRepFace, BRepEdge,
        BRepVertex ,SketchLine, SketchPoint, ConstructionPlane, ConstructionAxis, or ConstructionPoint object in the
        component referenced by the occurrence. It must be a proxy relative to the root component of the assembly.
        
        For an inferred joint, if multiple geometric relationships are created, the entities for entityOne must all
        be from the same occurrence.This is because a single joint will be inferred between the two occurrences.
        
        For an assembly constraint, if multiple geometric relationships are created, the entities for entityOne must
        all be from the same occurrence. This is because all the geometric relationships constrain the occurrence
        this entity is from.
        entityTwo : Specifies the entity from the second occurrence being constrained. The entity can be a BRepFace, BRepEdge,
        BRepVertex, SketchLine, SketchPoint, ConstructionPlane, ConstructionAxis, or ConstructionPoint object in the
        component referenced by the occurrence. It must be a proxy relative to the root component of the assembly.
        
        For an inferred joint, if multiple geometric relationships are created, the entities for entityTwo must all
        be from the same occurrence. This is because a single joint will be inferred between the two occurrences.
        
        For an assembly constraint, if multiple geometric relationships are created, the entities for entityTwo must
        all be from the same occurrence. This is because all the geometric relationships constrain the occurrence
        this entity is from.
        isMate : Specifies if this geometric relationship defines a mate or an angle between the two input entities.
        If true, it defines a mate; if false, it is an angle.
        value : Specifies the value associated with the geometric relationship. If isMate is true, the value is a length,
        and a real value in centimeters. If it is a string, it is an expression that must evaluate to a length.
        If the isMate argument is False, the value is an angle, and a real value in radians. If it is a string,
        it is an expression that must evaluate to an angle.
        biasPointOne : This optional argument defines a position on the first entity that will be used when positioning the two
        occurrences. In the user interface, if you select two faces and create an inferred joint, the two faces
        will be used to mate the occurrences together. Still, there are infinite possibilities of how the
        occurrences can be positioned relative to one another. The location of the selection points is used
        to determine a single result, and the occurrences will be positioned so that the selection points are
        coincident. There aren't selection points in the API, but you can optionally define points that will
        be used, like the selection points. Fusion will calculate arbitrary points on the entities if the
        bias points aren't provided. The bias points are not remembered and are only used for the initial placement.
        biasPointTwo : See the description for biasPointOne.
        Returns the GeometricRelationship object or null if the creation failed.
        """
        return GeometricRelationship()
    @property
    def count(self) -> int:
        """
        Returns number of geometric relationships in the collection.
        """
        return int()

class HemFeatureDefinition(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    A Base class to return the information used to define the HemFeature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> HemFeatureDefinition:
        return HemFeatureDefinition()
    @property
    def hemEdge(self) -> BRepEdge:
        """
        Gets and sets the input edge for a hem
        """
        return BRepEdge()
    @hemEdge.setter
    def hemEdge(self, value: BRepEdge):
        """
        Gets and sets the input edge for a hem
        """
        pass
    @property
    def isFlipped(self) -> bool:
        """
        Gets the flip direction for an open hem.
        """
        return bool()
    @isFlipped.setter
    def isFlipped(self, value: bool):
        """
        Gets the flip direction for an open hem.
        """
        pass
    @property
    def bendPositionType(self) -> BendPositionTypes:
        """
        Gets the bend position type for a hem.
        """
        return BendPositionTypes()
    @bendPositionType.setter
    def bendPositionType(self, value: BendPositionTypes):
        """
        Gets the bend position type for a hem.
        """
        pass

class HemFeatureInput(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    This class defines the methods and properties that pertain to the definition of a hem feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> HemFeatureInput:
        return HemFeatureInput()
    def setFlatHem(self, edge: BRepEdge, length: core.ValueInput, isFlipped: bool, bendPositionType: BendPositionTypes) -> bool:
        """
        Sets the hem input with the values to be used in order to create a flat hem feature.
        edge : The BRepEdge that defines the location of the hem.
        length : The length of the hem.
        isFlipped : Indicates if the hem direction is flipped.
        bendPositionType : The bend location type for the hem.
        Returns true if defining the hem is successful.
        """
        return bool()
    def setOpenHem(self, edge: BRepEdge, length: core.ValueInput, gap: core.ValueInput, isFlipped: bool, bendPositionType: BendPositionTypes) -> bool:
        """
        Sets the hem input with the values to be used in order to create an open hem feature.
        edge : The BRepEdge that defines the location of the hem.
        length : The length of the hem.
        gap : The gap distance of the hem.
        isFlipped : Indicates if the hem direction is flipped.
        bendPositionType : The bend location type for the hem.
        Returns true if defining the hem is successful.
        """
        return bool()
    def setRolledHem(self, edge: BRepEdge, radius: core.ValueInput, angle: core.ValueInput, isFlipped: bool, bendPositionType: BendPositionTypes) -> bool:
        """
        Sets the hem input with the values to be used in order to create a rolled hem feature.
        edge : The BRepEdge that defines the location of the hem.
        radius : The radius of the rolled hem.
        angle : The angle of the rolled hem.
        isFlipped : Indicates if the hem direction is flipped.
        bendPositionType : The bend location type for the hem.
        Returns true if defining the hem is successful.
        """
        return bool()
    def setRopeHem(self, edge: BRepEdge, length: core.ValueInput, gap: core.ValueInput, radius: core.ValueInput, isFlipped: bool, bendPositionType: BendPositionTypes) -> bool:
        """
        Sets the hem input with the values to be used in order to create a rope hem feature.
        edge : The BRepEdge that defines the location of the hem.
        length : The length of the rope hem.
        gap : The gap distance of the hem.
        radius : The radius of the rope hem.
        isFlipped : Indicates if the hem direction is flipped.
        bendPositionType : The bend location type for the hem.
        Returns true if defining the hem is successful.
        """
        return bool()
    def setTeardropHem(self, edge: BRepEdge, radius: core.ValueInput, length: core.ValueInput, gap: core.ValueInput, isFlipped: bool, bendPositionType: BendPositionTypes) -> bool:
        """
        Sets the hem input with the values to be used in order to create a teardrop hem feature.
        edge : The BRepEdge that defines the location of the hem.
        radius : The radius of the teardrop hem.
        length : The angle of the teardrop hem.
        gap : The gap distance of the hem.
        isFlipped : Indicates if the hem direction is flipped.
        bendPositionType : The bend location type for the hem.
        Returns true if defining the hem is successful.
        """
        return bool()
    def setDoubleHem(self, edge: BRepEdge, gap: core.ValueInput, length: core.ValueInput, setback: core.ValueInput, isFlipped: bool, bendPositionType: BendPositionTypes) -> bool:
        """
        Sets the hem input with the values to be used in order to create a double hem feature.
        edge : The BRepEdge that defines the location of the hem.
        gap : The gap distance of the hem.
        length : The length of the double hem.
        setback : The setback of the double hem.
        isFlipped : Indicates if the hem direction is flipped.
        bendPositionType : The bend location type for the hem.
        Returns true if defining the hem is successful.
        """
        return bool()

class HemFeatures(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Collection that provides access to all of the existing hem features in a design and supports the ability to create new hem features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> HemFeatures:
        return HemFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> HemFeature:
        return None
    def __iter__(self) -> Iterator[HemFeature]:
        return None
    def item(self, index: int) -> HemFeature:
        """
        Function that returns the specified hem feature 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 HemFeature()
    def itemByName(self, name: str) -> HemFeature:
        """
        Function that returns the specified hem feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return HemFeature()
    def createHemFeatureInput(self) -> HemFeatureInput:
        """
        Creates a HemFeatureInput object. Use methods on this object to define the hem you want
        to create and then use the add method, passing in the HemFeatureInput object.
        Returns the newly created HemFeatureInput object or null if the creation failed.
        """
        return HemFeatureInput()
    def add(self, input: HemFeatureInput) -> HemFeature:
        """
        Creates a new Hem feature.
        input : A HemFeatureInput object that defines the desired hem. Use the createInput
        method to create a new HemFeatureInput object and then use methods on it
        (the HemFeatureInput object) to define the hem.
        Returns the newly created HemFeature object or null if the creation failed.
        """
        return HemFeature()
    @property
    def count(self) -> int:
        """
        The number of hem features in the collection.
        """
        return int()

class HoleFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a hole
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> HoleFeatureInput:
        return HoleFeatureInput()
    def setPositionByPoint(self, planarEntity: core.Base, point: core.Base) -> bool:
        """
        Defines the position of a the hole using a point. The point can be a vertex on the face
        or it can be a Point3D object to define any location on the face. If a Point3D object is
        provided it will be projected onto the plane along the planes normal. The orientation of the
        hole is defined by the planar face or construction plane. If a vertex is used, the position of
        the hole is associative to that vertex. If a Point3D object is used the position of the hole
        is not associative.
        planarEntity : The planar BRepFace or ConstructionPlane object that defines the orientation of the hole.
        The natural direction of the hole will be opposite the normal of the face or construction plane.
        point : A Point3D object or vertex that defines the position of the hole. The point will be projected
        onto the plane along the normal of the plane.
        Returns true if successful.
        """
        return bool()
    def setPositionAtCenter(self, planarEntity: core.Base, centerEdge: BRepEdge) -> bool:
        """
        Defines the position of the hole at the center of a circular or elliptical edge of the face.
        planarEntity : The planar BRepFace or ConstructionPlane object that defines the orientation of the hole.
        The natural direction of the hole will be opposite the normal of the face or construction plane.
        centerEdge : A circular or elliptical edge whose center point will be the position of the hole.
        Returns true if successful.
        """
        return bool()
    def setPositionBySketchPoint(self, sketchPoint: SketchPoint) -> bool:
        """
        Defines the position and orientation of the hole using a sketch point.
        sketchPoint : The sketch point that defines the position of the hole. The orientation is
        inferred from the normal of the point's parent sketch. The natural direction will be
        opposite the normal of the sketch.
        Returns true if successful.
        """
        return bool()
    def setPositionByPlaneAndOffsets(self, planarEntity: core.Base, point: core.Point3D, edgeOne: BRepEdge, offsetOne: core.ValueInput, edgeTwo: BRepEdge = None, offsetTwo: core.ValueInput = None) -> bool:
        """
        Defines the orientation of the hole using a planar face or construction plane.
        The position of the hole is defined by the distance from one or two edges.
        planarEntity : The planar BRepFace or ConstructionPlane object that defines the orientation of the hole.
        The natural direction of the hole will be opposite the normal of the face or construction plane.
        point : A Point3D object that defines the approximate initial position of the hole. The point will be
        projected onto the plane. This point should be close to the final position of the hole and
        is used to determine which solution out of several possible solutions should be chosen
        for the hole location.
        
        This point is defined in the coordinate system of the native entity used for the planarEntity
        argument. For example, if the planarEntity argument is a proxy to a BRepFace, the point argument
        must be in the coordinate system of the component of the native face, not the proxy.
        edgeOne : A linear BRepEdge object that the position of the hole will be measured from. The position
        of the hole will be measured along a perpendicular from this edge.
        offsetOne : A ValueInput object that defines the offset distance from edgeOne. If the ValueInput uses
        a real then it is interpreted as centimeters. If it is a string then the units
        can be defined as part of the string (i.e. "3 in"). If no units are specified
        it is interpreted using the current default units for length.
        edgeTwo : You can optionally define a second edge and offset to specify the position of the hole. If you use a
        second edge it has the same requirements as the edgeOne argument. If you provide a second edge you
        must also provide the offsetTwo argument.
        offsetTwo : If edgeTwo is defined, you must provide this argument which is a ValueInput object that
        defines the offset from the edgeTwo. If the ValueInput uses a real then it is interpreted
        as centimeters. If it is a string then the units can be defined as part of the string
        (i.e. "3 in"). If no units are specified it is interpreted using the current default units
        for length.
        Returns true if successful.
        """
        return bool()
    def setPositionOnEdge(self, planarEntity: core.Base, edge: BRepEdge, position: HoleEdgePositions) -> bool:
        """
        Defines the position and orientation of the hole to be on the start, end or center of an edge.
        planarEntity : The planar BRepFace or ConstructionPlane object that defines the orientation of the hole
        and start of the hole. The natural direction of the hole will be opposite the normal of
        the face or construction plane.
        edge : The edge to position the hole on.
        position : The position along the edge to place the hole.
        Returns true if successful.
        """
        return bool()
    def setDistanceExtent(self, distance: core.ValueInput) -> bool:
        """
        Defines the depth of the hole using a specified distance.
        distance : The depth of the hole. If a real is specified the value is in centimeters.
        If a string is specified the units are derived from the string. If no units are specified,
        the default units of the document are used.
        Returns true if setting the extent was successful.
        """
        return bool()
    def setAllExtent(self, direction: ExtentDirections) -> bool:
        """
        Defines the extent of the hole to be through-all. The direction can be
        either positive, negative.
        direction : The direction of the hole relative to the normal of the sketch plane.
        Returns true if successful.
        """
        return bool()
    def setOneSideToExtent(self, toEntity: core.Base, matchShape: bool, directionHint: core.Vector3D = None) -> bool:
        """
        Sets the extent of the hole to be from the sketch plane to the specified "to" face.
        toEntity : The entity that defines the "to" extent. The valid types of entities can vary depending on
        the type of feature this is being used with. For a hole it can be a BRepBody, BRepFace,
        BRepVertex, ConstructionPlane, or ConstructionPoint.
        matchShape : Indicates if the hole is not contained on the face that the hole should match
        the shape of the entity as if it extended beyond its current boundaries.
        directionHint : Specifies the direction of the hole. This is only used in the case where there are two possible solutions and the hole can
        hit the toEntity in either direction.
        
        Typically there is only a single solution and the direction is determined automatically.
        Returns true if successful.
        """
        return bool()
    def setPositionBySketchPoints(self, sketchPoints: core.ObjectCollection) -> bool:
        """
        Defines the position and orientation of the hole using a set of sketch points.
        sketchPoints : A collection of sketch points that defines the positions of the holes. The orientation is
        inferred from the normal of the point's parent sketch. The natural direction will be
        opposite the normal of the sketch. The points can be from multiple sketches but they
        must all be co-planar.
        Returns true if successful.
        """
        return bool()
    def setToSimpleHole(self) -> bool:
        """
        This property sets the hole's tap to be "simple", which means that it will not have
        any tap and will be a simple hole. When a new input is created, it defaults to being
        a simple hole.
        Returns true if successful.
        """
        return bool()
    def setToClearanceHole(self, clearanceHoleInfo: ClearanceHoleInfo) -> bool:
        """
        Sets the hole to be a clearance hole of the size specified by the ClearanceHoleInfo object.
        clearanceHoleInfo : The ClearanceHoleInfo object that specifies the size of the clearance hole.
        Returns true if setting to a clearance hole was successful.
        """
        return bool()
    def setToTappedHole(self, threadInfo: ThreadInfo) -> bool:
        """
        Sets the hole to be a straight or tapered tapped hole of the size specified by the ThreadInfo object.
        threadInfo : The ThreadInfo object that specifies the thread to use for the tapped hole. Whether it is straight
        or tapered tap is defined by the input ThreadInfo object.
        Returns true if setting to a tapped hole was successful.
        """
        return bool()
    def setLengthAndOffset(self, length: core.ValueInput, offset: core.ValueInput) -> bool:
        """
        Sets the length and offset of the thread of a tapped hole.
        
        This method is only used when creating a tapped hole, which
        means the setToTappedHole method has been called. Otherwise calling this
        method will fail.
        
        By default the isFullLength property is true which means the thread is
        the full length of the hole and there is no offset. Calling this method will have
        the side effect of setting the isFullLength property to false.
        length : Sets the length of the thread.
        offset : Sets the offset of the thread from the start of the hole. A value of zero is valid
        for no offset.
        
        """
        return bool()
    @property
    def tipAngle(self) -> core.ValueInput:
        """
        Gets the ValueInput object that defines the angle of the tip of the hole. The default
        is "118.0 deg" but can be modified by setting it using another Value object.
        """
        return core.ValueInput()
    @tipAngle.setter
    def tipAngle(self, value: core.ValueInput):
        """
        Gets the ValueInput object that defines the angle of the tip of the hole. The default
        is "118.0 deg" but can be modified by setting it using another Value object.
        """
        pass
    @property
    def isDefaultDirection(self) -> bool:
        """
        Gets or sets if the hole goes in the default direction or is reversed.
        """
        return bool()
    @isDefaultDirection.setter
    def isDefaultDirection(self, value: bool):
        """
        Gets or sets if the hole goes in the default direction or is reversed.
        """
        pass
    @property
    def creationOccurrence(self) -> Occurrence:
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the Hole is created based on geometry (e.g. a face or point)
        in another component AND (the Hole) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI
        A value of null indicates that everything is in the context of a single component.
        """
        return Occurrence()
    @creationOccurrence.setter
    def creationOccurrence(self, value: Occurrence):
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the Hole is created based on geometry (e.g. a face or point)
        in another component AND (the Hole) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI
        A value of null indicates that everything is in the context of a single component.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass
    @property
    def participantBodies(self) -> list[BRepBody]:
        """
        Gets and sets the list of bodies that will participate in the hole.
        
        If this property has not been set, the default behavior is that all bodies that are intersected by the
        hole will participate.
        
        This property can return null in the case where the feature has not been fully defined so that
        possible intersecting bodies can be computed.
        """
        return [BRepBody()]
    @participantBodies.setter
    def participantBodies(self, value: list[BRepBody]):
        """
        Gets and sets the list of bodies that will participate in the hole.
        
        If this property has not been set, the default behavior is that all bodies that are intersected by the
        hole will participate.
        
        This property can return null in the case where the feature has not been fully defined so that
        possible intersecting bodies can be computed.
        """
        pass
    @property
    def holeTapType(self) -> HoleTapTypes:
        """
        Returns the current type of tap associated with this hole. When a new HoleFeatureInput
        is created, this will default to SimpleHoleTapType, which means the hole will not have
        any tap and will be a simple hole. You can set the tap type by using one of the methods
        to define the specific tap desired.
        """
        return HoleTapTypes()
    @property
    def isModeled(self) -> bool:
        """
        Gets and sets if the thread is physical or cosmetic thread. A value of
        true indicates a physical thread. It defaults to false.
        
        This property is only used when creating a tapped hole, which
        means the setToTappedHole method has been called. Otherwise this
        property is ignored.
        """
        return bool()
    @isModeled.setter
    def isModeled(self, value: bool):
        """
        Gets and sets if the thread is physical or cosmetic thread. A value of
        true indicates a physical thread. It defaults to false.
        
        This property is only used when creating a tapped hole, which
        means the setToTappedHole method has been called. Otherwise this
        property is ignored.
        """
        pass
    @property
    def isFullLength(self) -> bool:
        """
        Gets and sets if this thread is the full length of the hole. It defaults to true.
        
        This property is only used when creating a tapped hole, which
        means the setToTappedHole method has been called. Otherwise this
        property is ignored.
        
        The property can only be set to True, which will cause the feature to ignore the
        values of the threadLength and threadOffset properties. Using the setLengthAndOffset
        method will have the side effect of setting this property to false.
        """
        return bool()
    @isFullLength.setter
    def isFullLength(self, value: bool):
        """
        Gets and sets if this thread is the full length of the hole. It defaults to true.
        
        This property is only used when creating a tapped hole, which
        means the setToTappedHole method has been called. Otherwise this
        property is ignored.
        
        The property can only be set to True, which will cause the feature to ignore the
        values of the threadLength and threadOffset properties. Using the setLengthAndOffset
        method will have the side effect of setting this property to false.
        """
        pass
    @property
    def threadLength(self) -> core.ValueInput:
        """
        Gets the thread length when the isFullLength property is False. Returns null when the
        isFullLength property is true.
        """
        return core.ValueInput()
    @property
    def threadOffset(self) -> core.ValueInput:
        """
        Gets the thread offset when the isFullLength property is False. Returns null when the
        isFullLength property is true.
        """
        return core.ValueInput()

class HoleFeatures(core.Base):
    """
    Collection that provides access to all of the existing hole features in a component
    and supports the ability to create new hole features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> HoleFeatures:
        return HoleFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> HoleFeature:
        return None
    def __iter__(self) -> Iterator[HoleFeature]:
        return None
    def item(self, index: int) -> HoleFeature:
        """
        Function that returns the specified hole feature 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 HoleFeature()
    def createSimpleInput(self, holeDiameter: core.ValueInput) -> HoleFeatureInput:
        """
        Creates a HoleFeatureInput object that defines a simple hole (a single diameter).
        This is not a hole feature, but an object used to create a hole feature. Functionality
        on the returned HoleFeatureInput object is used to define the position and extent
        of the hole.
        holeDiameter : A ValueInput object that defines the diameter of the hole. If the ValueInput uses
        a real, it is interpreted as centimeters. If it is a string, the units
        can be defined as part of the string (i.e. "3 in") If no units are specified,
        it is interpreted using the current default units for length.
        
        If tap information is added to the hole using the returned HoleFeatureInput, it will
        override this diameter, and the hole will be the correct size for the specified tap.
        Returns the newly created HoleFeatureInput object or null if the creation failed.
        """
        return HoleFeatureInput()
    def createCounterboreInput(self, holeDiameter: core.ValueInput, counterboreDiameter: core.ValueInput, counterboreDepth: core.ValueInput) -> HoleFeatureInput:
        """
        Creates a HoleFeatureInput object that defines a counterbore hole. This is not
        a hole feature but an object used to create a hole feature. Functionality
        on the returned HoleFeatureInput object is used to define the position and extent
        of the hole.
        holeDiameter : A ValueInput object that defines the diameter of the hole. If the ValueInput uses
        a real, it is interpreted as centimeters. If it is a string, the units
        can be defined as part of the string (i.e. "3 in") If no units are specified,
        it is interpreted using the current default units for length.
        
        If tap information is added to the hole using the returned HoleFeatureInput, it will
        override this diameter, and the hole will be the correct size for the specified tap.
        counterboreDiameter : A ValueInput object that defines the counterbore diameter of the hole. If the ValueInput uses
        a real, it is interpreted as centimeters. If it is a string, the units
        can be defined as part of the string (i.e. "3 in") If no units are specified,
        it is interpreted using the current default units for length.
        counterboreDepth : A ValueInput object that defines the counterbore depth of the hole. If the ValueInput uses
        a real, it is interpreted as centimeters. If it is a string, the units
        can be defined as part of the string (i.e. "3 in") If no units are specified,
        it is interpreted using the current default units for length.
        Returns the newly created HoleFeatureInput object or null if the creation failed.
        """
        return HoleFeatureInput()
    def createCountersinkInput(self, holeDiameter: core.ValueInput, countersinkDiameter: core.ValueInput, countersinkAngle: core.ValueInput) -> HoleFeatureInput:
        """
        Creates a HoleFeatureInput object that defines a countersink hole. This is not
        a hole feature but an object used to create a hole feature. Functionality
        on the returned HoleFeatureInput object is used to define the position and extent of the hole.
        holeDiameter : A ValueInput object that defines the diameter of the hole. If the ValueInput uses
        a real, it is interpreted as centimeters. If it is a string, the units
        can be defined as part of the string (i.e. "3 in") If no units are specified,
        it is interpreted using the current default units for length.
        
        If tap information is added to the hole using the returned HoleFeatureInput, it will
        override this diameter, and the hole will be the correct size for the specified tap.
        countersinkDiameter : A ValueInput object that defines the diameter of the countersink. If the ValueInput uses
        a real, it is interpreted as centimeters. If it is a string, the units
        can be defined as part of the string (i.e. "3 in") If no units are specified,
        it is interpreted using the current default units for length.
        countersinkAngle : A ValueInput object that defines the angle of the countersink. If the ValueInput uses
        a real then it is interpreted as radians. If it is a string then the units
        can be defined as part of the string (i.e. "120 deg"). If no units are specified
        it is interpreted using the current default units for angles.
        Returns the newly created HoleFeatureInput object or null if the creation failed.
        """
        return HoleFeatureInput()
    def add(self, input: HoleFeatureInput) -> HoleFeature:
        """
        Creates a new hole feature based on the information provided by a HoleFeatureInput object.
        To create a new hole, use one of the createInput functions to define a new input object for
        the type of hole you want to create. Use the methods and properties on the input object
        to define any additional input. Once the information is defined on the input object, you
        can pass it to the Add method to create the hole.
        input : The HoleFeatureInput object that defines the hole you want to create.
        Returns the newly created HoleFeature or null if the creation failed.
        """
        return HoleFeature()
    def itemByName(self, name: str) -> HoleFeature:
        """
        Function that returns the specified hole feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return HoleFeature()
    @property
    def count(self) -> int:
        """
        The number of hole features in the collection.
        """
        return int()

class HolePositionDefinition(core.Base):
    """
    The base class for the classes that define how a hole can be positioned.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> HolePositionDefinition:
        return HolePositionDefinition()

class InCanvasRendering(core.Base):
    """
    Provides access to the in-canvas rendering capabilities of Fusion. This
    uses the active viewport and the user will see the rendering as it takes place.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> InCanvasRendering:
        return InCanvasRendering()
    def start(self, renderQuality: float) -> bool:
        """
        Starts the process of in-canvas rendering. There are two modes
        when doing in-canvas rendering; advanced and fast. This is specified in the
        API using the isAdvanced property. When using advanced rendering, you can
        specify the desired quality and the rendering will stop once that quality has
        been reached. When using fast rendering, the rendering never stops but continues
        until you stop it.
        
        When using the API, it's generally best to use advanced rendering so you
        can easily control the final quality and get notified by the renderComplete
        event when it has finished. When using fast rendering, the renderComplete event
        is not fired and you have to use some other criteria like the number of iterations
        complete or the time taken to determine when to stop the rendering process.
        renderQuality : Specifies the desired quality of the rendering. The quality is specified using a
        value between 0 and 1, where 0.75 is the equivalent of "Excellent" and 1.0 is
        the same as "Final" in the user interface.
        
        This is ignored when using fast rendering (the isAdvanced property is False).
        Returns true if the rendering was successfully started.
        """
        return bool()
    def stop(self) -> bool:
        """
        Stops the current rendering process.
        Returns true if successful.
        """
        return bool()
    def saveImage(self, filename: str) -> bool:
        """
        Saves the image as it currently exists in the active viewport. To get the
        best quality, this should be called after the renderComplete event has fired.
        filename : The filename to save the image to. This must be the full path.
        The file extension can be .png, .jpg, .jpeg, or .tiff and the
        file will be saved as that type.
        
        The size of the image is dependent on the size of the viewport and
        the current specified aspect ratio.
        Returns true if the save was successful.
        """
        return bool()
    @property
    def lockView(self) -> bool:
        """
        Gets and sets if the view should be locked during the in-canvas render. This prohibits
        the user from interacting with the view, which will cause the rendering to restart.
        """
        return bool()
    @lockView.setter
    def lockView(self, value: bool):
        """
        Gets and sets if the view should be locked during the in-canvas render. This prohibits
        the user from interacting with the view, which will cause the rendering to restart.
        """
        pass
    @property
    def limitResolution(self) -> float:
        """
        Sets the percentage of the full resolution to render the image. Valid
        values are between 20 and 100 inclusive. 100 is full resolution (100%).
        """
        return float()
    @limitResolution.setter
    def limitResolution(self, value: float):
        """
        Sets the percentage of the full resolution to render the image. Valid
        values are between 20 and 100 inclusive. 100 is full resolution (100%).
        """
        pass
    @property
    def elapsedTime(self) -> int:
        """
        Returns the seconds spent on the current render.
        """
        return int()
    @property
    def iterations(self) -> int:
        """
        Returns the current number of iterations the renderer has completed.
        """
        return int()
    @property
    def isAdvanced(self) -> bool:
        """
        Gets and sets if "Fast" or "Advanced" rendering should be used.
        If false, "Fast" rendering is used, which uses simplified lighting
        and materials.
        
        There are two modes when doing in-canvas rendering; advanced and fast. When
        using advanced rendering, you can specify the desired quality and the rendering
        will stop once that quality has been reached. When using fast rendering, the
        rendering never stops but continues until you stop it.
        
        When using the API, it's generally best to use advanced rendering so you
        can easily control the final quality and get notified by the renderComplete
        event when it has finished. When using fast rendering, the renderComplete event
        is not fired, and you have to use some other criteria like the number of iterations
        complete, or the time taken to determine when to stop the rendering process.
        """
        return bool()
    @isAdvanced.setter
    def isAdvanced(self, value: bool):
        """
        Gets and sets if "Fast" or "Advanced" rendering should be used.
        If false, "Fast" rendering is used, which uses simplified lighting
        and materials.
        
        There are two modes when doing in-canvas rendering; advanced and fast. When
        using advanced rendering, you can specify the desired quality and the rendering
        will stop once that quality has been reached. When using fast rendering, the
        rendering never stops but continues until you stop it.
        
        When using the API, it's generally best to use advanced rendering so you
        can easily control the final quality and get notified by the renderComplete
        event when it has finished. When using fast rendering, the renderComplete event
        is not fired, and you have to use some other criteria like the number of iterations
        complete, or the time taken to determine when to stop the rendering process.
        """
        pass
    @property
    def renderComplete(self) -> RenderEvent:
        """
        The RenderEvent event fires when the rendering has reached the
        quality that was specified when the rendering started. This event is only fired
        when using advanced rendering (the isAdvanced property is True). To save the
        finished rendering, use the saveImage method.
        
        You can add or remove event handlers from the RenderEvent.
        """
        return RenderEvent()

class InferredJointInput(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Defines all of the information required to create a new inferred joint. This object provides equivalent
    functionality to the Joint command dialog, gathering the required information to create an inferred joint.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> InferredJointInput:
        return InferredJointInput()
    @property
    def geometricRelationships(self) -> GeometricRelationships:
        """
        Returns the collection object used to define the geometric relationships from which the joint will be inferred.
        A geometric relationship defines several things: the pair of entities, if the relationship is flipped,
        if it defines a mating alignment or an angle, and the value of the offset or angle.
        """
        return GeometricRelationships()

class InterferenceInput(core.Base):
    """
    Used to gather and define the various inputs and settings needed to calculate interference. This
    object is created using the Design.createInterferenceInput method.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> InterferenceInput:
        return InterferenceInput()
    @property
    def entities(self) -> core.ObjectCollection:
        """
        Gets and set an ObjectCollection containing BRepBody and/or Occurrence entities that
        will be used when checking for interference. All entities must be in the context of
        the root component of the top-level design.
        """
        return core.ObjectCollection()
    @entities.setter
    def entities(self, value: core.ObjectCollection):
        """
        Gets and set an ObjectCollection containing BRepBody and/or Occurrence entities that
        will be used when checking for interference. All entities must be in the context of
        the root component of the top-level design.
        """
        pass
    @property
    def areCoincidentFacesIncluded(self) -> bool:
        """
        Gets and sets whether any coincident faces in the input bodies are considered as interference
        or not. This property defaults to False for a newly created InterferenceInput object.
        """
        return bool()
    @areCoincidentFacesIncluded.setter
    def areCoincidentFacesIncluded(self, value: bool):
        """
        Gets and sets whether any coincident faces in the input bodies are considered as interference
        or not. This property defaults to False for a newly created InterferenceInput object.
        """
        pass

class InterferenceResult(core.Base):
    """
    Represents the interference between bodies and/or occurrences in an interference analysis.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> InterferenceResult:
        return InterferenceResult()
    @property
    def entityOne(self) -> core.Base:
        """
        Returns the first entity involved in the interference
        """
        return core.Base()
    @property
    def entityTwo(self) -> core.Base:
        """
        Returns the second entity involved in the interference
        """
        return core.Base()
    @property
    def interferenceBody(self) -> BRepBody:
        """
        Returns a transient BRepBody that represents the volume of interference.
        """
        return BRepBody()
    @property
    def isCreateBody(self) -> bool:
        """
        Gets and sets if this interference volume should be created as a model body. Setting
        this to true doesn't create the body just indicates that a body is desired. Calling
        the createBodies method on the interferenceResults object will result in the creation
        of the model body if this property is true.
        """
        return bool()
    @isCreateBody.setter
    def isCreateBody(self, value: bool):
        """
        Gets and sets if this interference volume should be created as a model body. Setting
        this to true doesn't create the body just indicates that a body is desired. Calling
        the createBodies method on the interferenceResults object will result in the creation
        of the model body if this property is true.
        """
        pass

class InterferenceResults(core.Base):
    """
    Transient object used to return the result of an interference analysis.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> InterferenceResults:
        return InterferenceResults()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> InterferenceResult:
        return None
    def __iter__(self) -> Iterator[InterferenceResult]:
        return None
    def item(self, index: int) -> InterferenceResult:
        """
        Function that returns the specified interference result 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 InterferenceResult()
    def createBodies(self, allInterferenceBodies: bool) -> core.ObjectCollection:
        """
        Creates bodies in the model that represent the interference volumes.
        This is not supported in parametric modeling.
        allInterferenceBodies : Sets if all bodies or only individual bodies will be created as bodies in the model.
        If False, then only interferenceResult objects whose isCreateBody property is true
        will be created as a model body. If true, all interface volumes will be created as
        a body regardless of the value of the isCreateBody property on each InterferenceResult object.
        Returns an ObjectCollection containing the bodies that were created.
        """
        return core.ObjectCollection()
    @property
    def count(self) -> int:
        """
        Returns the number of interference results in the collection.
        """
        return int()

class IsoCurveAnalyses(core.Base):
    """
    Provides access to any Iso Curve analyses results in the design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> IsoCurveAnalyses:
        return IsoCurveAnalyses()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> IsoCurveAnalysis:
        return None
    def __iter__(self) -> Iterator[IsoCurveAnalysis]:
        return None
    def item(self, index: int) -> IsoCurveAnalysis:
        """
        A method that returns the specified IsoCurveAnalysis 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 IsoCurveAnalysis()
    def itemByName(self, name: str) -> IsoCurveAnalysis:
        """
        A method that returns the specified IsoCurveAnalysis object using the name of the analysis
        as displayed in the browser.
        name : The name of the IsoCurveAnalysis object as displayed in the browser.
        Returns the specified item or null if an invalid name was specified.
        """
        return IsoCurveAnalysis()
    @property
    def count(self) -> int:
        """
        Returns the number of CurvatureCombAnalysis objects in the collection.
        """
        return int()

class IsoparametricCurveInput(core.Base):
    """
    The input object that defines the required input to create an isoparametric curve
    when using the SketchIsoparametricCurves.add method. This object is created using the
    SketchIsoparametricCurves.createInput method.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> IsoparametricCurveInput:
        return IsoparametricCurveInput()
    def setSingle(self, isPhysical: bool, distance: core.ValueInput) -> bool:
        """
        Defines that a single isoparametric curve will be created and its position
        is defined by its distance from the edge of the surface. The direction is
        defined using the isUDirection property.
        isPhysical : Specifies if the offset of the curve from the edge of the surface is defined
        by a physical distance or a proportional distance along the surface where it is defined
        as a value from 0 to 1. A value of true indicates it is the physical distance.
        distance : The distance of the curve from the edge of the surface. If isPhysical is true
        this is a physical distance. If the ValueInput is defined using a real value
        this is the offset in centimeters. If the ValueInput is defined using a string
        it is used as the expression of the parameter that will be created to control
        the offset, and should be able to be evaluated as a distance.
        
        If isPhysical is false, this defines the proportional offset of the surface from
        the edge where the value can be 0 to 1. If a ValueInput is defined using a real
        value it can be 0 to 1. If the ValueInput is defined using a string it is used
        as the expression of the parameter that will be created to control the offset and
        should be able to be evaluated as a unitless value.
        Returns true if successful.
        """
        return bool()
    def setDistributed(self, quantity: core.ValueInput) -> bool:
        """
        Defines that one or more isoparametric curves will be created along the U or V
        parameter curves of the face. The direction is defined using the isUDirection
        property.
        quantity : The number of isoparametric curves to create. They are evenly distributed
        on the face. If a ValueInput is defined using a real value, it should be
        a whole number or it will be rounded to the nearest whole number. If a ValueInput
        is defined using a string, it is used as the expression of the parameter that will
        be created to control the number of curves and should be able to be evaluated as
        a unitless value.
        Returns true if successful.
        """
        return bool()
    @property
    def face(self) -> BRepFace:
        """
        Gets and sets the BRepFace on which to create the isoparametric curve.
        """
        return BRepFace()
    @face.setter
    def face(self, value: BRepFace):
        """
        Gets and sets the BRepFace on which to create the isoparametric curve.
        """
        pass
    @property
    def isUDirection(self) -> bool:
        """
        Gets and sets the direction of the isoparametric curve on the surface.
        The curve follows the surface in either the U or V parametric direction.
        True indicates the U direction, which is also the default when the input
        is created.
        """
        return bool()
    @isUDirection.setter
    def isUDirection(self, value: bool):
        """
        Gets and sets the direction of the isoparametric curve on the surface.
        The curve follows the surface in either the U or V parametric direction.
        True indicates the U direction, which is also the default when the input
        is created.
        """
        pass
    @property
    def isSingle(self) -> bool:
        """
        Gets if a single or distributed curve creation has been specified. To change
        the type, call either the setSingle or setDistributed methods.
        """
        return bool()
    @property
    def isPhysicalOffset(self) -> bool:
        """
        Gets how the distance of the single curve from the face edge is defined by a
        distance or proportionally. This property only applies when the isSingle property
        is True. A value of true indicates it is defined using a physical offset. To change
        how the offset is defined use the setSingle method.
        """
        return bool()
    @property
    def quantityOrDistance(self) -> core.ValueInput:
        """
        Gets the quantity or distance value to be used when creating the isoparametric curve.
        If the isSingle property returns true, this is the distance of the curve from the
        edge of the face. If the isSingle property is false, this is the quantity of curves
        in the result. To set this, use either the setDistributed or setSingle methods.
        """
        return core.ValueInput()

class Joint(core.Base):
    """
    A joint in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Joint:
        return Joint()
    def deleteMe(self) -> bool:
        """
        Deletes this joint.
        Returns true if the delete is successful.
        """
        return bool()
    def setAsRigidJointMotion(self) -> bool:
        """
        Redefines the relationship between the two joint geometries as a rigid joint.
        
        This method will fail in the case where the jointType property returns InferredJointType.
        
        To use this method, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        Returns true if successful.
        """
        return bool()
    def setAsRevoluteJointMotion(self, rotationAxis: JointDirections, customRotationAxisEntity: core.Base = None) -> bool:
        """
        Redefines the relationship between the two joint geometries as a revolute joint.
        
        This method will fail in the case where the jointType property returns InferredJointType.
        
        To use this method, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        rotationAxis : Specifies which axis the rotation is around. If this is set to CustomJointDirection then the
        customRotationAxisEntity argument must also be provided.
        customRotationAxisEntity : If the rotationAxis is customAxisEntity this argument is used to specify the entity that defines
        the custom axis of rotation. This can be several types of entities that an axis can be derived
        from.
        Returns true if the operation was successful.
        """
        return bool()
    def setAsSliderJointMotion(self, sliderDirection: JointDirections, customSliderDirectionEntity: core.Base = None) -> bool:
        """
        Redefines the relationship between the two joint geometries as a slider joint.
        
        This method will fail in the case where the jointType property returns InferredJointType.
        
        To use this method, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        sliderDirection : Specifies which axis the slide direction is along. If this is set to CustomJointDirection then the
        customSliderDirectionEntity argument must also be provided.
        customSliderDirectionEntity : If the sliderDirection is CustomJointDirection this argument is used to specify the entity that defines
        the custom slider direction. This can be several types of entities that can define a direction.
        Returns true if the operation was successful.
        """
        return bool()
    def setAsCylindricalJointMotion(self, rotationAxis: JointDirections, customRotationAxisEntity: core.Base = None) -> bool:
        """
        Redefines the relationship between the two joint geometries as a cylindrical joint.
        
        This method will fail in the case where the jointType property returns InferredJointType.
        
        To use this method, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        rotationAxis : Specifies which axis the rotation is around. If this is set to CustomJointDirection then the
        customRotationAxisEntity argument must also be provided.
        customRotationAxisEntity : If the rotationAxis is customAxisEntity this argument is used to specify the entity that defines
        the custom axis of rotation. This can be several types of entities that an axis can be derived
        from.
        Returns true if the operation was successful.
        """
        return bool()
    def setAsPinSlotJointMotion(self, rotationAxis: JointDirections, slideDirection: JointDirections, customRotationAxisEntity: core.Base = None, customSlideDirectionEntity: core.Base = None) -> bool:
        """
        Redefines the relationship between the two joint geometries as a pin-slot joint.
        
        This method will fail in the case where the jointType property returns InferredJointType.
        
        To use this method, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        rotationAxis : Specifies which axis the rotation is around. If this is set to CustomJointDirection then the
        customRotationAxisEntity argument must also be provided.
        slideDirection : Specifies which axis the slide direction is along. If this is set to CustomJointDirection then the
        customSlideDirectionEntity argument must also be provided.
        customRotationAxisEntity : If the rotationAxis is customAxisEntity this argument is used to specify the entity that defines
        the custom axis of rotation. This can be several types of entities that an axis can be derived
        customSlideDirectionEntity : If the slideDirection is CustomJointDirection this argument is used to specify the entity that defines
        the custom slide direction. This can be several types of entities that can define a direction.
        Returns true if the operation was successful.
        """
        return bool()
    def setAsPlanarJointMotion(self, normalDirection: JointDirections, customNormalDirectionEntity: core.Base = None, customPrimarySlideDirection: core.Base = None) -> bool:
        """
        Redefines the relationship between the two joint geometries as a planar joint.
        
        This method will fail in the case where the jointType property returns InferredJointType.
        
        To use this method, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        normalDirection : Defines the direction of the normal of the single degree of rotation.
        This can be set to XAxisJointDirection, YAxisJointDirection, ZAxisJointDirection,
        or CustomJointDirection. If set to CustomJointDirection then the customNormalDirectionEntity
        argument must also be provided.
        customNormalDirectionEntity : If the normalDirection is CustomJointDirection this argument is used to specify the entity that defines
        the direction of the normal. This can be several types of entities that can define a direction.
        customPrimarySlideDirection : This arguments defines the direction of the primary slide direction. A default primary slide direction
        is automatically chosen and will be used if this argument is not provided or is null. The secondary slide
        direction is automatically inferred from the normal and primary slide directions.
        Returns true if the operation was successful.
        """
        return bool()
    def setAsBallJointMotion(self, pitchDirection: JointDirections, yawDirection: JointDirections, customPitchDirection: core.Base = None, customYawDirection: core.Base = None) -> bool:
        """
        Redefines the relationship between the two joint geometries as a ball joint.
        
        This method will fail in the case where the jointType property returns InferredJointType.
        
        To use this method, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        pitchDirection : Defines the direction the pitch angle is measured from. This can be ZAxisJointDirection or CustomJointDirection. If
        CustomJointDirection is specified then you must also provide a value for the customPitchDirection argument.
        yawDirection : Defines the direction the yaw is measured from. This can be XAxisJointDirection or CustomJointDirection. If
        CustomJointDirection is specified then you must also provide a value for the customYawDirection argument.
        customPitchDirection : If the pitchDirection argument is customPitchDirection this argument is used to define the direction the pitch
        angel is measured from. This can be several types of entities that can define a direction.
        customYawDirection : If the yawDirection argument is customPitchDirection this argument is used to define the direction the yaw
        angel is measured from. This can be several types of entities that can define a direction.
        Returns true if the operation was successful.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> Joint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return Joint()
    @property
    def parentComponent(self) -> Component:
        """
        Returns the parent component that owns this joint.
        """
        return Component()
    @property
    def name(self) -> str:
        """
        Gets and sets the name of the joint.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name of the joint.
        """
        pass
    @property
    def geometryOrOriginOne(self) -> core.Base:
        """
        Gets and sets the first JointGeometry or JointOrigin for this joint.
        
        If the JointType is InferredJointType, this property will return null when queried and will
        fail if it set.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        """
        return core.Base()
    @geometryOrOriginOne.setter
    def geometryOrOriginOne(self, value: core.Base):
        """
        Gets and sets the first JointGeometry or JointOrigin for this joint.
        
        If the JointType is InferredJointType, this property will return null when queried and will
        fail if it set.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        """
        pass
    @property
    def geometryOrOriginTwo(self) -> core.Base:
        """
        Gets and sets the second JointGeometry or JointOrigin for this joint.
        
        If the JointType is InferredJointType, this property will return null when queried and will
        fail if it set.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        """
        return core.Base()
    @geometryOrOriginTwo.setter
    def geometryOrOriginTwo(self, value: core.Base):
        """
        Gets and sets the second JointGeometry or JointOrigin for this joint.
        
        If the JointType is InferredJointType, this property will return null when queried and will
        fail if it set.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        """
        pass
    @property
    def angle(self) -> ModelParameter:
        """
        Returns the parameter controlling the angle between the two input geometries. This is effectively the
        angle between the two primary axes of the two joint geometries.
        
        This property will return null in the case where the jointType property returns InferredJointType.
        """
        return ModelParameter()
    @property
    def offset(self) -> ModelParameter:
        """
        Returns the parameter controlling the offset between the two input geometries. This is effectively the
        offset distance between the two planes defined by the primary and secondary axes
        of the input geometries or the offset along the tertiary axis (z axis) of the joint.
        
        This property will return null in the case where the jointType property returns InferredJointType.
        """
        return ModelParameter()
    @property
    def isFlipped(self) -> bool:
        """
        Gets and sets if the joint direction is flipped or not. This is effectively
        specifying if the third axis of the two input geometries is facing (false) or
        opposed (true).
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        
        The value of this property should be ignored in the case where the jointType property returns InferredJointType.
        """
        return bool()
    @isFlipped.setter
    def isFlipped(self, value: bool):
        """
        Gets and sets if the joint direction is flipped or not. This is effectively
        specifying if the third axis of the two input geometries is facing (false) or
        opposed (true).
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        
        The value of this property should be ignored in the case where the jointType property returns InferredJointType.
        """
        pass
    @property
    def jointMotion(self) -> JointMotion:
        """
        Returns a JointMotion object that defines the motion relationship between the two geometries.
        
        This property will return null in the case where the jointType property returns InferredJointType.
        """
        return JointMotion()
    @property
    def timelineObject(self) -> TimelineObject:
        """
        Returns the timeline object associated with this joint.
        """
        return TimelineObject()
    @property
    def nativeObject(self) -> Joint:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return Joint()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this object
        in an assembly. This is only valid in the case where this is acting
        as a proxy in an assembly. Returns null in the case where the object
        is not in the context of an assembly but is already the native object.
        """
        return Occurrence()
    @property
    def isSuppressed(self) -> bool:
        """
        Gets and sets if this joint is suppressed.
        """
        return bool()
    @isSuppressed.setter
    def isSuppressed(self, value: bool):
        """
        Gets and sets if this joint is suppressed.
        """
        pass
    @property
    def isLightBulbOn(self) -> bool:
        """
        Gets and sets if the light bulb of this joint as displayed in the browser is on or off.
        A joint will only be visible if the light bulb is switched on. However,
        the light bulb can be on and the joint still invisible if a higher level occurrence
        in the assembly context is not visible because its light bulb is off or the joints folder
        is light bulb is off.
        """
        return bool()
    @isLightBulbOn.setter
    def isLightBulbOn(self, value: bool):
        """
        Gets and sets if the light bulb of this joint as displayed in the browser is on or off.
        A joint will only be visible if the light bulb is switched on. However,
        the light bulb can be on and the joint still invisible if a higher level occurrence
        in the assembly context is not visible because its light bulb is off or the joints folder
        is light bulb is off.
        """
        pass
    @property
    def isVisible(self) -> bool:
        """
        Gets whether the joint is visible. To change the visibility see the isLightBulbOn property.
        This property is affected by the assembly context.
        """
        return bool()
    @property
    def attributes(self) -> core.Attributes:
        """
        Returns the collection of attributes associated with this joint.
        """
        return core.Attributes()
    @property
    def healthState(self) -> FeatureHealthStates:
        """
        Returns the current health state of the joint.
        """
        return FeatureHealthStates()
    @property
    def errorOrWarningMessage(self) -> str:
        """
        Returns the error or warning message in the case where the healthState property returns either
        WarningFeatureHealthState or ErrorFeatureHealthState. Otherwise this property returns an empty string.
        """
        return str()
    @property
    def occurrenceOne(self) -> Occurrence:
        """
        Returns the first of two occurrences that this joint defines a relationship between. This is the occurrence
        that can also be found through the geometryOrOriginOne property.
        """
        return Occurrence()
    @property
    def occurrenceTwo(self) -> Occurrence:
        """
        Returns the first of two occurrences that this joint defines a relationship between. This is the occurrence
        that can also be found through the geometryOrOriginTwo property.
        """
        return Occurrence()
    @property
    def isLocked(self) -> bool:
        """
        Gets and sets if the joint is locked.
        """
        return bool()
    @isLocked.setter
    def isLocked(self, value: bool):
        """
        Gets and sets if the joint is locked.
        """
        pass
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the Joint object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same joint.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        """
        return str()
    @property
    def offsetX(self) -> ModelParameter:
        """
        Returns the parameter controlling the offset along the primary axis (x axis) of the joint. To edit this
        value, get the parameter and use one of its properties to edit the value.
        
        This property will return null in the case where the jointType property returns InferredJointType.
        """
        return ModelParameter()
    @property
    def offsetY(self) -> ModelParameter:
        """
        Returns the parameter controlling the offset along the primary axis (y axis) of the joint. To edit this
        value, get the parameter and use one of its properties to edit the value.
        
        This property will return null in the case where the jointType property returns InferredJointType.
        """
        return ModelParameter()
    @property
    def geometryOneTransform(self) -> core.Matrix3D:
        """
        Returns the position and orientation of the joint geometry associated with the first occurrence.
        This is returned as a 3D matrix which provides the origin and the X, Y, and Z axis vectors of the
        coordinate system.
        
        This property is especially useful in cases where the JointGeometry cannot be obtained. This can
        happen when the model has been modified in a way where the geometry used to create the joint is
        no longer available.
        
        This property will return null in the case where the jointType property returns InferredJointType.
        """
        return core.Matrix3D()
    @property
    def geometryTwoTransform(self) -> core.Matrix3D:
        """
        Returns the position and orientation of the joint geometry associated with the second occurrence.
        This is returned as a 3D matrix which provides the origin and the X, Y, and Z axis vectors of the
        coordinate system.
        
        This property is especially useful in cases where the JointGeometry cannot be obtained. This can
        happen when the model has been modified in a way where the geometry used to create the joint is
        no longer available.
        
        This property will return null in the case where the jointType property returns InferredJointType.
        """
        return core.Matrix3D()
    @property
    def geometricRelationships(self) -> GeometricRelationships:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the set of geometric relationships that were used to infer this joint. This property is
        only valid when the jointType property returns InferredJointType. Otherwise, it returns null.
        """
        return GeometricRelationships()
    @property
    def motionLinks(self) -> list[MotionLink]:
        """
        Returns the MotionLink objects that this joint is involved in.
        """
        return [MotionLink()]

class JointGeometry(core.Base):
    """
    A transient object used to define and query the geometric input of a joint and the resulting coordinate
    system it defines. New JointGeometry objects are created using its various static create methods and
    are then used as input to the Joints.createInput method.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> JointGeometry:
        return JointGeometry()
    @staticmethod
    def createByPlanarFace(face: BRepFace, edge: BRepEdge, keyPointType: JointKeyPointTypes) -> JointGeometry:
        """
        Creates a new transient JointGeometry object based on a planar BRepFace object. A JointGeometry
        object can be used to create a joint or joint origin.
        face : The planar BRepFace object
        edge : A BRepEdge edge object that is one of the edges of the specified face. This argument can be
        null in the case where the keyPointType is CenterKeypoint indicating the center of the face
        is to be used. When an edge is used, the keyPointType specifies the position along the edge
        for the keypoint.
        keyPointType : Specifies the position along the edge where the joint keypoint will be located. For open edges
        this can be StartKeyPoint, MiddleKeyPoint, or EndKeyPoint. For closed edges (i.e. circles), it
        must be CenterKeyPoint. When no edge is specified, it must be CenterKeyPoint indicating the center
        of area of the face is to be used.
        Returns the transient JointGeometry object that can be used to create a joint or joint origin or null in the case of a failure.
        """
        return JointGeometry()
    @staticmethod
    def createByNonPlanarFace(face: BRepFace, keyPointType: JointKeyPointTypes) -> JointGeometry:
        """
        Creates a new transient JointGeometry object based on a non-planar analytical BRepFace object. This is limited
        to cylinders, cones, spheres, and tori. A JointGeometry object can be used to create a joint or joint origin.
        face : The cylindrical, conical, spherical, or toroidal BRepFace object.
        keyPointType : Specifies the position relative to the input face where the joint keypoint will be located. For cylinders
        and cones this can be StartKeyPoint, MiddleKeyPoint, or EndKeyPoint. For spheres and tori this must be
        CenterKeyPoint.
        Returns the transient JointGeometry object that can be used to create a joint or joint origin or null in the case of a failure.
        """
        return JointGeometry()
    @staticmethod
    def createByProfile(profile: Profile, sketchCurve: SketchCurve, keyPointType: JointKeyPointTypes) -> JointGeometry:
        """
        Creates a new transient JointGeometry object based on a planar BRepFace object. A JointGeometry
        object can be used to create a joint or joint origin.
        profile : The Profile object.
        sketchCurve : A sketch curve that is part of the input profile. This argument can be
        null in the case where the keyPointType is CenterKeypoint indicating the center of the profile
        is to be used. When a curve is used, the keyPointType specifies the position along the curve
        for the keypoint.
        keyPointType : Specifies the position along the curve where the joint keypoint will be located. For open curves (lines, arcs, elliptical arcs, and open splines)
        this can be StartKeyPoint, MiddleKeyPoint, or EndKeyPoint. For closed analytic (circles and ellipses), it
        must be CenterKeyPoint. When no curve is specified, it must be CenterKeyPoint indicating the center
        of area of the profile is to be used.
        Returns the transient JointGeometry object that can be used to create a joint or joint origin or null in the case of a failure.
        """
        return JointGeometry()
    @staticmethod
    def createByCurve(curve: core.Base, keyPointType: JointKeyPointTypes) -> JointGeometry:
        """
        Creates a new transient JointGeometry object using a BRepEdge or SketchCurve as input. A JointGeometry
        object can be used to create a joint or joint origin.
        curve : Input BRepEdge or SketchCurve.
        keyPointType : The position on the curve where to position the joint coordinate system. For any open curves
        the valid types are StartKeyPoint, MiddleKeyPoint, CenterKeyPoint and EndKeyPoint. For circular and elliptical
        shaped curves the option is CenterKeyPoint. For closed spline curves either StartKeyPoint or
        EndKeyPoint can be used and the result is the same.
        Returns the transient JointGeometry object that can be used to create a joint or joint origin or null in the case of a failure.
        """
        return JointGeometry()
    @staticmethod
    def createByPoint(point: core.Base) -> JointGeometry:
        """
        Creates a new transient JointGeometry object using a ConstructionPoint, SketchPoint or BRepVertex as input.
        A JointGeometry object can be used to create a joint or joint origin.
        point : The ConstructionPoint, SketchPoint or BRepVertex object.
        Returns the transient JointGeometry object that can be used to create a joint or joint origin or null in the case of a failure.
        """
        return JointGeometry()
    @staticmethod
    def createByBetweenTwoPlanes(planeOne: core.Base, planeTwo: core.Base, entityOne: core.Base, entityTwo: core.Base, keyPointType: JointKeyPointTypes) -> JointGeometry:
        """
        Creates a new transient JointGeometry object based on a plane bisecting the two input planes.
        planeOne : The first planar entity that the joint origin will be created between. This can be a planar BRepFace
        or a ConstructionPlane object.
        planeTwo : The second planar entity that the joint origin will be created between. This can be a planar BRepFace
        or a ConstructionPlane object.
        entityOne : Specifies the entity that is used to define the keypoint. This can be many types of geometry including
        edges, planar and non-planar faces, profiles, and sketch geometry.
        entityTwo : If the entityOne argument is a planar BRepFace or a Profile, then this argument specifies either
        an edge on the face or a sketch curve on the profile. For a planar face this argument is optional in the
        case where the keyPointType argument is CenterKeyPoint indicating the center of area of the face is to be used.
        keyPointType : Specifies the position on the keyPointGeometry where the keypoint will be defined. This keypoint is then
        projected onto the plane to define the position of the joint geometry.
        
        The values that are valid for this argument depend on the type of geometry specified for the geometry and edgeOrCurve
        arguments.
        
        If the geometry argument is a planar face and the edgeOrCurve argument is an open BRepEdge object
        then this can be StartKeyPoint, MiddleKeyPoint, or EndKeyPoint. If the geometry argument is a planar face and the edgeOrCurve argument
        is a closed BRepEdge object (i.e. circles), it must be CenterKeyPoint. If the geometry argument is a planar face and
        the edgeOrCurve argument is null, then this must be CenterKeyPoint indicating the center of area of the face.
        
        If the geometry argument is a non-planar face (cylinder, cone, sphere, or torus) this can be StartKeyPoint, MiddleKeyPoint, or EndKeyPoint
        for cylinders and cones but must be CenterKeyPoint for spheres and tori. The edgeOrCurve argument is ignored in this case.
        
        If the geometry argument is a profile and the edgeOrCurve argument is null this can be CenterKeyPoint indicating the center of area
        of the profile. If the geometry argument is a profile and the edgeOrCurve argument is an open sketch curve on the profile
        then this can be StartKeyPoint, MiddleKeyPoint, or EndKeyPoint. If the geometry argument is a profile and the edgeOrCurve argument
        is a closed sketch curve (i.e. circles), it must be CenterKeyPoint.
        Returns the transient JointGeometry object that can be used to create a joint or joint origin or null in the case of a failure.
        """
        return JointGeometry()
    @staticmethod
    def createByTwoEdgeIntersection(edgeOne: BRepEdge, edgeTwo: BRepEdge) -> JointGeometry:
        """
        Creates a new transient JointGeometry object that is positioned at the intersection of the two input linear BRepEdge objects.
        edgeOne : The first linear BRepEdge object.
        edgeTwo : The second linear BRepEdge object. This edge must exist either on the same body as edgeOne or on a body in the same component as edgeOne.
        edgeOne and edgeTwo must also both lie on the same plane and must intersect, they cannot be parallel.
        Returns the transient JointGeometry object that can be used to create a joint or joint origin or null in the case of a failure.
        """
        return JointGeometry()
    @staticmethod
    def createByCylinderOrConeFace(face: BRepFace, angle: JointQuadrantAngleTypes, height: JointKeyPointTypes) -> JointGeometry:
        """
        Creates a new transient JointGeometry object based on a cylinder or cone BRepFace object.
        face : The cylindrical or conical BRepFace object.
        angle : Specifies the angle relative to the parameterization of the input face. The zero, or start angle, is where the v parameter of the
        cylinder is zero. This can be determined by using the getPointAtParameter method of the SurfaceEvaluator object obtained from the
        evaluator property of the BRepFace object. The possible values can be StartJointQuadrantAngleType, QuarterJointQuadrantAngleType,
        MiddleJointQuadrantAngleType or ThirdQuarterJointQuadrantAngleType.
        height : Specifies the vertical position relative to the bottom of the cylinder at the given angle. The possible values can be StartKeyPoint,
        MiddleKeyPoint or EndKeyPoint.
        Returns the transient JointGeometry object that can be used to create a joint or joint origin or null in the case of a failure.
        """
        return JointGeometry()
    @staticmethod
    def createBySphereFace(face: BRepFace, azimuthAngle: JointQuadrantAngleTypes, polarAngle: JointKeyPointTypes) -> JointGeometry:
        """
        Creates a new transient JointGeometry object based on a sphere BRepFace object.
        face : The sphere BRepFace object.
        azimuthAngle : Specifies the azimuth angle relative to the v parameterization of the input face. The zero, or start angle, is where the v parameter
        of the sphere is zero. This can be determined by using the getPointAtParameter method of the SurfaceEvaluator object obtained from
        the evaluator property of the BRepFace object. The possible values can be StartJointQuadrantAngleType, QuarterJointQuadrantAngleType,
        MiddleJointQuadrantAngleType or ThirdQuarterJointQuadrantAngleType.
        polarAngle : Specifies the polar angle relative to the u parameterization of the input face. The zero, or start angle, is where the u parameter
        of the sphere is zero. This can be determined by using the getPointAtParameter method of the SurfaceEvaluator object obtained from
        the evaluator property of the BRepFace object. The possible values can be StartKeyPoint for the north pole, MiddleKeyPoint for
        points on the equator, or EndKeyPoint for the south pole.
        Returns the transient JointGeometry object that can be used to create a joint or joint origin or null in the case of a failure.
        """
        return JointGeometry()
    @staticmethod
    def createByTorusFace(face: BRepFace, azimuthAngle: JointQuadrantAngleTypes, sectionAngle: JointQuadrantAngleTypes) -> JointGeometry:
        """
        Creates a new transient JointGeometry object based on a torus BRepFace object.
        face : The torus BRepFace object.
        azimuthAngle : Specifies the azimuth angle relative to the v parameterization of the input face. The zero, or start angle, is where the v parameter
        of the sphere is zero. This can be determined by using the getPointAtParameter method of the SurfaceEvaluator object obtained from
        the evaluator property of the BRepFace object. The possible values can be StartJointQuadrantAngleType, QuarterJointQuadrantAngleType,
        MiddleJointQuadrantAngleType or ThirdQuarterJointQuadrantAngleType.
        sectionAngle : Specifies the angle relative to the start point of the section circle at give azimuth angle. The possible values can be
        StartJointQuadrantAngleType, QuarterJointQuadrantAngleType, MiddleJointQuadrantAngleType or ThirdQuarterJointQuadrantAngleType.
        Returns the transient JointGeometry object that can be used to create a joint or joint origin or null in the case of a failure.
        """
        return JointGeometry()
    @staticmethod
    def createBySplineFace(face: BRepFace, paramU: JointKeyPointTypes, paramV: JointKeyPointTypes) -> JointGeometry:
        """
        Creates a new transient JointGeometry object based on a spline BRepFace object.
        face : The spline BRepFace object.
        paramU : Specifies the u parameter of the input spline face where the joint keypoint will be located. The possible values
        can be StartKeyPoint, MiddleKeyPoint or EndKeyPoint.
        paramV : Specifies the v parameter of the input spline face where the joint keypoint will be located. The possible values
        can be StartKeyPoint, MiddleKeyPoint or EndKeyPoint.
        Returns the transient JointGeometry object that can be used to create a joint or joint origin or null in the case of a failure.
        """
        return JointGeometry()
    @staticmethod
    def createByTangentFaceEdge(face: BRepFace, edge: BRepEdge, edgePointType: JointTangentFaceEdgePointTypes) -> JointGeometry:
        """
        Creates a new transient JointGeometry object based on a BRepFace object as well as a BRepEdge object which is on the BRepFace.
        face : The cylindrical, conical, spherical, toroidal or spline BRepFace object.
        edge : A BRepEdge object that is one of the edges on the selected face.
        edgePointType : Specifies the position along the edge where the joint keypoint will be located. The possible values depend on whether the
        edge is closed or not. For closed edge, the possible values can be StartJointTangentFaceEdgePointType,
        QuarterJointTangentFaceEdgePointType, MiddleJointTangentFaceEdgePointType or ThirdQuarterJointTangentFaceEdgePointType.
        For open edge, the possible values can be StartJointTangentFaceEdgePointType, MiddleJointTangentFaceEdgePointType,
        or EndJointTangentFaceEdgePointType.
        Returns the transient JointGeometry object that can be used to create a joint or joint origin or null in the case of a failure.
        """
        return JointGeometry()
    @property
    def geometryType(self) -> JointGeometryTypes:
        """
        Returns the type of geometry this JointGeometry object represents.
        """
        return JointGeometryTypes()
    @property
    def keyPointType(self) -> JointKeyPointTypes:
        """
        Returns the keypoint type this JointGeometry is using.
        """
        return JointKeyPointTypes()
    @property
    def entityOne(self) -> core.Base:
        """
        The first entity that's defining this joint geometry. This can be various types of geometry depending
        on how this joint geometry is defined. The geometryType property indicates how this joint geometry is
        defined a provides a clue about the type of geometry to expect back from this property.
        """
        return core.Base()
    @property
    def entityTwo(self) -> core.Base:
        """
        This is the second entity that defines this joint geometry. This isn't used for all joint geometry types
        and will return null in the cases where it's not used. A second geometry is used in the case where the geometryType
        property returns JointProfileGeometry, JointPlanarBRepFaceGeometry, JointBetweenTwoFacesGeometry or JointByTwoEdgeIntersectionGeometry.
        """
        return core.Base()
    @property
    def origin(self) -> core.Point3D:
        """
        Returns the origin point that's been calculated for this joint geometry.
        """
        return core.Point3D()
    @property
    def primaryAxisVector(self) -> core.Vector3D:
        """
        Returns the direction of the primary axis that's been calculated for this joint geometry.
        Conceptually, this is the Z-axis of the computed coordinate system.
        """
        return core.Vector3D()
    @property
    def secondaryAxisVector(self) -> core.Vector3D:
        """
        Returns the direction of the secondary axis that's been calculated for this joint geometry.
        Conceptually, this is the X-axis of the computed coordinate system.
        """
        return core.Vector3D()
    @property
    def thirdAxisVector(self) -> core.Vector3D:
        """
        Returns the direction of the third axis that's been calculated for this joint geometry.
        Conceptually, this is the Y-axis of the computed coordinate system.
        """
        return core.Vector3D()
    @property
    def planeOne(self) -> core.Base:
        """
        Returns the first plane for joint geometry that is defined between two planes. Returns null in all other cases.
        """
        return core.Base()
    @property
    def planeTwo(self) -> core.Base:
        """
        Returns the second plane for joint geometry that is defined between two planes. Returns null in all other cases.
        """
        return core.Base()
    @property
    def tangentFaceType(self) -> JointTangentFaceTypes:
        """
        Returns the tangent face type this JointGeometry is using.
        """
        return JointTangentFaceTypes()
    @property
    def tangentFaceParamOne(self) -> float:
        """
        Returns the first tangent face parameter.
        """
        return float()
    @property
    def tangentFaceParamTwo(self) -> float:
        """
        Returns the second tangent face parameter.
        """
        return float()

class JointInput(core.Base):
    """
    Defines all of the information required to create a new joint. This object provides
    equivalent functionality to the Joint command dialog in that it gathers the required
    information to create a joint.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> JointInput:
        return JointInput()
    def setAsRigidJointMotion(self) -> bool:
        """
        Defines the relationship between the two joint geometries as a rigid joint.
        Returns true if successful.
        """
        return bool()
    def setAsRevoluteJointMotion(self, rotationAxis: JointDirections, customRotationAxisEntity: core.Base = None) -> bool:
        """
        Defines the relationship between the two joint geometries as a revolute joint.
        rotationAxis : Specifies which axis the rotation is around. If this is set to CustomJointDirection then the
        customRotationAxisEntity argument must also be provided.
        customRotationAxisEntity : If the rotationAxis is customAxisEntity this argument is used to specify the entity that defines
        the custom axis of rotation. This can be several types of entities that an axis can be derived
        from.
        Returns true if the operation was successful.
        """
        return bool()
    def setAsSliderJointMotion(self, sliderDirection: JointDirections, customSliderDirectionEntity: core.Base = None) -> bool:
        """
        Defines the relationship between the two joint geometries as a slider joint.
        sliderDirection : Specifies which axis the slide direction is along. If this is set to CustomJointDirection then the
        customSliderDirectionEntity argument must also be provided.
        customSliderDirectionEntity : If the sliderDirection is CustomJointDirection this argument is used to specify the entity that defines
        the custom slider direction. This can be several types of entities that can define a direction.
        Returns true if the operation was successful.
        """
        return bool()
    def setAsCylindricalJointMotion(self, rotationAxis: JointDirections, customRotationAxisEntity: core.Base = None) -> bool:
        """
        Defines the relationship between the two joint geometries as a cylindrical joint.
        rotationAxis : Specifies which axis the rotation is around. If this is set to CustomJointDirection then the
        customRotationAxisEntity argument must also be provided.
        customRotationAxisEntity : If the rotationAxis is customAxisEntity this argument is used to specify the entity that defines
        the custom axis of rotation. This can be several types of entities that an axis can be derived
        from.
        Returns true if the operation was successful.
        """
        return bool()
    def setAsPinSlotJointMotion(self, rotationAxis: JointDirections, slideDirection: JointDirections, customRotationAxisEntity: core.Base = None, customSlideDirectionEntity: core.Base = None) -> bool:
        """
        Defines the relationship between the two joint geometries as a pin-slot joint.
        rotationAxis : Specifies which axis the rotation is around. If this is set to CustomJointDirection then the
        customRotationAxisEntity argument must also be provided.
        slideDirection : Specifies which axis the slide direction is along. If this is set to CustomJointDirection then the
        customSlideDirectionEntity argument must also be provided.
        customRotationAxisEntity : If the rotationAxis is customAxisEntity this argument is used to specify the entity that defines
        the custom axis of rotation. This can be several types of entities that an axis can be derived
        customSlideDirectionEntity : If the slideDirection is CustomJointDirection this argument is used to specify the entity that defines
        the custom slide direction. This can be several types of entities that can define a direction.
        Returns true if the operation was successful.
        """
        return bool()
    def setAsPlanarJointMotion(self, normalDirection: JointDirections, customNormalDirectionEntity: core.Base = None, customPrimarySlideDirection: core.Base = None) -> bool:
        """
        Defines the relationship between the two joint geometries as a planar joint.
        normalDirection : Defines the direction of the normal of the single degree of rotation.
        This can be set to XAxisJointDirection, YAxisJointDirection, ZAxisJointDirection,
        or CustomJointDirection. If set to CustomJointDirection then the customNormalDirectionEntity
        argument must also be provided.
        customNormalDirectionEntity : If the normalDirection is CustomJointDirection this argument is used to specify the entity that defines
        the direction of the normal. This can be several types of entities that can define a direction.
        customPrimarySlideDirection : This arguments defines the direction of the primary slide direction. A default primary slide direction
        is automatically chosen and will be used if this argument is not provided or is null. The secondary slide
        direction is automatically inferred from the normal and primary slide directions.
        Returns true if the operation was successful.
        """
        return bool()
    def setAsBallJointMotion(self, pitchDirection: JointDirections, yawDirection: JointDirections, customPitchDirection: core.Base = None, customYawDirection: core.Base = None) -> bool:
        """
        Defines the relationship between the two joint geometries as a ball joint.
        pitchDirection : Defines the direction the pitch angle is measured from. This can be ZAxisJointDirection or CustomJointDirection. If
        CustomJointDirection is specified then you must also provide a value for the customPitchDirection argument.
        yawDirection : Defines the direction the yaw is measured from. This can be XAxisJointDirection or CustomJointDirection. If
        CustomJointDirection is specified then you must also provide a value for the customYawDirection argument.
        customPitchDirection : If the pitchDirection argument is customPitchDirection this argument is used to define the direction the pitch
        angel is measured from. This can be several types of entities that can define a direction.
        customYawDirection : If the yawDirection argument is customPitchDirection this argument is used to define the direction the yaw
        angel is measured from. This can be several types of entities that can define a direction.
        Returns true if the operation was successful.
        """
        return bool()
    @property
    def geometryOrOriginOne(self) -> core.Base:
        """
        Gets and sets the first JointGeometry or JointOrigin for this joint.
        """
        return core.Base()
    @geometryOrOriginOne.setter
    def geometryOrOriginOne(self, value: core.Base):
        """
        Gets and sets the first JointGeometry or JointOrigin for this joint.
        """
        pass
    @property
    def geometryOrOriginTwo(self) -> core.Base:
        """
        Gets and sets the second JointGeometry or JointOrigin for this joint.
        """
        return core.Base()
    @geometryOrOriginTwo.setter
    def geometryOrOriginTwo(self, value: core.Base):
        """
        Gets and sets the second JointGeometry or JointOrigin for this joint.
        """
        pass
    @property
    def angle(self) -> core.ValueInput:
        """
        Specifies the angle between two input geometries. This is effectively the
        angle between the two primary axes of the input geometries. When a new
        JointInput object is created, this value defaults to zero. When the joint
        is created this will become the value of the parameter that controls the joint angle.
        
        When using a real value to define the angle, the value is in radians. When
        using a string the expression is evaluated using the document default units for angles.
        """
        return core.ValueInput()
    @angle.setter
    def angle(self, value: core.ValueInput):
        """
        Specifies the angle between two input geometries. This is effectively the
        angle between the two primary axes of the input geometries. When a new
        JointInput object is created, this value defaults to zero. When the joint
        is created this will become the value of the parameter that controls the joint angle.
        
        When using a real value to define the angle, the value is in radians. When
        using a string the expression is evaluated using the document default units for angles.
        """
        pass
    @property
    def offset(self) -> core.ValueInput:
        """
        Specifies the offset between two input geometries. This is effectively the
        offset distance between the two planes defined by the primary and secondary axes
        of the input geometries. When a new JointInput object is created, this value defaults to zero.
        When the joint is created this will become the value of the parameter that controls the joint offset.
        
        When using a real value to define the offset, the value is in centimeters. When
        using a string the expression is evaluated using the document default units for distance.
        """
        return core.ValueInput()
    @offset.setter
    def offset(self, value: core.ValueInput):
        """
        Specifies the offset between two input geometries. This is effectively the
        offset distance between the two planes defined by the primary and secondary axes
        of the input geometries. When a new JointInput object is created, this value defaults to zero.
        When the joint is created this will become the value of the parameter that controls the joint offset.
        
        When using a real value to define the offset, the value is in centimeters. When
        using a string the expression is evaluated using the document default units for distance.
        """
        pass
    @property
    def isFlipped(self) -> bool:
        """
        Gets and sets if the joint direction is flipped or not. This is effectively
        specifying if the third axis of the two input geometries is facing (false) or
        opposed (true).
        """
        return bool()
    @isFlipped.setter
    def isFlipped(self, value: bool):
        """
        Gets and sets if the joint direction is flipped or not. This is effectively
        specifying if the third axis of the two input geometries is facing (false) or
        opposed (true).
        """
        pass
    @property
    def jointMotion(self) -> JointMotion:
        """
        Returns an object derived from JointMotion that defines how the motion between the two joint geometries is defined.
        """
        return JointMotion()

class JointLimits(core.Base):
    """
    Used to define limits for the range of motion of a joint.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> JointLimits:
        return JointLimits()
    @property
    def minimumValue(self) -> float:
        """
        The minimum value of the value. This is in either centimeters
        or radians depending on if the joint value this is associated with
        defines a distance or an angle.
        """
        return float()
    @minimumValue.setter
    def minimumValue(self, value: float):
        """
        The minimum value of the value. This is in either centimeters
        or radians depending on if the joint value this is associated with
        defines a distance or an angle.
        """
        pass
    @property
    def maximumValue(self) -> float:
        """
        The maximum value of the value. This is in either centimeters
        or radians depending on if the joint value this is associated with
        defines a distance or an angle.
        """
        return float()
    @maximumValue.setter
    def maximumValue(self, value: float):
        """
        The maximum value of the value. This is in either centimeters
        or radians depending on if the joint value this is associated with
        defines a distance or an angle.
        """
        pass
    @property
    def restValue(self) -> float:
        """
        The resting state value. This is in either centimeters
        or radians depending on if the joint value this is associated with
        defines a distance or an angle.
        """
        return float()
    @restValue.setter
    def restValue(self, value: float):
        """
        The resting state value. This is in either centimeters
        or radians depending on if the joint value this is associated with
        defines a distance or an angle.
        """
        pass
    @property
    def isMinimumValueEnabled(self) -> bool:
        """
        Gets and sets whether the minimum joint limit is enabled or not.
        """
        return bool()
    @isMinimumValueEnabled.setter
    def isMinimumValueEnabled(self, value: bool):
        """
        Gets and sets whether the minimum joint limit is enabled or not.
        """
        pass
    @property
    def isMaximumValueEnabled(self) -> bool:
        """
        Gets and sets whether the maximum joint limit is enabled or not.
        """
        return bool()
    @isMaximumValueEnabled.setter
    def isMaximumValueEnabled(self, value: bool):
        """
        Gets and sets whether the maximum joint limit is enabled or not.
        """
        pass
    @property
    def isRestValueEnabled(self) -> bool:
        """
        Gets and sets whether the resting joint value is enabled or not.
        """
        return bool()
    @isRestValueEnabled.setter
    def isRestValueEnabled(self, value: bool):
        """
        Gets and sets whether the resting joint value is enabled or not.
        """
        pass

class JointList(core.Base):
    """
    A list of joints.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> JointList:
        return JointList()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> Joint:
        return None
    def __iter__(self) -> Iterator[Joint]:
        return None
    def item(self, index: int) -> Joint:
        """
        Function that returns the specified joint using an index into the list.
        index : The index of the item within the list to return. The first item in the list has an index of 0.
        Returns the specified item or null if an invalid index was specified.
        """
        return Joint()
    def itemByName(self, name: str) -> Joint:
        """
        Function that returns the specified joint using a name.
        name : The name of the item within the list to return.
        Returns the specified item or null if an invalid name was specified.
        """
        return Joint()
    @property
    def count(self) -> int:
        """
        Returns number of joints in the list.
        """
        return int()

class JointMotion(core.Base):
    """
    The base class for the classes that represent all of the
    various joint types.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> JointMotion:
        return JointMotion()
    @property
    def jointType(self) -> JointTypes:
        """
        Returns an enum value indicating the type of joint this joint represents.
        """
        return JointTypes()

class JointOrigin(core.Base):
    """
    Represents an existing joint origin in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> JointOrigin:
        return JointOrigin()
    def deleteMe(self) -> bool:
        """
        Deletes this joint origin.
        Returns true if successful.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> JointOrigin:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return JointOrigin()
    @property
    def parentComponent(self) -> Component:
        """
        Returns the parent component that owns this joint origin.
        """
        return Component()
    @property
    def name(self) -> str:
        """
        Gets and sets the name of this joint origin. This is the name seen by the user in the timeline.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name of this joint origin. This is the name seen by the user in the timeline.
        """
        pass
    @property
    def geometry(self) -> JointGeometry:
        """
        Gets and sets the joint geometry for this joint origin input. This
        defines the location of the joint origin.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: joint.timelineObject.rollTo(True)
        """
        return JointGeometry()
    @geometry.setter
    def geometry(self, value: JointGeometry):
        """
        Gets and sets the joint geometry for this joint origin input. This
        defines the location of the joint origin.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: joint.timelineObject.rollTo(True)
        """
        pass
    @property
    def angle(self) -> ModelParameter:
        """
        Gets the parameter that controls the angle. The value can be changed
        using the functionality of the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def offsetX(self) -> ModelParameter:
        """
        Gets the parameter that controls the X offset direction. The value can be changed
        using the functionality of the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def offsetY(self) -> ModelParameter:
        """
        Gets the parameter that controls the Y offset direction. The value can be changed
        using the functionality of the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def offsetZ(self) -> ModelParameter:
        """
        Gets the parameter that controls the Z offset direction. The value can be changed
        using the functionality of the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def isFlipped(self) -> bool:
        """
        Gets and sets if the joint origin direction is flipped or not.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: joint.timelineObject.rollTo(True)
        """
        return bool()
    @isFlipped.setter
    def isFlipped(self, value: bool):
        """
        Gets and sets if the joint origin direction is flipped or not.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: joint.timelineObject.rollTo(True)
        """
        pass
    @property
    def xAxisEntity(self) -> core.Base:
        """
        Gets and sets the entity that defines the X axis direction. This defaults
        to null meaning the X axis is inferred from the input geometry.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: joint.timelineObject.rollTo(True)
        """
        return core.Base()
    @xAxisEntity.setter
    def xAxisEntity(self, value: core.Base):
        """
        Gets and sets the entity that defines the X axis direction. This defaults
        to null meaning the X axis is inferred from the input geometry.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: joint.timelineObject.rollTo(True)
        """
        pass
    @property
    def zAxisEntity(self) -> core.Base:
        """
        Gets and sets the entity that defines the Z axis direction. This defaults
        to null meaning the Z axis is inferred from the input geometry.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: joint.timelineObject.rollTo(True)
        """
        return core.Base()
    @zAxisEntity.setter
    def zAxisEntity(self, value: core.Base):
        """
        Gets and sets the entity that defines the Z axis direction. This defaults
        to null meaning the Z axis is inferred from the input geometry.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: joint.timelineObject.rollTo(True)
        """
        pass
    @property
    def primaryAxisVector(self) -> core.Vector3D:
        """
        Returns the direction of the primary axis that's been calculated for this joint origin. This
        is conceptually the Z axis as shown by the triad representing the joint origin.
        """
        return core.Vector3D()
    @property
    def secondaryAxisVector(self) -> core.Vector3D:
        """
        Returns the direction of the secondary axis that's been calculated for this joint origin. This
        is conceptually the X axis as shown by the triad representing the joint origin.
        """
        return core.Vector3D()
    @property
    def thirdAxisVector(self) -> core.Vector3D:
        """
        Returns the direction of the third axis that's been calculated for this joint origin. This
        is conceptually the Y axis as shown by the triad representing the joint origin.
        """
        return core.Vector3D()
    @property
    def timelineObject(self) -> TimelineObject:
        """
        Returns the timeline object associated with this joint origin.
        """
        return TimelineObject()
    @property
    def nativeObject(self) -> JointOrigin:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return JointOrigin()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this object
        in an assembly. This is only valid in the case where this is acting
        as a proxy in an assembly. Returns null in the case where the object
        is not in the context of an assembly but is already the native object.
        """
        return Occurrence()
    @property
    def attributes(self) -> core.Attributes:
        """
        Returns the collection of attributes associated with this joint origin.
        """
        return core.Attributes()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the JointOrigin object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same joint origin.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        """
        return str()
    @property
    def isLightBulbOn(self) -> bool:
        """
        Gets and sets if the light bulb of this jointOrigin as displayed in the browser is on or off.
        A joint origin will only be visible if the light bulb is switched on. However,
        the light bulb can be on and the joint origin still invisible if a higher level occurrence
        in the assembly context is not visible because its light bulb is off or the joint origins folder
        light bulb is off.
        """
        return bool()
    @isLightBulbOn.setter
    def isLightBulbOn(self, value: bool):
        """
        Gets and sets if the light bulb of this jointOrigin as displayed in the browser is on or off.
        A joint origin will only be visible if the light bulb is switched on. However,
        the light bulb can be on and the joint origin still invisible if a higher level occurrence
        in the assembly context is not visible because its light bulb is off or the joint origins folder
        light bulb is off.
        """
        pass
    @property
    def transform(self) -> core.Matrix3D:
        """
        Returns the position and orientation of the joint geometry associated with this joint origin.
        This is returned as a 3D matrix which provides the origin and the X, Y, and Z axis vectors of the
        coordinate system.
        
        This property is especially useful in cases where the JointGeometry cannot be obtained. This can
        happen when the model has been modified in a way where the geometry used to create the joint is
        no longer available.
        """
        return core.Matrix3D()

class JointOriginInput(core.Base):
    """
    Defines all of the information required to create a new joint origin. This object provides
    equivalent functionality to the Joint Origin command dialog in that it gathers the required
    information to create a joint origin.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> JointOriginInput:
        return JointOriginInput()
    @property
    def geometry(self) -> JointGeometry:
        """
        Gets and sets the joint geometry for this joint origin input. This
        defines the location of the joint origin.
        """
        return JointGeometry()
    @geometry.setter
    def geometry(self, value: JointGeometry):
        """
        Gets and sets the joint geometry for this joint origin input. This
        defines the location of the joint origin.
        """
        pass
    @property
    def angle(self) -> core.ValueInput:
        """
        Gets and sets the value that defines the angle for the joint origin. This defaults to zero
        if it's not specified. The value defines an angle and if the ValueInput is defined using
        the createByReal method the value is assumed to be radians.
        """
        return core.ValueInput()
    @angle.setter
    def angle(self, value: core.ValueInput):
        """
        Gets and sets the value that defines the angle for the joint origin. This defaults to zero
        if it's not specified. The value defines an angle and if the ValueInput is defined using
        the createByReal method the value is assumed to be radians.
        """
        pass
    @property
    def offsetX(self) -> core.ValueInput:
        """
        Gets and sets the value that defines the X offset direction. This defaults to zero
        if it's not specified. The value defines a distance and if the ValueInput is defined using
        the createByReal method the value is assumed to be centimeters.
        """
        return core.ValueInput()
    @offsetX.setter
    def offsetX(self, value: core.ValueInput):
        """
        Gets and sets the value that defines the X offset direction. This defaults to zero
        if it's not specified. The value defines a distance and if the ValueInput is defined using
        the createByReal method the value is assumed to be centimeters.
        """
        pass
    @property
    def offsetY(self) -> core.ValueInput:
        """
        Gets and sets the value that defines the Y offset direction. This defaults to zero
        if it's not specified. The value defines a distance and if the ValueInput is defined using
        the createByReal method the value is assumed to be centimeters.
        """
        return core.ValueInput()
    @offsetY.setter
    def offsetY(self, value: core.ValueInput):
        """
        Gets and sets the value that defines the Y offset direction. This defaults to zero
        if it's not specified. The value defines a distance and if the ValueInput is defined using
        the createByReal method the value is assumed to be centimeters.
        """
        pass
    @property
    def offsetZ(self) -> core.ValueInput:
        """
        Gets and sets the value that defines the Z offset direction. This defaults to zero
        if it's not specified. The value defines a distance and if the ValueInput is defined using
        the createByReal method the value is assumed to be centimeters.
        """
        return core.ValueInput()
    @offsetZ.setter
    def offsetZ(self, value: core.ValueInput):
        """
        Gets and sets the value that defines the Z offset direction. This defaults to zero
        if it's not specified. The value defines a distance and if the ValueInput is defined using
        the createByReal method the value is assumed to be centimeters.
        """
        pass
    @property
    def isFlipped(self) -> bool:
        """
        Gets and sets if the joint origin direction is flipped or not.
        """
        return bool()
    @isFlipped.setter
    def isFlipped(self, value: bool):
        """
        Gets and sets if the joint origin direction is flipped or not.
        """
        pass
    @property
    def xAxisEntity(self) -> core.Base:
        """
        Gets and sets the entity that defines the X axis direction. This defaults
        to null meaning the X axis is inferred from the input geometry.
        """
        return core.Base()
    @xAxisEntity.setter
    def xAxisEntity(self, value: core.Base):
        """
        Gets and sets the entity that defines the X axis direction. This defaults
        to null meaning the X axis is inferred from the input geometry.
        """
        pass
    @property
    def zAxisEntity(self) -> core.Base:
        """
        Gets and sets the entity that defines the Z axis direction. This defaults
        to null meaning the Z axis is inferred from the input geometry.
        """
        return core.Base()
    @zAxisEntity.setter
    def zAxisEntity(self, value: core.Base):
        """
        Gets and sets the entity that defines the Z axis direction. This defaults
        to null meaning the Z axis is inferred from the input geometry.
        """
        pass
    @property
    def primaryAxisVector(self) -> core.Vector3D:
        """
        Returns the direction of the primary axis that's been calculated for this joint origin. This
        is conceptually the Z axis as shown by the triad representing the joint origin.
        """
        return core.Vector3D()
    @property
    def secondaryAxisVector(self) -> core.Vector3D:
        """
        Returns the direction of the secondary axis that's been calculated for this joint origin. This
        is conceptually the X axis as shown by the triad representing the joint origin.
        """
        return core.Vector3D()
    @property
    def thirdAxisVector(self) -> core.Vector3D:
        """
        Returns the direction of the third axis that's been calculated for this joint origin. This
        is conceptually the Y axis as shown by the triad representing the joint origin.
        """
        return core.Vector3D()
    @property
    def globalOrientParamOne(self) -> core.ValueInput:
        """
        Gets and sets the value that defines the first global orient parameter for the joint origin.
        This defaults to zero if it's not specified.
        For Cylineder or cone, it represents the angle around the center axis.
        For Sphere and Torus, it represents the angle around the center axis.
        For Spline, it represents the U parameter.
        """
        return core.ValueInput()
    @globalOrientParamOne.setter
    def globalOrientParamOne(self, value: core.ValueInput):
        """
        Gets and sets the value that defines the first global orient parameter for the joint origin.
        This defaults to zero if it's not specified.
        For Cylineder or cone, it represents the angle around the center axis.
        For Sphere and Torus, it represents the angle around the center axis.
        For Spline, it represents the U parameter.
        """
        pass
    @property
    def globalOrientParamTwo(self) -> core.ValueInput:
        """
        Gets and sets the value that defines the second global orient parameter for the joint origin.
        This defaults to zero if it's not specified.
        For Cylinder or cone, it is not used.
        For Sphere, it represents the polar angle, which is the angle between the radius line and the equator plane.
        For Torus, it represents the angle around the center of the section circle.
        For Spline, it represents the V parameter.
        """
        return core.ValueInput()
    @globalOrientParamTwo.setter
    def globalOrientParamTwo(self, value: core.ValueInput):
        """
        Gets and sets the value that defines the second global orient parameter for the joint origin.
        This defaults to zero if it's not specified.
        For Cylinder or cone, it is not used.
        For Sphere, it represents the polar angle, which is the angle between the radius line and the equator plane.
        For Torus, it represents the angle around the center of the section circle.
        For Spline, it represents the V parameter.
        """
        pass

class JointOriginList(core.Base):
    """
    A list of joint origins.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> JointOriginList:
        return JointOriginList()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> JointOrigin:
        return None
    def __iter__(self) -> Iterator[JointOrigin]:
        return None
    def item(self, index: int) -> JointOrigin:
        """
        Function that returns the specified joint origin using an index into the list.
        index : The index of the item within the list to return. The first item in the list has an index of 0.
        Returns the specified item or null if an invalid index was specified.
        """
        return JointOrigin()
    def itemByName(self, name: str) -> JointOrigin:
        """
        Function that returns the specified joint origin using a name.
        name : The name of the item within the list to return.
        Returns the specified item or null if an invalid name was specified.
        """
        return JointOrigin()
    @property
    def count(self) -> int:
        """
        Returns number of joint origins in the list.
        """
        return int()

class JointOrigins(core.Base):
    """
    The collection of joint origins in this component. This provides access to all existing
    joint origins and supports the ability to create new joint origins.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> JointOrigins:
        return JointOrigins()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> JointOrigin:
        return None
    def __iter__(self) -> Iterator[JointOrigin]:
        return None
    def item(self, index: int) -> JointOrigin:
        """
        Function that returns the specified joint origin 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 JointOrigin()
    def itemByName(self, name: str) -> JointOrigin:
        """
        Function that returns the specified joint origin using a name.
        name : The name of the item within the collection to return.
        Returns the specified item or null if an invalid name was specified.
        """
        return JointOrigin()
    def createInput(self, geometry: JointGeometry) -> JointOriginInput:
        """
        Creates a JointOriginInput object which is used to collect all of the information
        needed to create a simple joint origin. The creation of the input object takes the required
        input as the geometry argument and you can optionally use methods and properties on the created
        JointOriginInput to set other optional settings. The JointOrigin is created by calling the add
        method of the JointOrigins object and passing it the JointOriginInput object.
        geometry : A JointGeometry object that defines the geometry the joint origin will be created on.
        Returns a JointOriginInput object if successfully created and null if it fails.
        """
        return JointOriginInput()
    def add(self, input: JointOriginInput) -> JointOrigin:
        """
        Create a new joint origin.
        input : A JointOriginInput object that full defines all of the information needed to create a joint origin.
        You create a JointOriginInput by using the createInput method of the JointOrigins object.
        Returns a JointOrigin object if successfully created and null if it fails.
        """
        return JointOrigin()
    @property
    def count(self) -> int:
        """
        Returns number of joint origins in the collection.
        """
        return int()

class Joints(core.Base):
    """
    The collection of joints in this component. This provides access to all existing joints
    and supports the ability to create new joints.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Joints:
        return Joints()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> Joint:
        return None
    def __iter__(self) -> Iterator[Joint]:
        return None
    def item(self, index: int) -> Joint:
        """
        Function that returns the specified joint 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 Joint()
    def createInput(self, geometryOrOriginOne: core.Base, geometryOrOriginTwo: core.Base) -> JointInput:
        """
        Creates a JointInput object, which is the API equivalent to the Joint command dialog. You
        you use methods and properties on the returned class to set the desired options, similar to
        providing input and setting options in the Joint command dialog. Once the settings are defined
        you call the Joints.add method passing in the JointInput object to create the actual joint.
        geometryOrOriginOne : A JointGeometry or JointOrigin object that defines the first set of geometry of the joint.
        JointGeometry objects are created by using the various static methods on the JointGeometry class
        and JointOrigin objects are created through the JointOrigins object.
        geometryOrOriginTwo : A JointGeometry or JointOrigin object that defines the second set of geometry of the joint.
        JointGeometry objects are created by using the various static methods on the JointGeometry class
        and JointOrigin objects are created through the JointOrigins object.
        Returns the JointInput object or null if the creation failed.
        """
        return JointInput()
    def add(self, input: JointInput) -> Joint:
        """
        Creates a new joint.
        input : The JointInput object that defines the geometry and various inputs that fully define a joint.
        A JointInput object is created using the Joints.createInput method.
        Returns the newly created Joint or null in the case of failure.
        """
        return Joint()
    def itemByName(self, name: str) -> Joint:
        """
        Function that returns the specified joint using a name.
        name : The name of the item within the collection to return.
        Returns the specified item or null if an invalid name was specified.
        """
        return Joint()
    def createInferredJointInput(self) -> InferredJointInput:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Creates a joint input to define an inferred joint. Use functionality on
        the returned InferredJointInput to define the input needed to infer a joint.
        Returns an InferredJointInput.
        """
        return InferredJointInput()
    def addInferredJoint(self, input: InferredJointInput) -> Joint:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Creates a new inferred joint.
        input : The InferredJointInput object that defines the pairs of geometry and other settings
        that Fusion will use to infer a joint from.
        An InferredJointInput object is created using the Joints.createInferredJointInput method.
        Returns the newly created Joint or fails if there is bad input.
        """
        return Joint()
    @property
    def count(self) -> int:
        """
        Returns number of joints in the collection.
        """
        return int()

class LoftCenterLineOrRail(core.Base):
    """
    Represent a centerline or a single rail used by a loft feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> LoftCenterLineOrRail:
        return LoftCenterLineOrRail()
    def deleteMe(self) -> bool:
        """
        Deletes the centerline or rail.
        
        If this LoftCenterLineOrRail object is associated with a created feature, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        Returns true if the operation was successful.
        """
        return bool()
    @property
    def isCenterLine(self) -> bool:
        """
        Indicates if this object is a loft centerline (true) or a rail (false).
        """
        return bool()
    @property
    def entity(self) -> core.Base:
        """
        Gets and sets the entity that defines the centerline or rail. This can be a single sketch entity,
        a single BRepEdge, a Path, or a Profile.
        
        If this LoftCenterLineOrRail object is associated with a created feature, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @entity.setter
    def entity(self, value: core.Base):
        """
        Gets and sets the entity that defines the centerline or rail. This can be a single sketch entity,
        a single BRepEdge, a Path, or a Profile.
        
        If this LoftCenterLineOrRail object is associated with a created feature, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def edgeCondition(self) -> LoftRailEdgeConditions:
        """
        Gets and sets the edge condition for this rail. This value is only
        applicable when a BRepEdge is used as the rail entity. If sketch
        geometry is used, this value is ignored. The property defaults
        to G0LoftRailEdgeCondition.
        
        If this LoftCenterLineOrRail object is associated with a created feature, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return LoftRailEdgeConditions()
    @edgeCondition.setter
    def edgeCondition(self, value: LoftRailEdgeConditions):
        """
        Gets and sets the edge condition for this rail. This value is only
        applicable when a BRepEdge is used as the rail entity. If sketch
        geometry is used, this value is ignored. The property defaults
        to G0LoftRailEdgeCondition.
        
        If this LoftCenterLineOrRail object is associated with a created feature, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass

class LoftCenterLineOrRails(core.Base):
    """
    Defines a single centerline or one or more rails for a loft feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> LoftCenterLineOrRails:
        return LoftCenterLineOrRails()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> LoftCenterLineOrRail:
        return None
    def __iter__(self) -> Iterator[LoftCenterLineOrRail]:
        return None
    def item(self, index: int) -> LoftCenterLineOrRail:
        """
        Function that returns the specified LoftCenterLineOrRail 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 LoftCenterLineOrRail()
    def addCenterLine(self, entity: core.Base) -> LoftCenterLineOrRail:
        """
        Adds a centerline. A single centerline can be defined for a loft. If a centerline or rails have already
        been defined, they will be removed and the input will become the new single centerline.
        
        If this LoftCenterLineOrRails object is associated with a created feature,
        entity : The entity that defines the center line. This can be a single sketch curve, a single BRepEdge, a Path consisting of
        connected B-Rep edges or sketch curves.
        Returns the new LoftCenterLineOrRail object or null in the case of a failure.
        """
        return LoftCenterLineOrRail()
    def addRail(self, entity: core.Base) -> LoftCenterLineOrRail:
        """
        Add a rail to the loft definition. Multiple rails can be defined, so each call of this
        method adds a new rail.
        
        If this LoftCenterLineOrRails object is associated with a created feature, you need to position the timeline
        marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        entity : The entity that defines the rail. This can be a single sketch curve, a single BRepEdge, or a Path consisting of
        connected B-Rep edges or sketch curves.
        Returns the new LoftCenterLineOrRail object or null in the case of a failure.
        """
        return LoftCenterLineOrRail()
    @property
    def count(self) -> int:
        """
        The number of centerlines or rails in the collection.
        """
        return int()
    @property
    def isCenterLine(self) -> bool:
        """
        Indicates if a centerline or rails are currently defined.
        """
        return bool()

class LoftEndCondition(core.Base):
    """
    The base class for all loft end conditions.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> LoftEndCondition:
        return LoftEndCondition()
    @property
    def parentLoftSection(self) -> LoftSection:
        """
        Returns the parent loft section.
        """
        return LoftSection()

class LoftFeatureInput(core.Base):
    """
    This object defines the all of the input necessary to create a loft feature. It is the
    programming equivalent to the Loft command dialog. Through this object you provide
    the input needed to fully define a loft. To create the loft feature you pass
    this object the LoftFeatures.add method.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> LoftFeatureInput:
        return LoftFeatureInput()
    @property
    def loftSections(self) -> LoftSections:
        """
        The set of sections, (or profiles as they're referred to in the user-interface), that the loft will pass through. Use the add method on the LoftSections
        object to specify new sections.
        """
        return LoftSections()
    @property
    def centerLineOrRails(self) -> LoftCenterLineOrRails:
        """
        The single centerline or set of rails that define the shape of the loft. Use methods on the
        returned LoftCenterLineOrRails object to define the centerline or rails.
        """
        return LoftCenterLineOrRails()
    @property
    def operation(self) -> FeatureOperations:
        """
        Gets and sets the type of operation performed by the loft.
        """
        return FeatureOperations()
    @operation.setter
    def operation(self, value: FeatureOperations):
        """
        Gets and sets the type of operation performed by the loft.
        """
        pass
    @property
    def creationOccurrence(self) -> Occurrence:
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the loft is created based on geometry (e.g. a profile and/or face(s))
        when the loft is being created in another component AND the loft is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI
        """
        return Occurrence()
    @creationOccurrence.setter
    def creationOccurrence(self, value: Occurrence):
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the loft is created based on geometry (e.g. a profile and/or face(s))
        when the loft is being created in another component AND the loft is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI
        """
        pass
    @property
    def isSolid(self) -> bool:
        """
        Specifies if the loft should be created as a solid or surface. This is
        initialized to true so a solid will attempt to be created if it's not changed.
        """
        return bool()
    @isSolid.setter
    def isSolid(self, value: bool):
        """
        Specifies if the loft should be created as a solid or surface. This is
        initialized to true so a solid will attempt to be created if it's not changed.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass
    @property
    def participantBodies(self) -> list[BRepBody]:
        """
        Gets and sets the list of bodies that will participate in the feature when the operation is a cut or intersection.
        
        If this property has not been set, the default behavior is that all bodies that are intersected by the
        feature will participate.
        
        This property can return null in the case where the feature has not been fully defined so that
        possible intersecting bodies can be computed.
        """
        return [BRepBody()]
    @participantBodies.setter
    def participantBodies(self, value: list[BRepBody]):
        """
        Gets and sets the list of bodies that will participate in the feature when the operation is a cut or intersection.
        
        If this property has not been set, the default behavior is that all bodies that are intersected by the
        feature will participate.
        
        This property can return null in the case where the feature has not been fully defined so that
        possible intersecting bodies can be computed.
        """
        pass
    @property
    def isClosed(self) -> bool:
        """
        Specifies if the loft closes back on itself. In other words, the first section is also
        used as the last section and the connection is smooth. This property defaults to false.
        """
        return bool()
    @isClosed.setter
    def isClosed(self, value: bool):
        """
        Specifies if the loft closes back on itself. In other words, the first section is also
        used as the last section and the connection is smooth. This property defaults to false.
        """
        pass
    @property
    def isTangentEdgesMerged(self) -> bool:
        """
        Specifies if the loft will keep or merge tangent edges. These are edges between tangent
        faces in the resulting loft surface. If true, the faces will be merged so the connecting
        edge no longer exists
        """
        return bool()
    @isTangentEdgesMerged.setter
    def isTangentEdgesMerged(self, value: bool):
        """
        Specifies if the loft will keep or merge tangent edges. These are edges between tangent
        faces in the resulting loft surface. If true, the faces will be merged so the connecting
        edge no longer exists
        """
        pass
    @property
    def startLoftEdgeAlignment(self) -> LoftEdgeAlignments:
        """
        Specifies the start edge alignment option for the loft feature. The default is Free Edges.
        """
        return LoftEdgeAlignments()
    @startLoftEdgeAlignment.setter
    def startLoftEdgeAlignment(self, value: LoftEdgeAlignments):
        """
        Specifies the start edge alignment option for the loft feature. The default is Free Edges.
        """
        pass
    @property
    def endLoftEdgeAlignment(self) -> LoftEdgeAlignments:
        """
        Specifies the end edge alignment option for the loft feature. The default is Free Edges.
        """
        return LoftEdgeAlignments()
    @endLoftEdgeAlignment.setter
    def endLoftEdgeAlignment(self, value: LoftEdgeAlignments):
        """
        Specifies the end edge alignment option for the loft feature. The default is Free Edges.
        """
        pass

class LoftFeatures(core.Base):
    """
    Collection that provides access to all of the existing loft features in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> LoftFeatures:
        return LoftFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> LoftFeature:
        return None
    def __iter__(self) -> Iterator[LoftFeature]:
        return None
    def item(self, index: int) -> LoftFeature:
        """
        Function that returns the specified loft feature 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 LoftFeature()
    def itemByName(self, name: str) -> LoftFeature:
        """
        Function that returns the specified loft feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return LoftFeature()
    def createInput(self, operation: FeatureOperations) -> LoftFeatureInput:
        """
        Creates a LoftFeatureInput object. Use properties and methods on the returned LoftFeatureInput
        object to provide the required input to create a loft feature. The LoftFeatureInput object can then be used as input to the
        add method to create the loft feature.
        operation : The feature operation to perform.
        Returns the newly created LoftFeatureInput object or null if the creation failed.
        """
        return LoftFeatureInput()
    def add(self, input: LoftFeatureInput) -> LoftFeature:
        """
        Creates a new loft feature.
        input : A LoftFeatureInput object that defines the desired loft feature. Use the createInput
        method to create a new LoftFeatureInput object and then use methods on it
        (the LoftFeatureInput object) to define the required input.
        Returns the newly created LoftFeature object or null if the creation failed.
        """
        return LoftFeature()
    @property
    def count(self) -> int:
        """
        The number of loft features in the collection.
        """
        return int()

class LoftSection(core.Base):
    """
    A single loft section.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> LoftSection:
        return LoftSection()
    def deleteMe(self) -> bool:
        """
        Deletes this LoftSection.
        
        If this LoftSection object is associated with a created feature, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        Returns true if the operation was successful.
        """
        return bool()
    def reorder(self, newIndex: int) -> bool:
        """
        Repositions this section so that it has the new index specified.
        
        If this LoftSection object is associated with a created feature, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        newIndex : The new index value. For example, passing in zero as the new index will make this
        the first section in the loft and (LoftSections.count - 1) will make it the last section.
        All other sections will be maintain their existing order but be shifted to allow space
        for this section.
        Returns true if the reorder operation was successful.
        """
        return bool()
    def setFreeEndCondition(self) -> bool:
        """
        Sets the end condition to be a "Free" end condition. This is the default
        end condition when a new section is added.
        
        This is valid for sections defined with all curve types.
        
        If this LoftSection object is associated with a created feature, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        Returns true if the operation was successful.
        """
        return bool()
    def setDirectionEndCondition(self, angle: core.ValueInput = None, weight: core.ValueInput = None) -> bool:
        """
        Sets the end condition to be defined by a direction and weight.
        
        This is valid for sections defined with sketch curves.
        
        If this LoftSection object is associated with a created feature, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        angle : Input ValueInput object that specifies the direction by using an angle. This defaults to an angle of 0.0.
        If the ValueInput object is a string it must be an valid expression that can be evaluated as an angle.
        If the ValueInput is a value then it is in radians.
        weight : Input ValueInput object that defines the weight or the amount of influence of end condition on the loft.
        This defaults to a value of 1.0. If the ValueInput object is a string it must be an valid expression that
        can be evaluated as a unitless value. In any case, the value must be greater than 0.
        Returns true if the operation was successful.
        """
        return bool()
    def setTangentEndCondition(self, weight: core.ValueInput) -> bool:
        """
        Sets the end condition to be tangent to the adjacent face. If the section is not defined by a BRepEdge,
        then this is ignored because there is no face to be tangent to.
        
        This is only valid on the first or last profile.
        
        If this LoftSection object is associated with a created feature, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        weight : Input ValueInput object that defines the weight or the amount of influence of end condition on the loft.
        This defaults to a value of 1.0. If the ValueInput object is a string it must be an valid expression that
        can be evaluated as a unitless value. In any case, the value must be greater than 0.
        Returns true if the operation was successful.
        """
        return bool()
    def setSmoothEndCondition(self, weight: core.ValueInput) -> bool:
        """
        Sets the end condition to be smooth to the adjacent face. If the end profile is not defined by a BRepEdge,
        then this is ignored because there is no face to be smooth to.
        
        This is only valid on the first or last section.
        
        If this LoftSection object is associated with a created feature, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        weight : Input ValueInput object that defines the weight or the amount of influence of end condition on the loft.
        This defaults to a value of 1.0. If the ValueInput object is a string it must be an valid expression that
        can be evaluated as a unitless value. In any case, the value must be greater than 0.
        Returns true if the operation was successful.
        """
        return bool()
    def setPointSharpEndCondition(self) -> bool:
        """
        Sets the end condition to be sharp where the section is a point. This is the default condition for a point section.
        
        If this LoftSection object is associated with a created feature, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        Returns true if the operation was successful.
        """
        return bool()
    def setPointTangentEndCondition(self, weight: core.ValueInput) -> bool:
        """
        Set the end condition to a tangent condition in the case where the section is a point.
        
        If this LoftSection object is associated with a created feature, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        weight : Input ValueInput object that defines the weight or the amount of influence of end condition on the loft.
        This defaults to a value of 1.0. If the ValueInput object is a string it must be an valid expression that
        can be evaluated as a unitless value. In any case, the value must be greater than 0.
        Returns true if the operation was successful.
        """
        return bool()
    @property
    def entity(self) -> core.Base:
        """
        Get and sets the entity that defines the section of the loft. This can be a BRepFace, Profile, Path, SketchPoint, ConstructionPoint, or an ObjectCollection
        of contiguous profiles.
        
        If this LoftSection object is associated with a created feature, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @entity.setter
    def entity(self, value: core.Base):
        """
        Get and sets the entity that defines the section of the loft. This can be a BRepFace, Profile, Path, SketchPoint, ConstructionPoint, or an ObjectCollection
        of contiguous profiles.
        
        If this LoftSection object is associated with a created feature, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def index(self) -> int:
        """
        The position of this LoftSection within the collection. The first section has an index
        of 0. This is also the order of how the section will be used in the loft. The order
        can be modified by using the reorder method.
        """
        return int()
    @property
    def endCondition(self) -> LoftEndCondition:
        """
        Returns the current end condition. This is only valid for the first and last
        section and when the result is not closed. In other cases this will return null.
        This returns one of the several objects derived from LoftEndCondition and represents
        the current end condition. You can edit the existing condition using properties
        on the returned object. You can change the end condition using one of the set methods
        on the LoftSection object.
        
        If this LoftSection object is associated with a created feature, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return LoftEndCondition()

class LoftSections(core.Base):
    """
    The set of two or more sections used to define the shape of the loft.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> LoftSections:
        return LoftSections()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> LoftSection:
        return None
    def __iter__(self) -> Iterator[LoftSection]:
        return None
    def item(self, index: int) -> LoftSection:
        """
        Function that returns the specified LoftSection using an index into the collection. They are returned
        in the same order that they are used in the loft. Their order can be modified using the reorder method
        of the LoftSection object.
        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 LoftSection()
    def add(self, entity: core.Base) -> LoftSection:
        """
        Adds a new section to the loft. The initial end condition is "Free". Additional methods on the
        returned LoftSection can be used to further define the section.
        
        If this LoftSections object is associated with a created feature, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        entity : Specifies the BRepFace, Profile, Path, SketchPoint, ConstructionPoint, or an ObjectCollection containing
        a contiguous set of Profile objects that defines the section.
        Returns the newly created LoftSection object.
        """
        return LoftSection()
    @property
    def count(self) -> int:
        """
        The number of LoftSections in the collection.
        """
        return int()

class MergeFacesFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a merge
    face feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MergeFacesFeatureInput:
        return MergeFacesFeatureInput()
    @property
    def inputFaces(self) -> list[BRepFace]:
        """
        Gets and sets an array of BRepFace objects that define the faces the merge will be performed on.
        The faces need to be connected and from the same body (solid or surface).
        """
        return [BRepFace()]
    @inputFaces.setter
    def inputFaces(self, value: list[BRepFace]):
        """
        Gets and sets an array of BRepFace objects that define the faces the merge will be performed on.
        The faces need to be connected and from the same body (solid or surface).
        """
        pass
    @property
    def isChainSelection(self) -> bool:
        """
        Get and sets whether or not faces that are tangentially connected and from the same body
        (solid or surface) will be included in the faces to merge
        """
        return bool()
    @isChainSelection.setter
    def isChainSelection(self, value: bool):
        """
        Get and sets whether or not faces that are tangentially connected and from the same body
        (solid or surface) will be included in the faces to merge
        """
        pass
    @property
    def creationOccurrence(self) -> Occurrence:
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the Merge is created based on geometry (e.g. faces)
        in another component AND (Merge) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI
        """
        return Occurrence()
    @creationOccurrence.setter
    def creationOccurrence(self, value: Occurrence):
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the Merge is created based on geometry (e.g. faces)
        in another component AND (Merge) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI
        """
        pass

class MergeFacesFeatures(core.Base):
    """
    A collection object that supports the ability to merge faces. Merging faces is currently
    limited to a Direct Modeling design or a body in a base feature. The result of merging faces
    is a direct B-Rep modification, and the change is not represented as a feature in the browser.
    As a result, a MergeFacesFeature object does not exist, and this collection only supports the
    merging faces and not accessing any existing features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MergeFacesFeatures:
        return MergeFacesFeatures()
    def createInput(self, inputFaces: list[BRepFace], isChainSelection: bool = False) -> MergeFacesFeatureInput:
        """
        Creates a MergeFacesFeatureInput object for defining a simple merge face feature.
        Use properties and methods on this object to define the merge you want to create and then use the Add method,
        passing in the MergeFacesFeatureInput object.
        inputFaces : An array of BRepFace objects that define the faces the merge will be performed on.
        The faces need to be connected and from the same body (solid or surface).
        isChainSelection : A boolean value for setting whether or not faces that are connected and from the same body
        (solid or surface) will be included in the faces to merge. The default value is false.
        Returns the newly created MergeFacesFeatureInput object or null if the creation failed.
        """
        return MergeFacesFeatureInput()
    def add(self, input: MergeFacesFeatureInput) -> bool:
        """
        Creates a new merge face feature.
        input : A MergeFacesFeatureInput object that defines the desired merge. Use the createInput
        method to create a new MergeFacesFeatureInput object and then use methods on it
        (the MergeFacesFeatureInput object) to define the merge.
        Returns true if successful. Because this is limited to direct modeling only that directly
        modifies the B-Rep body and does not create a MergeFacesFeature object there is nothing to
        return besides if the merge was successful or no.
        """
        return bool()

class MeshBodies(core.Base):
    """
    Provides access to the MeshBodies in the parent Component and
    supports the creation of new mesh bodies.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshBodies:
        return MeshBodies()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> MeshBody:
        return None
    def __iter__(self) -> Iterator[MeshBody]:
        return None
    def add(self, fullFilename: str, units: MeshUnits, baseOrFormFeature: core.Base = None) -> MeshBodyList:
        """
        Creates a new mesh body by importing an STL, OBJ or 3MF file.
        
        Because of a current limitation, if you want to create a mesh body in a parametric model,
        you must first call the edit method of the base or form feature, use this method to create
        the mesh body, and then call the finishEdit method of the base or form feature. The base
        or form feature must be in an "edit" state to be able to add any additional items to it.
        fullFilename : The full filename (path and file) of an STL, OBJ or 3MF file.
        units : The units to use when importing the file.
        baseOrFormFeature : The BaseFeature or FormFeature object that this mesh body will be associated with. This is an optional
        requirement. It is required in a parametric modeling design but is ignored in a direct modeling design.
        Returns a list of the newly created mesh bodies or null if the creation failed. Multiple
        bodies can be created in the case where a .obj file that contains multiple bodies was imported.
        STL files always contain a single body.
        """
        return MeshBodyList()
    def item(self, index: int) -> MeshBody:
        """
        Provides access to a mesh body within the collection.
        index : The index of the mesh body to return, where an index of 0 is the first mesh body in the collection.
        Returns the specified mesh body or null in the case of an invalid index.
        """
        return MeshBody()
    def addByTriangleMeshData(self, coordinates: list[float], coordinateIndexList: list[int], normalVectors: list[float], normalIndexList: list[int]) -> MeshBody:
        """
        Creates a new mesh body using the mesh description provided.
        coordinates : Input array of doubles that defines the X, Y, Z coordinates of each node in the mesh. Each set of three numbers defines
        the coordinates of a node.
        coordinateIndexList : An array of integers that represent indices into the coordinates to define the vertices of the triangles. If an empty
        array is provided, then it's assumed that the first three coordinates define the first triangle, the next three define
        the second triangle, and so on.
        normalVectors : An array of doubles that represent the x, y, z components of the normals at each coordinate. There should be a normal defined
        for each coordinate. If an empty array is provided for the normal vectors, Fusion will automatically calculate normal vectors
        that are 90 degrees to the face of the triangle, making it appear flat.
        normalIndexList : An array of integers that represent indices into the normal vectors to define which vector corresponds to which vertex. This
        should be the same size as the vertex index list. If an empty array is input and normal vectors are provided, it is assumed that
        the normals match up one-to-one to each coordinate.
        Returns the newly created MeshBody object or null in the case of a failure.
        """
        return MeshBody()
    @property
    def count(self) -> int:
        """
        Returns the number of mesh bodies in the collection.
        """
        return int()

class MeshBody(core.Base):
    """
    Provides access to a mesh body.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshBody:
        return MeshBody()
    def deleteMe(self) -> bool:
        """
        Deletes the mesh body.
        Returns true in the case where the selection was successful.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> MeshBody:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        Fails if this object is not the NativeObject.
        occurrence : The occurrence that represents the context you want to create this proxy in.
        Returns the proxy for the occurrence in the context of the specified occurrence. Returns null if it failed.
        """
        return MeshBody()
    def createComponent(self) -> MeshBody:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Creates a new component and occurrence within the component that currently owns this body.
        This body is moved into the new component and returned. The newly created component can be
        obtained by using the parentComponent property of the MeshBody object.
        Returns the MeshBody in the new component or null in the case the creation failed.
        """
        return MeshBody()
    def findByTempId(self, tempId: int) -> core.Base:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the face group with the temporary id.
        tempId : The ID of the face group to find.
        Returns the face group with the given tempId.
        """
        return core.Base()
    def copy(self) -> bool:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Copies the mesh body to the clipboard.
        Returns true if the copy was successful.
        """
        return bool()
    def cut(self) -> bool:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Cuts the mesh body to the clipboard.
        Returns true if the cut was successful.
        """
        return bool()
    def moveToComponent(self, target: core.Base) -> MeshBody:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Moves this mesh body from its current component into the root component or the component owned by the
        specified occurrence.
        target : The target can be either the root component or an occurrence.
        
        In the case where an occurrence is specified, the mesh body will be moved into the parent component of the target
        occurrence and the target occurrence defines the transform of how the mesh body will be copied so that the body
        maintains its same position with respect to the assembly.
        Returns the moved mesh body or null in the case the move failed.
        """
        return MeshBody()
    def copyToComponent(self, target: core.Base) -> MeshBody:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Creates a copy of this mesh body into the specified target.
        target : The target can be either the root component or an occurrence.
        
        In the case where an occurrence is specified, the mesh body will be copied into the parent component of the target
        occurrence and the target occurrence defines the transform of how the mesh body will be copied so that the body
        maintains its same position with respect to the assembly.
        Returns the moved mesh body or null in the case the move failed.
        """
        return MeshBody()
    def silhouette(self, plane: core.Plane) -> list[core.Polyline3D]:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Calculates the silhouette of a mesh for a given orientation.
        plane : Plane specifies the orienation for which the silhouette is calculated. The silhouette is calculated along the normal
        of the plane and projected on the plane after the calculation.
        The results are returned as a list of polylines 3d objects. If the calculation fails,
        no polyline 3d objects are returned.
        """
        return [core.Polyline3D()]
    @property
    def name(self) -> str:
        """
        Gets and sets the name of the mesh body as displayed in the browser.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name of the mesh body as displayed in the browser.
        """
        pass
    @property
    def isSelectable(self) -> bool:
        """
        Gets and sets if the mesh body is selectable in the graphics window.
        """
        return bool()
    @isSelectable.setter
    def isSelectable(self, value: bool):
        """
        Gets and sets if the mesh body is selectable in the graphics window.
        """
        pass
    @property
    def isLightBulbOn(self) -> bool:
        """
        Is the light bulb (as displayed in the browser) on.
        A mesh body will only be visible if the light bulb is switched on. However,
        the light bulb can be on and the mesh body is still invisible if the light bulb
        for all bodies or the owning component is off.
        """
        return bool()
    @isLightBulbOn.setter
    def isLightBulbOn(self, value: bool):
        """
        Is the light bulb (as displayed in the browser) on.
        A mesh body will only be visible if the light bulb is switched on. However,
        the light bulb can be on and the mesh body is still invisible if the light bulb
        for all bodies or the owning component is off.
        """
        pass
    @property
    def isVisible(self) -> bool:
        """
        Gets if the mesh body point is visible.
        """
        return bool()
    @property
    def mesh(self) -> PolygonMesh:
        """
        Returns the original mesh data that was imported. This can include triangles, quads, and polygons.
        """
        return PolygonMesh()
    @property
    def displayMesh(self) -> TriangleMesh:
        """
        Returns the associated mesh that is used for the display. This will always be triangles and includes any textures.
        """
        return TriangleMesh()
    @property
    def parentComponent(self) -> Component:
        """
        Returns the parent Component.
        """
        return Component()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this object
        in an assembly. This is only valid in the case where this is acting
        as a proxy in an assembly. Returns null in the case where the object
        is not in the context of an assembly but is already the native object.
        """
        return Occurrence()
    @property
    def nativeObject(self) -> MeshBody:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return MeshBody()
    @property
    def baseOrFormFeature(self) -> core.Base:
        """
        This property returns the base or form feature that this mesh body is associated with. It
        returns null in a direct modeling design.
        """
        return core.Base()
    @property
    def attributes(self) -> core.Attributes:
        """
        Returns the collection of attributes associated with this mesh body.
        """
        return core.Attributes()
    @property
    def material(self) -> core.Material:
        """
        Gets and sets the physical material assigned to this mesh body.
        """
        return core.Material()
    @material.setter
    def material(self, value: core.Material):
        """
        Gets and sets the physical material assigned to this mesh body.
        """
        pass
    @property
    def appearance(self) -> core.Appearance:
        """
        Read-write property that gets and sets the current appearance of the body. Setting this property will result in applying
        an override appearance to the body and the AppearanceSourceType property will return OverrideAppearanceSource. Setting
        this property to null will remove any override.
        """
        return core.Appearance()
    @appearance.setter
    def appearance(self, value: core.Appearance):
        """
        Read-write property that gets and sets the current appearance of the body. Setting this property will result in applying
        an override appearance to the body and the AppearanceSourceType property will return OverrideAppearanceSource. Setting
        this property to null will remove any override.
        """
        pass
    @property
    def appearanceSourceType(self) -> core.AppearanceSourceTypes:
        """
        Read-write property that gets the source of the appearance for the body. If this returns OverrideAppearanceSource, an override exists
        on this body. The override can be removed by setting the Appearance property to null.
        """
        return core.AppearanceSourceTypes()
    @property
    def opacity(self) -> float:
        """
        Gets and sets the opacity override assigned to this body. A value of 1.0 specifies
        that is it completely opaque and a value of 0.0 specifies that is it completely transparent.
        
        This value is not necessarily related to what the user sees because the opacity is inherited.
        For example, if you this body is in a component and that component's opacity is set to something
        other than 1.0, the body will also be shown as slightly transparent even though the opacity
        property for the body will return 1.0. Because the component that contains the body can be
        referenced as an occurrence in other components and they can have different opacity settings,
        it's possible that different instances of the same body can display using different opacity levels.
        To get the opacity that it is being displayed with use the MeshBody.visibleOpacity property.
        
        This is the API equivalent of the "Opacity Control" command available for the body in the browser.
        """
        return float()
    @opacity.setter
    def opacity(self, value: float):
        """
        Gets and sets the opacity override assigned to this body. A value of 1.0 specifies
        that is it completely opaque and a value of 0.0 specifies that is it completely transparent.
        
        This value is not necessarily related to what the user sees because the opacity is inherited.
        For example, if you this body is in a component and that component's opacity is set to something
        other than 1.0, the body will also be shown as slightly transparent even though the opacity
        property for the body will return 1.0. Because the component that contains the body can be
        referenced as an occurrence in other components and they can have different opacity settings,
        it's possible that different instances of the same body can display using different opacity levels.
        To get the opacity that it is being displayed with use the MeshBody.visibleOpacity property.
        
        This is the API equivalent of the "Opacity Control" command available for the body in the browser.
        """
        pass
    @property
    def visibleOpacity(self) -> float:
        """
        The user can set an override opacity for components and bodies these opacity overrides combine if
        children and parent components have overrides. This property returns the actual opacity that is
        being used to render the body. To set the opacity use the opacity property of the MeshBody object.
        """
        return float()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the MeshBody object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same mesh body.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as a way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        """
        return str()
    @property
    def textureMapControl(self) -> core.TextureMapControl:
        """
        Returns the TextureMapControl object associated with this body when there is an
        appearance assigned to the body that has a texture associated with it. If there
        isn't a texture, this property will return null. If there is a texture, you can
        use the returned object to query and modify how the texture is applied to the body.
        """
        return core.TextureMapControl()
    @property
    def area(self) -> float:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the area in cm ^ 2.
        """
        return float()
    @property
    def volume(self) -> float:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the volume in cm ^ 3. Returns 0 in the case the mesh body is not closed.
        """
        return float()
    @property
    def boundingBox(self) -> core.BoundingBox3D:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the bounding box of this mesh body.
        """
        return core.BoundingBox3D()
    @property
    def isClosed(self) -> bool:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Check to see if the mesh is closed - i.e. contains no edges with only
        one triangle. Returns true if the mesh is closed, false if not.
        """
        return bool()
    @property
    def isOriented(self) -> bool:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Check to see if the mesh is oriented - i.e. every edge has at most two
        triangles, and those triangles have consistent orientations.
        Returns true if the mesh is oriented, false if not.
        """
        return bool()
    @property
    def faceGroups(self) -> FaceGroups:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns a collection of all of the face groups in the body.
        """
        return FaceGroups()
    @property
    def orientedMinimumBoundingBox(self) -> core.OrientedBoundingBox3D:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns an oriented bounding box of the body that is best oriented to tightly fit the body.
        """
        return core.OrientedBoundingBox3D()
    @property
    def displayOverrides(self) -> MeshBodyDisplayOverrides:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Gets the object that allows manipulation of overrides that control how the mesh is displayed in the interactive 3D view.
        """
        return MeshBodyDisplayOverrides()

class MeshBodyDisplayOverrides(core.Base):
    """
    Container for overrides that control how the mesh is displayed in the interactive 3D view.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshBodyDisplayOverrides:
        return MeshBodyDisplayOverrides()
    @property
    def isSuppressFaceGroupColors(self) -> bool:
        """
        Controls whether the mesh body face group colors are shown. If set to true, the face
        groups will be shown with the assigned appearance, ignoring the current display settings.
        """
        return bool()
    @isSuppressFaceGroupColors.setter
    def isSuppressFaceGroupColors(self, value: bool):
        """
        Controls whether the mesh body face group colors are shown. If set to true, the face
        groups will be shown with the assigned appearance, ignoring the current display settings.
        """
        pass
    @property
    def isSuppressTriangleEdges(self) -> bool:
        """
        Controls whether the edges of the triangles of the mesh body are shown. If set to true,
        individual triangles will not be visible, edges of face groups (if any) will be shown instead.
        """
        return bool()
    @isSuppressTriangleEdges.setter
    def isSuppressTriangleEdges(self, value: bool):
        """
        Controls whether the edges of the triangles of the mesh body are shown. If set to true,
        individual triangles will not be visible, edges of face groups (if any) will be shown instead.
        """
        pass

class MeshBodyList(core.Base):
    """
    Provides access to a list of MeshBody objects.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshBodyList:
        return MeshBodyList()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> MeshBody:
        return None
    def __iter__(self) -> Iterator[MeshBody]:
        return None
    def item(self, index: int) -> MeshBody:
        """
        Provides access to a mesh body within the collection.
        index : The index of the mesh body to return, where an index of 0 is the first mesh body in the collection.
        Returns the specified mesh body or null in the case of an invalid index.
        """
        return MeshBody()
    @property
    def count(self) -> int:
        """
        Returns the number of mesh bodies in the collection.
        """
        return int()

class MeshCombineFaceGroupsFeatureInput(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    This class defines the methods and properties that pertain to the definition of a mesh combine face groups
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshCombineFaceGroupsFeatureInput:
        return MeshCombineFaceGroupsFeatureInput()
    @property
    def inputFaceGroups(self) -> list[FaceGroup]:
        """
        Gets and sets the input face groups, which should be combined. They need to belong to the same mesh body.
        """
        return [FaceGroup()]
    @inputFaceGroups.setter
    def inputFaceGroups(self, value: list[FaceGroup]):
        """
        Gets and sets the input face groups, which should be combined. They need to belong to the same mesh body.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class MeshCombineFaceGroupsFeatures(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Collection that provides access to all of the existing mesh combine face groups features in a component
    and supports the ability to create new mesh face group combine features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshCombineFaceGroupsFeatures:
        return MeshCombineFaceGroupsFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> MeshCombineFaceGroupsFeature:
        return None
    def __iter__(self) -> Iterator[MeshCombineFaceGroupsFeature]:
        return None
    def item(self, index: int) -> MeshCombineFaceGroupsFeature:
        """
        Function that returns the specified mesh combine face groups feature 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 MeshCombineFaceGroupsFeature()
    def createInput(self, inputFaceGroups: list[FaceGroup]) -> MeshCombineFaceGroupsFeatureInput:
        """
        Creates a MeshCombineFaceGroupsFeatureInput object. Use properties and methods on this object
        to define the mesh combine face groups feature you want to create and then use the add method, passing in
        the MeshCombineFaceGroupsFeatureInput object.
        inputFaceGroups : A array with face groups belonging to the same mesh. The mesh can be in either a parametric or direct modeling design.
        Returns the newly created MeshCombineFaceGroupsFeatureInput object or null if the creation failed.
        """
        return MeshCombineFaceGroupsFeatureInput()
    def add(self, input: MeshCombineFaceGroupsFeatureInput) -> MeshCombineFaceGroupsFeature:
        """
        Creates a mesh combine face groups feature.
        input : A MeshCombineFaceGroupsFeatureInput object that defines the desired mesh combine face groups feature. Use the createInput
        method to create a new MeshCombineFaceGroupsFeatureInput object and then use methods on it
        (the MeshCombineFaceGroupsFeatureInput object) to define the mesh combine face groups feature.
        Returns the newly created MeshCombineFaceGroupsFeatureInput object or null if the creation failed.
        Returns nothing in the case where the feature is non-parametric.
        """
        return MeshCombineFaceGroupsFeature()
    def itemByName(self, name: str) -> MeshCombineFaceGroupsFeature:
        """
        Function that returns the specified MeshCombineFaceGroups feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return MeshCombineFaceGroupsFeature()
    @property
    def count(self) -> int:
        """
        The number of mesh combine face groups features in the collection.
        """
        return int()

class MeshCombineFeatureInput(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    This class defines the methods and properties that pertain to the definition of a mesh combine
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshCombineFeatureInput:
        return MeshCombineFeatureInput()
    @property
    def targetBody(self) -> MeshBody:
        """
        Gets and sets the input targetBody.
        """
        return MeshBody()
    @targetBody.setter
    def targetBody(self, value: MeshBody):
        """
        Gets and sets the input targetBody.
        """
        pass
    @property
    def toolBodies(self) -> list[MeshBody]:
        """
        Gets and sets the MeshBody objects that represent the tool bodies.
        """
        return [MeshBody()]
    @toolBodies.setter
    def toolBodies(self, value: list[MeshBody]):
        """
        Gets and sets the MeshBody objects that represent the tool bodies.
        """
        pass
    @property
    def meshCombineOperationType(self) -> MeshCombineOperationTypes:
        """
        Gets and sets the operation type of mesh combine, default value is JoinMeshCombineType.
        """
        return MeshCombineOperationTypes()
    @meshCombineOperationType.setter
    def meshCombineOperationType(self, value: MeshCombineOperationTypes):
        """
        Gets and sets the operation type of mesh combine, default value is JoinMeshCombineType.
        """
        pass
    @property
    def isNewComponent(self) -> bool:
        """
        Creates a new component to contain combined mesh bodies.
        Default value is false.
        """
        return bool()
    @isNewComponent.setter
    def isNewComponent(self, value: bool):
        """
        Creates a new component to contain combined mesh bodies.
        Default value is false.
        """
        pass
    @property
    def isKeepToolBodies(self) -> bool:
        """
        Preserves a copy of each tool body.
        Default value is false.
        """
        return bool()
    @isKeepToolBodies.setter
    def isKeepToolBodies(self, value: bool):
        """
        Preserves a copy of each tool body.
        Default value is false.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass
    @property
    def algorithmType(self) -> MeshCombineAlgorithmTypes:
        """
        Gets and sets the used algorithm for the join, cut and intersect operation types. Default value is
        LegacyMeshCombineAlgorithmType. This setting is only effective in non-parametric mode.
        In parametric mode the algorithm type is always LegacyMeshCombineAlgorithmType.
        """
        return MeshCombineAlgorithmTypes()
    @algorithmType.setter
    def algorithmType(self, value: MeshCombineAlgorithmTypes):
        """
        Gets and sets the used algorithm for the join, cut and intersect operation types. Default value is
        LegacyMeshCombineAlgorithmType. This setting is only effective in non-parametric mode.
        In parametric mode the algorithm type is always LegacyMeshCombineAlgorithmType.
        """
        pass

class MeshCombineFeatures(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Collection that provides access to all of the existing mesh combine features in a component
    and supports the ability to create new mesh Combine features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshCombineFeatures:
        return MeshCombineFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> MeshCombineFeature:
        return None
    def __iter__(self) -> Iterator[MeshCombineFeature]:
        return None
    def item(self, index: int) -> MeshCombineFeature:
        """
        Function that returns the specified mesh combine feature 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 MeshCombineFeature()
    def createInput(self, targetBody: MeshBody, toolBodies: list[MeshBody]) -> MeshCombineFeatureInput:
        """
        Creates a MeshCombineFeatureInput object. Use properties and methods on this object
        to define the mesh combine you want to create and then use the add method, passing in
        the MeshCombineFeatureInput object.
        targetBody : The MeshBody in either a parametric or direct modeling design, which represent the target body.
        toolBodies : The MeshBodies in either a parametric or direct modeling design, which represent the tool bodies.
        Returns the newly created MeshCombineFeatureInput object or null if the creation failed.
        """
        return MeshCombineFeatureInput()
    def add(self, input: MeshCombineFeatureInput) -> MeshCombineFeature:
        """
        Creates a mesh combine feature.
        input : A MeshCombineFeatureInput object that defines the desired combine feature. Use the createInput
        method to create a new MeshCombineFeatureInput object and then use methods on it
        (the MeshCombineFeatureInput object) to define the combine.
        Returns the newly created MeshCombineFeatureInput object or null if the creation failed.
        Returns nothing in the case where the feature is non-parametric.
        """
        return MeshCombineFeature()
    def itemByName(self, name: str) -> MeshCombineFeature:
        """
        Function that returns the specified MeshCombine feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return MeshCombineFeature()
    @property
    def count(self) -> int:
        """
        The number of mesh combine features in the collection.
        """
        return int()

class MeshConvertFeatureInput(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    This class defines the methods and properties that pertain to the definition of a mesh convert
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshConvertFeatureInput:
        return MeshConvertFeatureInput()
    @property
    def inputBodies(self) -> list[MeshBody]:
        """
        Gets and sets the input meshes.
        """
        return [MeshBody()]
    @inputBodies.setter
    def inputBodies(self, value: list[MeshBody]):
        """
        Gets and sets the input meshes.
        """
        pass
    @property
    def meshConvertMethodType(self) -> MeshConvertMethodTypes:
        """
        Gets and sets the convert type of mesh convert, default value is FacetedMeshConvertMethodType.
        """
        return MeshConvertMethodTypes()
    @meshConvertMethodType.setter
    def meshConvertMethodType(self, value: MeshConvertMethodTypes):
        """
        Gets and sets the convert type of mesh convert, default value is FacetedMeshConvertMethodType.
        """
        pass
    @property
    def meshConvertResolutionType(self) -> MeshConvertResolutionTypes:
        """
        Gets and sets the resolution method of mesh convert, default value is ByAccuracyMeshConvertResolutionType.
        Only valid if meshConvertMethodType is OrganicMeshConvertMethodType.
        """
        return MeshConvertResolutionTypes()
    @meshConvertResolutionType.setter
    def meshConvertResolutionType(self, value: MeshConvertResolutionTypes):
        """
        Gets and sets the resolution method of mesh convert, default value is ByAccuracyMeshConvertResolutionType.
        Only valid if meshConvertMethodType is OrganicMeshConvertMethodType.
        """
        pass
    @property
    def meshConvertAccuracyType(self) -> MeshConvertAccuracyTypes:
        """
        Gets and sets the accuracy of organic mesh convert, default value is MediumMeshConvertResolutionType.
        Only valid if meshConvertResolutionType is ByAccuracyMeshConvertResolutionType.
        """
        return MeshConvertAccuracyTypes()
    @meshConvertAccuracyType.setter
    def meshConvertAccuracyType(self, value: MeshConvertAccuracyTypes):
        """
        Gets and sets the accuracy of organic mesh convert, default value is MediumMeshConvertResolutionType.
        Only valid if meshConvertResolutionType is ByAccuracyMeshConvertResolutionType.
        """
        pass
    @property
    def numberOfFaces(self) -> core.ValueInput:
        """
        Specify the number of faces to generate for the converted body.
        Only valid if meshConvertResolutionType is ByFacetNumberMeshConvertResolutionType.
        """
        return core.ValueInput()
    @numberOfFaces.setter
    def numberOfFaces(self, value: core.ValueInput):
        """
        Specify the number of faces to generate for the converted body.
        Only valid if meshConvertResolutionType is ByFacetNumberMeshConvertResolutionType.
        """
        pass
    @property
    def isPreprocessHoles(self) -> bool:
        """
        Smooths the boundaries of open holes in the mesh body. Improves the chance of successful conversion by
        refining the shape of holes that will remain open. Default value is false. Only valid if meshConvertMethodType is
        OrganicMeshConvertType.
        """
        return bool()
    @isPreprocessHoles.setter
    def isPreprocessHoles(self, value: bool):
        """
        Smooths the boundaries of open holes in the mesh body. Improves the chance of successful conversion by
        refining the shape of holes that will remain open. Default value is false. Only valid if meshConvertMethodType is
        OrganicMeshConvertType.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass
    @property
    def meshConvertOperationType(self) -> MeshConvertOperationTypes:
        """
        Gets and sets the operation type of mesh convert, default value is ParametricFeatureMeshConvertOperationType.
        """
        return MeshConvertOperationTypes()
    @meshConvertOperationType.setter
    def meshConvertOperationType(self, value: MeshConvertOperationTypes):
        """
        Gets and sets the operation type of mesh convert, default value is ParametricFeatureMeshConvertOperationType.
        """
        pass

class MeshConvertFeatures(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Collection that provides access to all of the existing mesh convert features in a component
    and supports the ability to create new mesh Convert features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshConvertFeatures:
        return MeshConvertFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> MeshConvertFeature:
        return None
    def __iter__(self) -> Iterator[MeshConvertFeature]:
        return None
    def item(self, index: int) -> MeshConvertFeature:
        """
        Function that returns the specified mesh convert feature 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 MeshConvertFeature()
    def createInput(self, inputBodies: list[MeshBody]) -> MeshConvertFeatureInput:
        """
        Creates a MeshConvertFeatureInput object. Use properties and methods on this object
        to define the mesh convert you want to create and then use the add method, passing in
        the MeshConvertFeatureInput object.
        inputBodies : A array with mesh bodies in either a parametric or direct modeling design.
        Returns the newly created MeshConvertFeatureInput object or null if the creation failed.
        """
        return MeshConvertFeatureInput()
    def add(self, input: MeshConvertFeatureInput) -> MeshConvertFeature:
        """
        Creates a mesh convert feature.
        input : A MeshConvertFeatureInput object that defines the desired convert feature. Use the createInput
        method to create a new MeshConvertFeatureInput object and then use methods on it
        (the MeshConvertFeatureInput object) to define the convert.
        Returns the newly created MeshConvertFeatureInput object or null if the creation failed.
        Returns null in the case where the feature is non-parametric.
        """
        return MeshConvertFeature()
    def itemByName(self, name: str) -> MeshConvertFeature:
        """
        Function that returns the specified MeshConvert feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return MeshConvertFeature()
    @property
    def count(self) -> int:
        """
        The number of mesh convert features in the collection.
        """
        return int()

class MeshGenerateFaceGroupsFeatureInput(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    This class defines the methods and properties that pertain to the definition of a mesh generate face groups
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshGenerateFaceGroupsFeatureInput:
        return MeshGenerateFaceGroupsFeatureInput()
    @property
    def mesh(self) -> core.Base:
        """
        Gets and sets the input mesh body.
        """
        return core.Base()
    @mesh.setter
    def mesh(self, value: core.Base):
        """
        Gets and sets the input mesh body.
        """
        pass
    @property
    def meshGenerateFaceGroupsMethodType(self) -> MeshGenerateFaceGroupsMethodTypes:
        """
        Gets and sets the type of mesh generate face groups, default value is FastGenerateFaceGroupsType.
        """
        return MeshGenerateFaceGroupsMethodTypes()
    @meshGenerateFaceGroupsMethodType.setter
    def meshGenerateFaceGroupsMethodType(self, value: MeshGenerateFaceGroupsMethodTypes):
        """
        Gets and sets the type of mesh generate face groups, default value is FastGenerateFaceGroupsType.
        """
        pass
    @property
    def angleThreshold(self) -> core.ValueInput:
        """
        Controls the angle threshold during the face group generation.
        The values can range between 0 and pi/2. The default value is 0.436.
        Only valid if meshGenerateFaceGroupsMethodType is FastGenerateFaceGroupsType.
        """
        return core.ValueInput()
    @angleThreshold.setter
    def angleThreshold(self, value: core.ValueInput):
        """
        Controls the angle threshold during the face group generation.
        The values can range between 0 and pi/2. The default value is 0.436.
        Only valid if meshGenerateFaceGroupsMethodType is FastGenerateFaceGroupsType.
        """
        pass
    @property
    def minimumFaceGroupSize(self) -> core.ValueInput:
        """
        Gets and sets the fraction of the overall mesh area
        which determines the smallest face group.
        The value can range between 0 and 1. The default value is 0.02.
        Only valid if meshGenerateFaceGroupsMethodType is FastGenerateFaceGroupsType.
        """
        return core.ValueInput()
    @minimumFaceGroupSize.setter
    def minimumFaceGroupSize(self, value: core.ValueInput):
        """
        Gets and sets the fraction of the overall mesh area
        which determines the smallest face group.
        The value can range between 0 and 1. The default value is 0.02.
        Only valid if meshGenerateFaceGroupsMethodType is FastGenerateFaceGroupsType.
        """
        pass
    @property
    def boundaryTolerance(self) -> core.ValueInput:
        """
        Gets and sets tolerance to define face group. This value is used
        during the fitting of the primitives. The values can range between
        0 and 0.01. The default value is 0.001.
        Only valid if meshGenerateFaceGroupsMethodType is AccurateGenerateFaceGroupsType.
        """
        return core.ValueInput()
    @boundaryTolerance.setter
    def boundaryTolerance(self, value: core.ValueInput):
        """
        Gets and sets tolerance to define face group. This value is used
        during the fitting of the primitives. The values can range between
        0 and 0.01. The default value is 0.001.
        Only valid if meshGenerateFaceGroupsMethodType is AccurateGenerateFaceGroupsType.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class MeshGenerateFaceGroupsFeatures(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Collection that provides access to all of the existing mesh generate face groups features in a component
    and supports the ability to create new mesh generate face groups features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshGenerateFaceGroupsFeatures:
        return MeshGenerateFaceGroupsFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> MeshGenerateFaceGroupsFeature:
        return None
    def __iter__(self) -> Iterator[MeshGenerateFaceGroupsFeature]:
        return None
    def item(self, index: int) -> MeshGenerateFaceGroupsFeature:
        """
        Function that returns the specified mesh generate face groups feature 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 MeshGenerateFaceGroupsFeature()
    def createInput(self, mesh: core.Base) -> MeshGenerateFaceGroupsFeatureInput:
        """
        Creates a MeshGenerateFaceGroupsFeatureInput object. Use properties and methods on this object
        to define the mesh generate face groups feature you want to create and then use the add method, passing in
        the MeshGenerateFaceGroupsFeatureInput object.
        mesh : A MeshBody in either a parametric or direct modeling design.
        Returns the newly created MeshGenerateFaceGroupsFeatureInput object or null if the creation failed.
        """
        return MeshGenerateFaceGroupsFeatureInput()
    def add(self, input: MeshGenerateFaceGroupsFeatureInput) -> MeshGenerateFaceGroupsFeature:
        """
        Creates a mesh generate face groups feature.
        input : A MeshGenerateFaceGroupsFeatureInput object that defines the desired generate face groups feature. Use the createInput
        method to create a new MeshGenerateFaceGroupsFeatureInput object and then use methods on it
        (the MeshGenerateFaceGroupsFeatureInput object) to define the generate face groups feature.
        Returns the newly created MeshGenerateFaceGroupsFeatureInput object or null if the creation failed.
        Returns nothing in the case where the feature is non-parametric.
        """
        return MeshGenerateFaceGroupsFeature()
    def itemByName(self, name: str) -> MeshGenerateFaceGroupsFeature:
        """
        Function that returns the specified MeshGenerateFaceGroups feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return MeshGenerateFaceGroupsFeature()
    @property
    def count(self) -> int:
        """
        The number of mesh generate face groups features in the collection.
        """
        return int()

class MeshManager(core.Base):
    """
    Provides access to meshes that approximate a B-Rep and T-Spline.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshManager:
        return MeshManager()
    def createMeshCalculator(self) -> TriangleMeshCalculator:
        """
        Creates a new MeshCalculator which is used to calculate
        new triangular meshes based on various parameters that control the calculation.
        Returns the new MeshCalculator object or null if the creation failed.
        """
        return TriangleMeshCalculator()
    @property
    def displayMeshes(self) -> TriangleMeshList:
        """
        Returns a collection that provides access to all of the
        existing display meshes.
        """
        return TriangleMeshList()
    @property
    def parent(self) -> core.Base:
        """
        Returns the parent BRepBody, BRepFace, BRepLump, BRepShell, SculptBody, or SculptFace object.
        """
        return core.Base()

class MeshReduceFeatureInput(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    This class defines the methods and properties that pertain to the definition of a mesh reduce
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshReduceFeatureInput:
        return MeshReduceFeatureInput()
    @property
    def mesh(self) -> core.Base:
        """
        Gets and sets the input mesh body.
        """
        return core.Base()
    @mesh.setter
    def mesh(self, value: core.Base):
        """
        Gets and sets the input mesh body.
        """
        pass
    @property
    def meshReduceMethodType(self) -> MeshReduceMethodTypes:
        """
        Gets and sets the type of mesh reduce, default value is AdaptiveReduceType.
        """
        return MeshReduceMethodTypes()
    @meshReduceMethodType.setter
    def meshReduceMethodType(self, value: MeshReduceMethodTypes):
        """
        Gets and sets the type of mesh reduce, default value is AdaptiveReduceType.
        """
        pass
    @property
    def meshReduceTargetType(self) -> MeshReduceTargetTypes:
        """
        Gets and sets the target criteria for the reduction, default value is MaximumDeviationMeshReduceTargetType.
        """
        return MeshReduceTargetTypes()
    @meshReduceTargetType.setter
    def meshReduceTargetType(self, value: MeshReduceTargetTypes):
        """
        Gets and sets the target criteria for the reduction, default value is MaximumDeviationMeshReduceTargetType.
        """
        pass
    @property
    def maximumDeviation(self) -> core.ValueInput:
        """
        Controls the maximum deviation of the reduced mesh to the original mesh.
        The default value is 0.
        Only valid if meshReduceTargetType is MaximumDeviationMeshReduceTargetType.
        """
        return core.ValueInput()
    @maximumDeviation.setter
    def maximumDeviation(self, value: core.ValueInput):
        """
        Controls the maximum deviation of the reduced mesh to the original mesh.
        The default value is 0.
        Only valid if meshReduceTargetType is MaximumDeviationMeshReduceTargetType.
        """
        pass
    @property
    def proportion(self) -> core.ValueInput:
        """
        Gets and sets the proportion of number of faces of the reduced mesh to the number of
        faces of original mesh as a target for the reduction. The value can range between 0 and 100 percent.
        Only valid if meshReduceTargetType is ProportionMeshReduceTargetType.
        """
        return core.ValueInput()
    @proportion.setter
    def proportion(self, value: core.ValueInput):
        """
        Gets and sets the proportion of number of faces of the reduced mesh to the number of
        faces of original mesh as a target for the reduction. The value can range between 0 and 100 percent.
        Only valid if meshReduceTargetType is ProportionMeshReduceTargetType.
        """
        pass
    @property
    def facecount(self) -> core.ValueInput:
        """
        Gets and sets the target face count for the reduced mesh as a target for the reduction.
        Only valid if meshReduceTargetType is FaceCountMeshReduceTargetType.
        """
        return core.ValueInput()
    @facecount.setter
    def facecount(self, value: core.ValueInput):
        """
        Gets and sets the target face count for the reduced mesh as a target for the reduction.
        Only valid if meshReduceTargetType is FaceCountMeshReduceTargetType.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class MeshReduceFeatures(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Collection that provides access to all of the existing mesh reduce features in a component
    and supports the ability to create new mesh reduce features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshReduceFeatures:
        return MeshReduceFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> MeshReduceFeature:
        return None
    def __iter__(self) -> Iterator[MeshReduceFeature]:
        return None
    def item(self, index: int) -> MeshReduceFeature:
        """
        Function that returns the specified mesh reduce feature 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 MeshReduceFeature()
    def createInput(self, mesh: core.Base) -> MeshReduceFeatureInput:
        """
        Creates a MeshReduceFeatureInput object. Use properties and methods on this object
        to define the mesh reduce you want to create and then use the add method, passing in
        the MeshReduceFeatureInput object.
        mesh : A MeshBody in either a parametric or direct modeling design.
        Returns the newly created MeshReduceFeatureInput object or null if the creation failed.
        """
        return MeshReduceFeatureInput()
    def add(self, input: MeshReduceFeatureInput) -> MeshReduceFeature:
        """
        Creates a mesh reduce feature.
        input : A MeshReduceFeatureInput object that defines the desired reduce feature. Use the createInput
        method to create a new MeshReduceFeatureInput object and then use methods on it
        (the MeshReduceFeatureInput object) to define the reduce.
        Returns the newly created MeshReduceFeatureInput object or null if the creation failed.
        Returns nothing in the case where the feature is non-parametric.
        """
        return MeshReduceFeature()
    def itemByName(self, name: str) -> MeshReduceFeature:
        """
        Function that returns the specified MeshReduce feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return MeshReduceFeature()
    @property
    def count(self) -> int:
        """
        The number of mesh reduce features in the collection.
        """
        return int()

class MeshRemeshFeatureInput(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    This class defines the methods and properties that pertain to the definition of a mesh re-mesh
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshRemeshFeatureInput:
        return MeshRemeshFeatureInput()
    @property
    def mesh(self) -> core.Base:
        """
        Gets and sets the input mesh body.
        """
        return core.Base()
    @mesh.setter
    def mesh(self, value: core.Base):
        """
        Gets and sets the input mesh body.
        """
        pass
    @property
    def meshRemeshMethodType(self) -> MeshRemeshMethodTypes:
        """
        Gets and sets the type of mesh re-mesh, default value is AdaptiveType.
        """
        return MeshRemeshMethodTypes()
    @meshRemeshMethodType.setter
    def meshRemeshMethodType(self, value: MeshRemeshMethodTypes):
        """
        Gets and sets the type of mesh re-mesh, default value is AdaptiveType.
        """
        pass
    @property
    def density(self) -> core.ValueInput:
        """
        Controls the density of the newly created faces of the re-meshed mesh.
        The values can range between 0 and 1. The default value is 0.25
        """
        return core.ValueInput()
    @density.setter
    def density(self, value: core.ValueInput):
        """
        Controls the density of the newly created faces of the re-meshed mesh.
        The values can range between 0 and 1. The default value is 0.25
        """
        pass
    @property
    def shapePreservation(self) -> core.ValueInput:
        """
        Gets and sets how much of the original shape needs to preserved.
        The value can range between 0 and 1. The default value is 0.5.
        Only valid if meshRemeshMethodType is AdaptiveType.
        """
        return core.ValueInput()
    @shapePreservation.setter
    def shapePreservation(self, value: core.ValueInput):
        """
        Gets and sets how much of the original shape needs to preserved.
        The value can range between 0 and 1. The default value is 0.5.
        Only valid if meshRemeshMethodType is AdaptiveType.
        """
        pass
    @property
    def isPreserveSharpEdgesEnabled(self) -> bool:
        """
        Gets and sets if sharp edges are preserved during the re-mesh process.
        Default value is false.
        """
        return bool()
    @isPreserveSharpEdgesEnabled.setter
    def isPreserveSharpEdgesEnabled(self, value: bool):
        """
        Gets and sets if sharp edges are preserved during the re-mesh process.
        Default value is false.
        """
        pass
    @property
    def isPreserveBoundariesEnabled(self) -> bool:
        """
        Gets and sets if open boundary edges are preserved during the re-mesh process.
        Default value is false.
        """
        return bool()
    @isPreserveBoundariesEnabled.setter
    def isPreserveBoundariesEnabled(self, value: bool):
        """
        Gets and sets if open boundary edges are preserved during the re-mesh process.
        Default value is false.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class MeshRemeshFeatures(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Collection that provides access to all of the existing mesh re-mesh features in a component
    and supports the ability to create new mesh re-mesh features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshRemeshFeatures:
        return MeshRemeshFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> MeshRemeshFeature:
        return None
    def __iter__(self) -> Iterator[MeshRemeshFeature]:
        return None
    def item(self, index: int) -> MeshRemeshFeature:
        """
        Function that returns the specified mesh re-mesh feature 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 MeshRemeshFeature()
    def createInput(self, mesh: core.Base) -> MeshRemeshFeatureInput:
        """
        Creates a MeshRemeshFeatureInput object. Use properties and methods on this object
        to define the mesh re-mesh you want to create and then use the add method, passing in
        the MeshRemeshFeatureInput object.
        mesh : A MeshBody in either a parametric or direct modeling design.
        Returns the newly created MeshRemeshFeatureInput object or null if the creation failed.
        """
        return MeshRemeshFeatureInput()
    def add(self, input: MeshRemeshFeatureInput) -> MeshRemeshFeature:
        """
        Creates a mesh re-mesh feature.
        input : A MeshRemeshFeatureInput object that defines the desired re-mesh feature. Use the createInput
        method to create a new MeshRemeshFeatureInput object and then use methods on it
        (the MeshRemeshFeatureInput object) to define the re-mesh.
        Returns the newly created MeshRemeshFeatureInput object or null if the creation failed.
        Returns nothing in the case where the feature is non-parametric.
        """
        return MeshRemeshFeature()
    def itemByName(self, name: str) -> MeshRemeshFeature:
        """
        Function that returns the specified MeshRemesh feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return MeshRemeshFeature()
    @property
    def count(self) -> int:
        """
        The number of mesh re-mesh features in the collection.
        """
        return int()

class MeshRemoveFeatureInput(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    This class defines the methods and properties that pertain to the definition of a mesh remove
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshRemoveFeatureInput:
        return MeshRemoveFeatureInput()
    @property
    def inputBodies(self) -> list[MeshBody]:
        """
        Gets and sets the input meshes.
        """
        return [MeshBody()]
    @inputBodies.setter
    def inputBodies(self, value: list[MeshBody]):
        """
        Gets and sets the input meshes.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class MeshRemoveFeatures(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Collection that provides access to all of the existing mesh remove features in a component
    and supports the ability to create new mesh remove features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshRemoveFeatures:
        return MeshRemoveFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> MeshRemoveFeature:
        return None
    def __iter__(self) -> Iterator[MeshRemoveFeature]:
        return None
    def item(self, index: int) -> MeshRemoveFeature:
        """
        Function that returns the specified mesh remove feature 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 MeshRemoveFeature()
    def createInput(self, inputBodies: list[MeshBody]) -> MeshRemoveFeatureInput:
        """
        Creates a MeshRemoveFeatureInput object. Use properties and methods on this object
        to define the mesh remove feature you want to create and then use the add method, passing in
        the MeshRemoveFeatureInput object.
        inputBodies : A array with mesh bodies in a parametric design.
        Returns the newly created MeshRemoveFeatureInput object or null if the creation failed.
        """
        return MeshRemoveFeatureInput()
    def add(self, input: MeshRemoveFeatureInput) -> list[MeshRemoveFeature]:
        """
        Creates a mesh remove feature. Works only in parametric mode.
        input : A MeshRemoveFeatureInput object that defines the desired mesh remove feature. Use the createInput
        method to create a new MeshRemoveFeatureInput object and then use methods on it
        (the MeshRemoveFeatureInput object) to define the removal.
        When successfull, a MeshRemoveFeature is created for each MeshBody that was input.
        An array of the created MeshRemoveFeature objects is returned.
        """
        return [MeshRemoveFeature()]
    def itemByName(self, name: str) -> MeshRemoveFeature:
        """
        Function that returns the specified mesh remove feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return MeshRemoveFeature()
    @property
    def count(self) -> int:
        """
        The number of mesh remove features in the collection.
        """
        return int()

class MeshRepairFeatureInput(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    This class defines the methods and properties that pertain to the definition of a mesh repair
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshRepairFeatureInput:
        return MeshRepairFeatureInput()
    @property
    def mesh(self) -> core.Base:
        """
        Gets and sets the input mesh body.
        """
        return core.Base()
    @mesh.setter
    def mesh(self, value: core.Base):
        """
        Gets and sets the input mesh body.
        """
        pass
    @property
    def meshRepairType(self) -> MeshRepairTypes:
        """
        Gets and sets the type of mesh repair, default value is StitchAndRemoveMeshRepairType.
        """
        return MeshRepairTypes()
    @meshRepairType.setter
    def meshRepairType(self, value: MeshRepairTypes):
        """
        Gets and sets the type of mesh repair, default value is StitchAndRemoveMeshRepairType.
        """
        pass
    @property
    def meshRepairRebuildType(self) -> MeshRepairRebuildTypes:
        """
        Gets and sets the type of mesh repair rebuild mode, default value is FastMeshRepairRebuildType.
        Only valid if meshRepairType is RebuildMeshRepairType.
        """
        return MeshRepairRebuildTypes()
    @meshRepairRebuildType.setter
    def meshRepairRebuildType(self, value: MeshRepairRebuildTypes):
        """
        Gets and sets the type of mesh repair rebuild mode, default value is FastMeshRepairRebuildType.
        Only valid if meshRepairType is RebuildMeshRepairType.
        """
        pass
    @property
    def density(self) -> core.ValueInput:
        """
        Controls the density of the newly created triangles in RebuildMeshRepairType, default value is 128.
        The values can range between 8 and 256.
        Only valid if meshRepairType is RebuildMeshRepairType.
        """
        return core.ValueInput()
    @density.setter
    def density(self, value: core.ValueInput):
        """
        Controls the density of the newly created triangles in RebuildMeshRepairType, default value is 128.
        The values can range between 8 and 256.
        Only valid if meshRepairType is RebuildMeshRepairType.
        """
        pass
    @property
    def offset(self) -> core.ValueInput:
        """
        Gets and sets the offset from the original mesh to the newly created mesh, default value is zero.
        Only valid if meshRepairType is RebuildMeshRepairType and meshRepairRebuildType is AccurateMeshRepairRebuildType.
        """
        return core.ValueInput()
    @offset.setter
    def offset(self, value: core.ValueInput):
        """
        Gets and sets the offset from the original mesh to the newly created mesh, default value is zero.
        Only valid if meshRepairType is RebuildMeshRepairType and meshRepairRebuildType is AccurateMeshRepairRebuildType.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class MeshRepairFeatures(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Collection that provides access to all of the existing mesh repair features in a component
    and supports the ability to create new mesh repair features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshRepairFeatures:
        return MeshRepairFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> MeshRepairFeature:
        return None
    def __iter__(self) -> Iterator[MeshRepairFeature]:
        return None
    def item(self, index: int) -> MeshRepairFeature:
        """
        Function that returns the specified mesh repair feature 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 MeshRepairFeature()
    def createInput(self, mesh: core.Base) -> MeshRepairFeatureInput:
        """
        Creates a MeshRepairFeatureInput object. Use properties and methods on this object
        to define the mesh repair you want to create and then use the add method, passing in
        the MeshRepairFeatureInput object.
        mesh : A MeshBody in either a parametric or direct modeling design.
        Returns the newly created MeshRepairFeatureInput object or null if the creation failed.
        """
        return MeshRepairFeatureInput()
    def add(self, input: MeshRepairFeatureInput) -> MeshRepairFeature:
        """
        Creates a mesh repair feature.
        input : A MeshRepairFeatureInput object that defines the desired repair feature. Use the createInput
        method to create a new MeshRepairFeatureInput object and then use methods on it
        (the MeshRepairFeatureInput object) to define the repair.
        Returns the newly created MeshRepairFeature object or null if the creation failed.
        Returns nothing in the case where the feature is non-parametric.
        """
        return MeshRepairFeature()
    def itemByName(self, name: str) -> MeshRepairFeature:
        """
        Function that returns the specified MeshRepair feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return MeshRepairFeature()
    @property
    def count(self) -> int:
        """
        The number of mesh repair features in the collection.
        """
        return int()

class MeshReverseNormalFeatureInput(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    This class defines the methods and properties that pertain to the definition of a MeshReverseNormal
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshReverseNormalFeatureInput:
        return MeshReverseNormalFeatureInput()
    @property
    def mesh(self) -> core.Base:
        """
        Gets and sets the input mesh body. This can either be a mesh body or an object collection with face groups.
        """
        return core.Base()
    @mesh.setter
    def mesh(self, value: core.Base):
        """
        Gets and sets the input mesh body. This can either be a mesh body or an object collection with face groups.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class MeshReverseNormalFeatures(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Collection that provides access to all of the existing MeshReverseNormal features in a component
    and supports the ability to create new MeshReverseNormal features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshReverseNormalFeatures:
        return MeshReverseNormalFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> MeshReverseNormalFeature:
        return None
    def __iter__(self) -> Iterator[MeshReverseNormalFeature]:
        return None
    def item(self, index: int) -> MeshReverseNormalFeature:
        """
        Function that returns the specified mesh reverse normal feature 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 MeshReverseNormalFeature()
    def createInput(self, mesh: core.Base) -> MeshReverseNormalFeatureInput:
        """
        Creates a MeshReverseNormalFeatureInput object. Use properties and methods on this object
        to define the mesh reverse normal you want to create and then use the add method, passing in
        the MeshReverseNormalFeatureInput object.
        mesh : A mesh body or an object collection with face groups in either a parametric or direct modeling design.
        Returns the newly created MeshReverseNormalFeatureInput object or null if the creation failed.
        """
        return MeshReverseNormalFeatureInput()
    def add(self, input: MeshReverseNormalFeatureInput) -> MeshReverseNormalFeature:
        """
        Creates a mesh reverse normal feature.
        input : A MeshReverseNormalFeatureInput object that defines the desired MeshReverseNormal feature. Use the createInput
        method to create a new MeshReverseNormalFeatureInput object and then use methods on it
        (the MeshReverseNormalFeatureInput object) to define the normal reversion.
        Returns the newly created MeshReverseNormalFeature object or null if the creation failed.
        Returns nothing in the case where the feature is non-parametric.
        """
        return MeshReverseNormalFeature()
    def itemByName(self, name: str) -> MeshReverseNormalFeature:
        """
        Function that returns the specified MeshReverseNormal feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return MeshReverseNormalFeature()
    @property
    def count(self) -> int:
        """
        The number of mesh reverse normal features in the collection.
        """
        return int()

class MeshSeparateFeatureInput(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    This class defines the methods and properties that pertain to the definition of a MeshSeparate
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshSeparateFeatureInput:
        return MeshSeparateFeatureInput()
    @property
    def mesh(self) -> core.Base:
        """
        Gets and sets the input mesh body. This can either be a mesh body or an object collection with face groups.
        """
        return core.Base()
    @mesh.setter
    def mesh(self, value: core.Base):
        """
        Gets and sets the input mesh body. This can either be a mesh body or an object collection with face groups.
        """
        pass
    @property
    def meshSeparateType(self) -> MeshSeparateTypes:
        """
        Gets and sets the output type of mesh separation, default value is ShellMeshSeparateType. Only valid if the input is a mesh body.
        """
        return MeshSeparateTypes()
    @meshSeparateType.setter
    def meshSeparateType(self, value: MeshSeparateTypes):
        """
        Gets and sets the output type of mesh separation, default value is ShellMeshSeparateType. Only valid if the input is a mesh body.
        """
        pass
    @property
    def isKeepBody(self) -> bool:
        """
        Preserves a copy of the original mesh body. Default value is false.
        """
        return bool()
    @isKeepBody.setter
    def isKeepBody(self, value: bool):
        """
        Preserves a copy of the original mesh body. Default value is false.
        """
        pass
    @property
    def isMultipleBodies(self) -> bool:
        return bool()
    @isMultipleBodies.setter
    def isMultipleBodies(self, value: bool):
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class MeshSeparateFeatures(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Collection that provides access to all of the existing MeshSeparate features in a component
    and supports the ability to create new MeshSeparate features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshSeparateFeatures:
        return MeshSeparateFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> MeshSeparateFeature:
        return None
    def __iter__(self) -> Iterator[MeshSeparateFeature]:
        return None
    def item(self, index: int) -> MeshSeparateFeature:
        """
        Function that returns the specified mesh separate feature 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 MeshSeparateFeature()
    def createInput(self, mesh: core.Base) -> MeshSeparateFeatureInput:
        """
        Creates a MeshSeparateFeatureInput object. Use properties and methods on this object
        to define the mesh separate you want to create and then use the add method, passing in
        the MeshSeparateFeatureInput object.
        mesh : A mesh body or an object collection with face groups in either a parametric or direct modeling design.
        Returns the newly created MeshSeparateFeatureInput object or null if the creation failed.
        """
        return MeshSeparateFeatureInput()
    def add(self, input: MeshSeparateFeatureInput) -> MeshSeparateFeature:
        """
        Creates a mesh separate feature.
        input : A MeshSeparateFeatureInput object that defines the desired MeshSeparate feature. Use the createInput
        method to create a new MeshSeparateFeatureInput object and then use methods on it
        (the MeshSeparateFeatureInput object) to define the separation.
        Returns the newly created MeshSeparateFeature object or null if the creation failed.
        Returns nothing in the case where the feature is non-parametric.
        """
        return MeshSeparateFeature()
    def itemByName(self, name: str) -> MeshSeparateFeature:
        """
        Function that returns the specified MeshSeparate feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return MeshSeparateFeature()
    @property
    def count(self) -> int:
        """
        The number of mesh separate features in the collection.
        """
        return int()

class MeshShellFeatureInput(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    This class defines the methods and properties that pertain to the definition of a mesh shell
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshShellFeatureInput:
        return MeshShellFeatureInput()
    @property
    def mesh(self) -> core.Base:
        """
        Gets and sets the input mesh body.
        """
        return core.Base()
    @mesh.setter
    def mesh(self, value: core.Base):
        """
        Gets and sets the input mesh body.
        """
        pass
    @property
    def thickness(self) -> core.ValueInput:
        """
        Controls the thickness of the created shell.
        The default value is 0.2.
        """
        return core.ValueInput()
    @thickness.setter
    def thickness(self, value: core.ValueInput):
        """
        Controls the thickness of the created shell.
        The default value is 0.2.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class MeshShellFeatures(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Collection that provides access to all of the existing mesh shell features in a component
    and supports the ability to create new mesh shell features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshShellFeatures:
        return MeshShellFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> MeshShellFeature:
        return None
    def __iter__(self) -> Iterator[MeshShellFeature]:
        return None
    def item(self, index: int) -> MeshShellFeature:
        """
        Function that returns the specified mesh shell feature 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 MeshShellFeature()
    def createInput(self, mesh: core.Base) -> MeshShellFeatureInput:
        """
        Creates a MeshShellFeatureInput object. Use properties and methods on this object
        to define the mesh shell you want to create and then use the add method, passing in
        the MeshShellFeatureInput object.
        mesh : A MeshBody in either a parametric or direct modeling design.
        Returns the newly created MeshShellFeatureInput object or null if the creation failed.
        """
        return MeshShellFeatureInput()
    def add(self, input: MeshShellFeatureInput) -> MeshShellFeature:
        """
        Creates a mesh shell feature.
        input : A MeshShellFeatureInput object that defines the desired shell feature. Use the createInput
        method to create a new MeshShellFeatureInput object and then use methods on it
        (the MeshShellFeatureInput object) to define the shell.
        Returns the newly created MeshShellFeatureInput object or null if the creation failed.
        Returns nothing in the case where the feature is non-parametric.
        """
        return MeshShellFeature()
    def itemByName(self, name: str) -> MeshShellFeature:
        """
        Function that returns the specified MeshShell feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return MeshShellFeature()
    @property
    def count(self) -> int:
        """
        The number of mesh shell features in the collection.
        """
        return int()

class MeshSmoothFeatureInput(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    This class defines the methods and properties that pertain to the definition of a MeshSmooth
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshSmoothFeatureInput:
        return MeshSmoothFeatureInput()
    @property
    def mesh(self) -> core.Base:
        """
        Gets and sets the input mesh body.
        """
        return core.Base()
    @mesh.setter
    def mesh(self, value: core.Base):
        """
        Gets and sets the input mesh body.
        """
        pass
    @property
    def smoothness(self) -> core.ValueInput:
        """
        Gets and sets the smoothness value. The range is between 0 and 1.
        The default value is 0.02.
        The higher the value the stronger the smoothing.
        """
        return core.ValueInput()
    @smoothness.setter
    def smoothness(self, value: core.ValueInput):
        """
        Gets and sets the smoothness value. The range is between 0 and 1.
        The default value is 0.02.
        The higher the value the stronger the smoothing.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class MeshSmoothFeatures(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Collection that provides access to all of the existing MeshSmooth features in a component
    and supports the ability to create new MeshSmooth features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshSmoothFeatures:
        return MeshSmoothFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> MeshSmoothFeature:
        return None
    def __iter__(self) -> Iterator[MeshSmoothFeature]:
        return None
    def item(self, index: int) -> MeshSmoothFeature:
        """
        Function that returns the specified mesh smooth feature 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 MeshSmoothFeature()
    def createInput(self, mesh: core.Base) -> MeshSmoothFeatureInput:
        """
        Creates a MeshSmoothFeatureInput object. Use properties and methods on this object
        to define the mesh smooth you want to create and then use the add method, passing in
        the MeshSmoothFeatureInput object.
        mesh : A MeshBody in either a parametric or direct modeling design.
        Returns the newly created MeshSmoothFeatureInput object or null if the creation failed.
        """
        return MeshSmoothFeatureInput()
    def add(self, input: MeshSmoothFeatureInput) -> MeshSmoothFeature:
        """
        Creates a mesh smooth feature.
        input : A MeshSmoothFeatureInput object that defines the desired MeshSmooth feature. Use the createInput
        method to create a new MeshSmoothFeatureInput object and then use methods on it
        (the MeshSmoothFeatureInput object) to define the smoothing.
        Returns the newly created MeshSmoothFeature object or null if the creation failed.
        Returns nothing in the case where the feature is non-parametric.
        """
        return MeshSmoothFeature()
    def itemByName(self, name: str) -> MeshSmoothFeature:
        """
        Function that returns the specified MeshSmooth feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return MeshSmoothFeature()
    @property
    def count(self) -> int:
        """
        The number of mesh smooth features in the collection.
        """
        return int()

class MinimumRadiusAnalyses(core.Base):
    """
    Provides access to any minimum radius analyses results in the design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MinimumRadiusAnalyses:
        return MinimumRadiusAnalyses()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> MinimumRadiusAnalysis:
        return None
    def __iter__(self) -> Iterator[MinimumRadiusAnalysis]:
        return None
    def item(self, index: int) -> MinimumRadiusAnalysis:
        """
        A method that returns the specified MinimumRadiusAnalysis 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 MinimumRadiusAnalysis()
    def itemByName(self, name: str) -> MinimumRadiusAnalysis:
        """
        A method that returns the specified MinimumRadiusAnalysis object using the name of the analysis
        as displayed in the browser.
        name : The name of the MinimumRadiusAnalysis object as displayed in the browser.
        Returns the specified item or null if an invalid name was specified.
        """
        return MinimumRadiusAnalysis()
    @property
    def count(self) -> int:
        """
        Returns the number of MinimumRadiusAnalysis objects in the collection.
        """
        return int()

class MirrorFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a mirror
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MirrorFeatureInput:
        return MirrorFeatureInput()
    @property
    def inputEntities(self) -> core.ObjectCollection:
        """
        Gets and sets the entities that are mirrored. It can contain faces, features, bodies, or components.
        The input must all be of a single type. For example, you can't provide a body and a component but
        the collection must be either all bodies or all components.
        """
        return core.ObjectCollection()
    @inputEntities.setter
    def inputEntities(self, value: core.ObjectCollection):
        """
        Gets and sets the entities that are mirrored. It can contain faces, features, bodies, or components.
        The input must all be of a single type. For example, you can't provide a body and a component but
        the collection must be either all bodies or all components.
        """
        pass
    @property
    def mirrorPlane(self) -> core.Base:
        """
        Gets and sets the mirror plane. This can be either a planar face or construction plane.
        """
        return core.Base()
    @mirrorPlane.setter
    def mirrorPlane(self, value: core.Base):
        """
        Gets and sets the mirror plane. This can be either a planar face or construction plane.
        """
        pass
    @property
    def patternComputeOption(self) -> PatternComputeOptions:
        """
        Gets and sets the compute option when mirroring features. The default value for this is AdjustPatternCompute.
        This property only applies when mirroring features and is ignored in the direct modeling environment.
        """
        return PatternComputeOptions()
    @patternComputeOption.setter
    def patternComputeOption(self, value: PatternComputeOptions):
        """
        Gets and sets the compute option when mirroring features. The default value for this is AdjustPatternCompute.
        This property only applies when mirroring features and is ignored in the direct modeling environment.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass
    @property
    def isCombine(self) -> bool:
        """
        Gets and sets whether the mirrored bodies should be combined with the original bodies.
        When true, the mirrored geometry will be Boolean unioned with the original solid or surface body(s)
        when they connect within the stitch tolerance defined with the stitchTolerance property. If the bodies
        cannot be unioned or stitched the result will be separate bodies.
        If any input object is not a body, then this setting is ignored.
        Default is false.
        """
        return bool()
    @isCombine.setter
    def isCombine(self, value: bool):
        """
        Gets and sets whether the mirrored bodies should be combined with the original bodies.
        When true, the mirrored geometry will be Boolean unioned with the original solid or surface body(s)
        when they connect within the stitch tolerance defined with the stitchTolerance property. If the bodies
        cannot be unioned or stitched the result will be separate bodies.
        If any input object is not a body, then this setting is ignored.
        Default is false.
        """
        pass
    @property
    def stitchTolerance(self) -> core.ValueInput:
        """
        Gets and sets the ValueInput object that defines the Stitching Tolerance (length)
        to use when doing a mirror and combine for surface bodies.
        """
        return core.ValueInput()
    @stitchTolerance.setter
    def stitchTolerance(self, value: core.ValueInput):
        """
        Gets and sets the ValueInput object that defines the Stitching Tolerance (length)
        to use when doing a mirror and combine for surface bodies.
        """
        pass

class MirrorFeatures(core.Base):
    """
    Collection that provides access to all of the existing mirror features in a component
    and supports the ability to create new mirror features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MirrorFeatures:
        return MirrorFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> MirrorFeature:
        return None
    def __iter__(self) -> Iterator[MirrorFeature]:
        return None
    def item(self, index: int) -> MirrorFeature:
        """
        Function that returns the specified mirror feature 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 MirrorFeature()
    def createInput(self, inputEntities: core.ObjectCollection, mirrorPlane: core.Base) -> MirrorFeatureInput:
        """
        Creates a MirrorFeatureInput object. Use properties and methods on this object
        to define the mirror you want to create and then use the Add method, passing in
        the MirrorFeatureInput object.
        inputEntities : A collection of the entities to mirror. It can contain faces, features, bodies, or components.
        The input must all be of a single type. For example, you can't provide a body and a component but
        the collection must be either all bodies or all components.
        mirrorPlane : Input planar entity that defines the mirror plane. This can be either a planar face or a construction plane.
        Returns the newly created MirrorFeatureInput object or null if the creation failed.
        """
        return MirrorFeatureInput()
    def add(self, input: MirrorFeatureInput) -> MirrorFeature:
        """
        Creates a new mirror feature.
        input : A MirrorFeatureInput object that defines the desired mirror. Use the createInput
        method to create a new MirrorFeatureInput object and then use methods on it
        (the MirrorFeatureInput object) to define the mirror.
        Returns the newly created MirrorFeature object or null if the creation failed.
        """
        return MirrorFeature()
    def itemByName(self, name: str) -> MirrorFeature:
        """
        Function that returns the specified mirror feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return MirrorFeature()
    @property
    def count(self) -> int:
        """
        The number of mirror features in the collection.
        """
        return int()

class ModelParameters(core.Base):
    """
    Provides access to the Model Parameters within a component.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ModelParameters:
        return ModelParameters()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ModelParameter:
        return None
    def __iter__(self) -> Iterator[ModelParameter]:
        return None
    def item(self, index: int) -> ModelParameter:
        """
        Function that returns the specified Model 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 ModelParameter()
    def itemByName(self, name: str) -> ModelParameter:
        """
        Function that returns the specified Model Parameter using the name of the parameter as it is
        displayed in the parameters dialog.
        name : The name of the Model Parameter as it is displayed in the parameters dialog
        Returns the specified item or null if an invalid name was specified.
        """
        return ModelParameter()
    @property
    def count(self) -> int:
        """
        Returns the number of parameters in the collection.
        """
        return int()
    @property
    def component(self) -> Component:
        """
        Returns the component that owns the Model Parameters collection
        """
        return Component()

class MotionLink(core.Base):
    """
    A MotionLink in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MotionLink:
        return MotionLink()
    def setMotionData(self, motionOne: JointMotionTypes, valueOne: core.ValueInput, motionTwo: JointMotionTypes, valueTwo: core.ValueInput, isReversed: bool = False) -> bool:
        """
        Method that sets the motion data.
        motionOne : Specifies the first motion to link.
        valueOne : Specifies the first motion link value. If the ValueInput uses a real then it is interpreted as centimeters for length and radians for angle.
        If it is a string then the units can be defined as part of the string (i.e. "2 in" or "60 deg") or if no units are specified it is interpreted using the current default units for length or angle.
        motionTwo : Specifies the second motion to link.
        valueTwo : Specifies the second motion link value. If the ValueInput uses a real then it is interpreted as centimeters for length and radians for angle.
        If it is a string then the units can be defined as part of the string (i.e. "2 in" or "60 deg") or if no units are specified it is interpreted using the current default units for length or angle.
        isReversed : Optional argument that specifies whether to reverse the direction of the motion.
        Returns true if successful.
        """
        return bool()
    def deleteMe(self) -> bool:
        """
        Deletes this MotionLink.
        Returns true if the delete is successful.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> MotionLink:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return MotionLink()
    @property
    def parentComponent(self) -> Component:
        """
        Returns the parent component that owns this MotionLink.
        """
        return Component()
    @property
    def name(self) -> str:
        """
        Gets and sets the name of the MotionLink.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name of the MotionLink.
        """
        pass
    @property
    def jointOne(self) -> core.Base:
        """
        Gets the first joint for this MotionLink.
        """
        return core.Base()
    @property
    def jointTwo(self) -> core.Base:
        """
        Gets the second joint for this MotionLink. This can return null if the linked motions are from the same joint.
        """
        return core.Base()
    @property
    def motionOne(self) -> JointMotionTypes:
        """
        Gets the first motion type.
        """
        return JointMotionTypes()
    @property
    def motionTwo(self) -> JointMotionTypes:
        """
        Gets the second motion type.
        """
        return JointMotionTypes()
    @property
    def valueOne(self) -> ModelParameter:
        """
        Returns the ModelParameter for the first motion link value.
        """
        return ModelParameter()
    @property
    def valueTwo(self) -> ModelParameter:
        """
        Returns the ModelParameter for the second motion link value.
        """
        return ModelParameter()
    @property
    def isReversed(self) -> bool:
        """
        Gets and sets whether the motion is reversed or not.
        """
        return bool()
    @isReversed.setter
    def isReversed(self, value: bool):
        """
        Gets and sets whether the motion is reversed or not.
        """
        pass
    @property
    def timelineObject(self) -> TimelineObject:
        """
        Returns the timeline object associated with this MotionLink.
        """
        return TimelineObject()
    @property
    def nativeObject(self) -> MotionLink:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return MotionLink()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this object
        in an assembly. This is only valid in the case where this is acting
        as a proxy in an assembly. Returns null in the case where the object
        is not in the context of an assembly but is already the native object.
        """
        return Occurrence()
    @property
    def isSuppressed(self) -> bool:
        """
        Gets and sets if this MotionLink is suppressed.
        """
        return bool()
    @isSuppressed.setter
    def isSuppressed(self, value: bool):
        """
        Gets and sets if this MotionLink is suppressed.
        """
        pass
    @property
    def attributes(self) -> core.Attributes:
        """
        Returns the collection of attributes associated with this MotionLink.
        """
        return core.Attributes()
    @property
    def healthState(self) -> FeatureHealthStates:
        """
        Returns the current health state of the MotionLink.
        """
        return FeatureHealthStates()
    @property
    def errorOrWarningMessage(self) -> str:
        """
        Returns the error or warning message in the case where the healthState property returns either
        WarningFeatureHealthState or ErrorFeatureHealthState. Otherwise this property returns an empty string.
        """
        return str()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the MotionLink object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same MotionLink.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        """
        return str()

class MotionLinkInput(core.Base):
    """
    Defines all of the information required to create a new MotionLink. This object provides
    equivalent functionality to the MotionLink command dialog in that it gathers the required
    information to create a MotionLink.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MotionLinkInput:
        return MotionLinkInput()
    @property
    def jointOne(self) -> core.Base:
        """
        Gets and sets the first Joint or AsBuiltJoint for this MotionLink. When you link two motions from the same joint, a valid joint should have its joint motion type of BallJointType, CylindricalJointType, PinSlotJointType or PlanarJointType.
        A joint whose joint motion is a RigidJointMotion type is never valid as the first joint..
        """
        return core.Base()
    @jointOne.setter
    def jointOne(self, value: core.Base):
        """
        Gets and sets the first Joint or AsBuiltJoint for this MotionLink. When you link two motions from the same joint, a valid joint should have its joint motion type of BallJointType, CylindricalJointType, PinSlotJointType or PlanarJointType.
        A joint whose joint motion is a RigidJointMotion type is never valid as the first joint..
        """
        pass
    @property
    def jointTwo(self) -> core.Base:
        """
        Gets and sets the second Joint or AsBuiltJoint for this MotionLink. This can be a joint or null, when this is set to null then the two motions are from the same joint specified by jointOne.
        A joint whose joint motion is a RigidJointMotion type is never valid as the second joint.
        """
        return core.Base()
    @jointTwo.setter
    def jointTwo(self, value: core.Base):
        """
        Gets and sets the second Joint or AsBuiltJoint for this MotionLink. This can be a joint or null, when this is set to null then the two motions are from the same joint specified by jointOne.
        A joint whose joint motion is a RigidJointMotion type is never valid as the second joint.
        """
        pass
    @property
    def motionOne(self) -> JointMotionTypes:
        """
        Gets and sets the first motion type.
        """
        return JointMotionTypes()
    @motionOne.setter
    def motionOne(self, value: JointMotionTypes):
        """
        Gets and sets the first motion type.
        """
        pass
    @property
    def motionTwo(self) -> JointMotionTypes:
        """
        Gets and sets the second motion type.
        """
        return JointMotionTypes()
    @motionTwo.setter
    def motionTwo(self, value: JointMotionTypes):
        """
        Gets and sets the second motion type.
        """
        pass
    @property
    def valueOne(self) -> core.ValueInput:
        """
        Gets and sets the first motion link value. If the ValueInput uses a real then it is interpreted as centimeters for length and radians for angle.
        If it is a string then the units can be defined as part of the string (i.e. "2 in" or "60 deg") or if no units are specified it is interpreted using the current default units for length or angle.
        """
        return core.ValueInput()
    @valueOne.setter
    def valueOne(self, value: core.ValueInput):
        """
        Gets and sets the first motion link value. If the ValueInput uses a real then it is interpreted as centimeters for length and radians for angle.
        If it is a string then the units can be defined as part of the string (i.e. "2 in" or "60 deg") or if no units are specified it is interpreted using the current default units for length or angle.
        """
        pass
    @property
    def valueTwo(self) -> core.ValueInput:
        """
        Gets and sets the second motion link value. If the ValueInput uses a real then it is interpreted as centimeters for length and radians for angle.
        If it is a string then the units can be defined as part of the string (i.e. "2 in" or "60 deg") or if no units are specified it is interpreted using the current default units for length or angle.
        """
        return core.ValueInput()
    @valueTwo.setter
    def valueTwo(self, value: core.ValueInput):
        """
        Gets and sets the second motion link value. If the ValueInput uses a real then it is interpreted as centimeters for length and radians for angle.
        If it is a string then the units can be defined as part of the string (i.e. "2 in" or "60 deg") or if no units are specified it is interpreted using the current default units for length or angle.
        """
        pass
    @property
    def isReversed(self) -> bool:
        """
        Gets and sets whether the direction of the motion is reversed or not.
        """
        return bool()
    @isReversed.setter
    def isReversed(self, value: bool):
        """
        Gets and sets whether the direction of the motion is reversed or not.
        """
        pass

class MotionLinks(core.Base):
    """
    The collection of MotionLinks in this component. This provides access to all existing MotionLinks
    and supports the ability to create new MotionLinks.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MotionLinks:
        return MotionLinks()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> MotionLink:
        return None
    def __iter__(self) -> Iterator[MotionLink]:
        return None
    def item(self, index: int) -> MotionLink:
        """
        Function that returns the specified MotionLink 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 MotionLink()
    def createInput(self, jointOne: core.Base, jointTwo: core.Base = None) -> MotionLinkInput:
        """
        Creates a MotionLinkInput object, which is the API equivalent to the Motion Link command dialog.
        You can use methods and properties on the returned object to set the desired options, similar to
        providing input and setting options in the MotionLink command dialog. Once the settings are defined
        you call the MotionLinks.add method passing in the MotionLinkInput object to create the actual MotionLink.
        jointOne : Inputs the first Joint or AsBuiltJoint to link its motion(s). If the jointTwo is set to null, then two motions from the jointOne will be linked,
        and in this case a valid Joint or AsBuiltJoint for jointOne should have its joint motion type of BallJointType, CylindricalJointType, PinSlotJointType or PlanarJointType.
        A Joint or AsBuiltJoint whose joint motion is a RigidJointMotion type is never valid as the first joint.
        jointTwo : Inputs the second Joint or AsBuiltJoint to link its motion. If this is set to null, then the two motions from the jointOne will be linked.
        A Joint or AsBuiltJoint whose joint motion is a RigidJointMotion type is never valid as the second joint.
        Returns the MotionLinkInput object or null if the creation failed.
        """
        return MotionLinkInput()
    def add(self, input: MotionLinkInput) -> MotionLink:
        """
        Creates a new MotionLink.
        input : The MotionLinkInput object that defines various inputs that fully define a MotionLink.
        A MotionLinkInput object is created using the MotionLinks.createInput method.
        Returns the newly created MotionLink or null in the case of failure.
        """
        return MotionLink()
    def itemByName(self, name: str) -> MotionLink:
        """
        Function that returns the specified MotionLink using a name.
        name : The name of the item within the collection to return.
        Returns the specified item or null if an invalid name was specified.
        """
        return MotionLink()
    @property
    def count(self) -> int:
        """
        Returns number of MotionLinks in the collection.
        """
        return int()

class MoveFeatureDefinition(core.Base):
    """
    A Base class to return the information used to define a Move feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MoveFeatureDefinition:
        return MoveFeatureDefinition()
    @property
    def parentMoveFeature(self) -> MoveFeature:
        """
        Returns the parent MoveFeature object
        """
        return MoveFeature()

class MoveFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a move feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MoveFeatureInput:
        return MoveFeatureInput()
    def defineAsFreeMove(self, transform: core.Matrix3D) -> bool:
        """
        This method will define a move feature whose translation and orientation
        is defined using a transformation matrix. A matrix can define any translation and
        orientation.
        transform : The transformation matrix that defines the transform to apply. The matrix must
        be an orthogonal matrix; that is the axes are perpendicular to each other
        and there isn't any scaling or mirroring defined.
        Returns true if defining the type of move is successful.
        """
        return bool()
    def defineAsTranslateXYZ(self, xDistance: core.ValueInput, yDistance: core.ValueInput, zDistance: core.ValueInput, isDesignSpace: bool) -> bool:
        """
        This method will define a move feature that defines a translation in X, Y, and Z.
        xDistance : A ValueInput object that defines the offset in the X direction. If the ValueInput
        is created using a real value, the distance is in centimeters. If it's defined using
        a string, the default document units are used.
        yDistance : A ValueInput object that defines the offset in the Y direction. If the ValueInput
        is created using a real value, the distance is in centimeters. If it's defined using
        a string, the default document units are used.
        zDistance : A ValueInput object that defines the offset in the Z direction. If the ValueInput
        is created using a real value, the distance is in centimeters. If it's defined using
        a string, the default document units are used.
        isDesignSpace : Defines if the translation is defined with respect to the design or component space.
        Design space is the same as the root component space.
        Returns true if defining the type of move is successful.
        """
        return bool()
    def defineAsTranslateAlongEntity(self, linearEntity: core.Base, distance: core.ValueInput) -> bool:
        """
        This method will define a move feature that defines a translation along a specified entity.
        linearEntity : A linear entity that defines the direction of the move. This can be a linear BRepEdge,
        ConstructionAxis, or a SketchLine. The entity defines the direction, not the distance.
        The natural direction of the entity defines the translation direction.
        distance : A ValueInput object that defines the offset distance. If the ValueInput
        is created using a real value, the distance is in centimeters. If it's defined using
        a string, the default document units are used.
        Returns true if defining the type of move is successful.
        """
        return bool()
    def defineAsRotate(self, axisEntity: core.Base, angle: core.ValueInput) -> bool:
        """
        This method defines a move feature that is described by an axis and rotation angle.
        axisEntity : A linear entity that defines the axis of rotation. This can be a linear BRepEdge,
        ConstructionAxis, or a SketchLine. The natural direction of the entity defines a
        right-hand rule for the rotation direction.
        angle : A ValueInput object that defines the rotation angle. If the ValueInput
        is created using a real value, the angle is in radians. If it's defined using
        a string, the default document units will be used.
        Returns true if defining the type of move is successful.
        """
        return bool()
    def defineAsPointToPoint(self, originPoint: core.Base, targetPoint: core.Base) -> bool:
        """
        This method defines a move feature described by a translation from one point to another.
        originPoint : The first point that defines the start position of the move.
        targetPoint : The second point that defines the direction and distance of the move.
        Returns true if defining the type of move is successful.
        """
        return bool()
    def defineAsPointToPosition(self, point: core.Base, xDistance: core.ValueInput, yDistance: core.ValueInput, zDistance: core.ValueInput, isDesignSpace: bool) -> bool:
        """
        This method defines a move feature described by a point and an offset. The distances
        define offsets in the X, Y, and Z directions in either design or component space. To
        not move the input entities at all the offset distances should be set to the current
        location of the point in either design or component space. Adding or subtracting to
        those values will then move the entities that distance. It's best to experiment with
        the command interactively to understand the behavior.
        point : An entity that defines a point in space. This can be a sketch point, a construction point,
        or a BRepVertex.
        xDistance : A ValueInput object that defines the offset in the X direction. If the ValueInput
        is created using a real value, the distance is in centimeters. If it's defined using
        a string, the default document units will be used.
        yDistance : A ValueInput object that defines the offset in the Y direction. If the ValueInput
        is created using a real value, the distance is in centimeters. If it's defined using
        a string, the default document units will be used.
        zDistance : A ValueInput object that defines the offset in the Z direction. If the ValueInput
        is created using a real value, the distance is in centimeters. If it's defined using
        a string, the default document units will be used.
        isDesignSpace : Defines if the translation is defined with respect to the design or component space.
        Design space is the same as the root component space.
        Returns true if defining the type of move is successful.
        """
        return bool()
    @property
    def inputEntities(self) -> core.ObjectCollection:
        """
        An ObjectCollection containing the objects to move. The collection can contain
        BRepBody or BRepFace objects but not a mixture of the two types.
        """
        return core.ObjectCollection()
    @inputEntities.setter
    def inputEntities(self, value: core.ObjectCollection):
        """
        An ObjectCollection containing the objects to move. The collection can contain
        BRepBody or BRepFace objects but not a mixture of the two types.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class MoveFeatures(core.Base):
    """
    Collection that provides access to all of the existing move features in a component
    and supports the ability to create new move features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MoveFeatures:
        return MoveFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> MoveFeature:
        return None
    def __iter__(self) -> Iterator[MoveFeature]:
        return None
    def item(self, index: int) -> MoveFeature:
        """
        Function that returns the specified move feature 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 MoveFeature()
    def add(self, input: MoveFeatureInput) -> MoveFeature:
        """
        Creates a new move feature.
        input : A MoveFeatureInput object that defines the desired move feature. Use the createInput2
        method to create a new MoveFeatureInput object and then use methods on the MoveFeatureInput
        object to define the move feature.
        Returns the newly created MoveFeature object or null if the creation failed.
        Returns nothing in the case where the feature is non-parametric.
        """
        return MoveFeature()
    def itemByName(self, name: str) -> MoveFeature:
        """
        Function that returns the specified move feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return MoveFeature()
    def createInput2(self, inputEntities: core.ObjectCollection) -> MoveFeatureInput:
        """
        Creates a MoveFeatureInput object. Use properties and methods on this object
        to define how the move is defined and then use the MoveFeatues.add method, passing in
        the MoveFeatureInput object to create a move feature.
        inputEntities : An ObjectCollection containing the objects to move. For a parametric model, the collection can contain
        BRepBody or BRepFace objects but not a combination of both.
        Returns the newly created MoveFeatureInput object or null if the creation failed.
        """
        return MoveFeatureInput()
    @property
    def count(self) -> int:
        """
        The number of move features in the collection.
        """
        return int()

class ObjectVisibility(core.Base):
    """
    An object that provides control over which objects are displayed in the graphics window.
    This is the equivalent of the "Object Visibility" settings in the Display Settings drop-down
    in the navigation toolbar at the bottom of the Fusion graphics window.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ObjectVisibility:
        return ObjectVisibility()
    @property
    def isAllObjectsVisible(self) -> bool:
        """
        Sets if all objects are visible or hidden. When setting this property it
        will set the value of all other properties of this object to true or false.
        When getting this property, if it is true, then all other properties are true.
        If false, one or more other properties are false.
        """
        return bool()
    @isAllObjectsVisible.setter
    def isAllObjectsVisible(self, value: bool):
        """
        Sets if all objects are visible or hidden. When setting this property it
        will set the value of all other properties of this object to true or false.
        When getting this property, if it is true, then all other properties are true.
        If false, one or more other properties are false.
        """
        pass
    @property
    def isOriginPlanesVisible(self) -> bool:
        """
        Gets and sets if the origin construction planes of all components, local or
        referenced by this design, are visible in the graphics window.
        """
        return bool()
    @isOriginPlanesVisible.setter
    def isOriginPlanesVisible(self, value: bool):
        """
        Gets and sets if the origin construction planes of all components, local or
        referenced by this design, are visible in the graphics window.
        """
        pass
    @property
    def isOriginAxesVisible(self) -> bool:
        """
        Gets and sets if the origin construction axes of all components, local or
        referenced by this design, are visible in the graphics window.
        """
        return bool()
    @isOriginAxesVisible.setter
    def isOriginAxesVisible(self, value: bool):
        """
        Gets and sets if the origin construction axes of all components, local or
        referenced by this design, are visible in the graphics window.
        """
        pass
    @property
    def isOriginPointsVisible(self) -> bool:
        """
        Gets and sets if the origin construction points of all components, local or
        referenced by this design, are visible in the graphics window.
        """
        return bool()
    @isOriginPointsVisible.setter
    def isOriginPointsVisible(self, value: bool):
        """
        Gets and sets if the origin construction points of all components, local or
        referenced by this design, are visible in the graphics window.
        """
        pass
    @property
    def isUserWorkPlanesVisible(self) -> bool:
        """
        Gets and sets if the user created construction planes of all components, local or
        referenced by this design, are visible in the graphics window.
        """
        return bool()
    @isUserWorkPlanesVisible.setter
    def isUserWorkPlanesVisible(self, value: bool):
        """
        Gets and sets if the user created construction planes of all components, local or
        referenced by this design, are visible in the graphics window.
        """
        pass
    @property
    def isUserWorkAxesVisible(self) -> bool:
        """
        Gets and sets if the user created construction axes of all components, local or
        referenced by this design, are visible in the graphics window.
        """
        return bool()
    @isUserWorkAxesVisible.setter
    def isUserWorkAxesVisible(self, value: bool):
        """
        Gets and sets if the user created construction axes of all components, local or
        referenced by this design, are visible in the graphics window.
        """
        pass
    @property
    def isUserWorkPointsVisible(self) -> bool:
        """
        Gets and sets if the user created construction points of all components, local or
        referenced by this design, are visible in the graphics window.
        """
        return bool()
    @isUserWorkPointsVisible.setter
    def isUserWorkPointsVisible(self, value: bool):
        """
        Gets and sets if the user created construction points of all components, local or
        referenced by this design, are visible in the graphics window.
        """
        pass
    @property
    def isSketchesVisible(self) -> bool:
        """
        Gets and sets if the sketches in all components, local or referenced by this design,
        are visible in the graphics window.
        """
        return bool()
    @isSketchesVisible.setter
    def isSketchesVisible(self, value: bool):
        """
        Gets and sets if the sketches in all components, local or referenced by this design,
        are visible in the graphics window.
        """
        pass
    @property
    def isJointOriginsVisible(self) -> bool:
        """
        Gets and sets if the glyphs for joint origins in all components, local or referenced by this design,
        are visible in the graphics window.
        """
        return bool()
    @isJointOriginsVisible.setter
    def isJointOriginsVisible(self, value: bool):
        """
        Gets and sets if the glyphs for joint origins in all components, local or referenced by this design,
        are visible in the graphics window.
        """
        pass
    @property
    def isJointOriginAxesVisible(self) -> bool:
        """
        Gets and sets if the axes lines shown in the glyphs for joint origins in all components, local or
        referenced by this design, are visible in the graphics window.
        """
        return bool()
    @isJointOriginAxesVisible.setter
    def isJointOriginAxesVisible(self, value: bool):
        """
        Gets and sets if the axes lines shown in the glyphs for joint origins in all components, local or
        referenced by this design, are visible in the graphics window.
        """
        pass
    @property
    def isJointsVisible(self) -> bool:
        """
        Gets and sets if the glyphs for joints in all components, local or referenced by this design, are visible.
        """
        return bool()
    @isJointsVisible.setter
    def isJointsVisible(self, value: bool):
        """
        Gets and sets if the glyphs for joints in all components, local or referenced by this design, are visible.
        """
        pass

class Occurrence(core.Base):
    """
    Represents an occurrence of a component at any level within a subassembly.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Occurrence:
        return Occurrence()
    def deleteMe(self) -> bool:
        """
        Deletes the occurrence from the design. If this is the last occurrence
        referencing a specific Component, the component is also deleted.
        Returns true if the delete was successful.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> Occurrence:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        Fails if this object is not the NativeObject.
        occurrence : The occurrence that represents the context you want to create this proxy in.
        Returns the proxy for the occurrence in the context of the specified occurrence.
        Returns null if it failed.
        """
        return Occurrence()
    def activate(self) -> bool:
        """
        Makes the occurrence 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 moveToComponent(self, targetOccurrence: Occurrence) -> Occurrence:
        """
        Moves this occurrence from its current component into the component owned by the specified occurrence.
        This occurrence and the target occurrence must be in the same context.
        targetOccurrence : The target occurrence defines both the component and the transform to apply when moving the occurrence. The
        occurrence will be copied into the parent component of the target occurrence and the target occurrence also defines
        the transform of how the occurrence will be copied so that the occurrence maintains its same position in model space.
        Returns the moved Occurrence or null in the case the move failed.
        """
        return Occurrence()
    def getPhysicalProperties(self, accuracy: CalculationAccuracy = CalculationAccuracy.LowCalculationAccuracy) -> PhysicalProperties:
        """
        Returns the PhysicalProperties object that has properties for getting the area, density, mass, volume, moments, etc.
        of this occurrence.
        accuracy : Specifies the desired level of computational accuracy of the property calculations.
        The default value of 'LowCalculationAccuracy' returns results within a +/- 1% error margin.
        Returns a PhysicalProperties object that can be used to get the various physical property related values.
        """
        return PhysicalProperties()
    def breakLink(self) -> bool:
        """
        When the component this occurrence references is an external reference (the isReferencedComponent property returns true),
        this will break the link and create a local Component that this occurrence will reference. The new local Component can
        be accessed through the Occurrence using the component property.
        
        This method will fail if the occurrence is not referencing an external component.
        Returns true if the break link was successful.
        """
        return bool()
    def replace(self, newFile: core.DataFile, replaceAll: bool) -> bool:
        """
        Replaces this occurrence or all occurrences that reference the same external component with a new component.
        
        This method will fail if the occurrence is not referencing an external component.
        newFile : Specifies the DataFile you want to use as the replacement. The DataFile specified
        must exist in the same hub as the parent assembly.
        replaceAll : Indicates if you want to replace only this single occurrence or all occurrences that reference
        the same external design.
        Returns true if the replacement was successful.
        """
        return bool()
    def boundingBox2(self, entityTypes: BoundingBoxEntityTypes) -> core.BoundingBox3D:
        """
        Returns the bounding box of the specified entity types within the occurrence.
        entityTypes : Bitwise value that specifies the types of entities to include in the
        calculation of the bounding box.
        Returns a BoundingBox3D object if the calculation was successful and null in the case where there is no valid geometry and the bounding box is empty.
        """
        return core.BoundingBox3D()
    def switchConfiguration(self, newRow: ConfigurationRow) -> bool:
        """
        Changes which configuration is used for this occurrence. Use the isConfiguration property
        to determine if this occurrence references a configuration.
        newRow : The row to switch to. This row must be from the same ConfigurationTopTable as the current row. You
        can access the table from the parent design.
        Returns true if the switch was successful.
        """
        return bool()
    @property
    def sourceComponent(self) -> Component:
        """
        This is the sourceComponent for the occurrence and is affected
        by the assembly context.
        This is the top-level component where the path begins.
        """
        return Component()
    @property
    def childOccurrences(self) -> OccurrenceList:
        """
        Returns a read only list of child occurrences where only the occurrences
        in this occurrence's AssemblyContext are returned .
        """
        return OccurrenceList()
    @property
    def component(self) -> Component:
        """
        The component this occurrence references.
        """
        return Component()
    @property
    def name(self) -> str:
        """
        The name of the occurrence. This is the name as seen in the browser. It is a reflection
        of the component name with an added counter suffix (i.e. 'OccurrenceName:1').
        """
        return str()
    @property
    def fullPathName(self) -> str:
        """
        The name of the occurrence, including the full path of occurrences as seen in the browser.
        The top-level component will depend on the context but will typically be the root component
        of the design. A name for an occurrence that is at the third level of an assembly could be
        "Sub1:1+Sub2:1+PartA:1".
        """
        return str()
    @property
    def appearance(self) -> core.Appearance:
        """
        Read-write property that gets and sets the appearance override for this occurrence.
        This property can return null indicating there is no override appearance and that the
        contents of the occurrence are displayed using there defined appearance.
        Setting the property to null will remove any override appearance for this occurrence.
        """
        return core.Appearance()
    @appearance.setter
    def appearance(self, value: core.Appearance):
        """
        Read-write property that gets and sets the appearance override for this occurrence.
        This property can return null indicating there is no override appearance and that the
        contents of the occurrence are displayed using there defined appearance.
        Setting the property to null will remove any override appearance for this occurrence.
        """
        pass
    @property
    def isLightBulbOn(self) -> bool:
        """
        Gets and sets if the light bulb of this occurrence as displayed in the browser is on or off.
        An occurrence will only be visible if the light bulb is switched on. However,
        the light bulb can be on and the occurrence still invisible if a higher level occurrence
        in the assembly context is not visible because its light bulb is off.
        """
        return bool()
    @isLightBulbOn.setter
    def isLightBulbOn(self, value: bool):
        """
        Gets and sets if the light bulb of this occurrence as displayed in the browser is on or off.
        An occurrence will only be visible if the light bulb is switched on. However,
        the light bulb can be on and the occurrence still invisible if a higher level occurrence
        in the assembly context is not visible because its light bulb is off.
        """
        pass
    @property
    def isVisible(self) -> bool:
        """
        Gets whether the occurrence is visible.
        This property is affected by the assembly context.
        """
        return bool()
    @property
    def timelineObject(self) -> TimelineObject:
        """
        Returns the timeline object associated with the creation of this occurrence.
        """
        return TimelineObject()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this
        object in an assembly. This is only valid in the case where this
        references the component the object is defined within.
        Returns null in the case where the object is not in the context of an assembly
        but is already the native object.
        """
        return Occurrence()
    @property
    def nativeObject(self) -> Occurrence:
        """
        The NativeObject is the object outside the context of an assembly.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        The return type is strongly typed for each object.
        """
        return Occurrence()
    @property
    def isGrounded(self) -> bool:
        """
        Gets and sets whether this occurrence is pinned or not.
        """
        return bool()
    @isGrounded.setter
    def isGrounded(self, value: bool):
        """
        Gets and sets whether this occurrence is pinned or not.
        """
        pass
    @property
    def isSelectable(self) -> bool:
        """
        Gets and sets whether this occurrence is selectable or not.
        """
        return bool()
    @isSelectable.setter
    def isSelectable(self, value: bool):
        """
        Gets and sets whether this occurrence is selectable or not.
        """
        pass
    @property
    def isIsolated(self) -> bool:
        """
        Gets and sets whether this occurrence is isolated in the UI. When an occurrence
        is isolated it is the only one visible in the user-interface. Only one occurrence
        can be isolated at a time so setting this property to true will un-isolate an occurrence
        that is currently isolated. Setting this property to false for an occurrence that is
        current isolated will un-isolate it so that no occurrence will be isolated.
        """
        return bool()
    @isIsolated.setter
    def isIsolated(self, value: bool):
        """
        Gets and sets whether this occurrence is isolated in the UI. When an occurrence
        is isolated it is the only one visible in the user-interface. Only one occurrence
        can be isolated at a time so setting this property to true will un-isolate an occurrence
        that is currently isolated. Setting this property to false for an occurrence that is
        current isolated will un-isolate it so that no occurrence will be isolated.
        """
        pass
    @property
    def isActive(self) -> bool:
        """
        Gets whether this occurrence is the active edit target in the user interface.
        This is the same as checking the state of the radio button next to the occurrence in the browser.
        To activate the occurrence use the Activate method.
        """
        return bool()
    @property
    def physicalProperties(self) -> PhysicalProperties:
        """
        Returns the PhysicalProperties object that has properties for getting the area, density, mass, volume, moments, etc.
        of this occurrence. Property values will be calculated using the 'LowCalculationAccuracy' setting when using this property
        to get the PhysicalProperties object. To specify a higher calculation tolerance, use the getPhysicalProperties method instead.
        Returns a PhysicalProperties object that can be used to get the various physical property related values.
        """
        return PhysicalProperties()
    @property
    def isReferencedComponent(self) -> bool:
        """
        Gets if this occurrence is referencing an external component.
        """
        return bool()
    @property
    def boundingBox(self) -> core.BoundingBox3D:
        """
        Returns the bounding box of this occurrence.
        """
        return core.BoundingBox3D()
    @property
    def joints(self) -> JointList:
        """
        Returns the joints that affect the position of this occurrence. For example, if a joint has
        been created between this occurrence and another occurrence, this property will return that
        joint. If the occurrence is a proxy, the joints returned will also be proxies in the same
        context as the occurrence.
        """
        return JointList()
    @property
    def rigidGroups(self) -> RigidGroupList:
        """
        Returns the rigid groups that this occurrence is a member of. If the occurrence is a proxy,
        the joints returned will also be proxies in the same context as the occurrence.
        """
        return RigidGroupList()
    @property
    def asBuiltJoints(self) -> AsBuiltJointList:
        """
        Returns the as-built joints that affect the position of this occurrence. If the occurrence is a proxy,
        the as-built joints returned will also be proxies in the same context as the occurrence.
        """
        return AsBuiltJointList()
    @property
    def attributes(self) -> core.Attributes:
        """
        Returns the collection of attributes associated with this face.
        """
        return core.Attributes()
    @property
    def bRepBodies(self) -> BRepBodies:
        """
        Returns the body proxies for the B-Rep bodies in the component referenced by this occurrence.
        For example if you get the occurrences from the root component and then use this property to
        get the bodies from those occurrences, the bodies returned will return information in the context of the root
        component, not the component they actually exist in.
        """
        return BRepBodies()
    @property
    def visibleOpacity(self) -> float:
        """
        The user can set an override opacity for components and these opacity overrides combine if
        children and parent components have overrides. This property returns the actual opacity that is
        being used to render the occurrence. To set the opacity use the opacity property of the Component object.
        """
        return float()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the Occurrence object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same occurrence.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        """
        return str()
    @property
    def transform2(self) -> core.Matrix3D:
        """
        Gets and sets the 3d matrix data that defines this occurrences orientation and
        position in its assembly context. This property replaces the transform property, which
        has been retired because there are cases where it returns the incorrect results.
        """
        return core.Matrix3D()
    @transform2.setter
    def transform2(self, value: core.Matrix3D):
        """
        Gets and sets the 3d matrix data that defines this occurrences orientation and
        position in its assembly context. This property replaces the transform property, which
        has been retired because there are cases where it returns the incorrect results.
        """
        pass
    @property
    def documentReference(self) -> core.DocumentReference:
        """
        When the component this occurrence references is an external reference (the isReferencedComponent property returns true),
        this will return the object that represents that reference. Through the DocumentReference object you can modify
        the version and get other information associated with the reference.
        
        This property will fail if the occurrence is not referencing an external component.
        """
        return core.DocumentReference()
    @property
    def preciseBoundingBox(self) -> core.BoundingBox3D:
        """
        Returns a bounding box that tightly fits around all B-Rep bodies in the occurrence.
        All other geometry types are ignored.
        """
        return core.BoundingBox3D()
    @property
    def orientedMinimumBoundingBox(self) -> core.OrientedBoundingBox3D:
        """
        Returns an oriented bounding box that is best oriented to tightly fit all B-Rep bodies in the occurrence.
        All other geometry types are ignored.
        """
        return core.OrientedBoundingBox3D()
    @property
    def isConfiguration(self) -> bool:
        """
        Returns if this occurrence represents a configuration or not. If true, you can access
        the full configuration from the parent component.
        """
        return bool()
    @property
    def configurationRow(self) -> ConfigurationRow:
        """
        If this occurrence is a configuration, this property returns the row that defines it. If it isn't
        a configuration, null is returned.
        """
        return ConfigurationRow()
    @property
    def configuredDataFile(self) -> core.DataFile:
        """
        Returns the DataFile object that represents the specific version of the design used by this occurrence.
        From the DataFile you can access other version of the file, most importantly, you can access the latest
        version and get the top configuration table from it.
        """
        return core.DataFile()
    @property
    def isGroundToParent(self) -> bool:
        """
        Gets and sets whether this occurrence is grounded to parent or not.
        """
        return bool()
    @isGroundToParent.setter
    def isGroundToParent(self, value: bool):
        """
        Gets and sets whether this occurrence is grounded to parent or not.
        """
        pass
    @property
    def initialTransform(self) -> core.Matrix3D:
        """
        Gets and sets the initial position of the occurrence.
        Setting the initial transform is not valid for all occurrences. For instance, this operation could fail if the occurrence is created by a pattern among other cases.
        To determine if setting the initial transform is possible, use the isValidForEditInitialPosition property.
        If this property returns false, attempting to set the initial transform will result in failure.
        """
        return core.Matrix3D()
    @initialTransform.setter
    def initialTransform(self, value: core.Matrix3D):
        """
        Gets and sets the initial position of the occurrence.
        Setting the initial transform is not valid for all occurrences. For instance, this operation could fail if the occurrence is created by a pattern among other cases.
        To determine if setting the initial transform is possible, use the isValidForEditInitialPosition property.
        If this property returns false, attempting to set the initial transform will result in failure.
        """
        pass
    @property
    def isVaildForEditInitialPosition(self) -> bool:
        """
        Gets whether this occurrence is valid for edit initial position.
        """
        return bool()
    @property
    def dataComponent(self) -> core.DataComponent:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Gets the DataComponent for the target component in the source component's document.
        This only applies for Occurrence's with an assembly context whose source component
        is a top level opened design.
        """
        return core.DataComponent()
    @property
    def isDerived(self) -> bool:
        """
        Returns if this occurrence is derived from another design. If true, the occurrence cannot be deleted.
        You should not attempt to make any edits to the component referenced by the derived occurrence. Any edits made to this derived occurrence will be lost when the derive updates.
        """
        return bool()
    @property
    def deriveFeature(self) -> DeriveFeature:
        """
        Returns the DeriveFeature if this occurrence is derived from another design.
        This property returns null if the occurrence is not derived from another design (i.e. isDerived property returns false).
        """
        return DeriveFeature()
    @property
    def meshBodies(self) -> list[MeshBody]:
        """
        Returns the body proxies for the mesh bodies in the component referenced by this occurrence.
        For example if you get the occurrences from the root component and then use this property to
        get the bodies from those occurrences, the bodies returned will return information in the context of the root
        component, not the component they actually exist in.
        """
        return [MeshBody()]

class OccurrenceList(core.Base):
    """
    Provides a list of occurrences.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> OccurrenceList:
        return OccurrenceList()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> Occurrence:
        return None
    def __iter__(self) -> Iterator[Occurrence]:
        return None
    def item(self, index: int) -> Occurrence:
        """
        Returns the specified occurrence using an index into the collection.
        index : The index of the occurrence within the collection to return. The first item has an index of 0.
        Returns the specified occurrence or null in the case of an invalid index.
        """
        return Occurrence()
    def itemByName(self, name: str) -> Occurrence:
        """
        Returns the specified occurrence using the name of the occurrence.
        name : The name of the occurrence to return.
        Returns the occurrence or null if an invalid name was specified
        """
        return Occurrence()
    @property
    def count(self) -> int:
        """
        Returns the number of occurrences in the collection.
        """
        return int()

class Occurrences(core.Base):
    """
    Provides access to occurrences within a component and provides
    methods to create new occurrences.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Occurrences:
        return Occurrences()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> Occurrence:
        return None
    def __iter__(self) -> Iterator[Occurrence]:
        return None
    def item(self, index: int) -> Occurrence:
        """
        Function that returns the specified occurrence 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 Occurrence()
    def itemByName(self, name: str) -> Occurrence:
        """
        Returns the specified occurrence using the name of the occurrence.
        name : The name of the occurrence to return.
        Returns the occurrence or null if an invalid name was specified
        """
        return Occurrence()
    def addExistingComponent(self, component: Component, transform: core.Matrix3D) -> Occurrence:
        """
        Method that creates a new occurrence using an existing component. This is the equivalent
        of copying and pasting an occurrence in the user interface.
        component : The existing component to create a new occurrence of.
        transform : A transform that defines the location for the new occurrence
        Returns the newly created occurrence or null if the creation failed.
        """
        return Occurrence()
    def addNewComponent(self, transform: core.Matrix3D) -> Occurrence:
        """
        Method that creates a new component and an occurrence that references it.
        transform : A transform that defines the location for the new occurrence.
        Returns the newly created occurrence or null if the creation failed.
        """
        return Occurrence()
    def addByInsert(self, dataFile: core.DataFile, transform: core.Matrix3D, isReferencedComponent: bool) -> Occurrence:
        """
        Method that inserts an existing file.
        dataFile : The dataFile to insert.
        transform : A transform that defines the location for the new occurrence.
        isReferencedComponent : Indicates if the insert is to be an external reference or embedded within this document.
        This method will fail if the dataFile being inserted is not from the same project as the document
        it is being inserted into while isReferencedComponent is True.
        Returns the newly created occurrence or null if the insert failed.
        Insert will fail if the dataFile being inserted is not from the same project as the document
        it is being inserted into while isReferencedComponent is True.
        """
        return Occurrence()
    def asArray(self) -> list[Occurrence]:
        """
        Get the current list of all occurrences.
        The occurrences are returned in the same order as they appear in the browser.
        Returns the current list of all occurrences.
        """
        return [Occurrence()]
    def addNewComponentCopy(self, component: Component, transform: core.Matrix3D) -> Occurrence:
        """
        Method that creates a new occurrence by creating a new component that is a copy of an existing
        component. This is the equivalent of copying and using the "Paste New" command in the user interface. This
        is different from the addExistingComponent in that it's not a new instance to the existing component but a
        new component is created that has its own definition (sketches, features, etc.) and a new occurrence instance
        is created to reference this new component.
        component : The existing component to create a copy of.
        transform : A transform that defines the location for the new occurrence
        Returns the newly created occurrence or null if the creation failed. The newly created component can be
        obtained by using the component property of the returned Occurrence.
        """
        return Occurrence()
    def addFromConfiguration(self, configurationRow: ConfigurationRow, transform: core.Matrix3D) -> Occurrence:
        """
        Method that inserts a configuration from a configured design.
        The insert will fail if the configured design being used is not from the same project as the file
        it is being inserted into.
        configurationRow : The row that specifies which configuration to use.
        transform : A transform that defines the location for the new occurrence.
        Returns the newly created occurrence or null if the add failed.
        """
        return Occurrence()
    def addNewExternalComponent(self, componentName: str, targetFolder: core.DataFolder, transform: core.Matrix3D) -> Occurrence:
        """
        Method that creates a new occurrence by creating a new external component (X-Ref) that is
        not saved yet. This is similar to the "New Component" command in the UI when creating an
        external component, where you specify a name and location but the component is created
        in-memory without being saved immediately. This allows programs to create and populate
        an external component without needing to save it first, and makes undo possible.
        The component will be saved automatically when the parent assembly is saved.
        componentName : The name for the new external component.
        targetFolder : The DataFolder where the component will be saved when the parent assembly is saved.
        transform : A transform that defines the location for the new occurrence.
        Returns the newly created occurrence or null if the creation failed. The component
        referenced by the occurrence can be edited but is not saved until the parent assembly
        is saved.
        """
        return Occurrence()
    @property
    def count(self) -> int:
        """
        Returns the number of occurrences in the collection.
        """
        return int()
    @property
    def asList(self) -> OccurrenceList:
        """
        Returns the contents of this collection as an OccurrencesList object. This
        is useful when writing a function that traverses an assembly.
        """
        return OccurrenceList()

class OffsetConstraintInput(core.Base):
    """
    Used to define the inputs needed to create an offset constraint.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> OffsetConstraintInput:
        return OffsetConstraintInput()
    @property
    def curves(self) -> list[SketchCurve]:
        """
        Gets and sets an array of SketchCurve objects that defines the connected curves that will be offset.
        The Sketch.FindConnectedCurves method is a convenient way to get this set of curves.
        """
        return [SketchCurve()]
    @curves.setter
    def curves(self, value: list[SketchCurve]):
        """
        Gets and sets an array of SketchCurve objects that defines the connected curves that will be offset.
        The Sketch.FindConnectedCurves method is a convenient way to get this set of curves.
        """
        pass
    @property
    def offset(self) -> core.ValueInput:
        """
        Gets and sets the value that defines the offset. This is a ValueInput object so it can be a float value to
        define the offset in centimeters or it can be a string defining an expression that will be used by the parameter
        controlling the offset. A positive offset value creates the offset curve to the "right" and a negative offset
        value goes to the "left".
        
        The flow direction of the provided curves implies the offset direction. For example, if two connected lines
        are offset, the flow direction is from line 1 to line 2. Left and right are evaluated relative to the input
        geometry. If you are standing on line 1 and looking towards line 2, the offset's left side is on your left,
        and the right side is to your right. Closed single curves like circles and ellipses always have a counterclockwise
        flow, so a positive offset is always to the outside. For closed splines, the positive direction is based on
        the spline's parameterization.
        """
        return core.ValueInput()
    @offset.setter
    def offset(self, value: core.ValueInput):
        """
        Gets and sets the value that defines the offset. This is a ValueInput object so it can be a float value to
        define the offset in centimeters or it can be a string defining an expression that will be used by the parameter
        controlling the offset. A positive offset value creates the offset curve to the "right" and a negative offset
        value goes to the "left".
        
        The flow direction of the provided curves implies the offset direction. For example, if two connected lines
        are offset, the flow direction is from line 1 to line 2. Left and right are evaluated relative to the input
        geometry. If you are standing on line 1 and looking towards line 2, the offset's left side is on your left,
        and the right side is to your right. Closed single curves like circles and ellipses always have a counterclockwise
        flow, so a positive offset is always to the outside. For closed splines, the positive direction is based on
        the spline's parameterization.
        """
        pass
    @property
    def dimensionPoint(self) -> core.Point3D:
        """
        A location on one of the curves where the offset dimension will be created. A value of null can be used to indicate
        that a default location should be used.
        
        When the OffsetContraintInput is created this property defaults to null.
        """
        return core.Point3D()
    @dimensionPoint.setter
    def dimensionPoint(self, value: core.Point3D):
        """
        A location on one of the curves where the offset dimension will be created. A value of null can be used to indicate
        that a default location should be used.
        
        When the OffsetContraintInput is created this property defaults to null.
        """
        pass
    @property
    def isTopologyMatched(self) -> bool:
        """
        Specifies if the offset curves must match the topology of the original curves. For example, if you have a sketch
        containing two lines with a fillet (arc) connecting them and offset them inward more than the arc radius, the
        resulting offset will be two lines. This is a change in topology because the original curves were line-arc-line,
        and the offset is line-line. An offset of less than the radius still results in a line-arc-line result. If this
        property is true, indicating the topology must match, creating the offset with a value greater than the arc radius
        will fail because the result will not have a matching topology.
        
        When the OffsetConstraintInput is created, this property default to true.
        """
        return bool()
    @isTopologyMatched.setter
    def isTopologyMatched(self, value: bool):
        """
        Specifies if the offset curves must match the topology of the original curves. For example, if you have a sketch
        containing two lines with a fillet (arc) connecting them and offset them inward more than the arc radius, the
        resulting offset will be two lines. This is a change in topology because the original curves were line-arc-line,
        and the offset is line-line. An offset of less than the radius still results in a line-arc-line result. If this
        property is true, indicating the topology must match, creating the offset with a value greater than the arc radius
        will fail because the result will not have a matching topology.
        
        When the OffsetConstraintInput is created, this property default to true.
        """
        pass

class OffsetFacesFeatureInput(core.Base):
    """
    Object that represents an existing Offset Faces feature in a design.
    Offset Faces features are created in the UI using the "Offset Face" or "Press Pull" command.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> OffsetFacesFeatureInput:
        return OffsetFacesFeatureInput()
    @property
    def faces(self) -> list[BRepFace]:
        """
        An array of BRepFace objects you want to offset. These faces can exist on multiple bodies
        and in multiple components. They cannot be in an externally referenced component.
        """
        return [BRepFace()]
    @faces.setter
    def faces(self, value: list[BRepFace]):
        """
        An array of BRepFace objects you want to offset. These faces can exist on multiple bodies
        and in multiple components. They cannot be in an externally referenced component.
        """
        pass
    @property
    def distance(self) -> core.ValueInput:
        """
        The distance of the offset. A positive value offsets the faces in the direction of the face
        normal. A negative value goes in the other direction.
        
        This is a ValueInput object that can be created using either createByReal or createByString.
        When a real ValueInput is used, the value is centimeters. When a string ValueInput is used, it
        defines the expression of the parameter that will be created to control the feature and any
        valid expression that defines a distance can be used.
        """
        return core.ValueInput()
    @distance.setter
    def distance(self, value: core.ValueInput):
        """
        The distance of the offset. A positive value offsets the faces in the direction of the face
        normal. A negative value goes in the other direction.
        
        This is a ValueInput object that can be created using either createByReal or createByString.
        When a real ValueInput is used, the value is centimeters. When a string ValueInput is used, it
        defines the expression of the parameter that will be created to control the feature and any
        valid expression that defines a distance can be used.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class OffsetFacesFeatures(core.Base):
    """
    Collection that provides access to all of the existing Offset Faces features in a design.
    Offset Face features are created in the UI using the "Offset Face" or "Press Pull" command.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> OffsetFacesFeatures:
        return OffsetFacesFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> OffsetFacesFeature:
        return None
    def __iter__(self) -> Iterator[OffsetFacesFeature]:
        return None
    def item(self, index: int) -> OffsetFacesFeature:
        """
        Function that returns the specified Offset Face feature 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 OffsetFacesFeature()
    def itemByName(self, name: str) -> OffsetFacesFeature:
        """
        Function that returns the specified Offset Face feature using the name of the feature.
        Offset Face features are created in the UI using the "Press Pull" command.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return OffsetFacesFeature()
    def createInput(self, faces: list[BRepFace], distance: core.ValueInput) -> OffsetFacesFeatureInput:
        """
        Creates an OffsetFacesFeatureInput object. Use properties and methods on this object
        to define the offset feature you want to create and then use the add method, passing in
        the OffsetFacesFeatureInput object to create the feature.
        faces : An array of BRepFace objects to offset. These faces can exist on multiple bodies
        and in multiple components. They cannot be in an externally referenced component.
        distance : The distance of the offset. A positive value offsets the faces in the direction of the face
        normal. A negative value goes in the other direction.
        
        This is a ValueInput object that can be created using either createByReal or createByString.
        When a real ValueInput is used, the value is centimeters. When a string ValueInput is used, it
        defines the expression of the parameter that will be created to control the feature and any
        valid expression that defines a distance can be used.
        Returns the newly created OffsetFacesFeatureInput object or null if the creation failed.
        """
        return OffsetFacesFeatureInput()
    def add(self, input: OffsetFacesFeatureInput) -> OffsetFacesFeature:
        """
        Creates a new offset feature.
        input : An OffsetFacesFeatureInput object that defines the desired offset faces feature. Use the
        createInput method to create a new OffsetFacesFeatureInput object and then use methods on it
        (the OffsetFacesFeatureInput object) to define the offset feature.
        Returns the newly created OffsetFacesFeature object or null if the creation failed.
        Returns nothing in the case where the feature is non-parametric.
        """
        return OffsetFacesFeature()
    @property
    def count(self) -> int:
        """
        The number of Offset Face features in the collection.
        Offset Face features are created in the UI using the "Press Pull" command.
        """
        return int()

class OffsetFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of an offset feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> OffsetFeatureInput:
        return OffsetFeatureInput()
    @property
    def entities(self) -> core.ObjectCollection:
        """
        An ObjectCollection containing the BRepFace objects being offset.
        """
        return core.ObjectCollection()
    @entities.setter
    def entities(self, value: core.ObjectCollection):
        """
        An ObjectCollection containing the BRepFace objects being offset.
        """
        pass
    @property
    def isChainSelection(self) -> bool:
        """
        Get and sets whether faces that are tangentially connected to the input faces will be included in the offset.
        """
        return bool()
    @isChainSelection.setter
    def isChainSelection(self, value: bool):
        """
        Get and sets whether faces that are tangentially connected to the input faces will be included in the offset.
        """
        pass
    @property
    def distance(self) -> core.ValueInput:
        """
        Gets and sets the ValueInput object that defines the offset distance. A positive distance value results
        in an offset in the positive normal direction of the faces.
        """
        return core.ValueInput()
    @distance.setter
    def distance(self, value: core.ValueInput):
        """
        Gets and sets the ValueInput object that defines the offset distance. A positive distance value results
        in an offset in the positive normal direction of the faces.
        """
        pass
    @property
    def operation(self) -> FeatureOperations:
        """
        Gets and sets the feature operation to perform. Can be 'NewBodyFeatureOperation' or 'NewComponentFeatureOperation'.
        """
        return FeatureOperations()
    @operation.setter
    def operation(self, value: FeatureOperations):
        """
        Gets and sets the feature operation to perform. Can be 'NewBodyFeatureOperation' or 'NewComponentFeatureOperation'.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class OffsetFeatures(core.Base):
    """
    Collection that provides access to all of the existing Offset features in a component
    and supports the ability to create new Offset features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> OffsetFeatures:
        return OffsetFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> OffsetFeature:
        return None
    def __iter__(self) -> Iterator[OffsetFeature]:
        return None
    def item(self, index: int) -> OffsetFeature:
        """
        Function that returns the specified offset feature 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 OffsetFeature()
    def createInput(self, entities: core.ObjectCollection, distance: core.ValueInput, operation: FeatureOperations, isChainSelection: bool = True) -> OffsetFeatureInput:
        """
        Creates an OffsetFeatureInput object. Use properties and methods on this object
        to define the offset feature you want to create and then use the Add method, passing in
        the OffsetFeatureInput object to create the feature.
        entities : An ObjectCollection containing the BRepFace objects to offset. Additional faces may be
        automatically used depending on the value of the isChainSelection argument.
        Input faces need not be from the same body.
        distance : ValueInput object that defines the offset distance. A positive value is in the positive
        normal direction of the face being offset.
        operation : The feature operation to perform. 'NewBodyFeatureOperation' and 'NewComponentFeatureOperation' are the
        options supported.
        isChainSelection : A boolean value for setting whether or not faces that are tangentially connected to
        the input faces (if any) will be included in the offset. The default value is true.
        Returns the newly created OffsetFeatureInput object or null if the creation failed.
        """
        return OffsetFeatureInput()
    def add(self, input: OffsetFeatureInput) -> OffsetFeature:
        """
        Creates a new offset feature.
        input : A FeatureInput object that defines the desired offset feature. Use the createInput
        method to create a new OffsetFeatureInput object and then use methods on it
        (the OffsetFeatureInput object) to define the offset feature.
        Returns the newly created OffsetFeature object or null if the creation failed.
        """
        return OffsetFeature()
    def itemByName(self, name: str) -> OffsetFeature:
        """
        Function that returns the specified offset feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return OffsetFeature()
    @property
    def count(self) -> int:
        """
        The number of Offset features in the collection.
        """
        return int()

class Parameter(core.Base):
    """
    The base class Parameter object that can represent model or user parameters.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Parameter:
        return Parameter()
    @property
    def value(self) -> float:
        """
        Gets and sets the real value (a double) of the parameter in database units.
        Setting this property will set/reset the expression value for this parameter.
        
        This property is only valid for numeric parameters and will fail for text parameters.
        You can determine the value type of the parameter by using the valueType property.
        Use the textValue property to get and set the value of text parameters.
        """
        return float()
    @value.setter
    def value(self, value: float):
        """
        Gets and sets the real value (a double) of the parameter in database units.
        Setting this property will set/reset the expression value for this parameter.
        
        This property is only valid for numeric parameters and will fail for text parameters.
        You can determine the value type of the parameter by using the valueType property.
        Use the textValue property to get and set the value of text parameters.
        """
        pass
    @property
    def expression(self) -> str:
        """
        Gets and sets the expression used to calculate the value of the parameter. This is the
        equivalent of the "Expression" column in the Parameters dialog. Numeric parameters can
        be defined by a simple expression like "6.25", which will be interpreted based on whatever the
        default units are for the document. For example, if the units are set to millimeters,
        the value will be 6.25 mm; if the units are inches, it will be 6.25 inches. The expression
        can also contain the units so "6.25 in" will always be evaluated as inches regardless
        of the document units.
        
        An expression can also contain references to other parameters and use equations.
        For example, the expression "Length / 2" is valid for a numeric parameter as long as
        there is a numeric parameter named "Length". Expressions can also be used for text parameters,
        such as concatenating two other text parameters. For example, if there are two existing text
        parameters named text1 and text2, the expression for another text parameter can be "text1 + text2".
        More complex equations can also be used with text parameters like
        "if (Length < 20 mm; 'Short'; 'Long')" where "Length" is a numeric parameter.
        The resulting string can be obtained using the textValue property.
        """
        return str()
    @expression.setter
    def expression(self, value: str):
        """
        Gets and sets the expression used to calculate the value of the parameter. This is the
        equivalent of the "Expression" column in the Parameters dialog. Numeric parameters can
        be defined by a simple expression like "6.25", which will be interpreted based on whatever the
        default units are for the document. For example, if the units are set to millimeters,
        the value will be 6.25 mm; if the units are inches, it will be 6.25 inches. The expression
        can also contain the units so "6.25 in" will always be evaluated as inches regardless
        of the document units.
        
        An expression can also contain references to other parameters and use equations.
        For example, the expression "Length / 2" is valid for a numeric parameter as long as
        there is a numeric parameter named "Length". Expressions can also be used for text parameters,
        such as concatenating two other text parameters. For example, if there are two existing text
        parameters named text1 and text2, the expression for another text parameter can be "text1 + text2".
        More complex equations can also be used with text parameters like
        "if (Length < 20 mm; 'Short'; 'Long')" where "Length" is a numeric parameter.
        The resulting string can be obtained using the textValue property.
        """
        pass
    @property
    def name(self) -> str:
        """
        Gets and sets the name of the parameter. Setting the name can fail if the name
        is not unique with respect to all other parameters in the design.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name of the parameter. Setting the name can fail if the name
        is not unique with respect to all other parameters in the design.
        """
        pass
    @property
    def unit(self) -> str:
        """
        The unit type associated with this parameter. An empty string is returned for parameters
        that don't have a unit type.
        """
        return str()
    @property
    def comment(self) -> str:
        """
        The comment associated with this parameter.
        """
        return str()
    @comment.setter
    def comment(self, value: str):
        """
        The comment associated with this parameter.
        """
        pass
    @property
    def isFavorite(self) -> bool:
        """
        Gets and sets whether this parameter is included in the Favorites list in the
        parameters dialog
        """
        return bool()
    @isFavorite.setter
    def isFavorite(self, value: bool):
        """
        Gets and sets whether this parameter is included in the Favorites list in the
        parameters dialog
        """
        pass
    @property
    def dependentParameters(self) -> ParameterList:
        """
        Returns a list of parameters that are dependent on this parameter as a result
        of this parameter being referenced in their equation.
        """
        return ParameterList()
    @property
    def isDeletable(self) -> bool:
        """
        Gets if this parameter can be deleted. Parameters that have dependents cannot
        be deleted, and model parameters typically cannot be deleted. However,
        there is the possibility in uncommon workflows where a model parameter no longer
        has any dependents, and it was not automatically deleted. In this case, this
        property will return true, and the deleteMe method can delete the parameter.
        """
        return bool()
    @property
    def attributes(self) -> core.Attributes:
        """
        Returns the collection of attributes associated with this face.
        """
        return core.Attributes()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the Parameter object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same parameter.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        """
        return str()
    @property
    def dependencyParameters(self) -> ParameterList:
        """
        Returns a list of parameters that this parameter is dependent on.
        """
        return ParameterList()
    @property
    def textValue(self) -> str:
        """
        Gets and sets the value of the parameter when it is a text parameter. This can be
        determined by checking the valueType property. Setting this value
        will cause the current expression to be overwritten. If the parameter
        is not a text parameter, the value of this property should be ignored and setting will fail.
        """
        return str()
    @textValue.setter
    def textValue(self, value: str):
        """
        Gets and sets the value of the parameter when it is a text parameter. This can be
        determined by checking the valueType property. Setting this value
        will cause the current expression to be overwritten. If the parameter
        is not a text parameter, the value of this property should be ignored and setting will fail.
        """
        pass
    @property
    def valueType(self) -> ParameterValueTypes:
        """
        Returns the type of value this parameter is. For a numeric parameter, you can
        get the value using the value property. For a text parameter, you can get the
        value using the textValue property.
        """
        return ParameterValueTypes()

class ParameterList(core.Base):
    """
    Transient object used to pass a set of parameters.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ParameterList:
        return ParameterList()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> Parameter:
        return None
    def __iter__(self) -> Iterator[Parameter]:
        return None
    @staticmethod
    def create() -> ParameterList:
        """
        Creates a parameter list that the client can use for various purposes.
        Use ParameterList.Add to add parameters to the list after creating it.
        Returns a ParameterList
        """
        return ParameterList()
    def item(self, index: int) -> Parameter:
        """
        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 Parameter()
    def itemByName(self, name: str) -> Parameter:
        """
        Returns the specified parameter using the name of the parameter
        as it is displayed in the parameters dialog.
        name : The name of the parameter as it is displayed in the parameters dialog.
        Returns the specified item or null if an invalid name was specified.
        """
        return Parameter()
    def add(self, parameter: Parameter) -> bool:
        """
        Adds a parameter to the list. This does not create a
        new parameter, it adds an existing parameter to the list.
        Note that duplicates can exist in the list.
        parameter : The existing parameter to add to the list
        Returns true if successful. This method will fail if the list is read-only
        """
        return bool()
    def removeByIndex(self, index: int) -> bool:
        """
        Method that removes a parameter from the list using the index of the item
        in the list
        Will fail if the list is read only.
        index : The index of the parameter to be removed from the list
        Returns true if successful. This method will fail if the list is read-only
        """
        return bool()
    def removeByItem(self, item: Parameter) -> bool:
        """
        Method that removes a parameter from the list by specifying the parameter (item)
        to remove
        item : The parameter item to remove from the list
        Returns true if successful. This method will fail if the list is read-only
        """
        return bool()
    def find(self, parameter: Parameter, startIndex: int = 0) -> int:
        """
        Finds the specified parameter in the list. The search can be started at a specified
        index rather than from the beginning of the list.
        If not found, -1 is returned.
        parameter : The parameter to find
        startIndex : the index in the list to start the search from
        Returns the index of the parameter found in the list.
        """
        return int()
    def contains(self, parameter: Parameter) -> bool:
        """
        Indicates whether or not ParameterList collection contains a specified parameter
        parameter : The parameter to look for in the list
        Returns true if list contains the specified parameter
        """
        return bool()
    @property
    def count(self) -> int:
        """
        Returns the number of parameters in the collection.
        """
        return int()
    @property
    def isReadOnly(self) -> bool:
        """
        Indicates if the list is read-only
        Some lists returned by API calls (instead of lists created by the
        user) are read only. Items cannot be added or remove from such a list.
        """
        return bool()

class PatchFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a patch feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PatchFeatureInput:
        return PatchFeatureInput()
    def setContinuity(self, continuity: list[int], weight: list[float], isContinuityDirectionFlipped: list[bool]) -> bool:
        """
        Sets the continuity to use for each edge in the boundary. The arrays for the arguments correspond
        to B-Rep edges in the boundary. You can use the getContinuity method to get the list of edges to
        know their order. This order applies to the arrays provided for the arguments.
        continuity : An array whose size of the number of B-Rep edges in the boundary. You can use the getContinuity
        method to get the list of edges, so you know the number and order of the edges. The continuity array defines the
        type of continuity to apply to the edge at the same index. The values are obtained from the SurfaceContinuityTypes
        enum and passed in as an integer.
        weight : An array whose size is the number of B-Rep edges in the boundary. You can use the getContinuity
        method to get the list of edges, so you know the number and order of the edges. The weight array defines the
        weight to apply to the edge at the same index. If the continuity of an edge is ConnectedSurfaceContinuityType,
        the weight value is ignored.
        isContinuityDirectionFlipped : An array whose size is the number of B-Rep edges in the boundary. You can use the getContinuity
        method to get the list of edges, so you know the number and order of the edges. The isContinuityDirectionFlipped
        array defines which of the two faces the edge connects to and is used in computing the continuity direction. If the
        continuity is ConnectedSurfaceContinuityType, or the edge is an open edge and only connected to a single face,
        the value is ignored.
        
        If false, the face associated with the first co-edge returned by the edge is used.
        Returns true if successful.
        """
        return bool()
    def getContinuity(self) -> tuple[bool, list[BRepEdge], list[int], list[float], list[bool]]:
        """
        Gets the continuity used for each edge in the boundary.
        edges : Output array containing all of the BRepEdge objects in the boundary.
        continuity : Output array the same size as the edges array that defines the continuity
        to apply to the edge in the same index in the edges array. The values are obtained
        from the SurfaceContinuityTypes enum and passed in as an integers.
        weight : Output array the same size as the edges array that defines the weight applied
        to the edge in the same index in the edges array. If the continuity
        of an edge is ConnectedSurfaceContinuityType, the weight value should be ignored.
        isContinuityDirectionFlipped : Output array the same size as the edges array that defines which of the two faces the
        edge connects to is used in computing the continuity direction. If the continuity is
        ConnectedSurfaceContinuityType or the edge is an open edge and only connected to a
        single face, the value should be ignored.
        
        If false, the face associated with the first co-edge returned by the edge is used.
        Returns true if successful.
        """
        return (bool(), [BRepEdge()], [int()], [float()], [bool()])
    @property
    def boundaryCurve(self) -> core.Base:
        """
        Gets and sets the input geometry that will be used to define the boundary. This can be a sketch profile,
        a single sketch curve, a single B-Rep edge, an ObjectCollection, or a Path object.
        
        If a single open sketch curve or B-Rep edge is input, Fusion will automatically find connected sketch curves
        or B-Rep edges to define a closed loop.
        
        If an ObjectCollection is used as input, it must be a set of curves that define a closed shape.
        
        If a Path is used as input, it must define a closed shape.
        """
        return core.Base()
    @boundaryCurve.setter
    def boundaryCurve(self, value: core.Base):
        """
        Gets and sets the input geometry that will be used to define the boundary. This can be a sketch profile,
        a single sketch curve, a single B-Rep edge, an ObjectCollection, or a Path object.
        
        If a single open sketch curve or B-Rep edge is input, Fusion will automatically find connected sketch curves
        or B-Rep edges to define a closed loop.
        
        If an ObjectCollection is used as input, it must be a set of curves that define a closed shape.
        
        If a Path is used as input, it must define a closed shape.
        """
        pass
    @property
    def operation(self) -> FeatureOperations:
        """
        Gets and sets the type of operation performed by the patch feature. Only 'NewBodyFeatureOperation' and 'NewComponentFeatureOperation' are
        valid operations for patch features.
        """
        return FeatureOperations()
    @operation.setter
    def operation(self, value: FeatureOperations):
        """
        Gets and sets the type of operation performed by the patch feature. Only 'NewBodyFeatureOperation' and 'NewComponentFeatureOperation' are
        valid operations for patch features.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass
    @property
    def creationOccurrence(self) -> Occurrence:
        """
        For geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the Patch feature is created based on geometry (e.g., a profile, edges, faces)
        in another component AND (the Patch feature) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI
        """
        return Occurrence()
    @creationOccurrence.setter
    def creationOccurrence(self, value: Occurrence):
        """
        For geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the Patch feature is created based on geometry (e.g., a profile, edges, faces)
        in another component AND (the Patch feature) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI
        """
        pass
    @property
    def interiorRailsAndPoints(self) -> core.ObjectCollection:
        """
        Gets and sets any interior curves or points the patch should fit
        through. Valid entities include object collections of connected curves, paths, sketch curves,
        sketch points, B-Rep edges, and construction points.
        
        When getting this property, the returned ObjectCollection can contain individual edges, sketch curves,
        sketch points, construction points, vertices, and ObjectCollection objects that represent a group
        of the curves and points listed above.
        
        Can be set to null to remove any interior rails and points from the patch.
        """
        return core.ObjectCollection()
    @interiorRailsAndPoints.setter
    def interiorRailsAndPoints(self, value: core.ObjectCollection):
        """
        Gets and sets any interior curves or points the patch should fit
        through. Valid entities include object collections of connected curves, paths, sketch curves,
        sketch points, B-Rep edges, and construction points.
        
        When getting this property, the returned ObjectCollection can contain individual edges, sketch curves,
        sketch points, construction points, vertices, and ObjectCollection objects that represent a group
        of the curves and points listed above.
        
        Can be set to null to remove any interior rails and points from the patch.
        """
        pass
    @property
    def isGroupEdges(self) -> bool:
        """
        Gets and sets if the edges in the boundary curve are treated as a group,
        and they all use the same continuity. If this property is True (which is the default),
        the continuity property controls the continuity for all edges. If
        this property is false; the continuity is set for each edge using the
        setContinuity method.
        
        When this property is set to true, the continuity and weight of the first edge
        will be used for all edges. When set to false, each edge will initially have
        the same continuity and weight. This is typically set to false as a side-effect
        of calling the setContinuity method.
        """
        return bool()
    @isGroupEdges.setter
    def isGroupEdges(self, value: bool):
        """
        Gets and sets if the edges in the boundary curve are treated as a group,
        and they all use the same continuity. If this property is True (which is the default),
        the continuity property controls the continuity for all edges. If
        this property is false; the continuity is set for each edge using the
        setContinuity method.
        
        When this property is set to true, the continuity and weight of the first edge
        will be used for all edges. When set to false, each edge will initially have
        the same continuity and weight. This is typically set to false as a side-effect
        of calling the setContinuity method.
        """
        pass
    @property
    def groupContinuity(self) -> SurfaceContinuityTypes:
        """
        Gets and sets the type of surface continuity to use for all edges when the isGroupEdges property is true. The continuity
        is used to determine how the patch connects to any B-Rep edges in the boundary. It is ignored for any sketch curves in the
        boundary. The property defaults to ConnectedSurfaceContinuityType. The value of this property is ignored if the isGroupEdges property is false.
        """
        return SurfaceContinuityTypes()
    @groupContinuity.setter
    def groupContinuity(self, value: SurfaceContinuityTypes):
        """
        Gets and sets the type of surface continuity to use for all edges when the isGroupEdges property is true. The continuity
        is used to determine how the patch connects to any B-Rep edges in the boundary. It is ignored for any sketch curves in the
        boundary. The property defaults to ConnectedSurfaceContinuityType. The value of this property is ignored if the isGroupEdges property is false.
        """
        pass
    @property
    def groupWeight(self) -> float:
        """
        Gets and sets the weight to use for all edges when the isGroupEdges property is true. It is ignored for any sketch curves
        in the boundary. The property defaults to 0.5. The value of this property is ignored if the isGroupEdges property is false.
        """
        return float()
    @groupWeight.setter
    def groupWeight(self, value: float):
        """
        Gets and sets the weight to use for all edges when the isGroupEdges property is true. It is ignored for any sketch curves
        in the boundary. The property defaults to 0.5. The value of this property is ignored if the isGroupEdges property is false.
        """
        pass
    @property
    def groupIsContinuityDirectionFlipped(self) -> bool:
        """
        Gets and sets the continuity direction for all edges when the isGroupEdges property is true. It is ignored for any sketch curves
        in the boundary. The property defaults to false. The value of this property is ignored if the isGroupEdges property is false.
        """
        return bool()
    @groupIsContinuityDirectionFlipped.setter
    def groupIsContinuityDirectionFlipped(self, value: bool):
        """
        Gets and sets the continuity direction for all edges when the isGroupEdges property is true. It is ignored for any sketch curves
        in the boundary. The property defaults to false. The value of this property is ignored if the isGroupEdges property is false.
        """
        pass

class PatchFeatures(core.Base):
    """
    Collection that provides access to all of the existing Patch features in a component
    and supports the ability to create new Patch features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PatchFeatures:
        return PatchFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> PatchFeature:
        return None
    def __iter__(self) -> Iterator[PatchFeature]:
        return None
    def item(self, index: int) -> PatchFeature:
        """
        Function that returns the specified patch feature 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 PatchFeature()
    def itemByName(self, name: str) -> PatchFeature:
        """
        Function that returns the specified patch feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return PatchFeature()
    def createInput(self, boundaryCurve: core.Base, operation: FeatureOperations) -> PatchFeatureInput:
        """
        Creates a PatchFeatureInput object. Use properties and methods on the returned PatchFeatureInput
        object to set other settings. The PatchFeatureInput object is used as input to the add method
        to create the patch feature.
        boundaryCurve : Defines the input geometry that will be used to define the boundary. This can be a sketch profile,
        a single sketch curve, a single B-Rep edge, an ObjectCollection, or a Path object.
        
        If a single sketch curve or B-Rep edge is an input that is not closed; Fusion will automatically find connected sketch curves
        or B-Rep edges to define a closed loop.
        
        If an ObjectCollection is an input, it must be a set of curves that define a closed shape.
        
        If a Path is an input, it must define a closed shape.
        operation : The feature operation to perform. Only 'NewBodyFeatureOperation' and 'NewComponentFeatureOperation' are
        valid operations for patch features.
        Returns the newly created PatchFeatureInput object or null if the creation fails.
        """
        return PatchFeatureInput()
    def add(self, input: PatchFeatureInput) -> PatchFeature:
        """
        Creates a new patch feature.
        input : A PatchFeatureInput object that defines the desired patch feature. Use the createInput
        method to create a new PatchFeatureInput object and then use methods on it
        (the PatchFeatureInput object) to define the patch feature.
        Returns the newly created PatchFeature object or null if the creation failed.
        """
        return PatchFeature()
    @property
    def count(self) -> int:
        """
        The number of Patch features in the collection.
        """
        return int()

class Path(core.Base):
    """
    The Path object represents a single set of connected curves. The order of the objects within the collection is the same as the connection order of the entities.
    When using a Path to create a feature, the Path serves as a way to pass in the set of sketch entities and edges. When
    getting the Path of an existing feature it returns the actual path used to define the feature geometry. In cases like a
    sweep feature, this can result in using portions of the original input sketch curves or edges and the returned path
    will provide these "partial" curves as the PathEntity objects.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Path:
        return Path()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> PathEntity:
        return None
    def __iter__(self) -> Iterator[PathEntity]:
        return None
    @staticmethod
    def create(curves: core.Base, chainOptions: ChainedCurveOptions) -> Path:
        """
        Creates a new Path that can be used as input to various features. For example, it is used
        to create an open set of curves to create surfaces using extrude, revolve, and sweep.
        It is also used to create the path for a sweep and sections and profiles and rails for lofts. And
        it is used to define the boundary of a patch feature.
        
        Although the creation of a path is very flexible as far as the types of entities and whether they
        are planar or not, each of the features have specific requirements and the path must meet those
        requirements. For example, a path for an extrusion can only contain sketch curves and must be planar,
        whereas the path for a sweep can contain a mix of sketch curves and edges and can be in three dimensions.
        curves : A SketchCurve, BRepEdge, or an ObjectCollection containing multiple sketch entities and/or BRepEdges. If a single sketch curve
        or BRepEdge is input the chainCurves argument is used to determine if connected curves or edges (they do not need to be tangent)
        should be automatically found. Searching for connected curves is only performed within the same sketch or open edges on the same
        body. If multiple curves are provided the chainCurves argument is treated as false so only the specified input curves are
        used. The input curves need to geometrically connect for a path to be created.
        chainOptions : If a single SketchCurve or BRepEdge is input, this argument is used to specify the rules in how chained entities should be found. If
        an ObjectCollection is input, this argument is ignored.
        Returns the new Path object or null in the case of a failure.
        """
        return Path()
    def item(self, index: int) -> PathEntity:
        """
        Function that returns the specified PathEntity 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 PathEntity()
    def createForAssemblyContext(self, occurrence: Occurrence) -> Path:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : 
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return Path()
    def addCurves(self, curves: core.Base, chainOptions: ChainedCurveOptions) -> bool:
        """
        Adds additional curves to the existing path. This can be useful when creating a complex path for a sweep and you
        want to include sets of curves from multiple sketches and edges from multiple bodies.
        curves : A SketchCurve, BRepEdge, or an ObjectCollection containing multiple sketch entities and/or BRepEdges. If a single sketch curve
        or BRepEdge is input the chainCurves argument is used to determine if connected curves or edges (they do not need to be tangent)
        should be automatically found. Searching for connected curves is only performed within the same sketch or open edges on the same
        body. If multiple curves are provided the chainCurves argument is treated as false so only the specified input curves are
        used. The input curves need to geometrically connect for a path to be created.
        chainOptions : If a single SketchCurve or BRepEdge is input, this argument is used to specify the rules in how chained entities should be found. If
        an ObjectCollection is input, this argument is ignored.
        Returns a bool indicating if the process was successful or not.
        """
        return bool()
    @property
    def count(self) -> int:
        """
        The number of curves in the path.
        """
        return int()
    @property
    def isClosed(self) -> bool:
        """
        Indicates if the path is closed or not. Returns True in the case of a closed path.
        """
        return bool()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        This property is not supported for the Path object.
        """
        return Occurrence()
    @property
    def nativeObject(self) -> Path:
        """
        This property is not supported for the Path object.
        """
        return Path()

class PathEntity(core.Base):
    """
    The PathEntity object represents a curve within a path
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PathEntity:
        return PathEntity()
    def createForAssemblyContext(self, occurrence: Occurrence) -> PathEntity:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : 
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return PathEntity()
    @property
    def curve(self) -> core.Curve3D:
        """
        Property that returns the geometry of the entity.
        This is different from the original path curve if the true start point is not the same as the start point of the original path curve.
        """
        return core.Curve3D()
    @property
    def curveType(self) -> core.Curve3DTypes:
        """
        Property that returns the type of the curve referenced by the path entity. This property allows you to determine what type of object will be returned by the Curve property.
        """
        return core.Curve3DTypes()
    @property
    def entity(self) -> core.Base:
        """
        Property that gets the sketch curve or edge this entity was derived from.
        """
        return core.Base()
    @property
    def parentPath(self) -> Path:
        """
        Property that returns the parent Path of the entity.
        """
        return Path()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        This property is not supported for a PathEntity object.
        """
        return Occurrence()
    @property
    def nativeObject(self) -> PathEntity:
        """
        This property is not supported for a PathEntity object.
        """
        return PathEntity()
    @property
    def isOpposedToEntity(self) -> bool:
        """
        Indicates if the orientation of this PathEntity is in the same direction or opposed to the natural direction
        of the SketchCurve or BRepEdge object it is derived from.
        """
        return bool()

class PathPatternFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a path pattern
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PathPatternFeatureInput:
        return PathPatternFeatureInput()
    @property
    def inputEntities(self) -> core.ObjectCollection:
        """
        Gets and sets the input entities. The collection can contain BRepFace, PartFeature, BRepBody, or Occurrence
        objects. All of the entities provided must be the same type. For example, it must contain only bodies and can't
        contain both bodies and faces.
        
        You can also pattern ConstructionPoint, ConstructionAxis, and ConstructionPlane objects. When patterning any
        construction goemetry, only one entity can be patterned at a time, so the ObjectCollection must contain a
        single item.
        """
        return core.ObjectCollection()
    @inputEntities.setter
    def inputEntities(self, value: core.ObjectCollection):
        """
        Gets and sets the input entities. The collection can contain BRepFace, PartFeature, BRepBody, or Occurrence
        objects. All of the entities provided must be the same type. For example, it must contain only bodies and can't
        contain both bodies and faces.
        
        You can also pattern ConstructionPoint, ConstructionAxis, and ConstructionPlane objects. When patterning any
        construction goemetry, only one entity can be patterned at a time, so the ObjectCollection must contain a
        single item.
        """
        pass
    @property
    def path(self) -> Path:
        """
        Gets and sets the path to create the pattern on path.
        """
        return Path()
    @path.setter
    def path(self, value: Path):
        """
        Gets and sets the path to create the pattern on path.
        """
        pass
    @property
    def quantity(self) -> core.ValueInput:
        """
        Gets and sets quantity of the elements.
        """
        return core.ValueInput()
    @quantity.setter
    def quantity(self, value: core.ValueInput):
        """
        Gets and sets quantity of the elements.
        """
        pass
    @property
    def distance(self) -> core.ValueInput:
        """
        Gets and sets the distance.
        """
        return core.ValueInput()
    @distance.setter
    def distance(self, value: core.ValueInput):
        """
        Gets and sets the distance.
        """
        pass
    @property
    def startPoint(self) -> float:
        """
        Gets and sets the start point on the path to count the distance.
        It's between 0 and 1. 0 means start point of the path, 1 means end point of the path.
        """
        return float()
    @startPoint.setter
    def startPoint(self, value: float):
        """
        Gets and sets the start point on the path to count the distance.
        It's between 0 and 1. 0 means start point of the path, 1 means end point of the path.
        """
        pass
    @property
    def isFlipDirection(self) -> bool:
        """
        Gets and sets if flip the direction from start point.
        """
        return bool()
    @isFlipDirection.setter
    def isFlipDirection(self, value: bool):
        """
        Gets and sets if flip the direction from start point.
        """
        pass
    @property
    def patternDistanceType(self) -> PatternDistanceType:
        """
        Gets and sets how the distance between elements is computed.
        """
        return PatternDistanceType()
    @patternDistanceType.setter
    def patternDistanceType(self, value: PatternDistanceType):
        """
        Gets and sets how the distance between elements is computed.
        """
        pass
    @property
    def isSymmetric(self) -> bool:
        """
        Gets and sets if the pattern is in one direction or symmetric.
        """
        return bool()
    @isSymmetric.setter
    def isSymmetric(self, value: bool):
        """
        Gets and sets if the pattern is in one direction or symmetric.
        """
        pass
    @property
    def isOrientationAlongPath(self) -> bool:
        """
        Gets and sets if the orientation is along path.
        If false, the orientation is identical.
        """
        return bool()
    @isOrientationAlongPath.setter
    def isOrientationAlongPath(self, value: bool):
        """
        Gets and sets if the orientation is along path.
        If false, the orientation is identical.
        """
        pass
    @property
    def patternComputeOption(self) -> PatternComputeOptions:
        """
        Gets and sets the compute option when patterning features. The default value for this is AdjustPatternCompute.
        This property only applies when patterning features and is ignored in the direct modeling environment.
        """
        return PatternComputeOptions()
    @patternComputeOption.setter
    def patternComputeOption(self, value: PatternComputeOptions):
        """
        Gets and sets the compute option when patterning features. The default value for this is AdjustPatternCompute.
        This property only applies when patterning features and is ignored in the direct modeling environment.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class PathPatternFeatures(core.Base):
    """
    Collection that provides access to all of the existing path pattern features in a component
    and supports the ability to create new path pattern features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PathPatternFeatures:
        return PathPatternFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> PathPatternFeature:
        return None
    def __iter__(self) -> Iterator[PathPatternFeature]:
        return None
    def item(self, index: int) -> PathPatternFeature:
        """
        Function that returns the specified path pattern feature 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 PathPatternFeature()
    def createInput(self, inputEntities: core.ObjectCollection, path: Path, quantity: core.ValueInput, distance: core.ValueInput, patternDistanceType: PatternDistanceType) -> PathPatternFeatureInput:
        """
        Creates a PathPatternFeatureInput object. Use properties and methods on this object
        to define the path pattern you want to create and then use the Add method, passing in
        the PathPatternFeatureInput object.
        inputEntities : An ObjectCollection of the entities to pattern. The collection can contain BRepFace, PartFeature, BRepBody, or Occurrence
        objects. All of the entities provided must be the same type. For example, it must contain only bodies and can't
        contain both bodies and faces.
        
        You can also pattern ConstructionPoint, ConstructionAxis, and ConstructionPlane objects. When patterning any
        construction goemetry, only one entity can be patterned at a time, so the ObjectCollection must contain a
        single item.
        path : The Path object that represents a single set of connected curves along which to drive the pattern.
        quantity : Specifies the number of instances in the first direction.
        distance : Specifies the distance. How this value is used depends on the value of the PatternDistanceType property. A
        negative value can be used to change the direction.
        If the value is ExtentPatternDistanceType then it defines the total distance of the pattern.
        If the value is SpacingPatternDistanceType then it defines the distance between each element.
        patternDistanceType : Specifies how the distance between elements is computed.
        Returns the newly created PathPatternFeatureInput object or null if the creation failed.
        """
        return PathPatternFeatureInput()
    def add(self, input: PathPatternFeatureInput) -> PathPatternFeature:
        """
        Creates a new path pattern feature.
        input : A PathPatternFeatureInput object that defines the desired path pattern. Use the createInput
        method to create a new PathPatternFeatureInput object and then use methods on it
        (the PathPatternFeatureInput object) to define the path pattern.
        Returns the newly created PathPatternFeature object or null if the creation failed.
        """
        return PathPatternFeature()
    def itemByName(self, name: str) -> PathPatternFeature:
        """
        Function that returns the specified path pattern feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return PathPatternFeature()
    @property
    def count(self) -> int:
        """
        The number of path pattern features in the collection.
        """
        return int()

class PatternElement(core.Base):
    """
    This class defines the properties that pertain to the pattern element.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PatternElement:
        return PatternElement()
    @property
    def faces(self) -> list[BRepFace]:
        """
        Gets the faces generated as a result of this particular element.
        """
        return [BRepFace()]
    @property
    def id(self) -> int:
        """
        Gets the id of this element within the pattern.
        """
        return int()
    @property
    def parentFeature(self) -> Feature:
        """
        Gets the feature pattern this element is a member of.
        """
        return Feature()
    @property
    def isSuppressed(self) -> bool:
        """
        Gets and sets whether the element is suppressed or not. A value of True indicates it is suppressed
        """
        return bool()
    @isSuppressed.setter
    def isSuppressed(self, value: bool):
        """
        Gets and sets whether the element is suppressed or not. A value of True indicates it is suppressed
        """
        pass
    @property
    def transform(self) -> core.Matrix3D:
        """
        Get the transform that describes this elements relative position to the parent object(s).
        The transform returned for the first element in a pattern will be an identity matrix.
        """
        return core.Matrix3D()
    @property
    def name(self) -> str:
        """
        Get the name of the pattern element.
        """
        return str()
    @property
    def occurrences(self) -> list[Occurrence]:
        """
        If the patternEntityType property of the parent feature returns OccurrencesPatternType
        then this property will return the occurrences associated with this particular pattern
        element.
        """
        return [Occurrence()]

class PatternElements(core.Base):
    """
    Collection that provides access to pattern elements of mirror and pattern features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PatternElements:
        return PatternElements()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> PatternElement:
        return None
    def __iter__(self) -> Iterator[PatternElement]:
        return None
    def item(self, index: int) -> PatternElement:
        """
        Function that returns the specified pattern element 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 PatternElement()
    @property
    def count(self) -> int:
        """
        The number of pattern elements in the collection.
        """
        return int()

class PhysicalProperties(core.Base):
    """
    The physical properties of a Component, Occurrence or BRepBody
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PhysicalProperties:
        return PhysicalProperties()
    def getPrincipalAxes(self) -> tuple[bool, core.Vector3D, core.Vector3D, core.Vector3D]:
        """
        Method that returns the principal axes.
        xAxis : The output Vector3D object that indicates the direction of the x axis.
        yAxis : The output Vector3D object that indicates the direction of the y axis.
        zAxis : The output Vector3D object that indicates the direction of the z axis.
        Returns true if successful
        """
        return (bool(), core.Vector3D(), core.Vector3D(), core.Vector3D())
    def getPrincipalMomentsOfInertia(self) -> tuple[bool, float, float, float]:
        """
        Method that returns the moments of inertia about the principal axes. Unit for returned values is kg*cm^2.
        i1 : Output Double that specifies the first moment of inertia.
        i2 : Output Double that specifies the second moment of inertia.
        i3 : Output Double that specifies the third moment of inertia.
        Returns true if successful
        """
        return (bool(), float(), float(), float())
    def getRadiusOfGyration(self) -> tuple[bool, float, float, float]:
        """
        Method that returns the radius of gyration about the principal axes. Unit for returned values is cm.
        kx : Output Double that returns the X partial radius of gyration.
        ky : Output Double that returns the Y partial radius of gyration.
        kz : Output Double that returns the Z partial radius of gyration.
        Returns true if successful
        """
        return (bool(), float(), float(), float())
    def getRotationToPrincipal(self) -> tuple[bool, float, float, float]:
        """
        Gets the rotation from the world coordinate system of the target to the principal coordinate system.
        rx : 
        ry : 
        rz : 
        Returns true if successful
        """
        return (bool(), float(), float(), float())
    def getXYZMomentsOfInertia(self) -> tuple[bool, float, float, float, float, float, float]:
        """
        Method that gets the moment of inertia about the world coordinate system.
        Unit for returned values is kg*cm^2.
        xx : Output Double that returns the XX partial moment.
        yy : Output Double that returns the YY partial moment.
        zz : Output Double that returns the ZZ partial moment.
        xy : Output Double that returns the XY partial moment.
        yz : Output Double that returns the YZ partial moment.
        xz : Output Double that returns the XZ partial moment.
        Returns true if successful
        """
        return (bool(), float(), float(), float(), float(), float(), float())
    @property
    def area(self) -> float:
        """
        Gets the area in square centimeters.
        """
        return float()
    @property
    def density(self) -> float:
        """
        Gets the density in kilograms per cubic centimeter.
        """
        return float()
    @property
    def mass(self) -> float:
        """
        Gets the mass in kilograms.
        """
        return float()
    @property
    def volume(self) -> float:
        """
        Gets the volume in the cubic centimeters.
        """
        return float()
    @property
    def accuracy(self) -> CalculationAccuracy:
        """
        Returns the accuracy that was used for the calculation.
        """
        return CalculationAccuracy()
    @property
    def centerOfMass(self) -> core.Point3D:
        """
        Returns the center of mass position
        """
        return core.Point3D()

class PipeFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a Pipe
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PipeFeatureInput:
        return PipeFeatureInput()
    @property
    def operation(self) -> FeatureOperations:
        """
        Gets and sets the type of operation performed by the Pipe.
        """
        return FeatureOperations()
    @operation.setter
    def operation(self, value: FeatureOperations):
        """
        Gets and sets the type of operation performed by the Pipe.
        """
        pass
    @property
    def path(self) -> Path:
        """
        Gets and sets the path to create the Pipe.
        """
        return Path()
    @path.setter
    def path(self, value: Path):
        """
        Gets and sets the path to create the Pipe.
        """
        pass
    @property
    def sectionType(self) -> PipeSectionTypes:
        """
        Gets and sets the section type of the Pipe.
        The type can be: Circular, Square, Triangular.
        """
        return PipeSectionTypes()
    @sectionType.setter
    def sectionType(self, value: PipeSectionTypes):
        """
        Gets and sets the section type of the Pipe.
        The type can be: Circular, Square, Triangular.
        """
        pass
    @property
    def sectionSize(self) -> core.ValueInput:
        """
        Gets and sets the section size of the Pipe.
        """
        return core.ValueInput()
    @sectionSize.setter
    def sectionSize(self, value: core.ValueInput):
        """
        Gets and sets the section size of the Pipe.
        """
        pass
    @property
    def isHollow(self) -> bool:
        """
        Specifies if the Pipe is hollow or not.
        
        Setting this to true will default the sectionThickness to 0.1 cm.
        """
        return bool()
    @isHollow.setter
    def isHollow(self, value: bool):
        """
        Specifies if the Pipe is hollow or not.
        
        Setting this to true will default the sectionThickness to 0.1 cm.
        """
        pass
    @property
    def sectionThickness(self) -> core.ValueInput:
        """
        Gets and sets the section thickness of the Pipe.
        
        Setting this will also set the isHollow setting to true.
        """
        return core.ValueInput()
    @sectionThickness.setter
    def sectionThickness(self, value: core.ValueInput):
        """
        Gets and sets the section thickness of the Pipe.
        
        Setting this will also set the isHollow setting to true.
        """
        pass
    @property
    def creationOccurrence(self) -> Occurrence:
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the Pipe is created based on geometry (e.g. a path)
        in another component AND (the Pipe) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI
        """
        return Occurrence()
    @creationOccurrence.setter
    def creationOccurrence(self, value: Occurrence):
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the Pipe is created based on geometry (e.g. a path)
        in another component AND (the Pipe) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass
    @property
    def distanceOne(self) -> core.ValueInput:
        """
        Gets and sets the distance for the pipe created while following the path given as input, in the same order.
        This value defaults to 1.0 if not set.
        
        If the path is open, setting this to a value between 0.0 and 1.0 decides the length of the created Pipe.
        If the path is closed, setting this value should not be higher than 1.0 - distanceTwo.
        Ex: Path is made of curves A-B-C-A. The distanceOne returns and sets the length of the pipe going from A-B-C-A.
        
        This property returns null in the case where the feature is non-parametric.
        """
        return core.ValueInput()
    @distanceOne.setter
    def distanceOne(self, value: core.ValueInput):
        """
        Gets and sets the distance for the pipe created while following the path given as input, in the same order.
        This value defaults to 1.0 if not set.
        
        If the path is open, setting this to a value between 0.0 and 1.0 decides the length of the created Pipe.
        If the path is closed, setting this value should not be higher than 1.0 - distanceTwo.
        Ex: Path is made of curves A-B-C-A. The distanceOne returns and sets the length of the pipe going from A-B-C-A.
        
        This property returns null in the case where the feature is non-parametric.
        """
        pass
    @property
    def distanceTwo(self) -> core.ValueInput:
        """
        Gets and sets the distance for the pipe created while following the reversed path given as input.
        Before setting this value, distanceOne must be set.
        
        If the path is open, getting this value returns null, and setting the value is ignored.
        If the path is closed, setting this value should not be higher than 1.0 - distanceOne.
        Ex: Path is made of curves A-B-C-A. The distanceTwo returns and sets the length of the pipe going from A-C-B-A.
        
        This property returns null in the case where the feature is non-parametric.
        """
        return core.ValueInput()
    @distanceTwo.setter
    def distanceTwo(self, value: core.ValueInput):
        """
        Gets and sets the distance for the pipe created while following the reversed path given as input.
        Before setting this value, distanceOne must be set.
        
        If the path is open, getting this value returns null, and setting the value is ignored.
        If the path is closed, setting this value should not be higher than 1.0 - distanceOne.
        Ex: Path is made of curves A-B-C-A. The distanceTwo returns and sets the length of the pipe going from A-C-B-A.
        
        This property returns null in the case where the feature is non-parametric.
        """
        pass
    @property
    def participantBodies(self) -> list[BRepBody]:
        """
        Gets and sets the list of bodies that will participate in the feature when the operation is a cut or intersection.
        
        If this property has not been set, the default behavior is that all bodies that are intersected by the
        feature will participate.
        
        This property can return null in the case where the feature has not been fully defined so that
        possible intersecting bodies can be computed.
        """
        return [BRepBody()]
    @participantBodies.setter
    def participantBodies(self, value: list[BRepBody]):
        """
        Gets and sets the list of bodies that will participate in the feature when the operation is a cut or intersection.
        
        If this property has not been set, the default behavior is that all bodies that are intersected by the
        feature will participate.
        
        This property can return null in the case where the feature has not been fully defined so that
        possible intersecting bodies can be computed.
        """
        pass

class PipeFeatures(core.Base):
    """
    Collection that provides access to all of the existing Pipe features in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PipeFeatures:
        return PipeFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> PipeFeature:
        return None
    def __iter__(self) -> Iterator[PipeFeature]:
        return None
    def item(self, index: int) -> PipeFeature:
        """
        Function that returns the specified Pipe feature 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 PipeFeature()
    def itemByName(self, name: str) -> PipeFeature:
        """
        Function that returns the specified Pipe feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return PipeFeature()
    def createInput(self, path: Path, operation: FeatureOperations) -> PipeFeatureInput:
        """
        Creates a PipeFeatureInput object for defining a simple Pipe feature with only a path.
        Use properties and methods on this object to define the Pipe you want to create and then use the Add method,
        passing in the PipeFeatureInput object.
        path : The path to create the Pipe.
        operation : The feature operation to perform.
        Returns the newly created PipeFeatureInput object or null if the creation failed.
        """
        return PipeFeatureInput()
    def add(self, input: PipeFeatureInput) -> PipeFeature:
        """
        Creates a new Pipe feature.
        input : A PipeFeatureInput object that defines the desired Pipe. Use the createInput
        method to create a new PipeFeatureInput object and then use methods on it
        (the PipeFeatureInput object) to define the Pipe.
        Returns the newly created PipeFeature object or null if the creation failed.
        """
        return PipeFeature()
    @property
    def count(self) -> int:
        """
        The number of Pipe features in the collection.
        """
        return int()

class PlasticRule(core.Base):
    """
    A plastic rule.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PlasticRule:
        return PlasticRule()
    def deleteMe(self) -> bool:
        """
        Deletes the rule from the design or library. If the rule is in the
        library and set as the default rule, you cannot delete it. If the
        rule is in a design and is used by a component you cannot delete it.
        Returns true if the delete was successful.
        """
        return bool()
    @property
    def name(self) -> str:
        """
        The name of the plastic rule. When setting the name, it must be
        unique with respect to other plastic rules in the design or library.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        The name of the plastic rule. When setting the name, it must be
        unique with respect to other plastic rules in the design or library.
        """
        pass
    @property
    def material(self) -> core.Material:
        """
        Gets and sets the material assigned to this plastic rule
        """
        return core.Material()
    @material.setter
    def material(self, value: core.Material):
        """
        Gets and sets the material assigned to this plastic rule
        """
        pass
    @property
    def minimumThickness(self) -> float:
        """
        The minimum thickness of the part in centimeters.  This is used by
        the Design Advice command when analyzing the part for manufacturability.
        """
        return float()
    @minimumThickness.setter
    def minimumThickness(self, value: float):
        """
        The minimum thickness of the part in centimeters.  This is used by
        the Design Advice command when analyzing the part for manufacturability.
        """
        pass
    @property
    def maximumThickness(self) -> float:
        """
        The maximum thickness of the part in centimeters.  This is used by
        the Design Advice command when analyzing the part for manufacturability.
        """
        return float()
    @maximumThickness.setter
    def maximumThickness(self, value: float):
        """
        The maximum thickness of the part in centimeters.  This is used by
        the Design Advice command when analyzing the part for manufacturability.
        """
        pass
    @property
    def thickness(self) -> PlasticRuleValue:
        """
        The thickness used for plastic features. This value must be within the range specified
        by the minimumThickness and maximumThickness properties. This is used by the plastic
        commands when a wall thickness is needed.
        
        When using a float to set the value, it is defined in centimeters. When using a string to
        set the expression, the units can be defined as part of the expression or it defaults to
        the units associated with the rule if no units are specified.
        """
        return PlasticRuleValue()
    @property
    def thicknessVariation(self) -> PlasticRuleValue:
        """
        The maximum thickness of the part. This is used by the Design Advice command
        when analyzing the part for manufacturability.
        
        When using a float to set the value, it is defined in centimeters. When using a string to
        set the expression, the units can be defined as part of the expression or it defaults to
        the units associated with the rule if no units are specified.
        """
        return PlasticRuleValue()
    @property
    def draftAngle(self) -> PlasticRuleValue:
        """
        The draft angle used for plastic features. When using a float to set the value, it
        is defined in radians. When using a string to set the expression it uses degrees.
        """
        return PlasticRuleValue()
    @property
    def minimumDraftAngle(self) -> float:
        """
        The minimum draft angle allowed in radians. This is used by the Design Advice command
        when analyzing the part for manufacturability.
        """
        return float()
    @minimumDraftAngle.setter
    def minimumDraftAngle(self, value: float):
        """
        The minimum draft angle allowed in radians. This is used by the Design Advice command
        when analyzing the part for manufacturability.
        """
        pass
    @property
    def nominalRadius(self) -> PlasticRuleValue:
        """
        The nominal radius used for plastic features. When using a float to set the value, it
        is defined in centimeters. When using a string to set the expression, the
        units can be defined as part of the expression or it defaults to the units associated
        with the rule if no units are specified.
        """
        return PlasticRuleValue()
    @property
    def knifeEdgeThreshold(self) -> PlasticRuleValue:
        """
        The minimal thickness where an edge is considered a knife edge. This is used by the Design Advice
        command when analyzing the part for manufacturability.
        
        When using a float to set the value, it is defined in centimeters. When using a string to
        set the expression, the units can be defined as part of the expression or it defaults to
        the units associated with the rule if no units are specified.
        """
        return PlasticRuleValue()
    @property
    def revealHeight(self) -> PlasticRuleValue:
        """
        The reveal height used for plastic features. When using a float to set the value, it
        is defined in centimeters. When using a string to set the expression, the
        units can be defined as part of the expression or it defaults to
        the units associated with the rule if no units are specified.
        """
        return PlasticRuleValue()
    @property
    def clearance(self) -> PlasticRuleValue:
        """
        The clearance used for plastic features. When using a float to set the value, it
        is defined in centimeters. When using a string to set the expression, the
        units can be defined as part of the expression or it defaults to
        the units associated with the rule if no units are specified.
        """
        return PlasticRuleValue()
    @property
    def parentDesign(self) -> Design:
        """
        Returns the parent design for a plastic rule in a design or it
        returns null if the plastic rule is in the library.
        """
        return Design()
    @property
    def isDefault(self) -> bool:
        """
        This gets and sets which rule in a library is the default rule. This is only
        valid for rules in a library and will fail for rules in a design.
        """
        return bool()
    @isDefault.setter
    def isDefault(self, value: bool):
        """
        This gets and sets which rule in a library is the default rule. This is only
        valid for rules in a library and will fail for rules in a design.
        """
        pass
    @property
    def isUsed(self) -> bool:
        """
        Indicates if this rule is currently being used by a component. This is only
        valid for rules in a design.
        """
        return bool()
    @property
    def units(self) -> str:
        """
        Gets the units this rule uses to display values in the dialog.
        Rules currently only use mm or inch and the units are permanently
        associated with a rule and cannot be modified.
        """
        return str()

class PlasticRules(core.Base):
    """
    A collection of plastic rules.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PlasticRules:
        return PlasticRules()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> PlasticRule:
        return None
    def __iter__(self) -> Iterator[PlasticRule]:
        return None
    def item(self, index: int) -> PlasticRule:
        """
        Function that returns the specified plastic rule 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 PlasticRule()
    def itemByName(self, name: str) -> PlasticRule:
        """
        Function that returns the specified plastic rule using the name of the rule.
        name : The name of the rule within the collection to return. This is the name seen in the Plastic Rules dialog.
        Returns the specified item or null if the specified name was not found.
        """
        return PlasticRule()
    def addByCopy(self, existingPlasticRule: PlasticRule, name: str) -> PlasticRule:
        """
        Creates a new plastic rule by copying an existing rule. The new rule
        can then be edited to define the rule characteristics you want.
        existingPlasticRule : The existing PlasticRule object you want to copy. This can be a rule from the
        library or the design.
        name : The name to assign to the new plastic rule. This name must be unique with respect to other
        plastic rules in the design or library its created in.
        Returns the new PlasticRule object or will assert in the case where it fails.
        """
        return PlasticRule()
    @property
    def count(self) -> int:
        """
        The number of plastic rules in the collection.
        """
        return int()

class PlasticRuleValue(core.Base):
    """
    Used to get and set the current value associated with a plastic rule. A value can be gotten
    or set using a string or a double. A string can contain equations and unit specifiers, whereas
    a double defines the size in centimeters. In the user interface, the user is always setting
    the string expression. However, when programming, it is typically more convenient to set it
    using an explicit value. When the value is set using a double, Fusion creates an equivalent expression.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PlasticRuleValue:
        return PlasticRuleValue()
    @property
    def expression(self) -> str:
        """
        Gets and sets the expression of the plastic rule value. This can be an
        equation that includes the name "Thickness" and can also include length unit
        specifiers. For example, a valid expression is "Thickness / 2 + 1 mm". If no
        units are specified, the unit is implied and uses the units associated with the rule
        which can be mm or inch. For example an expression of "3" will be 3 inches if the
        rule units are inches or 3 mm if the rule units are millimeters. You can find out
        what units are used for a rule using the PlasticRule.units property.
        """
        return str()
    @expression.setter
    def expression(self, value: str):
        """
        Gets and sets the expression of the plastic rule value. This can be an
        equation that includes the name "Thickness" and can also include length unit
        specifiers. For example, a valid expression is "Thickness / 2 + 1 mm". If no
        units are specified, the unit is implied and uses the units associated with the rule
        which can be mm or inch. For example an expression of "3" will be 3 inches if the
        rule units are inches or 3 mm if the rule units are millimeters. You can find out
        what units are used for a rule using the PlasticRule.units property.
        """
        pass
    @property
    def value(self) -> float:
        """
        Gets and sets the value of the plastic rule value in centimeters. Setting
        this value will create a new expression that is equivalent to the new value.
        """
        return float()
    @value.setter
    def value(self, value: float):
        """
        Gets and sets the value of the plastic rule value in centimeters. Setting
        this value will create a new expression that is equivalent to the new value.
        """
        pass

class PMIAnnotation(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    A Base class representing a PMI (Product Manufacturing Information) annotation in a component.
    
    This can either be PMI that was imported alongside the model, or Fusion specific PMI.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIAnnotation:
        return PMIAnnotation()
    def deleteMe(self) -> bool:
        """
        Deletes the PMI.
        Returns a true if the delete was successful, false otherwise.
        """
        return bool()
    def markUpToDate(self) -> bool:
        """
        Marks the PMI as up-to-date and dismisses warnings.
        Returns false if the warnings cannot be dismissed without changes and the PMI remains out of date.
        """
        return bool()
    def convertImportedToFusionPMI(self) -> PMIAnnotation:
        """
        Converts this PMIAnnotation to a Fusion PMIAnnotation if it is of supported type and has valid reference geometry.
        
        Supported types are:
        
        Imported PMI annotation (PMIImportedDimension) and valid reference geometry is converted to Hole/Thread Note PMI.
        
        Imported PMI annotation (PMIImportedNote) and valid reference geometry is converted to Leader Line Note PMI.
        
        Imported PMI folder (PMIImportedFolder) which includes information about a Hole Note is converted to Hole/Thread Note PMI.
        
        The converted PMIAnnotation can then be edited.
        
        After successful conversion, the new PMIAnnotation will be added to the collection of PMI in the component, and the original
        PMIAnnotation will be removed.
        If it fails to convert, the original PMIAnnotation remains unchanged.
        Returns the converted Fusion PMIAnnotation or null in the case of failure to convert.
        
        The type of the object returned is the base class PMIAnnotation.
        """
        return PMIAnnotation()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this object
        in an assembly. This is only valid in the case where this is acting
        as a proxy in an assembly. Returns null in the case where the object
        is not in the context of an assembly but is already the native object.
        """
        return Occurrence()
    @property
    def name(self) -> str:
        """
        Gets and sets the name of the PMI as it is shown in the browser.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name of the PMI as it is shown in the browser.
        """
        pass
    @property
    def type(self) -> PMITypes:
        """
        Gets the type of this PMI annotation.
        """
        return PMITypes()
    @property
    def isDeletable(self) -> bool:
        """
        Indicates if this PMI can be deleted.
        """
        return bool()
    @property
    def isLightBulbOn(self) -> bool:
        """
        Indicates if the light bulb (as displayed in the browser) is on.
        
        A PMI will only be visible if its light bulb, the containing folder's light bulb,
        the collection's and the component's light bulbs are all on.
        """
        return bool()
    @isLightBulbOn.setter
    def isLightBulbOn(self, value: bool):
        """
        Indicates if the light bulb (as displayed in the browser) is on.
        
        A PMI will only be visible if its light bulb, the containing folder's light bulb,
        the collection's and the component's light bulbs are all on.
        """
        pass
    @property
    def isVisible(self) -> bool:
        """
        Indicates if the PMI is visible.
        This property is affected by the AssemblyContext (parent component) of the PMI.
        """
        return bool()
    @property
    def parentComponent(self) -> Component:
        """
        Gets the component this PMI belongs to.
        """
        return Component()
    @property
    def isParametric(self) -> bool:
        """
        Indicates if this PMI is parametric or not.
        """
        return bool()
    @property
    def timelineObject(self) -> TimelineObject:
        """
        Gets the timeline object associated with this PMI.
        Only applies to PMI that has an associated timeline feature.
        
        Returns null if the PMI does not have an associated timeline feature.
        """
        return TimelineObject()
    @property
    def healthState(self) -> FeatureHealthStates:
        """
        Gets the health state of the PMI. Only applies to PMI that have a timeline object, in Parametric Modelling.
        
        Returns UnknownFeatureHealthState for other PMI types that don't have a parametric Feature.
        """
        return FeatureHealthStates()
    @property
    def errorOrWarningMessage(self) -> str:
        """
        If there are errors or warnings in the PMI, this property will
        return a string that contains the error or warning message.
        Otherwise it returns an empty string. Only applies to PMI that has
        an associated parametric Feature.
        
        Returns empty string for other PMI types that don't have a parametric Feature.
        """
        return str()
    @property
    def isSuppressed(self) -> bool:
        """
        Indicates if this PMI is suppressed. Only applies to PMI that has
        an associated parametric Feature.
        
        Returns false for other PMI types that don't have a parametric Feature.
        """
        return bool()
    @isSuppressed.setter
    def isSuppressed(self, value: bool):
        """
        Indicates if this PMI is suppressed. Only applies to PMI that has
        an associated parametric Feature.
        
        Returns false for other PMI types that don't have a parametric Feature.
        """
        pass
    @property
    def isOutOfDate(self) -> bool:
        """
        Indicates if this PMI is outdated and needs to be recomputed.
        This typically happens when the geometry or parameters that the PMI
        references have been modified. Applicable for both imported and created PMI,
        regardless of whether they are parametric or not.
        """
        return bool()
    @property
    def referencedEntities(self) -> list[core.Base]:
        """
        Returns an array of referenced entities for this PMI.
        """
        return [core.Base()]

class PMIAnnotations(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Provides access to the all the PMI (Product Manufacturing Information) in a component.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIAnnotations:
        return PMIAnnotations()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> PMIAnnotation:
        return None
    def __iter__(self) -> Iterator[PMIAnnotation]:
        return None
    def item(self, index: int) -> PMIAnnotation:
        """
        Gets the specified PMI 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.
        
        The type of the object returned is the base class PMIAnnotation.
        """
        return PMIAnnotation()
    def itemByName(self, name: str) -> PMIAnnotation:
        """
        Gets the specified PMI from the collection using a name.
        name : The name of the PMI within the collection to return.
        Returns the specified item or null if no item with the specified name was found.
        
        The type of the object returned is the base class PMIAnnotation.
        """
        return PMIAnnotation()
    def itemsByTypes(self, types: list[int]) -> list[PMIAnnotation]:
        """
        Gets all the PMI from the collection that match the specified PMI types.
        types : An array of PMITypes that specifies the types of PMI to return. If an empty array or null is passed,
        all the PMI from the collection will be returned regardless of type.
        Returns an array of PMI objects that match the specified types, or an empty array if no matching PMI were found.
        
        The type of the objects returned is the base class PMIAnnotation.
        """
        return [PMIAnnotation()]
    def itemsByEntities(self, entities: list[core.Base], types: list[int] = None) -> list[PMIAnnotation]:
        """
        Gets all the PMI from the collection that are associated with the specified geometric entities and optionally match the specified PMI types.
        
        This is useful for finding PMI that reference specific geometric features.
        entities : An array of core.Base objects that represent the geometric entities to search for associated PMI. These can be BRepFace,
        BRepEdge or BRepVertex objects. The function will return the PMI that references any of these entities in their geometric associations.
        
        For example, a Diameter Dimension PMI associated with a cylindrical face, a Hole/Thread Note PMI associated with faces that define a hole feature,
        or a Leader Line Note PMI associated with an edge or vertex.
        types : An optional array of PMITypes that filters the results to include only PMI that matches the type presented in the specified types. If an empty array or null
        is passed, all the PMI associated with the specified geometric entities will be returned, regardless of type.
        Returns an array of PMI objects that are associated with the specified entities and match the type filter (if provided)
        or an empty array if no matching PMI were found.
        
        The type of the objects returned is the base class PMIAnnotation.
        """
        return [PMIAnnotation()]
    @property
    def count(self) -> int:
        """
        Gets the number of PMI in the collection. PMIFolders are included in this count.
        """
        return int()
    @property
    def importedFolders(self) -> PMIImportedFolders:
        """
        Gets the PMIImportedFolders collection.
        """
        return PMIImportedFolders()
    @property
    def importedDimensions(self) -> PMIImportedDimensions:
        """
        Gets the PMIImportedDimensions collection.
        """
        return PMIImportedDimensions()
    @property
    def importedNotes(self) -> PMIImportedNotes:
        """
        Gets the PMIImportedNotes collection.
        """
        return PMIImportedNotes()
    @property
    def importedSurfaceTextures(self) -> PMIImportedSurfaceTextures:
        """
        Gets the PMIImportedSurfaceTextures collection.
        """
        return PMIImportedSurfaceTextures()
    @property
    def importedGeometricTolerances(self) -> PMIImportedGeometricTolerances:
        """
        Gets the PMIImportedGeometricTolerances collection.
        """
        return PMIImportedGeometricTolerances()
    @property
    def importedGraphicals(self) -> PMIImportedGraphicals:
        """
        Gets the PMIImportedGraphicals collection.
        """
        return PMIImportedGraphicals()
    @property
    def importedGDTDatums(self) -> PMIImportedGDTDatums:
        """
        Gets the PMIImportedGDTDatums collection.
        """
        return PMIImportedGDTDatums()
    @property
    def holeThreadNotes(self) -> PMIHoleThreadNotes:
        """
        Gets the PMIHoleThreadNotes collection.
        """
        return PMIHoleThreadNotes()
    @property
    def leaderLineNotes(self) -> PMILeaderLineNotes:
        """
        Gets the PMILeaderLineNotes collection.
        """
        return PMILeaderLineNotes()

class PMIDatumModifier(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Represents a datum modifier used in PMI datum references.
    A datum modifier provides additional information about how a datum is applied.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIDatumModifier:
        return PMIDatumModifier()
    @property
    def type(self) -> PMIDatumModifierTypes:
        """
        Gets the type of the datum modifier.
        
        This is a read-only property because imported PMI cannot be edited.
        """
        return PMIDatumModifierTypes()
    @property
    def hasValue(self) -> bool:
        """
        Gets whether there is a value associated with this modifier.
        
        This is a read-only property because imported PMI cannot be edited.
        """
        return bool()
    @property
    def value(self) -> float:
        """
        Gets the value associated with this modifier, if hasValue is true.
        
        Returns 0 if hasValue is false.
        
        This is a read-only property because imported PMI cannot be edited.
        """
        return float()

class PMIDatumReference(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Represents a datum reference used in PMI geometric tolerances.
    A datum reference identifies a datum feature and includes any modifiers that apply to it.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIDatumReference:
        return PMIDatumReference()
    @property
    def referenceDatum(self) -> PMIAnnotation:
        """
        Gets the PMIAnnotation that represents the referenced datum, or null if no reference exists.
        
        This is a read-only property because imported PMI cannot be edited.
        """
        return PMIAnnotation()
    @property
    def modifiers(self) -> list[PMIDatumModifier]:
        """
        Gets an array of datum modifiers associated with this datum reference.
        
        This is a read-only property because imported PMI cannot be edited.
        """
        return [PMIDatumModifier()]

class PMIDatumTarget(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Represents a datum target belonging to an PMIImportedGDTDatum.
    A datum target is used to define a specific location on a PMI GDT Datum.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIDatumTarget:
        return PMIDatumTarget()
    @property
    def targetId(self) -> str:
        """
        Gets the id of this datum target.
        
        This is a read-only property because imported PMI cannot be edited.
        """
        return str()
    @property
    def type(self) -> PMIDatumTargetTypes:
        """
        Gets the type of this datum target.
        
        This is a read-only property because imported PMI cannot be edited.
        """
        return PMIDatumTargetTypes()
    @property
    def lengths(self) -> list[float]:
        """
        Gets the array of lengths defining this datum target, if any.
        
        This is a read-only property because imported PMI cannot be edited.
        """
        return [float()]
    @property
    def orientation(self) -> core.Matrix3D:
        """
        Gets the orientation of this datum target.
        
        This is a read-only property because imported PMI cannot be edited.
        """
        return core.Matrix3D()
    @property
    def hasPointTarget(self) -> bool:
        """
        Gets whether there is a point associated with this datum target.
        
        This is a read-only property because imported PMI cannot be edited.
        """
        return bool()
    @property
    def pointTarget(self) -> core.Point3D:
        """
        Gets the point target of this datum target.
        
        This is a read-only property because imported PMI cannot be edited.
        """
        return core.Point3D()
    @property
    def curveTargets(self) -> list[core.Curve3D]:
        """
        Gets the curves being targeted by this datum target, if any.
        
        This is a read-only property because imported PMI cannot be edited.
        """
        return [core.Curve3D()]

class PMIDisplaySettings(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Represents display settings related to the PMIAnnotation display.
    Includes information such as unit and formatting.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIDisplaySettings:
        return PMIDisplaySettings()
    @staticmethod
    def create() -> PMIDisplaySettings:
        """
        Create a transient PMIDisplaySettings object.
        
        The default values are:
        - unitType = UseDocumentUnitPMIUnitType
        
        - precision = use document settings
        
        - leadingZeros = true
        
        - trailingZeros = use document settings
        
        - unitAbbreviation = false
        """
        return PMIDisplaySettings()
    @property
    def unitType(self) -> PMIUnitTypes:
        """
        Gets and sets the unit type to be used in displaying the PMI.
        """
        return PMIUnitTypes()
    @unitType.setter
    def unitType(self, value: PMIUnitTypes):
        """
        Gets and sets the unit type to be used in displaying the PMI.
        """
        pass
    @property
    def precision(self) -> int:
        """
        Gets and sets the precision (number of decimal places) to be used when displaying values.
        
        The value set should be between 0 and 8 inclusive.
        """
        return int()
    @precision.setter
    def precision(self, value: int):
        """
        Gets and sets the precision (number of decimal places) to be used when displaying values.
        
        The value set should be between 0 and 8 inclusive.
        """
        pass
    @property
    def hasLeadingZeros(self) -> bool:
        """
        Gets and sets whether to show leading zeros in the display.
        """
        return bool()
    @hasLeadingZeros.setter
    def hasLeadingZeros(self, value: bool):
        """
        Gets and sets whether to show leading zeros in the display.
        """
        pass
    @property
    def hasTrailingZeros(self) -> bool:
        """
        Gets and sets whether to show trailing zeros in the display.
        """
        return bool()
    @hasTrailingZeros.setter
    def hasTrailingZeros(self, value: bool):
        """
        Gets and sets whether to show trailing zeros in the display.
        """
        pass
    @property
    def hasUnitAbbreviation(self) -> bool:
        """
        Gets and sets whether to show unit abbreviation in the display.
        """
        return bool()
    @hasUnitAbbreviation.setter
    def hasUnitAbbreviation(self, value: bool):
        """
        Gets and sets whether to show unit abbreviation in the display.
        """
        pass

class PMIGeometricValue(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Represents a value that can be associated with a PMIAnnotation, such as a diameter value.
    
    Includes information about the value, whether it is overriden and any associated tolerance.
    
    This class has two main uses:
    
    - to retrieve the values from a PMIAnnotation (e.g. PMIImportedDimension)
    
    - to define input values in PMI creation input objects (e.g. PMIHoleThreadNoteInput)
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIGeometricValue:
        return PMIGeometricValue()
    @staticmethod
    def create() -> PMIGeometricValue:
        """
        Create a transient PMIGeometricValue object.
        
        The default properties are hasValue = false, value = 0, and tolerance with hasTolerances = false.
        """
        return PMIGeometricValue()
    @property
    def hasValue(self) -> bool:
        """
        Gets and sets whether there is a value associated with the geometric value.
        
        If set to true, the value will be displayed in the graphics, while also stored as data in the PMI.
        Setting this to true will also require setting a value, as the default is 0.
        """
        return bool()
    @hasValue.setter
    def hasValue(self, value: bool):
        """
        Gets and sets whether there is a value associated with the geometric value.
        
        If set to true, the value will be displayed in the graphics, while also stored as data in the PMI.
        Setting this to true will also require setting a value, as the default is 0.
        """
        pass
    @property
    def isOverriddenValue(self) -> bool:
        """
        Gets whether the value has been overridden.
        """
        return bool()
    @property
    def value(self) -> float:
        """
        Gets and sets the value associated with this object in cm or radians.
        
        Setting this will also set hasValue and isOverriddenValue to true.
        """
        return float()
    @value.setter
    def value(self, value: float):
        """
        Gets and sets the value associated with this object in cm or radians.
        
        Setting this will also set hasValue and isOverriddenValue to true.
        """
        pass
    @property
    def tolerance(self) -> PMIGeometricValueTolerance:
        """
        Gets and sets the tolerance associated with this geometric value.
        """
        return PMIGeometricValueTolerance()
    @tolerance.setter
    def tolerance(self, value: PMIGeometricValueTolerance):
        """
        Gets and sets the tolerance associated with this geometric value.
        """
        pass

class PMIGeometricValueTolerance(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Represents a tolerance value that can be associated with a PMIGeometricValue.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIGeometricValueTolerance:
        return PMIGeometricValueTolerance()
    @staticmethod
    def create() -> PMIGeometricValueTolerance:
        """
        Create a transient PMIGeometricValueTolerance object.
        The default value set is to not have tolerances (hasTolerances = false).
        """
        return PMIGeometricValueTolerance()
    def setSymmetric(self, tolerance: float) -> bool:
        """
        Sets this object to have symmetric tolerance with the specified value.
        tolerance : The value of the tolerance in cm.
        Returns true if the operation is successful, false otherwise.
        """
        return bool()
    def setDeviation(self, upperTolerance: float, lowerTolerance: float) -> bool:
        """
        Sets this object to have deviation tolerance with the specified upper and lower values.
        upperTolerance : The value of the upper tolerance in cm.
        lowerTolerance : The value of the lower tolerance in cm.
        Returns true if the operation is successful, false otherwise.
        """
        return bool()
    def setLimitsStacked(self, minValue: float, maxValue: float) -> bool:
        """
        Sets this object to have limits stacked tolerance with the specified minimum and maximum values.
        Displayed as stacked lines.
        minValue : The value of the minimum limit in cm.
        maxValue : The value of the maximum limit in cm.
        Returns true if the operation is successful, false otherwise.
        """
        return bool()
    def setLimitsLinear(self, minValue: float, maxValue: float) -> bool:
        """
        Sets this object to have limits linear tolerance with the specified minimum and maximum values.
        Displayed as values on one line.
        minValue : The value of the minimum limit in cm.
        maxValue : The value of the maximum limit in cm.
        Returns true if the operation is successful, false otherwise.
        """
        return bool()
    def setMAX(self) -> bool:
        """
        Sets this object to have MAX tolerance type.
        The tolerance is defined and displayed as MAX.
        Returns true if the operation is successful, false otherwise.
        """
        return bool()
    def setMIN(self) -> bool:
        """
        Sets this object to have MIN tolerance type.
        The tolerance is defined and displayed as MIN.
        Returns true if the operation is successful, false otherwise.
        """
        return bool()
    def setLimitsFitsStacked(self, size: float, holeFit: str, shaftFit: str) -> bool:
        """
        Sets this object to have hole/shaft fit tolerance displayed as stacked lines.
        The object will also have updated upper and lower tolerance values (used for information only).
        size : The nominal distance (size) of the hole. Used to check validity of fits.
        holeFit : The hole fit value (e.g., "H7").
        shaftFit : The shaft fit value (e.g., "h7").
        Returns true if the operation is successful, false otherwise.
        """
        return bool()
    def setLimitsFitsLinear(self, size: float, holeFit: str, shaftFit: str) -> bool:
        """
        Sets this object to have hole/shaft fit tolerance displayed on one line.
        The object will also have updated upper and lower tolerance values (used for information only).
        size : The nominal distance (size) of the hole. Used to check validity of fits.
        holeFit : The hole fit value (e.g., "H7").
        shaftFit : The shaft fit value (e.g., "h7").
        Returns true if the operation is successful, false otherwise.
        """
        return bool()
    def setLimitsFitsSizeLimits(self, size: float, holeFit: str, shaftFit: str) -> bool:
        """
        Sets this object to have hole/shaft fit tolerance displayed as size limits.
        The object will also have updated upper and lower tolerance values (used for information only).
        Displays the minimum and maximum values in parenthesis.
        size : The nominal distance (size) of the hole. Used to check validity of fits.
        holeFit : The hole fit value (e.g., "H7")
        shaftFit : The shaft fit value (e.g., "h7")
        Returns true if the operation is successful, false otherwise.
        """
        return bool()
    def setLimitsFitsTolerance(self, size: float, holeFit: str, shaftFit: str) -> bool:
        """
        Sets this object to have hole/shaft fit tolerance displayed as tolerance values.
        The object will also have updated upper and lower tolerance values (used for information only).
        Displays the upper and lower tolerance values in parenthesis.
        size : The nominal distance (size) of the hole. Used to check validity of fits.
        holeFit : The hole fit value (e.g., "H7").
        shaftFit : The shaft fit value (e.g., "h7").
        Returns true if the operation is successful, false otherwise.
        """
        return bool()
    @property
    def hasTolerances(self) -> bool:
        """
        Gets and sets whether the tolerances are set or not on the object.
        """
        return bool()
    @hasTolerances.setter
    def hasTolerances(self, value: bool):
        """
        Gets and sets whether the tolerances are set or not on the object.
        """
        pass
    @property
    def hasLowerTolerance(self) -> bool:
        """
        Gets whether there is a lower tolerance value set.
        """
        return bool()
    @property
    def lowerTolerance(self) -> float:
        """
        Gets the lower tolerance value in cm.
        Returns 0 if there is no lower tolerance value set.
        """
        return float()
    @property
    def hasUpperTolerance(self) -> bool:
        """
        Gets whether there is an upper tolerance value set.
        """
        return bool()
    @property
    def upperTolerance(self) -> float:
        """
        Gets the upper tolerance value in cm.
        Returns 0 if there is no upper tolerance value set.
        """
        return float()
    @property
    def hasToleranceClass(self) -> bool:
        """
        Gets whether there is a tolerance class set.
        """
        return bool()
    @property
    def toleranceClassDeviation(self) -> str:
        """
        Gets the tolerance class deviation value.
        Returns empty string if there is no tolerance class deviation value set.
        """
        return str()
    @property
    def toleranceClassGrade(self) -> str:
        """
        Gets the tolerance class grade value.
        Returns empty string if there is no tolerance class grade value set.
        """
        return str()
    @property
    def hasToleranceType(self) -> bool:
        """
        Gets whether there is tolerance type set.
        """
        return bool()
    @property
    def toleranceType(self) -> PMIToleranceTypes:
        """
        The tolerance type.
        """
        return PMIToleranceTypes()

class PMIHoleThreadNotes(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Provides access to the all the PMIHoleThreadNote objects in a component.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIHoleThreadNotes:
        return PMIHoleThreadNotes()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> PMIHoleThreadNote:
        return None
    def __iter__(self) -> Iterator[PMIHoleThreadNote]:
        return None
    def item(self, index: int) -> PMIHoleThreadNote:
        """
        Gets the specified PMIHoleThreadNote 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 PMIHoleThreadNote()
    def itemByName(self, name: str) -> PMIHoleThreadNote:
        """
        Gets the specified PMIHoleThreadNote from the collection using a name.
        name : The name of the PMIHoleThreadNote within the collection to return.
        Returns the specified item or null if no item with the specified name was found.
        """
        return PMIHoleThreadNote()
    def itemsByEntities(self, entities: list[core.Base]) -> list[PMIHoleThreadNote]:
        """
        Gets all the PMIHoleThreadNote from the collection that are associated with the specified geometric entities.
        
        This is useful for finding PMIHoleThreadNote that reference specific geometric features.
        entities : An array of core.Base objects that represent the geometric entities to search for associated PMI. These can be BRepFace,
        BRepEdge or BRepVertex objects. The function will return the PMIHoleThreadNote that references any of these entities in their geometric associations.
        Returns an array of PMIHoleThreadNote objects that are associated with the specified entities and match the type filter (if provided)
        or an empty array if no matching PMI were found.
        """
        return [PMIHoleThreadNote()]
    def createInput(self, faces: list[BRepFace]) -> PMIHoleThreadNoteInput:
        """
        Creates a PMIHoleThreadNoteInput object that is in turn used to create a Hole/Thread Note PMI.
        faces : BRepFace array that contains the faces which the Hole/Thread Note will be associated with.
        
        The faces must be:
        
        a. A subset of the faces that define one/multiple geometric holes. (e.g. cylindrical face that belongs to a counterbore hole, planar
        face that belongs to a blind hole, etc.). In the case of a complex hole (neither simple, counterbore or countersink),
        the faces provided should be the faces the PMI is related to.
        
        b. A set of faces that define geometric bosses. Supported types are cylindrical bosses.
        The set can define a group of such holes/bosses that would be associated and to the same PMI.
        
        Native objects will be used when setting the faces.
        Returns a PMIHoleThreadNoteInput object.
        """
        return PMIHoleThreadNoteInput()
    def add(self, input: PMIHoleThreadNoteInput) -> PMIHoleThreadNote:
        """
        Creates a new Hole/Thread Note using the creation parameters in the PMIHoleThreadNoteInput.
        input : A PMIHoleThreadNoteInput object.
        Returns the newly created PMIHoleThreadNote or null if the creation failed.
        """
        return PMIHoleThreadNote()
    @property
    def count(self) -> int:
        """
        Gets the number of PMIHoleThreadNote in the collection.
        """
        return int()

class PMIImportedDimensions(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Provides access to the all the PMIImportedDimension objects in a component.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIImportedDimensions:
        return PMIImportedDimensions()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> PMIImportedDimension:
        return None
    def __iter__(self) -> Iterator[PMIImportedDimension]:
        return None
    def item(self, index: int) -> PMIImportedDimension:
        """
        Gets the specified PMIImportedDimension 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 PMIImportedDimension()
    def itemByName(self, name: str) -> PMIImportedDimension:
        """
        Gets the specified PMIImportedDimension from the collection using a name.
        name : The name of the PMIImportedDimension within the collection to return.
        Returns the specified item or null if no item with the specified name was found.
        """
        return PMIImportedDimension()
    def itemsByTypes(self, types: list[int]) -> list[PMIImportedDimension]:
        """
        Gets all the PMIImportedDimension from the collection that match the specified PMI types.
        types : An array of PMITypes that specifies the types of PMI to return. If an empty array or null is passed,
        all the PMIImportedDimension from the collection will be returned regardless of type.
        Returns an array of PMI objects that match the specified types, or an empty array if no matching PMI were found.
        """
        return [PMIImportedDimension()]
    def itemsByEntities(self, entities: list[core.Base], types: list[int] = None) -> list[PMIImportedDimension]:
        """
        Gets all the PMIImportedDimension from the collection that are associated with the specified geometric entities and optionally match the specified PMI types.
        
        This is useful for finding PMIImportedDimension that reference specific geometric features.
        entities : An array of core.Base objects that represent the geometric entities to search for associated PMI. These can be BRepFace,
        BRepEdge or BRepVertex objects. The function will return the PMIImportedDimension that references any of these entities in their geometric associations.
        
        For example, a Diameter Dimension PMI associated with a cylindrical face.
        types : An optional array of PMITypes that filters the results to include only PMI that matches the type presented in the specified types. If an empty array or null
        is passed, all the PMIImportedDimension associated with the specified geometric entities will be returned, regardless of type.
        Returns an array of PMIImportedDimension objects that are associated with the specified entities and match the type filter (if provided)
        or an empty array if no matching PMI were found.
        """
        return [PMIImportedDimension()]
    @property
    def count(self) -> int:
        """
        Gets the number of PMIImportedDimensions in the collection.
        """
        return int()

class PMIImportedFolders(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Provides access to the all the PMIImportedFolder objects in a component.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIImportedFolders:
        return PMIImportedFolders()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> PMIImportedFolder:
        return None
    def __iter__(self) -> Iterator[PMIImportedFolder]:
        return None
    def item(self, index: int) -> PMIImportedFolder:
        """
        Gets the specified PMIImportedFolder 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 PMIImportedFolder()
    def itemByName(self, name: str) -> PMIImportedFolder:
        """
        Gets the specified PMIImportedFolder from the collection using a name.
        name : The name of the PMIImportedFolder within the collection to return.
        Returns the specified item or null if no item with the specified name was found.
        """
        return PMIImportedFolder()
    @property
    def count(self) -> int:
        """
        Gets the number of PMIImportedFolders in the collection.
        """
        return int()

class PMIImportedGDTDatums(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Provides access to the all the PMIImportedGDTDatum objects in a component.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIImportedGDTDatums:
        return PMIImportedGDTDatums()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> PMIImportedGDTDatum:
        return None
    def __iter__(self) -> Iterator[PMIImportedGDTDatum]:
        return None
    def item(self, index: int) -> PMIImportedGDTDatum:
        """
        Gets the specified PMIImportedGDTDatum 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 PMIImportedGDTDatum()
    def itemByName(self, name: str) -> PMIImportedGDTDatum:
        """
        Gets the specified PMIImportedGDTDatum from the collection using a name.
        name : The name of the PMIImportedGDTDatum within the collection to return.
        Returns the specified item or null if no item with the specified name was found.
        """
        return PMIImportedGDTDatum()
    def itemsByEntities(self, entities: list[core.Base]) -> list[PMIImportedGDTDatum]:
        """
        Gets all the PMIImportedGDTDatum from the collection that are associated with the specified geometric entities.
        
        This is useful for finding PMIImportedGDTDatum that reference specific geometric features.
        entities : An array of core.Base objects that represent the geometric entities to search for associated PMI. These can be BRepFace,
        BRepEdge or BRepVertex objects. The function will return the PMIImportedGDTDatum that references any of these entities in their geometric associations.
        Returns an array of PMIImportedGDTDatum objects that are associated with the specified entities and match the type filter (if provided)
        or an empty array if no matching PMI were found.
        """
        return [PMIImportedGDTDatum()]
    @property
    def count(self) -> int:
        """
        Gets the number of PMIImportedGDTDatum in the collection.
        """
        return int()

class PMIImportedGeometricTolerances(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Provides access to the all the PMIImportedGeometricTolerance objects in a component.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIImportedGeometricTolerances:
        return PMIImportedGeometricTolerances()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> PMIImportedGeometricTolerance:
        return None
    def __iter__(self) -> Iterator[PMIImportedGeometricTolerance]:
        return None
    def item(self, index: int) -> PMIImportedGeometricTolerance:
        """
        Gets the specified PMIImportedGeometricTolerance 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 PMIImportedGeometricTolerance()
    def itemByName(self, name: str) -> PMIImportedGeometricTolerance:
        """
        Gets the specified PMIImportedGeometricTolerance from the collection using a name.
        name : The name of the PMIImportedGeometricTolerance within the collection to return.
        Returns the specified item or null if no item with the specified name was found.
        """
        return PMIImportedGeometricTolerance()
    def itemsByTypes(self, types: list[int]) -> list[PMIImportedGeometricTolerance]:
        """
        Gets all the PMIImportedGeometricTolerance from the collection that match the specified PMI types.
        types : An array of PMITypes that specifies the types of PMI to return. If an empty array or null is passed,
        all the PMIImportedGeometricTolerance from the collection will be returned regardless of type.
        Returns an array of PMI objects that match the specified types, or an empty array if no matching PMI were found.
        """
        return [PMIImportedGeometricTolerance()]
    def itemsByEntities(self, entities: list[core.Base], types: list[int] = None) -> list[PMIImportedGeometricTolerance]:
        """
        Gets all the PMIImportedGeometricTolerance from the collection that are associated with the specified geometric entities and optionally match the specified PMI types.
        
        This is useful for finding PMIImportedGeometricTolerance that reference specific geometric features.
        entities : An array of core.Base objects that represent the geometric entities to search for associated PMI. These can be BRepFace,
        BRepEdge or BRepVertex objects. The function will return the PMIImportedGeometricTolerance that references any of these entities in their geometric associations.
        types : An optional array of PMITypes that filters the results to include only PMI that matches the type presented in the specified types. If an empty array or null
        is passed, all the PMIImportedGeometricTolerance associated with the specified geometric entities will be returned, regardless of type.
        Returns an array of PMIImportedGeometricTolerance objects that are associated with the specified entities and match the type filter (if provided)
        or an empty array if no matching PMI were found.
        """
        return [PMIImportedGeometricTolerance()]
    @property
    def count(self) -> int:
        """
        Gets the number of PMIImportedGeometricTolerance in the collection.
        """
        return int()

class PMIImportedGraphicals(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Provides access to the all the PMIImportedGraphical objects in a component.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIImportedGraphicals:
        return PMIImportedGraphicals()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> PMIImportedGraphical:
        return None
    def __iter__(self) -> Iterator[PMIImportedGraphical]:
        return None
    def item(self, index: int) -> PMIImportedGraphical:
        """
        Gets the specified PMIImportedGraphical 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 PMIImportedGraphical()
    def itemByName(self, name: str) -> PMIImportedGraphical:
        """
        Gets the specified PMIImportedGraphical from the collection using a name.
        name : The name of the PMIImportedGraphical within the collection to return.
        Returns the specified item or null if no item with the specified name was found.
        """
        return PMIImportedGraphical()
    def itemsByEntities(self, entities: list[core.Base]) -> list[PMIImportedGraphical]:
        """
        Gets all the PMIImportedGraphical from the collection that are associated with the specified geometric entities.
        
        This is useful for finding PMIImportedGraphical that reference specific geometric features.
        entities : An array of core.Base objects that represent the geometric entities to search for associated PMI. These can be BRepFace,
        BRepEdge or BRepVertex objects. The function will return the PMIImportedGraphical that references any of these entities in their geometric associations.
        Returns an array of PMIImportedGraphical objects that are associated with the specified entities and match the type filter (if provided)
        or an empty array if no matching PMI were found.
        """
        return [PMIImportedGraphical()]
    @property
    def count(self) -> int:
        """
        Gets the number of PMIImportedGraphical in the collection.
        """
        return int()

class PMIImportedNotes(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Provides access to the all the PMIImportedNote objects in a component.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIImportedNotes:
        return PMIImportedNotes()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> PMIImportedNote:
        return None
    def __iter__(self) -> Iterator[PMIImportedNote]:
        return None
    def item(self, index: int) -> PMIImportedNote:
        """
        Gets the specified PMIImportedNote 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 PMIImportedNote()
    def itemByName(self, name: str) -> PMIImportedNote:
        """
        Gets the specified PMIImportedNote from the collection using a name.
        name : The name of the PMIImportedNote within the collection to return.
        Returns the specified item or null if no item with the specified name was found.
        """
        return PMIImportedNote()
    def itemsByEntities(self, entities: list[core.Base]) -> list[PMIImportedNote]:
        """
        Gets all the PMIImportedNote from the collection that are associated with the specified geometric entities.
        
        This is useful for finding PMIImportedNote that reference specific geometric features.
        entities : An array of core.Base objects that represent the geometric entities to search for associated PMI. These can be BRepFace,
        BRepEdge or BRepVertex objects. The function will return the PMIImportedNote that references any of these entities in their geometric associations.
        Returns an array of PMIImportedNote objects that are associated with the specified entities and match the type filter (if provided)
        or an empty array if no matching PMI were found.
        """
        return [PMIImportedNote()]
    @property
    def count(self) -> int:
        """
        Gets the number of PMIImportedNote in the collection.
        """
        return int()

class PMIImportedSurfaceTextures(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Provides access to the all the PMIImportedSurfaceTexture objects in a component.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIImportedSurfaceTextures:
        return PMIImportedSurfaceTextures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> PMIImportedSurfaceTexture:
        return None
    def __iter__(self) -> Iterator[PMIImportedSurfaceTexture]:
        return None
    def item(self, index: int) -> PMIImportedSurfaceTexture:
        """
        Gets the specified PMIImportedSurfaceTexture 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 PMIImportedSurfaceTexture()
    def itemByName(self, name: str) -> PMIImportedSurfaceTexture:
        """
        Gets the specified PMIImportedSurfaceTexture from the collection using a name.
        name : The name of the PMIImportedSurfaceTexture within the collection to return.
        Returns the specified item or null if no item with the specified name was found.
        """
        return PMIImportedSurfaceTexture()
    def itemsByEntities(self, entities: list[core.Base]) -> list[PMIImportedSurfaceTexture]:
        """
        Gets all the PMIImportedSurfaceTexture from the collection that are associated with the specified geometric entities.
        
        This is useful for finding PMIImportedSurfaceTexture that reference specific geometric features.
        entities : An array of core.Base objects that represent the geometric entities to search for associated PMI. These can be BRepFace,
        BRepEdge or BRepVertex objects. The function will return the PMIImportedSurfaceTexture that references any of these entities in their geometric associations.
        Returns an array of PMIImportedSurfaceTexture objects that are associated with the specified entities and match the type filter (if provided)
        or an empty array if no matching PMI were found.
        """
        return [PMIImportedSurfaceTexture()]
    @property
    def count(self) -> int:
        """
        Gets the number of PMIImportedSurfaceTexture in the collection.
        """
        return int()

class PMIInput(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    A Base class for all PMI creation input types. The different types of PMI creation inputs are derived from this base class.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIInput:
        return PMIInput()
    @property
    def isPerpendicularLine(self) -> bool:
        """
        Controls whether the PMI text is perpendicular to the leader line or parallel to it.
        """
        return bool()
    @isPerpendicularLine.setter
    def isPerpendicularLine(self, value: bool):
        """
        Controls whether the PMI text is perpendicular to the leader line or parallel to it.
        """
        pass
    @property
    def horizontalAlignment(self) -> core.HorizontalAlignments:
        """
        Controls the horizontal alignment of the PMI text relative to its anchor point.
        
        This determines how the text box is positioned relative to the text placement point.
        """
        return core.HorizontalAlignments()
    @horizontalAlignment.setter
    def horizontalAlignment(self, value: core.HorizontalAlignments):
        """
        Controls the horizontal alignment of the PMI text relative to its anchor point.
        
        This determines how the text box is positioned relative to the text placement point.
        """
        pass
    @property
    def verticalAlignment(self) -> core.VerticalAlignments:
        """
        Controls the vertical alignment of the PMI text relative to its anchor point.
        
        This determines the vertical positioning of the text box relative to the calculated text placement point.
        """
        return core.VerticalAlignments()
    @verticalAlignment.setter
    def verticalAlignment(self, value: core.VerticalAlignments):
        """
        Controls the vertical alignment of the PMI text relative to its anchor point.
        
        This determines the vertical positioning of the text box relative to the calculated text placement point.
        """
        pass
    @property
    def plane(self) -> core.Plane:
        """
        Get the annotation plane of the PMI.
        
        This plane determines the plane in which the PMI text and graphics are drawn.
        The plane is relative to the geometry's component space where the PMI is being created.
        """
        return core.Plane()
    @property
    def annotationTextPoint(self) -> core.Point3D:
        """
        Gets and sets the annotation point where the leader line starts.
        
        This point must be a valid point on the annotation plane.
        The point is relative to the geometry's component space where the PMI is being created.
        """
        return core.Point3D()
    @annotationTextPoint.setter
    def annotationTextPoint(self, value: core.Point3D):
        """
        Gets and sets the annotation point where the leader line starts.
        
        This point must be a valid point on the annotation plane.
        The point is relative to the geometry's component space where the PMI is being created.
        """
        pass
    @property
    def leaderLineExtension(self) -> float:
        """
        Gets and sets the length of the leader line extension in cm.
        
        This value extends the leader line in the direction determined by the perpendicular setting.
        """
        return float()
    @leaderLineExtension.setter
    def leaderLineExtension(self, value: float):
        """
        Gets and sets the length of the leader line extension in cm.
        
        This value extends the leader line in the direction determined by the perpendicular setting.
        """
        pass
    @property
    def segments(self) -> list[PMISegment]:
        """
        Gets and sets the list of PMISegments used to define the PMI text.
        
        The segments can be any combination of PMITextSegment, PMISymbolSegment and PMILineBreakSegment objects.
        
        Changing this property will result in changing the displayed text of the PMI.
        """
        return [PMISegment()]
    @segments.setter
    def segments(self, value: list[PMISegment]):
        """
        Gets and sets the list of PMISegments used to define the PMI text.
        
        The segments can be any combination of PMITextSegment, PMISymbolSegment and PMILineBreakSegment objects.
        
        Changing this property will result in changing the displayed text of the PMI.
        """
        pass
    @property
    def isShowImportedGeometry(self) -> bool:
        """
        Gets and sets whether the original graphics/geometry of the PMI should be visible.
        
        Applicable only to PMI that has been converted.
        """
        return bool()
    @isShowImportedGeometry.setter
    def isShowImportedGeometry(self, value: bool):
        """
        Gets and sets whether the original graphics/geometry of the PMI should be visible.
        
        Applicable only to PMI that has been converted.
        """
        pass

class PMILeaderLineNotes(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Provides access to the all the PMILeaderLineNote objects in a component.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMILeaderLineNotes:
        return PMILeaderLineNotes()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> PMILeaderLineNote:
        return None
    def __iter__(self) -> Iterator[PMILeaderLineNote]:
        return None
    def item(self, index: int) -> PMILeaderLineNote:
        """
        Gets the specified PMILeaderLineNote 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 PMILeaderLineNote()
    def itemByName(self, name: str) -> PMILeaderLineNote:
        """
        Gets the specified PMILeaderLineNote from the collection using a name.
        name : The name of the PMILeaderLineNote within the collection to return.
        Returns the specified item or null if no item with the specified name was found.
        """
        return PMILeaderLineNote()
    def itemsByEntities(self, entities: list[core.Base]) -> list[PMILeaderLineNote]:
        """
        Gets all the PMILeaderLineNote from the collection that are associated with the specified geometric entities.
        
        This is useful for finding PMILeaderLineNote that reference specific geometric features.
        entities : An array of core.Base objects that represent the geometric entities to search for associated PMI. These can be BRepFace,
        BRepEdge or BRepVertex objects. The function will return the PMILeaderLineNote that references any of these entities in their geometric associations.
        Returns an array of PMILeaderLineNote objects that are associated with the specified entities and match the type filter (if provided)
        or an empty array if no matching PMI were found.
        """
        return [PMILeaderLineNote()]
    def createInput(self, entity: core.Base) -> PMILeaderLineNoteInput:
        """
        Creates a PMILeaderLineNoteInput object that is in turn used to create a Leader Line Note PMI.
        entity : A core.Base object that represents the geometric entity to which the Note PMI will be associated.
        
        This can be a BRepFace, BRepEdge, or BRepVertex object. For BRepEdge objects, only linear, circular
        and elliptical edges are supported. The note will be positioned relative to this entity and will
        maintain its association with the entity geometry.
        Native object will be used when setting the entity geometry.
        Returns a PMILeaderLineNoteInput object.
        """
        return PMILeaderLineNoteInput()
    def add(self, input: PMILeaderLineNoteInput) -> PMILeaderLineNote:
        """
        Creates a new Leader Line Note using the creation parameters in the PMILeaderLineNoteInput.
        input : A PMILeaderLineNoteInput object.
        Returns the newly created PMILeaderLineNote or null if the creation failed.
        """
        return PMILeaderLineNote()
    @property
    def count(self) -> int:
        """
        Gets the number of PMILeaderLineNote in the collection.
        """
        return int()

class PMIRoughness(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Represents roughness data used in surface texture PMI.
    Contains information about surface roughness parameters.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIRoughness:
        return PMIRoughness()
    @property
    def hasValue(self) -> bool:
        """
        Returns whether this PMIRoughness object has a valid value.
        """
        return bool()
    @property
    def length(self) -> float:
        """
        Gets the length value of the roughness measurement in cm.
        
        Requires hasValue to be true.
        
        This is a read-only property because imported PMI cannot be edited.
        """
        return float()
    @property
    def value(self) -> float:
        """
        Gets the value of the roughness measurement.
        
        Requires hasValue to be true.
        
        This is a read-only property because imported PMI cannot be edited.
        """
        return float()
    @property
    def parameterType(self) -> PMISurfaceTextureParameterTypes:
        """
        Gets the parameter type of the surface texture measurement.
        
        Requires hasValue to be true.
        
        This is a read-only property because imported PMI cannot be edited.
        """
        return PMISurfaceTextureParameterTypes()
    @property
    def isMaximum(self) -> bool:
        """
        Gets whether this represents a maximum value.
        
        Requires hasValue to be true.
        
        This is a read-only property because imported PMI cannot be edited.
        """
        return bool()

class PMISegment(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    A base class for all the segments used to define the text of a PMI.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMISegment:
        return PMISegment()
    @property
    def type(self) -> PMISegmentTypes:
        """
        Returns the PMISegmentTypes associated with this PMISegment.
        """
        return PMISegmentTypes()

class PMISettings(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Provides access to the PMISettings of a document.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMISettings:
        return PMISettings()
    @property
    def parentDesign(self) -> Design:
        """
        Gets the parent design.
        """
        return Design()
    @property
    def pmiStandardType(self) -> PMIStandardTypes:
        """
        Gets and sets the PMI standard type used by the document.
        """
        return PMIStandardTypes()
    @pmiStandardType.setter
    def pmiStandardType(self, value: PMIStandardTypes):
        """
        Gets and sets the PMI standard type used by the document.
        """
        pass
    @property
    def annotationSize(self) -> float:
        """
        Gets and sets the size of PMI graphics in the document in cm.
        """
        return float()
    @annotationSize.setter
    def annotationSize(self, value: float):
        """
        Gets and sets the size of PMI graphics in the document in cm.
        """
        pass
    @property
    def defaultTolerance(self) -> float:
        """
        Gets and sets the default tolerance value used for PMI creation in cm.
        """
        return float()
    @defaultTolerance.setter
    def defaultTolerance(self, value: float):
        """
        Gets and sets the default tolerance value used for PMI creation in cm.
        """
        pass

class PolygonMesh(core.Base):
    """
    The PolygonMesh represents a mesh that can contain any
    combination of polygons, quads, and triangles.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PolygonMesh:
        return PolygonMesh()
    @property
    def nodeCount(self) -> int:
        """
        Returns the number of nodes in the mesh.
        """
        return int()
    @property
    def nodeCoordinatesAsDouble(self) -> list[float]:
        """
        Returns the node coordinates as an array of doubles where
        they are the x, y, z components of each coordinate.
        """
        return [float()]
    @property
    def nodeCoordinatesAsFloat(self) -> list[float]:
        """
        Returns the node coordinates as an array of floats where
        they are the x, y, z components of each coordinate.
        """
        return [float()]
    @property
    def nodeCoordinates(self) -> list[core.Point3D]:
        """
        Returns the node coordinates as an array of Point3D objects.
        """
        return [core.Point3D()]
    @property
    def triangleCount(self) -> int:
        """
        Returns the number of triangles in the mesh.
        """
        return int()
    @property
    def quadCount(self) -> int:
        """
        Returns the number of quads in the mesh.
        """
        return int()
    @property
    def polygonCount(self) -> int:
        """
        Returns the number of polygons (more than 4 sides) in the mesh.
        """
        return int()
    @property
    def normalVectorsAsDouble(self) -> list[float]:
        """
        Returns the normal vectors as an array of doubles where
        they are the x, y, z components of each vector. There is one normal vector for each index.
        """
        return [float()]
    @property
    def normalVectorsAsFloat(self) -> list[float]:
        """
        Returns the normal vectors as an array of floats. There is one normal vector for each index.
        """
        return [float()]
    @property
    def normalVectors(self) -> list[core.Vector3D]:
        """
        Returns the normal vectors as an array of Vector3D objects. There is one normal vector for each index.
        """
        return [core.Vector3D()]
    @property
    def triangleNodeIndices(self) -> list[int]:
        """
        Returns the index values that index into the NodeCoordinates and NormalVectors arrays to
        define the three coordinates of each triangle and the corresponding normal.
        """
        return [int()]
    @property
    def quadNodeIndices(self) -> list[int]:
        """
        Returns the index values that index into the NodeCoordinates and NormalVectors arrays to
        define the four coordinates of each quad and the corresponding normal.
        """
        return [int()]
    @property
    def polygonNodeIndices(self) -> list[int]:
        """
        Returns the index values that index into the NodeCoordinates and NormalVectors arrays to
        define the coordinates of each polygon and the corresponding normal.
        """
        return [int()]
    @property
    def nodeCountPerPolygon(self) -> list[int]:
        """
        Returns the number of nodes that define each polygon. For example,
        if NodeCountPerPolygon[0] returns 6 it indicates the first polygon
        is defined using 6 nodes. The first six indices returned by the
        PolygonNodeIndices properties provide the look-up into the NodeCoordinates
        array.
        """
        return [int()]
    @property
    def triangleFaceGroupTempIds(self) -> list[int]:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the face groups tempId values for every triangle of the mesh. The tempId corresponds
        to the triangles, which are defined in triangleNodeIndices.
        """
        return [int()]
    @property
    def wallThickness(self) -> list[float]:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the wall thickness per node in cm. This property calculates the wall thickness of the mesh,
        i.e., the distance of a surface of the mesh to the opposing surface.
        """
        return [float()]

class Profile(core.Base):
    """
    Represents a profile in a sketch. Profiles are automatically computed by Fusion and
    represent closed areas within the sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Profile:
        return Profile()
    def createForAssemblyContext(self, occurrence: Occurrence) -> Profile:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        Returns null if this isn't the NativeObject.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return Profile()
    def areaProperties(self, accuracy: CalculationAccuracy = CalculationAccuracy.LowCalculationAccuracy) -> AreaProperties:
        """
        Calculates the area properties for the profile.
        accuracy : Specifies the desired level of computational accuracy of the property calculations.
        The default value of 'LowCalculationAccuracy' returns results within a +/- 1% error margin.
        Returns the AreaProperties object that has properties for getting the area, perimeter, centroid, etc
        of this profile.
        """
        return AreaProperties()
    @property
    def boundingBox(self) -> core.BoundingBox3D:
        """
        Returns the 3D bounding box of the profile in sketch space.
        """
        return core.BoundingBox3D()
    @property
    def plane(self) -> core.Plane:
        """
        Returns the plane the profile is defined in. Profiles are always planar and exist within
        a single plane.
        """
        return core.Plane()
    @property
    def profileLoops(self) -> ProfileLoops:
        """
        The loops or closed areas within this profile. There is always a single outer loop
        but there can be zero to many inner loops defining voids in the profile.
        """
        return ProfileLoops()
    @property
    def parentSketch(self) -> Sketch:
        """
        Returns the parent sketch of the profile.
        """
        return Sketch()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this
        object in an assembly. This is only valid in the case where this
        is acting as a proxy in an assembly. Returns null
        in the case where the object is not in the context of an assembly.
        but is already the native object.
        """
        return Occurrence()
    @property
    def nativeObject(self) -> Profile:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return Profile()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the Profile object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same profile.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        """
        return str()
    @property
    def face(self) -> BRepFace:
        """
        Returns a temporary BRepFace object that is the same shape as the profile. The geometry
        of the returned face is defined in the 3D space of the parent sketch of the profile.
        
        This can be useful when wanting to use a profile in conjunction with the
        TemporaryBRepManager object to create B-Rep objects.
        """
        return BRepFace()

class ProfileCurve(core.Base):
    """
    A single curve in a profile.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ProfileCurve:
        return ProfileCurve()
    def createForAssemblyContext(self, occurrence: Occurrence) -> ProfileCurve:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        Returns null if this isn't the NativeObject.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return ProfileCurve()
    @property
    def geometry(self) -> core.Curve3D:
        """
        Returns the geometric entity of this portion of the profile.
        """
        return core.Curve3D()
    @property
    def geometryType(self) -> core.Curve3DTypes:
        """
        Return the geometry type that the Geometry property will return.
        """
        return core.Curve3DTypes()
    @property
    def sketchEntity(self) -> SketchEntity:
        """
        Returns the associated sketch entity that defines this curve.
        """
        return SketchEntity()
    @property
    def parentProfileLoop(self) -> ProfileLoop:
        """
        Returns the parent ProfileLoop object.
        """
        return ProfileLoop()
    @property
    def parentProfile(self) -> Profile:
        """
        Returns the parent Profile object.
        """
        return Profile()
    @property
    def parentSketch(self) -> Sketch:
        """
        Returns the parent Profile object.
        """
        return Sketch()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this object
        in an assembly. This is only valid in the case where this is acting
        as a proxy in an assembly. Returns null in the case where the object
        is not in the context of an assembly but is already the native object.
        """
        return Occurrence()
    @property
    def nativeObject(self) -> ProfileCurve:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return ProfileCurve()
    @property
    def boundingBox(self) -> core.BoundingBox3D:
        """
        Returns the bounding box of the profile curve in sketch space.
        """
        return core.BoundingBox3D()

class ProfileCurves(core.Base):
    """
    A collection of profile curves within a profile loop.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ProfileCurves:
        return ProfileCurves()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ProfileCurve:
        return None
    def __iter__(self) -> Iterator[ProfileCurve]:
        return None
    def item(self, index: int) -> ProfileCurve:
        """
        Function that returns the specified profile curve 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 ProfileCurve()
    @property
    def count(self) -> int:
        """
        Returns the number of curves in the collection.
        """
        return int()

class ProfileLoop(core.Base):
    """
    A loop within a profile.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ProfileLoop:
        return ProfileLoop()
    def createForAssemblyContext(self, occurrence: Occurrence) -> ProfileLoop:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        Returns null if this isn't the NativeObject.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return ProfileLoop()
    @property
    def isOuter(self) -> bool:
        """
        Indicates if this is an outer or inner loop. Profiles always have
        one outer loop and have an zero to many inner loops defining voids.
        """
        return bool()
    @property
    def profileCurves(self) -> ProfileCurves:
        """
        Returns a collection of the curves making up this loop.
        """
        return ProfileCurves()
    @property
    def parentProfile(self) -> Profile:
        """
        Returns the parent Profile object.
        """
        return Profile()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this object
        in an assembly. This is only valid in the case where this is acting
        as a proxy in an assembly. Returns null in the case where the object
        is not in the context of an assembly but is already the native object.
        """
        return Occurrence()
    @property
    def nativeObject(self) -> ProfileLoop:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return ProfileLoop()

class ProfileLoops(core.Base):
    """
    A collection of loops within a Profile.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ProfileLoops:
        return ProfileLoops()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ProfileLoop:
        return None
    def __iter__(self) -> Iterator[ProfileLoop]:
        return None
    def item(self, index: int) -> ProfileLoop:
        """
        Function that returns the specified profile loop 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 ProfileLoop()
    @property
    def count(self) -> int:
        """
        Returns the number of loops within this profile.
        """
        return int()

class Profiles(core.Base):
    """
    A collection of all of the closed profiles currently calculated for this sketch. Closed profiles are
    automatically computed by Fusion and represent closed areas within the sketch.
    
    This class also provides some additional utility functions to create open profiles and text based profiles
    that can be used as input for various features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Profiles:
        return Profiles()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> Profile:
        return None
    def __iter__(self) -> Iterator[Profile]:
        return None
    def item(self, index: int) -> Profile:
        """
        Function that returns the specified closed profile 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 Profile()
    @property
    def count(self) -> int:
        """
        Returns the number of closed profiles in the sketch. Open and text based profiles are not included.
        """
        return int()

class RectangularPatternConstraintInput(core.Base):
    """
    Used to define the inputs need to create a rectangular pattern in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RectangularPatternConstraintInput:
        return RectangularPatternConstraintInput()
    def setDirectionOne(self, directionOneEntity: SketchLine, quantityOne: core.ValueInput, distanceOne: core.ValueInput) -> bool:
        """
        Sets all of the input required to define the pattern in the first direction.
        directionOneEntity : Specifies the SketchLine object used to define the first direction entity.
        
        This argument can be null to indicate that the default first direction is to be used, which is along the X axis of the sketch.
        quantityOne : Specifies the number of instances in the first direction.
        distanceOne : Specifies the distance in the first direction. How this value is used depends on the value of the PatternDistanceType property.
        If the value is ExtentPatternDistanceType then it defines the total distance of the pattern.
        If the value is SpacingPatternDistanceType then it defines the distance between each element.
        Returns true if it was successful.
        """
        return bool()
    def setDirectionTwo(self, directionTwoEntity: SketchLine, quantityTwo: core.ValueInput, distanceTwo: core.ValueInput) -> bool:
        """
        Sets all of the input required to define the pattern in the second direction.
        directionTwoEntity : Specifies the SketchLine object used to define the second direction entity.
        
        This argument can be null to indicate that the default second direction is to be used, which is 90 degrees to the first direction.
        quantityTwo : Specifies the number of instances in the second direction.
        distanceTwo : Specifies the distance in the second direction. How this value is used depends on the value of the PatternDistanceType property.
        If the value is ExtentPatternDistanceType then it defines the total distance of the pattern.
        If the value is SpacingPatternDistanceType then it defines the distance between each element.
        Returns true if it was successful.
        """
        return bool()
    @property
    def entities(self) -> list[SketchEntity]:
        """
        Gets and sets the entities to pattern. Sketch points and curves are valid
        entities to pattern.
        """
        return [SketchEntity()]
    @entities.setter
    def entities(self, value: list[SketchEntity]):
        """
        Gets and sets the entities to pattern. Sketch points and curves are valid
        entities to pattern.
        """
        pass
    @property
    def directionOneEntity(self) -> SketchLine:
        """
        Defines the first direction of the pattern. This can be null which indicates
        to use the default which is the X-axis of the sketch. Setting this property
        to null will automatically clear directionTwoEntity, if it has been set.
        """
        return SketchLine()
    @directionOneEntity.setter
    def directionOneEntity(self, value: SketchLine):
        """
        Defines the first direction of the pattern. This can be null which indicates
        to use the default which is the X-axis of the sketch. Setting this property
        to null will automatically clear directionTwoEntity, if it has been set.
        """
        pass
    @property
    def directionTwoEntity(self) -> SketchLine:
        """
        Defines the second direction of the pattern. This can be null which indicates
        to use the default which is perpendicular to direction one. The directionOneEntity
        property must be set before setting this property.
        """
        return SketchLine()
    @directionTwoEntity.setter
    def directionTwoEntity(self, value: SketchLine):
        """
        Defines the second direction of the pattern. This can be null which indicates
        to use the default which is perpendicular to direction one. The directionOneEntity
        property must be set before setting this property.
        """
        pass
    @property
    def quantityOne(self) -> core.ValueInput:
        """
        Gets and sets the number of instances in the first direction.
        """
        return core.ValueInput()
    @quantityOne.setter
    def quantityOne(self, value: core.ValueInput):
        """
        Gets and sets the number of instances in the first direction.
        """
        pass
    @property
    def quantityTwo(self) -> core.ValueInput:
        """
        Gets and sets the number of instances in the second direction.
        """
        return core.ValueInput()
    @quantityTwo.setter
    def quantityTwo(self, value: core.ValueInput):
        """
        Gets and sets the number of instances in the second direction.
        """
        pass
    @property
    def distanceOne(self) -> core.ValueInput:
        """
        Gets and sets the distance in the first direction.
        """
        return core.ValueInput()
    @distanceOne.setter
    def distanceOne(self, value: core.ValueInput):
        """
        Gets and sets the distance in the first direction.
        """
        pass
    @property
    def distanceTwo(self) -> core.ValueInput:
        """
        Gets and sets the distance in the second direction.
        """
        return core.ValueInput()
    @distanceTwo.setter
    def distanceTwo(self, value: core.ValueInput):
        """
        Gets and sets the distance in the second direction.
        """
        pass
    @property
    def isSymmetricInDirectionOne(self) -> bool:
        """
        Gets and sets if the pattern in direction one is in one direction or is symmetric.
        """
        return bool()
    @isSymmetricInDirectionOne.setter
    def isSymmetricInDirectionOne(self, value: bool):
        """
        Gets and sets if the pattern in direction one is in one direction or is symmetric.
        """
        pass
    @property
    def isSymmetricInDirectionTwo(self) -> bool:
        """
        Gets and sets if the pattern in direction two is in one direction or is symmetric.
        """
        return bool()
    @isSymmetricInDirectionTwo.setter
    def isSymmetricInDirectionTwo(self, value: bool):
        """
        Gets and sets if the pattern in direction two is in one direction or is symmetric.
        """
        pass
    @property
    def distanceType(self) -> PatternDistanceType:
        """
        Gets and sets how the distance between elements is computed.
        """
        return PatternDistanceType()
    @distanceType.setter
    def distanceType(self, value: PatternDistanceType):
        """
        Gets and sets how the distance between elements is computed.
        """
        pass
    @property
    def isSuppressed(self) -> list[bool]:
        """
        Specifies which, if any, instances of the pattern are suppressed. This
        defaults to all instances being visible. This returns an array of Booleans
        that indicates if a particular instance in the pattern is suppressed or
        not. A value of true will result in the associated instance being
        suppressed.
        
        Both the quantityOne and quantityTwo properties must be set with valid
        values before using the isSuppressed property is valid. A quantity of
        one is a valid value.
        
        The indices represent the pattern instances in a row-column order, with the
        initial geometry not counting. For example, if you have a 4x4 pattern, the
        array will have 15 elements rather than 16 because the original geometry
        cannot be suppressed as part of the pattern. The first element in the array
        is the one next to the original in the first direction. The second element is
        the next one on the first row, and the third is the next one. The fourth element
        will be the first element in the row next to the first row that contains the
        original geometry.
        """
        return [bool()]
    @isSuppressed.setter
    def isSuppressed(self, value: list[bool]):
        """
        Specifies which, if any, instances of the pattern are suppressed. This
        defaults to all instances being visible. This returns an array of Booleans
        that indicates if a particular instance in the pattern is suppressed or
        not. A value of true will result in the associated instance being
        suppressed.
        
        Both the quantityOne and quantityTwo properties must be set with valid
        values before using the isSuppressed property is valid. A quantity of
        one is a valid value.
        
        The indices represent the pattern instances in a row-column order, with the
        initial geometry not counting. For example, if you have a 4x4 pattern, the
        array will have 15 elements rather than 16 because the original geometry
        cannot be suppressed as part of the pattern. The first element in the array
        is the one next to the original in the first direction. The second element is
        the next one on the first row, and the third is the next one. The fourth element
        will be the first element in the row next to the first row that contains the
        original geometry.
        """
        pass

class RectangularPatternFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a rectangular pattern
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RectangularPatternFeatureInput:
        return RectangularPatternFeatureInput()
    def setDirectionTwo(self, directionTwoEntity: core.Base, quantityTwo: core.ValueInput, distanceTwo: core.ValueInput) -> bool:
        """
        Sets all of the input required to define the pattern in the second direction.
        directionTwoEntity : Specifies the entity used to define the second direction entity. This can be a linear edge, construction axis, sketch line or rectangular pattern feature.
        If a rectangular pattern feature is set, the directionOneEntity and directionTwoEntity properties return the same rectangular pattern feature.
        
        This argument can be null to indicate that the default second direction is to be used, which is 90 degrees to the first direction.
        quantityTwo : Specifies the number of instances in the second direction.
        distanceTwo : Specifies the distance in the second direction. How this value is used depends on the value of the PatternDistanceType property.
        If the value is ExtentPatternDistanceType then it defines the total distance of the pattern.
        If the value is SpacingPatternDistanceType then it defines the distance between each element.
        Returns true if it was successful.
        """
        return bool()
    @property
    def inputEntities(self) -> core.ObjectCollection:
        """
        Gets and sets the input entities. The collection can contain BRepFace, PartFeature, BRepBody, or Occurrence
        objects. All of the entities provided must be the same type. For example, it must contain only bodies and can't
        contain both bodies and faces.
        
        You can also pattern ConstructionPoint, ConstructionAxis, and ConstructionPlane objects. When patterning any
        construction goemetry, only one entity can be patterned at a time, so the ObjectCollection must contain a
        single item.
        """
        return core.ObjectCollection()
    @inputEntities.setter
    def inputEntities(self, value: core.ObjectCollection):
        """
        Gets and sets the input entities. The collection can contain BRepFace, PartFeature, BRepBody, or Occurrence
        objects. All of the entities provided must be the same type. For example, it must contain only bodies and can't
        contain both bodies and faces.
        
        You can also pattern ConstructionPoint, ConstructionAxis, and ConstructionPlane objects. When patterning any
        construction goemetry, only one entity can be patterned at a time, so the ObjectCollection must contain a
        single item.
        """
        pass
    @property
    def directionOneEntity(self) -> core.Base:
        """
        Gets and sets the first direction entity.
        This can be a linear edge, construction axis, sketch line or rectangular pattern feature.
        If a rectangular pattern feature is set, the directionOneEntity and directionTwoEntity properties return the same rectangular pattern feature.
        """
        return core.Base()
    @directionOneEntity.setter
    def directionOneEntity(self, value: core.Base):
        """
        Gets and sets the first direction entity.
        This can be a linear edge, construction axis, sketch line or rectangular pattern feature.
        If a rectangular pattern feature is set, the directionOneEntity and directionTwoEntity properties return the same rectangular pattern feature.
        """
        pass
    @property
    def directionTwoEntity(self) -> core.Base:
        """
        Gets and sets the second direction entity.
        This can be a linear edge, construction axis, sketch line or rectangular pattern feature.
        If a rectangular pattern feature is set, the directionOneEntity and directionTwoEntity properties return the same rectangular pattern feature.
        """
        return core.Base()
    @directionTwoEntity.setter
    def directionTwoEntity(self, value: core.Base):
        """
        Gets and sets the second direction entity.
        This can be a linear edge, construction axis, sketch line or rectangular pattern feature.
        If a rectangular pattern feature is set, the directionOneEntity and directionTwoEntity properties return the same rectangular pattern feature.
        """
        pass
    @property
    def quantityOne(self) -> core.ValueInput:
        """
        Gets and sets the number of instances in the first direction.
        """
        return core.ValueInput()
    @quantityOne.setter
    def quantityOne(self, value: core.ValueInput):
        """
        Gets and sets the number of instances in the first direction.
        """
        pass
    @property
    def quantityTwo(self) -> core.ValueInput:
        """
        Gets and sets the number of instances in the second direction.
        """
        return core.ValueInput()
    @quantityTwo.setter
    def quantityTwo(self, value: core.ValueInput):
        """
        Gets and sets the number of instances in the second direction.
        """
        pass
    @property
    def distanceOne(self) -> core.ValueInput:
        """
        Gets and sets the distance in the first direction.
        """
        return core.ValueInput()
    @distanceOne.setter
    def distanceOne(self, value: core.ValueInput):
        """
        Gets and sets the distance in the first direction.
        """
        pass
    @property
    def distanceTwo(self) -> core.ValueInput:
        """
        Gets and sets the distance in the second direction.
        """
        return core.ValueInput()
    @distanceTwo.setter
    def distanceTwo(self, value: core.ValueInput):
        """
        Gets and sets the distance in the second direction.
        """
        pass
    @property
    def directionOne(self) -> core.Vector3D:
        """
        Returns a Vector3D indicating the positive direction of direction one.
        """
        return core.Vector3D()
    @property
    def directionTwo(self) -> core.Vector3D:
        """
        Returns a Vector3D indicating the positive direction of direction two.
        """
        return core.Vector3D()
    @property
    def isSymmetricInDirectionOne(self) -> bool:
        """
        Gets and sets if the pattern in direction one is in one direction or symmetric.
        """
        return bool()
    @isSymmetricInDirectionOne.setter
    def isSymmetricInDirectionOne(self, value: bool):
        """
        Gets and sets if the pattern in direction one is in one direction or symmetric.
        """
        pass
    @property
    def isSymmetricInDirectionTwo(self) -> bool:
        """
        Gets and sets if the pattern in direction two is in one direction or symmetric.
        """
        return bool()
    @isSymmetricInDirectionTwo.setter
    def isSymmetricInDirectionTwo(self, value: bool):
        """
        Gets and sets if the pattern in direction two is in one direction or symmetric.
        """
        pass
    @property
    def patternDistanceType(self) -> PatternDistanceType:
        """
        Gets and sets how the distance between elements is computed.
        """
        return PatternDistanceType()
    @patternDistanceType.setter
    def patternDistanceType(self, value: PatternDistanceType):
        """
        Gets and sets how the distance between elements is computed.
        """
        pass
    @property
    def patternComputeOption(self) -> PatternComputeOptions:
        """
        Gets and sets the compute option when patterning features. The default value for this is AdjustPatternCompute.
        This property only applies when patterning features and is ignored in the direct modeling environment.
        """
        return PatternComputeOptions()
    @patternComputeOption.setter
    def patternComputeOption(self, value: PatternComputeOptions):
        """
        Gets and sets the compute option when patterning features. The default value for this is AdjustPatternCompute.
        This property only applies when patterning features and is ignored in the direct modeling environment.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class RectangularPatternFeatures(core.Base):
    """
    Collection that provides access to all of the existing rectangular pattern features in a component
    and supports the ability to create new rectangular pattern features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RectangularPatternFeatures:
        return RectangularPatternFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> RectangularPatternFeature:
        return None
    def __iter__(self) -> Iterator[RectangularPatternFeature]:
        return None
    def item(self, index: int) -> RectangularPatternFeature:
        """
        Function that returns the specified rectangular pattern feature 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 RectangularPatternFeature()
    def createInput(self, inputEntities: core.ObjectCollection, directionOneEntity: core.Base, quantityOne: core.ValueInput, distanceOne: core.ValueInput, patternDistanceType: PatternDistanceType) -> RectangularPatternFeatureInput:
        """
        Creates a RectangularPatternFeatureInput object. Use properties and methods on this object
        to define the rectangular pattern you want to create and then use the Add method, passing in
        the RectangularPatternFeatureInput object.
        inputEntities : The collection can contain faces, features, bodies or occurrences.
        All of the entities must be of a single type. For example, it can't contain features and occurrences
        but only features or occurrences.
        directionOneEntity : Specifies the entity used to define the first direction entity. This can be a linear edge, construction axis, sketch line or rectangular pattern feature.
        If a rectangular pattern feature is set, the directionOneEntity and directionTwoEntity properties return the same rectangular pattern feature.
        quantityOne : Specifies the number of instances in the first direction.
        distanceOne : Specifies the distance in the first direction. How this value is used depends on the value of the PatternDistanceType property. A
        negative value can be used to change the direction.
        If the value is ExtentPatternDistanceType then it defines the total distance of the pattern.
        If the value is SpacingPatternDistanceType then it defines the distance between each element.
        patternDistanceType : Specifies how the distance between elements is computed.
        Returns the newly created RectangularPatternFeatureInput object or null if the creation failed.
        """
        return RectangularPatternFeatureInput()
    def add(self, input: RectangularPatternFeatureInput) -> RectangularPatternFeature:
        """
        Creates a new rectangular pattern feature.
        input : A RectangularPatternFeatureInput object that defines the desired rectangular pattern. Use the createInput
        method to create a new RectangularPatternFeatureInput object and then use methods on it
        (the RectangularPatternFeatureInput object) to define the rectangular pattern.
        Returns the newly created RectangularPatternFeature object or null if the creation failed.
        """
        return RectangularPatternFeature()
    def itemByName(self, name: str) -> RectangularPatternFeature:
        """
        Function that returns the specified rectangular pattern feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return RectangularPatternFeature()
    @property
    def count(self) -> int:
        """
        The number of rectangular pattern features in the collection.
        """
        return int()

class RefoldFeatures(core.Base):
    """
    Collection that provides access to all of the existing refold features in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RefoldFeatures:
        return RefoldFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> RefoldFeature:
        return None
    def __iter__(self) -> Iterator[RefoldFeature]:
        return None
    def item(self, index: int) -> RefoldFeature:
        """
        Function that returns the specified refold feature 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 RefoldFeature()
    def itemByName(self, name: str) -> RefoldFeature:
        """
        Function that returns the specified refold feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return RefoldFeature()
    @property
    def count(self) -> int:
        """
        The number of refold features in the collection.
        """
        return int()

class RemoveFeatures(core.Base):
    """
    Collection that provides access to all of the existing Remove features in a component
    and supports the ability to create new Remove features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RemoveFeatures:
        return RemoveFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> RemoveFeature:
        return None
    def __iter__(self) -> Iterator[RemoveFeature]:
        return None
    def item(self, index: int) -> RemoveFeature:
        """
        Function that returns the specified Remove feature 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 RemoveFeature()
    def itemByName(self, name: str) -> RemoveFeature:
        """
        Function that returns the specified remove feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return RemoveFeature()
    def add(self, itemToRemove: core.Base) -> RemoveFeature:
        """
        Creates a new Remove feature.
        itemToRemove : A single body (solid or surface) or component occurrence to remove.
        Returns the newly created RemoveFeature object or null if the creation failed.
        """
        return RemoveFeature()
    @property
    def count(self) -> int:
        """
        The number of Remove features in the collection.
        """
        return int()

class RenderEnvironment(core.Base):
    """
    A render environment that is used when defining the scene for rendering. You see these
    in the user interface in the "Environment Library" tab of the "Scene Settings" dialog.
    Use this with the backgroundEnvironment property of the SceneSettings object to set
    a render environment. For a custom render environment, use the loadCustomEnvironment
    method to statically create a custom environment and assign it to the backgroundEnvironment
    property.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RenderEnvironment:
        return RenderEnvironment()
    @staticmethod
    def loadCustomEnvironment(fullFilename: str) -> RenderEnvironment:
        """
        Statically creates a RenderEnvironment which can be used to set the environment for
        a scene using the SceneSettings.backgroundEnvironment property.
        fullFilename : The full path and filename of the custom environment file to load.
        Returns the RenderEnvironment object or null if the file could not be loaded.
        """
        return RenderEnvironment()
    @property
    def isCustomEnvironment(self) -> bool:
        """
        Returns true if this environment is a custom environment.
        """
        return bool()
    @property
    def name(self) -> str:
        """
        The name of the environment.
        """
        return str()
    @property
    def id(self) -> str:
        """
        The internal ID of the environment.
        """
        return str()

class RenderEnvironments(core.Base):
    """
    The list of available render environments. This represents the list of environments
    shown in the "Scene Settings" dialog as being in the "Fusion Library". It does not
    include a custom environment, if one has been loaded.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RenderEnvironments:
        return RenderEnvironments()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> RenderEnvironment:
        return None
    def __iter__(self) -> Iterator[RenderEnvironment]:
        return None
    def item(self, index: int) -> RenderEnvironment:
        """
        Method that returns the specified render environment using an index into the collection.
        index : The index of the item within the collection. The first item has an index of 0.
        Returns the specified render environment or null if an invalid index was specified.
        """
        return RenderEnvironment()
    def itemByName(self, name: str) -> RenderEnvironment:
        """
        Returns the specified render environment using the name as seen in the user interface.
        name : The name of the render environment to return.
        Returns the specified render environment or null if there's no match on the name.
        """
        return RenderEnvironment()
    def itemById(self, id: str) -> RenderEnvironment:
        """
        Returns the render environment with the specified ID.
        id : The ID of the render environment to return.
        Returns the specified render environment or null if the ID does not match a render environment.
        """
        return RenderEnvironment()
    @property
    def count(self) -> int:
        """
        The number of render environments in the collection.
        """
        return int()

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

class RenderFuture(core.Base):
    """
    Used to check the state of a local or in canvas rendering.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RenderFuture:
        return RenderFuture()
    @property
    def progress(self) -> float:
        """
        Returns the progress of this rendering expressed as a percentage
        where 0.0 is no progress and 1.0 is complete.
        """
        return float()
    @property
    def renderState(self) -> LocalRenderStates:
        """
        Returns the current state of the rendering.
        """
        return LocalRenderStates()
    @property
    def imageWidth(self) -> int:
        """
        Returns the width of the image. The width was specified when the
        rendering was started.
        """
        return int()
    @property
    def imageHeight(self) -> int:
        """
        Returns the height of the image. The height was specified when the
        rendering was started.
        """
        return int()
    @property
    def filename(self) -> str:
        """
        The filename that the finished rendering will be saved to. If being
        saved to the cloud, this is the name Fusion will use for the completed
        rendering.
        """
        return str()

class Rendering(core.Base):
    """
    Provides access to the ability to render in a background process on the local machine.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Rendering:
        return Rendering()
    def startLocalRender(self, filename: str = "", camera: core.Camera = None) -> RenderFuture:
        """
        Starts a local rendering process using either the active viewport or a specified camera to define
        the camera information. This starts a background process on the local machine to generate the rendering.
        Even though this is a background process, it is tied to the running Fusion process and will be terminated
        if Fusion is shut down. If multiple local renders are started, they are queued and only one runs at a time.
        filename : Optional argument that is the full path and filename of the file to write the resulting rendering
        to. The file extension can be .png, .jpg, .jpeg, or .tiff and the file will be saved as that type.
        If not provided or is an empty string, the rendering will be saved to the cloud as a PNG file.
        camera : Optional argument that specifies the camera to use for the rendering. The default value is null, which
        will use the camera associated with the active viewport.
        Returns a RenderFuture that allows you to check the current state of this rendering job.
        """
        return RenderFuture()
    @property
    def aspectRatio(self) -> RenderAspectRatios:
        """
        Gets and sets the aspect ratio of the rendered image. This is not the resolution, but
        only the aspect ratio. To define a custom aspect ratio set this property to CustomAspectRatio
        and use the resolutionHeight and resolutionWidth properties to define the resolution and aspect ratio.
        The default value is the aspect ratio defined in the scene settings.
        The width and height must be between 108 and 4000 pixels.
        """
        return RenderAspectRatios()
    @aspectRatio.setter
    def aspectRatio(self, value: RenderAspectRatios):
        """
        Gets and sets the aspect ratio of the rendered image. This is not the resolution, but
        only the aspect ratio. To define a custom aspect ratio set this property to CustomAspectRatio
        and use the resolutionHeight and resolutionWidth properties to define the resolution and aspect ratio.
        The default value is the aspect ratio defined in the scene settings.
        The width and height must be between 108 and 4000 pixels.
        """
        pass
    @property
    def renderQuality(self) -> int:
        """
        Gets and sets the desired quality of the rendering. The quality is specified using a
        value between 25 and 100, where 75 is the equivalent of "Final" and 100 is
        the same as "Excellent" in the user interface. The default value is 75.
        """
        return int()
    @renderQuality.setter
    def renderQuality(self, value: int):
        """
        Gets and sets the desired quality of the rendering. The quality is specified using a
        value between 25 and 100, where 75 is the equivalent of "Final" and 100 is
        the same as "Excellent" in the user interface. The default value is 75.
        """
        pass
    @property
    def isBackgroundTransparent(self) -> bool:
        """
        Specifies if the background of the rendering should be transparent. The default
        is false, which means it will not be transparent.
        """
        return bool()
    @isBackgroundTransparent.setter
    def isBackgroundTransparent(self, value: bool):
        """
        Specifies if the background of the rendering should be transparent. The default
        is false, which means it will not be transparent.
        """
        pass
    @property
    def resolution(self) -> RenderResolutions:
        """
        Gets and sets the resolution of the rendered image. This is the final width and height of the
        image in pixels. To define a custom aspect ratio, use the resolutionHeight and resolutionWidth
        properties to define any resolution. Using those has the side effect of setting this property
        to CustomRenderResolution. Setting this to anything except CustomRenderResolution, will also have
        the side effect of setting the aspect ratio.
        """
        return RenderResolutions()
    @resolution.setter
    def resolution(self, value: RenderResolutions):
        """
        Gets and sets the resolution of the rendered image. This is the final width and height of the
        image in pixels. To define a custom aspect ratio, use the resolutionHeight and resolutionWidth
        properties to define any resolution. Using those has the side effect of setting this property
        to CustomRenderResolution. Setting this to anything except CustomRenderResolution, will also have
        the side effect of setting the aspect ratio.
        """
        pass
    @property
    def resolutionHeight(self) -> int:
        """
        Gets and sets the height of the image in pixels. If anything but CustomRenderAspectRatio is defined as the
        aspect ratio, the resolution width will be modified to maintain the specified aspect ratio.
        The height must be between 108 and 4000 pixels.
        """
        return int()
    @resolutionHeight.setter
    def resolutionHeight(self, value: int):
        """
        Gets and sets the height of the image in pixels. If anything but CustomRenderAspectRatio is defined as the
        aspect ratio, the resolution width will be modified to maintain the specified aspect ratio.
        The height must be between 108 and 4000 pixels.
        """
        pass
    @property
    def resolutionWidth(self) -> int:
        """
        Gets and sets the width of the image in pixels. If anything but CustomRenderAspectRatio is defined as the
        aspect ratio, the resolution height will be modified to maintain the specified aspect ratio.
        The width must be between 108 and 4000 pixels.
        """
        return int()
    @resolutionWidth.setter
    def resolutionWidth(self, value: int):
        """
        Gets and sets the width of the image in pixels. If anything but CustomRenderAspectRatio is defined as the
        aspect ratio, the resolution height will be modified to maintain the specified aspect ratio.
        The width must be between 108 and 4000 pixels.
        """
        pass

class RenderManager(core.Base):
    """
    Provides access to the Rendering functionality in Fusion and is accessed from the Design object.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RenderManager:
        return RenderManager()
    def activateRenderWorkspace(self) -> bool:
        """
        Activates the Render workspace for this design. If the workspace is already
        active, nothing happens and it remains active.
        Returns true if the activation was successful or if the Render workspace was already active.
        """
        return bool()
    @property
    def parentDesign(self) -> core.Product:
        """
        Returns the parent Design this RenderManager was obtained from.
        """
        return core.Product()
    @property
    def sceneSettings(self) -> SceneSettings:
        """
        Returns the SceneSettings object that provides access to all of the
        settings that control how the scene is rendered. This provides equivalent
        functionality as the "Settings" tab in the "SCENE SETTINGS" dialog.
        """
        return SceneSettings()
    @property
    def renderEnvironments(self) -> RenderEnvironments:
        """
        Provides access to the provided environments and supports specifying
        a custom environment. This provides access to the same list of environments
        that you see in the "Environment Library" tab of the "SCENE SETTINGS" dialog.
        """
        return RenderEnvironments()
    @property
    def rendering(self) -> Rendering:
        """
        Provides access to the local and cloud rendering capabilities of Fusion. In both
        cases, the rendering is done in a process external to Fusion, either a local or
        cloud rendering process.
        """
        return Rendering()
    @property
    def isRenderWorkspaceActive(self) -> bool:
        """
        Returns whether the Render workspace for this Design is active. Returns
        true if the workspace is active, false otherwise.
        """
        return bool()
    @property
    def inCanvasRendering(self) -> InCanvasRendering:
        """
        Provides access to the in-canvas rendering capabilities of Fusion. This
        uses the active viewport and the user will see the rendering as it takes place.
        """
        return InCanvasRendering()

class ReplaceFaceFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a replace face feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ReplaceFaceFeatureInput:
        return ReplaceFaceFeatureInput()
    @property
    def sourceFaces(self) -> core.ObjectCollection:
        """
        Gets and sets the entities that define the source faces to perform replace.
        The collection can contain the faces from a solid and/or from features. All the faces must be on the same body.
        """
        return core.ObjectCollection()
    @sourceFaces.setter
    def sourceFaces(self, value: core.ObjectCollection):
        """
        Gets and sets the entities that define the source faces to perform replace.
        The collection can contain the faces from a solid and/or from features. All the faces must be on the same body.
        """
        pass
    @property
    def targetFaces(self) -> core.Base:
        """
        Gets and sets the entities that define the target faces. The new faces must completely intersect the part.
        The collection can contain the surface faces, surface bodies and construction planes.
        """
        return core.Base()
    @targetFaces.setter
    def targetFaces(self, value: core.Base):
        """
        Gets and sets the entities that define the target faces. The new faces must completely intersect the part.
        The collection can contain the surface faces, surface bodies and construction planes.
        """
        pass
    @property
    def isTangentChain(self) -> bool:
        """
        Gets and sets if any faces that are tangentially connected to any of
        the input faces will also be included in setting InputEntities. It defaults to true.
        """
        return bool()
    @isTangentChain.setter
    def isTangentChain(self, value: bool):
        """
        Gets and sets if any faces that are tangentially connected to any of
        the input faces will also be included in setting InputEntities. It defaults to true.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class ReplaceFaceFeatures(core.Base):
    """
    Collection that provides access to all of the existing replace face features in a component
    and supports the ability to create new replace face features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ReplaceFaceFeatures:
        return ReplaceFaceFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ReplaceFaceFeature:
        return None
    def __iter__(self) -> Iterator[ReplaceFaceFeature]:
        return None
    def item(self, index: int) -> ReplaceFaceFeature:
        """
        Function that returns the specified replace face feature 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 ReplaceFaceFeature()
    def createInput(self, sourceFaces: core.ObjectCollection, isTangentChain: bool, targetFaces: core.Base) -> ReplaceFaceFeatureInput:
        """
        Creates a ReplaceFaceFeatureInput object. Use properties and methods on this object
        to define the replace face you want to create and then use the Add method, passing in
        the ReplaceFaceFeatureInput object.
        sourceFaces : Input the entities that define the source faces (the faces to be replaced).
        The collection can contain the faces from a solid and/or features. All the faces must be on the same body.
        isTangentChain : A boolean value for setting whether or not faces that are tangentially connected to
        the input faces (if any) will also be included. A value of true indicates that tangent
        faces will be included.
        targetFaces : Input the entities that define the target faces. The new faces must completely intersect the part.
        The collection can contain the surface faces, surface bodies and construction planes.
        Returns the newly created ReplaceFaceFeatureInput object or null if the creation failed.
        """
        return ReplaceFaceFeatureInput()
    def add(self, input: ReplaceFaceFeatureInput) -> ReplaceFaceFeature:
        """
        Creates a new replace face feature.
        input : A ReplaceFaceFeatureInput object that defines the desired replace face. Use the createInput
        method to create a new ReplaceFaceFeatureInput object and then use methods on it
        (the ReplaceFaceFeatureInput object) to define the replace face.
        Returns the newly created ReplaceFaceFeature object or null if the creation failed.
        """
        return ReplaceFaceFeature()
    def itemByName(self, name: str) -> ReplaceFaceFeature:
        """
        Function that returns the specified replace face feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return ReplaceFaceFeature()
    @property
    def count(self) -> int:
        """
        The number of replace face features in the collection.
        """
        return int()

class ReverseNormalFeatures(core.Base):
    """
    Collection that provides access to all of the existing Reverse Normal features in a component
    and supports the ability to create new Reverse Normal features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ReverseNormalFeatures:
        return ReverseNormalFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ReverseNormalFeature:
        return None
    def __iter__(self) -> Iterator[ReverseNormalFeature]:
        return None
    def item(self, index: int) -> ReverseNormalFeature:
        """
        Function that returns the specified Reverse Normal feature 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 ReverseNormalFeature()
    def itemByName(self, name: str) -> ReverseNormalFeature:
        """
        Function that returns the specified reverse normal feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return ReverseNormalFeature()
    def add(self, surfaces: core.ObjectCollection) -> ReverseNormalFeature:
        """
        Creates a new Reverse Normal feature.
        surfaces : One or more surface bodies (open BRepBodies) containing the faces whose normals are to be reversed.
        All faces of the input surface bodies get reversed.
        Returns the newly created ReverseNormalFeature object or null if the creation failed.
        """
        return ReverseNormalFeature()
    @property
    def count(self) -> int:
        """
        The number of Reverse Normal features in the collection.
        """
        return int()

class RevolveFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a revolve
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RevolveFeatureInput:
        return RevolveFeatureInput()
    def setAngleExtent(self, isSymmetric: bool, angle: core.ValueInput) -> bool:
        """
        Defines the extent of the revolution to be at a specified angle.
        An angle and whether the extent is symmetric or only in one direction
        is specified. If it's not symmetric a positive or negative angle can be
        used to control the direction. If symmetric, the angle is the angle on one
        side so the entire angle of the revolution will be twice the specified angle.
        Use an angle of 360 deg or 2 pi radians to create a full revolve.
        isSymmetric : Set to 'true' for a revolve symmetrical about the profile plane
        angle : The ValueInput object that defines the angle of the revolution
        Returns true if successful
        """
        return bool()
    def setTwoSideAngleExtent(self, angleOne: core.ValueInput, angleTwo: core.ValueInput) -> bool:
        """
        Defines the angle of the revolve to be to applied to both sides of the profile
        at the specified angles.
        angleOne : The ValueInput object that defines the angle for the first side of the revolution
        angleTwo : The ValueInput object that defines the angle for the second side of the revolution
        Returns true if successful
        """
        return bool()
    def setOneSideToExtent(self, toEntity: core.Base, directionHint: core.Vector3D = None) -> bool:
        """
        Defines the extent of the revolve to be from the sketch or profile plane to the
        specified "To" face.
        toEntity : The entity that defines the "to" extent. The valid types of entities can vary depending on
        the type of feature this is being used with. For a revolve it can be a BRepBody, BRepFace,
        BRepVertex, ConstructionPlane, or ConstructionPoint.
        directionHint : Specifies the direction of the revolve.
        Returns true if successful.
        """
        return bool()
    def setTwoSideToExtent(self, toEntityOne: core.Base, toEntityTwo: core.Base) -> bool:
        """
        Defines the extents of the revolve to be from the sketch plane to specified
        faces in both directions. If the matchShape argument is true, the faces to revolve to
        are extended to fully intersect the revolve.
        toEntityOne : The first entity that defines the "to" extent. The valid types of entities can vary depending on
        the type of feature this is being used with. For a revolve it can be a BRepBody, BRepFace,
        BRepVertex, ConstructionPlane, or ConstructionPoint.
        toEntityTwo : The second entity that defines the "to" extent. The valid types of entities can vary depending on
        the type of feature this is being used with. For a revolve it can be a BRepBody, BRepFace,
        BRepVertex, ConstructionPlane, or ConstructionPoint.
        Returns true if successful.
        """
        return bool()
    @property
    def profile(self) -> core.Base:
        """
        Gets and sets the profiles or planar faces used to define the shape of the revolve.
        This property can return or be set with a single Profile, a single planar face, or
        an ObjectCollection consisting of multiple profiles and planar faces. When an
        ObjectCollection is used all of the profiles and faces must be co-planar.
        This property returns null in the case where the feature is non-parametric.
        
        To create a surface (non-solid) revolution, you can use the createOpenProfile and createBRepEdgeProfile
        methods of the Component object to create an open profile. The isSolid property of the
        RevolveFeatureInput property must also be False.
        """
        return core.Base()
    @profile.setter
    def profile(self, value: core.Base):
        """
        Gets and sets the profiles or planar faces used to define the shape of the revolve.
        This property can return or be set with a single Profile, a single planar face, or
        an ObjectCollection consisting of multiple profiles and planar faces. When an
        ObjectCollection is used all of the profiles and faces must be co-planar.
        This property returns null in the case where the feature is non-parametric.
        
        To create a surface (non-solid) revolution, you can use the createOpenProfile and createBRepEdgeProfile
        methods of the Component object to create an open profile. The isSolid property of the
        RevolveFeatureInput property must also be False.
        """
        pass
    @property
    def operation(self) -> FeatureOperations:
        """
        Gets and sets the type of operation performed by the revolve.
        """
        return FeatureOperations()
    @operation.setter
    def operation(self, value: FeatureOperations):
        """
        Gets and sets the type of operation performed by the revolve.
        """
        pass
    @property
    def axis(self) -> core.Base:
        """
        Gets and sets the entity used to define the axis of revolution.
        The axis can be a sketch line, construction axis, linear edge or a face that defines an
        axis (cylinder, cone, torus, etc.). If it is not in the same plane as the profile, it is
        projected onto the profile plane.
        """
        return core.Base()
    @axis.setter
    def axis(self, value: core.Base):
        """
        Gets and sets the entity used to define the axis of revolution.
        The axis can be a sketch line, construction axis, linear edge or a face that defines an
        axis (cylinder, cone, torus, etc.). If it is not in the same plane as the profile, it is
        projected onto the profile plane.
        """
        pass
    @property
    def creationOccurrence(self) -> Occurrence:
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the Revolve is created based on geometry (e.g. a profile and/or face(s))
        in another component AND (the Revolve) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI
        """
        return Occurrence()
    @creationOccurrence.setter
    def creationOccurrence(self, value: Occurrence):
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the Revolve is created based on geometry (e.g. a profile and/or face(s))
        in another component AND (the Revolve) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI
        """
        pass
    @property
    def isSolid(self) -> bool:
        """
        Specifies if the revolution should be created as a solid or surface. If
        it's a surface then there aren't any end caps and it's open. This is
        initialized to true so a solid will be created if it's not changed.
        """
        return bool()
    @isSolid.setter
    def isSolid(self, value: bool):
        """
        Specifies if the revolution should be created as a solid or surface. If
        it's a surface then there aren't any end caps and it's open. This is
        initialized to true so a solid will be created if it's not changed.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass
    @property
    def participantBodies(self) -> list[BRepBody]:
        """
        Gets and sets the list of bodies that will participate in the feature when the operation is a cut or intersection.
        
        If this property has not been set, the default behavior is that all bodies that are intersected by the
        feature will participate.
        
        This property can return null in the case where the feature has not been fully defined so that
        possible intersecting bodies can be computed.
        """
        return [BRepBody()]
    @participantBodies.setter
    def participantBodies(self, value: list[BRepBody]):
        """
        Gets and sets the list of bodies that will participate in the feature when the operation is a cut or intersection.
        
        If this property has not been set, the default behavior is that all bodies that are intersected by the
        feature will participate.
        
        This property can return null in the case where the feature has not been fully defined so that
        possible intersecting bodies can be computed.
        """
        pass
    @property
    def isProjectAxis(self) -> bool:
        """
        Specifies if the axis should be projected on the same plane as the profile sketch plane or not.
        
        Setting this to true will use a projected axis, while setting it to false will keep it in its original location.
        This is initialized to false so the selected axis will be used in the feature.
        """
        return bool()
    @isProjectAxis.setter
    def isProjectAxis(self, value: bool):
        """
        Specifies if the axis should be projected on the same plane as the profile sketch plane or not.
        
        Setting this to true will use a projected axis, while setting it to false will keep it in its original location.
        This is initialized to false so the selected axis will be used in the feature.
        """
        pass

class RevolveFeatures(core.Base):
    """
    Collection that provides access to all of the existing revolve features in a design
    and supports the ability to create new revolve features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RevolveFeatures:
        return RevolveFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> RevolveFeature:
        return None
    def __iter__(self) -> Iterator[RevolveFeature]:
        return None
    def item(self, index: int) -> RevolveFeature:
        """
        Function that returns the specified revolve feature 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 RevolveFeature()
    def createInput(self, profile: core.Base, axis: core.Base, operation: FeatureOperations) -> RevolveFeatureInput:
        """
        Creates a new RevolveFeatureInput object that is used to specify the input needed
        to create a new revolve feature.
        profile : The profile argument can be a single Profile, a single
        planar face, or an ObjectCollection consisting of multiple profiles and planar faces.
        When an ObjectCollection is used all of the profiles and faces must be co-planar.
        
        To create a surface (non-solid) revolution, you can use the createOpenProfile and createBRepEdgeProfile
        methods of the Component object to create an open profile. You also need to set the isSolid property
        of the returned RevolveFeatureInput property to False.
        axis : The axis can be a sketch line, construction axis, linear edge or a face that defines an
        axis (cylinder, cone, torus, etc.). If it is not in the same plane as the profile, it is
        projected onto the profile plane.
        operation : The operation type to perform.
        Returns the newly created RevolveFeatureInput object or null if the creation failed.
        """
        return RevolveFeatureInput()
    def add(self, input: RevolveFeatureInput) -> RevolveFeature:
        """
        Creates a new revolve feature based on the information provided by the provided
        RevolveFeatureInput object.
        To create a new revolve, use the createInput function to create a new input object
        and then use the methods and properties on that object to define the required input
        for a revolve. Once the information is defined on the input object you can pass it
        to the Add method to create the revolve.
        input : The RevolveFeatureInput object that specifies the input needed to create a new extrude
        Returns the newly created RevolveFeature or null if the creation failed.
        """
        return RevolveFeature()
    def itemByName(self, name: str) -> RevolveFeature:
        """
        Function that returns the specified revolve feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return RevolveFeature()
    @property
    def count(self) -> int:
        """
        The number of revolve features in the collection.
        """
        return int()

class RibFeatures(core.Base):
    """
    Collection that provides access to all of the existing rib features in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RibFeatures:
        return RibFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> RibFeature:
        return None
    def __iter__(self) -> Iterator[RibFeature]:
        return None
    def item(self, index: int) -> RibFeature:
        """
        Function that returns the specified Rib feature 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 RibFeature()
    def itemByName(self, name: str) -> RibFeature:
        """
        Function that returns the specified Rib feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return RibFeature()
    @property
    def count(self) -> int:
        """
        The number of Rib features in the collection.
        """
        return int()

class RigidGroup(core.Base):
    """
    Represents a rigid group within an assembly.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RigidGroup:
        return RigidGroup()
    def deleteMe(self) -> bool:
        """
        Deletes this rigid group.
        Returns True if the delete was successful.
        """
        return bool()
    def setOccurrences(self, occurrences: core.ObjectCollection, includeChildren: bool) -> bool:
        """
        Sets which occurrences are to be part of this rigid group.
        
        To use this method, you need to position the timeline marker to immediately before this group.
        This can be accomplished using the following code: group.timelineObject.rollTo(True)
        occurrences : An ObjectCollection containing the occurrences to use in creating the rigid group.
        includeChildren : Boolean indicating if the children of the input occurrences should be included in the rigid group.
        Returns true if successful.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> RigidGroup:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return RigidGroup()
    @property
    def parentComponent(self) -> Component:
        """
        Returns the parent component that owns this rigid group.
        """
        return Component()
    @property
    def name(self) -> str:
        """
        Gets and sets the name of the rigid group as seen in the timeline.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name of the rigid group as seen in the timeline.
        """
        pass
    @property
    def occurrences(self) -> OccurrenceList:
        """
        Returns the list of occurrences that are part of the rigid group.
        """
        return OccurrenceList()
    @property
    def timelineObject(self) -> TimelineObject:
        """
        Returns the timeline object associated with this rigid group.
        """
        return TimelineObject()
    @property
    def isSuppressed(self) -> bool:
        """
        Gets and sets if this rigid group is suppressed.
        """
        return bool()
    @isSuppressed.setter
    def isSuppressed(self, value: bool):
        """
        Gets and sets if this rigid group is suppressed.
        """
        pass
    @property
    def nativeObject(self) -> RigidGroup:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return RigidGroup()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this object
        in an assembly. This is only valid in the case where this is acting
        as a proxy in an assembly. Returns null in the case where the object
        is not in the context of an assembly but is already the native object.
        """
        return Occurrence()
    @property
    def attributes(self) -> core.Attributes:
        """
        Returns the collection of attributes associated with this rigid group.
        """
        return core.Attributes()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the RigidGroup object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same rigid group.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        """
        return str()
    @property
    def isVisible(self) -> bool:
        """
        Gets and sets whether the occurrences that are part of this rigid group are visible or not.
        """
        return bool()
    @isVisible.setter
    def isVisible(self, value: bool):
        """
        Gets and sets whether the occurrences that are part of this rigid group are visible or not.
        """
        pass

class RigidGroupList(core.Base):
    """
    A list of rigid groups.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RigidGroupList:
        return RigidGroupList()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> RigidGroup:
        return None
    def __iter__(self) -> Iterator[RigidGroup]:
        return None
    def item(self, index: int) -> RigidGroup:
        """
        Function that returns the specified rigid group using an index into the list.
        index : The index of the item within the list to return. The first item in the list has an index of 0.
        Returns the specified item or null if an invalid index was specified.
        """
        return RigidGroup()
    def itemByName(self, name: str) -> RigidGroup:
        """
        Function that returns the specified rigid group using a name.
        name : The name of the item within the list to return.
        Returns the specified item or null if an invalid name was specified.
        """
        return RigidGroup()
    @property
    def count(self) -> int:
        """
        Returns number of rigid groups in the list.
        """
        return int()

class RigidGroups(core.Base):
    """
    The collection of rigid groups in this component. This provides access to all existing
    rigid groups and supports the ability to create new rigid groups.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RigidGroups:
        return RigidGroups()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> RigidGroup:
        return None
    def __iter__(self) -> Iterator[RigidGroup]:
        return None
    def item(self, index: int) -> RigidGroup:
        """
        Function that returns the specified rigid group 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 RigidGroup()
    def itemByName(self, name: str) -> RigidGroup:
        """
        Function that returns the specified rigid group using a name.
        name : The name of the item within the collection to return.
        Returns the specified item or null if an invalid name was specified.
        """
        return RigidGroup()
    def add(self, occurrences: core.ObjectCollection, includeChildren: bool) -> RigidGroup:
        """
        Creates a new rigid group.
        occurrences : An ObjectCollection containing the occurrences to use in creating the rigid group.
        includeChildren : Boolean indicating if the children of the input occurrences should be included in the rigid group.
        Returns the new RigidGroup object or null in the case of failure.
        """
        return RigidGroup()
    @property
    def count(self) -> int:
        """
        Returns number of joint origins in the collection.
        """
        return int()

class RipFeatureDefinition(core.Base):
    """
    A Base class to return the information used to define the RipFeature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RipFeatureDefinition:
        return RipFeatureDefinition()

class RipFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a Rip feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RipFeatureInput:
        return RipFeatureInput()
    def setByFace(self, face: BRepFace) -> bool:
        """
        Specifies the rip feature will be defined by a face..
        face : The sheet metal face that defines the rip.
        Returns true if the defining the rip is successful.
        """
        return bool()
    def setAlongEdge(self, edge: BRepEdge, gapDistance: core.ValueInput) -> bool:
        """
        Specifies the rip feature will be along an edge.
        edge : The BRepEdge that defines the location of the rip.
        gapDistance : The gap distance of the rip.
        Returns true if the defining the rip is successful.
        """
        return bool()
    def setBetweenPoints(self, pointOneEntity: core.Base, pointTwoEntity: core.Base, gapDistance: core.ValueInput, pointOneOffset: core.ValueInput = None, pointTwoOffset: core.ValueInput = None) -> bool:
        """
        This input method is for creating a rip between two points. Each point can be either a BRepVertex
        or a BRepEdge and an associated offset along the edge.
        pointOneEntity : The first point of the rip. This can be defined using a BrepVertex or a BRepEdge and offset to define
        where the point is along the edge. If an edge is specified, the pointOneOffset parameter must be specified.
        pointTwoEntity : The second point of the rip and must lie on the same face as point 1. This can be defined using a
        BrepVertex or a BRepEdge and an offset to define where the point is along the edge.
        If an edge is specified, the pointTwoOffset parameter must be specified.
        gapDistance : The gap distance of the rip.
        pointOneOffset : If the first point lies on an edge, then this is the offset along the edge which defines the point.
        This is the physical distance from the topological start of the edge.
        If the offset is negative or exceeds the edge length, the corresponding vertex of the edge will be used.
        pointTwoOffset : If the second point lies on an edge, then this is the offset along the edge which defines the point.
        This is the physical distance from the topological start of the edge.
        If the offset is negative or exceeds the edge length, the corresponding vertex of the edge will be used.
        Returns true if the rip definition is successful.
        """
        return bool()

class RipFeatures(core.Base):
    """
    Collection that provides access to all of the existing Rip features in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RipFeatures:
        return RipFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> RipFeature:
        return None
    def __iter__(self) -> Iterator[RipFeature]:
        return None
    def item(self, index: int) -> RipFeature:
        """
        Function that returns the specified Rip feature 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 RipFeature()
    def itemByName(self, name: str) -> RipFeature:
        """
        Function that returns the specified Rip feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return RipFeature()
    def createRipFeatureInput(self) -> RipFeatureInput:
        """
        Creates a RipFeatureInput object. Use methods on this object to define the rip you want
        to create and then use the add method, passing in the RipFeatureInput object.
        Returns the newly created RipFeatureInput object or null if the creation failed.
        """
        return RipFeatureInput()
    def add(self, input: RipFeatureInput) -> RipFeature:
        """
        Creates a new Rip feature.
        input : A RipFeatureInput object that defines the desired rip. Use the createInput
        method to create a new RipFeatureInput object and then use methods on it
        (the RipFeatureInput object) to define the rip.
        Returns the newly created RipFeature object or null if the creation failed.
        """
        return RipFeature()
    @property
    def count(self) -> int:
        """
        The number of Rip features in the collection.
        """
        return int()

class RuledSurfaceFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a Ruled Surface feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RuledSurfaceFeatureInput:
        return RuledSurfaceFeatureInput()
    @property
    def profile(self) -> core.Base:
        """
        Gets and sets the Profile object that defines the sketch geometry or edges that define the shape of
        the ruled surface. The Component.createBRepEdgeProfile method is useful to create a profile defined from edges.
        """
        return core.Base()
    @profile.setter
    def profile(self, value: core.Base):
        """
        Gets and sets the Profile object that defines the sketch geometry or edges that define the shape of
        the ruled surface. The Component.createBRepEdgeProfile method is useful to create a profile defined from edges.
        """
        pass
    @property
    def creationOccurrence(self) -> Occurrence:
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the Ruled Surface is created based on geometry (e.g. a profile)
        in another component AND (the Ruled Surface) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI
        """
        return Occurrence()
    @creationOccurrence.setter
    def creationOccurrence(self, value: Occurrence):
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the Ruled Surface is created based on geometry (e.g. a profile)
        in another component AND (the Ruled Surface) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI
        """
        pass
    @property
    def distance(self) -> core.ValueInput:
        """
        Gets and sets the ValueInput object that defines the Ruled Surface distance. If the value input is
        a real value it will define the distance in centimeters.
        """
        return core.ValueInput()
    @distance.setter
    def distance(self, value: core.ValueInput):
        """
        Gets and sets the ValueInput object that defines the Ruled Surface distance. If the value input is
        a real value it will define the distance in centimeters.
        """
        pass
    @property
    def angle(self) -> core.ValueInput:
        """
        Gets and sets the ValueInput object that defines the Ruled Surface angle.
        If the input is a real value, the units are radians.
        """
        return core.ValueInput()
    @angle.setter
    def angle(self, value: core.ValueInput):
        """
        Gets and sets the ValueInput object that defines the Ruled Surface angle.
        If the input is a real value, the units are radians.
        """
        pass
    @property
    def ruledSurfaceType(self) -> RuledSurfaceTypes:
        """
        Gets and sets the type of ruled surface to create. To set this to DirectionRuledSurfaceType,
        use the direction property to set the direction entity, which will automatically set
        this to DirectionRuledSurfaceType.
        """
        return RuledSurfaceTypes()
    @ruledSurfaceType.setter
    def ruledSurfaceType(self, value: RuledSurfaceTypes):
        """
        Gets and sets the type of ruled surface to create. To set this to DirectionRuledSurfaceType,
        use the direction property to set the direction entity, which will automatically set
        this to DirectionRuledSurfaceType.
        """
        pass
    @property
    def direction(self) -> core.Base:
        """
        Gets and sets the entity that defines the direction when the ruled surface type is DirectionRuledSurfaceType.
        The direction is specified by providing a linear or planar entity. For example, a linear edge, construction axis,
        planar face, or construction plane can be used as input.
        
        If this property is set when the ruledSurfaceType is not DirectionRuledSurfaceType, the type will automatically be
        changed to DirectionRuledSurfaceType. If you get this property when the direction is not DirectionRuledSurfaceType,
        it will return null.
        """
        return core.Base()
    @direction.setter
    def direction(self, value: core.Base):
        """
        Gets and sets the entity that defines the direction when the ruled surface type is DirectionRuledSurfaceType.
        The direction is specified by providing a linear or planar entity. For example, a linear edge, construction axis,
        planar face, or construction plane can be used as input.
        
        If this property is set when the ruledSurfaceType is not DirectionRuledSurfaceType, the type will automatically be
        changed to DirectionRuledSurfaceType. If you get this property when the direction is not DirectionRuledSurfaceType,
        it will return null.
        """
        pass
    @property
    def alternateFace(self) -> bool:
        """
        Gets and sets if the other face is used for creation of the Ruled Surface.
        When creating a ruled surface using the edges of a solid or the interior edges
        of a surface the angle of the ruled surface is measured with respect to the
        face the selected edge is bounding. For a solid, or an interior edge on a surface,
        the edge connects to two faces. This setting toggles which of the two faces will
        be used for measuring the angle.
        """
        return bool()
    @alternateFace.setter
    def alternateFace(self, value: bool):
        """
        Gets and sets if the other face is used for creation of the Ruled Surface.
        When creating a ruled surface using the edges of a solid or the interior edges
        of a surface the angle of the ruled surface is measured with respect to the
        face the selected edge is bounding. For a solid, or an interior edge on a surface,
        the edge connects to two faces. This setting toggles which of the two faces will
        be used for measuring the angle.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass
    @property
    def operation(self) -> FeatureOperations:
        """
        Gets and sets the type of operation performed by the ruled surface.
        """
        return FeatureOperations()
    @operation.setter
    def operation(self, value: FeatureOperations):
        """
        Gets and sets the type of operation performed by the ruled surface.
        """
        pass
    @property
    def cornerType(self) -> RuledSurfaceCornerTypes:
        """
        Gets and sets the corner type for the ruled surface, indicating if the corners will be rounded or mitered.
        The default value is rounded.
        """
        return RuledSurfaceCornerTypes()
    @cornerType.setter
    def cornerType(self, value: RuledSurfaceCornerTypes):
        """
        Gets and sets the corner type for the ruled surface, indicating if the corners will be rounded or mitered.
        The default value is rounded.
        """
        pass

class RuledSurfaceFeatures(core.Base):
    """
    Collection that provides access to all of the existing Ruled Surface features in a component
    and supports the ability to create new Ruled Surface features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RuledSurfaceFeatures:
        return RuledSurfaceFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> RuledSurfaceFeature:
        return None
    def __iter__(self) -> Iterator[RuledSurfaceFeature]:
        return None
    def item(self, index: int) -> RuledSurfaceFeature:
        """
        Function that returns the specified ruled surface feature 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 RuledSurfaceFeature()
    def createInput(self, profile: core.Base, distance: core.ValueInput, angle: core.ValueInput, ruledSurfaceType: RuledSurfaceTypes, direction: core.Base = None) -> RuledSurfaceFeatureInput:
        """
        Creates a RuledSurfaceFeatureInput object that defines the input needed to create a ruled surface feature. Use the input
        object to define the input to create the desired feature and then use the Add method, passing in the RuledSurfaceFeatureInput object.
        profile : A Profile object that defines the sketch geometry or edges that define the shape of the ruled surface. The Component.createBRepEdgeProfile
        method is useful to create a profile defined from edges.
        distance : ValueInput object that defines the extension distance of the Ruled Surface..
        angle : ValueInput object that defines angle to use when creating the Ruled Surface. When the input is a real value, the units are radians.
        ruledSurfaceType : The Ruled Surface type (TangentRuledSurfaceType, NormalRuledSurfaceType, or DirectionRuledSurfaceType).
        direction : If the ruled surface type is DirectionRuledSurfaceType, you must specify the direction. The direction is specified by
        providing a linear or planar entity. For example, a linear edge, construction axis, planar face, or construction plane can be used as input.
        Returns the newly created RuledSurfaceFeatureInput object or null if the creation failed.
        """
        return RuledSurfaceFeatureInput()
    def add(self, input: RuledSurfaceFeatureInput) -> RuledSurfaceFeature:
        """
        Creates a new RuledSurface feature.
        input : An RuledSurfaceFeatureInput object that defines the desired RuledSurface feature. Use the createInput
        method to create a new RuledSurfaceFeatureInput object and then use methods on it
        (the RuledSurfaceFeatureInput object) to define the desired options for the ruled surface feature.
        Returns the newly created RuledSurfaceFeature object or null if the creation failed.
        """
        return RuledSurfaceFeature()
    def itemByName(self, name: str) -> RuledSurfaceFeature:
        """
        Function that returns the specified RuledSurface feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return RuledSurfaceFeature()
    @property
    def count(self) -> int:
        """
        The number of RuledSurface features in the collection.
        """
        return int()

class RuleFilletFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a rule fillet feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RuleFilletFeatureInput:
        return RuleFilletFeatureInput()
    def setAsymmetricOffsets(self, offsetOne: core.ValueInput, offsetTwo: core.ValueInput) -> bool:
        """
        Sets the fillet to be an asymmetric fillet and defines the two offsets.
        offsetOne : A ValueInput object that defines the offset distance of the fillet in the first direction. If the ValueInput uses
        a real then it is interpreted as centimeters. If it is a string, then the units
        can be defined as part of the string (i.e. "2 in") or if no units are specified
        it is interpreted using the current default units for length.
        offsetTwo : A ValueInput object that defines the offset distance of the fillet in the second direction. If the ValueInput uses
        a real, then it is interpreted as centimeters. If it is a string, then the units
        can be defined as part of the string (i.e. "2 in") or if no units are specified
        it is interpreted using the current default units for length.
        Returns true if successful.
        """
        return bool()
    def setByAllEdges(self, facesOrFeatures: list[core.Base]) -> bool:
        """
        Method that adds an array of BRepFace and/or Feature objects to have all their edges to be filleted.
        Calling this method will set ruleType to RuleFilletRuleTypes.AllEdgesRuleFilletRuleType.
        facesOrFeatures : Input faces and/or features to have all their edges to be filleted.
        Returns true if the operation was successful.
        """
        return bool()
    def setByBetweenFacesOrFeatures(self, facesOrFeaturesOne: list[core.Base], facesOrFeaturesTwo: list[core.Base]) -> bool:
        """
        Method that adds two sets of BRepFace and/or Feature objects to have the edges between them filleted.
        Call this method will set ruleType to RuleFilletRuleTypes.BetweenFacesOrFeaturesRuleFilletRuleType.
        facesOrFeaturesOne : Input first array of BRepFace and/or Feature objects.
        facesOrFeaturesTwo : Input second array of BRepFace and/or Feature objects.
        Returns true if the operation was successful.
        """
        return bool()
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass
    @property
    def ruleType(self) -> RuleFilletRuleTypes:
        """
        Gets the rule type for the rule fillet.
        """
        return RuleFilletRuleTypes()
    @property
    def radius(self) -> core.ValueInput:
        """
        Gets and sets the radius of the fillet. Setting this will set the fillet to a constant radius fillet and
        any asymmetric information will be lost. Returns null in the case the fillet is asymmetric.
        """
        return core.ValueInput()
    @radius.setter
    def radius(self, value: core.ValueInput):
        """
        Gets and sets the radius of the fillet. Setting this will set the fillet to a constant radius fillet and
        any asymmetric information will be lost. Returns null in the case the fillet is asymmetric.
        """
        pass
    @property
    def asymmetricOffsetOne(self) -> core.ValueInput:
        """
        Returns the current first offset for an asymmetric fillet. Use setAsymmetricOffsets to set
        the offsets. Returns null in the case where the fillet is a constant radius fillet.
        """
        return core.ValueInput()
    @property
    def asymmetricOffsetTwo(self) -> core.ValueInput:
        """
        Returns the current second offset for an asymmetric fillet. Use setAsymmetricOffsets to set
        the offsets. Returns null in the case where the fillet is a constant radius fillet.
        """
        return core.ValueInput()
    @property
    def topologyType(self) -> RuleFilletTopologyTypes:
        """
        Gets and sets the topology type of the rule fillet.
        """
        return RuleFilletTopologyTypes()
    @topologyType.setter
    def topologyType(self, value: RuleFilletTopologyTypes):
        """
        Gets and sets the topology type of the rule fillet.
        """
        pass
    @property
    def isRollingBallCorner(self) -> bool:
        """
        Gets and sets if a rolling ball or setback solution is to be used in any corners. A value of true will create a rolling ball fillet.
        """
        return bool()
    @isRollingBallCorner.setter
    def isRollingBallCorner(self, value: bool):
        """
        Gets and sets if a rolling ball or setback solution is to be used in any corners. A value of true will create a rolling ball fillet.
        """
        pass
    @property
    def facesOrFeatures(self) -> list[core.Base]:
        """
        Gets an array of BRepFace and/or Feature objects that are to have all their edges filleted.
        This is applicable only when ruleType is RuleFilletRuleTypes.AllEdgesRuleFilletRuleType.
        This is set by the setByAllEdges method.
        """
        return [core.Base()]
    @property
    def facesOrFeaturesOne(self) -> list[core.Base]:
        """
        Gets the first array of BRepFace and/or Feature objects for between faces/features rule fillet.
        This is applicable only when ruleType is RuleFilletRuleTypes.BetweenFacesOrFeaturesRuleFilletRuleType.
        This is set by the setByBetweenFacesOrFeatures method.
        """
        return [core.Base()]
    @property
    def facesOrFeaturesTwo(self) -> list[core.Base]:
        """
        Gets the second array of BRepFace and/or Feature objects for between faces/features rule fillet.
        This is applicable only when ruleType is RuleFilletRuleTypes.BetweenFacesOrFeaturesRuleFilletRuleType.
        This is set by the setByBetweenFacesOrFeatures method.
        """
        return [core.Base()]

class RuleFilletSettings(core.Base):
    """
    The settings for the rule fillet feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RuleFilletSettings:
        return RuleFilletSettings()
    def setToConstantRadius(self, radius: core.ValueInput) -> bool:
        """
        Changes the radius type to be constant.
        radius : Input ValueInput object that defines the radius of the rule fillet. If the ValueInput uses
        a real value then it is interpreted as centimeters. If it is a string then the units
        can be defined as part of the string (i.e. "2 in") or if no units are specified it is
        interpreted using the current document units for length.
        
        """
        return bool()
    def setToAsymmetric(self, offsetOne: core.ValueInput, offsetTwo: core.ValueInput) -> bool:
        """
        Changes the radius type to be asymmetric.
        offsetOne : Input ValueInput object that defines the first offset of the asymmetric rule fillet. If the ValueInput uses
        a real value then it is interpreted as centimeters. If it is a string then the units
        can be defined as part of the string (i.e. "2 in") or if no units are specified it is
        interpreted using the current document units for length.
        offsetTwo : Input ValueInput object that defines the second offset of the asymmetric rule fillet. If the ValueInput uses
        a real value then it is interpreted as centimeters. If it is a string then the units
        can be defined as part of the string (i.e. "2 in") or if no units are specified it is
        interpreted using the current document units for length.
        
        """
        return bool()
    def setByAllEdges(self, facesOrFeatures: list[core.Base]) -> bool:
        """
        Method that adds an array of BRepFace and/or Feature objects to have all their edges filleted.
        Calling this method will set ruleType to RuleFilletRuleTypes.AllEdgesRuleFilletRuleType.
        facesOrFeatures : Input faces and/or features to have all their edges to be filleted.
        Returns true if the operation was successful.
        """
        return bool()
    def setByBetweenFacesOrFeatures(self, facesOrFeaturesOne: list[core.Base], facesOrFeaturesTwo: list[core.Base]) -> bool:
        """
        Method that adds two sets of BRepFace and/or Feature objects to have the edges between them filleted.
        Call this method will set ruleType to RuleFilletRuleTypes.BetweenFacesOrFeaturesRuleFilletRuleType.
        facesOrFeaturesOne : Input first array of BRepFace and/or Feature objects.
        facesOrFeaturesTwo : Input second array of BRepFace and/or Feature objects.
        Returns true if the operation was successful.
        """
        return bool()
    @property
    def ruleType(self) -> RuleFilletRuleTypes:
        """
        Gets the rule type for the rule fillet.
        """
        return RuleFilletRuleTypes()
    @property
    def isConstantRadius(self) -> bool:
        """
        Gets and sets if the rule fillet is a constant or asymmetric radius type.
        """
        return bool()
    @property
    def radius(self) -> ModelParameter:
        """
        Gets the parameter controlling the radius of a constant radius rule fillet.
        This property will return null when isConstantRadius is false.
        To edit the radius, use properties on the parameter to change the value of the parameter.
        """
        return ModelParameter()
    @property
    def asymmetricOffsetOne(self) -> ModelParameter:
        """
        Gets the parameter controlling the first offset of this asymmetric rule fillet.
        This property will return null when isConstantRadius is true.
        To edit the offset, use properties on the parameter to change the value of the parameter.
        """
        return ModelParameter()
    @property
    def asymmetricOffsetTwo(self) -> ModelParameter:
        """
        Gets the parameter controlling the second offset of this asymmetric rule fillet.
        This property will return null when isConstantRadius is true.
        To edit the offset, use properties on the parameter to change the value of the parameter.
        """
        return ModelParameter()
    @property
    def topologyType(self) -> RuleFilletTopologyTypes:
        """
        Gets and sets the topology type of the rule fillet.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True).
        """
        return RuleFilletTopologyTypes()
    @topologyType.setter
    def topologyType(self, value: RuleFilletTopologyTypes):
        """
        Gets and sets the topology type of the rule fillet.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True).
        """
        pass
    @property
    def facesOrFeatures(self) -> list[core.Base]:
        """
        Gets an array of BRepFace and/or Feature objects that have all their edges filleted.
        This returns an empty array if ruleType is not RuleFilletRuleTypes.AllEdgesRuleFilletRuleType.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True).
        """
        return [core.Base()]
    @property
    def facesOrFeaturesOne(self) -> list[core.Base]:
        """
        Gets the first array of BRepFace and/or Feature objects for between faces/features rule fillet.
        This returns an empty array if ruleType is not RuleFilletRuleTypes.BetweenFacesOrFeaturesRuleFilletRuleType.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True).
        """
        return [core.Base()]
    @property
    def facesOrFeaturesTwo(self) -> list[core.Base]:
        """
        Gets the second array of BRepFace and/or Feature objects for between faces/features rule fillet.
        This returns an empty array if ruleType is not RuleFilletRuleTypes.BetweenFacesOrFeaturesRuleFilletRuleType.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True).
        """
        return [core.Base()]

class ScaleFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a scale
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ScaleFeatureInput:
        return ScaleFeatureInput()
    def setToNonUniform(self, xScale: core.ValueInput, yScale: core.ValueInput, zScale: core.ValueInput) -> bool:
        """
        Sets the scale factor for the x, y, z directions to define a non-uniform scale.
        Calling this method will cause the isUniform property to be set to false.
        This will fail if the inputEntities collection contains sketches or components.
        xScale : A ValueInput object that defines the scale in the X direction.
        yScale : A ValueInput object that defines the scale in the Y direction.
        zScale : A ValueInput object that defines the scale in the Z direction.
        Returns true if successful.
        """
        return bool()
    @property
    def inputEntities(self) -> core.ObjectCollection:
        """
        Gets and sets the input entities.
        This collection can contain sketches, BRep bodies and T-Spline bodies in parametric modeling.
        It can contain sketches, BRep bodies, T-Spline bodies, mesh bodies, root component and occurrences in non-parametric modeling.
        If the scaling is non-uniform (the isUniform property is false), this collection cannot contain sketches or components.
        """
        return core.ObjectCollection()
    @inputEntities.setter
    def inputEntities(self, value: core.ObjectCollection):
        """
        Gets and sets the input entities.
        This collection can contain sketches, BRep bodies and T-Spline bodies in parametric modeling.
        It can contain sketches, BRep bodies, T-Spline bodies, mesh bodies, root component and occurrences in non-parametric modeling.
        If the scaling is non-uniform (the isUniform property is false), this collection cannot contain sketches or components.
        """
        pass
    @property
    def point(self) -> core.Base:
        """
        Gets and sets the origin point of the scale. This can be a BRepVertex, a SketchPoint or a ConstructionPoint.
        """
        return core.Base()
    @point.setter
    def point(self, value: core.Base):
        """
        Gets and sets the origin point of the scale. This can be a BRepVertex, a SketchPoint or a ConstructionPoint.
        """
        pass
    @property
    def scaleFactor(self) -> core.ValueInput:
        """
        Gets and sets the scale factor used for a uniform scale.
        Setting this value will cause the isUniform property to be set to true.
        """
        return core.ValueInput()
    @scaleFactor.setter
    def scaleFactor(self, value: core.ValueInput):
        """
        Gets and sets the scale factor used for a uniform scale.
        Setting this value will cause the isUniform property to be set to true.
        """
        pass
    @property
    def isUniform(self) -> bool:
        """
        Gets if the scale is uniform.
        """
        return bool()
    @property
    def xScale(self) -> core.ValueInput:
        """
        Gets the scale in X direction.
        """
        return core.ValueInput()
    @property
    def yScale(self) -> core.ValueInput:
        """
        Gets the scale in Y direction.
        """
        return core.ValueInput()
    @property
    def zScale(self) -> core.ValueInput:
        """
        Gets the scale in Z direction.
        """
        return core.ValueInput()
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class ScaleFeatures(core.Base):
    """
    Collection that provides access to all of the existing scale features in a component
    and supports the ability to create new scale features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ScaleFeatures:
        return ScaleFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ScaleFeature:
        return None
    def __iter__(self) -> Iterator[ScaleFeature]:
        return None
    def item(self, index: int) -> ScaleFeature:
        """
        Function that returns the specified scale feature 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 ScaleFeature()
    def createInput(self, inputEntities: core.ObjectCollection, point: core.Base, scaleFactor: core.ValueInput) -> ScaleFeatureInput:
        """
        Creates a ScaleFeatureInput object. Use properties and methods on this object
        to define the scale you want to create and then use the Add method, passing in
        the ScaleFeatureInput object.
        inputEntities : This collection can contain sketches, BRep bodies and T-Spline bodies in parametric modeling.
        It can contain sketches, BRep bodies, T-Spline bodies, mesh bodies, root component and occurrences in non-parametric modeling.
        point : Input a point as reference to scale. This can be a BRepVertex, a SketchPoint or a ConstructionPoint.
        scaleFactor : The ValueInput object that defines the scale factor for uniform scale.
        Returns the newly created ScaleFeatureInput object or null if the creation failed.
        """
        return ScaleFeatureInput()
    def add(self, input: ScaleFeatureInput) -> ScaleFeature:
        """
        Creates a new scale feature.
        input : A ScaleFeatureInput object that defines the desired scale. Use the createInput
        method to create a new ScaleFeatureInput object and then use methods on it
        (the ScaleFeatureInput object) to define the scale.
        Returns the newly created ScaleFeature object or null if the creation failed.
        Returns nothing in the case where the feature is non-parametric.
        """
        return ScaleFeature()
    def itemByName(self, name: str) -> ScaleFeature:
        """
        Function that returns the specified scale feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return ScaleFeature()
    @property
    def count(self) -> int:
        """
        The number of scale features in the collection.
        """
        return int()

class SceneSettings(core.Base):
    """
    Provides access to all the settings that control how the scene is rendered.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SceneSettings:
        return SceneSettings()
    def saveAsDefaults(self) -> bool:
        """
        Saves all of the scene settings as the default settings for this Design.
        Returns true if saving the defaults was successful.
        """
        return bool()
    def restoreDefaults(self) -> bool:
        """
        Changes all of the scene settings to the default values.
        Returns true if setting to the default settings was successful.
        """
        return bool()
    @property
    def brightness(self) -> float:
        """
        Gets and sets the brightness or luminance of the scene. This must be a value between
        0 and 100,000 and is in lux units.
        """
        return float()
    @brightness.setter
    def brightness(self, value: float):
        """
        Gets and sets the brightness or luminance of the scene. This must be a value between
        0 and 100,000 and is in lux units.
        """
        pass
    @property
    def groundPosition(self) -> core.Point3D:
        """
        Gets and sets the origin of the projection of the environment onto the textured
        ground plane. This lets you position the environment relative to the model. This
        is only used when the isGroundFlattened property is true.
        
        If the isGroundFlattened property is true, and a texture is being applied to
        the ground, the groundPosition property can be used to change both
        the offset and location of the texture on the ground. The lightAngle
        property controls the orientation of the texture.
        """
        return core.Point3D()
    @groundPosition.setter
    def groundPosition(self, value: core.Point3D):
        """
        Gets and sets the origin of the projection of the environment onto the textured
        ground plane. This lets you position the environment relative to the model. This
        is only used when the isGroundFlattened property is true.
        
        If the isGroundFlattened property is true, and a texture is being applied to
        the ground, the groundPosition property can be used to change both
        the offset and location of the texture on the ground. The lightAngle
        property controls the orientation of the texture.
        """
        pass
    @property
    def groundOffset(self) -> float:
        """
        Gets and sets the distance of the ground from the bottom of the model.
        A value of 0 is at the bottom of the model and a positive value moves
        the plane up and negative down. The value is in centimeters.
        
        If the isGroundFlattened property is true, and a texture is being applied to
        the ground, the groundPosition property can be used to change both
        the offset and location of the texture on the ground. The lightAngle
        property controls the orientation of the texture.
        """
        return float()
    @groundOffset.setter
    def groundOffset(self, value: float):
        """
        Gets and sets the distance of the ground from the bottom of the model.
        A value of 0 is at the bottom of the model and a positive value moves
        the plane up and negative down. The value is in centimeters.
        
        If the isGroundFlattened property is true, and a texture is being applied to
        the ground, the groundPosition property can be used to change both
        the offset and location of the texture on the ground. The lightAngle
        property controls the orientation of the texture.
        """
        pass
    @property
    def lightAngle(self) -> float:
        """
        Specifies the rotation of the lighting. The angle is specified in Radians.
        
        When the isGroundFlattened property is true, this also controls the angle
        of the texture that is applied to the ground. When the background is an
        environment, this controls the rotation of the environment relative to
        the model.
        """
        return float()
    @lightAngle.setter
    def lightAngle(self, value: float):
        """
        Specifies the rotation of the lighting. The angle is specified in Radians.
        
        When the isGroundFlattened property is true, this also controls the angle
        of the texture that is applied to the ground. When the background is an
        environment, this controls the rotation of the environment relative to
        the model.
        """
        pass
    @property
    def backgroundSolidColor(self) -> core.Color:
        """
        Gets and sets the background color. When this property is set, it defines
        the background to be a solid color. The opacity component of the color is ignored.
        
        Getting this property is only valid when the backgroundType property returns
        SolidColorRenderSceneBackgroundType. Setting this property will automatically
        set the background type to SolidColorRenderSceneBackgroundType.
        """
        return core.Color()
    @backgroundSolidColor.setter
    def backgroundSolidColor(self, value: core.Color):
        """
        Gets and sets the background color. When this property is set, it defines
        the background to be a solid color. The opacity component of the color is ignored.
        
        Getting this property is only valid when the backgroundType property returns
        SolidColorRenderSceneBackgroundType. Setting this property will automatically
        set the background type to SolidColorRenderSceneBackgroundType.
        """
        pass
    @property
    def backgroundEnvironment(self) -> RenderEnvironment:
        """
        Gets and sets the environment to use for the background. The available environments
        can be accessed through the RenderManager.renderEnvironments property.
        
        Getting this property is only valid when the backgroundType property returns
        EnvironmentRenderSceneBackgroundType. Setting this property will automatically
        set the background type to EnvironmentRenderSceneBackgroundType.
        """
        return RenderEnvironment()
    @backgroundEnvironment.setter
    def backgroundEnvironment(self, value: RenderEnvironment):
        """
        Gets and sets the environment to use for the background. The available environments
        can be accessed through the RenderManager.renderEnvironments property.
        
        Getting this property is only valid when the backgroundType property returns
        EnvironmentRenderSceneBackgroundType. Setting this property will automatically
        set the background type to EnvironmentRenderSceneBackgroundType.
        """
        pass
    @property
    def backgroundType(self) -> RenderSceneBackgroundTypes:
        """
        Specifies the current type of background being used to render the scene.
        To change the background type use either the backgroundEnvironment
        or the backgroundSolidColor to set the environment or color.
        """
        return RenderSceneBackgroundTypes()
    @property
    def isGroundDisplayed(self) -> bool:
        """
        Gets and sets if the ground plane is displayed. The plane allows shadows
        on the ground and reflections if the isGroundReflections property is true.
        """
        return bool()
    @isGroundDisplayed.setter
    def isGroundDisplayed(self, value: bool):
        """
        Gets and sets if the ground plane is displayed. The plane allows shadows
        on the ground and reflections if the isGroundReflections property is true.
        """
        pass
    @property
    def isGroundFlattened(self) -> bool:
        """
        Gets and sets if the ground plane is "textured" where the environment
        image is mapped as a texture.
        """
        return bool()
    @isGroundFlattened.setter
    def isGroundFlattened(self, value: bool):
        """
        Gets and sets if the ground plane is "textured" where the environment
        image is mapped as a texture.
        """
        pass
    @property
    def isGroundReflections(self) -> bool:
        """
        Gets and sets if objects are reflected on the ground plane.
        """
        return bool()
    @isGroundReflections.setter
    def isGroundReflections(self, value: bool):
        """
        Gets and sets if objects are reflected on the ground plane.
        """
        pass
    @property
    def groundRoughness(self) -> float:
        """
        Gets and sets the roughness of the ground which controls the sharpness
        of the reflection. This is only used when the isGroundReflections property
        is true. This is a value between 0 and 1, where 0 is smooth and 1 is rough.
        """
        return float()
    @groundRoughness.setter
    def groundRoughness(self, value: float):
        """
        Gets and sets the roughness of the ground which controls the sharpness
        of the reflection. This is only used when the isGroundReflections property
        is true. This is a value between 0 and 1, where 0 is smooth and 1 is rough.
        """
        pass
    @property
    def cameraType(self) -> core.CameraTypes:
        """
        Gets and sets the type of camera to use when rendering the scene.
        """
        return core.CameraTypes()
    @cameraType.setter
    def cameraType(self, value: core.CameraTypes):
        """
        Gets and sets the type of camera to use when rendering the scene.
        """
        pass
    @property
    def cameraFocalLength(self) -> float:
        """
        Gets and sets the focal length of the camera, specified in millimeters.
        Changing the perspective angle of the camera associated with the active
        viewport will also change the focal length. Focal length and perspective
        angle are two different ways to control the same setting.
        """
        return float()
    @cameraFocalLength.setter
    def cameraFocalLength(self, value: float):
        """
        Gets and sets the focal length of the camera, specified in millimeters.
        Changing the perspective angle of the camera associated with the active
        viewport will also change the focal length. Focal length and perspective
        angle are two different ways to control the same setting.
        """
        pass
    @property
    def cameraExposure(self) -> float:
        """
        Gets and sets the exposure of the camera as specified using the "Exposure Value" (EV). Valid
        values are between -15.0 and 25.0, inclusive.
        """
        return float()
    @cameraExposure.setter
    def cameraExposure(self, value: float):
        """
        Gets and sets the exposure of the camera as specified using the "Exposure Value" (EV). Valid
        values are between -15.0 and 25.0, inclusive.
        """
        pass
    @property
    def isDepthOfFieldEnabled(self) -> bool:
        """
        Gets and sets if the depth of field option is enabled. When setting this to true, use the
        centerOfFocus and depthOfFieldBlur properties to specify how the depth of field is defined.
        """
        return bool()
    @isDepthOfFieldEnabled.setter
    def isDepthOfFieldEnabled(self, value: bool):
        """
        Gets and sets if the depth of field option is enabled. When setting this to true, use the
        centerOfFocus and depthOfFieldBlur properties to specify how the depth of field is defined.
        """
        pass
    @property
    def centerOfFocus(self) -> core.Point3D:
        """
        When the isDepthOfFieldEnabled property is true, this point is used as the center of focus.
        All objects that are the same distance from the camera as this point will be in focus.
        Any geometry that is closer or further away from the camera than this point will appear more out of focus.
        
        Setting this property has the side effect of setting the isDepthOfField property to true. If the
        isDepthOfFieldEnabled property is false, the value of this property is ignored.
        """
        return core.Point3D()
    @centerOfFocus.setter
    def centerOfFocus(self, value: core.Point3D):
        """
        When the isDepthOfFieldEnabled property is true, this point is used as the center of focus.
        All objects that are the same distance from the camera as this point will be in focus.
        Any geometry that is closer or further away from the camera than this point will appear more out of focus.
        
        Setting this property has the side effect of setting the isDepthOfField property to true. If the
        isDepthOfFieldEnabled property is false, the value of this property is ignored.
        """
        pass
    @property
    def depthOfFieldBlur(self) -> float:
        """
        Specify the amount of blur to apply to objects outside the center of focus. This must be a value
        between 0.001 and 2.000 inclusive. The depth of field is defined by using the centerOfFocus
        property to set the depth where the model is in focus.
        
        Setting this property has the side effect of setting the isDepthOfField property to true. If the
        isDepthOfFieldEnabled property is false, the value of this property is ignored.
        """
        return float()
    @depthOfFieldBlur.setter
    def depthOfFieldBlur(self, value: float):
        """
        Specify the amount of blur to apply to objects outside the center of focus. This must be a value
        between 0.001 and 2.000 inclusive. The depth of field is defined by using the centerOfFocus
        property to set the depth where the model is in focus.
        
        Setting this property has the side effect of setting the isDepthOfField property to true. If the
        isDepthOfFieldEnabled property is false, the value of this property is ignored.
        """
        pass
    @property
    def aspectRatio(self) -> RenderAspectRatios:
        """
        Gets and sets the aspect ratio of the rendered image. This is not the resolution, but
        only the aspect ratio. To define a custom aspect ratio set this property to CustomRenderAspectRatio
        and use the aspectRatioHeight and aspectRatioWidth properties to define any aspect ratio.
        
        This is used for in-canvas render to allow you to use a different aspect ratio than what
        is implicitly defined by the size of the active viewport.
        
        If this is set to CustomRenderAspectRatio, use the aspectRatioHeight and aspectRatioWidth to
        define the aspect ratio.
        """
        return RenderAspectRatios()
    @aspectRatio.setter
    def aspectRatio(self, value: RenderAspectRatios):
        """
        Gets and sets the aspect ratio of the rendered image. This is not the resolution, but
        only the aspect ratio. To define a custom aspect ratio set this property to CustomRenderAspectRatio
        and use the aspectRatioHeight and aspectRatioWidth properties to define any aspect ratio.
        
        This is used for in-canvas render to allow you to use a different aspect ratio than what
        is implicitly defined by the size of the active viewport.
        
        If this is set to CustomRenderAspectRatio, use the aspectRatioHeight and aspectRatioWidth to
        define the aspect ratio.
        """
        pass
    @property
    def aspectRatioHeight(self) -> int:
        """
        Gets and sets the height of the aspect ratio of the rendered image. This is not the resolution, but
        only the aspect ratio. For example specifying the width and height of 4:3 is equivalent to setting
        20:15. It's only the ratio of the numbers that matters.
        
        The resolution is determined by the screen resolution when rendering in-canvas or is specified when
        rendering locally or using the cloud. When setting this property the aspectRatio property is
        automatically set to CustomRenderAspectRatio.
        """
        return int()
    @aspectRatioHeight.setter
    def aspectRatioHeight(self, value: int):
        """
        Gets and sets the height of the aspect ratio of the rendered image. This is not the resolution, but
        only the aspect ratio. For example specifying the width and height of 4:3 is equivalent to setting
        20:15. It's only the ratio of the numbers that matters.
        
        The resolution is determined by the screen resolution when rendering in-canvas or is specified when
        rendering locally or using the cloud. When setting this property the aspectRatio property is
        automatically set to CustomRenderAspectRatio.
        """
        pass
    @property
    def aspectRatioWidth(self) -> int:
        """
        Gets and sets the width of the aspect ratio of the rendered image. This is not the resolution, but
        only the aspect ratio. For example specifying the width and height of 4:3 is equivalent to setting
        20:15. It's only the ratio of the numbers that matters.
        
        The resolution is determined by the screen resolution when rendering in-canvas or is specified when
        rendering locally or using the cloud. When setting this property the aspectRatio property is
        automatically set to CustomRenderAspectRatio.
        """
        return int()
    @aspectRatioWidth.setter
    def aspectRatioWidth(self, value: int):
        """
        Gets and sets the width of the aspect ratio of the rendered image. This is not the resolution, but
        only the aspect ratio. For example specifying the width and height of 4:3 is equivalent to setting
        20:15. It's only the ratio of the numbers that matters.
        
        The resolution is determined by the screen resolution when rendering in-canvas or is specified when
        rendering locally or using the cloud. When setting this property the aspectRatio property is
        automatically set to CustomRenderAspectRatio.
        """
        pass

class SectionAnalyses(core.Base):
    """
    Provides access to any section analyses results in the design and supports
    the ability to create new sections.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SectionAnalyses:
        return SectionAnalyses()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SectionAnalysis:
        return None
    def __iter__(self) -> Iterator[SectionAnalysis]:
        return None
    def item(self, index: int) -> SectionAnalysis:
        """
        A method that returns the specified SectionAnalysis 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 SectionAnalysis()
    def itemByName(self, name: str) -> SectionAnalysis:
        """
        A method that returns the specified SectionAnalysis object using the name of the analysis
        as displayed in the browser.
        name : The name of the SectionAnalysis object as displayed in the browser.
        Returns the specified item or null if an invalid name was specified.
        """
        return SectionAnalysis()
    def createInput(self, cutPlaneEntity: core.Base, distance: float) -> SectionAnalysisInput:
        """
        Creates a new SectionAnalysisInput object to use when creating a new Section Analysis.
        A SectionAnalysisInput object is the API equivalent of the command dialog that
        contains the inputs to create a section analysis. Use this object to define the
        settings you need and then pass this into the add method to create the section analysis.
        cutPlaneEntity : The planar entity used to define the cut plane and can be either a
        planar BRepFace or a ConstructionPlane object.
        distance : The offset distance of the section from the cut plane. A positive value will offset
        in the positive normal direction of the cut plane entity. The value is in centimeters.
        This value is used to create a transformation matrix that defines the specified offset.
        Returns a SectionAnalysisInput object if successful.
        """
        return SectionAnalysisInput()
    def add(self, input: SectionAnalysisInput) -> SectionAnalysis:
        """
        Creates a new Section Analysis.
        input : A SectionAnalysisInput object that defines how the section analysis should be created.
        Use the createInput method to create a new SectionAnalysisInput object.
        Returns the new SectionAnalysis object if successful.
        """
        return SectionAnalysis()
    @property
    def count(self) -> int:
        """
        Returns the number of SectionAnalysis objects in the collection.
        """
        return int()

class SectionAnalysisInput(core.Base):
    """
    Provides access the all of the settings available when creating a section analysis.
    This object is the API equivalent of the command dialog that contains the inputs
    to create a section analysis. Use this object to define the settings you need and
    then pass this into the add method to create the section analysis.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SectionAnalysisInput:
        return SectionAnalysisInput()
    def flip(self) -> bool:
        """
        A property that flips which side of the part is cut away by the section. This is a
        convenience method that results in flipping the Z axis of the transform while maintaining
        a valid rectangular coordinate system. You can directly manipulate the transform matrix
        to have the same effect.
        """
        return bool()
    @property
    def cutPlaneEntity(self) -> core.Base:
        """
        A property that gets and sets the planar entity used to define the cut plane and can be either
        a planar BRepFace or a ConstructionPlane object.
        """
        return core.Base()
    @cutPlaneEntity.setter
    def cutPlaneEntity(self, value: core.Base):
        """
        A property that gets and sets the planar entity used to define the cut plane and can be either
        a planar BRepFace or a ConstructionPlane object.
        """
        pass
    @property
    def initialPosition(self) -> core.Matrix3D:
        """
        Returns the matrix that describes the initial position and orientation of the
        specified cut plane entity. Any additional offsets or rotations are defined
        by a transformation matrix that is applied to this initial position matrix.
        That matrix is obtained and set using the transform property.
        """
        return core.Matrix3D()
    @property
    def transform(self) -> core.Matrix3D:
        """
        The initial position of the section plane is defined by the specified cut plane
        entity. Any offsets or rotations are defined by a transformation matrix that is
        applied to the initial position. This property allows you to get and set the
        transformation matrix.
        """
        return core.Matrix3D()
    @transform.setter
    def transform(self, value: core.Matrix3D):
        """
        The initial position of the section plane is defined by the specified cut plane
        entity. Any offsets or rotations are defined by a transformation matrix that is
        applied to the initial position. This property allows you to get and set the
        transformation matrix.
        """
        pass
    @property
    def sectionColor(self) -> core.Color:
        """
        A property that gets and sets the color of the section. This property defaults to null,
        indicating that the component color should be used. The opacity value of the color is ignored.
        """
        return core.Color()
    @sectionColor.setter
    def sectionColor(self, value: core.Color):
        """
        A property that gets and sets the color of the section. This property defaults to null,
        indicating that the component color should be used. The opacity value of the color is ignored.
        """
        pass
    @property
    def isHatchShown(self) -> bool:
        """
        A property that gets and sets if a hatch pattern should be shown on the section. This
        property defaults to true when the input is created.
        """
        return bool()
    @isHatchShown.setter
    def isHatchShown(self, value: bool):
        """
        A property that gets and sets if a hatch pattern should be shown on the section. This
        property defaults to true when the input is created.
        """
        pass

class SharedPointCoincident(core.Base):
    """
    An object that is only used when a glyph representing a special type of coincident
    constraint is selected in the user interface. An example of its use is when two lines
    are connected at their endpoints. If you hover the mouse over the shared endpoint, a
    coincident constraint glyph is displayed and highlights the two lines. Selecting the
    glyph and deleting it will cause the lines to be separate. In this case, there isn't
    a real coincident constraint, but the two lines share the same sketch point. The UI
    uses this "fake" coincident constraint to indicate that the lines share the same point.
    It also supports separating them when the glyph is deleted by creating a new point and
    moving one of the lines to it.
    
    A selection returns this object when a glyph representing this special type of
    coincident constraint is selected. It is only used for selections and provides access
    to the highlighted entities when the glyph is selected.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SharedPointCoincident:
        return SharedPointCoincident()
    @property
    def point(self) -> SketchPoint:
        """
        Returns the sketch point that the sketch curves are connected to.
        """
        return SketchPoint()
    @property
    def curveOne(self) -> SketchCurve:
        """
        Returns the first sketch curve that is highlighted when the glyph was selected.
        """
        return SketchCurve()
    @property
    def curveTwo(self) -> SketchCurve:
        """
        Returns the second sketch curve that is highlighted when the glyph was selected.
        """
        return SketchCurve()

class SheetMetalRule(core.Base):
    """
    A sheet metal rule.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SheetMetalRule:
        return SheetMetalRule()
    def deleteMe(self) -> bool:
        """
        Deletes the rule from the design or library. If the rule is in the
        library and set as the default rule, you cannot delete it. If the
        rule is in a design and is used by a component, you cannot delete it.
        Returns true if the delete was successful.
        """
        return bool()
    @property
    def name(self) -> str:
        """
        The name of the sheet metal rule. When setting the name, it should be
        unique with respect to other sheet metal rules in the design or library.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        The name of the sheet metal rule. When setting the name, it should be
        unique with respect to other sheet metal rules in the design or library.
        """
        pass
    @property
    def thickness(self) -> SheetMetalRuleValue:
        """
        The thickness of the part. Use the returned SheetMetalRuleValue
        object to get and set the current value of the thickness.
        """
        return SheetMetalRuleValue()
    @property
    def kFactor(self) -> float:
        """
        The K Factor value that is used when calculating the flat pattern. It must be
        a value between 0 and 1.
        """
        return float()
    @kFactor.setter
    def kFactor(self, value: float):
        """
        The K Factor value that is used when calculating the flat pattern. It must be
        a value between 0 and 1.
        """
        pass
    @property
    def gap(self) -> SheetMetalRuleValue:
        """
        The value used for miter, rip, and seam gaps. Use the returned SheetMetalRuleValue
        object to get and set the current value of the gap.
        """
        return SheetMetalRuleValue()
    @property
    def bendRadius(self) -> SheetMetalRuleValue:
        """
        The interior radius of the bends. Use the returned SheetMetalRuleValue
        object to get and set the current value of the radius.
        """
        return SheetMetalRuleValue()
    @property
    def reliefWidth(self) -> SheetMetalRuleValue:
        """
        The relief width used in the flat pattern. Use the returned SheetMetalRuleValue
        object to get and set the current value of the relief width.
        """
        return SheetMetalRuleValue()
    @property
    def reliefDepth(self) -> SheetMetalRuleValue:
        """
        The relief depth used in the flat pattern. Use the returned SheetMetalRuleValue
        object to get and set the current value of the relief depth.
        """
        return SheetMetalRuleValue()
    @property
    def reliefRemnant(self) -> SheetMetalRuleValue:
        """
        The relief remnant used in the flat pattern. Use the returned SheetMetalRuleValue
        object to get and set the current value of the relief remnant.
        """
        return SheetMetalRuleValue()
    @property
    def reliefShape(self) -> BendReliefShapes:
        """
        Gets and sets the bend relief shape to use.
        """
        return BendReliefShapes()
    @reliefShape.setter
    def reliefShape(self, value: BendReliefShapes):
        """
        Gets and sets the bend relief shape to use.
        """
        pass
    @property
    def twoBendReliefShape(self) -> TwoBendReliefShapes:
        """
        Gets and sets the relief shape to use when two bends intersect.
        
        When set to square or round relief shape, the value of the twoBendReliefPlacement
        property will be set to IntersectionTwoBendReliefPlacement by default. For round and square relief
        shapes you can change the twoBendReliefPlacement property to VertexTwoBendReliefPlacement.
        For round shapes, you can also use TangentTwoBendReliefPlacement.
        """
        return TwoBendReliefShapes()
    @twoBendReliefShape.setter
    def twoBendReliefShape(self, value: TwoBendReliefShapes):
        """
        Gets and sets the relief shape to use when two bends intersect.
        
        When set to square or round relief shape, the value of the twoBendReliefPlacement
        property will be set to IntersectionTwoBendReliefPlacement by default. For round and square relief
        shapes you can change the twoBendReliefPlacement property to VertexTwoBendReliefPlacement.
        For round shapes, you can also use TangentTwoBendReliefPlacement.
        """
        pass
    @property
    def twoBendReliefSize(self) -> SheetMetalRuleValue:
        """
        The relief size used when two bends meet in the flat pattern and the relief
        shape is round or square. Use the returned SheetMetalRuleValue object to
        get and set the current value of the relief size.
        """
        return SheetMetalRuleValue()
    @property
    def twoBendReliefPlacement(self) -> TwoBendReliefPlacements:
        """
        Gets and sets the relief placement for a two-bend relief shape. When the relief shape
        is round, both intersection and tangent are valid placements. For square shape, only
        intersection is valid. For all other shapes, this property will return NoTwoBendReliefPlacement
        because the placement option is not used.
        """
        return TwoBendReliefPlacements()
    @twoBendReliefPlacement.setter
    def twoBendReliefPlacement(self, value: TwoBendReliefPlacements):
        """
        Gets and sets the relief placement for a two-bend relief shape. When the relief shape
        is round, both intersection and tangent are valid placements. For square shape, only
        intersection is valid. For all other shapes, this property will return NoTwoBendReliefPlacement
        because the placement option is not used.
        """
        pass
    @property
    def threeBendReliefShape(self) -> ThreeBendReliefShapes:
        """
        Gets and sets the relief shape to use when three bends intersect.
        """
        return ThreeBendReliefShapes()
    @threeBendReliefShape.setter
    def threeBendReliefShape(self, value: ThreeBendReliefShapes):
        """
        Gets and sets the relief shape to use when three bends intersect.
        """
        pass
    @property
    def threeBendReliefRadius(self) -> SheetMetalRuleValue:
        """
        The relief size used when three bends meet in the flat pattern and the relief shape
        is "round with radius". Use the returned SheetMetalRuleValue object to get and set
        the current value of the relief size.
        """
        return SheetMetalRuleValue()
    @property
    def parentDesign(self) -> Design:
        """
        Returns the parent design for a sheet metal rule in a design or it
        returns null if the sheet metal rule is in the library.
        """
        return Design()
    @property
    def isDefault(self) -> bool:
        """
        Gets and sets which rule in a library is the default rule. This is only
        valid for rules in a library and will fail for rules in a design.
        """
        return bool()
    @isDefault.setter
    def isDefault(self, value: bool):
        """
        Gets and sets which rule in a library is the default rule. This is only
        valid for rules in a library and will fail for rules in a design.
        """
        pass
    @property
    def isUsed(self) -> bool:
        """
        Indicates if this rule is currently being used by a component. This is only
        valid for rules in a design.
        """
        return bool()
    @property
    def units(self) -> str:
        """
        Gets the units this rule uses to display values in the dialog.
        Rules currently only use mm or inch and the units are permanently
        associated with a rule and cannot be modified.
        """
        return str()

class SheetMetalRules(core.Base):
    """
    A collection of sheet metal rules.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SheetMetalRules:
        return SheetMetalRules()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SheetMetalRule:
        return None
    def __iter__(self) -> Iterator[SheetMetalRule]:
        return None
    def item(self, index: int) -> SheetMetalRule:
        """
        Function that returns the specified sheet metal rule 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 SheetMetalRule()
    def itemByName(self, name: str) -> SheetMetalRule:
        """
        Function that returns the specified sheet metal rule using the name of the rule.
        name : The name of the rule within the collection to return. This is the name seen in the Sheet Metal Rules dialog.
        Returns the specified item or null if the specified name was not found.
        """
        return SheetMetalRule()
    def addByCopy(self, existingSheetMetalRule: SheetMetalRule, name: str) -> SheetMetalRule:
        """
        Creates a new sheet metal rule by copying an existing rule. The new rule
        can then be edited to define the rule characteristics you want.
        existingSheetMetalRule : The existing SheetMetalRule object you want to copy. This can be a rule from the
        library or the design.
        name : The name to assign to the new sheet metal rule. This name must be unique with respect to other
        sheet metal rules in the design or library its created in.
        Returns the new SheetMetalRule object or will assert in the case where it fails.
        """
        return SheetMetalRule()
    @property
    def count(self) -> int:
        """
        The number of sheet metal rules in the collection.
        """
        return int()

class SheetMetalRuleValue(core.Base):
    """
    Used to get and set the current value associated with a sheet metal rule. A value
    can be gotten or set using a string or a double. A string can contain equations and unit specifiers
    whereas a double defines the size in centimeters. In the user-interface, the user is always
    setting the string expression. However, when programming it is typically more convenient to set
    it using an explicit value. When the value is set using a double, Fusion creates an equivalent
    expression.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SheetMetalRuleValue:
        return SheetMetalRuleValue()
    @property
    def expression(self) -> str:
        """
        Gets and sets the expression of the sheet metal rule value. This can be an
        equation that includes the name "Thickness" and can also include length unit
        specifiers. For example, a valid expression is "Thickness / 2 + 1 mm". If no
        units are specified, the unit is implied and uses the units associated with the rule
        which can be mm or inch. For example an expression of "3" will be 3 inches if the
        rule units are inches or 3 mm if the rule units are millimeters.
        """
        return str()
    @expression.setter
    def expression(self, value: str):
        """
        Gets and sets the expression of the sheet metal rule value. This can be an
        equation that includes the name "Thickness" and can also include length unit
        specifiers. For example, a valid expression is "Thickness / 2 + 1 mm". If no
        units are specified, the unit is implied and uses the units associated with the rule
        which can be mm or inch. For example an expression of "3" will be 3 inches if the
        rule units are inches or 3 mm if the rule units are millimeters.
        """
        pass
    @property
    def value(self) -> float:
        """
        Gets and sets the value of the sheet metal rule value in centimeters. Setting
        this value will create a new expression that is equivalent to the new value.
        """
        return float()
    @value.setter
    def value(self, value: float):
        """
        Gets and sets the value of the sheet metal rule value in centimeters. Setting
        this value will create a new expression that is equivalent to the new value.
        """
        pass

class ShellFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a shell
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ShellFeatureInput:
        return ShellFeatureInput()
    @property
    def inputEntities(self) -> core.ObjectCollection:
        """
        Gets and sets the input faces/bodies.
        If IsTangentChain is true, all the faces that are tangentially connected to the input faces (if any) will also be included.
        Fails if any faces are input, and the owning bodies of the faces are also input.
        """
        return core.ObjectCollection()
    @inputEntities.setter
    def inputEntities(self, value: core.ObjectCollection):
        """
        Gets and sets the input faces/bodies.
        If IsTangentChain is true, all the faces that are tangentially connected to the input faces (if any) will also be included.
        Fails if any faces are input, and the owning bodies of the faces are also input.
        """
        pass
    @property
    def isTangentChain(self) -> bool:
        """
        Gets and sets if any faces that are tangentially connected to any of
        the input faces will also be included in setting InputEntities. It defaults to true.
        """
        return bool()
    @isTangentChain.setter
    def isTangentChain(self, value: bool):
        """
        Gets and sets if any faces that are tangentially connected to any of
        the input faces will also be included in setting InputEntities. It defaults to true.
        """
        pass
    @property
    def insideThickness(self) -> core.ValueInput:
        """
        Gets and sets the inside thickness.
        """
        return core.ValueInput()
    @insideThickness.setter
    def insideThickness(self, value: core.ValueInput):
        """
        Gets and sets the inside thickness.
        """
        pass
    @property
    def outsideThickness(self) -> core.ValueInput:
        """
        Gets and sets the outside thickness.
        """
        return core.ValueInput()
    @outsideThickness.setter
    def outsideThickness(self, value: core.ValueInput):
        """
        Gets and sets the outside thickness.
        """
        pass
    @property
    def creationOccurrence(self) -> Occurrence:
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the shell is created based on geometry (e.g. a profile and/or face(s))
        in another component AND (the shell) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI
        """
        return Occurrence()
    @creationOccurrence.setter
    def creationOccurrence(self, value: Occurrence):
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the shell is created based on geometry (e.g. a profile and/or face(s))
        in another component AND (the shell) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass
    @property
    def shellType(self) -> ShellTypes:
        """
        The shell type used when creating a shell.
        The default value is SharpOffsetShellType.
        """
        return ShellTypes()
    @shellType.setter
    def shellType(self, value: ShellTypes):
        """
        The shell type used when creating a shell.
        The default value is SharpOffsetShellType.
        """
        pass

class ShellFeatures(core.Base):
    """
    Collection that provides access to all of the existing shell features in a component
    and supports the ability to create new shell features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ShellFeatures:
        return ShellFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ShellFeature:
        return None
    def __iter__(self) -> Iterator[ShellFeature]:
        return None
    def item(self, index: int) -> ShellFeature:
        """
        Function that returns the specified shell feature 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 ShellFeature()
    def createInput(self, inputEntities: core.ObjectCollection, isTangentChain: bool = True) -> ShellFeatureInput:
        """
        Creates a ShellFeatureInput object. Use properties and methods on this object
        to define the shell you want to create and then use the Add method, passing in
        the ShellFeatureInput object.
        inputEntities : The collection contains the faces to remove and the bodies to perform shell.
        Fails if any faces are input, and the owning bodies of the faces are also input.
        isTangentChain : A boolean value for setting whether or not faces that are tangentially connected to
        the input faces (if any) will also be included. It defaults to true.
        Returns the newly created ShellFeatureInput object or null if the creation failed.
        """
        return ShellFeatureInput()
    def add(self, input: ShellFeatureInput) -> ShellFeature:
        """
        Creates a new shell feature.
        input : A ShellFeatureInput object that defines the desired shell. Use the createInput
        method to create a new ShellFeatureInput object and then use methods on it
        (the ShellFeatureInput object) to define the shell.
        Returns the newly created ShellFeature object or null if the creation failed.
        """
        return ShellFeature()
    def itemByName(self, name: str) -> ShellFeature:
        """
        Function that returns the specified shell feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return ShellFeature()
    @property
    def count(self) -> int:
        """
        The number of shell features in the collection.
        """
        return int()

class SilhouetteSplitFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a silhouette split feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SilhouetteSplitFeatureInput:
        return SilhouetteSplitFeatureInput()
    @property
    def targetBody(self) -> BRepBody:
        """
        Gets and sets the solid body to split.
        """
        return BRepBody()
    @targetBody.setter
    def targetBody(self, value: BRepBody):
        """
        Gets and sets the solid body to split.
        """
        pass
    @property
    def viewDirection(self) -> core.Base:
        """
        Gets and sets the entity that defines the silhouette view direction, which can be a
        construction axis, linear BRepEdge, planar BRepFace or a construction plane.
        """
        return core.Base()
    @viewDirection.setter
    def viewDirection(self, value: core.Base):
        """
        Gets and sets the entity that defines the silhouette view direction, which can be a
        construction axis, linear BRepEdge, planar BRepFace or a construction plane.
        """
        pass
    @property
    def operation(self) -> SilhouetteSplitOperations:
        """
        Gets and sets the type of silhouette split operation to perform.
        """
        return SilhouetteSplitOperations()
    @operation.setter
    def operation(self, value: SilhouetteSplitOperations):
        """
        Gets and sets the type of silhouette split operation to perform.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class SilhouetteSplitFeatures(core.Base):
    """
    Collection that provides access to all of the existing Silhouette Split features in a component
    and supports the ability to create new Silhouette Split features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SilhouetteSplitFeatures:
        return SilhouetteSplitFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SilhouetteSplitFeature:
        return None
    def __iter__(self) -> Iterator[SilhouetteSplitFeature]:
        return None
    def item(self, index: int) -> SilhouetteSplitFeature:
        """
        Function that returns the specified silhouette split feature 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 SilhouetteSplitFeature()
    def createInput(self, viewDirection: core.Base, targetBody: BRepBody, operation: SilhouetteSplitOperations) -> SilhouetteSplitFeatureInput:
        """
        Creates a SilhouetteSplitFeatureInput object. Use properties and methods on this object
        to define the silhouette split you want to create and then use the Add method, passing in
        the SilhouetteSplitFeatureInput object.
        viewDirection : A construction axis, linear BRepEdge, planar BRepFace or a construction plane that defines the view direction
        where the silhouette is calculated.
        targetBody : Input the single solid body to split
        operation : The type of silhouette split operation to perform.
        Returns the newly created SilhouetteSplitFeatureInput object or null if the creation failed.
        """
        return SilhouetteSplitFeatureInput()
    def add(self, input: SilhouetteSplitFeatureInput) -> SilhouetteSplitFeature:
        """
        Creates a new silhouette split feature.
        input : A SilhouetteSplitFeatureInput object that defines the desired silhouette split feature. Use the createInput
        method to create a new SilhouetteSplitFeatureInput object and then use methods on it
        (the SilhouetteSplitFeatureInput object) to define the silhouette split.
        Returns the newly created SilhouetteSplitFeature object or null if the creation failed.
        """
        return SilhouetteSplitFeature()
    def itemByName(self, name: str) -> SilhouetteSplitFeature:
        """
        Function that returns the specified silhouette split feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return SilhouetteSplitFeature()
    @property
    def count(self) -> int:
        """
        The number of Silhouette Split features in the collection.
        """
        return int()

class Sketch(core.Base):
    """
    Represents a sketch within a component.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Sketch:
        return Sketch()
    def projectCutEdges(self, body: BRepBody) -> core.ObjectCollection:
        """
        Intersects the specified body with the sketch plane and creates new
        curves representing the intersection.
        body : The body to be intersected by the sketch.
        Returns a collection of the sketch entities that were created as a result of the
        cut.
        """
        return core.ObjectCollection()
    def include(self, entity: core.Base) -> core.ObjectCollection:
        """
        Creates new sketch curves and points that represent the specified entity
        as sketch geometry. The sketch geometry is not projected but is created
        in the same location in space as the input geometry.
        entity : The entity to include into the sketch. This can be a sketch entity from
        another sketch, edge, face (which results in getting all of its edges, a
        vertex, construction axis, or construction point.
        Returns a collection of the sketch entities that were created as a result of the include.
        When including this curves it will be a single sketch curve, but for faces, multiple
        sketch curves will be created; one for each edge.
        """
        return core.ObjectCollection()
    def findConnectedCurves(self, curve: SketchCurve) -> core.ObjectCollection:
        """
        Finds the sketch curves that are end connected to the input curve. This can be useful
        for many cases but is especially useful in gathering the input when creating an offset.
        curve : The initial sketch curve that will be used to find the connected curves.
        A collection of the connected curves. They are returned in their connected order with
        the original input curve being one of the curves.
        """
        return core.ObjectCollection()
    def modelToSketchSpace(self, modelCoordinate: core.Point3D) -> core.Point3D:
        """
        A specified point in model space returns the equivalent point in sketch space.
        This is sensitive to the assembly context.
        modelCoordinate : A coordinate in model space.
        Returns the equivalent point in sketch space.
        """
        return core.Point3D()
    def sketchToModelSpace(self, sketchCoordinate: core.Point3D) -> core.Point3D:
        """
        A specified point in sketch space returns the equivalent point in model space.
        This is sensitive to the assembly context.
        sketchCoordinate : A coordinate in sketch space.
        Returns the equivalent point in model space.
        """
        return core.Point3D()
    def move(self, sketchEntities: core.ObjectCollection, transform: core.Matrix3D) -> bool:
        """
        Moves the specified sketch entities using the specified transform.
        Transform respects any constraints that would normally prohibit the move.
        sketchEntities : A collection of sketch entities to transform.
        transform : The transform that defines the move, rotate or scale.
        Returns true if the move was successful.
        """
        return bool()
    def copy(self, sketchEntities: core.ObjectCollection, transform: core.Matrix3D, targetSketch: Sketch = None) -> core.ObjectCollection:
        """
        Copies the specified sketch entities, applying the specified transform.
        Any geometric or dimension constraints associated with the entities will
        automatically be copied, if possible. For example, if there is a horizontal
        dimension and the transform defines a rotation then it will not be included in the
        result. This same behavior can be seen when performing a copy/paste operation
        in the user interface.
        sketchEntities : The collection of sketch entities to copy. They must all exist in this sketch.
        transform : The transform to apply to the copied entities.
        targetSketch : Optionally specifies the sketch to copy the entities to. If not provided the entities are copied to this sketch.
        Returns a collection of the new sketch entities that were created as a result of the copy.
        """
        return core.ObjectCollection()
    def deleteMe(self) -> bool:
        """
        Deletes the sketch.
        Returns true if the delete was successful.
        """
        return bool()
    def importSVG(self, fullFilename: str, xPosition: float, yPosition: float, scale: float) -> bool:
        """
        Imports the contents of an SVG file into the active sketch.
        fullFilename : The full filename, including the path, of the SVG file.
        xPosition : The X offset in centimeters in the sketch for the origin of the SVG data
        relative to the sketch origin.
        yPosition : The Y offset in centimeters in the sketch for the origin of the SVG data
        relative to the sketch origin.
        scale : The scale value to apply to the imported SVG data.
        Returns true if the import was successful.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> Sketch:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return Sketch()
    def redefine(self, planarEntity: core.Base) -> bool:
        """
        Changes which plane the sketch is based on.
        planarEntity : A construction plane or planar face that defines the sketch plane
        Returns true if the operation was successful.
        """
        return bool()
    def intersectWithSketchPlane(self, entities: list[core.Base]) -> list[SketchEntity]:
        """
        Intersects the specified entities (BRepBody, BRepFace, BRepEdge, BRepVertex, SketchCurve, ConstructionPoint,
        ConstructionAxis, and ConstructionPlane) with the sketch plane and creates sketch geometry that represents
        the intersection.
        entities : An array containing the entities to intersect with the sketch plane.
        An array returning the sketch entities that were created as a result of the
        intersections. It's possible that this can come back empty in the case where the input
        entities don't intersect the sketch plane.
        """
        return [SketchEntity()]
    def projectToSurface(self, faces: list[BRepFace], curves: list[core.Base], projectType: SurfaceProjectTypes, directionEntity: core.Base = None) -> list[SketchEntity]:
        """
        Projects the specified set of curves onto the specified set of faces using the specified method of projection.
        if the projection type is along a vector, then the directionEntity argument must be supplied. if the projectionType
        is the closest point method, the directionEntity argument is ignored.
        faces : An array of BRepFace objects that the curves will be projected onto.
        curves : An array of various curve objects that will be projected onto the faces. The curves can be sketch curves and points,
        BRepEdge objects, ConstructionAxis objects, and ConstructionPoint objects.
        projectType : Specifies which projection type to use which defines the direction of projection. If this is set to AlongVectorSurfaceProjectType
        the directionEntity argument must be provided.
        directionEntity : if the projectType argument is AlongVectorSurfaceProjectType, this argument must be specified and defines the
        direction of projection. It can be a linear BRepEdge, a BRepFace where the normal will be used, a SketchLine, or
        a ConstructionLine.
        Returns an array of the sketch entities that were created as a result of projection the specified curves onto
        the faces.
        """
        return [SketchEntity()]
    def setConstructionState(self, sketchCurves: list[SketchCurve], constructionState: SketchCurveConstructionStates) -> bool:
        """
        Method that sets the Construction state for an array of sketch curves.
        sketchCurves : An array of sketch curves to set the construction status.
        constructionState : Input enum value that specifies if the construction state of the input curves should be toggled,
        set to construction, or set to normal.
        Returns true if successful.
        """
        return bool()
    def setCenterlineState(self, sketchLines: list[SketchLine], centerlineState: SketchLineCenterlineStates) -> bool:
        """
        Method that sets the Centerline state for an array of sketch lines.
        sketchLines : An array of sketch lines to set the centerline status
        centerlineState : Input enum value that specifies if the centerline state of the input lines should be toggled,
        set to centerline, or set to normal
        Returns true if successful.
        """
        return bool()
    def createSpunProfile(self, input: SpunProfileInput) -> list[SketchEntity]:
        """
        Creates sketch geometry that represents the spun profile. The spun profile is the silhouette of the
        entities as if they were spinning around an axis. The created spun profile is based on the
        information provided by the SpunProfileInput object.
        input : The SpunProfileInput object that specifies the input needed to create the spun profile.
        An array of sketch entities that were created as a result of the spun profile.
        """
        return [SketchEntity()]
    def createSpunProfileInput(self, entities: list[core.Base], axis: core.Base) -> SpunProfileInput:
        """
        Creates a new SpunProfileInput object that is used to specify the input needed to create
        a spun profile.
        entities : An array containing the entities (BRepBody or BRepFace) to
        create a spun profile.
        axis : The axis can be a sketch line, construction axis, or linear edge. The axis must
        not be perpendicular to the sketch plane.
        Returns the newly created SpunProfileInput object or null if the creation failed.
        """
        return SpunProfileInput()
    def addCenterToCenterSlot(self, startPoint: core.Base, endPoint: core.Base, width: core.ValueInput, createWidthDimension: bool = False, length: core.ValueInput = None, angle: core.ValueInput = None) -> list[core.Base]:
        """
        Creates the geometry that represents a slot. Geometric constraints are automatically
        added to the geometry to maintain the slot shape and optionally, dimensions to control
        the size can be added. The created geometry and constraints are returned.
        startPoint : The start point of the slot. It can be a SketchPoint or Point3D object. If a SketchPoint
        is provided a coincident constraint will be created between the start point of the slot
        and the provided sketch point.
        endPoint : The end point of the slot. It can be a SketchPoint or Point3D object. This point defines
        the length of the slot. If a SketchPoint is provided a coincident constraint is created
        between the end point of the slot and the provided sketch point.
        
        If the length or angle arguments are provided, the point is not the actual end point
        but is used to determine the direction of the slot. If both the length and angle arguments
        are provided this endPoint will be ignored and null can be provided.
        width : A ValueInput object that defines the width of the slot. The ValueInput can define either
        a real value or an expression string. If it is a real value, it defines the width of the
        slot in centimeters.
        
        When using a ValueInput created using a string, it's the same as creating a parameter in the user-interface.
        You can specify any valid expression, i.e. "5", "5 in", "5 in / 2", "5 + Length" that defines a length.
        createWidthDimension : Specifies if a dimension constraint and its associated parameter is created to control the width
        of the slot.
        length : Optional argument that defines the length of the slot using a ValueInput. If this is provided, it
        overrides the endPoint and explicitly defines the length of the slot. If the length is specified,
        a dimension constraint and its associated parameter is created to control the length.
        
        The ValueInput can define either a real value or an expression string. If it is a real value,
        it defines the length of the slot in centimeters. When it is an expression string, it's the same as
        creating a parameter in the user-interface. You can specify any valid expression, i.e. "5", "5 in",
        "5 in / 2", "5 + Length" that defines a length.
        angle : Optional argument that defines the angle of the slot using a ValueInput. If this is provided, it
        overrides the endPoint and explicitly defines the angle of the slot. If the angle is specified,
        a horizontal construction line, a dimension constraint, and its associated parameter is created to control the angle.
        The angle is measured from a horizontal line that starts at that start point and goes in the positive
        X direction. The angle is always less than 180 deg. and depending on the location of the end point, the angle
        will be clockwise or counterclockwise from the horizontal line.
        
        The ValueInput can define either a real value or an expression string. If it is a real value,
        it defines the angle of the slot in radians. When it is an expression string, it's the same as
        creating a parameter in the user-interface. You can specify any valid expression, i.e. "45", "45 deg",
        "180 / 3", "Sweep * 2" that defines an angle.
        Returns an array containing the start point arc, the end point arc, the two lines that define the slot, the construction
        line between the two points, and optionally, the construction line the angle is measured from if an angle is specified, and
        the dimension constraints that were created in the order of width, length, and angle.
        """
        return [core.Base()]
    def project2(self, entities: list[core.Base], isLinked: bool) -> list[SketchEntity]:
        """
        Projects the specified entity or entities onto the X-Y plane of the sketch and returns
        the created sketch entity(s).
        entities : An array containing the entities to project. It can be an array of one for the case where a single
        entity is being projected. The following types of entities are valid for projection: sketch curves
        and points, B-Rep bodies (which results in projecting the silhouette of the body), B-Rep edges,
        B-Rep faces (which results in projecting all of its edges), B-Rep vertices, construction axes,
        construction points, and construction planes that are perpendicular to the sketch which results
        in the creation of a line.
        isLinked : A Boolean that indicates if the resulting sketch curves will be parametrically linked to the
        source geometry that was projected. If true, they will be linked. If false, the resulting curves
        are independent.
        Returns an array of the sketch entities that were created as a result of the projection.
        """
        return [SketchEntity()]
    def addCenterPointSlot(self, centerPoint: core.Base, endPoint: core.Base, width: core.ValueInput, createWidthDimension: bool = False, halfLength: core.ValueInput = None, angle: core.ValueInput = None) -> list[core.Base]:
        """
        Creates the geometry that represents a slot where the first point defines the center of the slot
        and the second point defines the direction and half-length. Geometric constraints are automatically
        added to the geometry to maintain the slot shape and optionally, dimensions to control
        the size can be added. The created geometry and constraints are returned.
        centerPoint : The center point of the slot. It can be a SketchPoint or Point3D object. If a SketchPoint
        is provided a coincident constraint will be created between the center point of the slot
        and the provided sketch point.
        endPoint : A point that defines the direction and half-length of the slot. It can be a SketchPoint or Point3D object.
        The distance from the center point to this point represents half the total length of the slot.
        If a SketchPoint is provided a coincident constraint is created between the end point of the slot
        and the provided sketch point.
        
        If the halfLength or angle arguments are provided, the point is not the actual end point
        but is used to determine the direction of the slot. If both the halfLength and angle arguments
        are provided this endPoint will be ignored and null can be provided.
        width : A ValueInput object that defines the width of the slot. The ValueInput can define either
        a real value or an expression string. If it is a real value, it defines the width of the
        slot in centimeters.
        
        When using a ValueInput created using a string, it's the same as creating a parameter in the user-interface.
        You can specify any valid expression, i.e. "5", "5 in", "5 in / 2", "5 + Length" that defines a length.
        createWidthDimension : Specifies if a dimension constraint and its associated parameter is created to control the width
        of the slot.
        halfLength : Optional argument that defines half the length of the slot using a ValueInput. If this is provided, it
        overrides the endPoint distance and explicitly defines half the length of the slot. If the half length is specified,
        a dimension constraint and its associated parameter is created to control the length.
        
        The ValueInput can define either a real value or an expression string. If it is a real value,
        it defines half the length of the slot in centimeters. When it is an expression string, it's the same as
        creating a parameter in the user-interface. You can specify any valid expression, i.e. "2.5", "2.5 in",
        "5 in / 4", "HalfLength" that defines a length.
        angle : Optional argument that defines the angle of the slot using a ValueInput. If this is provided, it
        overrides the endPoint and explicitly defines the angle of the slot. If the angle is specified,
        a horizontal construction line, a dimension constraint, and its associated parameter is created to control the angle.
        The angle is measured from a horizontal line that starts at the center point and goes in the positive
        X direction. The angle is always less than 180 deg. and depending on the location of the direction point, the angle
        will be clockwise or counterclockwise from the horizontal line.
        
        The ValueInput can define either a real value or an expression string. If it is a real value,
        it defines the angle of the slot in radians. When it is an expression string, it's the same as
        creating a parameter in the user-interface. You can specify any valid expression, i.e. "45", "45 deg",
        "180 / 3", "Sweep * 2" that defines an angle.
        Returns an array containing the start point arc, the end point arc, the two lines that define the slot, the construction
        line between the start and end point, and optionally, the construction line the angle is measured from if an angle is specified, and
        the dimension constraints that were created in the order of width, half length, and angle.
        """
        return [core.Base()]
    def addOverallSlot(self, startPoint: core.Base, endPoint: core.Base, width: core.ValueInput, createWidthDimension: bool = False, length: core.ValueInput = None, angle: core.ValueInput = None) -> list[core.Base]:
        """
        Creates the geometry that represents an overall slot. Geometric constraints are automatically
        added to the geometry to maintain the slot shape and optionally, dimensions to control
        the size can be added. The created geometry and constraints are returned.
        startPoint : The start point of the slot. It can be a SketchPoint or Point3D object. If a SketchPoint
        is provided a coincident constraint will be created between the start point of the slot
        and the provided sketch point.
        endPoint : The end point of the slot. It can be a SketchPoint or Point3D object. This point defines
        the length of the slot. If a SketchPoint is provided a coincident constraint is created
        between the end point of the slot and the provided sketch point.
        
        If either the length or angle argument is provided, the point is not the actual end point
        but is used to determine the direction of the slot. If both the length and angle arguments
        are provided this endPoint will be ignored and null can be provided.
        width : A ValueInput object that defines the width of the slot. The ValueInput can define either
        a real value or an expression string. If it is a real value, it defines the width of the
        slot in centimeters.
        
        When using a ValueInput created using a string, it's the same as creating a parameter in the user-interface.
        You can specify any valid expression, i.e. "5", "5 in", "5 in / 2", "5 + Length" that defines a length.
        createWidthDimension : Specifies if a dimension constraint and its associated parameter is created to control the width
        of the slot.
        length : Optional argument that defines the overall length of the slot using a ValueInput. If this is provided, it
        overrides the endPoint and explicitly defines the length of the slot. If the length is specified,
        a dimension constraint and its associated parameter is created to control the length.
        
        The ValueInput can define either a real value or an expression string. If it is a real value,
        it defines the length of the slot in centimeters. When it is an expression string, it's the same as
        creating a parameter in the user-interface. You can specify any valid expression, i.e. "5", "5 in",
        "5 in / 2", "5 + Length" that defines a length.
        angle : Optional argument that defines the angle of the slot using a ValueInput. If this is provided, it
        overrides the endPoint and explicitly defines the angle of the slot. If the angle is specified,
        a horizontal construction line, a dimension constraint, and its associated parameter is created to control the angle.
        The angle is measured from a horizontal line that starts at the start point and goes in the positive
        X direction. The angle is always less than 180 deg. and depending on the location of the end point, the angle
        will be clockwise or counterclockwise from the horizontal line.
        
        The ValueInput can define either a real value or an expression string. If it is a real value,
        it defines the angle of the slot in radians. When it is an expression string, it's the same as
        creating a parameter in the user-interface. You can specify any valid expression, i.e. "45", "45 deg",
        "180 / 3", "Sweep * 2" that defines an angle.
        Returns an array containing the start point arc, the end point arc, the two lines that define the slot, the construction
        line between the two points, and optionally, the construction line the angle is measured from if an angle is specified, and
        the dimension constraints that were created in the order of length, angle and width.
        """
        return [core.Base()]
    def createAutoConstrainInput(self) -> AutoConstrainInput:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Creates a new AutoConstrainInput object associated with this sketch. The input object is
        used to define the various options when adding dimension and geometric constraints to
        help constrain a sketch. The returned object has all options defined with default values
        and additional constraints can be applied by passing this into the autoConstrain method.
        Returns the newly created AutoConstrainInput object. Validation of sketch suitability
        (entity count, entitlements, fully constrained status, 3D vs 2D, etc.) is performed
        when the autoConstrain method is called, not during input creation.
        """
        return AutoConstrainInput()
    def autoConstrain(self, input: AutoConstrainInput) -> AutoConstrainResult:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Auto constrains the sketch using the information provided by the input object. This returns
        a single locally computed solution.
        input : The AutoConstrainInput object that defines the various settings to use when fully constraining the sketch.
        The input object must be associated with this sketch (created by this sketch's createAutoConstrainInput method).
        Returns an AutoConstrainResult object where information about how the sketch was constrained
        can be obtained. Returns null in the case of a failure or if the input is invalid.
        """
        return AutoConstrainResult()
    @property
    def name(self) -> str:
        """
        Gets and sets the name of this sketch as seen in the browser and timeline.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name of this sketch as seen in the browser and timeline.
        """
        pass
    @property
    def sketchPoints(self) -> SketchPoints:
        """
        Returns the sketch points collection associated with this sketch.
        This provides access to the existing sketch points and supports
        the creation of new sketch points.
        """
        return SketchPoints()
    @property
    def sketchCurves(self) -> SketchCurves:
        """
        Returns the sketch curves collection associated with this sketch.
        This provides access to the existing sketch curves which is all
        geometry in the sketch except for sketch points. It is through this
        collection that new sketch geometry gets created.
        """
        return SketchCurves()
    @property
    def sketchDimensions(self) -> SketchDimensions:
        """
        Returns the sketch dimensions collection associated with this sketch.
        This provides access to the existing sketch dimensions and supports
        the creation of new sketch dimensions.
        """
        return SketchDimensions()
    @property
    def geometricConstraints(self) -> GeometricConstraints:
        """
        Returns the sketch constraints collection associated with this sketch.
        This provides access to the existing sketch constraints and supports
        the creation of new sketch constraints.
        """
        return GeometricConstraints()
    @property
    def transform(self) -> core.Matrix3D:
        """
        Gets and sets the transform of the sketch with respect to model space.
        This defines the transform from the parent component space
        to the sketch space. For example, if you have point coordinates in the space
        of the parent component and apply this transform it will result in the
        coordinates of the equivalent position in sketch space.
        The transform is sensitive to the assembly context.
        
        The position of a parametric sketch cannot be modified since its position is defined by
        its parametric association to other geometry. As a result this property will fail when called on
        a parametric sketch. Setting this property is only valid for sketches in a non-parametric
        design or sketches owned by a base feature.
        """
        return core.Matrix3D()
    @transform.setter
    def transform(self, value: core.Matrix3D):
        """
        Gets and sets the transform of the sketch with respect to model space.
        This defines the transform from the parent component space
        to the sketch space. For example, if you have point coordinates in the space
        of the parent component and apply this transform it will result in the
        coordinates of the equivalent position in sketch space.
        The transform is sensitive to the assembly context.
        
        The position of a parametric sketch cannot be modified since its position is defined by
        its parametric association to other geometry. As a result this property will fail when called on
        a parametric sketch. Setting this property is only valid for sketches in a non-parametric
        design or sketches owned by a base feature.
        """
        pass
    @property
    def isParametric(self) -> bool:
        """
        Indicates if this sketch is parametric or not. For parametric sketches, you can also
        get the construction plane or face it is associative to using the ReferencePlane property.
        """
        return bool()
    @property
    def isVisible(self) -> bool:
        """
        Gets if this sketch is currently visible in the graphics window. Use the
        isLightBulbOn to change if the light bulb beside the sketch 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 body is actually visible or not.
        """
        return bool()
    @isVisible.setter
    def isVisible(self, value: bool):
        """
        Gets if this sketch is currently visible in the graphics window. Use the
        isLightBulbOn to change if the light bulb beside the sketch 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 body is actually visible or not.
        """
        pass
    @property
    def areDimensionsShown(self) -> bool:
        """
        Indicates if the dimensions of the sketch are displayed when the sketch is not active
        (in sketch edit mode)
        """
        return bool()
    @areDimensionsShown.setter
    def areDimensionsShown(self, value: bool):
        """
        Indicates if the dimensions of the sketch are displayed when the sketch is not active
        (in sketch edit mode)
        """
        pass
    @property
    def areProfilesShown(self) -> bool:
        """
        Indicates if the profiles of the sketch are displayed
        """
        return bool()
    @areProfilesShown.setter
    def areProfilesShown(self, value: bool):
        """
        Indicates if the profiles of the sketch are displayed
        """
        pass
    @property
    def origin(self) -> core.Point3D:
        """
        Returns the origin point of the sketch in model space.
        """
        return core.Point3D()
    @property
    def xDirection(self) -> core.Vector3D:
        """
        Returns the X direction of the sketch as defined in model space.
        """
        return core.Vector3D()
    @property
    def yDirection(self) -> core.Vector3D:
        """
        Returns the Y direction of the sketch as defined in model space.
        """
        return core.Vector3D()
    @property
    def referencePlane(self) -> core.Base:
        """
        Gets and sets the construction plane or planar face the sketch is associated
        to. This is only valid when the IsParametric property is True otherwise this
        returns null and setting the property will fail.
        
        Setting this property is the equivalent of the Redefine command.
        """
        return core.Base()
    @referencePlane.setter
    def referencePlane(self, value: core.Base):
        """
        Gets and sets the construction plane or planar face the sketch is associated
        to. This is only valid when the IsParametric property is True otherwise this
        returns null and setting the property will fail.
        
        Setting this property is the equivalent of the Redefine command.
        """
        pass
    @property
    def isComputeDeferred(self) -> bool:
        """
        This property temporarily turns off sketch computing. It is used to increase the
        performance as sketch geometry is created and modified. Once the sketch is drawn,
        this property should be set to false to allow the sketch to recompute. The file
        does not save this setting and is always false when a file is opened.
        
        There is a side-effect when using this property that can result in the creation of a
        bad model. This is only a problem when editing an existing sketch used by one or more
        features. When the sketch is edited with the isComputeDeferred property set to true,
        the compute of the profiles can sometimes create weird results in the dependent
        features. There are two easy ways to solve this problem. The first is not to defer
        the sketch compute. The second is to roll the timeline back to just after the sketch,
        make whatever changes you want to the sketch with the compute deferred, and then roll the
        timeline back to its original location. This process mimics the behavior you see in
        the user interface when you manually edit a sketch where Fusion automatically rolls the
        timeline back while you're editing the sketch.
        """
        return bool()
    @isComputeDeferred.setter
    def isComputeDeferred(self, value: bool):
        """
        This property temporarily turns off sketch computing. It is used to increase the
        performance as sketch geometry is created and modified. Once the sketch is drawn,
        this property should be set to false to allow the sketch to recompute. The file
        does not save this setting and is always false when a file is opened.
        
        There is a side-effect when using this property that can result in the creation of a
        bad model. This is only a problem when editing an existing sketch used by one or more
        features. When the sketch is edited with the isComputeDeferred property set to true,
        the compute of the profiles can sometimes create weird results in the dependent
        features. There are two easy ways to solve this problem. The first is not to defer
        the sketch compute. The second is to roll the timeline back to just after the sketch,
        make whatever changes you want to the sketch with the compute deferred, and then roll the
        timeline back to its original location. This process mimics the behavior you see in
        the user interface when you manually edit a sketch where Fusion automatically rolls the
        timeline back while you're editing the sketch.
        """
        pass
    @property
    def profiles(self) -> Profiles:
        """
        Returns the profiles currently computed for the sketch.
        """
        return Profiles()
    @property
    def timelineObject(self) -> TimelineObject:
        """
        Returns the timeline object associated with this sketch.
        """
        return TimelineObject()
    @property
    def parentComponent(self) -> Component:
        """
        Returns the parent Component.
        """
        return Component()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this
        object in an assembly. This is only valid in the case where this
        is acting as a proxy in an assembly. Returns null
        in the case where the object is not in the context of an assembly.
        but is already the native object.
        """
        return Occurrence()
    @property
    def nativeObject(self) -> Sketch:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return Sketch()
    @property
    def boundingBox(self) -> core.BoundingBox3D:
        """
        Returns the 3D bounding box of the sketch
        """
        return core.BoundingBox3D()
    @property
    def sketchTexts(self) -> SketchTexts:
        """
        Returns the sketch text collection associated with this sketch.
        This provides access to existing text and supports the creation
        of new text.
        """
        return SketchTexts()
    @property
    def originPoint(self) -> SketchPoint:
        """
        Returns the sketch point that was automatically created by projecting the
        origin construction point into the sketch.
        """
        return SketchPoint()
    @property
    def isFullyConstrained(self) -> bool:
        """
        Indicates if this sketch is fully constrained.
        """
        return bool()
    @property
    def attributes(self) -> core.Attributes:
        """
        Returns the collection of attributes associated with this sketch.
        """
        return core.Attributes()
    @property
    def baseOrFormFeature(self) -> core.Base:
        """
        This property returns the base or form feature that this sketch is associated with. It returns
        null in the case where the sketch is parametrically defined and is not related to a base or form
        feature. It also returns null in a direct modeling design.
        """
        return core.Base()
    @property
    def healthState(self) -> FeatureHealthStates:
        """
        Returns the current health state of this sketch.
        """
        return FeatureHealthStates()
    @property
    def errorOrWarningMessage(self) -> str:
        """
        Returns the error or warning message in the case where the healthState property returns either
        WarningFeatureHealthState or ErrorFeatureHealthState. Otherwise this property returns an empty string.
        """
        return str()
    @property
    def revisionId(self) -> str:
        """
        Returns the current revision ID of the sketch. This ID changes any time the sketch is modified in any way. By getting
        and saving the ID when you create any data that is dependent on the sketch, you can then compare the saved
        ID with the current ID to determine if the sketch has changed to know if you should update your data.
        """
        return str()
    @property
    def areConstraintsShown(self) -> bool:
        """
        Indicates if the constraints of the sketch are displayed when the sketch is active.
        """
        return bool()
    @areConstraintsShown.setter
    def areConstraintsShown(self, value: bool):
        """
        Indicates if the constraints of the sketch are displayed when the sketch is active.
        """
        pass
    @property
    def arePointsShown(self) -> bool:
        """
        Indicates if the sketch points in the sketch are displayed. Points that are not connected to any other
        geometry will continue to be shown.
        """
        return bool()
    @arePointsShown.setter
    def arePointsShown(self, value: bool):
        """
        Indicates if the sketch points in the sketch are displayed. Points that are not connected to any other
        geometry will continue to be shown.
        """
        pass
    @property
    def isLightBulbOn(self) -> bool:
        """
        Gets and set if the light bulb beside the sketch 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 body 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 and set if the light bulb beside the sketch 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 body 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 entityToken(self) -> str:
        """
        Returns a token for the Sketch object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same token.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        """
        return str()
    @property
    def isModelSliced(self) -> bool:
        """
        Gets and sets whether the model is sliced along the sketch plane when this sketch is active.
        This provides access to the "Slice" setting in the "SKETCH PALETTE".
        """
        return bool()
    @isModelSliced.setter
    def isModelSliced(self, value: bool):
        """
        Gets and sets whether the model is sliced along the sketch plane when this sketch is active.
        This provides access to the "Slice" setting in the "SKETCH PALETTE".
        """
        pass
    @property
    def isProjectedGeometryShown(self) -> bool:
        """
        Gets and sets whether projected geometry in the sketch is displayed.
        This provides access to the "Projected Geometries" setting in the "SKETCH PALETTE".
        """
        return bool()
    @isProjectedGeometryShown.setter
    def isProjectedGeometryShown(self, value: bool):
        """
        Gets and sets whether projected geometry in the sketch is displayed.
        This provides access to the "Projected Geometries" setting in the "SKETCH PALETTE".
        """
        pass
    @property
    def isConstructionGeometryShown(self) -> bool:
        """
        Gets and sets whether construction geometry in the sketch is displayed.
        This provides access to the "Construction Geometries" setting in the "SKETCH PALETTE".
        """
        return bool()
    @isConstructionGeometryShown.setter
    def isConstructionGeometryShown(self, value: bool):
        """
        Gets and sets whether construction geometry in the sketch is displayed.
        This provides access to the "Construction Geometries" setting in the "SKETCH PALETTE".
        """
        pass
    @property
    def isDerived(self) -> bool:
        """
        Returns if this sketch is derived from another design. If true, the sketch cannot be deleted.
        You should not attempt to make any edits to the derived sketch. Any edits made to this derived sketch will be lost when the derive updates.
        """
        return bool()
    @property
    def deriveFeature(self) -> DeriveFeature:
        """
        Returns the DeriveFeature if this sketch is derived from another design.
        This property returns null if the sketch is not derived from another design (i.e. isDerived property returns false).
        """
        return DeriveFeature()

class SketchArcs(core.Base):
    """
    The collection of arcs in a sketch. This provides access to the existing
    arcs and supports the methods to create new arcs.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchArcs:
        return SketchArcs()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SketchArc:
        return None
    def __iter__(self) -> Iterator[SketchArc]:
        return None
    def item(self, index: int) -> SketchArc:
        """
        Function that returns the specified sketch arc 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 SketchArc()
    def addByCenterStartSweep(self, centerPoint: core.Base, startPoint: core.Base, sweepAngle: float) -> SketchArc:
        """
        Creates a sketch arc that is always parallel to the x-y plane of the sketch
        and is centered at the specified point.
        centerPoint : The center point of the arc. This can be either an existing SketchPoint or a Point3D object.
        startPoint : The start point of the arc. The distance between this point and the center defines the radius
        of the arc. This can be either an existing SketchPoint or a Point3D object.
        sweepAngle : The sweep of the arc. This is defined in radians and a positive value defines a counter-clockwise sweep.
        Returns the newly created SketchArc object or null if the creation failed.
        """
        return SketchArc()
    def addByThreePoints(self, startPoint: core.Base, point: core.Point3D, endPoint: core.Base) -> SketchArc:
        """
        Creates a sketch arc that passes through the three points.
        startPoint : The start point of the arc. This can be either an existing SketchPoint or a Point3D object.
        point : A point along the arc. This is a Point3D object.
        endPoint : The end point of the arc. This can be either an existing SketchPoint or a Point3D object.
        Returns the newly created SketchArc or null in the case of a failure.
        """
        return SketchArc()
    def addFillet(self, firstEntity: SketchCurve, firstEntityPoint: core.Point3D, secondEnitity: SketchCurve, secondEntityPoint: core.Point3D, radius: float) -> SketchArc:
        """
        Creates a fillet between two sketch entities
        The side (quadrant) the fillet is created on is determined by the points specified.
        The point for each entity can be its startSketchPoint or endSketchPoint
        firstEntity : The first curve for the fillet definition. The curve must be open.
        firstEntityPoint : A point on or closer to one end of the first curve that indicates the side to create the fillet on
        secondEnitity : The second curve for the fillet definition. The curve must be open.
        secondEntityPoint : A point on or closer to one end of the second curve that indicates the side to create the fillet on
        radius : radius of the arc in centimeters
        Returns the newly created SketchArc object (fillet) if the operation was successful or null if it failed.
        """
        return SketchArc()
    def addByCenterStartEnd(self, centerPoint: core.Base, startPoint: core.Base, endPoint: core.Base, normal: core.Vector3D = None) -> SketchArc:
        """
        Creates a sketch arc that is centered at the specified point and between the two input points.
        centerPoint : The center point of the arc. This can be either an existing SketchPoint or a Point3D object.
        startPoint : The start point of the arc. This can be either an existing SketchPoint or a Point3D object.
        endPoint : The end point of the arc. This can be either an existing SketchPoint or a Point3D object.
        If the end point does not lie on the arc, a new point would be created such that it lies on the arc.
        normal : An optional argument that specifies the normal of the plane the arc will be created on. If not supplied, a vector
        in the positive Z direction will be used, which results in the creation of an arc that is parallel to the X-Y plane of the sketch.
        However, you can specify a normal vector to orient the arc in any orientation. The normal also helps to control the sweep direction of the arc,
        where the sweep direction is always counterclockwise from the start to the end point, where counterclockwise is defined using
        the right-hand rule around the normal vector.
        Returns the newly created SketchArc or null in the case of a failure.
        """
        return SketchArc()
    @property
    def count(self) -> int:
        """
        Returns the number of arcs in the sketch.
        """
        return int()

class SketchCircles(core.Base):
    """
    The collection of circles in a sketch. This provides access to the existing
    circles and supports the methods to create new circles.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchCircles:
        return SketchCircles()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SketchCircle:
        return None
    def __iter__(self) -> Iterator[SketchCircle]:
        return None
    def item(self, index: int) -> SketchCircle:
        """
        Function that returns the specified sketch circle 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 SketchCircle()
    def addByCenterRadius(self, centerPoint: core.Base, radius: float) -> SketchCircle:
        """
        Creates a sketch circle that is always parallel to the x-y plane of the sketch
        and is centered at the specified point.
        centerPoint : The center point of the circle. It can be an existing SketchPoint or a Point3D object.
        radius : The radius of the circle in centimeters.
        Returns the newly created SketchCircle object or null if the creation failed.
        """
        return SketchCircle()
    def addByTwoPoints(self, pointOne: core.Point3D, pointTwo: core.Point3D) -> SketchCircle:
        """
        Creates a sketch circle where the circle passes through the two points and the
        distance between the two points is the diameter of the circle.
        pointOne : A Point3D object that defines a point is sketch space and lies on the x-y plane of the sketch.
        pointTwo : A Point3D object that defines a point is sketch space and lies on the x-y plane of the sketch.
        Returns the newly created SketchCircle object or null if the creation failed.
        """
        return SketchCircle()
    def addByThreePoints(self, pointOne: core.Point3D, pointTwo: core.Point3D, pointThree: core.Point3D) -> SketchCircle:
        """
        Creates a sketch circle that passes through the three points. The three points must
        lie on the x-y plane of the sketch.
        pointOne : The first point that the circle will pass through. The z component must be zero.
        pointTwo : The second point that the circle will pass through. The z component must be zero.
        pointThree : The third point that the circle will pass through. The z component must be zero.
        Returns the newly created SketchCircle object or null if the creation failed.
        """
        return SketchCircle()
    def addByTwoTangents(self, tangentOne: SketchLine, tangentTwo: SketchLine, radius: float, hintPoint: core.Point3D) -> SketchCircle:
        """
        Creates a sketch circle that is tangent to the two input lines.
        The two lines must lie on the x-y plane of the sketch.
        tangentOne : The first line that the circle will be tangent to.
        The line must lie on the x-y plane of the sketch.
        tangentTwo : The second line that the circle will be tangent to.
        The line must lie on the x-y plane of the sketch and cannot
        be parallel to the first line.
        radius : The radius of the circle in centimeters.
        hintPoint : A point that specifies which of the possible four solutions to use
        when creating the circle. If you consider the two input lines to be infinite
        they create four quadrants which results in four possible solutions for the
        creation of the circle. The hint point is a point anywhere within the quadrant
        where you want the circle created.
        Returns the newly created SketchCircle object or null if the creation failed.
        """
        return SketchCircle()
    def addByThreeTangents(self, tangentOne: SketchLine, tangentTwo: SketchLine, tangentThree: SketchLine, hintPoint: core.Point3D) -> SketchCircle:
        """
        Creates a sketch circle that is tangent to the three input lines.
        The three lines must lie on the x-y plane of the sketch.
        tangentOne : The first line that the circle will be tangent to.
        The line must lie on the x-y plane of the sketch and cannot be parallel
        to the second or third line.
        tangentTwo : The second line that the circle will be tangent to.
        The line must lie on the x-y plane of the sketch and cannot be parallel
        to the first or third line.
        tangentThree : The third line that the circle will be tangent to.
        The line must lie on the x-y plane of the sketch and cannot be parallel
        to the first or second line.
        hintPoint : A point that specifies which of the possible multiple solutions to use
        when creating the circle. If you consider the three input lines to be infinite
        there are many possible solutions when creating a circle that is tangent to all
        three lines. The hint point is a point anywhere within the area defined by the
        three lines where the circle is to be created.
        Returns the newly created SketchCircle object or null if the creation failed.
        """
        return SketchCircle()
    @property
    def count(self) -> int:
        """
        Returns the number of circles in the sketch.
        """
        return int()

class SketchConicCurves(core.Base):
    """
    The collection of conic curves in a sketch. This provides access to the existing
    conic curves and supports the method to create new conic curves.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchConicCurves:
        return SketchConicCurves()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SketchConicCurve:
        return None
    def __iter__(self) -> Iterator[SketchConicCurve]:
        return None
    def item(self, index: int) -> SketchConicCurve:
        """
        Function that returns the specified conic curve 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 SketchConicCurve()
    def add(self, startPoint: core.Base, endPoint: core.Base, apexPoint: core.Base, rhoValue: float) -> SketchConicCurve:
        """
        Creates a new conic curve.
        startPoint : The start point of the conic curve. This can be either an existing SketchPoint or a Point3D object.
        endPoint : The end point of the conic curve. This can be either an existing SketchPoint or a Point3D object.
        apexPoint : The apex point of the conic curve. This can be either an existing SketchPoint or a Point3D object.
        rhoValue : Double that specifies the rho value for the conic. This value must be greater than zero and less
        than one.
        Returns the new conic curve or null if the creation failed.
        """
        return SketchConicCurve()
    @property
    def count(self) -> int:
        """
        Returns the number of conic curves in the sketch.
        """
        return int()

class SketchControlPointSplines(core.Base):
    """
    The collection of control point splines in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchControlPointSplines:
        return SketchControlPointSplines()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SketchControlPointSpline:
        return None
    def __iter__(self) -> Iterator[SketchControlPointSpline]:
        return None
    def item(self, index: int) -> SketchControlPointSpline:
        """
        Function that returns the specified sketch control point spline 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 SketchControlPointSpline()
    def add(self, controlPoints: list[core.Base], degree: SplineDegrees) -> SketchControlPointSpline:
        """
        Creates a new control point spline.
        controlPoints : An array of points that define the control points of the curve's polygon. They
        can be any combination of existing SketchPoint or Point3D objects.
        degree : Specifies the degree of the spline. Only degree 3 and degree 5 can be specified while creating the spline.
        Returns the newly created SketchControlPointSpline object if the creation was successful or null if it failed.
        """
        return SketchControlPointSpline()
    @property
    def count(self) -> int:
        """
        Returns the number of control point splines in the sketch.
        """
        return int()

class SketchCurves(core.Base):
    """
    A collection of sketch curves in a sketch. This also provides access to collections
    for the specific types of curves where you can get the curves based on type and
    create new curves.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchCurves:
        return SketchCurves()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SketchCurve:
        return None
    def __iter__(self) -> Iterator[SketchCurve]:
        return None
    def item(self, index: int) -> SketchCurve:
        """
        Function that returns the specified sketch curve 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 SketchCurve()
    @property
    def count(self) -> int:
        """
        Returns the number of sketch curves in the sketch.
        """
        return int()
    @property
    def sketchArcs(self) -> SketchArcs:
        """
        Returns the sketch arcs collection associated with this sketch.
        This provides access to the existing sketch arcs and supports
        the creation of new sketch arcs.
        """
        return SketchArcs()
    @property
    def sketchCircles(self) -> SketchCircles:
        """
        Returns the sketch circles collection associated with this sketch.
        This provides access to the existing sketch circles and supports
        the creation of new sketch circles.
        """
        return SketchCircles()
    @property
    def sketchEllipses(self) -> SketchEllipses:
        """
        Returns the sketch ellipses collection associated with this sketch.
        This provides access to the existing sketch ellipses and supports
        the creation of new sketch ellipses.
        """
        return SketchEllipses()
    @property
    def sketchEllipticalArcs(self) -> SketchEllipticalArcs:
        """
        Returns the sketch elliptical arcs collection associated with this sketch.
        This provides access to the existing sketch elliptical arcs and supports
        the creation of new sketch elliptical arcs.
        """
        return SketchEllipticalArcs()
    @property
    def sketchLines(self) -> SketchLines:
        """
        Returns the sketch lines collection associated with this sketch.
        This provides access to the existing sketch lines and supports
        the creation of new sketch lines.
        """
        return SketchLines()
    @property
    def sketchFittedSplines(self) -> SketchFittedSplines:
        """
        Returns the sketch splines collection associated with this sketch.
        This provides access to the existing sketch splines and supports
        the creation of new sketch splines.
        """
        return SketchFittedSplines()
    @property
    def sketchFixedSplines(self) -> SketchFixedSplines:
        """
        Returns the fixed sketch splines collection associated with this sketch.
        This provides access to the existing fixed sketch splines and supports
        the creation of new fixed sketch splines.
        """
        return SketchFixedSplines()
    @property
    def sketchConicCurves(self) -> SketchConicCurves:
        """
        Returns the conic curves collection associated with this sketch.
        This provides access to the existing conic curves and supports the
        creation of new conic curves.
        """
        return SketchConicCurves()
    @property
    def sketchControlPointSplines(self) -> SketchControlPointSplines:
        """
        Returns the control point splines collection associated with this sketch.
        This provides access to the existing control point splines and supports the
        creation of new control point splines.
        """
        return SketchControlPointSplines()
    @property
    def sketchIsoparametricCurves(self) -> SketchIsoparametricCurves:
        """
        Returns the isoparametric curves collection associated with this sketch.
        This provides access to the existing isoparametric curves and supports the
        creation of new isoparametric curves.
        """
        return SketchIsoparametricCurves()

class SketchDimension(core.Base):
    """
    The base class for the all sketch dimensions.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchDimension:
        return SketchDimension()
    def deleteMe(self) -> bool:
        """
        Deletes this dimension. The IsDeletable property indicates if this dimension can be deleted.
        Returns true if the delete was successful.
        """
        return bool()
    @property
    def isDeletable(self) -> bool:
        """
        Indicates if this dimension is deletable.
        """
        return bool()
    @property
    def textPosition(self) -> core.Point3D:
        """
        Gets and sets position of the dimension text.
        """
        return core.Point3D()
    @textPosition.setter
    def textPosition(self, value: core.Point3D):
        """
        Gets and sets position of the dimension text.
        """
        pass
    @property
    def parentSketch(self) -> Sketch:
        """
        Returns the parent sketch object.
        """
        return Sketch()
    @property
    def parameter(self) -> ModelParameter:
        """
        Returns the associated parameter or null if there is no associated parameter.
        """
        return ModelParameter()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this object
        in an assembly. This is only valid in the case where this is acting
        as a proxy in an assembly. Returns null in the case where the object
        is not in the context of an assembly but is already the native object.
        """
        return Occurrence()
    @property
    def isDriving(self) -> bool:
        """
        Gets and sets if the dimension is Driving or is Driven. Setting this property to true for a given dimension
        may fail if the result would over constrain the sketch. Fusion does not allow over-constrained sketches.
        """
        return bool()
    @isDriving.setter
    def isDriving(self, value: bool):
        """
        Gets and sets if the dimension is Driving or is Driven. Setting this property to true for a given dimension
        may fail if the result would over constrain the sketch. Fusion does not allow over-constrained sketches.
        """
        pass
    @property
    def attributes(self) -> core.Attributes:
        """
        Returns the collection of attributes associated with this sketch dimension.
        """
        return core.Attributes()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the SketchDimension object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same sketch dimension.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        """
        return str()
    @property
    def value(self) -> float:
        """
        Gets and sets the current value of the sketch dimension.
        
        In a parametric modeling design and the isDriving property is True, this is exactly equivalent
        to getting the parameter associated with the dimension and editing its value. Editing this
        property will result in the parameter value being changed. If isDriving is False, this acts
        as a read-only property and attempting to set it will fail.
        
        In a direct modeling design the parameter property will return null and this property can be
        used to get and set the value of the dimension because in this case, there isn't an associated
        parameter.
        
        The value is always in internal units which means that for dimensions that represent a distance, the value is in
        Centimeters and for dimensions representing an angle the value is in Radians.
        """
        return float()
    @value.setter
    def value(self, value: float):
        """
        Gets and sets the current value of the sketch dimension.
        
        In a parametric modeling design and the isDriving property is True, this is exactly equivalent
        to getting the parameter associated with the dimension and editing its value. Editing this
        property will result in the parameter value being changed. If isDriving is False, this acts
        as a read-only property and attempting to set it will fail.
        
        In a direct modeling design the parameter property will return null and this property can be
        used to get and set the value of the dimension because in this case, there isn't an associated
        parameter.
        
        The value is always in internal units which means that for dimensions that represent a distance, the value is in
        Centimeters and for dimensions representing an angle the value is in Radians.
        """
        pass

class SketchDimensionList(core.Base):
    """
    A list of sketch dimensions.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchDimensionList:
        return SketchDimensionList()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SketchDimension:
        return None
    def __iter__(self) -> Iterator[SketchDimension]:
        return None
    def item(self, index: int) -> SketchDimension:
        """
        Function that returns the specified sketch dimension 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 SketchDimension()
    @property
    def count(self) -> int:
        """
        Returns the number of sketch dimensions in the sketch.
        """
        return int()

class SketchDimensions(core.Base):
    """
    A collection of the dimensions in a sketch. This object also supports the methods to add
    new sketch dimensions.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchDimensions:
        return SketchDimensions()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SketchDimension:
        return None
    def __iter__(self) -> Iterator[SketchDimension]:
        return None
    def item(self, index: int) -> SketchDimension:
        """
        Function that returns the specified sketch dimension 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 SketchDimension()
    def addDistanceDimension(self, pointOne: SketchPoint, pointTwo: SketchPoint, orientation: DimensionOrientations, textPoint: core.Point3D, isDriving: bool = True) -> SketchLinearDimension:
        """
        Creates a new linear dimension constraint between the two input entities.
        pointOne : The first SketchPoint to dimension to.
        pointTwo : The second SketchPoint to dimension to..
        orientation : The orientation of the dimension.
        textPoint : A Point3D object that defines the position of the dimension text.
        isDriving : Optional argument that specifies if a driving (the dimension controls the geometry)
        or a driven (the geometry controls the dimension) dimension is created. If not provided
        a driving dimension will be created.
        Returns the newly created dimension or null if the creation failed.
        """
        return SketchLinearDimension()
    def addOffsetDimension(self, line: SketchLine, entityTwo: SketchEntity, textPoint: core.Point3D, isDriving: bool = True) -> SketchOffsetDimension:
        """
        Creates a new linear dimension constraint between the two input entities. The first input
        entity must be a sketch line. The second entity can be a point or a line that is parallel
        to the first. The dimension controls the distance as measured perpendicular to the first
        input line.
        line : The SketchLine to dimension to.
        entityTwo : The parallel SketchLine or SketchPoint to dimension to. If a SketchLine is used it must be
        parallel to the first line.
        textPoint : A Point3D object that defines the position of the dimension text.
        isDriving : Optional argument that specifies if a driving (the dimension controls the geometry)
        or a driven (the geometry controls the dimension) dimension is created. If not provided
        a driving dimension will be created.
        Returns the newly created dimension or null if the creation failed.
        """
        return SketchOffsetDimension()
    def addAngularDimension(self, lineOne: SketchLine, lineTwo: SketchLine, textPoint: core.Point3D, isDriving: bool = True) -> SketchAngularDimension:
        """
        Creates a new angular dimension constraint between the two input lines.
        The position of the text controls which of the four quadrants will be dimensioned.
        lineOne : The first SketchLine to dimension to.
        lineTwo : The second SketchLine to dimension to.
        textPoint : A Point3D object that defines the position of the dimension text. The position of the
        text also defines which quadrant will be dimensioned.
        isDriving : Optional argument that specifies if a driving (the dimension controls the geometry)
        or a driven (the geometry controls the dimension) dimension is created. If not provided
        a driving dimension will be created.
        Returns the newly created dimension or null if the creation failed.
        """
        return SketchAngularDimension()
    def addDiameterDimension(self, entity: SketchCurve, textPoint: core.Point3D, isDriving: bool = True) -> SketchDiameterDimension:
        """
        Creates a new diameter dimension constraint on the arc or circle.
        entity : The SketchCircle or SketchArc to dimension.
        textPoint : A Point3D object that defines the position of the dimension text.
        isDriving : Optional argument that specifies if a driving (the dimension controls the geometry)
        or a driven (the geometry controls the dimension) dimension is created. If not provided
        a driving dimension will be created.
        Returns the newly created dimension or null if the creation failed.
        """
        return SketchDiameterDimension()
    def addRadialDimension(self, entity: SketchCurve, textPoint: core.Point3D, isDriving: bool = True) -> SketchRadialDimension:
        """
        Creates a new radial dimension constraint on the arc or circle.
        entity : The SketchCircle or SketchArc to dimension.
        textPoint : A Point3D object that defines the position of the dimension text.
        isDriving : Optional argument that specifies if a driving (the dimension controls the geometry)
        or a driven (the geometry controls the dimension) dimension is created. If not provided
        a driving dimension will be created.
        Returns the newly created dimension or null if the creation failed.
        """
        return SketchRadialDimension()
    def addEllipseMajorRadiusDimension(self, ellipse: SketchCurve, textPoint: core.Point3D, isDriving: bool = True) -> SketchEllipseMajorRadiusDimension:
        """
        Creates a new dimension constraint on the major radius of an ellipse.
        ellipse : The SketchEllipse to dimension.
        textPoint : A Point3D object that defines the position of the dimension text.
        isDriving : Optional argument that specifies if a driving (the dimension controls the geometry)
        or a driven (the geometry controls the dimension) dimension is created. If not provided
        a driving dimension will be created.
        Returns the newly created dimension or null if the creation failed.
        """
        return SketchEllipseMajorRadiusDimension()
    def addEllipseMinorRadiusDimension(self, ellipse: SketchCurve, textPoint: core.Point3D, isDriving: bool = True) -> SketchEllipseMinorRadiusDimension:
        """
        Creates a new dimension constraint on the minor radius of an ellipse.
        ellipse : The SketchEllipse to dimension.
        textPoint : A Point3D object that defines the position of the dimension text.
        isDriving : Optional argument that specifies if a driving (the dimension controls the geometry)
        or a driven (the geometry controls the dimension) dimension is created. If not provided
        a driving dimension will be created.
        Returns the newly created dimension or null if the creation failed.
        """
        return SketchEllipseMinorRadiusDimension()
    def addConcentricCircleDimension(self, circleOne: SketchCurve, circleTwo: SketchCurve, textPoint: core.Point3D, isDriving: bool = True) -> SketchConcentricCircleDimension:
        """
        Creates a new dimension constraint between to concentric circles or arcs.
        circleOne : The first SketchCircle or SketchArc to dimension.
        circleTwo : The second SketchCircle or SketchArc to dimension.
        textPoint : A Point3D object that defines the position of the dimension text.
        isDriving : Optional argument that specifies if a driving (the dimension controls the geometry)
        or a driven (the geometry controls the dimension) dimension is created. If not provided
        a driving dimension will be created.
        Returns the newly created dimension or null if the creation failed.
        """
        return SketchConcentricCircleDimension()
    def addTangentDistanceDimension(self, entityOne: SketchEntity, isCloseToEnityTwo: bool, entityTwo: SketchCurve, isCloseToEnityOne: bool, textPoint: core.Point3D, isDriving: bool = True) -> SketchTangentDistanceDimension:
        """
        Creates a new linear dimension from between a line and circle or arc and a second circle or arc where
        the dimension is to the tangent on the edge of the circle or arc.
        entityOne : The first entity to dimension to. This can be a SketchPoint, SketchLine, SketchCircle or SketchArc.
        If a circle or arc is provided then the tangentSideOne argument must be specified.
        isCloseToEnityTwo : If entityOne is a circle or arc this specifies which side of the circle or arc the dimension will be tangent to.
        If true, it will be on the side that is closer to entityTwo. If a SketchLine or SketchPoint was input for the
        entityOne argument this argument is ignored and any value can be used.
        entityTwo : A SketchCircle or SketchArc entity that you will dimension to.
        isCloseToEnityOne : Specifies which side of the circle or arc input as the entityTwo argument the dimension will be tangent to.
        If true, it will be on the side that is closer to entityOne.
        textPoint : A Point3D object that defines the position of the dimension text.
        isDriving : Optional argument that specifies if a driving (the dimension controls the geometry)
        or a driven (the geometry controls the dimension) dimension is created. If not provided
        a driving dimension will be created.
        Returns the newly created dimension or null if the creation failed.
        """
        return SketchTangentDistanceDimension()
    def addLinearDiameterDimension(self, centerLine: SketchLine, entityTwo: SketchEntity, textPoint: core.Point3D, isDriving: bool = True) -> SketchLinearDiameterDimension:
        """
        Creates a new linear dimension showing the diameter where the first line acts as the center line
        and the second entity defines the size. The first input entity must be a sketch line. The second entity
        can be a point or a line that is parallel to the first. The dimension controls the distance as measured
        perpendicular to the first input line.
        centerLine : The SketchLine to dimension to which acts as the center line.
        entityTwo : The parallel SketchLine or SketchPoint to dimension to. If a SketchLine is used it must be
        parallel to the first line.
        textPoint : A Point3D object that defines the position of the dimension text.
        isDriving : Optional argument that specifies if a driving (the dimension controls the geometry)
        or a driven (the geometry controls the dimension) dimension is created. If not provided
        a driving dimension will be created.
        Returns the newly created dimension or null if the creation failed.
        """
        return SketchLinearDiameterDimension()
    def addDistanceBetweenPointAndSurfaceDimension(self, point: SketchPoint, surface: core.Base, isDriving: bool = True) -> SketchDistanceBetweenPointAndSurfaceDimension:
        """
        Creates a new linear dimension controlling the distance between a sketch point and the specified surface or point. The text position is
        automatically chosen and is positioned so it is midway between the point and surface and the extension lines are a minimum length. You
        can modify the position by using functionality on the returned SketchDistanceBetweenPointAndSurfaceDimension object.
        point : The SketchPoint being constrained by the dimension.
        surface : The BRepFace or ConstructionPlane to which the dimension will anchor. Planar, cylindrical, spherical and conical faces are supported.
        If a cylindrical, spherical or conical face is used, the dimension is from the point to the nearest point on the surface.
        isDriving : Optional argument that specifies if a driving (the dimension controls the geometry)
        or a driven (the geometry controls the dimension) dimension is created. If not provided
        a driving dimension will be created.
        Returns the newly created dimension or null if the creation failed.
        """
        return SketchDistanceBetweenPointAndSurfaceDimension()
    def addDistanceBetweenLineAndPlanarSurfaceDimension(self, line: SketchLine, planarSurface: core.Base, isDriving: bool = True) -> SketchDistanceBetweenLineAndPlanarSurfaceDimension:
        """
        Creates a new linear dimension controlling the distance between a sketch line and the specified planar face or construction plane. The sketch line
        must lie on a plane that is parallel to the planar surface. The text position is automatically chosen and is positioned so it is midway between
        the line and surface and the extension lines are a minimum length. You can modify the position by using functionality on the returned
        SketchDistanceBetweenLineAndPlanarSurfaceDimension object.
        line : The SketchLine being constrained by the dimension.
        planarSurface : The planar BRepFace or ConstructionPlane that the dimension will anchor to.
        isDriving : Optional argument that specifies if a driving (the dimension controls the geometry)
        or a driven (the geometry controls the dimension) dimension is created. If not provided
        a driving dimension will be created.
        Returns the newly created dimension or null if the creation failed.
        """
        return SketchDistanceBetweenLineAndPlanarSurfaceDimension()
    @property
    def count(self) -> int:
        """
        Returns the number of sketch dimensions in the sketch.
        """
        return int()

class SketchEllipses(core.Base):
    """
    The collection of ellipses in a sketch. This provides access to the existing
    ellipses and supports the methods to create new ellipses.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchEllipses:
        return SketchEllipses()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SketchEllipse:
        return None
    def __iter__(self) -> Iterator[SketchEllipse]:
        return None
    def item(self, index: int) -> SketchEllipse:
        """
        Function that returns the specified sketch ellipse 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 SketchEllipse()
    def add(self, centerPoint: core.Base, majorAxisPoint: core.Point3D, point: core.Point3D) -> SketchEllipse:
        """
        Creates a sketch ellipse using the center point, a point defining the major axis
        and a third point anywhere along the ellipse. The created ellipse is parallel to the
        x-y plane of the sketch.
        centerPoint : The center point of the ellipse. This can be either an existing SketchPoint or a Point3D object.
        majorAxisPoint : A point3D object that defines both the major axis direction and major axis radius.
        point : A point3D object that the ellipse will pass through.
        Returns the newly created SketchEllipse object if the creation was successful or null if it failed.
        """
        return SketchEllipse()
    @property
    def count(self) -> int:
        """
        Returns the number of ellipses in the sketch.
        """
        return int()

class SketchEllipticalArcs(core.Base):
    """
    The collection of elliptical arcs in a sketch. This provides access to the existing
    elliptical arcs and supports the methods to create new elliptical arcs.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchEllipticalArcs:
        return SketchEllipticalArcs()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SketchEllipticalArc:
        return None
    def __iter__(self) -> Iterator[SketchEllipticalArc]:
        return None
    def item(self, index: int) -> SketchEllipticalArc:
        """
        Function that returns the specified sketch elliptical arc 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 SketchEllipticalArc()
    def addByAngle(self, centerPoint: core.Base, majorAxis: core.Vector3D, minorAxis: core.Vector3D, startAngle: float, sweepAngle: float) -> SketchEllipticalArc:
        """
        Creates an elliptical sketch arc where the sweep of the arc is defined by the start and sweep angles.
        centerPoint : The center point of the ellipse. This can be either an existing SketchPoint or a Point3D object.
        majorAxis : The direction of the major axis. The magnitude of this vector defines the major radius.
        minorAxis : The direction of the minor axis. The magnitude of this vector defines the minor radius.
        This vector should be perpendicular to the major axis.
        startAngle : The start angle of the elliptical arc in radians, where 0 is along the major axis.
        sweepAngle : The sweep angle of the elliptical arc in radians, where a positive value is counterclockwise.
        Returns the newly created SketchEllipticalArc or null if the creation failed.
        """
        return SketchEllipticalArc()
    def addByEndPoints(self, centerPoint: core.Base, majorAxis: core.Vector3D, minorAxis: core.Vector3D, startPoint: core.Base, endPoint: core.Base) -> SketchEllipticalArc:
        """
        Creates an elliptical sketch arc where the sweep of the arc is defined by two points.
        centerPoint : The center point of the ellipse. This can be either an existing SketchPoint or a Point3D object.
        majorAxis : The direction of the major axis. The magnitude of this vector defines the major radius.
        minorAxis : The direction of the minor axis. The magnitude of this vector defines the minor radius.
        This vector should be perpendicular to the major axis.
        startPoint : The start point of the elliptical arc. This can be either an existing SketchPoint or a Point3D object.
        The point should lie on the defined ellipse.
        endPoint : The end point of the elliptical arc. This can be either an existing SketchPoint or a Point3D object.
        The point should lie on the defined ellipse and the elliptical arc is defined by a counterclockwise
        sweep from the start point to the end point.
        Returns the newly created SketchEllipticalArc or null if the creation failed.
        """
        return SketchEllipticalArc()
    @property
    def count(self) -> int:
        """
        Returns the number of elliptical arcs in the sketch.
        """
        return int()

class SketchEntity(core.Base):
    """
    This object represents all geometry in a sketch, including all
    the various curves, points, and text.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchEntity:
        return SketchEntity()
    def deleteMe(self) -> bool:
        """
        Deletes the entity from the sketch.
        Returns true if the delete was successful.
        """
        return bool()
    @property
    def parentSketch(self) -> Sketch:
        """
        Returns the parent sketch.
        """
        return Sketch()
    @property
    def sketchDimensions(self) -> SketchDimensionList:
        """
        Returns the sketch dimensions that are attached to this curve.
        """
        return SketchDimensionList()
    @property
    def geometricConstraints(self) -> GeometricConstraintList:
        """
        Returns the sketch constraints that are attached to this curve.
        """
        return GeometricConstraintList()
    @property
    def is2D(self) -> bool:
        """
        Indicates if this curve lies entirely on the sketch x-y plane.
        """
        return bool()
    @property
    def isReference(self) -> bool:
        """
        Indicates if this geometry is a reference.
        Changing this property from true to false removes the reference.
        This property can not be set to true if it is already false.
        """
        return bool()
    @isReference.setter
    def isReference(self, value: bool):
        """
        Indicates if this geometry is a reference.
        Changing this property from true to false removes the reference.
        This property can not be set to true if it is already false.
        """
        pass
    @property
    def isFixed(self) -> bool:
        """
        Indicates if this geometry is "fixed".
        """
        return bool()
    @isFixed.setter
    def isFixed(self, value: bool):
        """
        Indicates if this geometry is "fixed".
        """
        pass
    @property
    def isVisible(self) -> bool:
        """
        When a sketch is created, geometry is sometimes automatically added to the sketch.
        For example a sketch point that references the origin point is always included and
        if a face was selected to create the sketch on, geometry from the face is also included.
        This automatically created geometry behaves in a special way in that it is invisible
        but is available for selection and it also participates in profile calculations. It's
        not possible to make them visible but they can be deleted and they can be used for any
        other standard sketch operation.
        """
        return bool()
    @property
    def boundingBox(self) -> core.BoundingBox3D:
        """
        Returns the bounding box of the entity in sketch space.
        """
        return core.BoundingBox3D()
    @property
    def referencedEntity(self) -> core.Base:
        """
        Returns the referenced entity in the case where IsReference
        is true. However, this property can also return null when
        IsReference is true in the case where the reference is not
        parametric.
        """
        return core.Base()
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this object
        in an assembly. This is only valid in the case where this is acting
        as a proxy in an assembly. Returns null in the case where the object
        is not in the context of an assembly but is already the native object.
        """
        return Occurrence()
    @property
    def isDeletable(self) -> bool:
        """
        Indicates if this sketch entity can be deleted. There are cases, especially with sketch
        points where another entity is dependent on an entity so deleting it is not allowed.
        For example, you can't delete the center point of circle by itself but deleting the circle
        will delete the point. The same is true for the end points of a line.
        """
        return bool()
    @property
    def isFullyConstrained(self) -> bool:
        """
        Indicates if this sketch entity is fully constrained.
        """
        return bool()
    @property
    def attributes(self) -> core.Attributes:
        """
        Returns the collection of attributes associated with this sketch entity.
        """
        return core.Attributes()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the SketchEntity object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same sketch entity.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        """
        return str()
    @property
    def isLinked(self) -> bool:
        """
        Indicates if this sketch entity was created by a projection, inclusion, or driven by an API script.
        If this returns true, then the entity is presented to the user as not editable and with a 'break link'
        command available.
        """
        return bool()

class SketchEntityList(core.Base):
    """
    A list of sketch entities.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchEntityList:
        return SketchEntityList()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SketchEntity:
        return None
    def __iter__(self) -> Iterator[SketchEntity]:
        return None
    def item(self, index: int) -> SketchEntity:
        """
        Function that returns the specified sketch entity 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 SketchEntity()
    @property
    def count(self) -> int:
        """
        Returns the number of sketch entities in the list.
        """
        return int()

class Sketches(core.Base):
    """
    Provides access to the sketches within a design and provides
    methods to create new sketches.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Sketches:
        return Sketches()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> Sketch:
        return None
    def __iter__(self) -> Iterator[Sketch]:
        return None
    def item(self, index: int) -> Sketch:
        """
        Function that returns the specified sketch 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 Sketch()
    def itemByName(self, name: str) -> Sketch:
        """
        Returns the sketch with the specified name.
        name : The name of the sketch as seen in the browser and the timeline.
        Returns the sketch or null if there isn't a sketch with that name.
        """
        return Sketch()
    def add(self, planarEntity: core.Base, occurrenceForCreation: Occurrence = None) -> Sketch:
        """
        Creates a new sketch on the specified planar entity.
        planarEntity : A construction plane or planar face that defines the sketch plane
        occurrenceForCreation : A creation occurrence is needed if the planarEntity is in another component AND the
        sketch is not in the root component. The occurrenceForCreation is analogous
        to the active occurrence in the UI.
        Returns the newly created Sketch or null if the creation failed.
        """
        return Sketch()
    def addToBaseOrFormFeature(self, planarEntity: core.Base, targetBaseOrFormFeature: core.Base, includeFaceEdges: bool) -> Sketch:
        """
        Creates a parametric sketch that is associated with a base feature.
        
        Because of a current limitation, if you want to create a sketch associated with a base
        feature, you must first call the edit method of the base feature, use this method to
        create the sketch, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        planarEntity : A construction plane or planar face that defines the sketch plane.
        targetBaseOrFormFeature : The existing base feature that you want to associate this sketch with.
        includeFaceEdges : When a BrepFace is used as the planarEntity argument, this defines if the edges of the face
        should be included in the sketch.
        Returns the newly created Sketch or null if the creation failed.
        """
        return Sketch()
    def addWithoutEdges(self, planarEntity: core.Base, occurrenceForCreation: Occurrence = None) -> Sketch:
        """
        Creates a new sketch on the specified planar entity. If a BRepFace is provided, the edges of the face
        are not projected into the sketch so the result of creating a new sketch with this method will
        always be a new empty sketch.
        planarEntity : A construction plane or planar face that defines the sketch plane.
        occurrenceForCreation : A creation occurrence is needed if the planarEntity is in another component AND the
        sketch is not in the root component. The occurrenceForCreation is analogous
        to the active occurrence in the UI.
        Returns the newly created Sketch or null if the creation failed.
        """
        return Sketch()
    @property
    def count(self) -> int:
        """
        Returns the number of sketches in a component.
        """
        return int()

class SketchFittedSplines(core.Base):
    """
    The collection of fitted splines in a sketch. This provides access to the existing
    fitted splines and supports the methods to create new fitted splines.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchFittedSplines:
        return SketchFittedSplines()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SketchFittedSpline:
        return None
    def __iter__(self) -> Iterator[SketchFittedSpline]:
        return None
    def item(self, index: int) -> SketchFittedSpline:
        """
        Function that returns the specified sketch fitted spline 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 SketchFittedSpline()
    def add(self, fitPoints: core.ObjectCollection) -> SketchFittedSpline:
        """
        Creates a new fitted spline through the specified points.
        fitPoints : A collection of points that the curve will fit through. They
        can be any combination of existing SketchPoint or Point3D objects.
        Returns the newly created SketchFittedSpline object if the creation was successful or null if it failed.
        """
        return SketchFittedSpline()
    @property
    def count(self) -> int:
        """
        Returns the number of fitted splines in the sketch.
        """
        return int()

class SketchFixedSplines(core.Base):
    """
    The collection of fixed splines in a sketch. Fixed splines are splines that were created
    as the result of some operation (i.e. intersection) and is not directly editable.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchFixedSplines:
        return SketchFixedSplines()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SketchFixedSpline:
        return None
    def __iter__(self) -> Iterator[SketchFixedSpline]:
        return None
    def item(self, index: int) -> SketchFixedSpline:
        """
        Function that returns the specified sketch fixed spline 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 SketchFixedSpline()
    def addByNurbsCurve(self, nurbsCurve: core.NurbsCurve3D) -> SketchFixedSpline:
        """
        Creates a new fixed spline using the input NurbsCurve3D to define the shape. The resulting curve
        is not editable by the user but can be updated via the API using the replaceGeometry method on the
        SketchFixedSpline object.
        nurbsCurve : A NurbsCurve3D object that defines a valid NURBS curve.
        Returns the newly created SketchFixedSpline object if the creation was successful or null if it failed.
        """
        return SketchFixedSpline()
    @property
    def count(self) -> int:
        """
        Returns the number of fitted splines in the sketch.
        """
        return int()

class SketchIsoparametricCurve(core.Base):
    """
    This object represents the result of creating isoparametric curves. It contains the
    definition of how the curves are created and the resulting sketch curves.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchIsoparametricCurve:
        return SketchIsoparametricCurve()
    def setSingle(self, isPhysical: bool, distance: core.ValueInput) -> bool:
        """
        Redefines that a single isoparametric curve will be created and its position
        is defined by its distance from the edge of the surface. The direction is
        defined using the isUDirection property.
        isPhysical : Specifies if the offset of the curve from the edge of the surface is defined
        by a physical distance or a proportional distance along the surface where it is defined
        as a value from 0 to 1. A value of true indicates it is the physical distance.
        distance : The distance of the curve from the edge of the surface. If isPhysical is true
        this is a physical distance. If the ValueInput is defined using a real value
        this is the offset in centimeters. If the ValueInput is defined using a string
        it is used as the expression of the parameter that will be created to control
        the offset, and should be able to be evaluated as a distance.
        
        If isPhysical is false, this defines the proportional offset of the surface from
        the edge where the value can be 0 to 1. If a ValueInput is defined using a real
        value it can be 0 to 1. If the ValueInput is defined using a string it is used
        as the expression of the parameter that will be created to control the offset and
        should be able to be evaluated as a unitless value.
        Returns true if successful.
        """
        return bool()
    def setDistributed(self, quantity: core.ValueInput) -> bool:
        """
        Redefines that one or more isoparametric curves will be created along the U or V
        parameter curves of the face. The direction is defined using the isUDirection
        property.
        quantity : The number of isoparametric curves to create. They are evenly distributed
        on the face. If a ValueInput is defined using a real value, it should be
        a whole number or it will be rounded to the nearest whole number. If a ValueInput
        is defined using a string, it is used as the expression of the parameter that will
        be created to control the number of curves and should be able to be evaluated as
        a unitless value.
        Returns true if successful.
        """
        return bool()
    def deleteMe(self) -> bool:
        """
        Deletes this SketchIsoparametricCurve object. Deleting this object deletes the definition and the
        association the sketch curves have as isoparametric curves so they become regular sketch curves.
        Returns true if successful.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SketchIsoparametricCurve:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SketchIsoparametricCurve()
    @property
    def face(self) -> BRepFace:
        """
        Gets and sets the BRepFace that the curves are calculated for.
        """
        return BRepFace()
    @face.setter
    def face(self, value: BRepFace):
        """
        Gets and sets the BRepFace that the curves are calculated for.
        """
        pass
    @property
    def isUDirection(self) -> bool:
        """
        Gets and sets the direction of the isoparametric curve on the surface.
        The curve follows the surface in either the U or V parametric direction.
        True indicates the U direction, which is also the default when the input
        is created.
        """
        return bool()
    @isUDirection.setter
    def isUDirection(self, value: bool):
        """
        Gets and sets the direction of the isoparametric curve on the surface.
        The curve follows the surface in either the U or V parametric direction.
        True indicates the U direction, which is also the default when the input
        is created.
        """
        pass
    @property
    def isSingle(self) -> bool:
        """
        Gets if a single or distributed curve creation is defined. To change
        the type, call either the setSingle or setDistributed methods.
        """
        return bool()
    @property
    def isPhysicalOffset(self) -> bool:
        """
        Gets how the distance of the single curve from the face edge is defined by a
        distance or proportionally. This property only applies when the isSingle property
        is True. A value of true indicates it is defined using a physical offset. To change
        how the offset is defined use the setSingle method.
        """
        return bool()
    @property
    def quantityOrDistance(self) -> ModelParameter:
        """
        Returns the parameter that controls the quantity or offset distance of the curves.
        If the isSingle property returns true, the parameter controls the distance of the curve from the
        edge of the face. If the isSingle property is false, the parameter controls the quantity of curves
        in the result. To change the values, use the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def resultCurves(self) -> list[SketchCurve]:
        """
        Returns the sketch curves that were created as isoparametric curves.
        """
        return [SketchCurve()]
    @property
    def assemblyContext(self) -> Occurrence:
        """
        Returns the assembly occurrence (i.e. the occurrence) of this object
        in an assembly. This is only valid in the case where this is acting
        as a proxy in an assembly. Returns null in the case where the object
        is not in the context of an assembly but is already the native object.
        """
        return Occurrence()
    @property
    def nativeObject(self) -> SketchIsoparametricCurve:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SketchIsoparametricCurve()

class SketchIsoparametricCurves(core.Base):
    """
    The collection of isoparametric curves in a sketch. This provides access to the existing
    isoparametric curves and supports the method to create new isoparametric curves.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchIsoparametricCurves:
        return SketchIsoparametricCurves()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SketchIsoparametricCurve:
        return None
    def __iter__(self) -> Iterator[SketchIsoparametricCurve]:
        return None
    def item(self, index: int) -> SketchIsoparametricCurve:
        """
        Function that returns the specified isoparametric curve 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 SketchIsoparametricCurve()
    def createInput(self, face: BRepFace) -> IsoparametricCurveInput:
        """
        Creates a new IsoparametricCurveInput object that is used to specify the input needed
        to create new isoparametric curves.
        face : The BRepFace on which to create the isoparametric curve.
        Returns the newly created IsoparametricCurveInput object or null if the creation failed.
        """
        return IsoparametricCurveInput()
    def add(self, input: IsoparametricCurveInput) -> SketchIsoparametricCurve:
        """
        Creates sketch geometry that represents isoparametric curves on a face.
        An isoparametric curve follows the surface in either the U or V parametric
        direction at a constant parameter value. This results in the creation of
        associative isoparametric curves, which means they remain associated with
        the face and will update if the model changes. You can create a non-associative
        result by using the addUnlinked method..
        
        The created curves can be accessed through the returned SketchIsoparametricCurve
        object and they are also available in the appropriate collections. For example,
        any lines will also be in the SketchLines collection.
        input : The IsoparametricCurveInput object that specifies the input needed to create the
        isoparametric curve(s).
        Returns the SketchIsoparametricCurve object that was created as a result of the
        isoparametric curve operation.
        """
        return SketchIsoparametricCurve()
    def addUnlinked(self, input: IsoparametricCurveInput) -> list[SketchCurve]:
        """
        Creates sketch geometry that represents isoparametric curves on a face.
        An isoparametric curve follows the surface in either the U or V parametric
        direction at a constant parameter value. This method calculates and creates
        sketch geometry that represents the isoparametric curves but all intelligence
        about how they were created is lost and the result is regular sketch curves.
        
        To create parametric isoparametric curves, use the add method.
        input : The IsoparametricCurveInput object that specifies the input needed to create the
        isoparametric curve(s). This is created using the createInput method.
        An array of sketch curves that were created as a result of the isoparametric
        curve operation.
        """
        return [SketchCurve()]
    @property
    def count(self) -> int:
        """
        Returns the number of isoparametric curves in the sketch.
        """
        return int()

class SketchLineList(core.Base):
    """
    A list of sketch lines.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchLineList:
        return SketchLineList()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SketchLine:
        return None
    def __iter__(self) -> Iterator[SketchLine]:
        return None
    def item(self, index: int) -> SketchLine:
        """
        Function that returns the specified sketch line 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 SketchLine()
    @property
    def count(self) -> int:
        """
        Returns the number of sketch lines in the list.
        """
        return int()

class SketchLines(core.Base):
    """
    The collection of lines in a sketch. This provides access to the existing
    lines and supports the methods to create new lines.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchLines:
        return SketchLines()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SketchLine:
        return None
    def __iter__(self) -> Iterator[SketchLine]:
        return None
    def item(self, index: int) -> SketchLine:
        """
        Function that returns the specified sketch line 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 SketchLine()
    def addByTwoPoints(self, startPoint: core.Base, endPoint: core.Base) -> SketchLine:
        """
        Creates a sketch line between the two input points. The input points
        can be either existing SketchPoints or Point3D objects. If a SketchPoint
        is used the new line will be based on that sketch point and update if the
        sketch point is modified.
        startPoint : The start point of the line. It can be a SketchPoint or Point3D object.
        endPoint : The end point of the line. It can be a SketchPoint or Point3D object.
        Returns the newly created SketchLine object or null if the creation failed.
        """
        return SketchLine()
    def addTwoPointRectangle(self, pointOne: core.Base, pointTwo: core.Base) -> SketchLineList:
        """
        Creates four sketch lines representing a rectangle where the two points are the opposing corners
        of the rectangle. The input points can be either existing SketchPoints or Point3D objects.
        If a SketchPoint is used the new lines will be based on that sketch point and update if the
        sketch point is modified.
        pointOne : The first corner of the rectangle. It can be a SketchPoint or Point3D object.
        pointTwo : The second corner of the rectangle. It can be a SketchPoint or Point3D object.
        Returns the four new sketch lines or null if the creation failed.
        """
        return SketchLineList()
    def addThreePointRectangle(self, pointOne: core.Base, pointTwo: core.Base, pointThree: core.Point3D) -> SketchLineList:
        """
        Creates four sketch lines representing a rectangle where the first two points are the base corners
        of the rectangle and the third point defines the height.
        pointOne : The first corner of the rectangle. It can be a SketchPoint or Point3D object.
        pointTwo : The first corner of the rectangle. It can be a SketchPoint or Point3D object.
        pointThree : The first corner of the rectangle. a Point3D object defining the height of the rectangle.
        Returns the four new sketch lines or null if the creation failed.
        """
        return SketchLineList()
    def addCenterPointRectangle(self, centerPoint: core.Point3D, cornerPoint: core.Base) -> SketchLineList:
        """
        Creates four sketch lines representing a rectangle where the first point represents the center of
        the rectangle. The second point is the corner of the rectangle and can be either an existing
        SketchPoint or Point3D object. The four sketch lines are returned.
        centerPoint : The center point of the rectangle
        cornerPoint : The corner of the rectangle. It can be a SketchPoint or Point3D object.
        Returns the four new sketch lines or null if the creation failed.
        """
        return SketchLineList()
    def addDistanceChamfer(self, firstLine: SketchLine, firstLinePoint: core.Point3D, secondLine: SketchLine, secondLinePoint: core.Point3D, distanceOne: float, distanceTwo: float) -> SketchLine:
        """
        Creates a chamfer between two sketch lines. In the case where the two input lines cross each other creating
        an "X" shape, this results in four quadrants where the chamfer can be placed. The point arguments are used
        to define which of the four quadrants the chamfer should be created in. The two points define which side of
        the two lines should be kept and the other end will be trimmed by the chamfer. The easiest way to use this is
        to use the end points of the lines on the side you want to keep.
        In the case where the lines don't intersect or connect at the end points, there is only one valid quadrant
        for the chamfer so the points are ignored.
        firstLine : The first line you want to chamfer.
        firstLinePoint : A point on the first line that is on the side of the intersection with the second line that you want to keep.
        secondLine : The second line you want to chamfer.
        secondLinePoint : A point on the second line that is on the side of the intersection with the first line that you want to keep.
        distanceOne : Defines the distance of the start point of the chamfer line from the intersection point of the two lines along the first line.
        The distance is defined in centimeters.
        distanceTwo : Defines the distance of the start point of the chamfer line from the intersection point of the two lines along the second line.
        The distance is defined in centimeters.
        Returns the newly created SketchLine object that represents the chamfer or null if the creation failed.
        """
        return SketchLine()
    def addAngleChamfer(self, firstLine: SketchLine, firstLinePoint: core.Point3D, secondLine: SketchLine, secondLinePoint: core.Point3D, distance: float, angle: float) -> SketchLine:
        """
        Creates a chamfer between two sketch lines. In the case where the two input lines cross each other creating
        an "X" shape, this results in four quadrants where the chamfer can be placed. The point arguments are used
        to define which of the four quadrants the chamfer should be created in. The two points define which side of
        the two lines should be kept and the other end will be trimmed by the chamfer. The easiest way to use this is
        to use the end points of the lines on the side you want to keep.
        In the case where the lines don't intersect or connect at the end points, there is only one valid quadrant
        for the chamfer so the points are ignored.
        firstLine : The first line you want to chamfer.
        firstLinePoint : A point on the first line that is on the side of the intersection with the second line that you want to keep.
        secondLine : The second line you want to chamfer.
        secondLinePoint : A point on the second line that is on the side of the intersection with the first line that you want to keep.
        distance : Defines the distance of the start point of the chamfer from the intersection point of the two lines along the first line.
        The distance is defined in centimeters.
        angle : Defines the angle of the chamfer as measured from the first line.
        The angle is defined in radians.
        Returns the newly created SketchLine object that represents the chamfer or null if the creation failed.
        """
        return SketchLine()
    def addScribedPolygon(self, centerPoint: core.Base, edgeCount: int, angle: float, radius: float, isInscribed: bool) -> SketchLineList:
        """
        Creates either an inscribed or circumscribed n-sided polygon.
        centerPoint : Either an existing SketchPoint or a Point3D object that defines the center point of the polygon. If a SketchPoint object
        is provided the point will continue to control the center of the polygon.
        edgeCount : The number of edges in the resulting polygon.
        angle : Controls the rotation of the polygon around the center point. For a circumscribed polygon, this defines where the center
        of one of the edges will be positioned. For an inscribed polygon, this defines where one of the corners of the polygon
        will be positioned.
        radius : The radius of the circle in centimeters that the polygon goes to, either outside (circumscribed) or inside (inscribed) the circle.
        isInscribed : Specifies if a circumscribed or inscribed polygon should be created.
        Returns a list of the sketch lines that were created to represent the polygon or null in the case of bad input.
        """
        return SketchLineList()
    def addEdgePolygon(self, pointOne: core.Base, pointTwo: core.Base, isRight: bool, edgeCount: int) -> SketchLineList:
        """
        Creates a polygon where two points specify an edge of the polygon. By specifying an edge, the size and position of
        the polygon is also defined.
        pointOne : The first point of the edge.
        pointTwo : The second point of the edge.
        isRight : After defining points one and two, a polygon can be created on either side of the line defined by the two points.
        This argument specifies which side of the line the polygon will be created on. If this is true, the polygon will
        be created to the right of the line from the perspective of looking from point one to point two. If false,
        it will be to the left of the line.
        edgeCount : The number of edges in the resulting polygon.
        Returns a list of the sketch lines that were created to represent the polygon or null in the case of bad input.
        """
        return SketchLineList()
    def addByMidpoint(self, midPoint: core.Base, secondPoint: core.Base) -> SketchLine:
        """
        Creates a sketch line where the first point is the midpoint and the second point
        is one endpoint. The system automatically calculates the other endpoint to create
        a line where the first point is exactly at the midpoint.
        midPoint : The midpoint of the line. It can be a SketchPoint or Point3D object.
        secondPoint : One endpoint of the line. It can be a SketchPoint or Point3D object.
        The other endpoint will be calculated automatically.
        Returns the newly created SketchLine object or null if the creation failed.
        """
        return SketchLine()
    @property
    def count(self) -> int:
        """
        Returns the number of lines in the sketch.
        """
        return int()

class SketchPointList(core.Base):
    """
    A list of sketch points.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchPointList:
        return SketchPointList()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SketchPoint:
        return None
    def __iter__(self) -> Iterator[SketchPoint]:
        return None
    def item(self, index: int) -> SketchPoint:
        """
        Function that returns the specified sketch point 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 SketchPoint()
    @property
    def count(self) -> int:
        """
        Returns the number of sketch points in the list.
        """
        return int()

class SketchPoints(core.Base):
    """
    A collection of sketch points.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchPoints:
        return SketchPoints()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SketchPoint:
        return None
    def __iter__(self) -> Iterator[SketchPoint]:
        return None
    def item(self, index: int) -> SketchPoint:
        """
        Function that returns the specified sketch 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 SketchPoint()
    def add(self, point: core.Point3D) -> SketchPoint:
        """
        Creates a point at the specified location. This is the equivalent
        of creating a sketch point using the Point command in the user
        interface and will create a visible point in the graphics window.
        point : The coordinate location to create the sketch point.
        Returns the new sketch point or null if the creation fails.
        """
        return SketchPoint()
    @property
    def count(self) -> int:
        """
        Returns the number of sketch points in the sketch.
        """
        return int()

class SketchTextDefinition(core.Base):
    """
    The base class for the classes that define how text can be defined.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchTextDefinition:
        return SketchTextDefinition()
    @property
    def parentSketchText(self) -> SketchText:
        """
        Returns the SketchText object this definition is associated with. This property will
        return null in the case the definition object was obtained from a SketchTextInput object
        because the SketchText object does not yet exist.
        """
        return SketchText()

class SketchTextInput(core.Base):
    """
    The SketchTextInput object is equivalent to the Sketch Text dialog in that it collects all of the input required
    to create sketch text. Once the properties of the SketchTextInput object have been defined, use the add method
    to create the sketch text. A SketchTextInput object is created by using the createInput of the SketchTexts object.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchTextInput:
        return SketchTextInput()
    def setAsFitOnPath(self, path: core.Base, isAbovePath: bool) -> bool:
        """
        Sets this SketchTextInput to define text that fits along a specified path. Fitting on a path will
        space the characters so the text fits along the entire length of the path entity.
        path : The entity that defines the path for the text. This can be a SketchCurve or BRepEdge object.
        isAbovePath : Indicates if the text should be positioned above or below the path entity.
        Returns true if the setting the definition was successful.
        """
        return bool()
    def setAsAlongPath(self, path: core.Base, isAbovePath: bool, horizontalAlignment: core.HorizontalAlignments, characterSpacing: float) -> bool:
        """
        Sets this SketchTextInput to define text that follows along a specified path.
        path : The entity that defines the path for the text. This can be a SketchCurve or BRepEdge object.
        isAbovePath : Indicates if the text should be positioned above or below the path entity.
        horizontalAlignment : Specifies the horizontal alignment of the text with respect to the path curve.
        characterSpacing : The percentage change in default spacing between characters.
        Returns true if the setting the definition was successful.
        """
        return bool()
    def setAsMultiLine(self, cornerPoint: core.Base, diagonalPoint: core.Base, horizontalAlignment: core.HorizontalAlignments, verticalAlignment: core.VerticalAlignments, characterSpacing: float) -> bool:
        """
        Defines the first corner point of the rectangle that will contain the text.
        cornerPoint : Specifies the location of one of the corner points of the rectangle that will contain the text.
        This can be a Point3D object, with a Z component of zero, to define any arbitrary location on the X-Y
        plane of the sketch or it can be an existing SketchPoint that lies on the sketch X-Y plane.
        diagonalPoint : Specifies the location of the diagonal point of the rectangle that will contain the text. This point
        cannot be aligned vertically or horizontally to the corner point but be a diagonal point to define
        a rectangle. This can be a Point3D object, with a Z component of zero, to define any arbitrary location on the X-Y
        plane of the sketch or it can be an existing SketchPoint that lies on the sketch X-Y plane and the sketch point
        will become the opposing corner point.
        horizontalAlignment : Specifies the horizontal alignment of the text with respect to the text rectangle.
        verticalAlignment : Specifies the vertical alignment of the text with respect to the text rectangle.
        characterSpacing : The spacing between the characters. This is an additional spacing to apply that is defined
        as a percentage of the default spacing. A spacing of 0 indicates no additional spacing.
        A spacing of 50 indicates to use the default plus 50% of the default.
        Returns true if the setting the definition was successful.
        """
        return bool()
    @property
    def text(self) -> str:
        """
        Gets and sets the displayed text. This represents the text that results from evaluating the input formatted text. For example,
        if the formatted text is "'Length: ' + lengthParam", this property will return "Length: 3.0 in".
        
        Setting this property will overwrite any equation defined by the expression and replace it with simple text. Use the
        expression property to be able to define a full expression.
        """
        return str()
    @text.setter
    def text(self, value: str):
        """
        Gets and sets the displayed text. This represents the text that results from evaluating the input formatted text. For example,
        if the formatted text is "'Length: ' + lengthParam", this property will return "Length: 3.0 in".
        
        Setting this property will overwrite any equation defined by the expression and replace it with simple text. Use the
        expression property to be able to define a full expression.
        """
        pass
    @property
    def fontName(self) -> str:
        """
        Gets and sets the name of the font to use.
        """
        return str()
    @fontName.setter
    def fontName(self, value: str):
        """
        Gets and sets the name of the font to use.
        """
        pass
    @property
    def textStyle(self) -> TextStyles:
        """
        Gets and sets the text style to apply to the entire text. This is a bitwise enum so styles
        can be combined to apply multiple styles. For example you can apply bold and italic.
        """
        return TextStyles()
    @textStyle.setter
    def textStyle(self, value: TextStyles):
        """
        Gets and sets the text style to apply to the entire text. This is a bitwise enum so styles
        can be combined to apply multiple styles. For example you can apply bold and italic.
        """
        pass
    @property
    def isHorizontalFlip(self) -> bool:
        """
        Gets and sets if the text is flipped horizontally.
        """
        return bool()
    @isHorizontalFlip.setter
    def isHorizontalFlip(self, value: bool):
        """
        Gets and sets if the text is flipped horizontally.
        """
        pass
    @property
    def isVerticalFlip(self) -> bool:
        """
        Gets and sets if the text is flipped vertically.
        """
        return bool()
    @isVerticalFlip.setter
    def isVerticalFlip(self, value: bool):
        """
        Gets and sets if the text is flipped vertically.
        """
        pass
    @property
    def definition(self) -> SketchTextDefinition:
        """
        Returns the SketchTextDefinition object associated with this input. When the SketchTextInput is first created this
        property will return null. Once one of the "set" methods have been called, this will return the SketchTextDefinition
        of the appropriate type and can be used to make any additional changes to the text.
        """
        return SketchTextDefinition()
    @property
    def expression(self) -> str:
        """
        Gets and sets the expression of the parameter that will be created when this SketchText is created. It can be a simple string
        or it can be an expression that combines text with parameter values. Simple text must be enclosed within single quotes,
        the same as it is required in the TEXT command dialog.
        
        An example of a valid expression is: "'Length: ' + lengthParam" and will result in "Length: 3.0 mm". The expression
        result can be obtained by using the text property on the created SketchTextInput object.
        """
        return str()
    @expression.setter
    def expression(self, value: str):
        """
        Gets and sets the expression of the parameter that will be created when this SketchText is created. It can be a simple string
        or it can be an expression that combines text with parameter values. Simple text must be enclosed within single quotes,
        the same as it is required in the TEXT command dialog.
        
        An example of a valid expression is: "'Length: ' + lengthParam" and will result in "Length: 3.0 mm". The expression
        result can be obtained by using the text property on the created SketchTextInput object.
        """
        pass
    @property
    def height2(self) -> core.ValueInput:
        """
        Gets and sets the ValueInput that defines the height of the text. This value is used to create a
        parameter that will control the height of the text. It can be a value where it defines the height
        of the text in centimeters, or it can be a string where it defines the equation of the parameter
        and must evaluate to a valid length.
        """
        return core.ValueInput()
    @height2.setter
    def height2(self, value: core.ValueInput):
        """
        Gets and sets the ValueInput that defines the height of the text. This value is used to create a
        parameter that will control the height of the text. It can be a value where it defines the height
        of the text in centimeters, or it can be a string where it defines the equation of the parameter
        and must evaluate to a valid length.
        """
        pass

class SketchTexts(core.Base):
    """
    The collection of text blocks in a sketch. This provides access to the existing
    text blocks and supports creating new text blocks.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchTexts:
        return SketchTexts()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SketchText:
        return None
    def __iter__(self) -> Iterator[SketchText]:
        return None
    def item(self, index: int) -> SketchText:
        """
        Function that returns the specified sketch text 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 SketchText()
    def add(self, input: SketchTextInput) -> SketchText:
        """
        Creates a sketch text.
        input : A SketchTextInput object created using the SketchTexts.createInput method.
        Returns the newly created SketchText object or null in the case of failure.
        """
        return SketchText()
    def createInput3(self, expression: str, height: core.ValueInput) -> SketchTextInput:
        """
        Creates a SketchTextInput object that is used to define the additional input to create text. The SketchTextInput
        object is equivalent to the Sketch Text dialog in that it collects all of the input required to create sketch text.
        You must call setAsFitOnPath, setAsAlongPath, or setAsMultiLine methods to define one of the three types of text.
        Once the properties of the SketchTextInput object have been defined, pass the SketchTextInput to the add method
        to create the sketch text.
        expression : This defines the expression of the parameter that will be created when this SketchText is created. It can be a simple string
        or it can be an expression that combines text with parameter values. Simple text must be enclosed within single quotes,
        the same as it is required in the TEXT command dialog.
        
        An example of a valid expression is: "'Length: ' + lengthParam" and will result in "Length: 3.0 mm". The expression
        result can be obtained by using the text property on the created SketchTextInput object.
        height : A ValueInput that defines the height of the text. This value is used to create a parameter that will control
        the height of the text. It can be a value where it defines the height of the text in centimeters, or it can
        be a string where it defines the equation of the parameter and must evaluate to a valid length.
        Returns a SketchTextInput object that can be used to set additional formatting and is used as input to the add method.
        """
        return SketchTextInput()
    @property
    def count(self) -> int:
        """
        Returns the number of texts in the sketch.
        """
        return int()

class Snapshot(core.Base):
    """
    Object that represents a Snapshot in the timeline
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Snapshot:
        return Snapshot()
    def deleteMe(self) -> bool:
        """
        Deletes this snapshot.
        Returns true if the delete was successful.
        """
        return bool()
    @property
    def name(self) -> str:
        """
        Gets and sets the name of the snapshot as seen in the timeline.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name of the snapshot as seen in the timeline.
        """
        pass
    @property
    def timelineObject(self) -> TimelineObject:
        """
        Returns the timeline object associated with this snapshot.
        """
        return TimelineObject()

class Snapshots(core.Base):
    """
    Provides access to the Snapshots within a design and provides
    methods to create new Snapshots.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Snapshots:
        return Snapshots()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> Snapshot:
        return None
    def __iter__(self) -> Iterator[Snapshot]:
        return None
    def add(self) -> Snapshot:
        """
        Creates a new snapshot. Creating a snapshot is only valid when the HasPendingTransforms property returns true.
        Returns the newly created snapshot.
        """
        return Snapshot()
    def item(self, index: int) -> Snapshot:
        """
        Function that returns the specified snapshot in the collection 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 Snapshot()
    def revertPendingSnapshot(self) -> bool:
        """
        Reverts and changes that have been made that can be snapshot. This effectively
        reverts the design back to the last snapshot. This is only valid when the
        HasPendingSnapshot property returns true.
        Returns true if the revert was successful.
        """
        return bool()
    @property
    def count(self) -> int:
        """
        The number of items in the collection.
        """
        return int()
    @property
    def hasPendingSnapshot(self) -> bool:
        """
        Indicates if there are any changes that have been made than can be snapshot.
        """
        return bool()

class SphereFeatures(core.Base):
    """
    Collection that provides access to all of the existing torus features in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SphereFeatures:
        return SphereFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SphereFeature:
        return None
    def __iter__(self) -> Iterator[SphereFeature]:
        return None
    def item(self, index: int) -> SphereFeature:
        """
        Function that returns the specified sphere feature 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 SphereFeature()
    def itemByName(self, name: str) -> SphereFeature:
        """
        Function that returns the specified sphere feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return SphereFeature()
    @property
    def count(self) -> int:
        """
        The number of sphere features in the collection.
        """
        return int()

class SplitBodyFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a split body feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SplitBodyFeatureInput:
        return SplitBodyFeatureInput()
    @property
    def splitBodies(self) -> core.Base:
        """
        Gets and sets the input solid or open bodies to be split. This can be a
        single BRepBody or an ObjectCollection if multiple bodies are to be split.
        """
        return core.Base()
    @splitBodies.setter
    def splitBodies(self, value: core.Base):
        """
        Gets and sets the input solid or open bodies to be split. This can be a
        single BRepBody or an ObjectCollection if multiple bodies are to be split.
        """
        pass
    @property
    def splittingTool(self) -> core.Base:
        """
        Gets and sets the entity that defines the splitting tool. The splitting tool is a single
        entity that can be either a solid or open BRepBody, construction plane, profile, or a face.
        """
        return core.Base()
    @splittingTool.setter
    def splittingTool(self, value: core.Base):
        """
        Gets and sets the entity that defines the splitting tool. The splitting tool is a single
        entity that can be either a solid or open BRepBody, construction plane, profile, or a face.
        """
        pass
    @property
    def isSplittingToolExtended(self) -> bool:
        """
        Gets and sets whether or not the splitting tool is to be automatically extended (if possible) so as to
        completely intersect the bodyToSplit.
        """
        return bool()
    @isSplittingToolExtended.setter
    def isSplittingToolExtended(self, value: bool):
        """
        Gets and sets whether or not the splitting tool is to be automatically extended (if possible) so as to
        completely intersect the bodyToSplit.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class SplitBodyFeatures(core.Base):
    """
    Collection that provides access to all of the existing split body features in a component
    and supports the ability to create new split body features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SplitBodyFeatures:
        return SplitBodyFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SplitBodyFeature:
        return None
    def __iter__(self) -> Iterator[SplitBodyFeature]:
        return None
    def item(self, index: int) -> SplitBodyFeature:
        """
        Function that returns the specified split body feature 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 SplitBodyFeature()
    def createInput(self, splitBodies: core.Base, splittingTool: core.Base, isSplittingToolExtended: bool) -> SplitBodyFeatureInput:
        """
        Creates a SplitBodyFeatureInput object. Use properties and methods on this object
        to define the split body you want to create and then use the Add method, passing in
        the SplitBodyFeatureInput object.
        splitBodies : Input solid body or open bodies to be split. This can be a single BRepBody or an ObjectCollection if multiple
        bodies are to be split.
        splittingTool : Input entity that defines the splitting tool. The splitting tool is a single entity that can be either a solid or open BRepBody,
        construction plane, profile, or a face.
        isSplittingToolExtended : A boolean value for setting whether or not the splitting tool is to be automatically extended (if possible) so as to
        completely intersect the bodyToSplit.
        Returns the newly created SplitBodyFeatureInput object or null if the creation failed.
        """
        return SplitBodyFeatureInput()
    def add(self, input: SplitBodyFeatureInput) -> SplitBodyFeature:
        """
        Creates a new split body feature.
        input : A SplitBodyFeatureInput object that defines the desired split body feature. Use the createInput
        method to create a new SplitBodyFeatureInput object and then use methods on it
        (the SplitBodyFeatureInput object) to define the split body.
        Returns the newly created SplitBodyFeature object or null if the creation failed.
        """
        return SplitBodyFeature()
    def itemByName(self, name: str) -> SplitBodyFeature:
        """
        Function that returns the specified split body feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return SplitBodyFeature()
    @property
    def count(self) -> int:
        """
        The number of split body features in the collection.
        """
        return int()

class SplitFaceFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a split face feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SplitFaceFeatureInput:
        return SplitFaceFeatureInput()
    def setAlongVectorSplitType(self, directionEntity: core.Base) -> bool:
        """
        Sets the split type to project the splitting tool along the direction defined by the
        specified entity.
        directionEntity : An entity that defines the direction of projection of the splitting tool. This can be
        a linear BRepEdge, SketchLine, ConstructionLine, or a planar face where the face
        normal is used.
        Returns true is setting the split type was successful.
        """
        return bool()
    def setClosestPointSplitType(self) -> bool:
        """
        Sets the split type to be a curve that defined by projecting the splitting curve to the
        closest point on the surface.
        Returns true is setting the split type was successful.
        """
        return bool()
    def setSurfaceIntersectionSplitType(self, isSplittingToolExtended: bool) -> bool:
        """
        Set the split type to be a surface to surface intersection. If the split tool is a curve
        it will be extruded into a surface to use in the split. If it's a surface, the surface will
        be used and optionally extended to fully intersect the faces to be split.
        isSplittingToolExtended : Specifies if the splitting tool should be extended so that is fully intersects the faces to be split.
        Returns true is setting the split type was successful.
        """
        return bool()
    @property
    def facesToSplit(self) -> core.ObjectCollection:
        """
        Gets and sets the faces to be split.
        The collection can contain one or more faces selected from solid and/or open bodies.
        """
        return core.ObjectCollection()
    @facesToSplit.setter
    def facesToSplit(self, value: core.ObjectCollection):
        """
        Gets and sets the faces to be split.
        The collection can contain one or more faces selected from solid and/or open bodies.
        """
        pass
    @property
    def splittingTool(self) -> core.Base:
        """
        Gets and sets the entity(s) that define the splitting tool(s). The splitting tool can be a single entity or an
        ObjectCollection containing solid and/or open bodies, construction planes, faces, or sketch curves that partially
        or fully intersect the faces that are being split.
        """
        return core.Base()
    @splittingTool.setter
    def splittingTool(self, value: core.Base):
        """
        Gets and sets the entity(s) that define the splitting tool(s). The splitting tool can be a single entity or an
        ObjectCollection containing solid and/or open bodies, construction planes, faces, or sketch curves that partially
        or fully intersect the faces that are being split.
        """
        pass
    @property
    def isSplittingToolExtended(self) -> bool:
        """
        Gets and sets whether or not the splittingTool is to be automatically extended (if possible) so as to
        completely intersect the facesToSplit.
        """
        return bool()
    @isSplittingToolExtended.setter
    def isSplittingToolExtended(self, value: bool):
        """
        Gets and sets whether or not the splittingTool is to be automatically extended (if possible) so as to
        completely intersect the facesToSplit.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass
    @property
    def splitType(self) -> SplitFaceSplitTypes:
        """
        Returns the type of split type currently defined.
        """
        return SplitFaceSplitTypes()

class SplitFaceFeatures(core.Base):
    """
    Collection that provides access to all of the existing split face features in a component
    and supports the ability to create new split face features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SplitFaceFeatures:
        return SplitFaceFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SplitFaceFeature:
        return None
    def __iter__(self) -> Iterator[SplitFaceFeature]:
        return None
    def item(self, index: int) -> SplitFaceFeature:
        """
        Function that returns the specified split face feature 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 SplitFaceFeature()
    def createInput(self, facesToSplit: core.ObjectCollection, splittingTool: core.Base, isSplittingToolExtended: bool) -> SplitFaceFeatureInput:
        """
        Creates a SplitFaceFeatureInput object. Use properties and methods on this object
        to define the split face you want to create and then use the Add method, passing in
        the SplitFaceFeatureInput object.
        
        A newly created SplitFaceFeatureInput object defaults to creating a split face feature
        using the "Split with Surface" option. You can use functions on the SplitFaceFeatureInput
        object to define a different type of split type.
        facesToSplit : Input the faces to be split. The collection can contain one or more faces from solid and/or open bodies.
        splittingTool : Input entity(s) that defines the splitting tool. The splitting tool can be a single entity or an ObjectCollection
        containing solid and/or open bodies, construction planes, faces, or sketch curves that partially or fully intersect
        the faces that are being split.
        isSplittingToolExtended : A boolean value for setting whether or not the splittingTool is to be automatically extended (if possible) so as to
        completely intersect the faces that are to be split. This is only used when the split type is "split with surface"
        which is the default type when a new createInput is created. Use functions on the returned SplitFaceFeatureInput
        to define a different type of split type.
        Returns the newly created SplitFaceFeatureInput object or null if the creation failed.
        """
        return SplitFaceFeatureInput()
    def add(self, input: SplitFaceFeatureInput) -> SplitFaceFeature:
        """
        Creates a new split face feature.
        input : A SplitFaceFeatureInput object that defines the desired split face feature. Use the createInput
        method to create a new SplitFaceFeatureInput object and then use methods on it
        (the SplitFaceFeatureInput object) to define the split face.
        Returns the newly created SplitFaceFeature object or null if the creation failed.
        """
        return SplitFaceFeature()
    def itemByName(self, name: str) -> SplitFaceFeature:
        """
        Function that returns the specified split face feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return SplitFaceFeature()
    @property
    def count(self) -> int:
        """
        The number of split face features in the collection.
        """
        return int()

class SpunProfileInput(core.Base):
    """
    The input object that defines the required input to create a spun profile when using the
    Sketch.createSpunProfile method. Created using the Sketch.createSpunProfileInput method.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SpunProfileInput:
        return SpunProfileInput()
    @property
    def entities(self) -> list[core.Base]:
        """
        Gets and sets the entities (BRepBody or BRepFace) used to define the shape of the spun profile.
        """
        return [core.Base()]
    @entities.setter
    def entities(self, value: list[core.Base]):
        """
        Gets and sets the entities (BRepBody or BRepFace) used to define the shape of the spun profile.
        """
        pass
    @property
    def axis(self) -> core.Base:
        """
        Gets and sets the entity used to define the axis of revolution.
        The axis can be a sketch line, construction axis, or linear edge.
        The axis must not be perpendicular to the sketch plane.
        """
        return core.Base()
    @axis.setter
    def axis(self, value: core.Base):
        """
        Gets and sets the entity used to define the axis of revolution.
        The axis can be a sketch line, construction axis, or linear edge.
        The axis must not be perpendicular to the sketch plane.
        """
        pass
    @property
    def isAxisProjected(self) -> bool:
        """
        Specifies if the axis will be projected to the sketch plane before making the spun profile.
        Otherwise, the spun profile will be generated around the axis in space. Defaults to true.
        """
        return bool()
    @isAxisProjected.setter
    def isAxisProjected(self, value: bool):
        """
        Specifies if the axis will be projected to the sketch plane before making the spun profile.
        Otherwise, the spun profile will be generated around the axis in space. Defaults to true.
        """
        pass
    @property
    def tolerance(self) -> float:
        """
        Gets and sets the linear tolerance in cm used for creating the spun profile. Defaults to 0.001cm.
        """
        return float()
    @tolerance.setter
    def tolerance(self, value: float):
        """
        Gets and sets the linear tolerance in cm used for creating the spun profile. Defaults to 0.001cm.
        """
        pass
    @property
    def flipResult(self) -> bool:
        """
        Gets and sets whether the profile will be created on the opposite side of the axis.
        """
        return bool()
    @flipResult.setter
    def flipResult(self, value: bool):
        """
        Gets and sets whether the profile will be created on the opposite side of the axis.
        """
        pass
    @property
    def isCenterlineAdded(self) -> bool:
        """
        Gets and sets whether a resulting spun profile that would be open, will be closed along the axis of rotation.
        This closes the sketch so it is ready for further design operations, like revolving the sketch for example.
        Defaults to true.
        """
        return bool()
    @isCenterlineAdded.setter
    def isCenterlineAdded(self, value: bool):
        """
        Gets and sets whether a resulting spun profile that would be open, will be closed along the axis of rotation.
        This closes the sketch so it is ready for further design operations, like revolving the sketch for example.
        Defaults to true.
        """
        pass

class StitchFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a stitch feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> StitchFeatureInput:
        return StitchFeatureInput()
    @property
    def stitchSurfaces(self) -> core.ObjectCollection:
        """
        Gets and sets the surfaces to stitch together.
        """
        return core.ObjectCollection()
    @stitchSurfaces.setter
    def stitchSurfaces(self, value: core.ObjectCollection):
        """
        Gets and sets the surfaces to stitch together.
        """
        pass
    @property
    def tolerance(self) -> core.ValueInput:
        """
        Gets and sets the ValueInput object that defines the stitching tolerance. It must define a length.
        """
        return core.ValueInput()
    @tolerance.setter
    def tolerance(self, value: core.ValueInput):
        """
        Gets and sets the ValueInput object that defines the stitching tolerance. It must define a length.
        """
        pass
    @property
    def operation(self) -> FeatureOperations:
        """
        Gets and sets the feature operation to perform. This property value is only valid if the isSolid property returns
        true. Otherwise the value of this property is ignored.
        """
        return FeatureOperations()
    @operation.setter
    def operation(self, value: FeatureOperations):
        """
        Gets and sets the feature operation to perform. This property value is only valid if the isSolid property returns
        true. Otherwise the value of this property is ignored.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class StitchFeatures(core.Base):
    """
    Collection that provides access to all of the existing Stitch features in a component
    and supports the ability to create new Stitch features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> StitchFeatures:
        return StitchFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> StitchFeature:
        return None
    def __iter__(self) -> Iterator[StitchFeature]:
        return None
    def item(self, index: int) -> StitchFeature:
        """
        Function that returns the specified stitch feature 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 StitchFeature()
    def createInput(self, stitchSurfaces: core.ObjectCollection, tolerance: core.ValueInput, operation: FeatureOperations = FeatureOperations.NewBodyFeatureOperation) -> StitchFeatureInput:
        """
        Creates a StitchFeatureInput object. Use properties and methods on this object
        to define the stitch feature you want to create and then use the Add method, passing in
        the StitchFeatureInput object.
        stitchSurfaces : The surfaces (open BRepBodies) to stitch together.
        Stitching surfaces can form multiple closed volumes resulting in multiple solids.
        Stitch Surfaces can form multiple BRepShells (entirely connected set of entities) that would result in a
        single non-solid BRepBody.
        tolerance : ValueInput object that defines the stitching tolerance. It must define a distance value.
        operation : Specifies the operation type for the result when the final result is a closed solid. Otherwise
        this argument is ignored.
        Returns the newly created StitchFeatureInput object or null if the creation failed.
        """
        return StitchFeatureInput()
    def add(self, input: StitchFeatureInput) -> StitchFeature:
        """
        Creates a new stitch feature.
        input : A StitchFeatureInput object that defines the desired stitch feature. Use the createInput
        method to create a new StitchFeatureInput object and then use methods on it
        (the StitchFeatureInput object) to define the stitch feature.
        Returns the newly created StitchFeature object or null if the creation failed.
        """
        return StitchFeature()
    def itemByName(self, name: str) -> StitchFeature:
        """
        Function that returns the specified stitch feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return StitchFeature()
    @property
    def count(self) -> int:
        """
        The number of Stitch features in the collection.
        """
        return int()

class SurfaceDeleteFaceFeatures(core.Base):
    """
    Collection that provides access to all of the existing SurfaceDeleteFaceFeature features in a component
    and supports the ability to create new SurfaceDeleteFaceFeature features.
    
    The SurfaceDeleteFaceFeature and DeleteFaceFeature differ in that the SurfaceDeleteFaceFeature
    can delete any face without any restrictions. If the body is a solid, it will become a surface
    when the first face is deleted. The specified face is deleted without any other changes being
    made to the body. The DeleteFaceFeature deletes the specified face and also modifies the other faces
    in the body to heal or fill in the area of the deleted face. This means that a solid body will
    remain solid.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SurfaceDeleteFaceFeatures:
        return SurfaceDeleteFaceFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SurfaceDeleteFaceFeature:
        return None
    def __iter__(self) -> Iterator[SurfaceDeleteFaceFeature]:
        return None
    def item(self, index: int) -> SurfaceDeleteFaceFeature:
        """
        Function that returns the specified SurfaceDeleteFaceFeature 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 SurfaceDeleteFaceFeature()
    def itemByName(self, name: str) -> SurfaceDeleteFaceFeature:
        """
        Function that returns the specified SurfaceDeleteFaceFeature object using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return SurfaceDeleteFaceFeature()
    def add(self, facesToDelete: core.Base) -> SurfaceDeleteFaceFeature:
        """
        Creates a new SurfaceDeleteFaceFeature feature. This deletes the specified faces
        from their bodies without any attempt to heal the openings. This is equivalent
        to selecting and deleting faces when in the Patch workspace.
        facesToDelete : A single BRepFace or an ObjectCollection containing multiple BRepFace objects.
        Returns the newly created SurfaceDeleteFaceFeature object or null if the creation failed.
        """
        return SurfaceDeleteFaceFeature()
    @property
    def count(self) -> int:
        """
        The number of SurfaceDeleteFaceFeature objects in the collection.
        """
        return int()

class SweepFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a sweep
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SweepFeatureInput:
        return SweepFeatureInput()
    @property
    def profile(self) -> core.Base:
        """
        Gets and sets the profiles or planar faces used to define the shape of the sweep.
        This property can return or be set with a single Profile, a single planar face, or
        an ObjectCollection consisting of multiple profiles and planar faces. When an
        ObjectCollection is used all of the profiles and faces must be co-planar.
        """
        return core.Base()
    @profile.setter
    def profile(self, value: core.Base):
        """
        Gets and sets the profiles or planar faces used to define the shape of the sweep.
        This property can return or be set with a single Profile, a single planar face, or
        an ObjectCollection consisting of multiple profiles and planar faces. When an
        ObjectCollection is used all of the profiles and faces must be co-planar.
        """
        pass
    @property
    def operation(self) -> FeatureOperations:
        """
        Gets and sets the type of operation performed by the sweep.
        """
        return FeatureOperations()
    @operation.setter
    def operation(self, value: FeatureOperations):
        """
        Gets and sets the type of operation performed by the sweep.
        """
        pass
    @property
    def path(self) -> Path:
        """
        Gets and sets the path to create the sweep.
        """
        return Path()
    @path.setter
    def path(self, value: Path):
        """
        Gets and sets the path to create the sweep.
        """
        pass
    @property
    def distanceOne(self) -> core.ValueInput:
        """
        Gets and sets the distance for the first side.
        The distance is a value from 0 to 1 indicating the position along the path where 0
        is at the start and 1 is at the end. The value is default to 1.0.
        """
        return core.ValueInput()
    @distanceOne.setter
    def distanceOne(self, value: core.ValueInput):
        """
        Gets and sets the distance for the first side.
        The distance is a value from 0 to 1 indicating the position along the path where 0
        is at the start and 1 is at the end. The value is default to 1.0.
        """
        pass
    @property
    def distanceTwo(self) -> core.ValueInput:
        """
        Gets and sets the distance for the second side.
        The distance is a value from 0 to 1 indicating the position along the path where 0
        is at the start and 1 is at the end. The value defaults to 0 in the case where the path is closed, otherwise it defaults to 1.0.
        It is ignored if the path is only on one side of the profile or if the sweep definition includes a guide rail.
        It's always the distance against the normal of the profile if available.
        """
        return core.ValueInput()
    @distanceTwo.setter
    def distanceTwo(self, value: core.ValueInput):
        """
        Gets and sets the distance for the second side.
        The distance is a value from 0 to 1 indicating the position along the path where 0
        is at the start and 1 is at the end. The value defaults to 0 in the case where the path is closed, otherwise it defaults to 1.0.
        It is ignored if the path is only on one side of the profile or if the sweep definition includes a guide rail.
        It's always the distance against the normal of the profile if available.
        """
        pass
    @property
    def orientation(self) -> SweepOrientationTypes:
        """
        Gets and sets the sweep orientation. It defaults to PerpendicularOrientationType.
        This property is ignored when sweeping a solid or a guide rail or surface has been specified.
        """
        return SweepOrientationTypes()
    @orientation.setter
    def orientation(self, value: SweepOrientationTypes):
        """
        Gets and sets the sweep orientation. It defaults to PerpendicularOrientationType.
        This property is ignored when sweeping a solid or a guide rail or surface has been specified.
        """
        pass
    @property
    def creationOccurrence(self) -> Occurrence:
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the sweep is created based on geometry (e.g. a profile and/or face(s))
        in another component AND (the sweep) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI
        """
        return Occurrence()
    @creationOccurrence.setter
    def creationOccurrence(self, value: Occurrence):
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the sweep is created based on geometry (e.g. a profile and/or face(s))
        in another component AND (the sweep) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI
        """
        pass
    @property
    def isSolid(self) -> bool:
        """
        Specifies if the sweep should be created as a solid or surface. If
        it's a surface then there aren't any end caps and it's open. This is
        initialized to true so a solid will be created if it's not changed.
        """
        return bool()
    @isSolid.setter
    def isSolid(self, value: bool):
        """
        Specifies if the sweep should be created as a solid or surface. If
        it's a surface then there aren't any end caps and it's open. This is
        initialized to true so a solid will be created if it's not changed.
        """
        pass
    @property
    def guideRail(self) -> Path:
        """
        Gets and sets the guide rail to create the sweep. This can be set to
        null to remove the guide rail definition and have a single path sweep feature.
        """
        return Path()
    @guideRail.setter
    def guideRail(self, value: Path):
        """
        Gets and sets the guide rail to create the sweep. This can be set to
        null to remove the guide rail definition and have a single path sweep feature.
        """
        pass
    @property
    def isDirectionFlipped(self) -> bool:
        """
        Gets and sets if the direction of the sweep is flipped.
        This property only applies to sweep features that include a guide rail and whose path runs on both
        sides of the profile.
        """
        return bool()
    @isDirectionFlipped.setter
    def isDirectionFlipped(self, value: bool):
        """
        Gets and sets if the direction of the sweep is flipped.
        This property only applies to sweep features that include a guide rail and whose path runs on both
        sides of the profile.
        """
        pass
    @property
    def profileScaling(self) -> SweepProfileScalingOptions:
        """
        Gets and sets the sweep profile scaling option. It defaults to SweepProfileScaleOption.
        This property is only used when a guide rail has been specified.
        """
        return SweepProfileScalingOptions()
    @profileScaling.setter
    def profileScaling(self, value: SweepProfileScalingOptions):
        """
        Gets and sets the sweep profile scaling option. It defaults to SweepProfileScaleOption.
        This property is only used when a guide rail has been specified.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass
    @property
    def participantBodies(self) -> list[BRepBody]:
        """
        Gets and sets the list of bodies that will participate in the feature when the operation is a cut or intersection.
        
        If this property has not been set, the default behavior is that all bodies that are intersected by the
        feature will participate.
        
        This property can return null in the case where the feature has not been fully defined so that
        possible intersecting bodies can be computed.
        """
        return [BRepBody()]
    @participantBodies.setter
    def participantBodies(self, value: list[BRepBody]):
        """
        Gets and sets the list of bodies that will participate in the feature when the operation is a cut or intersection.
        
        If this property has not been set, the default behavior is that all bodies that are intersected by the
        feature will participate.
        
        This property can return null in the case where the feature has not been fully defined so that
        possible intersecting bodies can be computed.
        """
        pass
    @property
    def taperAngle(self) -> core.ValueInput:
        """
        Gets and sets the taper angle of the sweep. This property is initialized with a taper angle of zero.
        A negative angle will taper the sweep inward while a positive value will taper
        the sweep outward.
        
        This property is ignored if sweeping a solid or a guide rail or surface has been specified.
        This property is valid for both parametric and non-parametric extrusions.
        """
        return core.ValueInput()
    @taperAngle.setter
    def taperAngle(self, value: core.ValueInput):
        """
        Gets and sets the taper angle of the sweep. This property is initialized with a taper angle of zero.
        A negative angle will taper the sweep inward while a positive value will taper
        the sweep outward.
        
        This property is ignored if sweeping a solid or a guide rail or surface has been specified.
        This property is valid for both parametric and non-parametric extrusions.
        """
        pass
    @property
    def twistAngle(self) -> core.ValueInput:
        """
        Gets and sets the twist angle of the sweep. This property is initialized with a twist angle of zero.
        When sweeping a solid setting the twist angle requires the solid twist axis to be set.
        
        This property is ignored if a guide rail or surface has been specified.
        This property is valid for both parametric and non-parametric extrusions.
        """
        return core.ValueInput()
    @twistAngle.setter
    def twistAngle(self, value: core.ValueInput):
        """
        Gets and sets the twist angle of the sweep. This property is initialized with a twist angle of zero.
        When sweeping a solid setting the twist angle requires the solid twist axis to be set.
        
        This property is ignored if a guide rail or surface has been specified.
        This property is valid for both parametric and non-parametric extrusions.
        """
        pass
    @property
    def extent(self) -> SweepExtentTypes:
        """
        Gets and sets the sweep extent type. It defaults to PerpendicularToPathExtentType.
        This property is ignored when a guide rail has not been specified.
        """
        return SweepExtentTypes()
    @extent.setter
    def extent(self, value: SweepExtentTypes):
        """
        Gets and sets the sweep extent type. It defaults to PerpendicularToPathExtentType.
        This property is ignored when a guide rail has not been specified.
        """
        pass
    @property
    def guideSurfaces(self) -> list[BRepFace]:
        """
        Gets and sets the guide surfaces to create the sweep. This can be set to
        an empty array to remove the guide surfaces and have a single path sweep feature.
        By default connected faces that are tangent to any of the guide faces are set as guide faces.
        Use the isChainSelection property to disable the use of tangent faces.
        """
        return [BRepFace()]
    @guideSurfaces.setter
    def guideSurfaces(self, value: list[BRepFace]):
        """
        Gets and sets the guide surfaces to create the sweep. This can be set to
        an empty array to remove the guide surfaces and have a single path sweep feature.
        By default connected faces that are tangent to any of the guide faces are set as guide faces.
        Use the isChainSelection property to disable the use of tangent faces.
        """
        pass
    @property
    def isChainSelection(self) -> bool:
        """
        Get and sets whether faces that are tangentially connected to the guide surfaces are also made guide surfaces.
        """
        return bool()
    @isChainSelection.setter
    def isChainSelection(self, value: bool):
        """
        Get and sets whether faces that are tangentially connected to the guide surfaces are also made guide surfaces.
        """
        pass
    @property
    def solidBody(self) -> BRepBody:
        """
        Gets and sets the BRepBody object to sweep. It must be a solid body.
        Setting this property results in the type being a single path sweep, and
        if the profile, guide path, or surface are set, they are set to null.
        """
        return BRepBody()
    @solidBody.setter
    def solidBody(self, value: BRepBody):
        """
        Gets and sets the BRepBody object to sweep. It must be a solid body.
        Setting this property results in the type being a single path sweep, and
        if the profile, guide path, or surface are set, they are set to null.
        """
        pass
    @property
    def solidOrientation(self) -> SweepSolidOrientationTypes:
        """
        Gets and sets the solid sweep orientation. It defaults to PerpendicularSolidOrientationType.
        Setting the solid orientation to AlignedSolidOrientationType requires the solid aligned axis to be set.
        This property is ignored if sweeping a profile.
        """
        return SweepSolidOrientationTypes()
    @solidOrientation.setter
    def solidOrientation(self, value: SweepSolidOrientationTypes):
        """
        Gets and sets the solid sweep orientation. It defaults to PerpendicularSolidOrientationType.
        Setting the solid orientation to AlignedSolidOrientationType requires the solid aligned axis to be set.
        This property is ignored if sweeping a profile.
        """
        pass
    @property
    def solidAlignedAxis(self) -> core.Base:
        """
        Gets and sets the axis to align the solid being swept with. The axis is used when sweeping a solid,
        and the solid orientation is set to AlignedSolidOrientationType. It can be a sketch line, linear edge,
        or construction axis.
        """
        return core.Base()
    @solidAlignedAxis.setter
    def solidAlignedAxis(self, value: core.Base):
        """
        Gets and sets the axis to align the solid being swept with. The axis is used when sweeping a solid,
        and the solid orientation is set to AlignedSolidOrientationType. It can be a sketch line, linear edge,
        or construction axis.
        """
        pass
    @property
    def solidTwistAxis(self) -> core.Base:
        """
        Gets and sets the twist axis of the solid being swept. The axis is used when sweeping a solid,
        and the twist angle is set. It can be a sketch line, linear edge, construction axis, or a face
        that defines an axis (cylinder, cone, torus, etc.).
        """
        return core.Base()
    @solidTwistAxis.setter
    def solidTwistAxis(self, value: core.Base):
        """
        Gets and sets the twist axis of the solid being swept. The axis is used when sweeping a solid,
        and the twist angle is set. It can be a sketch line, linear edge, construction axis, or a face
        that defines an axis (cylinder, cone, torus, etc.).
        """
        pass

class SweepFeatures(core.Base):
    """
    Collection that provides access to all of the existing sweep features in a component
    and supports the ability to create new sweep features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SweepFeatures:
        return SweepFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> SweepFeature:
        return None
    def __iter__(self) -> Iterator[SweepFeature]:
        return None
    def item(self, index: int) -> SweepFeature:
        """
        Function that returns the specified sweep feature 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 SweepFeature()
    def createInput(self, profile: core.Base, path: Path, operation: FeatureOperations) -> SweepFeatureInput:
        """
        Creates a SweepFeatureInput object for defining a simple sweep feature with only a path and no guide rail or surface.
        Use properties and methods on this object to define the sweep you want to create and then use the Add method,
        passing in the SweepFeatureInput object.
        profile : The profile argument can be a single Profile, a single
        planar face, or an ObjectCollection consisting of multiple profiles and planar faces.
        When an ObjectCollection is used all of the profiles and faces must be co-planar.
        path : The path to create the sweep.
        operation : The feature operation to perform
        Returns the newly created SweepFeatureInput object or null if the creation failed.
        """
        return SweepFeatureInput()
    def add(self, input: SweepFeatureInput) -> SweepFeature:
        """
        Creates a new sweep feature.
        input : A SweepFeatureInput object that defines the desired sweep. Use the createInput
        method to create a new SweepFeatureInput object and then use methods on it
        (the SweepFeatureInput object) to define the sweep.
        Returns the newly created SweepFeature object or null if the creation failed.
        """
        return SweepFeature()
    def itemByName(self, name: str) -> SweepFeature:
        """
        Function that returns the specified sweep feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return SweepFeature()
    def createInputForSolid(self, solidBody: BRepBody, path: Path, operation: FeatureOperations) -> SweepFeatureInput:
        """
        Creates a SweepFeatureInput object for defining a simple sweep feature from a B-Rep
        solid with a path. Use properties and methods on this object to define the sweep you
        want to create, and then use the Add method, passing in the SweepFeatureInput object.
        solidBody : The BRepBody object to sweep. It must be a solid body.
        path : The Path object that defines the path the body will be swept along.
        operation : The type of feature operation to perform.
        Returns the newly created SweepFeatureInput object or null if the creation fails.
        """
        return SweepFeatureInput()
    @property
    def count(self) -> int:
        """
        The number of sweep features in the collection.
        """
        return int()

class TemporaryBRepManager(core.Base):
    """
    A utility object that provides functionality to create and manipulate B-Rep data outside
    the context of a document. The provides direct access to the modeling core without the
    overhead of parametrics, persistence, transactions, or graphics. It also provides a way
    of directly defining and creating B-Rep data.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> TemporaryBRepManager:
        return TemporaryBRepManager()
    @staticmethod
    def get() -> TemporaryBRepManager:
        """
        Gets the TempoaryBRepManager object. This object provides access to functionality to
        create an manipulate temporary B-Rep data outside the context of a document.
        Returns the TemporaryBRepManager object.
        """
        return TemporaryBRepManager()
    def copy(self, bRepEntity: core.Base) -> BRepBody:
        """
        Creates a temporary copy of the input BRepBody, BRepFace, or BRepEdge object.
        bRepEntity : The BRepBody, BRepFace, BRepLoop, or BRepEdge to create a copy of. This can be a parametric
        B-Rep entity or a temporary B-Rep entity.
        Returns a BRepBody that contains the result. If a BRepBody is input the copy is
        of the entire body. If a BRepFace is input, then the result is a BRepBody that
        contains a single face. If a BRepLoop is input then the result is a BRepBody that
        contains a wire where each edge in the loop will have a corresponding edge in the wire.
        If a BRepEdge is input then the result is a BRepBody that contains a wire that contains
        the single edge.
        """
        return BRepBody()
    def planeIntersection(self, body: BRepBody, plane: core.Plane) -> BRepBody:
        """
        Calculates the intersection between the input body and plane and creates a
        wire body that represents the intersection curves.
        body : The BRepBody to intersection.
        plane : The geometry Plane to intersect with the body.
        Returns a BRepBody that contains a wire body that represents the intersection.
        """
        return BRepBody()
    def createRuledSurface(self, sectionOne: BRepWire, sectionTwo: BRepWire) -> BRepBody:
        """
        Creates a new body by creating a ruled surface between the two input wire bodies.
        sectionOne : BRepWire that defines the shape of the first section.
        sectionTwo : BRepWire that defines the shape of the second section.
        Returns the created ruled surface as a BRepBody object.
        """
        return BRepBody()
    def createSilhouetteCurves(self, face: BRepFace, viewDirection: core.Vector3D, returnCoincidentSilhouettes: bool) -> BRepBody:
        """
        Calculates the silhouette curve geometry for a given face as viewed from a given direction.
        face : Input BRepFace object to calculate the silhouette curve for.
        viewDirection : Input Vector3D object that defines the view direction to calculate the silhouette curve relative to.
        The silhouette curve(s) will lie along the path where the face normal is perpendicular to the view direction.
        returnCoincidentSilhouettes : Input Boolean that specifies if silhouette curves that are coincident to the edges of the face should be
        returned or not. If true, these curves will be returned.
        Returns a SurfaceBody object that will contain one or more BRepWire objects that represent the silhouette curve(s).
        This method can return null in the case where there is not a silhouette curve for the specified face.
        """
        return BRepBody()
    def deleteFaces(self, faces: list[BRepFace], deleteSpecifiedFaces: bool) -> bool:
        """
        Deletes one or more faces from a temporary BRepBody. The body that will be modified is determined
        by getting the parent body of the input faces.
        faces : An array of BRepFace objects to delete. If more than one face is provided,
        all of the faces must exist within the same body.
        deleteSpecifiedFaces : This allows you to either delete the faces that were input or to keep those faces and delete all the
        other faces in the body.
        Returns true if the operation was successful.
        """
        return bool()
    def booleanOperation(self, targetBody: BRepBody, toolBody: BRepBody, booleanType: BooleanTypes) -> bool:
        """
        Performs the specified Boolean operation between the two input bodies. The input bodies need
        not be solid but can be faces that are combined or trimmed.
        targetBody : The target body that will be modified as a result of the Boolean operation.
        toolBody : The tool body that will be used to operate on the target body.
        booleanType : The type of Boolean operation to perform.
        Returns true if the operation was successful. If successful, the target body is modified as a result of the
        Boolean operation. Because of this the targetBody must always be a temporary BRepBody. The tool body is not
        modified. This is analogous to a machining operation where you have the target that is being machined and
        the tool that removes material.
        """
        return bool()
    def transform(self, body: BRepBody, transform: core.Matrix3D) -> bool:
        """
        Transforms the input body using the specified transformation matrix.
        body : The BRepBody object to transform.
        transform : The transformation matrix that defines the transform to apply to the body.
        Returns true if the specified transform was successfully applied to the body.
        """
        return bool()
    def createFromFile(self, filename: str) -> BRepBodies:
        """
        Creates new BRepBody objects based on the contents of the specified file.
        filename : The full path and name of the file to read in. This can be a SMT, SMB, SAT, or SAB file.
        A BRepBodies collection object is returned which can contain multiple BRepBody objects.
        null is returned in the case where it was unable to read the file.
        """
        return BRepBodies()
    def exportToFile(self, bodies: list[BRepBody], filename: str) -> bool:
        """
        Exports the input bodies to the specified file.
        bodies : An array of BRepBody objects that you want to export.
        filename : The filename to write the BRepBody objects to. The type of file to create
        is inferred from the extension of the file. The valid extensions are ".sat" and ".smt".
        Returns true if the export was successful.
        """
        return bool()
    def createBox(self, box: core.OrientedBoundingBox3D) -> BRepBody:
        """
        Creates a new temporary solid box BRepBody object.
        box : The OrientedBoundingBox3D object that defines the position, orientation, and
        size of the box to crate.
        Returns the newly created temporary BRepBody object or null in the case of failure.
        """
        return BRepBody()
    def createCylinderOrCone(self, pointOne: core.Point3D, pointOneRadius: float, pointTwo: core.Point3D, pointTwoRadius: float) -> BRepBody:
        """
        Creates a temporary solid cylinder or cone BRepBody object.
        pointOne : A point at one end of the cylinder or cone.
        pointOneRadius : The radius of the cylinder or cone at the point one end, in centimeters.
        pointTwo : A point at the opposite end of the cylinder or cone.
        pointTwoRadius : The radius of the cylinder or cone at the point two end, in centimeters.
        For a cylinder the pointTwoRadius should be equal to the pointOneRadius.
        Returns the newly created temporary BRepBody object or null in the case of failure.
        """
        return BRepBody()
    def createEllipticalCylinderOrCone(self, pointOne: core.Point3D, pointOneMajorRadius: float, pointOneMinorRadius: float, pointTwo: core.Point3D, pointTwoMajorRadius: float, majorAxisDirection: core.Vector3D) -> BRepBody:
        """
        Creates a temporary elliptical solid cylinder or cone BRepBody object.
        pointOne : A point at one end of the cylinder or cone.
        pointOneMajorRadius : The major radius of the cylinder or cone at the point one end, in centimeters.
        pointOneMinorRadius : The minor radius of the cylinder or cone at the point one end, in centimeters.
        pointTwo : A point at the opposite end of the cone.
        pointTwoMajorRadius : The major radius of the cylinder or cone at the point two end, in centimeters. The
        minor radius is automatically determined using the point one ratio of the minor and major
        radii.
        majorAxisDirection : A Vector3D object that defines the direction of the major axis.
        Returns the newly created temporary BRepBody object or null in the case of failure.
        """
        return BRepBody()
    def createSphere(self, center: core.Point3D, radius: float) -> BRepBody:
        """
        Creates a temporary spherical BRepBody object.
        center : The center point of the sphere.
        radius : The radius of the sphere in centimeters.
        Returns the newly created temporary BRepBody object or null in the case of failure.
        """
        return BRepBody()
    def createTorus(self, center: core.Point3D, axis: core.Vector3D, majorRadius: float, minorRadius: float) -> BRepBody:
        """
        Creates a temporary toroidal BRepBody object.
        center : The center point of the torus.
        axis : The axis of the torus.
        majorRadius : The radius, in centimeters, of the major radius of the torus. If the torus was created
        by sweeping a circle around another circle this would be the radius of the path circle.
        minorRadius : The radius, in centimeters, of the minor radius of the torus. If the torus was created
        by sweeping a circle around another circle this would be the radius of the profile circle.
        Returns the newly created temporary BRepBody object or null in the case of failure.
        """
        return BRepBody()
    def createFaceFromPlanarWires(self, wireBodies: list[BRepBody]) -> BRepBody:
        """
        Creates a body from multiple wires that all lie within the same plane. Multiple wires are
        used when creating a plane with interior holes. One wire defines the outer shape and the
        other wires define the interior loops of the created face.
        wireBodies : An array of bodies that contain planar wires. Each wire must be closed, they should not overlap,
        and they should all lie on the same plane.
        Returns a BRepBody containing the created BRepFace object or null in the case of failure.
        """
        return BRepBody()
    def imprintOverlapBodies(self, bodyOne: BRepBody, bodyTwo: BRepBody, imprintCoincidentEdges: bool, tolerance: float = 0.0) -> tuple[bool, BRepBody, BRepBody, list[BRepFace], list[BRepFace], list[BRepEdge], list[BRepEdge]]:
        """
        Method that finds regions of faces on two bodies which overlap and creates new bodies where the faces
        are split at the edges of the overlaps. This does not modify the original bodies but creates new
        temporary bodies that contain the imprints.
        bodyOne : Input BRepBody that will participate in the imprint operation. This body can be either a parametric
        or temporary body.
        bodyTwo : Input BRepBody that will participate in the imprint operation. This body can be either a parametric
        or temporary body.
        imprintCoincidentEdges : Input Boolean that indicates if overlapping edges should be included in the result. The picture below
        shows an example of when this argument will make a difference. The two bodies have overlapping faces
        and there is also an overlapping edge. If this argument is true, then the edge shown in red below
        will be included in the output as an overlapping edge. If False it will not be included and only
        the edges of the overlapping faces will be in the overlapping faces collections.
        <br/><br/><center><img src="../images/ImprintOverlappingEdges.png"></center>
        
        resultBodyOne : Output temporary BRepBody that contains the imprinted body that corresponds to the body provided through the bodyOne argument.
        resultBodyTwo : Output temporary BRepBody that contains the imprinted body that corresponds to the body provided through the bodyTwo argument.
        bodyOneOverlappingFaces : Output array of BRepFace objects that represent the overlapping faces that are part of resultBodyOne. Faces at the same index within the
        collection returned here and that returned by the bodyTwoOverlappingFaces are overlapping.
        bodyTwoOverlappingFaces : Output array of BRepFace objects that represent the overlapping faces that are part of resultBodyTwo. Faces at the same index within the
        collection returned here and that returned by the bodyOneOverlappingFaces are overlapping.
        bodyOneOverlappingEdges : Output array of BRepEdge objects that represent the overlapping edges that are part of resultBodyOne. Edges at the same index within the
        collection returned here and that returned by the bodyTwoOverlappingEdges are overlapping.
        bodyTwoOverlappingEdges : Output array of BRepEdge objects that represent the overlapping edges that are part of resultBodyTwo. Edges at the same index within the
        collection returned here and that returned by the bodyOneOverlappingEdges are overlapping.
        tolerance : Optional Input double that specifies the tolerance, in centimeters, to use when comparing the bodies. If not specified, or a value of zero
        is specified, the internal modeling tolerance will be used.
        Returns true if the imprint calculation was successful.
        """
        return (bool(), BRepBody(), BRepBody(), [BRepFace()], [BRepFace()], [BRepEdge()], [BRepEdge()])
    def createWireFromCurves(self, curves: list[core.Curve3D], allowSelfIntersections: bool = False) -> tuple[BRepBody, list[BRepEdge]]:
        """
        Give an array of curve geometry objects, this method creates a new wire body.
        curves : An array containing the input Curve3D objects. These can be Arc3D, Circle3D, Ellipse3D, EllipticalArc3D or Line3D objects.
        edgeMap : An array of edges in the returned body. The order that the edges are in this collection is the
        same order as the original corresponding Curve3D object is in the input curves array. This allows you to
        map between the original input curve and created edge.
        allowSelfIntersections : Specifies if you want to allow self-intersection in the input curves or not.
        Returns the B-Rep body containing the created wire or null in the case of failure.
        """
        return (BRepBody(), [BRepEdge()])
    def createHelixWire(self, axisPoint: core.Point3D, axisVector: core.Vector3D, startPoint: core.Point3D, pitch: float, turns: float, taperAngle: float) -> BRepBody:
        """
        Creates a B-Rep body that contains a wire with a single edge that represents a helical curve.
        axisPoint : A Point3D object that defines a point along the axis of the helix.
        axisVector : A Vector3D object that defines the direction of the axis of the helix.
        startPoint : A Point3D that defines the start point of the helix. This is a point on the helix and defines the starting
        point of the helix. The distance of this point to the axis defines the starting radius of the helix.
        pitch : The pitch of the helix, or the distance between each of the turns, in centimeters.
        turns : The number of turns of the helix.
        taperAngle : The taper angle of the helix in radians.
        Returns a temporary BRepBody object that contains a wire body that is the shape of the
        specified helix. Return null if the creation failed.
        """
        return BRepBody()
    def createProjectedBodyOutline(self, body: BRepBody, projectionPlane: core.Plane, tolerance: float) -> tuple[BRepBody, bool]:
        """
        Computes the approximate outline of a body. The outline is the loops formed from projecting the non-occluded
        silhouette curves of the body onto a plane. The outline is returned as a temporary BRepBody consisting of
        planar BRepFace objects whose boundaries form the outline.
        
        The computed outline can be an approximation i.e. not precise. This is to make it useful in cases where robustness
        is more important than precision. For most cases, a precise analytical result is computed, but in some cases,
        the silhouette of a curved surface may be approximated by a series of straight lines. Even though it's an
        approximation you can control the tolerance of the approximation. A tighter tolerance will result in a longer compute time.
        body : Input BRepBody object to calculate the projected outline for.
        projectionPlane : Input Plane object that defines the position and orientation of the plane to project the body onto. The resulting body will lie on this plane.
        tolerance : Input value that specifies the tolerance in centimeters to use when approximating smooth surfaces with line segments. A negative tolerance
        uses the default value which is 0.001 times the length of the diagonal of the bounding box of the input body. A positive tolerance must be
        greater than the point tolerance (0.000001).
        containsApproximation : Output value that indicates if the result contains any silhouette curves that are an approximation of the true silhouette.
        Returns a BRepBody object consisting of planar BRepFace objects whose boundaries define the body's outline.
        """
        return (BRepBody(), bool())

class TessellateFeatureInput(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    This class defines the methods and properties that pertain to the definition of a tessellate
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> TessellateFeatureInput:
        return TessellateFeatureInput()
    @property
    def inputBodies(self) -> list[BRepBody]:
        """
        Gets and sets the input list of BReb bodies.
        """
        return [BRepBody()]
    @inputBodies.setter
    def inputBodies(self, value: list[BRepBody]):
        """
        Gets and sets the input list of BReb bodies.
        """
        pass
    @property
    def tessellateRefinementType(self) -> TessellateRefinementTypes:
        """
        Gets and sets the type of refinement, default value is MediumTessellateRefinementType.
        """
        return TessellateRefinementTypes()
    @tessellateRefinementType.setter
    def tessellateRefinementType(self, value: TessellateRefinementTypes):
        """
        Gets and sets the type of refinement, default value is MediumTessellateRefinementType.
        """
        pass
    @property
    def surfaceDeviation(self) -> core.ValueInput:
        """
        Specify maximum distance between the surface of the original
        body and the surface of the mesh body.
        Only valid if tessellateRefinementType is CustomTessellateRefinementType.
        """
        return core.ValueInput()
    @surfaceDeviation.setter
    def surfaceDeviation(self, value: core.ValueInput):
        """
        Specify maximum distance between the surface of the original
        body and the surface of the mesh body.
        Only valid if tessellateRefinementType is CustomTessellateRefinementType.
        """
        pass
    @property
    def normalDeviation(self) -> core.ValueInput:
        """
        Specify maximum angle between the normal vectors of each face on the mesh body.
        Only valid if tessellateRefinementType is CustomTessellateRefinementType.
        """
        return core.ValueInput()
    @normalDeviation.setter
    def normalDeviation(self, value: core.ValueInput):
        """
        Specify maximum angle between the normal vectors of each face on the mesh body.
        Only valid if tessellateRefinementType is CustomTessellateRefinementType.
        """
        pass
    @property
    def maximumEdgeLength(self) -> core.ValueInput:
        """
        Specify maximum length of any face edge on the mesh body.
        Only valid if tessellateRefinementType is CustomTessellateRefinementType.
        """
        return core.ValueInput()
    @maximumEdgeLength.setter
    def maximumEdgeLength(self, value: core.ValueInput):
        """
        Specify maximum length of any face edge on the mesh body.
        Only valid if tessellateRefinementType is CustomTessellateRefinementType.
        """
        pass
    @property
    def aspectRatio(self) -> core.ValueInput:
        """
        Specify ratio between the height and width of each face on the mesh body.
        Only valid if tessellateRefinementType is CustomTessellateRefinementType.
        """
        return core.ValueInput()
    @aspectRatio.setter
    def aspectRatio(self, value: core.ValueInput):
        """
        Specify ratio between the height and width of each face on the mesh body.
        Only valid if tessellateRefinementType is CustomTessellateRefinementType.
        """
        pass
    @property
    def createQuads(self) -> bool:
        """
        Creates quad faces on the mesh body where possible.
        """
        return bool()
    @createQuads.setter
    def createQuads(self, value: bool):
        """
        Creates quad faces on the mesh body where possible.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class TessellateFeatures(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Collection that provides access to all of the existing tessellate features in a component
    and supports the ability to create new tessellate features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> TessellateFeatures:
        return TessellateFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> TessellateFeature:
        return None
    def __iter__(self) -> Iterator[TessellateFeature]:
        return None
    def item(self, index: int) -> TessellateFeature:
        """
        Function that returns the specified tessellate feature 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 TessellateFeature()
    def createInput(self, bodies: list[BRepBody]) -> TessellateFeatureInput:
        """
        Creates a TessellateFeatureInput object. Use properties and methods on this object
        to define the tessellation you want to create and then use the add method, passing in
        the TessellateFeatureInput object.
        bodies : A array with BReb bodies in either a parametric or direct modeling design.
        Returns the newly created TessellateFeatureInput object or null if the creation failed.
        """
        return TessellateFeatureInput()
    def add(self, input: TessellateFeatureInput) -> TessellateFeature:
        """
        Creates a tessellate feature.
        input : A TessellateFeatureInput object that defines the desired tessellate feature. Use the createInput
        method to create a new TessellateFeatureInput object and then use methods on it
        (the TessellateFeatureInput object) to define the tessellate.
        Returns the newly created TessellateFeatureInput object or null if the creation failed.
        Returns nothing in the case where the feature is non-parametric.
        """
        return TessellateFeature()
    def itemByName(self, name: str) -> TessellateFeature:
        """
        Function that returns the specified Tessellate feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return TessellateFeature()
    @property
    def count(self) -> int:
        """
        The number of tessellate features in the collection.
        """
        return int()

class ThickenFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a Thicken feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ThickenFeatureInput:
        return ThickenFeatureInput()
    @property
    def inputFaces(self) -> core.ObjectCollection:
        """
        An ObjectCollection containing the face and/or patch bodies to thicken.
        """
        return core.ObjectCollection()
    @inputFaces.setter
    def inputFaces(self, value: core.ObjectCollection):
        """
        An ObjectCollection containing the face and/or patch bodies to thicken.
        """
        pass
    @property
    def thickness(self) -> core.ValueInput:
        """
        Gets and sets the ValueInput object that defines the thickness distance.
        """
        return core.ValueInput()
    @thickness.setter
    def thickness(self, value: core.ValueInput):
        """
        Gets and sets the ValueInput object that defines the thickness distance.
        """
        pass
    @property
    def isSymmetric(self) -> bool:
        """
        Gets and sets whether to add thickness symmetrically or only on one side of the face/s to thicken
        """
        return bool()
    @isSymmetric.setter
    def isSymmetric(self, value: bool):
        """
        Gets and sets whether to add thickness symmetrically or only on one side of the face/s to thicken
        """
        pass
    @property
    def operation(self) -> FeatureOperations:
        """
        Gets and sets the feature operation to perform.
        """
        return FeatureOperations()
    @operation.setter
    def operation(self, value: FeatureOperations):
        """
        Gets and sets the feature operation to perform.
        """
        pass
    @property
    def isChainSelection(self) -> bool:
        """
        Get and sets whether faces that are tangentially connected to the input faces will be included in the thicken feature.
        """
        return bool()
    @isChainSelection.setter
    def isChainSelection(self, value: bool):
        """
        Get and sets whether faces that are tangentially connected to the input faces will be included in the thicken feature.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass
    @property
    def creationOccurrence(self) -> Occurrence:
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the Thicken feature is created based on geometry (e.g. a profile and/or face(s))
        in another component AND (the Thicken feature) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI
        """
        return Occurrence()
    @creationOccurrence.setter
    def creationOccurrence(self, value: Occurrence):
        """
        In order for geometry to be transformed correctly, an Occurrence for creation needs to be
        specified when the Thicken feature is created based on geometry (e.g. a profile and/or face(s))
        in another component AND (the Thicken feature) is not in the root component.
        The CreationOccurrence is analogous to the active occurrence in the UI
        """
        pass
    @property
    def thickenType(self) -> ThickenTypes:
        """
        The thicken type used when creating a thicken.
        The default value is SharpThickenType.
        """
        return ThickenTypes()
    @thickenType.setter
    def thickenType(self, value: ThickenTypes):
        """
        The thicken type used when creating a thicken.
        The default value is SharpThickenType.
        """
        pass

class ThickenFeatures(core.Base):
    """
    Collection that provides access to all of the existing Thicken features in a component
    and supports the ability to create new Thicken features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ThickenFeatures:
        return ThickenFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ThickenFeature:
        return None
    def __iter__(self) -> Iterator[ThickenFeature]:
        return None
    def item(self, index: int) -> ThickenFeature:
        """
        Function that returns the specified Thicken feature 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 ThickenFeature()
    def createInput(self, inputFaces: core.ObjectCollection, thickness: core.ValueInput, isSymmetric: bool, operation: FeatureOperations, isChainSelection: bool = True) -> ThickenFeatureInput:
        """
        Creates a ThickenFeatureInput object. Use properties and methods on this object
        to define the Thicken feature you want to create and then use the Add method, passing in
        the ThickenFeatureInput object to create the feature.
        inputFaces : The faces or patch bodies to thicken. Faces need not be from the same component or body, nor do they need to be
        connected or touching one another.
        thickness : ValueInput object that defines the thickness.
        isSymmetric : A boolean value for setting whether to add thickness symmetrically or only on one side of the face/s to thicken
        operation : The feature operation to perform.
        isChainSelection : A boolean value for setting whether or not faces that are tangentially connected to
        the input faces (if any) will be included in the thicken. The default value is true.
        Returns the newly created ThickenFeatureInput object or null if the creation failed.
        """
        return ThickenFeatureInput()
    def add(self, input: ThickenFeatureInput) -> ThickenFeature:
        """
        Creates a new Thicken feature.
        input : A FeatureInput object that defines the desired Thicken feature. Use the createInput
        method to create a new ThickenFeatureInput object and then use methods on it
        (the ThickenFeatureInput object) to define the Thicken feature.
        Returns the newly created ThickenFeature object or null if the creation failed.
        """
        return ThickenFeature()
    def itemByName(self, name: str) -> ThickenFeature:
        """
        Function that returns the specified thicken feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return ThickenFeature()
    @property
    def count(self) -> int:
        """
        The number of Thicken features in the collection.
        """
        return int()

class ThreadDataQuery(core.Base):
    """
    This object provides methods to query the thread data contained in the XML files in ThreadData folder within the
    Fusion install folder. You can use the queried values to create a ThreadInfo object that is then used to
    create a thread feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ThreadDataQuery:
        return ThreadDataQuery()
    @staticmethod
    def create(isTapered: bool = False) -> ThreadDataQuery:
        """
        Static method to create a new ThreadDataQuery object. The ThreadDataQuery object is a utility object that
        provides methods to query for the valid thread definitions defined in Fusion. This object provides similar
        functionality as the Thread and Hole command dialogs to find valid thread types, designations and classes which can
        be used to create thread and tapped hole features.
        isTapered : Specifies if you want to query for standard or tapered holes.
        Returns a ThreadDataQuery object.
        """
        return ThreadDataQuery()
    def allSizes(self, threadType: str) -> list[str]:
        """
        Returns an array/list of all the available thread sizes for a given thread type. You can
        use the allThreadTypes property to get the available thread types.
        threadType : Specify the thread type.
        Returns the specified thread sizes or an empty array/list if an invalid thread type was specified.
        """
        return [str()]
    def allDesignations(self, threadType: str, size: str) -> list[str]:
        """
        returns an array/list of all the available thread designations for a thread type of a given size. Valid
        thread types and sizes and be obtained by using the allThreadTypes and allSizes functions.
        threadType : The thread type of the designation you want.
        size : The thread size of the designation you want.
        Returns the specified thread designations or empty array/list if an invalid thread type or size was specified.
        """
        return [str()]
    def allClasses(self, isInternal: bool, threadType: str, designation: str) -> list[str]:
        """
        Returns and array/list of all the available classes for a thread type of a given thread designation.
        isInternal : Indicates if the thread is an internal or external thread.
        threadType : The thread type of the thread class you want.
        designation : The thread designation of the thread class you want.
        Returns the specified thread classes or empty array/list if an invalid thread type or designation was specified.
        """
        return [str()]
    def threadTypeCustomName(self, threadType: str) -> str:
        """
        Method that returns the custom name for a given thread type. The custom name is the localized name
        of the thread type using the current language specified for Fusion.
        threadType : The thread type you want to get the custom name for.
        Returns the specified custom name or an empty string if an invalid thread type was specified.
        """
        return str()
    def threadTypeUnit(self, threadType: str) -> str:
        """
        Method that returns the unit for a given thread type.
        threadType : The thread type you want to get the thread unit type for.
        Returns the specified unit or an empty string if an invalid thread type was specified.
        """
        return str()
    def recommendThreadData(self, modelDiameter: float, isInternal: bool, threadType: str) -> tuple[bool, str, str]:
        """
        Method that gets the recommended thread data for a given cylinder diameter. This method
        is only valid for straight threads and will fail for tapered threads.
        modelDiameter : The diameter of the cylinder the thread will be placed on. The units are centimeters.
        isInternal : Indicates if the thread is an internal or external thread.
        threadType : Specifies the thread type to query the thread data.
        designation : The output thread designation.
        threadClass : The output thread class.
        Returns true if successful.
        """
        return (bool(), str(), str())
    @property
    def allThreadTypes(self) -> list[str]:
        """
        This method returns an array of all the available thread types (families). The type names are always
        English. This English name should be used in the other methods that take the type as an input argument.
        If you need to display the type name to the user, you can use the threadTypeCustomName method To get
        the localized name.
        """
        return [str()]
    @property
    def defaultInchThreadType(self) -> str:
        """
        Gets the default thread type for inch threads.
        """
        return str()
    @property
    def defaultMetricThreadType(self) -> str:
        """
        Gets the default thread type for metric threads.
        """
        return str()
    @property
    def isTapered(self) -> bool:
        """
        Returns if this ThreadDataQuery was created to query for standard or tapered threads.
        """
        return bool()

class ThreadFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a thread
    feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ThreadFeatureInput:
        return ThreadFeatureInput()
    @property
    def inputCylindricalFace(self) -> BRepFace:
        """
        Gets and sets the threaded face. In the case where there are multiple faces, only the first one is returned.
        Setting this results in a thread being applied to only a single face.
        It is recommended that you use the inputCylindricalfaces property in order to have full access to the collection of faces
        to be threaded.
        """
        return BRepFace()
    @inputCylindricalFace.setter
    def inputCylindricalFace(self, value: BRepFace):
        """
        Gets and sets the threaded face. In the case where there are multiple faces, only the first one is returned.
        Setting this results in a thread being applied to only a single face.
        It is recommended that you use the inputCylindricalfaces property in order to have full access to the collection of faces
        to be threaded.
        """
        pass
    @property
    def isModeled(self) -> bool:
        """
        Gets and sets if the thread is physical or cosmetic thread. A value of true indicates a physical thread.
        It defaults to false.
        """
        return bool()
    @isModeled.setter
    def isModeled(self, value: bool):
        """
        Gets and sets if the thread is physical or cosmetic thread. A value of true indicates a physical thread.
        It defaults to false.
        """
        pass
    @property
    def isFullLength(self) -> bool:
        """
        Gets and sets if this thread is the full length of the cylinder.
        It defaults to true.
        """
        return bool()
    @isFullLength.setter
    def isFullLength(self, value: bool):
        """
        Gets and sets if this thread is the full length of the cylinder.
        It defaults to true.
        """
        pass
    @property
    def threadLength(self) -> core.ValueInput:
        """
        Gets and sets the thread length.
        It is only used in the case where the isFullLength property is false.
        """
        return core.ValueInput()
    @threadLength.setter
    def threadLength(self, value: core.ValueInput):
        """
        Gets and sets the thread length.
        It is only used in the case where the isFullLength property is false.
        """
        pass
    @property
    def threadOffset(self) -> core.ValueInput:
        """
        Gets and sets the thread offset.
        The offset is the distance along the axis of the cylinder from the edge to the start of the thread.
        It is only used in the case where the isFullLength property is false.
        Returns nothing in the case where the feature is non-parametric.
        """
        return core.ValueInput()
    @threadOffset.setter
    def threadOffset(self, value: core.ValueInput):
        """
        Gets and sets the thread offset.
        The offset is the distance along the axis of the cylinder from the edge to the start of the thread.
        It is only used in the case where the isFullLength property is false.
        Returns nothing in the case where the feature is non-parametric.
        """
        pass
    @property
    def threadLocation(self) -> ThreadLocations:
        """
        Gets and sets which end of the cylinder the thread is measured from when it's not full
        length. The thread position and length can be measured from either the "low" or "high" end.
        You can determine the low and high end by using the Cylinder associated with the cylindrical
        BRepFace the thread is being added to. The BRepFace.geometry which will return a Cylinder object.
        The axis property of the Cylinder is a vector and the high end of the cylinder is at the far end
        of the cylinder with respect to the axis vector.
        
        This property is only used in the case where the isFullLength property is false and is otherwise ignored.
        It defaults to creating a thread at the high end.
        """
        return ThreadLocations()
    @threadLocation.setter
    def threadLocation(self, value: ThreadLocations):
        """
        Gets and sets which end of the cylinder the thread is measured from when it's not full
        length. The thread position and length can be measured from either the "low" or "high" end.
        You can determine the low and high end by using the Cylinder associated with the cylindrical
        BRepFace the thread is being added to. The BRepFace.geometry which will return a Cylinder object.
        The axis property of the Cylinder is a vector and the high end of the cylinder is at the far end
        of the cylinder with respect to the axis vector.
        
        This property is only used in the case where the isFullLength property is false and is otherwise ignored.
        It defaults to creating a thread at the high end.
        """
        pass
    @property
    def threadInfo(self) -> ThreadInfo:
        """
        Gets and sets the information that defines the thread.
        """
        return ThreadInfo()
    @threadInfo.setter
    def threadInfo(self, value: ThreadInfo):
        """
        Gets and sets the information that defines the thread.
        """
        pass
    @property
    def inputCylindricalFaces(self) -> core.ObjectCollection:
        """
        Gets and sets the cylindrical input faces.
        """
        return core.ObjectCollection()
    @inputCylindricalFaces.setter
    def inputCylindricalFaces(self, value: core.ObjectCollection):
        """
        Gets and sets the cylindrical input faces.
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class ThreadFeatures(core.Base):
    """
    Collection that provides access to all of the existing thread features in a component
    and supports the ability to create new thread features.
    
    The creation of a tapped hole also results in the creation of a thread feature. These
    thread features are also returned by this collection, even though they aren't present
    in the timeline and are represented by the hole feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ThreadFeatures:
        return ThreadFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ThreadFeature:
        return None
    def __iter__(self) -> Iterator[ThreadFeature]:
        return None
    def item(self, index: int) -> ThreadFeature:
        """
        Function that returns the specified thread feature 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 ThreadFeature()
    def createInput(self, inputCylindricalFaces: core.Base, threadInfo: ThreadInfo) -> ThreadFeatureInput:
        """
        Creates a ThreadFeatureInput object. This object is the API equivalent of the Thread feature dialog. It collects
        the required input and once fully defined you can pass this object to the ThreadFeatures.add method to create
        the thread feature.
        inputCylindricalFaces : A single cylindrical BRep face or a collection of cylindrical BRep faces to thread.
        A collection of faces must all be from either holes (for internal threading) or all from cylinders (for external threading).
        Both internal and external threads cannot be created in the same feature.
        The faces in a collection can come from different bodies or components.
        threadInfo : The ThreadInfo object that defines the type and size of the thread to create. When creating a thread, the type and size
        of the thread is specified by referencing thread information defined in one of the XML files in the ThreadData folder within
        the Fusion install folder. You can use the ThreadDataQuery object to query these XML files to find the specific thread you
        want to create. The ThreadDataQuery object can be obtained by using the ThreadFeatures.threadDataQuery property. You then use
        this information to create a ThreadInfo object using the ThreadFeatures.createThreadInfo method.
        Returns the newly created ThreadFeatureInput object or null/None if the creation failed.
        """
        return ThreadFeatureInput()
    def add(self, input: ThreadFeatureInput) -> ThreadFeature:
        """
        Creates a new thread feature.
        input : A ThreadFeatureInput object that defines the desired thread. Use the createInput
        method to create a new ThreadFeatureInput object and then use methods on it
        (the ThreadFeatureInput object) to define the thread.
        Returns the newly created ThreadFeature object or null if the creation failed.
        """
        return ThreadFeature()
    def itemByName(self, name: str) -> ThreadFeature:
        """
        Function that returns the specified thread feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return ThreadFeature()
    @property
    def count(self) -> int:
        """
        The number of thread features in the collection.
        """
        return int()

class ThreadInfo(core.Base):
    """
    This class defines the methods and properties that define the type and size of a thread. This object is used
    to create and query thread and tapped (straight and tapered) hole features. A new ThreadInfo object is
    created by using the ThreadInfo.create method. If the ThreadInfo object is obtained from
    an existing thread or hole feature, modifying the ThreadInfo object will modify the feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ThreadInfo:
        return ThreadInfo()
    @staticmethod
    def create(isTapered: bool, isInternal: bool, threadType: str, threadDesignation: str, threadClass: str, isRightHanded: bool) -> ThreadInfo:
        """
        This method creates a new ThreadInfo object that can be used to create a thread or tapped-hole feature.
        The ThreadInfo object defines the type and size of the thread to create. When creating a thread, the
        type and size of the thread are defined by specifying the thread type, designation, and class. Fusion
        uses this information to look up the full details of the thread in tables delivered with Fusion.
        The ThreadDataQuery object can be used to determine valid input for this information.
        
        The thread type implicitly defines if the thread is standard or tapered. Tapered threads can only be used
        when creating tapped holes and are not supported for thread features.
        isTapered : Input Boolean that indicates if the thread is straight or tapered.
        isInternal : Input Boolean that indicates if the thread is internal or external. A value of true indicates an internal thread.
        When the ThreadInfo is used to create a tapped hole, this value is ignored since it is always an internal thread.
        threadType : Input string that defines the thread type.
        threadDesignation : Input string that contains the thread designation.
        threadClass : Input string that defines the thread class. This argument is ignored for tapered threads, so an empty string can be used.
        isRightHanded : Input boolean that defines if the thread is right or left-handed.
        Returns the newly created ThreadInfo object or null if the creation failed.
        """
        return ThreadInfo()
    def redefine(self, isTapered: bool, isInternal: bool, threadType: str, threadDesignation: str, threadClass: str, isRightHanded: bool) -> bool:
        """
        Method that redefines an existing ThreadInfo object. This is typically used to change the thread of an existing
        thread or tapped hole.
        
        The ThreadInfo object defines the type and size of a thread by specifying the thread type, designation, and class.
        Fusion uses this information to look up the full details of the thread in tables delivered with Fusion. The
        ThreadDataQuery object can be used to determine valid input for this information.
        
        Tapered threads can only be used when creating or editing tapped holes and are not supported for thread features.
        isTapered : Input Boolean that indicates if the thread is straight or tapered.
        isInternal : Input Boolean that indicates if the thread is internal or external. A value of true indicates an internal thread.
        This value is ignored when the ThreadInfo is used for a tapped hole since they are always internal.
        threadType : Input string that defines the thread type.
        threadDesignation : Input string that defines the thread designation.
        threadClass : Input string that defines the thread class. This argument is ignored for tapered threads.
        isRightHanded : Input Boolean that specifies if the thread is straight or tapered.
        Returns true if the redefinition was successful.
        """
        return bool()
    @property
    def threadType(self) -> str:
        """
        Returns and sets the string that defines the thread type.
        """
        return str()
    @threadType.setter
    def threadType(self, value: str):
        """
        Returns and sets the string that defines the thread type.
        """
        pass
    @property
    def threadSize(self) -> str:
        """
        Returns the string that defines the thread size.
        """
        return str()
    @property
    def threadDesignation(self) -> str:
        """
        Returns and sets the string that defines the thread designation.
        """
        return str()
    @threadDesignation.setter
    def threadDesignation(self, value: str):
        """
        Returns and sets the string that defines the thread designation.
        """
        pass
    @property
    def threadClass(self) -> str:
        """
        Returns and sets the string that defines the thread class.
        """
        return str()
    @threadClass.setter
    def threadClass(self, value: str):
        """
        Returns and sets the string that defines the thread class.
        """
        pass
    @property
    def isInternal(self) -> bool:
        """
        Returns and sets if the thread is an internal or external thread. A value of true indicates an internal thread.
        It defaults to true.
        """
        return bool()
    @isInternal.setter
    def isInternal(self, value: bool):
        """
        Returns and sets if the thread is an internal or external thread. A value of true indicates an internal thread.
        It defaults to true.
        """
        pass
    @property
    def threadAngle(self) -> float:
        """
        Returns the value that defines the thread angle. The units are degrees.
        """
        return float()
    @property
    def threadPitch(self) -> float:
        """
        Returns the value that defines the thread pitch. The units are centimeters.
        """
        return float()
    @property
    def majorDiameter(self) -> float:
        """
        Returns the value that defines the major diameter. The units are centimeters.
        """
        return float()
    @property
    def minorDiameter(self) -> float:
        """
        Returns the value that defines the minor diameter. The units are centimeters.
        """
        return float()
    @property
    def pitchDiameter(self) -> float:
        """
        Returns the value that defines the pitch diameter. The units are centimeters.
        """
        return float()
    @property
    def isRightHanded(self) -> bool:
        """
        Gets and sets if the thread is right or left-handed thread. A value of true indicates a right-handed thread.
        It defaults to true.
        """
        return bool()
    @isRightHanded.setter
    def isRightHanded(self, value: bool):
        """
        Gets and sets if the thread is right or left-handed thread. A value of true indicates a right-handed thread.
        It defaults to true.
        """
        pass
    @property
    def isTapered(self) -> bool:
        """
        Indicates if this ThreadInfo object defines a standard or tapered thread.
        """
        return bool()
    @property
    def taperAngle(self) -> float:
        """
        Returns the angle of the tapered thread in centimeters.
        
        This is only valid when isTapered is true.
        """
        return float()
    @property
    def taperTapDrillDiameter(self) -> float:
        """
        Returns the Diameter of the tap drill required to create this tap.
        
        This is only valid when isTapered is true.
        """
        return float()
    @property
    def taperUsefulThreadLength(self) -> float:
        """
        Returns the useful length of threads for a tapered thread in centimeters.
        
        This is only valid when isTapered is true.
        """
        return float()
    @property
    def taperWrenchMakeupInternalDiameter(self) -> float:
        """
        The wrench makeup internal diameter for a taper pipe thread, also known as the effective thread diameter,
        is the diameter at the point where the thread engagement occurs when the pipe is tightened with a wrench.
        
        This is only valid when isTapered is true.
        """
        return float()
    @property
    def taperThreadHeight(self) -> float:
        """
        Returns the height of a tapered thread in centimeters.
        
        This is only valid when isTapered is true.
        """
        return float()

class Timeline(core.Base):
    """
    A collection of TimelineObjects in a parametric design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Timeline:
        return Timeline()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> TimelineObject:
        return None
    def __iter__(self) -> Iterator[TimelineObject]:
        return None
    def moveToBeginning(self) -> bool:
        """
        Moves the marker to the beginning of the timeline.
        Returns true if the move is successful
        """
        return bool()
    def moveToEnd(self) -> bool:
        """
        Moves the marker to the end of the timeline.
        Returns true if the move is successful
        """
        return bool()
    def movetoNextStep(self) -> bool:
        """
        Moves the marker to the next step in the timeline.
        Returns true if the move is successful
        """
        return bool()
    def moveToPreviousStep(self) -> bool:
        """
        Moves the marker to the previous step in the timeline.
        Returns true if the move is successful
        """
        return bool()
    def play(self) -> bool:
        """
        Plays the timeline beginning at the current position of the marker.
        Returns true if playing the timeline was successful
        """
        return bool()
    def item(self, index: int) -> TimelineObject:
        """
        Function that returns the specified item in the timeline using an index into the collection.
        The items are returned in the order they appear in the timeline.
        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 TimeLineObject or null if an invalid index was specified. A TimeLineObject
        represents both a simple timeline object like a feature or sketch, but is also the base class
        for the TimelineGroup object. This means the this method can return a TimelineObject or a
        TimelineGroup.
        """
        return TimelineObject()
    def deleteAllAfterMarker(self) -> bool:
        """
        Deletes all objects in the timeline that are after the current position of the marker.
        Returns true if successful.
        """
        return bool()
    @property
    def markerPosition(self) -> int:
        """
        Gets and sets the current position of the marker where
        0 is at the beginning of the timeline and the value of Timeline.count is the end of the
        timeline.
        """
        return int()
    @markerPosition.setter
    def markerPosition(self, value: int):
        """
        Gets and sets the current position of the marker where
        0 is at the beginning of the timeline and the value of Timeline.count is the end of the
        timeline.
        """
        pass
    @property
    def count(self) -> int:
        """
        Returns the number of items in the collection.
        """
        return int()
    @property
    def timelineGroups(self) -> TimelineGroups:
        """
        Returns the collection of groups within the timeline.
        """
        return TimelineGroups()

class TimelineGroups(core.Base):
    """
    Provides access to the time line groups within a design and provides
    methods to create new groups.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> TimelineGroups:
        return TimelineGroups()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> TimelineGroup:
        return None
    def __iter__(self) -> Iterator[TimelineGroup]:
        return None
    def add(self, startIndex: int, endIndex: int) -> TimelineGroup:
        """
        Creates a new group within the timeline. The sequential set of items defined
        by the start and end indices will be included in the group. A group cannot contains
        another group so none of the items being grouped can be a group of this will fail.
        startIndex : The index of the first item in the timeline that will be added to the group.
        endIndex : The index of the last item in the timeline that will be added to the group.
        Returns the created TimelineGroup object or null in the case of failure.
        """
        return TimelineGroup()
    def item(self, index: int) -> TimelineGroup:
        """
        Function that returns the specified timeline group 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 TimelineGroup()
    @property
    def count(self) -> int:
        """
        Returns the number of items in the collection.
        """
        return int()

class TimelineObject(core.Base):
    """
    Represents an object in the timeline.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> TimelineObject:
        return TimelineObject()
    def rollTo(self, rollBefore: bool) -> bool:
        """
        Rolls the timeline by repositioning the marker to either before or after this object.
        This method will fail if this is a timelineGroup object and the group is expanded.
        rollBefore : Set rollBefore to true to reposition the marker before this object or to false to
        reposition the marker after this object
        Returns true if the move was successful
        """
        return bool()
    def canReorder(self, beforeIndex: int = -1) -> bool:
        """
        Checks to see if this object can be reordered to the specified position.
        The default value of -1 indicates the end of the timeline.
        
        This method will fail if this is a timelineGroup object and the group is expanded.
        beforeIndex : The index number of the position in the timeline to check
        Returns true if the object can be reordered to the specified position
        """
        return bool()
    def reorder(self, beforeIndex: int = -1) -> bool:
        """
        Reorders this object to the position specified.
        The default value of -1 indicates the end of the timeline.
        
        beforeIndex : The index number of the position in the timeline to place this object before
        Returns true if the reorder operation was successful
        This method will fail and return false if this is a timelineGroup object and the
        group is expanded.
        """
        return bool()
    @property
    def isSuppressed(self) -> bool:
        """
        Gets and sets if this object is suppressed.
        """
        return bool()
    @isSuppressed.setter
    def isSuppressed(self, value: bool):
        """
        Gets and sets if this object is suppressed.
        """
        pass
    @property
    def parentGroup(self) -> TimelineGroup:
        """
        Returns the parent group, if this object is part of a group.
        Returns null if this object is not part of a group.
        """
        return TimelineGroup()
    @property
    def index(self) -> int:
        """
        Returns the position of this item within the timeline where
        the first item has an index of 0.
        
        This property can return -1 in the two cases where this object
        is not currently represented in the timeline. The two cases are:
        
        1. When this is a TimelineGroup object and the group is expanded.
        
        2. When this object is part of a group and the group is collapsed.
        """
        return int()
    @property
    def isRolledBack(self) -> bool:
        """
        Indicates if this item is currently not being computed
        because it has been rolled back.
        
        If this is a timelineGroup object and the group is expanded
        the value of this property should be ignored.
        """
        return bool()
    @property
    def entity(self) -> core.Base:
        """
        Returns the entity associated with this timeline object.
        Edit operations can be performed by getting the object
        representing the associated entity and using the methods
        and properties on that entity to make changes.
        
        Returns null if this TimelineObject represents a TimelineGroup object,
        since it does not have an associated entity.
        """
        return core.Base()
    @property
    def isGroup(self) -> bool:
        """
        Indicates if this TimelineObject represents a group. If True you can
        operate on this object as a TimelineGroup object.
        """
        return bool()
    @property
    def name(self) -> str:
        """
        Gets and sets the name of this timeline object. This name is shared by the object
        the timeline object represents. For example, if the TimelineObject represents a Sketch
        and you change the name using the TimelineObject, the name of the sketch in the browser
        is also changed. The reverse is also true. Setting the name of an object; sketch, feature
        construction geometry, etc, will also change the name of the associated node in the timeline.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name of this timeline object. This name is shared by the object
        the timeline object represents. For example, if the TimelineObject represents a Sketch
        and you change the name using the TimelineObject, the name of the sketch in the browser
        is also changed. The reverse is also true. Setting the name of an object; sketch, feature
        construction geometry, etc, will also change the name of the associated node in the timeline.
        """
        pass
    @property
    def healthState(self) -> FeatureHealthStates:
        """
        Returns the current health state of the object associated with this TimelineObject.
        """
        return FeatureHealthStates()
    @property
    def errorOrWarningMessage(self) -> str:
        """
        Returns the error or warning message in the case where the healthState property returns either
        WarningFeatureHealthState or ErrorFeatureHealthState. Otherwise this property returns an empty string.
        """
        return str()

class TorusFeatures(core.Base):
    """
    Collection that provides access to all of the existing torus features in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> TorusFeatures:
        return TorusFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> TorusFeature:
        return None
    def __iter__(self) -> Iterator[TorusFeature]:
        return None
    def item(self, index: int) -> TorusFeature:
        """
        Function that returns the specified torus feature 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 TorusFeature()
    def itemByName(self, name: str) -> TorusFeature:
        """
        Function that returns the specified torus feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return TorusFeature()
    @property
    def count(self) -> int:
        """
        The number of torus features in the collection.
        """
        return int()

class TriangleMesh(core.Base):
    """
    The TriangleMesh object represents all of the data defining
    a triangular mesh.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> TriangleMesh:
        return TriangleMesh()
    @property
    def nodeCount(self) -> int:
        """
        Returns the total number of nodes in the mesh.
        """
        return int()
    @property
    def nodeCoordinatesAsDouble(self) -> list[float]:
        """
        Returns the node coordinates as an array of doubles where
        they are the x, y, z components of each coordinate.
        """
        return [float()]
    @property
    def nodeCoordinatesAsFloat(self) -> list[float]:
        """
        Returns the node coordinates as an array of floats where
        they are the x, y, z components of each coordinate.
        """
        return [float()]
    @property
    def nodeCoordinates(self) -> list[core.Point3D]:
        """
        Returns the node coordinates as an array of Point3D objects.
        """
        return [core.Point3D()]
    @property
    def triangleCount(self) -> int:
        """
        Returns the number of triangles in the mesh.
        """
        return int()
    @property
    def normalVectorsAsDouble(self) -> list[float]:
        """
        Returns the normal vectors of the mesh where there is a normal
        vector at each node. The normals are returned as an array
        of doubles where they are the x, y, z components of each vector.
        """
        return [float()]
    @property
    def normalVectorsAsFloat(self) -> list[float]:
        """
        Returns the normal vectors of the mesh where there is a normal
        vector at each node. The normals are returned as an array
        of floats where they are the x, y, z components of each vector.
        """
        return [float()]
    @property
    def normalVectors(self) -> list[core.Vector3D]:
        """
        Returns the normal vectors of the mesh where there is a normal
        vector at each node. The normals are returned as an array
        of Vector3D objects.
        """
        return [core.Vector3D()]
    @property
    def nodeIndices(self) -> list[int]:
        """
        Returns an array of indices that define which nodes are used
        for each triangle. This is used to look-up the coordinates in the
        NodeCoordinates array to get the three coordinates of each triangle.
        """
        return [int()]
    @property
    def textureCoordinatesAsDouble(self) -> list[float]:
        """
        Returns the texture coordinates used when mapping a texture to
        this face. The coordinates are returned as an array of
        doubles where they are the u and v components of each
        coordinate as defined in parametric space. There is a texture
        coordinate for each vertex in the face mesh.
        """
        return [float()]
    @property
    def textureCoordinatesAsFloat(self) -> list[float]:
        """
        Returns the texture coordinates used when mapping a texture to
        this face. The coordinates are returned as an array of
        floats where they are the u and v components of each
        coordinate as defined in parametric space. There is a texture
        coordinate for each vertex in the face mesh.
        """
        return [float()]
    @property
    def textureCoordinates(self) -> list[core.Point2D]:
        """
        Returns the texture coordinates used when mapping a texture to
        this face. The coordinates are returned as an array of
        Point2D objects where the x and y properties of the point are
        u and v coordinates as defined in parametric space. There is
        a texture coordinate for each vertex in the face mesh.
        """
        return [core.Point2D()]
    @property
    def surfaceTolerance(self) -> float:
        """
        Returns the surface tolerance that was used to generate this mesh.
        This is most useful when using display meshes that have already
        been calculated.
        """
        return float()

class TriangleMeshCalculator(core.Base):
    """
    Used to calculate new meshes for a B-Rep or T-Spline using defined criteria.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> TriangleMeshCalculator:
        return TriangleMeshCalculator()
    def setQuality(self, triangleMeshQuality: TriangleMeshQualityOptions) -> bool:
        """
        This is a simplified way to set the various settings that control the resulting mesh. When used it automatically
        adjusts all of the property values appropriately. It does this for the given geometry by computing its bounding
        box diameter. Then the surface tolerance is calculated as shown below where the meshLOD is the "Level of Detail" and
        is described in more detail below. The diameter is the bounding box diameter.
        
          double nodeApproximateSize = std::pow(2.0, meshLOD);
          double fracTol = 1.0 / nodeApproximateSize;
          surfaceTolerance = fracTol * diameter;
        
        triangleMeshQuality : The mesh quality is specified by using an item from the enum list where the following items result
        in a corresponding mesh LOD that's used in the equation above.
        
        LowQualityTriangleMesh: 8
        NormalQualityTriangleMesh: 11
        HighQualityTriangleMesh: 13
        VeryHighQualityTriangleMesh: 15
        Returns true if setting the quality was successful.
        """
        return bool()
    def calculate(self) -> TriangleMesh:
        """
        Calculates a new triangle mesh based on the current settings.
        Returns the new TriangleMesh object or null in the case where the calculation failed.
        """
        return TriangleMesh()
    @property
    def surfaceTolerance(self) -> float:
        """
        Specifies the maximum distance that the mesh can deviate from the smooth surface.
        The value is in centimeters. Smaller values can result in a much greater number
        of facets being returned and will require more processing time to calculate.
        """
        return float()
    @surfaceTolerance.setter
    def surfaceTolerance(self, value: float):
        """
        Specifies the maximum distance that the mesh can deviate from the smooth surface.
        The value is in centimeters. Smaller values can result in a much greater number
        of facets being returned and will require more processing time to calculate.
        """
        pass
    @property
    def maxSideLength(self) -> float:
        """
        Specifies the maximum side length of any triangle in the mesh. A value of 0 (the default)
        indicates that no maximum length is specified. The value is specified in centimeters.
        """
        return float()
    @maxSideLength.setter
    def maxSideLength(self, value: float):
        """
        Specifies the maximum side length of any triangle in the mesh. A value of 0 (the default)
        indicates that no maximum length is specified. The value is specified in centimeters.
        """
        pass
    @property
    def maxAspectRatio(self) -> float:
        """
        Specifies the maximum length to height ratio that a triangle can have.
        This helps to avoid long skinny triangles. A value of 0 (the default)
        indicates that no maximum aspect ratio is specified.
        """
        return float()
    @maxAspectRatio.setter
    def maxAspectRatio(self, value: float):
        """
        Specifies the maximum length to height ratio that a triangle can have.
        This helps to avoid long skinny triangles. A value of 0 (the default)
        indicates that no maximum aspect ratio is specified.
        """
        pass
    @property
    def maxNormalDeviation(self) -> float:
        """
        Specifies the maximum deviation between adjacent vertex normals.
        This value is the maximum angle allowed between normals and is
        specified in radians. A value of 0 (the default) indicates that no normal deviation is specified.
        """
        return float()
    @maxNormalDeviation.setter
    def maxNormalDeviation(self, value: float):
        """
        Specifies the maximum deviation between adjacent vertex normals.
        This value is the maximum angle allowed between normals and is
        specified in radians. A value of 0 (the default) indicates that no normal deviation is specified.
        """
        pass
    @property
    def parentMeshManager(self) -> MeshManager:
        """
        Returns the parent MeshManager object.
        """
        return MeshManager()

class TriangleMeshList(core.Base):
    """
    Provides access to a set of triangle meshes.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> TriangleMeshList:
        return TriangleMeshList()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> TriangleMesh:
        return None
    def __iter__(self) -> Iterator[TriangleMesh]:
        return None
    def item(self, index: int) -> TriangleMesh:
        """
        Returns the specified triangle meshes.
        index : The index of the mesh to return where the first item has an index of 0.
        Returns the specified mesh or null in the case of an invalid index.
        """
        return TriangleMesh()
    @property
    def bestMesh(self) -> TriangleMesh:
        """
        Returns the mesh with the tightest surface tolerance. This can return null
        in the case the list is empty, i.e., Count is 0.
        """
        return TriangleMesh()
    @property
    def count(self) -> int:
        """
        Returns the number of meshes in the collection.
        """
        return int()

class TrimFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of a TrimFeatureInput.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> TrimFeatureInput:
        return TrimFeatureInput()
    def cancel(self) -> bool:
        """
        To determine the possible boundaries and allow you to choose which cells to keep, the trim
        feature does a partial compute when the input object is created. To do this it starts a trim
        feature transaction and completes the transaction when you call the add method. If you don't
        call the add method it leaves Fusion in a bad state and there will be undo problems and it
        will possibly crash. If you have created a TrimFeatureInput object and don't want to finish
        the feature creation, you need to call the cancel method on the TrimFeatureInput object to
        safely abort the current trim feature transaction.
        """
        return bool()
    @property
    def bRepCells(self) -> BRepCells:
        """
        Returns the collection of the valid cells that have been calculated based on the trim tool.
        Use this collection to specify which cells to trim away.
        """
        return BRepCells()
    @property
    def trimTool(self) -> core.Base:
        """
        Gets and sets the entity (a patch body, B-Rep face, construction plane or sketch curve) that intersects the trim tool
        """
        return core.Base()
    @trimTool.setter
    def trimTool(self, value: core.Base):
        """
        Gets and sets the entity (a patch body, B-Rep face, construction plane or sketch curve) that intersects the trim tool
        """
        pass
    @property
    def targetBaseFeature(self) -> BaseFeature:
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        return BaseFeature()
    @targetBaseFeature.setter
    def targetBaseFeature(self, value: BaseFeature):
        """
        When creating a feature that is owned by a base feature, set this property to the
        base feature you want to associate the new feature with. By default, this is null,
        meaning it will not be associated with a base feature.
        
        Because of a current limitation, if you want to create a feature associated with a base
        feature, you must set this property AND call the startEdit method of the base feature,
        create the feature, and then call the finishEdit method of the base feature. The base
        feature must be in an "edit" state to be able to add any additional items to it.
        """
        pass

class TrimFeatures(core.Base):
    """
    Collection that provides access to all of the existing trim features in a component
    and supports the ability to create new trim features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> TrimFeatures:
        return TrimFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> TrimFeature:
        return None
    def __iter__(self) -> Iterator[TrimFeature]:
        return None
    def item(self, index: int) -> TrimFeature:
        """
        Function that returns the specified trim feature 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 TrimFeature()
    def createInput(self, trimTool: core.Base) -> TrimFeatureInput:
        """
        Creates a TrimFeatureInput object. Use properties and methods on this object
        to define the trim feature you want to create and then use the Add method, passing in
        the TrimFeatureInput object.
        
        To determine the possible boundaries and allow you to choose which cells to keep, the trim
        feature does a partial compute when the input object is created. To do this it starts a trim
        feature transaction and completes the transaction when you call the add method. If you don't call
        the add method to finish the transaction it leaves Fusion in a bad state and there will be undo
        problems and possibly a crash. If you have created a TrimFeatureInput object and don't want to
        finish the feature creation, you need to call the cancel method on the TrimFeatureInput object to
        safely abort the current boundary fill transaction.
        trimTool : A patch body, B-Rep face, construction plane or sketch curve that intersects the surface or surfaces to be trimmed
        Returns the newly created TrimFeatureInput object or null if the creation failed.
        """
        return TrimFeatureInput()
    def add(self, input: TrimFeatureInput) -> TrimFeature:
        """
        Creates a new trim feature.
        input : A TrimFeatureInput object that defines the desired trim feature. Use the createInput
        method to create a new TrimFeatureInput object and then use methods on it
        (the TrimFeatureInput object) to define the trim feature.
        Returns the newly created TrimFeature object or null if the creation failed.
        """
        return TrimFeature()
    def itemByName(self, name: str) -> TrimFeature:
        """
        Function that returns the specified trim feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return TrimFeature()
    @property
    def count(self) -> int:
        """
        The number of trim features in the collection.
        """
        return int()

class TSplineBodies(core.Base):
    """
    A collection of TSpline bodies.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> TSplineBodies:
        return TSplineBodies()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> TSplineBody:
        return None
    def __iter__(self) -> Iterator[TSplineBody]:
        return None
    def item(self, index: int) -> TSplineBody:
        """
        Function that returns the specified T-Spline body 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 TSplineBody()
    def itemByName(self, name: str) -> TSplineBody:
        """
        Returns a TSplineBody by specifying the name of the body as seen in the browser.
        name : The name of the body, as seen in the browser. This is case sensitive.
        Returns the specified item or null if a body with that name was not found.
        """
        return TSplineBody()
    def addByTSMFile(self, tsmFilename: str) -> TSplineBody:
        """
        Creates a new TSplineBody by reading in a TSM file from disk.
        tsmFilename : The full filename of the TSM file on disk.
        Returns the newly created TSplineBody if successful or null in the case of failure.
        """
        return TSplineBody()
    def addByTSMDescription(self, tsmDescription: str) -> TSplineBody:
        """
        Creates a new TSplineBody using the T-Spline description provided by the input
        string which contains TSM formatted text.
        tsmDescription : A string that contains a T-Spline description in TSM form.
        Returns the newly created TSplineBody if successful or null in the case of failure.
        """
        return TSplineBody()
    @property
    def count(self) -> int:
        """
        The number of bodies in the collection.
        """
        return int()

class TSplineBody(core.Base):
    """
    A TSpline body.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> TSplineBody:
        return TSplineBody()
    def getTSMDescription(self) -> str:
        """
        Returns the T-Spline body as a string in the form of a TSM description.
        Returns the string formatted using the TSM format.
        """
        return str()
    def saveAsTSMFile(self, filename: str) -> bool:
        """
        Saves the body as a TSM file.
        filename : The full filename of the file to save the body to. If the file already exists,
        it will be overwritten.
        Returns true if the file was successfully created.
        """
        return bool()
    @property
    def name(self) -> str:
        """
        Gets and sets the name of the body. If setting this property, there is a side effect
        that the B-Rep body created from this T-Spline body is also renamed.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name of the body. If setting this property, there is a side effect
        that the B-Rep body created from this T-Spline body is also renamed.
        """
        pass
    @property
    def parentFormFeature(self) -> FormFeature:
        """
        Returns the owning form feature.
        """
        return FormFeature()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the TSplineBody object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same T-Spline body.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as a way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        """
        return str()
    @property
    def textureMapControl(self) -> core.TextureMapControl:
        """
        Returns the TextureMapControl object associated with this body when there is an
        appearance assigned to the body that has a texture associated with it. If there
        isn't a texture, this property will return null. If there is a texture, you can
        use the returned object to query and modify how the texture is applied to the body.
        """
        return core.TextureMapControl()

class UnfoldFeatures(core.Base):
    """
    Collection that provides access to all of the existing unfold features in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> UnfoldFeatures:
        return UnfoldFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> UnfoldFeature:
        return None
    def __iter__(self) -> Iterator[UnfoldFeature]:
        return None
    def item(self, index: int) -> UnfoldFeature:
        """
        Function that returns the specified unfold feature 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 UnfoldFeature()
    def itemByName(self, name: str) -> UnfoldFeature:
        """
        Function that returns the specified unfold feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return UnfoldFeature()
    @property
    def count(self) -> int:
        """
        The number of unfold features in the collection.
        """
        return int()

class UnstitchFeatures(core.Base):
    """
    Collection that provides access to all of the existing Unstitch features in a component
    and supports the ability to create new Unstitch features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> UnstitchFeatures:
        return UnstitchFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> UnstitchFeature:
        return None
    def __iter__(self) -> Iterator[UnstitchFeature]:
        return None
    def item(self, index: int) -> UnstitchFeature:
        """
        Function that returns the specified Unstitch feature 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 UnstitchFeature()
    def add(self, faces: core.ObjectCollection, isChainSelection: bool = True) -> UnstitchFeature:
        """
        Creates a new Unstitch feature.
        faces : The faces and/or bodies to Unstitch. Individual faces can be unstitched from solid and/or patch bodies. The faces being unstitched
        need not all come from the same body.
        isChainSelection : A boolean value for setting whether or not faces that are connected and adjacent to
        the input faces will be included in the selection. The default value is true.
        Returns the newly created UnstitchFeature object or null if the creation failed.
        """
        return UnstitchFeature()
    def itemByName(self, name: str) -> UnstitchFeature:
        """
        Function that returns the specified unstitch feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return UnstitchFeature()
    @property
    def count(self) -> int:
        """
        The number of Unstitch features in the collection.
        """
        return int()

class UntrimFeatureInput(core.Base):
    """
    This class defines the methods and properties that pertain to the definition of an Untrim feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> UntrimFeatureInput:
        return UntrimFeatureInput()
    def setLoopsFromFaces(self, faces: list[BRepFace], untrimLoopType: UntrimLoopTypes) -> bool:
        """
        Set the loops to be removed from a set of faces.
        faces : An array of BRepFace objects that will have the loops of the specified types removed.
        Only loops that do not have a connected face can be removed (the edges in the loop have a single face).
        The array can only contain faces from surface bodies, (the isSolid property of the BRepBody returns false).
        untrimLoopType : The loop type to be untrimmed (AllLoopUntrimType, InternalLoopUntrimType, or ExternalLoopUntrimType).
        Returns whether the operation was successful
        """
        return bool()
    def setLoops(self, loops: list[BRepLoop]) -> bool:
        """
        Set the loops to be removed.
        loops : Redefines this input to remove loops from the body. If faces were previously defined, that information will be lost.
        Only loops that do not have a connected face can be removed (the edges in the loop have a single face)
        The array can only contain loops from surface bodies, (the isSolid property of the BRepBody returns false).
        Returns whether the operation was successful
        """
        return bool()
    @property
    def untrimLoopType(self) -> UntrimLoopTypes:
        """
        Gets the loop type to be untrimmed. This is only used when faces are being untrimmed and is ignored for loops.
        """
        return UntrimLoopTypes()
    @property
    def facesToUntrim(self) -> list[BRepFace]:
        """
        Gets the face objects to untrim.
        Returns null/None in the case where loops are specified instead of faces.
        """
        return [BRepFace()]
    @property
    def loopsToUntrim(self) -> list[BRepLoop]:
        """
        Gets the loop objects to untrim.
        Returns null/None in the case where faces are specified instead of loops
        """
        return [BRepLoop()]
    @property
    def extensionDistance(self) -> core.ValueInput:
        """
        Gets and sets the ValueInput object that defines the extension distance applied to faces when an
        external boundary is removed.
        """
        return core.ValueInput()
    @extensionDistance.setter
    def extensionDistance(self, value: core.ValueInput):
        """
        Gets and sets the ValueInput object that defines the extension distance applied to faces when an
        external boundary is removed.
        """
        pass

class UntrimFeatures(core.Base):
    """
    Collection that provides access to all of the existing Untrim features in a component
    and supports the ability to create new Untrim features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> UntrimFeatures:
        return UntrimFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> UntrimFeature:
        return None
    def __iter__(self) -> Iterator[UntrimFeature]:
        return None
    def item(self, index: int) -> UntrimFeature:
        """
        Function that returns the specified Untrim feature 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 UntrimFeature()
    def createInputFromFaces(self, faces: list[BRepFace], untrimLoopType: UntrimLoopTypes, extensionDistance: core.ValueInput = None) -> UntrimFeatureInput:
        """
        Creates an UntrimFeatureInput object that defines the input needed to create an untrim feature. Use the input
        object to define the input to create the desired feature and then use the Add method, passing in the UntrimFeatureInput object.
        faces : An array of BRepFace objects that will have the loops of the specified type removed.
        Only loops that do not have a connected face can be removed (the edges in the loop have a single face).
        The array can only contain faces from surface bodies, (the isSolid property of the BRepBody returns false).
        untrimLoopType : The loop type to be untrimmed (AllLoopUntrimType, InternalLoopUntrimType, or ExternalLoopUntrimType).
        extensionDistance : If the untrim loop type is AllLoopUntrimType or ExternalLoopUntrimType the untrimmed faces can be extended by a specified distance.
        Returns the newly created UntrimFeatureInput object or null if the creation failed.
        """
        return UntrimFeatureInput()
    def createInputFromLoops(self, loops: list[BRepLoop], extensionDistance: core.ValueInput = None) -> UntrimFeatureInput:
        """
        Creates an UntrimFeatureInput object that defines the input needed to create an untrim feature. Use the input
        object to define the input to create the desired feature and then use the Add method, passing in the UntrimFeatureInput object.
        loops : Input the entities that define loops to remove.
        Only loops that do not have a connected face can be removed (the edges in the loop have a single face)
        The array can only contain loops from surface bodies, (the isSolid property of the BRepBody returns false).
        extensionDistance : If an external boundary is removed the untrimmed face can be extended by a specified distance.
        Returns the newly created UntrimFeatureInput object or null if the creation failed.
        """
        return UntrimFeatureInput()
    def add(self, input: UntrimFeatureInput) -> UntrimFeature:
        """
        Creates a new Untrim feature.
        input : An UntrimFeatureInput object that defines the desired Untrim feature. Use the createInput
        method to create a new UntrimFeatureInput object and then use methods on it
        (the UntrimFeatureInput object) to define the desired options for the Untrim feature.
        Returns the newly created UntrimFeature object or null if the creation failed.
        """
        return UntrimFeature()
    def itemByName(self, name: str) -> UntrimFeature:
        """
        Function that returns the specified Untrim feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return UntrimFeature()
    @property
    def count(self) -> int:
        """
        The number of Untrim features in the collection.
        """
        return int()

class UserParameters(core.Base):
    """
    Provides access to the User Parameters within a design and provides
    methods to create new user parameters.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> UserParameters:
        return UserParameters()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> UserParameter:
        return None
    def __iter__(self) -> Iterator[UserParameter]:
        return None
    def item(self, index: int) -> UserParameter:
        """
        Function that returns the specified User 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 UserParameter()
    def itemByName(self, name: str) -> UserParameter:
        """
        Function that returns the specified User Parameter using the name of the parameter
        as it is displayed in the parameters dialog.
        name : The name of the User Parameter as it is displayed in the parameters dialog
        Returns the specified item or null if an invalid name was specified.
        """
        return UserParameter()
    def add(self, name: str, value: core.ValueInput, units: str, comment: str) -> UserParameter:
        """
        Adds a new user parameter to the collection.
        name : The name of the parameter. This is the name shown in the parameters dialog
        value : ValueInput object that specifies the value of the parameter. If the ValueInput was created using a real,
        the value will be interpreted using the internal unit for the unit type specified by the "units" argument.
        For example, if the ValueInput was created using the real value 5 and the input to the "units" argument is
        any valid length unit, the value will be interpreted as 5 centimeters since centimeters is the internal unit
        for lengths. If the "units" argument is a valid angle unit the value will be interpreted as 5 radians.
        
        If the ValueInput was created using a string, the string is used as-is for the expression of the parameter.
        For value parameters, this means if there are units as part of the string, it must evaluate to the same unit
        type as that specified by the "units" argument and if no units are specified it will use the current default
        units specified for the current document. For example, if the ValueInput was created with the string "5 in",
        then the "units" argument must define any valid length so they are compatible. If the ValueInput was created
        with the string "5", any unit type can be used and the result will be 5 of that unit.
        
        If the "units" argument is "Text" then a text parameter will be created using the value provided as the expression.
        
        When using a ValueInput created using a string, it's the same as creating a parameter in the user-interface.
        You can specify any valid expression, i.e. "5", "5 in", "5 in / 2", "5 + Length", etc. and you can choose
        from many different types of units. The only requirement is that the units must match in type. For example,
        they must both be lengths, or they must both be angles.
        
        When creating a Boolean parameter, you should use the createByBoolean method of the ValueInput object.
        units : The units to use for the value of the parameter. The use of any of the measurement units will result in the
        creation of a numeric parameter. The units specified must match the units specified (if any) in the ValueInput object.
        
        To create a parameter with no units, you can specify an empty string as the units, which will also create a
        numeric parameter. To create a text parameter, use "Text" as the unit type.
        comment : The comment to display in the parameters dialog. Specify an empty string ("") for no comment
        Returns the newly created UserParameter or null if the creation failed.
        """
        return UserParameter()
    def asArray(self) -> list[UserParameter]:
        """
        Returns the user parameters in the design as an array.
        Returns an array of the user parameters in the design.
        """
        return [UserParameter()]
    def exportUserParameters(self, userParameterArray: list[UserParameter], filename: str) -> bool:
        """
        Function that exports a list of user parameters to a csv file.
        userParameterArray : The array of user parameters to export.
        filename : The full filename (path and file) of the file to write the parameters to.
        Returns whether the export was successful.
        """
        return bool()
    def importUserParameters(self, filename: str) -> bool:
        """
        Function that imports a list of user parameters from a csv file.
        
        The format of the csv file is as follows:
        
        - It must have at least two rows - Header followed by a row of parameters.
        
        - It must be encoded in UTF8 format.
        
        - It must contain at least six columns - name, unit, expression, value, comment, and favorite,
        where favorite is either true or false.
        
        - The columns must only have a comma delimiter.
        
        - Any locale will work but no thousands separators.
        
        - The expression column supports double quotes.
        
        - The comment can either be single line or multi-line. If multi-line, it must be in double quotes.
        
        Here is an example of a csv file with two rows:
        
        Name,Unit,Expression,Value,Comments,Favorite
        p1,mm,32 mm,32,the first parameter,FALSE
        
        The function exportUserParameters could be used to see what a csv file looks like.
        filename : The full filename (path and file) of the file to read the parameters from.
        Returns whether the import was successful.
        """
        return bool()
    @property
    def count(self) -> int:
        """
        Returns the number of parameters in the collection.
        """
        return int()
    @property
    def design(self) -> Design:
        """
        Returns the design that owns the user parameters collection.
        """
        return Design()

class VolumetricCustomFeatureInput(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    An input object for creating a volumetric custom feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> VolumetricCustomFeatureInput:
        return VolumetricCustomFeatureInput()
    @property
    def boundaryBody(self) -> core.Base:
        """
        The boundary body of the volumetric model.
        """
        return core.Base()
    @boundaryBody.setter
    def boundaryBody(self, value: core.Base):
        """
        The boundary body of the volumetric model.
        """
        pass

class VolumetricCustomFeatures(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Collection that provides access to all of the existing volumetric custom features in a component
    and supports the ability to create new Volumetric Custom features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> VolumetricCustomFeatures:
        return VolumetricCustomFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> VolumetricCustomFeature:
        return None
    def __iter__(self) -> Iterator[VolumetricCustomFeature]:
        return None
    def item(self, index: int) -> VolumetricCustomFeature:
        """
        Function that 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 VolumetricCustomFeature()
    def itemByName(self, name: str) -> VolumetricCustomFeature:
        """
        Returns the item with the specified internal name.
        name : The name of the item.
        Returns the specified item or null in the case where there is no item with the specified name.
        """
        return VolumetricCustomFeature()
    def add(self, input: VolumetricCustomFeatureInput) -> VolumetricCustomFeature:
        """
        Add a new volumetric custom feature.
        To create a new volumetric custom feature use the createInput method to create a new input
        object and use the methods and properties on that object to define the required input for a
        volumetric custom feature. Once the information is defined on the input object you can pass
        it to the add method to create the feature.
        input : The input object for creating a volumetric custom feature.
        The newly added volumetric custom feature object or null if one cannot be added.
        Only one volumetric model can be added to each body.
        """
        return VolumetricCustomFeature()
    def createInput(self, boundaryBody: core.Base) -> VolumetricCustomFeatureInput:
        """
        Create a new VolumetricCustomFeatureInput object.
        boundaryBody : The boundary body for the volumetric model. Must be a BRepBody or MeshBody. Must have the same parent
        component as the VolumetricCustomFeatures.
        Returns the newly created VolumetricCustomFeatureInput object or null if the creation failed.
        """
        return VolumetricCustomFeatureInput()
    @property
    def count(self) -> int:
        """
        The number of features in the collection.
        """
        return int()

class VolumetricModelToMeshFeatureInput(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    An input object for creating a volumetric model to mesh feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> VolumetricModelToMeshFeatureInput:
        return VolumetricModelToMeshFeatureInput()
    @property
    def volumetricModel(self) -> core.Base:
        """
        Gets and sets the volumetric model to be converted to a mesh. The volumetric model must have the
        same parent component as the VolumetricModelToMeshFeature.This property is typed as core.Base
        because the adsk.fusion library does not reference the volume library where the VolumetricModel object
        is defined. At runtime, this property will return a VolumetricModel object.
        """
        return core.Base()
    @volumetricModel.setter
    def volumetricModel(self, value: core.Base):
        """
        Gets and sets the volumetric model to be converted to a mesh. The volumetric model must have the
        same parent component as the VolumetricModelToMeshFeature.This property is typed as core.Base
        because the adsk.fusion library does not reference the volume library where the VolumetricModel object
        is defined. At runtime, this property will return a VolumetricModel object.
        """
        pass
    @property
    def refinementType(self) -> VolumetricMeshRefinementTypes:
        """
        Gets and sets the refinement type to be used when creating the mesh. The default is Low.
        """
        return VolumetricMeshRefinementTypes()
    @refinementType.setter
    def refinementType(self, value: VolumetricMeshRefinementTypes):
        """
        Gets and sets the refinement type to be used when creating the mesh. The default is Low.
        """
        pass
    @property
    def elementSize(self) -> core.ValueInput:
        """
        Gets and sets the element size to be used when creating the mesh. This value is only used when the
        RefinementType is set to Custom. The value must be greater than 0. The default is equivalent to the
        Low refinement type and is dependent on the size of the model.
        """
        return core.ValueInput()
    @elementSize.setter
    def elementSize(self, value: core.ValueInput):
        """
        Gets and sets the element size to be used when creating the mesh. This value is only used when the
        RefinementType is set to Custom. The value must be greater than 0. The default is equivalent to the
        Low refinement type and is dependent on the size of the model.
        """
        pass
    @property
    def meshingApproach(self) -> VolumetricMeshingApproachTypes:
        """
        Gets and sets the meshing approach to be used when creating the mesh.
        The default is VolumetricMeshingAdvancedType.
        """
        return VolumetricMeshingApproachTypes()
    @meshingApproach.setter
    def meshingApproach(self, value: VolumetricMeshingApproachTypes):
        """
        Gets and sets the meshing approach to be used when creating the mesh.
        The default is VolumetricMeshingAdvancedType.
        """
        pass
    @property
    def isVolumetricModelRemoved(self) -> bool:
        """
        Gets and sets if the volumetric model should be removed after creating the mesh.
        the default is true.
        """
        return bool()
    @isVolumetricModelRemoved.setter
    def isVolumetricModelRemoved(self, value: bool):
        """
        Gets and sets if the volumetric model should be removed after creating the mesh.
        the default is true.
        """
        pass
    @property
    def isSmallShellsRemoved(self) -> bool:
        """
        Gets and sets if small mesh shells should be removed after creating the mesh.
        The default is false.
        """
        return bool()
    @isSmallShellsRemoved.setter
    def isSmallShellsRemoved(self, value: bool):
        """
        Gets and sets if small mesh shells should be removed after creating the mesh.
        The default is false.
        """
        pass
    @property
    def smallShellThreshold(self) -> core.ValueInput:
        """
        Gets and sets the small mesh threshold used to determine if a mesh shell is considered small.
        The value is a fraction of the total mesh area and must be between 0 and 1. The default is 0.02.
        """
        return core.ValueInput()
    @smallShellThreshold.setter
    def smallShellThreshold(self, value: core.ValueInput):
        """
        Gets and sets the small mesh threshold used to determine if a mesh shell is considered small.
        The value is a fraction of the total mesh area and must be between 0 and 1. The default is 0.02.
        """
        pass
    @property
    def isComputeSuspended(self) -> bool:
        """
        Gets and sets if the feature compute should be suspended if a dependent entity changes. Default is false.
        If true, the feature will need to be recomputed manually if a dependent entity changes.
        The default is false.
        """
        return bool()
    @isComputeSuspended.setter
    def isComputeSuspended(self, value: bool):
        """
        Gets and sets if the feature compute should be suspended if a dependent entity changes. Default is false.
        If true, the feature will need to be recomputed manually if a dependent entity changes.
        The default is false.
        """
        pass

class VolumetricModelToMeshFeatures(core.Base):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Collection that provides access to all of the existing volumetric model to mesh features in a component
    and supports the ability to create new Volumetric Model To Mesh features.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> VolumetricModelToMeshFeatures:
        return VolumetricModelToMeshFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> VolumetricModelToMeshFeature:
        return None
    def __iter__(self) -> Iterator[VolumetricModelToMeshFeature]:
        return None
    def item(self, index: int) -> VolumetricModelToMeshFeature:
        """
        Function that 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 VolumetricModelToMeshFeature()
    def itemByName(self, name: str) -> VolumetricModelToMeshFeature:
        """
        Returns the item with the specified name.
        name : The name of the item.
        Returns the specified item or null in the case where there is no item with the specified name.
        """
        return VolumetricModelToMeshFeature()
    def add(self, input: VolumetricModelToMeshFeatureInput) -> VolumetricModelToMeshFeature:
        """
        Add a new volumetric model to mesh feature. To create a new volumetric model to mesh feature use
        the createInput function to create a new input object and use the methods and proprties on that
        object to define the required input for an volumetric model to mesh feature. Once the information
        is defined on the input object you can pass it to the Add method to create the Volumetric Model to
        Mesh.
        input : The input object for creating a volumetric model to mesh feature.
        The newly added volumetric model to mesh feature.
        """
        return VolumetricModelToMeshFeature()
    def createInput(self, volumetricModel: core.Base) -> VolumetricModelToMeshFeatureInput:
        """
        Create a new VolumetricModelToMeshFeatureInput object.
        volumetricModel : The volumetric model to be converted to a mesh. Must have the same parent component as the
        VolumetricModelToMeshFeatures. This property is typed as core.Base because the adsk.fusion
        library does not reference the volume library where the VolumetricModel object is defined.
        At runtime, this property will return a VolumetricModel object.
        Returns the newly created VolumetricModelToMeshFeatureInput object or null if the creation failed.
        """
        return VolumetricModelToMeshFeatureInput()
    @property
    def count(self) -> int:
        """
        The number of features in the collection.
        """
        return int()

class WebFeatures(core.Base):
    """
    Collection that provides access to all of the existing web features in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> WebFeatures:
        return WebFeatures()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> WebFeature:
        return None
    def __iter__(self) -> Iterator[WebFeature]:
        return None
    def item(self, index: int) -> WebFeature:
        """
        Function that returns the specified web feature 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 WebFeature()
    def itemByName(self, name: str) -> WebFeature:
        """
        Function that returns the specified web feature using the name of the feature.
        name : The name of the feature within the collection to return. This is the name seen in the timeline.
        Returns the specified item or null if the specified name was not found.
        """
        return WebFeature()
    @property
    def count(self) -> int:
        """
        The number of web features in the collection.
        """
        return int()

class ZebraAnalyses(core.Base):
    """
    Provides access to any zebra analyses results in the design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ZebraAnalyses:
        return ZebraAnalyses()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> ZebraAnalysis:
        return None
    def __iter__(self) -> Iterator[ZebraAnalysis]:
        return None
    def item(self, index: int) -> ZebraAnalysis:
        """
        A method that returns the specified ZebraAnalysis 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 ZebraAnalysis()
    def itemByName(self, name: str) -> ZebraAnalysis:
        """
        A method that returns the specified ZebraAnalysis object using the name of the analysis
        as it is displayed in the browser.
        name : The name of the ZebraAnalysis object as it is displayed in the browser.
        Returns the specified item or null if an invalid name was specified.
        """
        return ZebraAnalysis()
    @property
    def count(self) -> int:
        """
        Returns the number of ZebraAnalysis objects in the collection.
        """
        return int()

class AccessibilityAnalysis(Analysis):
    """
    Represents any existing Accessibility Analysis that exist in the design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AccessibilityAnalysis:
        return AccessibilityAnalysis()

class AllExtentDefinition(ExtentDefinition):
    """
    Defines the inputs for an AllExtentDefinition object. This is used when defining the extent
    for a hole feature. Some other features, like extrude, support defining the extents independently
    in both directions. In that case you need to create a ThroughAllExtentDefinition and apply it for
    the extent direction you want a through all type.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AllExtentDefinition:
        return AllExtentDefinition()
    @property
    def direction(self) -> ExtentDirections:
        """
        Gets and sets the direction of the extent.
        """
        return ExtentDirections()
    @direction.setter
    def direction(self, value: ExtentDirections):
        """
        Gets and sets the direction of the extent.
        """
        pass

class AlongEdgeRipFeatureDefinition(RipFeatureDefinition):
    """
    The definition for an along edge rip.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AlongEdgeRipFeatureDefinition:
        return AlongEdgeRipFeatureDefinition()
    @property
    def ripEdge(self) -> BRepEdge:
        """
        Gets and sets the input edge for an along edge rip.
        """
        return BRepEdge()
    @ripEdge.setter
    def ripEdge(self, value: BRepEdge):
        """
        Gets and sets the input edge for an along edge rip.
        """
        pass
    @property
    def gapDistance(self) -> ModelParameter:
        """
        Gets the ModelParameter that defines the gap distance of the rip.
        The value can be edited by using the properties of the returned ModelParameter object.
        """
        return ModelParameter()

class AlongPathTextDefinition(SketchTextDefinition):
    """
    Defines the information for text that follows along a path.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AlongPathTextDefinition:
        return AlongPathTextDefinition()
    @property
    def path(self) -> core.Base:
        """
        Get and sets the entity that defines the path for the text. This can be a SketchCurve or BRepEdge object.
        """
        return core.Base()
    @path.setter
    def path(self, value: core.Base):
        """
        Get and sets the entity that defines the path for the text. This can be a SketchCurve or BRepEdge object.
        """
        pass
    @property
    def isAbovePath(self) -> bool:
        """
        Gets and sets if the text should be positioned above or below the path entity.
        """
        return bool()
    @isAbovePath.setter
    def isAbovePath(self, value: bool):
        """
        Gets and sets if the text should be positioned above or below the path entity.
        """
        pass
    @property
    def horizontalAlignment(self) -> core.HorizontalAlignments:
        """
        Gets and sets the horizontal alignment of the text with respect to the path curve.
        """
        return core.HorizontalAlignments()
    @horizontalAlignment.setter
    def horizontalAlignment(self, value: core.HorizontalAlignments):
        """
        Gets and sets the horizontal alignment of the text with respect to the path curve.
        """
        pass
    @property
    def characterSpacing(self) -> float:
        """
        Gets and sets the spacing between the characters. This is an additional spacing to apply
        that is defined as a percentage of the default spacing. A spacing of 0 indicates no
        additional spacing. A spacing of 50 indicates to use the default plus 50% of the default.
        """
        return float()
    @characterSpacing.setter
    def characterSpacing(self, value: float):
        """
        Gets and sets the spacing between the characters. This is an additional spacing to apply
        that is defined as a percentage of the default spacing. A spacing of 0 indicates no
        additional spacing. A spacing of 50 indicates to use the default plus 50% of the default.
        """
        pass

class AngleExtentDefinition(ExtentDefinition):
    """
    Defines the inputs for an AngleExtentDefinition object.
    This feature extent is defined by an angle as well as whether the extent is symmetric or only in one direction.
    If the extent is not symmetric, a positive or negative angle can be used to control the direction.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AngleExtentDefinition:
        return AngleExtentDefinition()
    @property
    def isSymmetric(self) -> bool:
        """
        Gets and sets if the angle extent is in one direction or symmetric.
        For a hole this property will always return false and setting it is ignored.
        """
        return bool()
    @isSymmetric.setter
    def isSymmetric(self, value: bool):
        """
        Gets and sets if the angle extent is in one direction or symmetric.
        For a hole this property will always return false and setting it is ignored.
        """
        pass
    @property
    def angle(self) -> ModelParameter:
        """
        Gets the ModelParameter that defines the angle. The value of the angle can be edited
        by using the properties on the ModelParameter object to edit the parameter.
        """
        return ModelParameter()

class Arrange2DDefinition(ArrangeDefinition):
    """
    This object defines all of the settings associated with a 2D arrangement. This is used
    for both rectangular and true shape arrangements, but some properties are ignored
    in some cases.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Arrange2DDefinition:
        return Arrange2DDefinition()
    @property
    def globalRotation(self) -> ArrangeRotationTypes:
        """
        Gets and sets the global rotation type.
        """
        return ArrangeRotationTypes()
    @globalRotation.setter
    def globalRotation(self, value: ArrangeRotationTypes):
        """
        Gets and sets the global rotation type.
        """
        pass
    @property
    def globalQuantity(self) -> ModelParameter:
        """
        Returns the parameter that controls the global quantity. You can modify the value by
        using the properties on the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def isGlobalDirectionFaceUp(self) -> bool:
        """
        Gets and sets the global direction for selected faces. When true, the components specified
        by selecting a face will be oriented such that the selection face will be oriented upward
        in the arrangement.
        """
        return bool()
    @isGlobalDirectionFaceUp.setter
    def isGlobalDirectionFaceUp(self, value: bool):
        """
        Gets and sets the global direction for selected faces. When true, the components specified
        by selecting a face will be oriented such that the selection face will be oriented upward
        in the arrangement.
        """
        pass
    @property
    def isPartInPartAllowed(self) -> bool:
        """
        Gets and sets if parts can be nested within void areas of other parts.
        
        This is only used when
        the solver type is 2D True Shape and is ignored for 2D Rectangular solutions.
        """
        return bool()
    @isPartInPartAllowed.setter
    def isPartInPartAllowed(self, value: bool):
        """
        Gets and sets if parts can be nested within void areas of other parts.
        
        This is only used when
        the solver type is 2D True Shape and is ignored for 2D Rectangular solutions.
        """
        pass
    @property
    def grainDirection(self) -> ModelParameter:
        """
        Defines the angle of the grain direction of the envelope. An angle of 0 is in the X direction
        of the envelope. You can modify the value by using the properties on the returned ModelParameter object.
        
        This is only valid when the solver type is True Shape and it returns null in all other cases.
        """
        return ModelParameter()

class Arrange2DEnvelopeInput(ArrangeEnvelopeInput):
    """
    The Arrange2DEnvelopeInput is a base class used to define the various settings common to
    the envelopes defined by a plane or by profiles and planar faces.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Arrange2DEnvelopeInput:
        return Arrange2DEnvelopeInput()
    @property
    def isFlipped(self) -> bool:
        """
        Specifies if the arrangement of objects is so they are above the X-Y plane of the envelope.
        Defaults to false so the objects are above the construction plane, profile or face.
        """
        return bool()
    @isFlipped.setter
    def isFlipped(self, value: bool):
        """
        Specifies if the arrangement of objects is so they are above the X-Y plane of the envelope.
        Defaults to false so the objects are above the construction plane, profile or face.
        """
        pass

class Arrange3DDefinition(ArrangeDefinition):
    """
    This object defines all of the settings associated with a 3D arrangement.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Arrange3DDefinition:
        return Arrange3DDefinition()

class Arrange3DEnvelopeDefinition(ArrangeEnvelopeDefinition):
    """
    The Arrange3DEnvelope object represents an 3D arrange envelope.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Arrange3DEnvelopeDefinition:
        return Arrange3DEnvelopeDefinition()
    @property
    def plane(self) -> ConstructionPlane:
        """
        Gets and sets the ConstructionPlane the envelope is defined on.
        """
        return ConstructionPlane()
    @plane.setter
    def plane(self, value: ConstructionPlane):
        """
        Gets and sets the ConstructionPlane the envelope is defined on.
        """
        pass
    @property
    def length(self) -> ModelParameter:
        """
        Returns the parameter that controls the length of the envelope volume. This defines the
        size of the envelope volume. You can modify the value by using the properties on the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def width(self) -> ModelParameter:
        """
        Returns the parameter that controls the width of the envelope volume. This defines the
        size of the envelope volume. You can modify the value by using the properties on the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def height(self) -> ModelParameter:
        """
        Returns the parameter that controls the height of the envelope volume. This defines the
        size of the envelope volume. You can modify the value by using the properties on the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def originXOffset(self) -> ModelParameter:
        """
        Returns the parameter that controls the X offset of the envelope volume from the origin of
        the construction plane. You can modify the value by using the properties on the returned
        ModelParameter object.
        """
        return ModelParameter()
    @property
    def originYOffset(self) -> ModelParameter:
        """
        Returns the parameter that controls the Y offset of the envelope volume from the origin of
        the construction plane. You can modify the value by using the properties on the returned
        ModelParameter object.
        """
        return ModelParameter()
    @property
    def ceilingClearance(self) -> ModelParameter:
        """
        Returns the parameter that controls the clearance of the objects from the top of the
        envelope volume. You can modify the value by using the properties on the returned
        ModelParameter object.
        """
        return ModelParameter()

class Arrange3DEnvelopeInput(ArrangeEnvelopeInput):
    """
    This object is used to specify the input needed to define a 3D envelope.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Arrange3DEnvelopeInput:
        return Arrange3DEnvelopeInput()
    @property
    def plane(self) -> ConstructionPlane:
        """
        Gets and sets the construction plane that will be used for this envelope.
        """
        return ConstructionPlane()
    @plane.setter
    def plane(self, value: ConstructionPlane):
        """
        Gets and sets the construction plane that will be used for this envelope.
        """
        pass
    @property
    def length(self) -> core.ValueInput:
        """
        Gets and sets length of the envelope. This is the size of the envelope as measured along the X axis of the specified
        construction plane.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in centimeters. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses the current document units. For example, if the document units are inch and you specific "0.25" it
        will result in 1/4 inch clearance. Using a string, you can also specify the units as part of the expression,
        such as "0.25 in + 2 mm". And you can define equations like "PartSize + 2 mm" where "PartSize" is an existing parameter.
        """
        return core.ValueInput()
    @length.setter
    def length(self, value: core.ValueInput):
        """
        Gets and sets length of the envelope. This is the size of the envelope as measured along the X axis of the specified
        construction plane.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in centimeters. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses the current document units. For example, if the document units are inch and you specific "0.25" it
        will result in 1/4 inch clearance. Using a string, you can also specify the units as part of the expression,
        such as "0.25 in + 2 mm". And you can define equations like "PartSize + 2 mm" where "PartSize" is an existing parameter.
        """
        pass
    @property
    def width(self) -> core.ValueInput:
        """
        Gets and sets width of the envelope. This is the size of the envelope as measured along the Y axis of the specified
        construction plane.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in centimeters. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses the current document units. For example, if the document units are inch and you specific "0.25" it
        will result in 1/4 inch clearance. Using a string, you can also specify the units as part of the expression,
        such as "0.25 in + 2 mm". And you can define equations like "PartSize + 2 mm" where "PartSize" is an existing parameter.
        """
        return core.ValueInput()
    @width.setter
    def width(self, value: core.ValueInput):
        """
        Gets and sets width of the envelope. This is the size of the envelope as measured along the Y axis of the specified
        construction plane.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in centimeters. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses the current document units. For example, if the document units are inch and you specific "0.25" it
        will result in 1/4 inch clearance. Using a string, you can also specify the units as part of the expression,
        such as "0.25 in + 2 mm". And you can define equations like "PartSize + 2 mm" where "PartSize" is an existing parameter.
        """
        pass
    @property
    def height(self) -> core.ValueInput:
        """
        Gets and sets height of the envelope. This is the size of the envelope as measured along the Z axis of the specified
        construction plane.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in centimeters. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses the current document units. For example, if the document units are inch and you specific "0.25" it
        will result in 1/4 inch clearance. Using a string, you can also specify the units as part of the expression,
        such as "0.25 in + 2 mm". And you can define equations like "PartSize + 2 mm" where "PartSize" is an existing parameter.
        """
        return core.ValueInput()
    @height.setter
    def height(self, value: core.ValueInput):
        """
        Gets and sets height of the envelope. This is the size of the envelope as measured along the Z axis of the specified
        construction plane.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in centimeters. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses the current document units. For example, if the document units are inch and you specific "0.25" it
        will result in 1/4 inch clearance. Using a string, you can also specify the units as part of the expression,
        such as "0.25 in + 2 mm". And you can define equations like "PartSize + 2 mm" where "PartSize" is an existing parameter.
        """
        pass
    @property
    def originXOffset(self) -> core.ValueInput:
        """
        Gets and sets the X offset of the envelope from the origin of the construction plane. This value defaults to zero.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in centimeters. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses the current document units. For example, if the document units are inch and you specific "0.25" it
        will result in 1/4 inch clearance. Using a string, you can also specify the units as part of the expression,
        such as "0.25 in + 2 mm". And you can define equations like "PartSize + 2 mm" where "PartSize" is an existing parameter.
        """
        return core.ValueInput()
    @originXOffset.setter
    def originXOffset(self, value: core.ValueInput):
        """
        Gets and sets the X offset of the envelope from the origin of the construction plane. This value defaults to zero.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in centimeters. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses the current document units. For example, if the document units are inch and you specific "0.25" it
        will result in 1/4 inch clearance. Using a string, you can also specify the units as part of the expression,
        such as "0.25 in + 2 mm". And you can define equations like "PartSize + 2 mm" where "PartSize" is an existing parameter.
        """
        pass
    @property
    def originYOffset(self) -> core.ValueInput:
        """
        Gets and sets the Y offset of the envelope from the origin of the construction plane. This value defaults to zero.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in centimeters. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses the current document units. For example, if the document units are inch and you specific "0.25" it
        will result in 1/4 inch clearance. Using a string, you can also specify the units as part of the expression,
        such as "0.25 in + 2 mm". And you can define equations like "PartSize + 2 mm" where "PartSize" is an existing parameter.
        """
        return core.ValueInput()
    @originYOffset.setter
    def originYOffset(self, value: core.ValueInput):
        """
        Gets and sets the Y offset of the envelope from the origin of the construction plane. This value defaults to zero.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in centimeters. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses the current document units. For example, if the document units are inch and you specific "0.25" it
        will result in 1/4 inch clearance. Using a string, you can also specify the units as part of the expression,
        such as "0.25 in + 2 mm". And you can define equations like "PartSize + 2 mm" where "PartSize" is an existing parameter.
        """
        pass
    @property
    def ceilingClearance(self) -> core.ValueInput:
        """
        Gets and sets the ceiling clearance of the 3D envelope. This value defaults to zero.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in centimeters. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses the current document units. For example, if the document units are inch and you specific "0.25" it
        will result in 1/4 inch clearance. Using a string, you can also specify the units as part of the expression,
        such as "0.25 in + 2 mm". And you can define equations like "PartSize + 2 mm" where "PartSize" is an existing parameter.
        """
        return core.ValueInput()
    @ceilingClearance.setter
    def ceilingClearance(self, value: core.ValueInput):
        """
        Gets and sets the ceiling clearance of the 3D envelope. This value defaults to zero.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in centimeters. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses the current document units. For example, if the document units are inch and you specific "0.25" it
        will result in 1/4 inch clearance. Using a string, you can also specify the units as part of the expression,
        such as "0.25 in + 2 mm". And you can define equations like "PartSize + 2 mm" where "PartSize" is an existing parameter.
        """
        pass

class Arrange3DResultEnvelope(ArrangeResultEnvelope):
    """
    Represents the arrange envelope result of a 3D arrange feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Arrange3DResultEnvelope:
        return Arrange3DResultEnvelope()
    @property
    def boundingBox(self) -> core.BoundingBox3D:
        """
        The bounding box of this result. The coordinates are defined with respect
        to the root component base coordinate system.
        """
        return core.BoundingBox3D()

class ArrangeDefinition2DInput(ArrangeDefinitionInput):
    """
    This object defines all of the settings associated with a 2D arrangement. This is used
    for both rectangular and true shape arrangements, but some properties are ignored
    in some cases.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ArrangeDefinition2DInput:
        return ArrangeDefinition2DInput()
    @property
    def globalRotation(self) -> ArrangeRotationTypes:
        """
        Gets and sets the global rotation type. This defaults to AllRotationsArrangeRotationType.
        """
        return ArrangeRotationTypes()
    @globalRotation.setter
    def globalRotation(self, value: ArrangeRotationTypes):
        """
        Gets and sets the global rotation type. This defaults to AllRotationsArrangeRotationType.
        """
        pass
    @property
    def globalQuantity(self) -> core.ValueInput:
        """
        Gets and sets the global quantity, which is the default quantity value for components. This defaults to 1.
        
        This value will become a parameter when the arrangement is created. When created with a real value it must be a whole number.
        You can also use a string where it is interpreted the same as when entered in the command dialog. The expression must result
        in a unitless whole number. It's also possible to use an equation like "Total / 4" where "Total" is an existing parameter and must be
        evenly divided by four.
        """
        return core.ValueInput()
    @globalQuantity.setter
    def globalQuantity(self, value: core.ValueInput):
        """
        Gets and sets the global quantity, which is the default quantity value for components. This defaults to 1.
        
        This value will become a parameter when the arrangement is created. When created with a real value it must be a whole number.
        You can also use a string where it is interpreted the same as when entered in the command dialog. The expression must result
        in a unitless whole number. It's also possible to use an equation like "Total / 4" where "Total" is an existing parameter and must be
        evenly divided by four.
        """
        pass
    @property
    def isGlobalDirectionFaceUp(self) -> bool:
        """
        Gets and sets the global direction for input faces. When true, the components specified
        by selecting a face will be oriented such that the selection face will be oriented upward
        in the arrangement. This defaults to true.
        """
        return bool()
    @isGlobalDirectionFaceUp.setter
    def isGlobalDirectionFaceUp(self, value: bool):
        """
        Gets and sets the global direction for input faces. When true, the components specified
        by selecting a face will be oriented such that the selection face will be oriented upward
        in the arrangement. This defaults to true.
        """
        pass
    @property
    def isPartInPartAllowed(self) -> bool:
        """
        Gets and sets if parts can be nested within void areas of other parts. This defaults to true.
        
        This is only used when the solver type is 2D True Shape and is ignored for 2D Rectangular solutions.
        """
        return bool()
    @isPartInPartAllowed.setter
    def isPartInPartAllowed(self, value: bool):
        """
        Gets and sets if parts can be nested within void areas of other parts. This defaults to true.
        
        This is only used when the solver type is 2D True Shape and is ignored for 2D Rectangular solutions.
        """
        pass
    @property
    def grainDirection(self) -> core.ValueInput:
        """
        Defines the angle of the grain direction of the envelope. This is only used when the solver type is True Shape.
        An angle of 0 is in the X direction of the envelope, and the default value is zero.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in radians. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses degrees as the units. For example, if you specify "45" it will result in a 45 degree grain
        direction. Using a string you can also define an equation for the expression, such as "PartAngle / 2" where "PartAngle"
        is an existing parameter.
        """
        return core.ValueInput()
    @grainDirection.setter
    def grainDirection(self, value: core.ValueInput):
        """
        Defines the angle of the grain direction of the envelope. This is only used when the solver type is True Shape.
        An angle of 0 is in the X direction of the envelope, and the default value is zero.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in radians. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses degrees as the units. For example, if you specify "45" it will result in a 45 degree grain
        direction. Using a string you can also define an equation for the expression, such as "PartAngle / 2" where "PartAngle"
        is an existing parameter.
        """
        pass

class ArrangeDefinition3DInput(ArrangeDefinitionInput):
    """
    This object defines all of the settings associated with a 3D arrangement.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ArrangeDefinition3DInput:
        return ArrangeDefinition3DInput()

class ArrangeFeature(Feature):
    """
    Represents an Arrange feature within a component.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ArrangeFeature:
        return ArrangeFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> ArrangeFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return ArrangeFeature()
    @property
    def definition(self) -> ArrangeDefinition:
        """
        Returns a definition object that provides access to the information defining this arrange
        feature and provides access to the resulting arrangement of occurrences.
        
        To use this property, you need to position the timeline marker immediately before the Arrange feature.
        This can be accomplished using the following code: arrangeFeature.timelineObject.rollTo(True)
        """
        return ArrangeDefinition()
    @property
    def arrangeComponents(self) -> ArrangeComponents:
        """
        Returns the collection of ArrangeComponent objects that are being arranged.
        
        To use this property, you need to position the timeline marker immediately before the Arrange feature.
        This can be accomplished using the following code: arrangeFeature.timelineObject.rollTo(True)
        """
        return ArrangeComponents()
    @property
    def envelopeDefinition(self) -> ArrangeEnvelopeDefinition:
        """
        Returns the envelope definition associated with this arrangement.
        
        To use this property, you need to position the timeline marker immediately before the Arrange feature.
        This can be accomplished using the following code: arrangeFeature.timelineObject.rollTo(True)
        """
        return ArrangeEnvelopeDefinition()
    @property
    def resultEnvelopes(self) -> ArrangeResultEnvelopes:
        """
        Returns the resulting envelopes and their contents.
        """
        return ArrangeResultEnvelopes()
    @property
    def unusedComponents(self) -> list[ArrangeComponent]:
        """
        Returns an array of ArrangeComponent objects that did not fit in the arrangement. This is
        most useful in the case where partial arrange has been enabled, which means some
        components may have been arranged and others were left out.
        
        To use this property, you need to position the timeline marker immediately before the Arrange feature.
        This can be accomplished using the following code: arrangeFeature.timelineObject.rollTo(True)
        """
        return [ArrangeComponent()]
    @property
    def nativeObject(self) -> ArrangeFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return ArrangeFeature()
    @property
    def arrangeStatistics(self) -> str:
        """
        Returns statistics about the arrangement in JSON format as a string. Each item in the JSON is identified with its English name,
        and the current localized name is also provided. The values follow the API rules, where all length values are in centimeters,
        and areas are in square centimeters. The returned JSON may include additional values in the future, so code consuming this
        output should be tolerant of new fields.
        
        Returns an empty string in the case it failed to get any statistics.
        """
        return str()

class ArrangePlaneEnvelopeDefinition(ArrangeEnvelopeDefinition):
    """
    The ArrangePlaneEnvelope object represents an arrange envelope defined
    by a construction plane. This defines the settings of the envelope and the
    EnvelopeResult provides access to the resulting envelope and its contents.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ArrangePlaneEnvelopeDefinition:
        return ArrangePlaneEnvelopeDefinition()
    @property
    def plane(self) -> ConstructionPlane:
        """
        Gets and sets the ConstructionPlane the envelope is defined on.
        """
        return ConstructionPlane()
    @plane.setter
    def plane(self, value: ConstructionPlane):
        """
        Gets and sets the ConstructionPlane the envelope is defined on.
        """
        pass
    @property
    def length(self) -> ModelParameter:
        """
        Returns the parameter that controls the length of the envelope frame. This defines the
        size of the envelope frame. You can modify the value by using the properties on the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def width(self) -> ModelParameter:
        """
        Returns the parameter that controls the width of the envelope frame. This defines the
        size of the envelope frame. You can modify the value by using the properties on the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def originXOffset(self) -> ModelParameter:
        """
        Returns the parameter that controls the X offset of the frame from the origin of the
        construction plane. You can modify the value by using the properties on the returned
        ModelParameter object.
        """
        return ModelParameter()
    @property
    def originYOffset(self) -> ModelParameter:
        """
        Returns the parameter that controls the Y offset of the frame from the origin of the
        construction plane. You can modify the value by using the properties on the returned
        ModelParameter object.
        """
        return ModelParameter()
    @property
    def envelopeSpacing(self) -> ModelParameter:
        """
        Returns the parameter that controls the offset distance between envelopes when there is
        more than one. You can modify the value by using the properties on the returned
        ModelParameter object.
        """
        return ModelParameter()
    @property
    def quantity(self) -> ModelParameter:
        """
        Returns the parameter that defines the number of envelopes that can be created.
        A value of -1 indicates that there is no limit.
        """
        return ModelParameter()

class ArrangePlaneResultEnvelope(ArrangeResultEnvelope):
    """
    Represents the arrange result of a single envelope that is defined on a plane.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ArrangePlaneResultEnvelope:
        return ArrangePlaneResultEnvelope()
    @property
    def boundingBox(self) -> core.BoundingBox2D:
        """
        The bounding box of this result. The coordinates are defined
        using the coordinate system of the construction plane used to
        define the envelope.
        """
        return core.BoundingBox2D()

class ArrangeProfileOrFaceEnvelopeDefinition(ArrangeEnvelopeDefinition):
    """
    The ArrangeProfileEnvelopeDefinition object represents envelopes defined by a profile or
    face in an Arrange feature. This defines the settings of the envelope and the
    EnvelopeResult provides access to the resulting envelope and its contents.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ArrangeProfileOrFaceEnvelopeDefinition:
        return ArrangeProfileOrFaceEnvelopeDefinition()
    @property
    def profilesAndFaces(self) -> list[core.Base]:
        """
        Gets and sets an array containing any combination of Profile and planar
        BRepFace objects. These objects define the shapes of the envelopes. Currently,
        if a Profile is used, it must be the only Profile in its parent sketch.
        """
        return [core.Base()]
    @profilesAndFaces.setter
    def profilesAndFaces(self, value: list[core.Base]):
        """
        Gets and sets an array containing any combination of Profile and planar
        BRepFace objects. These objects define the shapes of the envelopes. Currently,
        if a Profile is used, it must be the only Profile in its parent sketch.
        """
        pass

class ArrangeProfileOrFaceResultEnvelope(ArrangeResultEnvelope):
    """
    Represents the arrange envelope result of a profile or face defined arrange feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ArrangeProfileOrFaceResultEnvelope:
        return ArrangeProfileOrFaceResultEnvelope()
    @property
    def profileOrFace(self) -> core.Base:
        """
        Returns the Profile or BRepFace object that defines the shape of this result envelope.
        """
        return core.Base()

class AsymmetricFilletEdgeSet(FilletEdgeSet):
    """
    Provides access to the edges and the parameters associated with an asymmetric fillet.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AsymmetricFilletEdgeSet:
        return AsymmetricFilletEdgeSet()
    @property
    def edges(self) -> core.ObjectCollection:
        """
        Gets and sets an ObjectCollection containing the BRepEdge, BRepFace, and Feature that are filleted.
        If the isTangentChain argument is true additional edges or faces may also get filleted if they are tangentially
        connected to any of the input edges or faces.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()
    @edges.setter
    def edges(self, value: core.ObjectCollection):
        """
        Gets and sets an ObjectCollection containing the BRepEdge, BRepFace, and Feature that are filleted.
        If the isTangentChain argument is true additional edges or faces may also get filleted if they are tangentially
        connected to any of the input edges or faces.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def offsetOne(self) -> ModelParameter:
        """
        Returns the model parameter that controls the offset distance of the fillet in the first direction
        You can edit the offset by using the properties on the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def offsetTwo(self) -> ModelParameter:
        """
        Returns the model parameter that controls the offset distance of the fillet in the second direction
        You can edit the offset by using the properties on the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def isFlipped(self) -> bool:
        """
        Gets and sets if offsets are reversed. If false, offsetOne is applied to the first direction
        and offsetTwo to the second direction. Setting to true reverses this.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isFlipped.setter
    def isFlipped(self, value: bool):
        """
        Gets and sets if offsets are reversed. If false, offsetOne is applied to the first direction
        and offsetTwo to the second direction. Setting to true reverses this.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass

class AsymmetricFilletEdgeSetInput(FilletEdgeSetInput):
    """
    Provides access to the edges and the parameters associated with an asymmetric fillet.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AsymmetricFilletEdgeSetInput:
        return AsymmetricFilletEdgeSetInput()
    @property
    def offsetOne(self) -> core.ValueInput:
        """
        Gets and sets a ValueInput object that defines the first offset of the asymmetric fillet.
        If the ValueInput uses a real value then it is interpreted as centimeters. If it is a string
        then the units can be defined as part of the string (i.e. "2 in") or if no units are
        specified it is interpreted using the current document units for length.
        """
        return core.ValueInput()
    @offsetOne.setter
    def offsetOne(self, value: core.ValueInput):
        """
        Gets and sets a ValueInput object that defines the first offset of the asymmetric fillet.
        If the ValueInput uses a real value then it is interpreted as centimeters. If it is a string
        then the units can be defined as part of the string (i.e. "2 in") or if no units are
        specified it is interpreted using the current document units for length.
        """
        pass
    @property
    def offsetTwo(self) -> core.ValueInput:
        """
        Gets and sets a ValueInput object that defines the second offset value of the asymmetric fillet.
        If the ValueInput uses a real value then it is interpreted as centimeters. If it is a string
        then the units can be defined as part of the string (i.e. "2 in") or if no units are
        specified it is interpreted using the current document units for length.
        """
        return core.ValueInput()
    @offsetTwo.setter
    def offsetTwo(self, value: core.ValueInput):
        """
        Gets and sets a ValueInput object that defines the second offset value of the asymmetric fillet.
        If the ValueInput uses a real value then it is interpreted as centimeters. If it is a string
        then the units can be defined as part of the string (i.e. "2 in") or if no units are
        specified it is interpreted using the current document units for length.
        """
        pass
    @property
    def isFlipped(self) -> bool:
        """
        Gets and sets if offsets are reversed. If false, offsetOne is applied to the first direction
        and offsetTwo to the second direction. Setting to true reverses this.
        """
        return bool()
    @isFlipped.setter
    def isFlipped(self, value: bool):
        """
        Gets and sets if offsets are reversed. If false, offsetOne is applied to the first direction
        and offsetTwo to the second direction. Setting to true reverses this.
        """
        pass

class AtCenterHolePositionDefinition(HolePositionDefinition):
    """
    Provides positioning information for a hole that is positioned at the center of a
    circular or elliptical edge.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> AtCenterHolePositionDefinition:
        return AtCenterHolePositionDefinition()
    @property
    def planarEntity(self) -> core.Base:
        """
        Returns the plane that defines the orientation and start of the hole.
        """
        return core.Base()
    @property
    def centerEdge(self) -> BRepEdge:
        """
        Returns the circular or elliptical edge the hole is centered at.
        """
        return BRepEdge()

class BallJointMotion(JointMotion):
    """
    Represents the set of information specific to a ball joint.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BallJointMotion:
        return BallJointMotion()
    @property
    def pitchDirection(self) -> JointDirections:
        """
        Gets and sets the direction that the pitch is measured from.
        This can only be set to ZAxisJointDirection and can return ZAxisJointDirection
        or CustomJointDirection. If this returns CustomJointDirection then the
        customNormalDirectionEntity will return an entity that defines the direction.
        If there is a custom direction defined and this property is set to ZAxisJointDirection,
        the custom direction will be removed and customNormalDirectionEntity will return null.
        """
        return JointDirections()
    @pitchDirection.setter
    def pitchDirection(self, value: JointDirections):
        """
        Gets and sets the direction that the pitch is measured from.
        This can only be set to ZAxisJointDirection and can return ZAxisJointDirection
        or CustomJointDirection. If this returns CustomJointDirection then the
        customNormalDirectionEntity will return an entity that defines the direction.
        If there is a custom direction defined and this property is set to ZAxisJointDirection,
        the custom direction will be removed and customNormalDirectionEntity will return null.
        """
        pass
    @property
    def customPitchDirectionEntity(self) -> core.Base:
        """
        This property defines a custom pitch direction and can be set using various types
        of entities that can infer a direction. For example, a linear edge, sketch line,
        planar face, and cylindrical face.This property is only valid in the case where the
        pitchDirection property returns CustomJointDirection. Setting this property will
        automatically set the pitchDirection property to CustomJointDirection.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        """
        return core.Base()
    @customPitchDirectionEntity.setter
    def customPitchDirectionEntity(self, value: core.Base):
        """
        This property defines a custom pitch direction and can be set using various types
        of entities that can infer a direction. For example, a linear edge, sketch line,
        planar face, and cylindrical face.This property is only valid in the case where the
        pitchDirection property returns CustomJointDirection. Setting this property will
        automatically set the pitchDirection property to CustomJointDirection.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        """
        pass
    @property
    def pitchDirectionVector(self) -> core.Vector3D:
        """
        Returns the direction that the pitch angle is measured from. This property will return null in the case
        where the BallJointMotion object was obtained from a JointInput object.
        """
        return core.Vector3D()
    @property
    def yawDirection(self) -> JointDirections:
        """
        Gets and sets the direction that the pitch is measured from.
        This can only be set to XAxisJointDirection and can return XAxisJointDirection
        or CustomJointDirection. If this returns CustomJointDirection then the
        customYawDirectionEntity will return an entity that defines the direction.
        If there is a custom direction defined and this property is set to XAxisJointDirection,
        the custom direction will be removed and customYawDirectionEntity will return null.
        """
        return JointDirections()
    @yawDirection.setter
    def yawDirection(self, value: JointDirections):
        """
        Gets and sets the direction that the pitch is measured from.
        This can only be set to XAxisJointDirection and can return XAxisJointDirection
        or CustomJointDirection. If this returns CustomJointDirection then the
        customYawDirectionEntity will return an entity that defines the direction.
        If there is a custom direction defined and this property is set to XAxisJointDirection,
        the custom direction will be removed and customYawDirectionEntity will return null.
        """
        pass
    @property
    def customYawDirectionEntity(self) -> core.Base:
        """
        This property defines a custom yaw direction and can be set using various types
        of entities that can infer a direction. For example, a linear edge, sketch line,
        planar face, and cylindrical face.This property is only valid in the case where the
        yawDirection property returns CustomJointDirection. Setting this property will
        automatically set the yawDirection property to CustomJointDirection.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        """
        return core.Base()
    @customYawDirectionEntity.setter
    def customYawDirectionEntity(self, value: core.Base):
        """
        This property defines a custom yaw direction and can be set using various types
        of entities that can infer a direction. For example, a linear edge, sketch line,
        planar face, and cylindrical face.This property is only valid in the case where the
        yawDirection property returns CustomJointDirection. Setting this property will
        automatically set the yawDirection property to CustomJointDirection.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        """
        pass
    @property
    def yawDirectionVector(self) -> core.Vector3D:
        """
        Returns the direction that the yaw angle is measured from. This property will return null in the case
        where the BallJointMotion object was obtained from a JointInput object.
        """
        return core.Vector3D()
    @property
    def rollDirectionVector(self) -> core.Vector3D:
        """
        Returns the direction that the roll angle is measured from. This property will return null in the case
        where the BallJointMotion object was obtained from a JointInput object.
        """
        return core.Vector3D()
    @property
    def pitchValue(self) -> float:
        """
        Gets and sets the pitch value. This is in radians. Setting this value is
        the equivalent of using the Drive Joints command.
        """
        return float()
    @pitchValue.setter
    def pitchValue(self, value: float):
        """
        Gets and sets the pitch value. This is in radians. Setting this value is
        the equivalent of using the Drive Joints command.
        """
        pass
    @property
    def pitchLimits(self) -> JointLimits:
        """
        Returns a JointLimits object that defines the limits of rotation for the pitch.
        Use the functionality of the returned JointLimits object to get, set, and modify
        the joint limits.
        """
        return JointLimits()
    @property
    def yawValue(self) -> float:
        """
        Gets and sets the yaw value. This is in radians. Setting this value is
        the equivalent of using the Drive Joints command.
        """
        return float()
    @yawValue.setter
    def yawValue(self, value: float):
        """
        Gets and sets the yaw value. This is in radians. Setting this value is
        the equivalent of using the Drive Joints command.
        """
        pass
    @property
    def yawLimits(self) -> JointLimits:
        """
        Returns a JointLimits object that defines the limits of rotation for the yaw.
        Use the functionality of the returned JointLimits object to get, set, and modify
        the joint limits.
        """
        return JointLimits()
    @property
    def rollValue(self) -> float:
        """
        Gets and sets the roll value. This is in radians. Setting this value is
        the equivalent of using the Drive Joints command.
        """
        return float()
    @rollValue.setter
    def rollValue(self, value: float):
        """
        Gets and sets the roll value. This is in radians. Setting this value is
        the equivalent of using the Drive Joints command.
        """
        pass
    @property
    def rollLimits(self) -> JointLimits:
        """
        Returns a JointLimits object that defines the limits of rotation for the roll.
        Use the functionality of the returned JointLimits object to get, set, and modify
        the joint limits.
        """
        return JointLimits()

class BaseFeature(Feature):
    """
    The BaseFeature class represents a direct edit feature within a parametric design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BaseFeature:
        return BaseFeature()
    def startEdit(self) -> bool:
        """
        Set the user-interface so that the base body is in edit mode.
        Returns true if successful.
        """
        return bool()
    def finishEdit(self) -> bool:
        """
        Exits from edit mode in the user-interface. If this base feature in not
        in edit mode, then nothing happens.
        Returns true if successful.
        """
        return bool()
    def updateBody(self, sourceBody: BRepBody, newBody: BRepBody) -> bool:
        """
        Update an existing source BRepBody created by this BaseFeature.
        The input BRepBody definition will be copied into the existing BRepBody.
        sourceBody : The source BRepBody to update. The source bodies of a BaseFeature are only available
        from the bodies collection of the BaseFeature when the BaseFeature is in edit mode.
        newBody : The BRepBody whose definition will be used to replace the existing source body's definition.
        Returns true if the body was updated, or false if the update failed.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> BaseFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this is not the NativeObject.
        """
        return BaseFeature()
    @property
    def constructionPlanes(self) -> list[ConstructionPlane]:
        """
        Returns an array of the construction planes associated with this base feature.
        """
        return [ConstructionPlane()]
    @property
    def constructionAxes(self) -> list[ConstructionAxis]:
        """
        Returns an array of the construction axes associated with this base feature.
        """
        return [ConstructionAxis()]
    @property
    def constructionPoints(self) -> list[ConstructionPoint]:
        """
        Returns an array of the construction points associated with this base feature.
        """
        return [ConstructionPoint()]
    @property
    def sketches(self) -> list[Sketch]:
        """
        Returns an array of the sketches associated with this base feature.
        """
        return [Sketch()]
    @property
    def meshBodies(self) -> list[MeshBody]:
        """
        Returns an array of the mesh bodies associated with this base feature.
        """
        return [MeshBody()]
    @property
    def nativeObject(self) -> BaseFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return BaseFeature()
    @property
    def sourceBodies(self) -> list[BRepBody]:
        """
        Returns the B-Rep bodies owned by the base feature.
        
        When a body is added to a base feature, that body is owned by the base feature
        and is only seen in the UI when the base feature is active. This body is referred
        to as a "source body". Fusion creates a parametric copy of the body when you
        exit the base feature. This copy is referred to as the "result body," and it
        is used for subsequent modeling operations. The result bodies can be obtained by
        using the bodies property of the BaseFeature object.
        
        You can map between the source and result bodies by using their position
        within the bodies returned. To get a valid list of result bodies, you should
        roll the timeline to immediately after the base feature node in the timeline.
        Otherwise, subsequent operations could have done something to cause one or
        more bodies to no longer be available.
        """
        return [BRepBody()]

class BetweenPointsRipFeatureDefinition(RipFeatureDefinition):
    """
    The definition for an along edge rip.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BetweenPointsRipFeatureDefinition:
        return BetweenPointsRipFeatureDefinition()
    @property
    def pointOneEntity(self) -> core.Base:
        """
        Gets and sets the BRepEdge or BRepVertex that defines the first point for a between points rip.
        If a BRepEdge is returned the pointOneOffset property will control the position of the point along the edge.
        """
        return core.Base()
    @pointOneEntity.setter
    def pointOneEntity(self, value: core.Base):
        """
        Gets and sets the BRepEdge or BRepVertex that defines the first point for a between points rip.
        If a BRepEdge is returned the pointOneOffset property will control the position of the point along the edge.
        """
        pass
    @property
    def pointTwoEntity(self) -> core.Base:
        """
        Gets and sets the BRepEdge or BRepVertex that defines the second point for a between points rip.
        If a BRepEdge is returned the pointTwoOffset property will control the position of the point along the edge.
        """
        return core.Base()
    @pointTwoEntity.setter
    def pointTwoEntity(self, value: core.Base):
        """
        Gets and sets the BRepEdge or BRepVertex that defines the second point for a between points rip.
        If a BRepEdge is returned the pointTwoOffset property will control the position of the point along the edge.
        """
        pass
    @property
    def pointOneOffset(self) -> ModelParameter:
        """
        Gets the ModelParameter that defines the offset for the first point of a between points rip.
        This is the physical distance from the topological start of the edge.
        If the offset is either negative, or exceeds the edge length,
        then the point will be taken as the corresponding vertex of the edge.
        Returns null if the first point is defined by a vertex.
        The value can be edited by using the properties of the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def pointTwoOffset(self) -> ModelParameter:
        """
        Gets the ModelParameter that defines the offset for the second point of a between points rip.
        This is the physical distance from the topological start of the edge.
        If the offset is either negative, or exceeds the edge length,
        then the point will be taken as the corresponding vertex of the edge.
        Returns null if the first point is defined by a vertex.
        The value can be edited by using the properties of the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def gapDistance(self) -> ModelParameter:
        """
        Gets the ModelParameter that defines the gap distance of the rip.
        The value can be edited by using the properties of the returned ModelParameter object.
        """
        return ModelParameter()

class BossFeature(Feature):
    """
    Object that represents an existing boss feature in a design.
    For history free model this interface has limited functionality.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BossFeature:
        return BossFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> BossFeature:
        """
        Creates or returns a proxy for the native object
        - i.e., a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return BossFeature()
    def createInput(self) -> BossFeatureInput:
        """
        Creates object with inputs this feature represents.
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True).
        Returns BossFeatureInput this feature represent if successful.
        """
        return BossFeatureInput()
    def update(self, input: BossFeatureInput) -> bool:
        """
        Changes the boss feature (or boss connection) to the input provided.
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True).
        input : The object defines inputs the feature will be set to.
        Returns true if successful.
        """
        return bool()
    @property
    def nativeObject(self) -> BossFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return BossFeature()
    @property
    def direction(self) -> core.Vector3D:
        """
        Returns the direction of the boss feature with respect to selected position point.
        For selected sketch point this direction represents a Z-axis of the sketch.
        """
        return core.Vector3D()
    @property
    def isDirectionFlipped(self) -> bool:
        """
        Gets and sets if the direction of the boss (or boss connection) is flipped.
        """
        return bool()
    @isDirectionFlipped.setter
    def isDirectionFlipped(self, value: bool):
        """
        Gets and sets if the direction of the boss (or boss connection) is flipped.
        """
        pass
    @property
    def isGeometryOpposite(self) -> bool:
        """
        Gets if this boss feature instance represents a bottom side where screw thread engages with the part.
        If this feature instance represents a geometry where screw head engages it returns false.
        """
        return bool()
    @property
    def shapeType(self) -> BossShapeTypes:
        """
        Returns the current boss shape this feature represents.
        """
        return BossShapeTypes()
    @property
    def alignmentType(self) -> BossAlignmentTypes:
        """
        Returns the current boss alignment shape this feature represents.
        """
        return BossAlignmentTypes()
    @property
    def holeType(self) -> HoleTypes:
        """
        Returns the current type of hole this feature represents.
        """
        return HoleTypes()
    @property
    def holeExtentType(self) -> BossHoleExtentTypes:
        """
        Returns the current type of hole extent this feature represents.
        """
        return BossHoleExtentTypes()
    @property
    def ribType(self) -> BossRibShapeTypes:
        """
        Returns the current type of ribs shape this feature represents.
        """
        return BossRibShapeTypes()
    @property
    def positionDefinition(self) -> BossPositionDefinition:
        """
        Returns a BossPositionDefinition object that provides access to the information used
        to define the position of the boss feature.
        """
        return BossPositionDefinition()
    @property
    def thickness(self) -> ModelParameter:
        """
        Returns the model parameter for thickness - plastic part rule reference.
        """
        return ModelParameter()
    @property
    def taperAngle(self) -> ModelParameter:
        """
        Returns the model parameter for taper angle - plastic part rule reference.
        """
        return ModelParameter()
    @property
    def innerRadius(self) -> ModelParameter:
        """
        Returns the model parameter for inner radius - reference for parametric expressions.
        """
        return ModelParameter()
    @property
    def screwDiameter(self) -> ModelParameter:
        """
        Returns the model parameter for screw diameter - reference for parametric expressions.
        """
        return ModelParameter()
    @property
    def screwHeadDiameter(self) -> ModelParameter:
        """
        Returns the model parameter for screw head diameter - reference for parametric expressions.
        """
        return ModelParameter()
    @property
    def screwHeadAngle(self) -> ModelParameter:
        """
        Returns the model parameter for countersink head angle - reference for parametric expressions.
        """
        return ModelParameter()
    @property
    def offset(self) -> ModelParameter:
        """
        Returns the model parameter controlling the offset from the selected parting plane.
        """
        return ModelParameter()
    @property
    def offsetClearance(self) -> ModelParameter:
        """
        Returns the model parameter controlling the offset clearance from the selected parting plane and offset.
        """
        return ModelParameter()
    @property
    def diameter(self) -> ModelParameter:
        """
        Returns the model parameter controlling the shank diameter.
        """
        return ModelParameter()
    @property
    def draftAngle(self) -> ModelParameter:
        """
        Returns the model parameter controlling the shank draft angle.
        """
        return ModelParameter()
    @property
    def alignmentDiameter(self) -> ModelParameter:
        """
        Returns the model parameter controlling the step diameter used for alignment of its counterparts.
        """
        return ModelParameter()
    @property
    def alignmentDepth(self) -> ModelParameter:
        """
        Returns the model parameter controlling the step depth used for alignment of its counterparts.
        """
        return ModelParameter()
    @property
    def alignmentDraftAngle(self) -> ModelParameter:
        """
        Returns the model parameter controlling the step draft angle.
        """
        return ModelParameter()
    @property
    def holeDiameter(self) -> ModelParameter:
        """
        Returns the model parameter controlling the hole diameter.
        """
        return ModelParameter()
    @property
    def holeDraftAngle(self) -> ModelParameter:
        """
        Returns the model parameter controlling hole draft angle.
        """
        return ModelParameter()
    @property
    def holeDepth(self) -> ModelParameter:
        """
        Returns the model parameter controlling the hole depth with respect to hole extent type.
        If hole extent type is set to BossHoleThrough parameter not used. If hole extent type is BossBlindFull
        the parameter is a distance from farthest face. If hole extent type is set to BossBlindDepth the parameter
        is a distance from start face of the hole.
        """
        return ModelParameter()
    @property
    def holeMajorDiameter(self) -> ModelParameter:
        """
        Returns the model parameter controlling major hole diameter for counterbore and countersink hole.
        If hole type is set to simple hole or boss shape is to BossBlank this parameter is unused.
        """
        return ModelParameter()
    @property
    def holeMajorDepth(self) -> ModelParameter:
        """
        Returns the model parameter controlling major hole depth for counterbore and countersink hole.
        If hole type is set to simple hole or boss shape is to BossBlank this parameter is unused.
        """
        return ModelParameter()
    @property
    def holeMajorDraftAngle(self) -> ModelParameter:
        """
        Returns the model parameter controlling major hole draft angle for counterbore and countersink hole.
        If hole type is set to simple hole or boss shape is to BossBlank this parameter is unused.
        """
        return ModelParameter()
    @property
    def holeCountersinkAngle(self) -> ModelParameter:
        """
        Returns the model parameter controlling countersink angle for countersink hole.
        If hole type is not set to countersink hole or boss shape is to BossBlank this parameter is unused.
        """
        return ModelParameter()
    @property
    def rootRadius(self) -> ModelParameter:
        """
        Returns the model parameter controlling blend radius of the boss shank.
        """
        return ModelParameter()
    @property
    def tipRadius(self) -> ModelParameter:
        """
        Returns the model parameter controlling blend radius of the boss shank top face.
        """
        return ModelParameter()
    @property
    def alignmentTipRadius(self) -> ModelParameter:
        """
        Returns the model parameter controlling blend radius of the boss alignment top face.
        """
        return ModelParameter()
    @property
    def alignmentRootRadius(self) -> ModelParameter:
        """
        Returns the model parameter controlling blend radius of the boss alignment root.
        """
        return ModelParameter()
    @property
    def holeStartRadius(self) -> ModelParameter:
        """
        Returns the model parameter controlling blend radius of the hole start.
        """
        return ModelParameter()
    @property
    def holeEndRadius(self) -> ModelParameter:
        """
        Returns the model parameter controlling blend radius of the hole end.
        """
        return ModelParameter()
    @property
    def holeMajorTipRadius(self) -> ModelParameter:
        """
        Returns the model parameter controlling blend radius of major hole counterbore.
        """
        return ModelParameter()
    @property
    def holeMajorRootRadius(self) -> ModelParameter:
        """
        Returns the model parameter controlling blend radius of major hole counterbore root.
        """
        return ModelParameter()
    @property
    def ribLength(self) -> ModelParameter:
        """
        Returns the model parameter controlling ribs length measured from the shank axis.
        """
        return ModelParameter()
    @property
    def ribOffset(self) -> ModelParameter:
        """
        Returns the model parameter controlling ribs offset from the top face or alignment face.
        """
        return ModelParameter()
    @property
    def ribThickness(self) -> ModelParameter:
        """
        Returns the model parameter controlling ribs thickness.
        """
        return ModelParameter()
    @property
    def ribDraftAngle(self) -> ModelParameter:
        """
        Returns the model parameter controlling ribs draft angle.
        """
        return ModelParameter()
    @property
    def ribOuterDraftAngle(self) -> ModelParameter:
        """
        Returns the model parameter controlling size of rib outer draft angle.
        """
        return ModelParameter()
    @property
    def ribCutSize(self) -> ModelParameter:
        """
        Returns the model parameter controlling size of rib chamfer or fillet.
        """
        return ModelParameter()
    @property
    def ribChamferAngle(self) -> ModelParameter:
        """
        Returns the model parameter controlling size of rib chamfer angle.
        """
        return ModelParameter()
    @property
    def ribTipRadius(self) -> ModelParameter:
        """
        Returns the model parameter controlling size of rib tip blend radius.
        """
        return ModelParameter()
    @property
    def ribBlendRadius(self) -> ModelParameter:
        """
        Returns the model parameter controlling size of rib root blend radius.
        """
        return ModelParameter()
    @property
    def ribRotation(self) -> ModelParameter:
        """
        Returns the model parameter controlling rotation angle of the first rib from the reference vector.
        For selected sketch point(s) the direction of reference vector is X-axis of the parent sketch.
        """
        return ModelParameter()
    @property
    def ribTotalAngle(self) -> ModelParameter:
        """
        Returns the model parameter controlling total angle for ribs distribution.
        """
        return ModelParameter()
    @property
    def ribCount(self) -> ModelParameter:
        """
        Returns the model parameter controlling number of ribs.
        """
        return ModelParameter()

class BoundaryFillFeature(Feature):
    """
    Object that represents an existing boundary fill feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BoundaryFillFeature:
        return BoundaryFillFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> BoundaryFillFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return BoundaryFillFeature()
    def applyCellChanges(self) -> bool:
        """
        After making any changes to the set of selected cells you must call this method to
        indicate all changes have been made and to apply those changes to the feature.
        Returns true if the apply was successful.
        """
        return bool()
    @property
    def tools(self) -> core.ObjectCollection:
        """
        A collection of construction planes and open or closed BRepBody objects that define the
        set of boundaries that have been used in the calculation of available closed boundaries.
        Setting this property will clear all currently selected tools.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()
    @tools.setter
    def tools(self, value: core.ObjectCollection):
        """
        A collection of construction planes and open or closed BRepBody objects that define the
        set of boundaries that have been used in the calculation of available closed boundaries.
        Setting this property will clear all currently selected tools.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def bRepCells(self) -> BRepCells:
        """
        Gets the set of closed boundaries that have been calculated based on the current set of
        tools. To get this collection the model must be in the state it was when the feature
        was initially computed, which means the timeline marker must be positioned to immediately
        before this feature.
        
        After changing any selected cells you must call the applyCellChanges method to update
        the feature with the changes.
        """
        return BRepCells()
    @property
    def operation(self) -> FeatureOperations:
        """
        Gets and sets the type of operation performed by the boundary fill feature.
        """
        return FeatureOperations()
    @operation.setter
    def operation(self, value: FeatureOperations):
        """
        Gets and sets the type of operation performed by the boundary fill feature.
        """
        pass
    @property
    def nativeObject(self) -> BoundaryFillFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return BoundaryFillFeature()
    @property
    def isRemoveTools(self) -> bool:
        """
        Gets and sets whether any BRepBodys that were used as tools should be removed as part of the feature creation.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isRemoveTools.setter
    def isRemoveTools(self, value: bool):
        """
        Gets and sets whether any BRepBodys that were used as tools should be removed as part of the feature creation.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass

class BoxFeature(Feature):
    """
    Object that represents an existing box feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> BoxFeature:
        return BoxFeature()

class C3MFExportOptions(ExportOptions):
    """
    Defines that a 3MF export is to be done and specifies the various options.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> C3MFExportOptions:
        return C3MFExportOptions()
    @property
    def isOneFilePerBody(self) -> bool:
        """
        If the input is an Occurrence or the root Component, this specifies if a single file should be created containing
        all of the bodies within that occurrence or component or if multiple files should be created; one for each body.
        If multiple files are created, the body name is appended to the filename. The default is false.
        """
        return bool()
    @isOneFilePerBody.setter
    def isOneFilePerBody(self, value: bool):
        """
        If the input is an Occurrence or the root Component, this specifies if a single file should be created containing
        all of the bodies within that occurrence or component or if multiple files should be created; one for each body.
        If multiple files are created, the body name is appended to the filename. The default is false.
        """
        pass
    @property
    def meshRefinement(self) -> MeshRefinementSettings:
        """
        Gets and sets the current simple mesh refinement settings. Setting this property
        will reset the surfaceDeviation, normalDeviation, maximumEdgeLength, and aspectRatio
        to values that correspond to the specified mesh refinement. The default is MeshRefinementMedium.
        """
        return MeshRefinementSettings()
    @meshRefinement.setter
    def meshRefinement(self, value: MeshRefinementSettings):
        """
        Gets and sets the current simple mesh refinement settings. Setting this property
        will reset the surfaceDeviation, normalDeviation, maximumEdgeLength, and aspectRatio
        to values that correspond to the specified mesh refinement. The default is MeshRefinementMedium.
        """
        pass
    @property
    def surfaceDeviation(self) -> float:
        """
        Gets and sets the current surface deviation, or the distance the mesh can deviate
        from the actual surface. This is defined in centimeter. Setting this property
        will automatically set the meshRefinement to MeshRefinementCustom. The default is the value
        associated with medium mesh refinement.
        """
        return float()
    @surfaceDeviation.setter
    def surfaceDeviation(self, value: float):
        """
        Gets and sets the current surface deviation, or the distance the mesh can deviate
        from the actual surface. This is defined in centimeter. Setting this property
        will automatically set the meshRefinement to MeshRefinementCustom. The default is the value
        associated with medium mesh refinement.
        """
        pass
    @property
    def normalDeviation(self) -> float:
        """
        Gets and sets the current normal deviation, or the angle the mesh normals at the vertices can deviate
        from the actual surface normals. This is defined in radians. Setting this property
        will automatically set the meshRefinement to MeshRefinementCustom. The default is the value
        associated with medium mesh refinement.
        """
        return float()
    @normalDeviation.setter
    def normalDeviation(self, value: float):
        """
        Gets and sets the current normal deviation, or the angle the mesh normals at the vertices can deviate
        from the actual surface normals. This is defined in radians. Setting this property
        will automatically set the meshRefinement to MeshRefinementCustom. The default is the value
        associated with medium mesh refinement.
        """
        pass
    @property
    def maximumEdgeLength(self) -> float:
        """
        Gets and sets the maximum length of any mesh edge. This is defined in centimeter. Setting this property
        will automatically set the meshRefinement to MeshRefinementCustom. The default is the value
        associated with medium mesh refinement.
        """
        return float()
    @maximumEdgeLength.setter
    def maximumEdgeLength(self, value: float):
        """
        Gets and sets the maximum length of any mesh edge. This is defined in centimeter. Setting this property
        will automatically set the meshRefinement to MeshRefinementCustom. The default is the value
        associated with medium mesh refinement.
        """
        pass
    @property
    def aspectRatio(self) -> float:
        """
        Gets and sets the minimum aspect ratio for that triangles that are generated for the mesh. Setting this property
        will automatically set the meshRefinement to MeshRefinementCustom. The default is the value
        associated with medium mesh refinement.
        """
        return float()
    @aspectRatio.setter
    def aspectRatio(self, value: float):
        """
        Gets and sets the minimum aspect ratio for that triangles that are generated for the mesh. Setting this property
        will automatically set the meshRefinement to MeshRefinementCustom. The default is the value
        associated with medium mesh refinement.
        """
        pass
    @property
    def availablePrintUtilities(self) -> list[str]:
        """
        Returns a list of the known available print utilities. These strings can be used to set the PrintUtility
        property to specify which print utility to open the 3MF file in.
        """
        return [str()]
    @property
    def printUtility(self) -> str:
        """
        Specifies which print utility to use when opening the 3MF file if the sendToPrintUtility property is true.
        The value of this property can be one of the strings returned by the availalbePrintUtilities property, which
        will specify one of the know print utilities. You can also specify a custom print utility by specifying
        the full path to the print utility executable. The default value of this property is the last setting specified
        in the user-interface.
        """
        return str()
    @printUtility.setter
    def printUtility(self, value: str):
        """
        Specifies which print utility to use when opening the 3MF file if the sendToPrintUtility property is true.
        The value of this property can be one of the strings returned by the availalbePrintUtilities property, which
        will specify one of the know print utilities. You can also specify a custom print utility by specifying
        the full path to the print utility executable. The default value of this property is the last setting specified
        in the user-interface.
        """
        pass
    @property
    def sendToPrintUtility(self) -> bool:
        """
        Gets and sets whether the created 3MF file will be sent to the print utility specified by the printUtility property. If this
        is false a filename must be defined.
        """
        return bool()
    @sendToPrintUtility.setter
    def sendToPrintUtility(self, value: bool):
        """
        Gets and sets whether the created 3MF file will be sent to the print utility specified by the printUtility property. If this
        is false a filename must be defined.
        """
        pass

class ChamferFeature(Feature):
    """
    Object that represents an existing chamfer feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ChamferFeature:
        return ChamferFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> ChamferFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return ChamferFeature()
    @property
    def nativeObject(self) -> ChamferFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return ChamferFeature()
    @property
    def cornerType(self) -> ChamferCornerTypes:
        """
        Gets and sets the type of corner to be modeled when multiple edges connect at a vertex.
        """
        return ChamferCornerTypes()
    @cornerType.setter
    def cornerType(self, value: ChamferCornerTypes):
        """
        Gets and sets the type of corner to be modeled when multiple edges connect at a vertex.
        """
        pass
    @property
    def edgeSets(self) -> ChamferEdgeSets:
        """
        Returns the edge sets associated with this chamfer.
        """
        return ChamferEdgeSets()

class ChordLengthFilletEdgeSet(FilletEdgeSet):
    """
    Provides access to the edges and the parameter associated with a chord length fillet.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ChordLengthFilletEdgeSet:
        return ChordLengthFilletEdgeSet()
    @property
    def edges(self) -> core.ObjectCollection:
        """
        Gets and sets an ObjectCollection containing the BRepEdge, BRepFace, and Feature that are filleted.
        If the isTangentChain argument is true additional edges or faces may also get filleted if they are tangentially
        connected to any of the input edges or faces.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()
    @edges.setter
    def edges(self, value: core.ObjectCollection):
        """
        Gets and sets an ObjectCollection containing the BRepEdge, BRepFace, and Feature that are filleted.
        If the isTangentChain argument is true additional edges or faces may also get filleted if they are tangentially
        connected to any of the input edges or faces.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def chordLength(self) -> ModelParameter:
        """
        Returns the model parameter that controls the chord length of the fillet. You can edit
        the chord length by using the properties on the returned ModelParameter object.
        """
        return ModelParameter()

class ChordLengthFilletEdgeSetInput(FilletEdgeSetInput):
    """
    Provides access to the edges and the parameter associated with a chord length fillet.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ChordLengthFilletEdgeSetInput:
        return ChordLengthFilletEdgeSetInput()
    @property
    def chordLength(self) -> core.ValueInput:
        """
        Gets and sets a ValueInput object that defines the chord length of the fillet. If the
        ValueInput uses a real value then it is interpreted as centimeters. If it is a string
        then the units can be defined as part of the string (i.e. "2 in") or if no units are
        specified it is interpreted using the current document units for length.
        """
        return core.ValueInput()
    @chordLength.setter
    def chordLength(self, value: core.ValueInput):
        """
        Gets and sets a ValueInput object that defines the chord length of the fillet. If the
        ValueInput uses a real value then it is interpreted as centimeters. If it is a string
        then the units can be defined as part of the string (i.e. "2 in") or if no units are
        specified it is interpreted using the current document units for length.
        """
        pass

class CircularPatternConstraint(GeometricConstraint):
    """
    A circular pattern constraint in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CircularPatternConstraint:
        return CircularPatternConstraint()
    def createForAssemblyContext(self, occurrence: Occurrence) -> CircularPatternConstraint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return CircularPatternConstraint()
    @property
    def entities(self) -> list[SketchEntity]:
        """
        Gets and sets the entities to pattern. Sketch points and curves are valid
        entities to pattern.
        """
        return [SketchEntity()]
    @entities.setter
    def entities(self, value: list[SketchEntity]):
        """
        Gets and sets the entities to pattern. Sketch points and curves are valid
        entities to pattern.
        """
        pass
    @property
    def createdEntities(self) -> list[SketchEntity]:
        """
        Returns an array that contains all of the sketch entities that were created as a result
        of the pattern. This does not contain the original entities that were used as input to
        the pattern. The input entities can be obtained by using the entities property.
        """
        return [SketchEntity()]
    @property
    def centerPoint(self) -> SketchPoint:
        """
        Gets and sets the sketch point that defines the center of the pattern.
        """
        return SketchPoint()
    @centerPoint.setter
    def centerPoint(self, value: SketchPoint):
        """
        Gets and sets the sketch point that defines the center of the pattern.
        """
        pass
    @property
    def quantity(self) -> ModelParameter:
        """
        Returns the parameter that controls the number of instances in the pattern. To change
        the value, use the properties on the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def totalAngle(self) -> ModelParameter:
        """
        Returns the parameter that controls the number of instances in the pattern. A positive
        angle is a counter-clockwise direction and a negative angle can be used to reverse the direction.
        An angle of 360 degrees or 2 pi radians will create a full circular pattern.
        """
        return ModelParameter()
    @property
    def isSymmetric(self) -> bool:
        """
        Gets and sets if the angle extent is in one direction or is symmetric.
        """
        return bool()
    @isSymmetric.setter
    def isSymmetric(self, value: bool):
        """
        Gets and sets if the angle extent is in one direction or is symmetric.
        """
        pass
    @property
    def isSuppressed(self) -> list[bool]:
        """
        Specifies which, if any, instances of the pattern are suppressed. This returns an
        array of Boolean values that indicates if a particular instance in the pattern is
        suppressed or not. A value of true will result in the associated instance being suppressed.
        """
        return [bool()]
    @isSuppressed.setter
    def isSuppressed(self, value: list[bool]):
        """
        Specifies which, if any, instances of the pattern are suppressed. This returns an
        array of Boolean values that indicates if a particular instance in the pattern is
        suppressed or not. A value of true will result in the associated instance being suppressed.
        """
        pass
    @property
    def nativeObject(self) -> CircularPatternConstraint:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return CircularPatternConstraint()

class CircularPatternFeature(Feature):
    """
    Object that represents an existing circular pattern feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CircularPatternFeature:
        return CircularPatternFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> CircularPatternFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return CircularPatternFeature()
    @property
    def inputEntities(self) -> core.ObjectCollection:
        """
        Gets and sets the entities to pattern using an ObjectCollection. The collection can contain BRepFace,
        PartFeature, BRepBody, or Occurrence objects. All of the entities provided must be the same type.
        For example, it must contain only bodies and can't contain both bodies and faces.
        
        ConstructionPoint, ConstructionAxis, and ConstructionPlane objects can also be patterned. When patterning any
        construction goemetry, only one entity can be patterned at a time, so the ObjectCollection will always contain a
        single entity
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()
    @inputEntities.setter
    def inputEntities(self, value: core.ObjectCollection):
        """
        Gets and sets the entities to pattern using an ObjectCollection. The collection can contain BRepFace,
        PartFeature, BRepBody, or Occurrence objects. All of the entities provided must be the same type.
        For example, it must contain only bodies and can't contain both bodies and faces.
        
        ConstructionPoint, ConstructionAxis, and ConstructionPlane objects can also be patterned. When patterning any
        construction goemetry, only one entity can be patterned at a time, so the ObjectCollection will always contain a
        single entity
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def axis(self) -> core.Base:
        """
        Gets and sets the axis of circular pattern. This can be a sketch line, linear edge,
        construction axis, an edge/sketch curve that defines an axis (circle, etc.) or a face that defines an axis (cylinder, cone, torus, etc.).
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @axis.setter
    def axis(self, value: core.Base):
        """
        Gets and sets the axis of circular pattern. This can be a sketch line, linear edge,
        construction axis, an edge/sketch curve that defines an axis (circle, etc.) or a face that defines an axis (cylinder, cone, torus, etc.).
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def totalAngle(self) -> ModelParameter:
        """
        Returns the parameter controlling the total angle.
        To edit the angle use properties on the parameter to edit its value.
        This property returns null in the case where the feature is non-parametric.
        A negative value can be used to change the direction of the pattern.
        """
        return ModelParameter()
    @property
    def isSymmetric(self) -> bool:
        """
        Gets and sets if the angle extent is in one direction or symmetric.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isSymmetric.setter
    def isSymmetric(self, value: bool):
        """
        Gets and sets if the angle extent is in one direction or symmetric.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def quantity(self) -> ModelParameter:
        """
        Returns the parameter controlling the number of pattern elements, including any suppressed elements.
        To edit the quantity use properties on the parameter to edit its value.
        This property returns null in the case where the feature is non-parametric.
        """
        return ModelParameter()
    @property
    def suppressedElementsIds(self) -> list[int]:
        """
        Gets and sets the id's of the elements to suppress.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return [int()]
    @suppressedElementsIds.setter
    def suppressedElementsIds(self, value: list[int]):
        """
        Gets and sets the id's of the elements to suppress.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def patternElements(self) -> PatternElements:
        """
        Gets the PatternElements collection that contains the elements created by this pattern.
        """
        return PatternElements()
    @property
    def resultFeatures(self) -> core.ObjectCollection:
        """
        Returns the features that were created as a result of this pattern.
        This is only valid for a direct edit model and this returns null
        in the case where the feature is parametric.
        """
        return core.ObjectCollection()
    @property
    def nativeObject(self) -> CircularPatternFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return CircularPatternFeature()
    @property
    def patternEntityType(self) -> PatternEntityTypes:
        """
        Returns the type of entities the pattern consists of. This can be used to help
        determine the type of results that will be found in the pattern elements.
        """
        return PatternEntityTypes()
    @property
    def patternComputeOption(self) -> PatternComputeOptions:
        """
        Gets and sets the compute option for this pattern feature.
        This property only applies when patterning features and is ignored in the direct modeling environment.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return PatternComputeOptions()
    @patternComputeOption.setter
    def patternComputeOption(self, value: PatternComputeOptions):
        """
        Gets and sets the compute option for this pattern feature.
        This property only applies when patterning features and is ignored in the direct modeling environment.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass

class CoilFeature(Feature):
    """
    Object that represents an existing coil primitive feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CoilFeature:
        return CoilFeature()

class CoincidentConstraint(GeometricConstraint):
    """
    A coincident constraint in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CoincidentConstraint:
        return CoincidentConstraint()
    def createForAssemblyContext(self, occurrence: Occurrence) -> CoincidentConstraint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return CoincidentConstraint()
    @property
    def point(self) -> SketchPoint:
        """
        Returns the sketch point that is constrained.
        """
        return SketchPoint()
    @property
    def entity(self) -> SketchEntity:
        """
        The sketch curve or point the point is constrained to.
        """
        return SketchEntity()
    @property
    def nativeObject(self) -> CoincidentConstraint:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return CoincidentConstraint()

class CoincidentToSurfaceConstraint(GeometricConstraint):
    """
    A sketch constraint defining that a point is coincident to a surface.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CoincidentToSurfaceConstraint:
        return CoincidentToSurfaceConstraint()
    def createForAssemblyContext(self, occurrence: Occurrence) -> CoincidentToSurfaceConstraint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return CoincidentToSurfaceConstraint()
    @property
    def point(self) -> SketchPoint:
        """
        Returns the sketch point that is constrained.
        """
        return SketchPoint()
    @property
    def surface(self) -> core.Base:
        """
        Returns the BRepFace or ConstructionPlane the point is constrained to.
        """
        return core.Base()
    @property
    def nativeObject(self) -> CoincidentToSurfaceConstraint:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return CoincidentToSurfaceConstraint()

class CollinearConstraint(GeometricConstraint):
    """
    A collinear constraint in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CollinearConstraint:
        return CollinearConstraint()
    def createForAssemblyContext(self, occurrence: Occurrence) -> CollinearConstraint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return CollinearConstraint()
    @property
    def lineOne(self) -> SketchLine:
        """
        Returns the first line.
        """
        return SketchLine()
    @property
    def lineTwo(self) -> SketchLine:
        """
        Returns the second line.
        """
        return SketchLine()
    @property
    def nativeObject(self) -> CollinearConstraint:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return CollinearConstraint()

class CombineFeature(Feature):
    """
    Object that represents an existing Combine feature in a design.
    In non-parametric environment this object does not exist.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CombineFeature:
        return CombineFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> CombineFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return CombineFeature()
    @property
    def targetBody(self) -> BRepBody:
        """
        Gets and sets the BRep Body object that represents the blank body.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return BRepBody()
    @targetBody.setter
    def targetBody(self, value: BRepBody):
        """
        Gets and sets the BRep Body object that represents the blank body.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def toolBodies(self) -> core.ObjectCollection:
        """
        Gets and sets the BRep Body objects that represent the tool bodies.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()
    @toolBodies.setter
    def toolBodies(self, value: core.ObjectCollection):
        """
        Gets and sets the BRep Body objects that represent the tool bodies.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def operation(self) -> FeatureOperations:
        """
        Gets and sets the type of operation performed by the combine.
        The valid values are JoinFeatureOperation, CutFeatureOperation and IntersectFeatureOperation.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return FeatureOperations()
    @operation.setter
    def operation(self, value: FeatureOperations):
        """
        Gets and sets the type of operation performed by the combine.
        The valid values are JoinFeatureOperation, CutFeatureOperation and IntersectFeatureOperation.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def isNewComponent(self) -> bool:
        """
        Gets a boolean value for whether or not a new component was created when this feature was created.
        """
        return bool()
    @property
    def isKeepToolBodies(self) -> bool:
        """
        Gets and sets a boolean value for whether or not the tool bodies are retrained after the combine results.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isKeepToolBodies.setter
    def isKeepToolBodies(self, value: bool):
        """
        Gets and sets a boolean value for whether or not the tool bodies are retrained after the combine results.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def nativeObject(self) -> CombineFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return CombineFeature()

class Component(BaseComponent):
    """
    Represents a component in the data model.
    A component represents a set of geometry, features, and parameters that make up an item in the design.
    A component can be referenced multiple times into a design with an Occurrence object.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Component:
        return Component()
    def createOpenProfile(self, curves: core.Base, chainCurves: bool = True) -> Profile:
        """
        Creates an open profile based on the input curve(s).
        curves : A SketchCurve or an ObjectCollection containing multiple sketch entities. If a single sketch curve
        is input the chainCurves argument is checked to determine if connected curves (they do not need to be tangent)
        should be automatically found. If multiple curves are provided the chainCurves argument is always
        treated as false so you must provide all of the curves in the object collection that you want included in the profile.
        The provided curves must all connect together in a single path.
        
        The input curves do not need to be in the same sketch, but they do need to geometrically connect for
        a valid profile to be created.
        chainCurves : If true, this finds any curves within the same sketch that connect to the single input curve and automatically includes them in the profile. If
        false, only the curves provided will be used to define the profile. This argument is ignored and treated as false if multiple curves are input.
        Returns the new Profile object or null in the case of a failure.
        """
        return Profile()
    def createBRepEdgeProfile(self, edges: core.Base, chainEdges: bool = True) -> Profile:
        """
        Creates a profile based on the outside open edges of a BRepFace.
        edges : A single BRepEdge object or an ObjectCollection containing multiple BRepEdge objects, or a BRepLoop object. If a single edge
        is input, the chainEdges argument is checked to determine if connected edges (they do not need to be tangent)
        should be automatically found. If multiple edges are provided the chainEdges argument is always
        treated as false so you must provide all of the edges in the object collection that you want included in the profile.
        and the edges must all connect together in a single path. if a BRepLoop object is provided, all of the edges in the loop
        are included in the profile and the chainEdges argument is ignored.
        chainEdges : If true, this finds any edges that connect to the single input edge and automatically includes them in the profile. If
        false, only the edges provided will be used to define the profile. This argument is ignored and treated as false if multiple edges
        or a BRepLoop is input.
        Returns the new Profile object or null in the case of a failure.
        """
        return Profile()
    def saveCopyAs(self, name: str, dataFolder: core.DataFolder, description: str, tag: str) -> core.DataFileFuture:
        """
        Performs a Save Copy As on this component. This saves the specified component as a new document
        in the specified location.
        name : The name to use for the new document. If this is an empty string, Fusion will use the
        name of the component being saved.
        dataFolder : The data folder to save the new document to.
        description : The description string of the document. This can be an empty string.
        tag : The tag string of the document. This can be an empty string.
        Returns a DataFileFuture object that can be used to track the progress of the upload and get the
        resulting DataFile once it's available on A360.
        """
        return core.DataFileFuture()
    def getPhysicalProperties(self, accuracy: CalculationAccuracy = CalculationAccuracy.LowCalculationAccuracy) -> PhysicalProperties:
        """
        Returns the PhysicalProperties object that has properties for getting the area, density, mass, volume, moments, etc.
        of this component.
        accuracy : Specifies the desired level of computational accuracy of the property calculations.
        The default value of 'LowCalculationAccuracy' returns results within a +/- 1% error margin.
        Returns a PhysicalProperties object that can be used to get the various physical property related values.
        """
        return PhysicalProperties()
    def transformOccurrences(self, occurrences: list[Occurrence], transforms: list[core.Matrix3D], ignoreJoints: bool) -> bool:
        """
        Transforms a set of occurrences in one step. This provides better performance than transforming them one at a time.
        This method is only valid when called on the root component because Fusion flattens the entire assembly structure
        when manipulating the assembly so all transforms are relative to the root component.
        occurrences : An array of Occurrence objects that you want to transform. These must all be in the context of the root component which
        means proxies must be used for occurrences that are in sub-components.
        transforms : An array of Matrix3D objects that defines the transform to apply to each occurrence. This array must be the same size
        as the array provided for the occurrences argument and the transform will be applied to the occurrence at the same index
        in the occurrences array.
        ignoreJoints : Specifies if the joints are to be ignored and the occurrences are to be positioned based on then specified transform or if
        the joints should be used and the occurrence is transformed the best it can while still honoring the joints.
        Returns true if the transform was successful.
        """
        return bool()
    def createFlatPattern(self, stationaryFace: BRepFace) -> FlatPattern:
        """
        Creates a flat pattern of the sheet metal folded body. The isSheetMetal property of the BRepBody object can be
        used to determine if a particular body can be flattened. Creating a flat pattern will fail if a flat pattern already exists in the
        component. You can determine if a flat pattern already exists by checking if the flatPattern property returns a FlatPattern object
        or null.
        stationaryFace : A planar face in the sheet metal body that is on the top or bottom of the part and not an edge face. This face will
        be positioned on the X-Y plane of the flat pattern and the rest of the model will be flattened relative to this face.
        The face must exist on a body that is owned by this component.
        Returns the newly created flat pattern.
        """
        return FlatPattern()
    def boundingBox2(self, entityTypes: BoundingBoxEntityTypes) -> core.BoundingBox3D:
        """
        Returns the bounding box of the specified entity types within the component.
        entityTypes : Bitwise value that specifies the types of entities to include in the
        calculation of the bounding box.
        Returns a BoundingBox3D object if the calculation was successful and null in the case where there is no valid geometry and the bounding box is empty.
        """
        return core.BoundingBox3D()
    def createThumbnail(self, width: int = 256, height: int = 256, imageType: str = "PNG") -> core.DataObject:
        """
        Creates a thumbnail for this component. This can be a root component to get a thumbnail that
        represents the associated file, or it can be any sub component to get a thumbnail of a subset of the
        complete assembly or individual parts.
        width : Optional argument to define the width of the thumbnail in pixels. A default width of 256 pixels is used if no width is specified.
        height : Optional argument to define the height of the thumbnail in pixels. A default height of 256 pixels is used if no height is specified.
        imageType : Optional argument to define the type of image data to create. The default of PNG is used if no type is specified. Valid types
        include "PNG", "JPG", "TIF", and "BMP".
        Returns a DataObject that you can use to save the thumbnail to a file or to access the binary data
        of the bitmap directly.
        """
        return core.DataObject()
    @property
    def sketches(self) -> Sketches:
        """
        Returns the sketches collection associated with this component.
        This provides access to the existing sketches and supports
        the creation of new sketches.
        """
        return Sketches()
    @property
    def features(self) -> Features:
        """
        Returns the collection that provides access to all of the features
        associated with this component.
        """
        return Features()
    @property
    def meshBodies(self) -> MeshBodies:
        """
        Returns the mesh bodies collection associated with this component.
        """
        return MeshBodies()
    @property
    def modelParameters(self) -> ModelParameters:
        """
        Returns the collection of model parameters in the Component.
        """
        return ModelParameters()
    @property
    def isOriginFolderLightBulbOn(self) -> bool:
        """
        Gets and sets if the light bulb of the origin folder as seen in the browser is on or off.
        This controls the visibility of the origin construction geometry.
        """
        return bool()
    @isOriginFolderLightBulbOn.setter
    def isOriginFolderLightBulbOn(self, value: bool):
        """
        Gets and sets if the light bulb of the origin folder as seen in the browser is on or off.
        This controls the visibility of the origin construction geometry.
        """
        pass
    @property
    def isConstructionFolderLightBulbOn(self) -> bool:
        """
        Gets and sets if the light bulb of the construction folder as seen in the browser is on or off.
        This controls the visibility of the (non-origin) construction geometry
        (i.e. planes, points, axes).
        """
        return bool()
    @isConstructionFolderLightBulbOn.setter
    def isConstructionFolderLightBulbOn(self, value: bool):
        """
        Gets and sets if the light bulb of the construction folder as seen in the browser is on or off.
        This controls the visibility of the (non-origin) construction geometry
        (i.e. planes, points, axes).
        """
        pass
    @property
    def isSketchFolderLightBulbOn(self) -> bool:
        """
        Gets and sets if the light bulb of the sketch folder as seen in the browser is on or off.
        This controls the visibility of the sketches in this component.
        """
        return bool()
    @isSketchFolderLightBulbOn.setter
    def isSketchFolderLightBulbOn(self, value: bool):
        """
        Gets and sets if the light bulb of the sketch folder as seen in the browser is on or off.
        This controls the visibility of the sketches in this component.
        """
        pass
    @property
    def xYConstructionPlane(self) -> ConstructionPlane:
        """
        Returns the XY origin construction plane.
        """
        return ConstructionPlane()
    @property
    def xZConstructionPlane(self) -> ConstructionPlane:
        """
        Returns the XZ origin construction plane.
        """
        return ConstructionPlane()
    @property
    def yZConstructionPlane(self) -> ConstructionPlane:
        """
        Returns the YZ origin construction plane.
        """
        return ConstructionPlane()
    @property
    def xConstructionAxis(self) -> ConstructionAxis:
        """
        Returns the X origin construction axis.
        """
        return ConstructionAxis()
    @property
    def yConstructionAxis(self) -> ConstructionAxis:
        """
        Returns the Y origin construction axis.
        """
        return ConstructionAxis()
    @property
    def zConstructionAxis(self) -> ConstructionAxis:
        """
        Returns the Z origin construction axis.
        """
        return ConstructionAxis()
    @property
    def originConstructionPoint(self) -> ConstructionPoint:
        """
        Returns the origin construction point.
        """
        return ConstructionPoint()
    @property
    def partNumber(self) -> str:
        """
        Gets and sets the part number associated with this component. Setting this
        to an empty string will reset it to be the same as the component name.
        """
        return str()
    @partNumber.setter
    def partNumber(self, value: str):
        """
        Gets and sets the part number associated with this component. Setting this
        to an empty string will reset it to be the same as the component name.
        """
        pass
    @property
    def description(self) -> str:
        """
        Gets and sets the description associated with this component.
        """
        return str()
    @description.setter
    def description(self, value: str):
        """
        Gets and sets the description associated with this component.
        """
        pass
    @property
    def joints(self) -> Joints:
        """
        Returns the collection of joints associated with this component.
        """
        return Joints()
    @property
    def asBuiltJoints(self) -> AsBuiltJoints:
        """
        Returns the collection of as-built joints associated with this component.
        """
        return AsBuiltJoints()
    @property
    def rigidGroups(self) -> RigidGroups:
        """
        Returns the collection of rigid groups associated with this component.
        """
        return RigidGroups()
    @property
    def material(self) -> core.Material:
        """
        Gets and sets the physical material assigned to this component.
        """
        return core.Material()
    @material.setter
    def material(self, value: core.Material):
        """
        Gets and sets the physical material assigned to this component.
        """
        pass
    @property
    def physicalProperties(self) -> PhysicalProperties:
        """
        Returns the PhysicalProperties object that has properties for getting the area, density, mass, volume, moments, etc.
        of this component. Property values will be calculated using the 'LowCalculationAccuracy' setting when using this property
        to get the PhysicalProperties object. To specify a higher calculation tolerance, use the getPhysicalProperties method instead.
        Returns a PhysicalProperties object that can be used to get the various physical property related values.
        """
        return PhysicalProperties()
    @property
    def boundingBox(self) -> core.BoundingBox3D:
        """
        Returns the bounding box of this component. This is always in world space of the component.
        The boundingBox2 method provides greater control over which types of entities you want
        included in the bounding box calculation.
        """
        return core.BoundingBox3D()
    @property
    def isJointsFolderLightBulbOn(self) -> bool:
        """
        Gets and sets if the light bulb of the joints folder as seen in the browser is on or off.
        This controls the visibility of the joints in this occurrence. The light bulb for the
        folder is component specific and will turn off the joints for all occurrences referencing
        the component.
        """
        return bool()
    @isJointsFolderLightBulbOn.setter
    def isJointsFolderLightBulbOn(self, value: bool):
        """
        Gets and sets if the light bulb of the joints folder as seen in the browser is on or off.
        This controls the visibility of the joints in this occurrence. The light bulb for the
        folder is component specific and will turn off the joints for all occurrences referencing
        the component.
        """
        pass
    @property
    def attributes(self) -> core.Attributes:
        """
        Returns the collection of attributes associated with this face.
        """
        return core.Attributes()
    @property
    def isBodiesFolderLightBulbOn(self) -> bool:
        """
        Gets and sets if the light bulb of the bodies folder as seen in the browser is on or off.
        This controls the visibility of the solid/surface bodies and the mesh bodies in this component.
        """
        return bool()
    @isBodiesFolderLightBulbOn.setter
    def isBodiesFolderLightBulbOn(self, value: bool):
        """
        Gets and sets if the light bulb of the bodies folder as seen in the browser is on or off.
        This controls the visibility of the solid/surface bodies and the mesh bodies in this component.
        """
        pass
    @property
    def allJoints(self) -> list[Joint]:
        """
        Returns all joints in this component and any sub components. The joints returned are all in the context
        of this component so any joints in sub components will be proxies. This is primarily useful when used
        from the root component because Fusion flattens the assembly structure, including joints, when manipulating
        an assembly.
        """
        return [Joint()]
    @property
    def allAsBuiltJoints(self) -> list[AsBuiltJoint]:
        """
        Returns all joint origins in this component and any sub components. The joint origins returned are all in the context
        of this component so any joint origins in sub components will be proxies. This is primarily useful when used
        from the root component because Fusion flattens the assembly structure, including joint origins, when manipulating
        an assembly.
        """
        return [AsBuiltJoint()]
    @property
    def allJointOrigins(self) -> list[JointOrigin]:
        """
        Returns all as-built joints in this component and any sub components. The as-built joints returned are all in the context
        of this component so any as-built joints in sub components will be proxies. This is primarily useful when used
        from the root component because Fusion flattens the assembly structure, including as-built joints, when manipulating
        an assembly.
        """
        return [JointOrigin()]
    @property
    def allRigidGroups(self) -> list[RigidGroup]:
        """
        Returns all rigid groups in this component and any sub components. The rigid groups returned are all in the context
        of this component so any rigid groups in sub components will be proxies. This is primarily useful when used
        from the root component because Fusion flattens the assembly structure, including rigid groups, when manipulating
        an assembly.
        """
        return [RigidGroup()]
    @property
    def opacity(self) -> float:
        """
        Gets and sets the opacity override assigned to this component. A value of 1.0 specifies
        that is it completely opaque and a value of 0.0 specifies that is it completely transparent.
        
        This is only applicable for a non-root local component.
        
        This value is not necessarily related to what the user sees because the opacity is inherited.
        For example, if you have TopComponent and it has a component in it called SubComponent and you
        set the opacity of TopComponent to be 0.5, SubComponent will also be shown as slightly transparent
        even though the opacity property for it will return 1.0. Because a component can be referenced as
        an occurrence in other components and they can have different opacity settings, it's possible that
        different instances of the same component can display using different opacity levels. To get the
        opacity that it is being displayed with use the Occurrence.visibleOpacity property.
        """
        return float()
    @opacity.setter
    def opacity(self, value: float):
        """
        Gets and sets the opacity override assigned to this component. A value of 1.0 specifies
        that is it completely opaque and a value of 0.0 specifies that is it completely transparent.
        
        This is only applicable for a non-root local component.
        
        This value is not necessarily related to what the user sees because the opacity is inherited.
        For example, if you have TopComponent and it has a component in it called SubComponent and you
        set the opacity of TopComponent to be 0.5, SubComponent will also be shown as slightly transparent
        even though the opacity property for it will return 1.0. Because a component can be referenced as
        an occurrence in other components and they can have different opacity settings, it's possible that
        different instances of the same component can display using different opacity levels. To get the
        opacity that it is being displayed with use the Occurrence.visibleOpacity property.
        """
        pass
    @property
    def jointOrigins(self) -> JointOrigins:
        """
        Returns the collection of joint origins associated with this component.
        """
        return JointOrigins()
    @property
    def customGraphicsGroups(self) -> CustomGraphicsGroups:
        """
        Returns the customGraphicsGroups object in this component.
        """
        return CustomGraphicsGroups()
    @property
    def revisionId(self) -> str:
        """
        Returns the current revision ID of the component. This ID changes any time the component is modified in any way. By getting
        and saving the ID when you create any data that is dependent on the component, you can then compare the saved
        ID with the current ID to determine if the component has changed to know if you should update your data.
        """
        return str()
    @property
    def entityToken(self) -> str:
        """
        Returns a token for the Component object. This can be saved and used at a later
        time with the Design.findEntityByToken method to get back the same component.
        
        When using entity tokens it's important to understand that the token string returned for a
        specific entity can be different over time. However, even if you have two different token
        strings that were obtained from the same entity, when you use findEntityByToken they
        will both return the same entity. Because of that you should never compare entity tokens
        as way to determine what the token represents. Instead, you need to use the findEntityByToken
        method to get the two entities identified by the tokens and then compare them.
        """
        return str()
    @property
    def id(self) -> str:
        """
        Returns the persistent ID of the component. This ID is created with the component and does not change.
        Because this ID does not change, different revisions of the same design or copies of the design asset/file
        will retain this ID. If components from different designs have the same ID, it indicates they are either
        different revisions or a copy of the design was made. Therefore, this ID will always be unique within a
        single design, but may not be unique in an assembly where externally referenced designs include different
        revisions or copies of a design.
        
        The ID is also the same ID used by PIM (Product Information Model).
        """
        return str()
    @property
    def flatPattern(self) -> FlatPattern:
        """
        Gets the existing flat pattern or returns null in the case where a flat pattern doesn't exist in this component.
        """
        return FlatPattern()
    @property
    def activeSheetMetalRule(self) -> SheetMetalRule:
        """
        Gets and sets the active sheet metal rule. This can return null in the case where
        the component has never contained any sheet metal related data.
        """
        return SheetMetalRule()
    @activeSheetMetalRule.setter
    def activeSheetMetalRule(self, value: SheetMetalRule):
        """
        Gets and sets the active sheet metal rule. This can return null in the case where
        the component has never contained any sheet metal related data.
        """
        pass
    @property
    def isCanvasFolderLightBulbOn(self) -> bool:
        """
        Gets and sets if the light bulb of the canvas folder as seen in the browser is on or off.
        This controls the visibility of all the canvases in the component.
        """
        return bool()
    @isCanvasFolderLightBulbOn.setter
    def isCanvasFolderLightBulbOn(self, value: bool):
        """
        Gets and sets if the light bulb of the canvas folder as seen in the browser is on or off.
        This controls the visibility of all the canvases in the component.
        """
        pass
    @property
    def isLibraryItem(self) -> bool:
        """
        Gets whether the component was created from a fasteners library item."
        """
        return bool()
    @property
    def preciseBoundingBox(self) -> core.BoundingBox3D:
        """
        Returns a bounding box that tightly fits around all B-Rep bodies in the component.
        All other geometry types are ignored.
        """
        return core.BoundingBox3D()
    @property
    def orientedMinimumBoundingBox(self) -> core.OrientedBoundingBox3D:
        """
        Returns an oriented bounding box that is best oriented to tightly fit all B-Rep bodies in the component.
        All other geometry types are ignored.
        """
        return core.OrientedBoundingBox3D()
    @property
    def componentColor(self) -> core.Color:
        """
        Gets and sets the color associated with a component. This color is only used when the
        "Display Component Colors" command is enabled. Enabling the display of component colors
        is done through the command or API using the Application.isComponentColorsDisplayed property.
        When this is on, all bodies in a component will display using the color assigned to the component.
        Fusion randomly assigns a color to a component when it is created. This property allows you to
        get and change the assigned default color. Setting this property to null results in a new
        color being randomly assigned by Fusion. This is the equivalent of the "Cycle Component Color"
        command available in the context menu of a component.
        """
        return core.Color()
    @componentColor.setter
    def componentColor(self, value: core.Color):
        """
        Gets and sets the color associated with a component. This color is only used when the
        "Display Component Colors" command is enabled. Enabling the display of component colors
        is done through the command or API using the Application.isComponentColorsDisplayed property.
        When this is on, all bodies in a component will display using the color assigned to the component.
        Fusion randomly assigns a color to a component when it is created. This property allows you to
        get and change the assigned default color. Setting this property to null results in a new
        color being randomly assigned by Fusion. This is the equivalent of the "Cycle Component Color"
        command available in the context menu of a component.
        """
        pass
    @property
    def isDecalFolderLightBulbOn(self) -> bool:
        """
        Gets and sets whether the light bulb of the decal folder, as seen in the browser, is on or off.
        This controls the visibility of all the decals in the component.
        """
        return bool()
    @isDecalFolderLightBulbOn.setter
    def isDecalFolderLightBulbOn(self, value: bool):
        """
        Gets and sets whether the light bulb of the decal folder, as seen in the browser, is on or off.
        This controls the visibility of all the decals in the component.
        """
        pass
    @property
    def mfgdmModelId(self) -> str:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns the MFGDM model ID for this component.
        """
        return str()
    @property
    def assemblyConstraints(self) -> AssemblyConstraints:
        """
        Returns the collection of assembly constraints associated with this component.
        """
        return AssemblyConstraints()
    @property
    def allAssemblyConstraints(self) -> list[AssemblyConstraint]:
        """
        Returns all assembly constraints in this component and any sub components. The assembly constraints
        returned are all in the context of this component so any joints in sub components will be proxies.
        This is primarily useful when used from the root component because Fusion flattens the assembly
        structure, including joints, when manipulating an assembly.
        """
        return [AssemblyConstraint()]
    @property
    def isJointOriginsFolderLightBulbOn(self) -> bool:
        """
        Gets and sets if the light bulb of the joint origins folder as seen in the browser is on or off.
        This controls the visibility of the joint origins in this occurrence. The light bulb for the
        folder is component specific and will turn off the joints for all occurrences referencing
        the component.
        """
        return bool()
    @isJointOriginsFolderLightBulbOn.setter
    def isJointOriginsFolderLightBulbOn(self, value: bool):
        """
        Gets and sets if the light bulb of the joint origins folder as seen in the browser is on or off.
        This controls the visibility of the joint origins in this occurrence. The light bulb for the
        folder is component specific and will turn off the joints for all occurrences referencing
        the component.
        """
        pass
    @property
    def motionLinks(self) -> MotionLinks:
        """
        Returns the collection of MotionLinks associated with this component.
        """
        return MotionLinks()

class ConcentricConstraint(GeometricConstraint):
    """
    A concentric constraint in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConcentricConstraint:
        return ConcentricConstraint()
    def createForAssemblyContext(self, occurrence: Occurrence) -> ConcentricConstraint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return ConcentricConstraint()
    @property
    def entityOne(self) -> SketchCurve:
        """
        Returns the first curve.
        """
        return SketchCurve()
    @property
    def entityTwo(self) -> SketchCurve:
        """
        Returns the second curve.
        """
        return SketchCurve()
    @property
    def nativeObject(self) -> ConcentricConstraint:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return ConcentricConstraint()

class ConfigurationAppearanceCell(ConfigurationCell):
    """
    Represents a single cell within a ConfigurationAppearanceTable table that controls which
    appearance is assigned to a component or body.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationAppearanceCell:
        return ConfigurationAppearanceCell()
    @property
    def parentColumn(self) -> ConfigurationAppearanceColumn:
        """
        Returns the column this cell is in.
        """
        return ConfigurationAppearanceColumn()
    @property
    def appearance(self) -> core.Appearance:
        """
        Gets and sets the appearance associated with this cell.
        This property can return null indicating the appearance from the physical material assigned to the object is inherited.
        Setting the property to null will inherit the appearance from the physical material assigned to the object.
        """
        return core.Appearance()
    @appearance.setter
    def appearance(self, value: core.Appearance):
        """
        Gets and sets the appearance associated with this cell.
        This property can return null indicating the appearance from the physical material assigned to the object is inherited.
        Setting the property to null will inherit the appearance from the physical material assigned to the object.
        """
        pass

class ConfigurationAppearanceColumn(ConfigurationColumn):
    """
    Represents an appearance column in the appearance table. This defines the appearance to
    use for a specific component.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationAppearanceColumn:
        return ConfigurationAppearanceColumn()
    def getCell(self, rowIndex: int) -> ConfigurationAppearanceCell:
        """
        Gets the cell in this column at the specified row. The first row has an index of 0
        and does not include the header row.
        rowIndex : The index of the row to return the cell for. The first row has an index of 0.
        Returns the specified cell if successful and null if an invalid index was specified.
        """
        return ConfigurationAppearanceCell()
    def getCellByRowName(self, rowName: str) -> ConfigurationAppearanceCell:
        """
        Gets the cell in this column at the row specified by its name.
        rowName : The name of the row to return the cell for.
        Returns the specified cell if successful and null if the name is not found.
        """
        return ConfigurationAppearanceCell()
    def getCellByRowId(self, rowId: str) -> ConfigurationAppearanceCell:
        """
        Gets the cell in this column at the row specified by its ID.
        rowId : The ID of the row to return the cell for.
        Returns the specified cell if successful and null if the id is not found.
        """
        return ConfigurationAppearanceCell()
    @property
    def entity(self) -> core.Base:
        """
        Returns the Component or BRepBody being controlled by this column. This property returns
        null when the table being queried was obtained from a DataFile object.
        """
        return core.Base()
    @property
    def parentAppearanceTable(self) -> ConfigurationAppearanceTable:
        """
        Returns the parent appearance table this column is in.
        """
        return ConfigurationAppearanceTable()

class ConfigurationAppearanceTable(ConfigurationTable):
    """
    Represents a configuration table that defines the appearances assigned to bodies and components.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationAppearanceTable:
        return ConfigurationAppearanceTable()
    def clear(self) -> bool:
        """
        Clears the content of the appearance table, removes the reference from the top table, and hides it in the user interface.
        Returns true if successful.
        """
        return bool()
    @property
    def columns(self) -> ConfigurationAppearanceColumns:
        """
        Returns the collection that provides access to this table's columns and the ability to create new columns.
        """
        return ConfigurationAppearanceColumns()
    @property
    def parentTableColumn(self) -> ConfigurationThemeColumn:
        """
        Returns the column in the top table that references this appearance table.
        """
        return ConfigurationThemeColumn()
    @property
    def name(self) -> str:
        """
        Returns the name of the table as seen in the user interface.
        """
        return str()

class ConfigurationCustomThemeTable(ConfigurationTable):
    """
    API object representing a custom theme configuration table associated with a top table.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationCustomThemeTable:
        return ConfigurationCustomThemeTable()
    def deleteMe(self, deleteColumns: bool) -> bool:
        """
        Deletes this custom theme table from the configuration.
        deleteColumns : If true, this deletes the columns in the custom theme table. If false, it moves them back to the top table.
        Returns true if the delete was successful.
        """
        return bool()
    def moveColumns(self, columns: list[ConfigurationColumn], targetTable: ConfigurationTable) -> list[ConfigurationColumn]:
        """
        Moves the specified columns from one table to another.
        columns : An array of the columns within this table that you want to move.
        targetTable : The table you want to move the columns to. The target must be either a top table or a custom theme table.
        Returns an array of the columns created due to the move.
        """
        return [ConfigurationColumn()]
    @property
    def name(self) -> str:
        """
        Gets and sets the name of the table as seen in the user interface.
        """
        return str()
    @name.setter
    def name(self, value: str):
        """
        Gets and sets the name of the table as seen in the user interface.
        """
        pass
    @property
    def columns(self) -> ConfigurationColumns:
        """
        Returns the columns in this table.
        """
        return ConfigurationColumns()
    @property
    def parentTableColumn(self) -> ConfigurationThemeColumn:
        """
        Returns the column in the top table that references this custom theme table.
        """
        return ConfigurationThemeColumn()

class ConfigurationFeatureAspectBooleanCell(ConfigurationCell):
    """
    This object represents a cell from a column that defines a configuration feature aspect with a Boolean value.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationFeatureAspectBooleanCell:
        return ConfigurationFeatureAspectBooleanCell()
    @property
    def parentColumn(self) -> ConfigurationFeatureAspectColumn:
        """
        Returns the column this cell is in.
        """
        return ConfigurationFeatureAspectColumn()
    @property
    def value(self) -> bool:
        """
        Gets and sets the value of the property associated with the parent column of this cell.
        """
        return bool()
    @value.setter
    def value(self, value: bool):
        """
        Gets and sets the value of the property associated with the parent column of this cell.
        """
        pass

class ConfigurationFeatureAspectColumn(ConfigurationColumn):
    """
    Represents a feature aspect column in a configuration table. Feature aspects are properties
    of a feature that are unique to a particular type of feature. This includes various thread
    and joint settings.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationFeatureAspectColumn:
        return ConfigurationFeatureAspectColumn()
    def getCell(self, rowIndex: int) -> ConfigurationCell:
        """
        Gets the cell in this column at the specified row. Depending on the type of data in the
        cells within the column a ConfigurationFeatureAspectBooleanCell or ConfigurationFeatureAspectStringCell
        will be returned. The first row has an index of 0 and does not include the header row.
        rowIndex : The index of the row to return the cell for. The first row has an index of 0.
        Returns the specified cell if successful and null if an invalid index was specified.
        """
        return ConfigurationCell()
    def getCellByRowName(self, rowName: str) -> ConfigurationCell:
        """
        Gets the cell in this column at the row specified by its name. Depending on the type of data in the
        cells within the column a ConfigurationFeatureAspectBooleanCell or ConfigurationFeatureAspectStringCell
        will be returned.
        rowName : The name of the row to return the cell for.
        Returns the specified cell if successful and null if the name is not found.
        """
        return ConfigurationCell()
    def getCellByRowId(self, rowId: str) -> ConfigurationCell:
        """
        This method returns the cell in this column at the row identified by its ID. Depending on the type of data in the
        cells within the column, a ConfigurationFeatureAspectBooleanCell or ConfigurationFeatureAspectStringCell will be returned.
        rowId : The ID of the row to return the cell for.
        Returns the specified cell if successful and null if the id is not found.
        """
        return ConfigurationCell()
    @property
    def feature(self) -> core.Base:
        """
        Returns the feature being controlled by this column.
        
        This property returns null when the table being queried was obtained from a DataFile object.
        """
        return core.Base()
    @property
    def aspectType(self) -> ConfigurationFeatureAspectTypes:
        """
        Gets the type of feature aspect this column is controlling.
        """
        return ConfigurationFeatureAspectTypes()
    @property
    def parentTable(self) -> ConfigurationTable:
        """
        This property returns the parent table, either the top or custom theme table this column is in.
        """
        return ConfigurationTable()

class ConfigurationFeatureAspectStringCell(ConfigurationCell):
    """
    Represents a cell from a column that defines a configuration feature aspect that is
    a String value.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationFeatureAspectStringCell:
        return ConfigurationFeatureAspectStringCell()
    @property
    def parentColumn(self) -> ConfigurationFeatureAspectColumn:
        """
        Returns the column this cell is in.
        """
        return ConfigurationFeatureAspectColumn()
    @property
    def value(self) -> str:
        """
        Gets and sets the value of the property associated with the parent column of this cell.
        """
        return str()
    @value.setter
    def value(self, value: str):
        """
        Gets and sets the value of the property associated with the parent column of this cell.
        """
        pass

class ConfigurationFuture(core.Future):
    """
    Used to check the state of the asynchronous configuration operation
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationFuture:
        return ConfigurationFuture()

class ConfigurationInsertCell(ConfigurationCell):
    """
    Represents a single cell within a top or custom theme configuration table that controls which configuration is
    used for an inserted configured design. Use the parent column to get the feature being suppressed.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationInsertCell:
        return ConfigurationInsertCell()
    @property
    def parentColumn(self) -> ConfigurationInsertColumn:
        """
        Returns the column this cell is in.
        """
        return ConfigurationInsertColumn()
    @property
    def row(self) -> ConfigurationRow:
        """
        Gets and sets which row of the configured design is used for this cell. When setting this property,
        the row must come from the configured design used by the occurrence associated with the parent column of this cell.
        """
        return ConfigurationRow()
    @row.setter
    def row(self, value: ConfigurationRow):
        """
        Gets and sets which row of the configured design is used for this cell. When setting this property,
        the row must come from the configured design used by the occurrence associated with the parent column of this cell.
        """
        pass

class ConfigurationInsertColumn(ConfigurationColumn):
    """
    Represents a column where a configured design has been inserted in this design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationInsertColumn:
        return ConfigurationInsertColumn()
    def getCell(self, rowIndex: int) -> ConfigurationInsertCell:
        """
        Gets the cell in this column at the specified row. The first row has an index of 0 and does not include the header row.
        rowIndex : The index of the row to return the cell for. The first row has an index of 0.
        Returns the specified cell if successful and null if an invalid index was specified.
        """
        return ConfigurationInsertCell()
    def getCellByRowName(self, rowName: str) -> ConfigurationInsertCell:
        """
        Gets the cell in this column at the row specified by its name.
        rowName : The name of the row to return the cell for.
        Returns the specified cell if successful and null if the name is not found.
        """
        return ConfigurationInsertCell()
    def getCellByRowId(self, rowId: str) -> ConfigurationInsertCell:
        """
        Gets the cell in this column at the row specified by its ID.
        rowId : The ID of the row to return the cell for.
        Returns the specified cell if successful and null if the name is not found.
        """
        return ConfigurationInsertCell()
    @property
    def occurrence(self) -> Occurrence:
        """
        Returns the occurrence that is associated with this configuration insertion.
        
        This property returns null when the table being queried was obtained from a DataFile object.
        """
        return Occurrence()
    @property
    def parentTable(self) -> ConfigurationTable:
        """
        Returns the parent table, either top or custom theme table, this column is in.
        """
        return ConfigurationTable()

class ConfigurationInsertStandardDesignCell(ConfigurationCell):
    """
    Represents a single cell within a top or custom theme configuration table that controls which design is
    used for an inserted standard design. Use the parent column to get the occurrence being modified.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationInsertStandardDesignCell:
        return ConfigurationInsertStandardDesignCell()
    @property
    def parentColumn(self) -> ConfigurationInsertStandardDesignColumn:
        """
        Returns the column this cell is in.
        """
        return ConfigurationInsertStandardDesignColumn()
    @property
    def replaceDesign(self) -> ConfigurationReplaceDesign:
        """
        Gets and sets which ConfigurationReplaceDesign object will be used when the row
        this cell is in is active. When setting this property, only ConfigurationReplaceDesign objects
        defined for the parent column of this cell can be used.
        """
        return ConfigurationReplaceDesign()
    @replaceDesign.setter
    def replaceDesign(self, value: ConfigurationReplaceDesign):
        """
        Gets and sets which ConfigurationReplaceDesign object will be used when the row
        this cell is in is active. When setting this property, only ConfigurationReplaceDesign objects
        defined for the parent column of this cell can be used.
        """
        pass

class ConfigurationInsertStandardDesignColumn(ConfigurationColumn):
    """
    This object represents a column in the table that controls which design
    should be referenced by an occurrence. The column contains a list of
    designs that have been specified for that column. One of the designs is
    specified for each cell in the column. That design will be referenced
    by the occurrence when the row that cell is in is active.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationInsertStandardDesignColumn:
        return ConfigurationInsertStandardDesignColumn()
    def getCell(self, rowIndex: int) -> ConfigurationInsertStandardDesignCell:
        """
        Gets the cell in this column at the specified row. The first row has an
        index of 0 and does not include the header row.
        rowIndex : The index of the row to return the cell for. The first row has an index of 0.
        Returns the specified cell if successful and null if an invalid index was specified.
        """
        return ConfigurationInsertStandardDesignCell()
    def getCellByRowName(self, rowName: str) -> ConfigurationInsertStandardDesignCell:
        """
        Gets the cell in this column at the row specified by its name.
        rowName : The name of the row to return the cell for.
        Returns the specified cell if successful and null if the name is not found.
        """
        return ConfigurationInsertStandardDesignCell()
    def getCellByRowId(self, rowId: str) -> ConfigurationInsertStandardDesignCell:
        """
        Gets the cell in this column at the row specified by its ID.
        rowId : The ID of the row to return the cell for.
        Returns the specified cell if successful and null if the id is not found.
        """
        return ConfigurationInsertStandardDesignCell()
    @property
    def occurrence(self) -> Occurrence:
        """
        Returns the occurrence being controlled by this column.
        
        This property returns null when the table being queried was obtained from a DataFile object.
        """
        return Occurrence()
    @property
    def replaceDesigns(self) -> ConfigurationReplaceDesigns:
        """
        Provides access to the list of replace designs that have been defined for this column. Using
        the returned collection you can define new ConfigurationReplaceDesign objects. Use the
        cells in the column to specify which one of the defined replace designs is used for a specific row.
        """
        return ConfigurationReplaceDesigns()
    @property
    def parentTable(self) -> ConfigurationTable:
        """
        Returns the parent table this column is in.
        """
        return ConfigurationTable()

class ConfigurationJointSnapCell(ConfigurationCell):
    """
    This object represents a joint snap that has been defined for a ConfigurationJointSnapColumn.
    Joint snaps are defined on the parent column, and the cell specifies which of the defined
    snaps will be used when the parent row of the cell is active.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationJointSnapCell:
        return ConfigurationJointSnapCell()
    @property
    def parentColumn(self) -> ConfigurationJointSnapColumn:
        """
        Returns the column this cell is in.
        """
        return ConfigurationJointSnapColumn()
    @property
    def snap(self) -> ConfigurationJointSnap:
        """
        Gets and sets which snap will be used when the row this cell is in is active. When
        setting this property, only snaps defined for the  parent column of this cell
        can be used.
        """
        return ConfigurationJointSnap()
    @snap.setter
    def snap(self, value: ConfigurationJointSnap):
        """
        Gets and sets which snap will be used when the row this cell is in is active. When
        setting this property, only snaps defined for the  parent column of this cell
        can be used.
        """
        pass

class ConfigurationMaterialCell(ConfigurationCell):
    """
    Represents a single cell within a ConfigurationMaterialTable table that controls which
    material is assigned to a component or body.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationMaterialCell:
        return ConfigurationMaterialCell()
    @property
    def parentColumn(self) -> ConfigurationMaterialColumn:
        """
        Returns the column this cell is in.
        """
        return ConfigurationMaterialColumn()
    @property
    def material(self) -> core.Material:
        """
        Gets and sets the material associated with this cell. When setting this property,
        the material used must exist in the design.
        """
        return core.Material()
    @material.setter
    def material(self, value: core.Material):
        """
        Gets and sets the material associated with this cell. When setting this property,
        the material used must exist in the design.
        """
        pass

class ConfigurationMaterialColumn(ConfigurationColumn):
    """
    Represents a material column in the material table. This defines the material to use for a specific component.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationMaterialColumn:
        return ConfigurationMaterialColumn()
    def getCell(self, rowIndex: int) -> ConfigurationMaterialCell:
        """
        Gets the cell in this column at the specified row. The first row has an
        index of 0 and does not include the header row.
        rowIndex : The index of the row to return the cell for. The first row has an index of 0.
        Returns the specified cell if successful and null if an invalid index was specified.
        """
        return ConfigurationMaterialCell()
    def getCellByRowName(self, rowName: str) -> ConfigurationMaterialCell:
        """
        Gets the cell in this column at the row specified by its name.
        rowName : The name of the row to return the cell for.
        Returns the specified cell if successful and null if the name is not found.
        """
        return ConfigurationMaterialCell()
    def getCellByRowId(self, rowId: str) -> ConfigurationMaterialCell:
        """
        Gets the cell in this column at the row specified by its ID.
        rowId : The ID of the row to return the cell for.
        Returns the specified cell if successful and null if the id is not found.
        """
        return ConfigurationMaterialCell()
    @property
    def entity(self) -> core.Base:
        """
        Returns the Component or BRepBody being modified by this column. This property
        returns null when the table being queried was obtained from a DataFile object.
        """
        return core.Base()
    @property
    def parentMaterialTable(self) -> ConfigurationMaterialTable:
        """
        Returns the parent material table this column is in.
        """
        return ConfigurationMaterialTable()

class ConfigurationMaterialTable(ConfigurationTable):
    """
    Represents a configuration table that defines materials assigned to bodies and components.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationMaterialTable:
        return ConfigurationMaterialTable()
    def clear(self) -> bool:
        """
        Clears the content of the material table, removes the reference from the top table,
        and hides it in the user interface.
        Returns true if successful.
        """
        return bool()
    @property
    def columns(self) -> ConfigurationMaterialColumns:
        """
        Returns the collection that provides access to the columns in this table.
        """
        return ConfigurationMaterialColumns()
    @property
    def parentTableColumn(self) -> ConfigurationThemeColumn:
        """
        Returns the column in the top table that references this material table.
        """
        return ConfigurationThemeColumn()
    @property
    def name(self) -> str:
        """
        Returns the name of the table as seen in the user interface.
        """
        return str()

class ConfigurationParameterCell(ConfigurationCell):
    """
    Represents a single cell within a configuration table that controls the value of a parameter.
    Get the parent column to get the parameter being controlled.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationParameterCell:
        return ConfigurationParameterCell()
    @property
    def parentColumn(self) -> ConfigurationParameterColumn:
        """
        Returns the column this cell is in. From the column, you can get the parameter object being controlled.
        """
        return ConfigurationParameterColumn()
    @property
    def expression(self) -> str:
        """
        Gets and sets the expression that defines the value of the associated parameter when the parent row
        is active. This works for both numeric and text parameters. This property behaves as read-only when
        the table is obtained from a DataFile object.
        """
        return str()
    @expression.setter
    def expression(self, value: str):
        """
        Gets and sets the expression that defines the value of the associated parameter when the parent row
        is active. This works for both numeric and text parameters. This property behaves as read-only when
        the table is obtained from a DataFile object.
        """
        pass
    @property
    def value(self) -> float:
        """
        Gets and sets the real value (a double) of the parameter in database units.
        Setting this property will overwrite any existing expression. This property behaves as read-only
        when the table is obtained from a DataFile object.
        This property is only valid for numeric parameters and will fail for text parameters.
        You can determine the value type of the parameter by using the valueType property.
        Use the textValue property to get and set the value of text parameters.
        """
        return float()
    @value.setter
    def value(self, value: float):
        """
        Gets and sets the real value (a double) of the parameter in database units.
        Setting this property will overwrite any existing expression. This property behaves as read-only
        when the table is obtained from a DataFile object.
        This property is only valid for numeric parameters and will fail for text parameters.
        You can determine the value type of the parameter by using the valueType property.
        Use the textValue property to get and set the value of text parameters.
        """
        pass
    @property
    def textValue(self) -> str:
        """
        Gets and sets the text value of the parameter when it is a text parameter. This can
        be determined by checking the valueType property. Setting this value will cause the
        current expression to be overwritten. This property behaves as read-only when the
        table is obtained from a DataFile object.
        """
        return str()
    @textValue.setter
    def textValue(self, value: str):
        """
        Gets and sets the text value of the parameter when it is a text parameter. This can
        be determined by checking the valueType property. Setting this value will cause the
        current expression to be overwritten. This property behaves as read-only when the
        table is obtained from a DataFile object.
        """
        pass
    @property
    def valueType(self) -> ParameterValueTypes:
        """
        Returns the type of value this parameter cell is. For a numeric parameter, you can
        get the value using the value property. For a text parameter, you can get the
        value using the textValue property.
        """
        return ParameterValueTypes()

class ConfigurationParameterColumn(ConfigurationColumn):
    """
    Represents a parameter column in a top or custom theme configuration table.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationParameterColumn:
        return ConfigurationParameterColumn()
    def getCell(self, rowIndex: int) -> ConfigurationParameterCell:
        """
        Gets the cell in this column at the specified row. The first row has an index of 0 and does not include the header row.
        rowIndex : The index of the row to return the cell for. The first row has an index of 0.
        Returns the specified cell if successful and null if an invalid index was specified.
        """
        return ConfigurationParameterCell()
    def getCellByRowName(self, rowName: str) -> ConfigurationParameterCell:
        """
        Gets the cell in this column at the row specified by its name.
        rowName : The name of the row to return the cell for.
        Returns the specified cell if successful and null if the name is not found.
        """
        return ConfigurationParameterCell()
    def getCellByRowId(self, rowId: str) -> ConfigurationParameterCell:
        """
        Gets the cell in this column at the row specified by its ID.
        rowId : The ID of the row to return the cell for.
        Returns the specified cell if successful and null if the id is not found.
        """
        return ConfigurationParameterCell()
    @property
    def parameter(self) -> Parameter:
        """
        Returns the parameter being controlled by this column.
        
        This property returns null when the table being queried was obtained from a DataFile object.
        """
        return Parameter()
    @property
    def parentTable(self) -> ConfigurationTable:
        """
        Returns the parent table, either top or custom theme table, this column is in.
        """
        return ConfigurationTable()

class ConfigurationPlasticRuleCell(ConfigurationCell):
    """
    Represents a single cell within a configuration table that controls which sheet plastic rule is assigned to a component.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationPlasticRuleCell:
        return ConfigurationPlasticRuleCell()
    @property
    def parentColumn(self) -> ConfigurationPlasticRuleColumn:
        """
        Returns the column this cell is in.
        """
        return ConfigurationPlasticRuleColumn()
    @property
    def plasticRule(self) -> PlasticRule:
        """
        Gets and sets the plastic rule defined for this cell.
        """
        return PlasticRule()
    @plasticRule.setter
    def plasticRule(self, value: PlasticRule):
        """
        Gets and sets the plastic rule defined for this cell.
        """
        pass

class ConfigurationPlasticRuleColumn(ConfigurationColumn):
    """
    Represents a plastic rule column in a configuration table. This defines the plastic rule to use for a specific component.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationPlasticRuleColumn:
        return ConfigurationPlasticRuleColumn()
    def getCell(self, rowIndex: int) -> ConfigurationPlasticRuleCell:
        """
        Gets the cell in this column at the specified row. The first row has an index of 0 and does not include the header row.
        rowIndex : The index of the row to return the cell for. The first row has an index of 0.
        Returns the specified cell if successful and null if an invalid index was specified.
        """
        return ConfigurationPlasticRuleCell()
    def getCellByRowName(self, rowName: str) -> ConfigurationPlasticRuleCell:
        """
        Gets the cell in this column at the row specified by its name.
        rowName : The name of the row to return the cell for.
        Returns the specified cell if successful and null if the name is not found.
        """
        return ConfigurationPlasticRuleCell()
    def getCellByRowId(self, rowId: str) -> ConfigurationPlasticRuleCell:
        """
        Gets the cell in this column at the row specified by its ID.
        rowId : The ID of the row to return the cell for.
        Returns the specified cell if successful and null if the id is not found.
        """
        return ConfigurationPlasticRuleCell()
    @property
    def component(self) -> Component:
        """
        Returns the Component being modified by this column. This property
        returns null when the table being queried was obtained from a DataFile object.
        """
        return Component()
    @property
    def parentPlasticRuleTable(self) -> ConfigurationPlasticRuleTable:
        """
        Returns the parent plastic rule table this column is in.
        """
        return ConfigurationPlasticRuleTable()

class ConfigurationPlasticRuleTable(ConfigurationTable):
    """
    Represents a configuration table that defines different plastic rules.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationPlasticRuleTable:
        return ConfigurationPlasticRuleTable()
    def clear(self) -> bool:
        """
        Clears the content of the plastic rule table, removes the reference from
        the top table, and hides it in the user interface.
        Returns true if successful.
        """
        return bool()
    @property
    def columns(self) -> ConfigurationPlasticRuleColumns:
        """
        Returns the collection that provides access to the columns in this table.
        """
        return ConfigurationPlasticRuleColumns()
    @property
    def parentTableColumn(self) -> ConfigurationThemeColumn:
        """
        Returns the column in the top table that references this plastic rule table.
        """
        return ConfigurationThemeColumn()
    @property
    def name(self) -> str:
        """
        Returns the name of the table as seen in the user interface.
        """
        return str()

class ConfigurationPropertyCell(ConfigurationCell):
    """
    Represents an individual cell within a configuration table that defines
    the value of a property.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationPropertyCell:
        return ConfigurationPropertyCell()
    @property
    def parentColumn(self) -> ConfigurationPropertyColumn:
        """
        Returns the column this cell is in.
        """
        return ConfigurationPropertyColumn()
    @property
    def value(self) -> str:
        """
        Gets and sets the value of the property associated with the parent column of this cell.
        """
        return str()
    @value.setter
    def value(self, value: str):
        """
        Gets and sets the value of the property associated with the parent column of this cell.
        """
        pass

class ConfigurationPropertyColumn(ConfigurationColumn):
    """
    Represents a property column in a configuration table.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationPropertyColumn:
        return ConfigurationPropertyColumn()
    def getCell(self, rowIndex: int) -> ConfigurationPropertyCell:
        """
        Gets the cell in this column at the specified row. The first row has an index of 0 and does not include the header row.
        rowIndex : The index of the row to return the cell for. The first row has an index of 0.
        Returns the specified cell if successful and null if an invalid index was specified.
        """
        return ConfigurationPropertyCell()
    def getCellByRowName(self, rowName: str) -> ConfigurationPropertyCell:
        """
        Gets the cell in this column at the row specified by its name.
        rowName : The name of the row to return the cell for.
        Returns the specified cell if successful and null if the name is not found.
        """
        return ConfigurationPropertyCell()
    def getCellByRowId(self, rowId: str) -> ConfigurationPropertyCell:
        """
        Gets the cell in this column at the row specified by its ID.
        rowId : The ID of the row to return the cell for.
        Returns the specified cell if successful and null if the id is not found.
        """
        return ConfigurationPropertyCell()
    @property
    def parentProperty(self) -> core.Property:
        """
        Returns the property whose value is controlled by this column.
        """
        return core.Property()
    @property
    def parentTable(self) -> ConfigurationTable:
        """
        Returns the parent table this column is in.
        """
        return ConfigurationTable()

class ConfigurationSheetMetalRuleCell(ConfigurationCell):
    """
    Represents a single cell within a configuration table that controls which sheet metal rule is assigned to a component.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationSheetMetalRuleCell:
        return ConfigurationSheetMetalRuleCell()
    @property
    def parentColumn(self) -> ConfigurationSheetMetalRuleColumn:
        """
        Returns the column this cell is in.
        """
        return ConfigurationSheetMetalRuleColumn()
    @property
    def sheetMetalRule(self) -> SheetMetalRule:
        """
        Gets and sets the sheet metal rule defined for this cell.
        """
        return SheetMetalRule()
    @sheetMetalRule.setter
    def sheetMetalRule(self, value: SheetMetalRule):
        """
        Gets and sets the sheet metal rule defined for this cell.
        """
        pass

class ConfigurationSheetMetalRuleColumn(ConfigurationColumn):
    """
    Represents a sheet metal rule column in a configuration table. This defines the sheet metal rule to use for a specific component.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationSheetMetalRuleColumn:
        return ConfigurationSheetMetalRuleColumn()
    def getCell(self, rowIndex: int) -> ConfigurationSheetMetalRuleCell:
        """
        Gets the cell in this column at the specified row. The first row has an index of 0 and does not include the header row.
        rowIndex : The index of the row to return the cell for. The first row has an index of 0.
        Returns the specified cell if successful and null if an invalid index was specified.
        """
        return ConfigurationSheetMetalRuleCell()
    def getCellByRowName(self, rowName: str) -> ConfigurationSheetMetalRuleCell:
        """
        Gets the cell in this column at the row specified by its name.
        rowName : The name of the row to return the cell for.
        Returns the specified cell if successful and null if the name is not found.
        """
        return ConfigurationSheetMetalRuleCell()
    def getCellByRowId(self, rowId: str) -> ConfigurationSheetMetalRuleCell:
        """
        Gets the cell in this column at the row specified by its ID.
        rowId : The ID of the row to return the cell for.
        Returns the specified cell if successful and null if the id is not found.
        """
        return ConfigurationSheetMetalRuleCell()
    @property
    def component(self) -> Component:
        """
        Returns the Component being modified by this column. This property
        returns null when the table being queried was obtained from a DataFile object.
        """
        return Component()
    @property
    def componentName(self) -> str:
        """
        Returns the name of the component associated with this column. This is useful when
        the table is obtained from a DataFile object, and the component object is unavailable.
        """
        return str()
    @property
    def parentSheetMetalRuleTable(self) -> ConfigurationSheetMetalRuleTable:
        """
        Returns the parent sheet metal rule table this column is in.
        """
        return ConfigurationSheetMetalRuleTable()

class ConfigurationSheetMetalRuleTable(ConfigurationTable):
    """
    Represents a configuration table that defines different sheet metal rules.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationSheetMetalRuleTable:
        return ConfigurationSheetMetalRuleTable()
    def clear(self) -> bool:
        """
        Clears the content of the sheet metal rule table, removes the reference from the top table, and hides it in the user interface.
        Returns true if successful.
        """
        return bool()
    @property
    def columns(self) -> ConfigurationSheetMetalRuleColumns:
        """
        Returns the collection that provides access to the columns in this table.
        """
        return ConfigurationSheetMetalRuleColumns()
    @property
    def parentTableColumn(self) -> ConfigurationThemeColumn:
        """
        Returns the column in the top table that references this sheet metal rule table.
        """
        return ConfigurationThemeColumn()
    @property
    def name(self) -> str:
        """
        Returns the name of the table as seen in the user interface.
        """
        return str()

class ConfigurationSuppressCell(ConfigurationCell):
    """
    Represents a single cell within a configuration table that controls if a feature is suppressed.
    Get the parent column to get the feature being suppressed.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationSuppressCell:
        return ConfigurationSuppressCell()
    @property
    def parentColumn(self) -> ConfigurationSuppressColumn:
        """
        Returns the column this cell is in.
        """
        return ConfigurationSuppressColumn()
    @property
    def isSuppressed(self) -> bool:
        """
        Specifies if the feature is suppressed or not. This property behaves as read-only when the table is obtained from a DataFile.
        """
        return bool()
    @isSuppressed.setter
    def isSuppressed(self, value: bool):
        """
        Specifies if the feature is suppressed or not. This property behaves as read-only when the table is obtained from a DataFile.
        """
        pass

class ConfigurationSuppressColumn(ConfigurationColumn):
    """
    Represents a suppress column in a top or custom theme configuration table.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationSuppressColumn:
        return ConfigurationSuppressColumn()
    def getCell(self, rowIndex: int) -> ConfigurationSuppressCell:
        """
        Gets the cell in this column at the specified row. The first row has an index of 0 and does not include the header row.
        rowIndex : The index of the row to return the cell for. The first row has an index of 0.
        Returns the specified cell if successful and null if an invalid index was specified.
        """
        return ConfigurationSuppressCell()
    def getCellByRowName(self, rowName: str) -> ConfigurationSuppressCell:
        """
        Gets the cell in this column at the row specified by its name.
        rowName : The name of the row to return the cell for.
        Returns the specified cell if successful and null if the name is not found.
        """
        return ConfigurationSuppressCell()
    def getCellByRowId(self, rowId: str) -> ConfigurationSuppressCell:
        """
        Gets the cell in this column at the row specified by its ID.
        rowId : The ID of the row to return the cell for.
        Returns the specified cell if successful and null if the name is not found.
        """
        return ConfigurationSuppressCell()
    @property
    def feature(self) -> core.Base:
        """
        Returns the feature whose suppression state is being controlled by this column.
        The term "feature" is used broadly and includes anything displayed in the timeline.
        
        This property returns null when the table being queried was obtained from a DataFile object.
        """
        return core.Base()
    @property
    def parentTable(self) -> ConfigurationTable:
        """
        Returns the parent table, either top or custom theme table, this column is in.
        """
        return ConfigurationTable()

class ConfigurationThemeCell(ConfigurationCell):
    """
    Represents an individual cell within a top configuration table that specifies which row in the custom theme table should be used.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationThemeCell:
        return ConfigurationThemeCell()
    @property
    def parentColumn(self) -> ConfigurationThemeColumn:
        """
        Returns the column this cell is in.
        """
        return ConfigurationThemeColumn()
    @property
    def referencedTableRow(self) -> ConfigurationRow:
        """
        Gets and sets the row to use from the referenced table.
        """
        return ConfigurationRow()
    @referencedTableRow.setter
    def referencedTableRow(self, value: ConfigurationRow):
        """
        Gets and sets the row to use from the referenced table.
        """
        pass

class ConfigurationThemeColumn(ConfigurationColumn):
    """
    Represents a theme table column in a top configuration table.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationThemeColumn:
        return ConfigurationThemeColumn()
    def getCell(self, rowIndex: int) -> ConfigurationThemeCell:
        """
        Gets the cell in this column at the specified row index. The first row has an index of 0 and does not include the header row.
        rowIndex : The index of the row to return the cell for. The first row has an index of 0.
        Returns the specified cell if successful and null if an invalid index was specified.
        """
        return ConfigurationThemeCell()
    def getCellByRowName(self, rowName: str) -> ConfigurationThemeCell:
        """
        Gets the cell in this column at the row specified by its name.
        rowName : The name of the row to return the cell for.
        Returns the specified cell if successful and null if the name is not found.
        """
        return ConfigurationThemeCell()
    def getCellByRowId(self, rowId: str) -> ConfigurationThemeCell:
        """
        Gets the cell in this column at the row specified by its ID.
        rowId : The ID of the row to return the cell for.
        Returns the specified cell if successful and null if the id is not found.
        """
        return ConfigurationThemeCell()
    @property
    def referencedTable(self) -> ConfigurationTable:
        """
        Returns the theme table that this column references.
        """
        return ConfigurationTable()
    @property
    def parentTable(self) -> ConfigurationTable:
        """
        Returns the parent table this column is in.
        """
        return ConfigurationTable()

class ConfigurationTopTable(ConfigurationTable):
    """
    API object representing the top configuration table associated with a configured design.
    
    When obtained from the DataFile object of a configured design, the functionality is limited because it's not
    loaded in Fusion, and there is no access to the Fusion objects represented in the table. For example, any
    properties that return a Component or Parameter will return null because those objects aren't available.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationTopTable:
        return ConfigurationTopTable()
    def moveColumns(self, columns: list[ConfigurationColumn], targetTable: ConfigurationCustomThemeTable) -> list[ConfigurationColumn]:
        """
        Moves the specified columns from one table to another.
        columns : An array of the columns within the top table you want to move.
        targetTable : The table you want to move the columns to. The target must be a custom theme table.
        Returns an array of the columns created due to the move.
        """
        return [ConfigurationColumn()]
    @property
    def name(self) -> str:
        """
        Gets the name of the table as seen in the user interface.
        """
        return str()
    @property
    def columns(self) -> ConfigurationColumns:
        """
        Returns the columns defined for this table and provides the functionality to create new columns.
        """
        return ConfigurationColumns()
    @property
    def activeRow(self) -> ConfigurationRow:
        """
        Returns the row that is currently active. To set the active row, use the activate method on the
        ConfigurationRow object.
        """
        return ConfigurationRow()
    @property
    def customThemeTables(self) -> ConfigurationCustomThemeTables:
        """
        Returns any custom theme tables associated with this top table.
        """
        return ConfigurationCustomThemeTables()
    @property
    def appearanceTable(self) -> ConfigurationAppearanceTable:
        """
        Returns the appearance table associated with this top table. The returned table can be empty
        and not have any columns. In this case, the table is not displayed in the user interface.
        Use the returned table to add columns.
        """
        return ConfigurationAppearanceTable()
    @property
    def materialTable(self) -> ConfigurationMaterialTable:
        """
        Returns the material table associated with this top table. The returned table can be empty
        and not have any columns. In this case, the table is not displayed in the user interface.
        Use the returned table to add columns.
        """
        return ConfigurationMaterialTable()
    @property
    def plasticRuleTable(self) -> ConfigurationPlasticRuleTable:
        """
        Returns the plastic rule table associated with this top table. The returned table can be
        empty and not have any columns. In this case, the table is not displayed in the user interface.
        Use the returned table to add columns.
        """
        return ConfigurationPlasticRuleTable()
    @property
    def sheetMetalRuleTable(self) -> ConfigurationSheetMetalRuleTable:
        """
        Returns the sheet metal rule table associated with this top table. The returned table can be
        empty and not have any columns. In this case, the table is not displayed in the user interface.
        Use the returned table to add columns.
        """
        return ConfigurationSheetMetalRuleTable()

class ConfigurationVisibilityCell(ConfigurationCell):
    """
    Represents a single cell within a configuration table that controls whether an entity is visible. Get the parent column to get the entity.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationVisibilityCell:
        return ConfigurationVisibilityCell()
    @property
    def parentColumn(self) -> ConfigurationVisibilityColumn:
        """
        Returns the column this cell is in.
        """
        return ConfigurationVisibilityColumn()
    @property
    def isVisible(self) -> bool:
        """
        Specifies if the entity is visible or not. This property behaves as read-only when the table is obtained from a DataFile.
        """
        return bool()
    @isVisible.setter
    def isVisible(self, value: bool):
        """
        Specifies if the entity is visible or not. This property behaves as read-only when the table is obtained from a DataFile.
        """
        pass

class ConfigurationVisibilityColumn(ConfigurationColumn):
    """
    Represents a visibility column in a top or custom theme configuration table.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationVisibilityColumn:
        return ConfigurationVisibilityColumn()
    def getCell(self, rowIndex: int) -> ConfigurationVisibilityCell:
        """
        Gets the cell in this column at the specified row. The first row has an index of 0 and does not include the header row.
        rowIndex : The index of the row to return the cell for. The first row has an index of 0.
        Returns the specified cell if successful and null if an invalid index was specified.
        """
        return ConfigurationVisibilityCell()
    def getCellByRowName(self, rowName: str) -> ConfigurationVisibilityCell:
        """
        Gets the cell in this column at the row specified by its name.
        rowName : The name of the row to return the cell for.
        Returns the specified cell if successful and null if the name is not found.
        """
        return ConfigurationVisibilityCell()
    def getCellByRowId(self, rowId: str) -> ConfigurationVisibilityCell:
        """
        Gets the cell in this column at the row specified by its ID.
        rowId : The ID of the row to return the cell for.
        Returns the specified cell if successful and null if the id is not found.
        """
        return ConfigurationVisibilityCell()
    @property
    def entity(self) -> core.Base:
        """
        Returns the entity whose visibility is being controlled by this column.
        
        This property returns null when the table being queried was obtained from a DataFile object.
        """
        return core.Base()
    @property
    def parentTable(self) -> ConfigurationTable:
        """
        Returns the parent table, either top or custom theme table, this column is in.
        """
        return ConfigurationTable()

class ConstantRadiusFilletEdgeSet(FilletEdgeSet):
    """
    Provides access to the edges and the parameter associated with a constant radius fillet.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstantRadiusFilletEdgeSet:
        return ConstantRadiusFilletEdgeSet()
    @property
    def edges(self) -> core.ObjectCollection:
        """
        Gets and sets an ObjectCollection containing the BRepEdge, BRepFace, and Feature that are filleted.
        If the isTangentChain argument is true additional edges or faces may also get filleted if they are tangentially
        connected to any of the input edges or faces.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()
    @edges.setter
    def edges(self, value: core.ObjectCollection):
        """
        Gets and sets an ObjectCollection containing the BRepEdge, BRepFace, and Feature that are filleted.
        If the isTangentChain argument is true additional edges or faces may also get filleted if they are tangentially
        connected to any of the input edges or faces.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def radius(self) -> ModelParameter:
        """
        Returns the model parameter that controls the radius of the fillet. You can edit
        the radius by using the properties on the returned ModelParameter object.
        """
        return ModelParameter()

class ConstantRadiusFilletEdgeSetInput(FilletEdgeSetInput):
    """
    Provides access to the edges and the parameter associated with a constant radius fillet.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstantRadiusFilletEdgeSetInput:
        return ConstantRadiusFilletEdgeSetInput()
    @property
    def radius(self) -> core.ValueInput:
        """
        Gets and sets ValueInput object that defines the radius of the fillet. If the ValueInput uses
        a real then it is interpreted as centimeters. If it is a string then the units
        can be defined as part of the string (i.e. "2 in") or if no units are specified
        it is interpreted using the current default units for length.
        """
        return core.ValueInput()
    @radius.setter
    def radius(self, value: core.ValueInput):
        """
        Gets and sets ValueInput object that defines the radius of the fillet. If the ValueInput uses
        a real then it is interpreted as centimeters. If it is a string then the units
        can be defined as part of the string (i.e. "2 in") or if no units are specified
        it is interpreted using the current default units for length.
        """
        pass

class ConstructionAxisByLineDefinition(ConstructionAxisDefinition):
    """
    The definition for a non-parametric construction axis. In a non-parametric design
    all construction planes will return this type of definition regardless of how they
    were initially created.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionAxisByLineDefinition:
        return ConstructionAxisByLineDefinition()
    @property
    def axis(self) -> core.InfiniteLine3D:
        """
        Gets and sets the infinite line that defines the position and direction of the axis
        """
        return core.InfiniteLine3D()
    @axis.setter
    def axis(self, value: core.InfiniteLine3D):
        """
        Gets and sets the infinite line that defines the position and direction of the axis
        """
        pass

class ConstructionAxisCircularFaceDefinition(ConstructionAxisDefinition):
    """
    The definition for a parametric construction axis created using the SetbyCircularFace method
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionAxisCircularFaceDefinition:
        return ConstructionAxisCircularFaceDefinition()
    @property
    def circularFace(self) -> BRepFace:
        """
        Gets and sets the cylinder, cone, or torus this work axis
        is parametrically dependent on.
        """
        return BRepFace()
    @circularFace.setter
    def circularFace(self, value: BRepFace):
        """
        Gets and sets the cylinder, cone, or torus this work axis
        is parametrically dependent on.
        """
        pass

class ConstructionAxisEdgeDefinition(ConstructionAxisDefinition):
    """
    The definition for a parametric construction axis created using the SetbyEdge method
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionAxisEdgeDefinition:
        return ConstructionAxisEdgeDefinition()
    @property
    def edgeEntity(self) -> core.Base:
        """
        Gets and sets the linear edge, construction line, or sketch line that defines
        the construction axis.
        """
        return core.Base()
    @edgeEntity.setter
    def edgeEntity(self, value: core.Base):
        """
        Gets and sets the linear edge, construction line, or sketch line that defines
        the construction axis.
        """
        pass

class ConstructionAxisNormalToFaceAtPointDefinition(ConstructionAxisDefinition):
    """
    The definition for a parametric construction axis created using the
    SetByNormalToFaceAtPoint method
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionAxisNormalToFaceAtPointDefinition:
        return ConstructionAxisNormalToFaceAtPointDefinition()
    def redefine(self, face: core.Base, pointEntity: core.Base) -> bool:
        """
        Redefines the input geometry of the construction axis.
        face : The face the axis is normal to
        pointEntity : The point that positions the axis
        Returns true if the redefinition of the construction axis is successful.
        """
        return bool()
    @property
    def face(self) -> core.Base:
        """
        Gets the face the axis is normal to
        """
        return core.Base()
    @property
    def pointEntity(self) -> core.Base:
        """
        Gets the point that positions the axis
        """
        return core.Base()

class ConstructionAxisPerpendicularAtPointDefinition(ConstructionAxisDefinition):
    """
    The definition for a parametric construction axis created using the
    SetByPerpendicularAtPoint method
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionAxisPerpendicularAtPointDefinition:
        return ConstructionAxisPerpendicularAtPointDefinition()
    def redefine(self, face: BRepFace, pointEntity: core.Base) -> bool:
        """
        Redefines the input geometry of the construction axis.
        face : The face (BRepFace object) to create the axis perpendicular to.
        pointEntity : The point (sketch point, vertex, construction point) used to position the axis.
        Returns true if the redefinition of the axis is successful.
        """
        return bool()
    @property
    def face(self) -> BRepFace:
        """
        Returns the face the construction axis is perpendicular to.
        """
        return BRepFace()
    @property
    def point(self) -> core.Base:
        """
        Returns the point (construction or sketch point) that positions the axis.
        """
        return core.Base()

class ConstructionAxisTwoPlaneDefinition(ConstructionAxisDefinition):
    """
    The definition for a parametric construction axis created using the SetByTwoPlanes method
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionAxisTwoPlaneDefinition:
        return ConstructionAxisTwoPlaneDefinition()
    def redefine(self, planarEntityOne: core.Base, planarEntityTwo: core.Base) -> bool:
        """
        Redefines the input geometry of the construction axis.
        planarEntityOne : The first planar face or construction plane
        planarEntityTwo : The second planar face or construction plane
        Returns true if the redefinition of the axis is successful.
        """
        return bool()
    @property
    def planarEntityOne(self) -> core.Base:
        """
        Gets the first planar face or construction plane
        """
        return core.Base()
    @property
    def planarEntityTwo(self) -> core.Base:
        """
        Gets the second planar face or construction plane
        """
        return core.Base()

class ConstructionAxisTwoPointDefinition(ConstructionAxisDefinition):
    """
    The definition for a parametric construction axis created using the SetbyTwoPoints method
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionAxisTwoPointDefinition:
        return ConstructionAxisTwoPointDefinition()
    def redefine(self, pointEntityOne: core.Base, pointEntityTwo: core.Base) -> bool:
        """
        Redefines the input geometry of the construction axis.
        pointEntityOne : The first point
        pointEntityTwo : The second point
        Returns true if the redefinition of the construction axis is successful.
        """
        return bool()
    @property
    def pointEntityOne(self) -> core.Base:
        """
        Gets the first point.
        """
        return core.Base()
    @property
    def pointEntityTwo(self) -> core.Base:
        """
        Gets the second point.
        """
        return core.Base()

class ConstructionPlaneAtAngleDefinition(ConstructionPlaneDefinition):
    """
    ConstructionPlaneAtAngleDefinition defines a ConstructionPlane by an angle around
    a linear entity.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionPlaneAtAngleDefinition:
        return ConstructionPlaneAtAngleDefinition()
    def redefine(self, angle: core.ValueInput, linearEntity: core.Base, planarEntity: core.Base) -> bool:
        """
        Redefines the input geometry of the construction plane.
        angle : A ValueInput object that defines the angle at which to create the construction plane
        linearEntity : The linear edge, construction line, or sketch line that defines the axis of rotation to
        measure the angle about
        planarEntity : A plane, planar face or construction plane the angle of the construction plane is
        measured from
        Returns true if the redefinition of the plane is successful.
        """
        return bool()
    @property
    def angle(self) -> Parameter:
        """
        Returns a Parameter object that controls the value of the angle. You can use properties
        of the returned Parameter object to modify the angle.
        """
        return Parameter()
    @property
    def linearEntity(self) -> core.Base:
        """
        Gets the linear edge, construction line, or sketch line that defines
        the axis of rotation for the construction plane.
        """
        return core.Base()
    @property
    def planarEntity(self) -> core.Base:
        """
        Gets the planar face or construction plane the angle for this
        construction plane is measured from and is parametrically dependent on.
        
        This property is only valid for construction planes that were created using
        the API. When an angle construction plane is created using the user interface
        the plane is not defined by the user and a plane is automatically inferred by
        Fusion. In this case, this property will return null.
        """
        return core.Base()

class ConstructionPlaneByPlaneDefinition(ConstructionPlaneDefinition):
    """
    The definition for a non-parametric construction plane. All constructions planes will
    return this type of definition regardless of method used to initially create them.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionPlaneByPlaneDefinition:
        return ConstructionPlaneByPlaneDefinition()
    @property
    def plane(self) -> core.Plane:
        """
        Gets and sets the position of the construction plane. Setting this property
        is only valid for a construction plane in a direct edit design or in a base feature.
        Construction planes in a parametric model are parametrically controlled and cannot
        be directly edited.
        """
        return core.Plane()
    @plane.setter
    def plane(self, value: core.Plane):
        """
        Gets and sets the position of the construction plane. Setting this property
        is only valid for a construction plane in a direct edit design or in a base feature.
        Construction planes in a parametric model are parametrically controlled and cannot
        be directly edited.
        """
        pass

class ConstructionPlaneDistanceOnPathDefinition(ConstructionPlaneDefinition):
    """
    ConstructionDistanceOnPathDefinition defines a ConstructionPlane normal to an edge or
    sketch profile at a specified position along the path defined by the edge or sketch profile.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionPlaneDistanceOnPathDefinition:
        return ConstructionPlaneDistanceOnPathDefinition()
    def redefine(self, pathEntity: core.Base, distance: core.ValueInput) -> bool:
        """
        Redefines the input defining the construction plane.
        pathEntity : The sketch curve, edge, or a profile object
        distance : The ValueInput object that defines the distance along the path
        Returns true if the redefinition of the plane is successful.
        """
        return bool()
    @property
    def pathEntity(self) -> core.Base:
        """
        Gets the sketch curve, edge, or a profile object.
        """
        return core.Base()
    @property
    def distance(self) -> Parameter:
        """
        Gets the distance along the path.
        """
        return Parameter()

class ConstructionPlaneMidplaneDefinition(ConstructionPlaneDefinition):
    """
    ConstructionPlaneMidplaneDefinition defines a ConstructionPlane by...
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionPlaneMidplaneDefinition:
        return ConstructionPlaneMidplaneDefinition()
    def redefine(self, planarEntityOne: core.Base, planarEntityTwo: core.Base) -> bool:
        """
        Redefines the input geometry of the construction plane.
        planarEntityOne : The first planar face or construction plane that defines this ConstructionPlane.
        planarEntityTwo : The second planar face or construction plane that defines this ConstructionPlane.
        Returns true if the redefinition of the plane is successful.
        """
        return bool()
    @property
    def planarEntityOne(self) -> core.Base:
        """
        Gets the first planar face or construction plane that defines this ConstructionPlane.
        """
        return core.Base()
    @property
    def planarEntityTwo(self) -> core.Base:
        """
        Gets the second planar face or construction plane that defines this ConstructionPlane.
        """
        return core.Base()

class ConstructionPlaneOffsetDefinition(ConstructionPlaneDefinition):
    """
    ConstructionPlaneOffsetDefinition defines a construction plane that is offset by a specified
    distance from a planar face or construction plane by a specified distance. A positive or negative
    value can control the direction of the offset.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionPlaneOffsetDefinition:
        return ConstructionPlaneOffsetDefinition()
    def redefine(self, offset: core.ValueInput, planarEntity: core.Base) -> bool:
        """
        Redefines the input geometry of the construction plane.
        offset : ValueInput object that specifies the offset distance
        planarEntity : A plane, planar face or construction plane from which to measure the offset from
        Returns true is the operation is successful
        """
        return bool()
    @property
    def offset(self) -> Parameter:
        """
        Returns a Parameter object that controls the value of the offset. You can use properties
        of the returned Parameter object to modify the offset.
        """
        return Parameter()
    @property
    def planarEntity(self) -> core.Base:
        """
        Gets the planar face or construction plane this construction plane
        is parametrically dependent on.
        """
        return core.Base()

class ConstructionPlaneOffsetThroughPointDefinition(ConstructionPlaneDefinition):
    """
    Defines a construction plane that is offset from a planar face or construction plane
    and whose offset distance is defined by a vertex, sketch point, or construction point where
    the plane passes through the point.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionPlaneOffsetThroughPointDefinition:
        return ConstructionPlaneOffsetThroughPointDefinition()
    def redefine(self, planarEntity: core.Base, point: core.Base) -> bool:
        """
        Redefines the input geometry of the construction plane.
        planarEntity : A planar BRepFace or ConstructionPlane that the new construction plane will be offset from.
        point : A BRepVertex, SketchPoint, or ConstructionPoint that defines the offset distance.
        Returns true is the operation is successful
        """
        return bool()
    @property
    def point(self) -> core.Base:
        """
        Returns the point that controls the offset.
        """
        return core.Base()
    @property
    def planarEntity(self) -> core.Base:
        """
        Returns the planar face or construction plane this construction plane
        is parametrically dependent on.
        """
        return core.Base()

class ConstructionPlaneTangentAtPointDefinition(ConstructionPlaneDefinition):
    """
    ConstructionPlaneTangentAtPointDefinition defines a ConstructionPlane tangent to a
    face and aligned to a point.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionPlaneTangentAtPointDefinition:
        return ConstructionPlaneTangentAtPointDefinition()
    def redefine(self, tangentFace: core.Base, pointEntity: core.Base) -> bool:
        """
        Redefines the input geometry of the construction plane.
        tangentFace : The face to create the plane tangent to
        pointEntity : The point (sketch point, vertex, construction point) used to align the plane.
        Returns true if the redefinition of the plane is successful.
        """
        return bool()
    @property
    def tangentFace(self) -> BRepFace:
        """
        Gets the tangent face.
        """
        return BRepFace()
    @property
    def pointEntity(self) -> core.Base:
        """
        Gets the point (sketch point, vertex, construction point) used to align the plane.
        """
        return core.Base()

class ConstructionPlaneTangentDefinition(ConstructionPlaneDefinition):
    """
    ConstructionPlaneTangentDefinition defines a ConstructionPlane tangent to a cylindrical or conical
    face at a point.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionPlaneTangentDefinition:
        return ConstructionPlaneTangentDefinition()
    def redefine(self, angle: core.ValueInput, tangentFace: core.Base, planarEntity: core.Base) -> bool:
        """
        Redefines the input geometry of the construction plane.
        angle : A Value object that defines the angle of the construction plane
        tangentFace : The cylindrical or conical face that the construction plane is tangent to.
        planarEntity : The planar face or construction plane the angle for this
        construction plane is measured from
        Returns true if the redefinition of the plane is successful.
        """
        return bool()
    @property
    def angle(self) -> Parameter:
        """
        Returns a Value object that for a transient definition provides the current
        assigned value. For a definition associated with a construction plane, it
        provides access to the associated parameter controlling the angle.
        """
        return Parameter()
    @property
    def tangentFace(self) -> core.Base:
        """
        Gets the cylindrical or conical face that the construction plane
        is tangent to.
        """
        return core.Base()
    @property
    def planarEntity(self) -> core.Base:
        """
        Gets the planar face or construction plane the angle for this
        construction plane is measured from and is parametrically dependent on.
        """
        return core.Base()

class ConstructionPlaneThreePointsDefinition(ConstructionPlaneDefinition):
    """
    ConstructionPlaneThreePointDefinition defines a ConstructionPlane by 3 point entities
    (e.g. (sketch points, vertices or construction points) that form a triangle (i.e.
    no two points the same and they aren't collinear).
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionPlaneThreePointsDefinition:
        return ConstructionPlaneThreePointsDefinition()
    def redefine(self, pointEntityOne: core.Base, pointEntityTwo: core.Base, pointEntityThree: core.Base) -> bool:
        """
        Redefines the input geometry of the construction plane.
        pointEntityOne : Gets the first construction point, sketch point or vertex.
        pointEntityTwo : Gets the second construction point, sketch point or vertex.
        pointEntityThree : Gets the third construction point, sketch point or vertex.
        Returns true if the redefinition of the plane is successful.
        """
        return bool()
    @property
    def pointEntityOne(self) -> core.Base:
        """
        Gets the first construction point, sketch point or vertex.
        """
        return core.Base()
    @property
    def pointEntityTwo(self) -> core.Base:
        """
        Gets the second construction point, sketch point or vertex.
        """
        return core.Base()
    @property
    def pointEntityThree(self) -> core.Base:
        """
        Gets the third construction point, sketch point or vertex.
        """
        return core.Base()

class ConstructionPlaneTwoEdgesDefinition(ConstructionPlaneDefinition):
    """
    ConstructionPlaneTwoEdgesDefinition defines a ConstructionPlane by two co-planar
    linear entities like edges, sketch lines or construction axis.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionPlaneTwoEdgesDefinition:
        return ConstructionPlaneTwoEdgesDefinition()
    def redefine(self, linearEntityOne: core.Base, linearEntityTwo: core.Base) -> bool:
        """
        Redefines the input geometry of the construction plane.
        linearEntityOne : The first linear edge, construction line, or sketch line that defines
        the construction plane.
        linearEntityTwo : The second linear edge, construction line, or sketch line that defines
        the construction plane.
        Returns true if successful.
        """
        return bool()
    @property
    def linearEntityOne(self) -> core.Base:
        """
        Gets the first linear edge, construction line, or sketch line that defines
        the construction plane.
        """
        return core.Base()
    @property
    def linearEntityTwo(self) -> core.Base:
        """
        Gets the second linear edge, construction line, or sketch line that defines
        the construction plane.
        """
        return core.Base()

class ConstructionPointCenterDefinition(ConstructionPointDefinition):
    """
    The definition for a parametric construction point created using the SetbyCenter method
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionPointCenterDefinition:
        return ConstructionPointCenterDefinition()
    @property
    def circularEntity(self) -> core.Base:
        """
        Gets and sets the spherical face (sphere or torus), circular edge or sketch arc/circle
        whose center defines the location for the construction point.
        """
        return core.Base()
    @circularEntity.setter
    def circularEntity(self, value: core.Base):
        """
        Gets and sets the spherical face (sphere or torus), circular edge or sketch arc/circle
        whose center defines the location for the construction point.
        """
        pass

class ConstructionPointEdgePlaneDefinition(ConstructionPointDefinition):
    """
    The definition for a parametric construction point created using the SetbyEdgePlane method
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionPointEdgePlaneDefinition:
        return ConstructionPointEdgePlaneDefinition()
    def redefine(self, edge: core.Base, plane: core.Base) -> bool:
        """
        Redefines the input geometry of the construction point.
        edge : A linear B-Rep edge, construction axis or sketch line.
        plane : A plane, planar B-Rep face or construction plane.
        Returns true if the redefinition of the Construction Point is successful.
        """
        return bool()
    @property
    def edge(self) -> core.Base:
        """
        A linear B-Rep edge, construction axis or sketch line.
        """
        return core.Base()
    @property
    def plane(self) -> core.Base:
        """
        A plane, planar B-Rep face or construction plane.
        """
        return core.Base()

class ConstructionPointPointDefinition(ConstructionPointDefinition):
    """
    The definition for a parametric construction point created using the SetbyPoint method
    All non-parametric constructions points will return this type of definition regardless
    of the method used to initially create them.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionPointPointDefinition:
        return ConstructionPointPointDefinition()
    @property
    def pointEntity(self) -> core.Base:
        """
        Gets and sets the position of the point using a construction point, sketch point or
        vertex.
        Non-parametric points will always return a Point3D object
        """
        return core.Base()
    @pointEntity.setter
    def pointEntity(self, value: core.Base):
        """
        Gets and sets the position of the point using a construction point, sketch point or
        vertex.
        Non-parametric points will always return a Point3D object
        """
        pass

class ConstructionPointThreePlanesDefinition(ConstructionPointDefinition):
    """
    The definition for a parametric construction point created using the SetbyThreePlanes method
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionPointThreePlanesDefinition:
        return ConstructionPointThreePlanesDefinition()
    def redefine(self, planeOne: core.Base, planeTwo: core.Base, planeThree: core.Base) -> bool:
        """
        Redefines the input geometry of the construction point.
        planeOne : The first plane or planar face to intersect
        planeTwo : The second plane or planar face to intersect
        planeThree : The third plane or planar face to intersect
        Returns true if the redefinition of the Construction Point is successful.
        """
        return bool()
    @property
    def planeOne(self) -> core.Base:
        """
        The first plane or planar face
        """
        return core.Base()
    @property
    def planeTwo(self) -> core.Base:
        """
        The second plane or planar face
        """
        return core.Base()
    @property
    def planeThree(self) -> core.Base:
        """
        The third plane or planar face
        """
        return core.Base()

class ConstructionPointTwoEdgesDefinition(ConstructionPointDefinition):
    """
    The definition for a parametric construction point created using the SetbyTwoEdges method
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConstructionPointTwoEdgesDefinition:
        return ConstructionPointTwoEdgesDefinition()
    def redefine(self, edgeOne: core.Base, edgeTwo: core.Base) -> bool:
        """
        Redefines the input geometry of the construction point.
        edgeOne : The first B-Rep edge or sketch line.
        edgeTwo : The second B-Rep edge or sketch line.
        Returns true if the redefinition of the Construction Point is successful.
        """
        return bool()
    @property
    def edgeOne(self) -> core.Base:
        """
        Returns a B-Rep edge or sketch line
        """
        return core.Base()
    @property
    def edgeTwo(self) -> core.Base:
        """
        Returns a B-Rep edge or sketch line
        """
        return core.Base()

class CopyPasteBody(Feature):
    """
    Object that represents an existing Copy/Paste Body feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CopyPasteBody:
        return CopyPasteBody()
    @property
    def sourceBody(self) -> core.ObjectCollection:
        """
        Returns the bodies that were copied to create the result bodies of this feature. An ObjectCollection
        is returned that will contain the original bodies. It's possible that the collection can be empty
        or contain less than the number of bodies originally copied. This happens in the case where a body
        has been deleted or consumed by some other operation.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()

class CornerClosureFeature(Feature):
    """
    Defines a corner closure feature, providing methods to redefine the type of corner closure.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CornerClosureFeature:
        return CornerClosureFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> CornerClosureFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this is not the NativeObject.
        """
        return CornerClosureFeature()
    @property
    def definitionType(self) -> CornerClosureFeatureDefinitionTypes:
        """
        Gets the type of corner closure defined.
        """
        return CornerClosureFeatureDefinitionTypes()
    @property
    def definition(self) -> CornerClosureFeatureDefinition:
        """
        Returns the CornerClosureFeatureDefinition object which provides access to the information
        defining this CornerClosureFeature and the ability to edit it.
        """
        return CornerClosureFeatureDefinition()
    @property
    def nativeObject(self) -> CornerClosureFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return CornerClosureFeature()

class CurvatureCombAnalysis(Analysis):
    """
    Represents any existing Curvature Comb Analysis that exist in the design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CurvatureCombAnalysis:
        return CurvatureCombAnalysis()

class CurvatureMapAnalysis(Analysis):
    """
    Represents any existing Curvature Map Analysis that exist in the design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CurvatureMapAnalysis:
        return CurvatureMapAnalysis()

class CustomFeature(Feature):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Object that represents an existing CustomFeature feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomFeature:
        return CustomFeature()
    def setStartAndEndFeatures(self, startFeature: core.Base, endFeature: core.Base) -> bool:
        """
        Sets the start and end features that will be grouped by the custom feature.
        The "features" in this case can be any object that is visible in the timeline,
        such as modeling features, sketches, and construction geometry. The input features
        and all features between them in the timeline will be grouped by the custom feature.
        
        The current start and end features can be determined by using the CustomFeature.features property
        and getting the first and last feature from the returned array.
        startFeature : The first feature in the timeline to be grouped by the custom feature. The start and the end features
        can be null which will result in moving all of the features out of the custom feature. This is useful
        in cases where you need to modify the inputs to a feature contained within a custom feature. You can
        move the features out of the custom feature, move the timeline marker as needed to edit the features,
        and then use this method again to add them back into the custom feature.
        endFeature : The last feature in the timeline that will be grouped by the custom feature. This can be the same
        feature that is provided as the startFeature argument for the case where the custom feature contains
        a single feature.
        Returns true if setting the start and end features was successful.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> CustomFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this is not the NativeObject.
        """
        return CustomFeature()
    @property
    def definition(self) -> CustomFeatureDefinition:
        """
        Gets the CustomFeatureDefinition object associated with this custom feature.
        null/None is returned in the case where the definition does not exist, which is
        typically a result of the owning add-in not being loaded.
        """
        return CustomFeatureDefinition()
    @property
    def dependencies(self) -> CustomFeatureDependencies:
        """
        Returns the collection of dependencies for this custom feature. You can
        use the collection to query, add, and remove dependencies.
        """
        return CustomFeatureDependencies()
    @property
    def parameters(self) -> CustomFeatureParameters:
        """
        Returns the list of parameters associated with this custom feature.
        """
        return CustomFeatureParameters()
    @property
    def features(self) -> list[core.Base]:
        """
        Returns the features combined by this custom feature. The start and end features and all of
        the features between them in the timeline are returned.
        """
        return [core.Base()]
    @property
    def customNamedValues(self) -> CustomNamedValues:
        """
        Returns the set of custom named values associated with this custom feature. These are
        a set of named values that are saved with this feature that you can use to save
        any additional information that is useful for you in managing the custom feature.
        For example, you might have a setting like an option for different shapes that
        the user chooses when creating the feature that are not represented as a parameter.
        You can use this to save the chosen value so when the feature is computed or edited
        you can use the value originally chosen. During an edit, you might allow the user
        to edit this setting and you can update the saved custom value.
        """
        return CustomNamedValues()
    @property
    def nativeObject(self) -> CustomFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return CustomFeature()

class CustomFeatureEvent(core.Event):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    A CustomFeature event is an event associated with handling changes to a custom feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomFeatureEvent:
        return CustomFeatureEvent()
    def add(self, handler: CustomFeatureEventHandler) -> 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: CustomFeatureEventHandler) -> 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 CustomFeatureEventArgs(core.EventArgs):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The CustomFeatureEventArgs provides information associated with a custom feature event.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomFeatureEventArgs:
        return CustomFeatureEventArgs()
    @property
    def customFeature(self) -> CustomFeature:
        """
        Provides access to the custom feature that is being recomputed.
        """
        return CustomFeature()
    @property
    def computeStatus(self) -> core.Status:
        """
        Provides access to the Status object associated with this compute. If the compute is successful
        you shouldn't do anything with this property. If the compute is not fully successful, you can
        use this returned Status object to define any errors or warnings that occurred during the compute.
        These warnings and errors will be shown to the user in the Alerts dialog.
        """
        return core.Status()

class CustomGraphicsAppearanceColorEffect(CustomGraphicsColorEffect):
    """
    One of the types of color effects that can be applied to a custom graphics entity. With this
    type of effect, the graphics entity will display using a Fusion appearance.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomGraphicsAppearanceColorEffect:
        return CustomGraphicsAppearanceColorEffect()
    @staticmethod
    def create(appearance: core.Appearance) -> CustomGraphicsAppearanceColorEffect:
        """
        Statically creates a new CustomGraphicsAppearanceColorEffect object. This can be used when
        setting the color property of the various custom graphics objects. With this coloring
        effect, an existing appearance is used. The appearance must be available in the
        design where the graphics will be drawn.
        appearance : The appearance to use. The appearance must be available in the design where the
        graphics will be drawn.
        Returns the created CustomGraphicsAppearanceColorEffect or null in case of a failure.
        """
        return CustomGraphicsAppearanceColorEffect()
    @property
    def appearance(self) -> core.Appearance:
        """
        Gets and sets the appearance to use. The appearance assigned must be available in the
        design where the graphics will be drawn.
        """
        return core.Appearance()
    @appearance.setter
    def appearance(self, value: core.Appearance):
        """
        Gets and sets the appearance to use. The appearance assigned must be available in the
        design where the graphics will be drawn.
        """
        pass

class CustomGraphicsBasicMaterialColorEffect(CustomGraphicsColorEffect):
    """
    One of the types of color effects that can be applied to a custom graphics entity. With this type
    of effect, basic Phong shading and lighting techniques are used so give the entity a 3-dimensional
    appearance.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomGraphicsBasicMaterialColorEffect:
        return CustomGraphicsBasicMaterialColorEffect()
    @staticmethod
    def create(diffuseColor: core.Color, ambientColor: core.Color = None, specularColor: core.Color = None, emissiveColor: core.Color = None, glossiness: float = 5.0, opacity: float = 1.0) -> CustomGraphicsBasicMaterialColorEffect:
        """
        Statically creates a new basic CustomGraphicsBasicMaterialColorEffect object. This can be used to
        color custom graphics entities. With this type of effect you define the basic Phong shading
        properties so that the entity can be rendered with basic shading and lighting effects applied
        so that it appears 3-dimensional.
        
        If only the emissive color is provided, the API will automatically create values for the
        other colors to render the object as a single color.
        diffuseColor : The diffuse color is the color of reflected light as it scatters off of a rough surface and is
        the primary color of the entity. This color is always required.
        ambientColor : The ambient color is the color of the light anywhere there's not a specific light source. If
        not specified the same color as the diffuse color is used.
        specularColor : The specular color is the color of reflected light (highlights) as it is reflected off of a shiny surface. This is
        commonly white or a lighter shade of the diffuse color. If not specified, white is used.
        emissiveColor : The emissive color is the color of light that entity emits, such as in a light bulb. If not specified,
        black for no emissive light is used.
        glossiness : This specifies how glossy the entity is. The glossiness determines the size of highlights, and thus
        the apparent shininess of the material. A value of 0.0 will result in very large highlights like you
        would see with a rough surface. A maximum value of 128.0 will result in very small highlight as
        from a smooth surface.
        opacity : Specifies the opacity of the entity where a value of 1.0 is completely opaque and 0.0 is completely transparent.
        Returns the created CustomGraphicsBasicMaterialColorEffect or null in case of a failure.
        """
        return CustomGraphicsBasicMaterialColorEffect()
    @property
    def emissiveColor(self) -> core.Color:
        """
        Gets and sets the emissiveColor associated with this CustomGraphicsBasicMaterialColorEffect object.
        The emissive color is the primary color of the entity.
        """
        return core.Color()
    @emissiveColor.setter
    def emissiveColor(self, value: core.Color):
        """
        Gets and sets the emissiveColor associated with this CustomGraphicsBasicMaterialColorEffect object.
        The emissive color is the primary color of the entity.
        """
        pass
    @property
    def ambientColor(self) -> core.Color:
        """
        Gets and sets the ambientColor associated with this CustomGraphicsBasicMaterialColorEffect object.
        The ambient color is the color of the light anywhere there's not a specific light source.
        """
        return core.Color()
    @ambientColor.setter
    def ambientColor(self, value: core.Color):
        """
        Gets and sets the ambientColor associated with this CustomGraphicsBasicMaterialColorEffect object.
        The ambient color is the color of the light anywhere there's not a specific light source.
        """
        pass
    @property
    def diffuseColor(self) -> core.Color:
        """
        Gets and sets the diffuseColor associated with this CustomGraphicsBasicMaterialColorEffect object.
        The diffuse color is the color of reflected light as it scatters off of a rough surface.
        """
        return core.Color()
    @diffuseColor.setter
    def diffuseColor(self, value: core.Color):
        """
        Gets and sets the diffuseColor associated with this CustomGraphicsBasicMaterialColorEffect object.
        The diffuse color is the color of reflected light as it scatters off of a rough surface.
        """
        pass
    @property
    def specularColor(self) -> core.Color:
        """
        Gets and sets the specularColor associated with this CustomGraphicsBasicMaterialColorEffect object.
        The specular color is the color of reflected light (highlights) as it is reflected off of a shiny surface.
        For most materials, using white or a light color for the specular color is common practice. This will make
        the highlights appear bright and noticeable, mimicking how light sources typically reflect off shiny surfaces.
        
        For colored metallic or glossy materials, you might choose a specular color that is tinted based on the material's
        color. For example, gold might have a yellowish specular color, and copper might have an orange-reddish specular color.
        
        Generally, non-metallic materials (like plastics, ceramics, etc.) have specular colors that are less influenced by the
        object's base color and more influenced by the light's color. On the other hand, metallic materials tend to have
        specular highlights that are colored by the material itself.
        """
        return core.Color()
    @specularColor.setter
    def specularColor(self, value: core.Color):
        """
        Gets and sets the specularColor associated with this CustomGraphicsBasicMaterialColorEffect object.
        The specular color is the color of reflected light (highlights) as it is reflected off of a shiny surface.
        For most materials, using white or a light color for the specular color is common practice. This will make
        the highlights appear bright and noticeable, mimicking how light sources typically reflect off shiny surfaces.
        
        For colored metallic or glossy materials, you might choose a specular color that is tinted based on the material's
        color. For example, gold might have a yellowish specular color, and copper might have an orange-reddish specular color.
        
        Generally, non-metallic materials (like plastics, ceramics, etc.) have specular colors that are less influenced by the
        object's base color and more influenced by the light's color. On the other hand, metallic materials tend to have
        specular highlights that are colored by the material itself.
        """
        pass
    @property
    def glossiness(self) -> float:
        """
        Gets and sets the glossiness associated with this CustomGraphicsBasicMaterialColorEffect object.
        The glossiness determines the size of highlights, and thus the apparent shininess of the material.
        A value of 0.0 will result in very large highlights like you would see with a rough surface.
        A maximum value of 128.0 will result in very small highlight as from a smooth surface.
        """
        return float()
    @glossiness.setter
    def glossiness(self, value: float):
        """
        Gets and sets the glossiness associated with this CustomGraphicsBasicMaterialColorEffect object.
        The glossiness determines the size of highlights, and thus the apparent shininess of the material.
        A value of 0.0 will result in very large highlights like you would see with a rough surface.
        A maximum value of 128.0 will result in very small highlight as from a smooth surface.
        """
        pass
    @property
    def opacity(self) -> float:
        """
        Gets and sets the opacity associated with this CustomGraphicsBasicMaterialColorEffect object.
        A value of 1.0 is completely opaque and 0.0 is completely transparent.
        """
        return float()
    @opacity.setter
    def opacity(self, value: float):
        """
        Gets and sets the opacity associated with this CustomGraphicsBasicMaterialColorEffect object.
        A value of 1.0 is completely opaque and 0.0 is completely transparent.
        """
        pass

class CustomGraphicsBRepBody(CustomGraphicsEntity):
    """
    This represents custom graphics that are based on a BRepBody.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomGraphicsBRepBody:
        return CustomGraphicsBRepBody()
    @property
    def faces(self) -> CustomGraphicsBRepFaces:
        """
        Returns the collection of CustomGraphicsBRepFace objects in the CustomGraphicsBRepBody.
        """
        return CustomGraphicsBRepFaces()
    @property
    def edges(self) -> CustomGraphicsBRepEdges:
        """
        Returns the collection of CustomGraphicsBRepEdge objects in the CustomGraphicsBRepBody.
        """
        return CustomGraphicsBRepEdges()
    @property
    def vertices(self) -> CustomGraphicsBRepVertices:
        """
        Returns the collection of CustomGraphicsBRepVertex objects in the CustomGraphicsBRepBody.
        """
        return CustomGraphicsBRepVertices()
    @property
    def bRepBody(self) -> BRepBody:
        """
        Returns a transient BRepBody that is being displayed as custom graphics.
        """
        return BRepBody()

class CustomGraphicsCurve(CustomGraphicsEntity):
    """
    This represents custom graphics that are based on any object derived from Curve3D (except InfiniteLine3D).
    This is useful when drawing curved geometry where the alternative is to stroke the smooth curve and draw
    it as a series of lines. Using this you can directly use the curve and Fusion will automatically take care
    of creating the correct display for the current level of detail.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomGraphicsCurve:
        return CustomGraphicsCurve()
    @property
    def curve(self) -> core.Curve3D:
        """
        Gets and sets the curve associated with this graphics entity. Any of the curve types derived from Curve3D
        is valid except for InfiniteLine3D.
        """
        return core.Curve3D()
    @curve.setter
    def curve(self, value: core.Curve3D):
        """
        Gets and sets the curve associated with this graphics entity. Any of the curve types derived from Curve3D
        is valid except for InfiniteLine3D.
        """
        pass
    @property
    def weight(self) -> float:
        """
        Defines the thickness of the curve in pixels.
        """
        return float()
    @weight.setter
    def weight(self, value: float):
        """
        Defines the thickness of the curve in pixels.
        """
        pass
    @property
    def lineStylePattern(self) -> LineStylePatterns:
        """
        The line style to apply to the curve. The default is to draw the curve using continuous line style.
        """
        return LineStylePatterns()
    @lineStylePattern.setter
    def lineStylePattern(self, value: LineStylePatterns):
        """
        The line style to apply to the curve. The default is to draw the curve using continuous line style.
        """
        pass
    @property
    def lineStyleScale(self) -> float:
        """
        Defines the scale as it relates to how the line style is applied. The effect is to
        shrink or expand the line style as it is applied to the line. This does not affect the line width.
        """
        return float()
    @lineStyleScale.setter
    def lineStyleScale(self, value: float):
        """
        Defines the scale as it relates to how the line style is applied. The effect is to
        shrink or expand the line style as it is applied to the line. This does not affect the line width.
        """
        pass

class CustomGraphicsGroup(CustomGraphicsEntity):
    """
    Represents a group of custom graphics entities. A group can also own other graphics groups.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomGraphicsGroup:
        return CustomGraphicsGroup()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> CustomGraphicsEntity:
        return None
    def __iter__(self) -> Iterator[CustomGraphicsEntity]:
        return None
    def item(self, index: int) -> CustomGraphicsEntity:
        """
        Function that returns the specified custom graphics entity within this group. This also includes
        any child graphics groups.
        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 CustomGraphicsEntity()
    def addGroup(self) -> CustomGraphicsGroup:
        """
        Creates a new, empty CustomGraphicsGroup that is owned by this CustomGraphicsGroup.
        Returns the new CustomGraphicsGroup object or null in the case of a failure.
        """
        return CustomGraphicsGroup()
    def addMesh(self, coordinates: CustomGraphicsCoordinates, coordinateIndexList: list[int], normalVectors: list[float], normalIndexList: list[int]) -> CustomGraphicsMesh:
        """
        Adds a new CustomGraphicsMesh entity to this group.
        coordinates : The CustomGraphicsCoordinates object that defines the coordinates of the vertices of the mesh.
        A CustomGraphicsCoordinates object can be created using the static create method of the CustomGraphicsCoordinates class.
        coordinateIndexList : An array of integers that represent indices into the coordinates to define the vertices of the triangles. If an empty
        array is provided, then it is assumed that the first three coordinates define the first triangle, the next three define
        the second triangle, and so on.
        normalVectors : An array of doubles that represent the x, y, z components of the normals at each coordinate. There should be a normal defined
        for each coordinate. If an empty array is provided for the normal vectors, Fusion will automatically calculate normal vectors
        that are 90 degrees to the face of the triangle, making it appear flat.
        normalIndexList : An array of integers that represent indices into the normal vectors to define which vector corresponds to which vertex. This
        should be the same size as the vertex index list. If an empty array is input and normal vectors are provided, it is assumed that
        the normals match up one-to-one to each coordinate.
        Returns the new CustomGraphicsMesh object or null in the case of a failure.
        """
        return CustomGraphicsMesh()
    def addLines(self, coordinates: CustomGraphicsCoordinates, indexList: list[int], isLineStrip: bool, lineStripLengths: list[int] = None) -> CustomGraphicsLines:
        """
        Adds a new CustomGraphicsLines entity to this group.
        coordinates : The CustomGraphicsCoordinates object that defines the coordinates of the vertices of the lines.
        A CustomGraphicsCoordinates object can be created using the static create method of the CustomGraphicsCoordinates class.
        indexList : An array of integers that represent indices into the coordinates to define the order the coordinates are used to draw the lines.
        If an empty array is provided, the coordinates are used in the order they're provided in the provided CustomGraphicsCoordinates object.
        isLineStrip : A boolean indicating if a series of individual lines or a connected set of lines (a line strip) is to be drawn. If individual lines
        are drawn, (this argument is false), each pair of coordinates defines a single line. If a line strip is drawn, (this argument is true),
        the first pair of coordinates define the first line and the third coordinate defines a line that connects to the second coordinate.
        The fourth coordinate creates a line connecting to the third coordinate, and so on.
        lineStripLengths : If isLineStrip is true, this argument is used to define the number of coordinates to use in each line strip. It is an array of integers
        that defines the number of coordinates for each line strip. For example, if the array [4,10] is input, 4 coordinates are connected for
        the first line strip and 10 are used to create a second line strip. If an empty array is provided, a single line strip is created. If
        isLineStrip is False, this argument is ignored.
        Returns the new CustomGraphicsLines object or null in the case of a failure.
        """
        return CustomGraphicsLines()
    def addCurve(self, curve: core.Curve3D) -> CustomGraphicsCurve:
        """
        Adds a new CustomGraphicsCurve entity to this group. A CustomGraphicsCurve is a wireframe graphic
        that is based on any object derived from Curve3D (except InfiniteLine3D). This is useful when
        drawing curved geometry where the alternative is to stroke the smooth curve and draw it as a series
        of lines. Using this you can directly use the curve and Fusion will automatically take care of creating
        the correct display for the current level of detail.
        curve : The curve that defines the shape of the graphics entity. Any of the curve types derived from Curve3D
        are valid except for InfiniteLine3D.
        Returns the newly created CustomGraphicsCurve object or null in the case of failure.
        """
        return CustomGraphicsCurve()
    def addPointSet(self, coordinates: CustomGraphicsCoordinates, indexList: list[int], pointType: CustomGraphicsPointTypes, pointImage: str) -> CustomGraphicsPointSet:
        """
        Adds a new CustomGraphicsPointSet entity to this group. This will be displayed as one or more points where
        all of the points will display using the same image.
        coordinates : The CustomGraphicsCoordinates object that defines the coordinates where the points will be displayed.
        A CustomGraphicsCoordinates object can be created using the static create method of the CustomGraphicsCoordinates class.
        indexList : An array of integers that represent indices into the coordinates to define which coordinates to use when drawing points.
        If an empty array is provided, a point is drawn for every coordinate.
        pointType : Specifies the type of point to display. Currently there are two choices; UserDefinedCustomGraphicsPointType and
        PointCloudCustomGraphicsPointType. When set to PointCloudCustomGraphicsPointType, each point displays as a single pixel and is
        the most efficient point display type for displaying sets that contain very large quantities of points. When
        set to UserDefinedCustomGraphicsPointType, you specify the image to display as the point. This can be any PNG image and is
        centered on the point.
        pointImage : If the pointType is PointCloudCustomGraphicsPointType this argument is ignored and can be an empty string. This argument
        must be specified if the pointType is UserDefinedCustomGraphicsPointType. This is the path to the PNG image file that will be
        displayed as the point. It can be either a full path to the file or a relative path that is respect to the .py, dll, or dylib
        file being run. There is no restriction on the size of the image, but generally very small images would be used for points.
        Returns the newly created CustomGraphicsPointSet object or null in the case of failure.
        """
        return CustomGraphicsPointSet()
    def addText(self, formattedText: str, font: str, size: float, transform: core.Matrix3D) -> CustomGraphicsText:
        """
        Adds a new CustomGraphicsText entity to this group. This will be displayed as a single line of text.
        It is placed so that the upper-left corner is at the point defined and the text will be parallel
        to the X-Y plane of the world coordinate system and in the X direction. To change its position relative
        to the input point you can change the horizontal and vertical justification on the returned CustomGraphicsText
        object. You can also reorient the text by changing the transform of the returned CustomGraphicsText object.
        formattedText : The text string to be displayed. Overall formatting can be defined using properties on the returned
        CustomGraphicsText object. Formatting overrides can be defined within the string using formatting codes.
        font : The name of the font to use when displaying the text.
        size : The size of the text in centimeters.
        transform : Transformation matrix that specifies the position and orientation of the text in model space. The origin of the text
        is the upper-left corner.
        Returns the newly created CustomGraphicsText object or null in the case of failure.
        """
        return CustomGraphicsText()
    def addBRepBody(self, body: BRepBody) -> CustomGraphicsBRepBody:
        """
        Adds a new CustomGraphicsBRepBody object to this group. This displays a real or transient BRepBody
        object as custom graphics. No relationship exists back to the original input body so if it is
        changed, the custom graphics will not change.
        
        The body associated with the CustomGraphicsBRep body is a copy of the original input body. Equivalent
        Faces, Edges, and vertices can be found by using the indexes in the collection. For example if you have
        a face of the original body and find that it is at index 24 in the BRepFaces collection of that body,
        the equivalent face in the custom graphics body will also be at index 24. This works as long as the original
        body is not modified in any way.
        body : The real or transient BRepBody object to draw using custom graphics.
        Returns the newly created CustomGraphicsBRepBody object or null in the case of failure.
        """
        return CustomGraphicsBRepBody()
    @property
    def count(self) -> int:
        """
        Returns the number of graphics entities within the group.
        """
        return int()
    @property
    def isChildrenSelectable(self) -> bool:
        """
        Defines if the child custom graphic entities are selectable or if the entire group is selected in the UI. By default this is true.
        If false, the isSelectable property defines if this group is selectable. If true, the isSelectable property of each child entity defines if it is selectable.
        """
        return bool()
    @isChildrenSelectable.setter
    def isChildrenSelectable(self, value: bool):
        """
        Defines if the child custom graphic entities are selectable or if the entire group is selected in the UI. By default this is true.
        If false, the isSelectable property defines if this group is selectable. If true, the isSelectable property of each child entity defines if it is selectable.
        """
        pass

class CustomGraphicsLines(CustomGraphicsEntity):
    """
    Represents lines drawn in the graphics window.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomGraphicsLines:
        return CustomGraphicsLines()
    @property
    def coordinates(self) -> CustomGraphicsCoordinates:
        """
        Gets and sets the CustomGraphicsCoordinates object that defines the coordinates of the vertices of the lines.
        A CustomGraphicsCoordinates object can be created using the static create method of the CustomGraphicsCoordinates class.
        """
        return CustomGraphicsCoordinates()
    @coordinates.setter
    def coordinates(self, value: CustomGraphicsCoordinates):
        """
        Gets and sets the CustomGraphicsCoordinates object that defines the coordinates of the vertices of the lines.
        A CustomGraphicsCoordinates object can be created using the static create method of the CustomGraphicsCoordinates class.
        """
        pass
    @property
    def indexList(self) -> list[int]:
        """
        Gets and sets an array of integers that represent indices into the coordinates to define the order the coordinates are used to draw the lines.
        An empty array indicates that no index list is used and coordinates are used in the order they're provided in the provided CustomGraphicsCoordinates object.
        """
        return [int()]
    @indexList.setter
    def indexList(self, value: list[int]):
        """
        Gets and sets an array of integers that represent indices into the coordinates to define the order the coordinates are used to draw the lines.
        An empty array indicates that no index list is used and coordinates are used in the order they're provided in the provided CustomGraphicsCoordinates object.
        """
        pass
    @property
    def isLineStrip(self) -> bool:
        """
        Defines if the coordinates are used to define a series of individual lines or a connected set of lines (line strip). If individual lines
        are drawn (this property is false), each pair of coordinates define a single line. If a line strip is drawn (this property is true),
        the first pair of coordinates define the first line and the third coordinate defines a line that connects to the second coordinate.
        The fourth coordinate creates a line connecting to the third coordinate, and so on.
        """
        return bool()
    @isLineStrip.setter
    def isLineStrip(self, value: bool):
        """
        Defines if the coordinates are used to define a series of individual lines or a connected set of lines (line strip). If individual lines
        are drawn (this property is false), each pair of coordinates define a single line. If a line strip is drawn (this property is true),
        the first pair of coordinates define the first line and the third coordinate defines a line that connects to the second coordinate.
        The fourth coordinate creates a line connecting to the third coordinate, and so on.
        """
        pass
    @property
    def lineStripLengths(self) -> list[int]:
        """
        If isLineStrip is true, this property defines the number of coordinates to use in the line strips. It is an array of integers
        that defines the number of coordinates for each line strip. An empty array indicates that a single line strip is to be drawn.
        """
        return [int()]
    @lineStripLengths.setter
    def lineStripLengths(self, value: list[int]):
        """
        If isLineStrip is true, this property defines the number of coordinates to use in the line strips. It is an array of integers
        that defines the number of coordinates for each line strip. An empty array indicates that a single line strip is to be drawn.
        """
        pass
    @property
    def weight(self) -> float:
        """
        Defines the thickness of the line in pixels.
        """
        return float()
    @weight.setter
    def weight(self, value: float):
        """
        Defines the thickness of the line in pixels.
        """
        pass
    @property
    def lineStyleScale(self) -> float:
        """
        Defines the scale as it relates to how the line style is applied. The effect is to
        shrink or expand the line style as it is applied to the line. This does not affect the line width.
        """
        return float()
    @lineStyleScale.setter
    def lineStyleScale(self, value: float):
        """
        Defines the scale as it relates to how the line style is applied. The effect is to
        shrink or expand the line style as it is applied to the line. This does not affect the line width.
        """
        pass
    @property
    def isScreenSpaceLineStyle(self) -> bool:
        """
        Specifies if the line style is computed based on the screen or model space. The default is
        based on the screen which means the style is drawn the same regardless of how you zoom in
        or out of the view. That is the length of lines and spaces are based on pixels. If it
        is drawn relative to model space then the lines and spaces are defined in centimeters and
        will zooming in and out will change the apparent spacing.
        """
        return bool()
    @isScreenSpaceLineStyle.setter
    def isScreenSpaceLineStyle(self, value: bool):
        """
        Specifies if the line style is computed based on the screen or model space. The default is
        based on the screen which means the style is drawn the same regardless of how you zoom in
        or out of the view. That is the length of lines and spaces are based on pixels. If it
        is drawn relative to model space then the lines and spaces are defined in centimeters and
        will zooming in and out will change the apparent spacing.
        """
        pass
    @property
    def lineStylePattern(self) -> LineStylePatterns:
        """
        The line style to apply to the line. The default is to draw a continuous line.
        """
        return LineStylePatterns()
    @lineStylePattern.setter
    def lineStylePattern(self, value: LineStylePatterns):
        """
        The line style to apply to the line. The default is to draw a continuous line.
        """
        pass

class CustomGraphicsMesh(CustomGraphicsEntity):
    """
    Represents a custom triangle mesh drawn in the graphics window.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomGraphicsMesh:
        return CustomGraphicsMesh()
    @property
    def coordinates(self) -> CustomGraphicsCoordinates:
        """
        Gets and sets the coordinates associated with this CustomGraphicsMesh.
        """
        return CustomGraphicsCoordinates()
    @coordinates.setter
    def coordinates(self, value: CustomGraphicsCoordinates):
        """
        Gets and sets the coordinates associated with this CustomGraphicsMesh.
        """
        pass
    @property
    def normalVectors(self) -> list[float]:
        """
        Gets and sets the normal vectors of the mesh where there is a normal
        vector at each node. The normals are defined as an array
        of floats where they are the x, y, z components of each vector.
        """
        return [float()]
    @normalVectors.setter
    def normalVectors(self, value: list[float]):
        """
        Gets and sets the normal vectors of the mesh where there is a normal
        vector at each node. The normals are defined as an array
        of floats where they are the x, y, z components of each vector.
        """
        pass
    @property
    def vertexIndexList(self) -> list[int]:
        """
        Gets and sets an array of indices that define which coordinate in the
        coordinate list is used for each vertex in the mesh. Each set of three
        indices defines a triangle. For example:
        Indices 0, 1, and 2 define the coordinates to use for the first triangle and
        indices 3, 4, and 5 define the coordinates for the second triangle, and so on.
        """
        return [int()]
    @vertexIndexList.setter
    def vertexIndexList(self, value: list[int]):
        """
        Gets and sets an array of indices that define which coordinate in the
        coordinate list is used for each vertex in the mesh. Each set of three
        indices defines a triangle. For example:
        Indices 0, 1, and 2 define the coordinates to use for the first triangle and
        indices 3, 4, and 5 define the coordinates for the second triangle, and so on.
        """
        pass
    @property
    def normalIndexList(self) -> list[int]:
        """
        Gets and sets an array of indices that define which normal is associated
        with each vertex in the mesh. This is used to look-up the normal in the
        normalVectors array.
        """
        return [int()]
    @normalIndexList.setter
    def normalIndexList(self, value: list[int]):
        """
        Gets and sets an array of indices that define which normal is associated
        with each vertex in the mesh. This is used to look-up the normal in the
        normalVectors array.
        """
        pass
    @property
    def textureCoordinates(self) -> list[float]:
        """
        Gets and sets the texture coordinates as an array of floats where
        they are the u,v components at each node. They are defined as an
        array of doubles where they are the u, v coordinates of each node.
        Defining texture coordinates for a mesh is optional.
        """
        return [float()]
    @textureCoordinates.setter
    def textureCoordinates(self, value: list[float]):
        """
        Gets and sets the texture coordinates as an array of floats where
        they are the u,v components at each node. They are defined as an
        array of doubles where they are the u, v coordinates of each node.
        Defining texture coordinates for a mesh is optional.
        """
        pass

class CustomGraphicsPointSet(CustomGraphicsEntity):
    """
    Represents a set of one or more custom graphics points all of the same style.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomGraphicsPointSet:
        return CustomGraphicsPointSet()
    @property
    def coordinates(self) -> CustomGraphicsCoordinates:
        """
        Gets and sets the coordinates used to define the position of the custom graphics points.
        If no indexList is specified, every coordinate will be drawn using a custom graphics point.
        """
        return CustomGraphicsCoordinates()
    @coordinates.setter
    def coordinates(self, value: CustomGraphicsCoordinates):
        """
        Gets and sets the coordinates used to define the position of the custom graphics points.
        If no indexList is specified, every coordinate will be drawn using a custom graphics point.
        """
        pass
    @property
    def indexList(self) -> list[int]:
        """
        A list of indices that specify which coordinates from the coordinate list to draw points for.
        If this is an empty array, then all of the coordinates are used.
        """
        return [int()]
    @indexList.setter
    def indexList(self, value: list[int]):
        """
        A list of indices that specify which coordinates from the coordinate list to draw points for.
        If this is an empty array, then all of the coordinates are used.
        """
        pass
    @property
    def pointImage(self) -> str:
        """
        Gets and sets the image that will be used to display the point if the point type
        is a custom image. The image will always be billboarded. The file should be
        a PNG image and can use transparency. The filename can be a full path or a
        relative path that is relative to your runtime file. Setting this will automatically
        set the pointType to UserDefinedCustomGraphicsPointType. This property can also
        return an empty string in the case where a user defined image point is not being used.
        """
        return str()
    @pointImage.setter
    def pointImage(self, value: str):
        """
        Gets and sets the image that will be used to display the point if the point type
        is a custom image. The image will always be billboarded. The file should be
        a PNG image and can use transparency. The filename can be a full path or a
        relative path that is relative to your runtime file. Setting this will automatically
        set the pointType to UserDefinedCustomGraphicsPointType. This property can also
        return an empty string in the case where a user defined image point is not being used.
        """
        pass
    @property
    def pointType(self) -> CustomGraphicsPointTypes:
        """
        Specifies which of the predefined point images to use. Attempting to set this property
        to UserDefinedCustomGraphicsPointType will fail. To change to a user defined point type
        you must set use the pointImage property to specify the image to use and this will have
        the side-effect of changing the value of this property to UserDefinedCustomGraphicsPointType.
        """
        return CustomGraphicsPointTypes()
    @pointType.setter
    def pointType(self, value: CustomGraphicsPointTypes):
        """
        Specifies which of the predefined point images to use. Attempting to set this property
        to UserDefinedCustomGraphicsPointType will fail. To change to a user defined point type
        you must set use the pointImage property to specify the image to use and this will have
        the side-effect of changing the value of this property to UserDefinedCustomGraphicsPointType.
        """
        pass

class CustomGraphicsShowThroughColorEffect(CustomGraphicsColorEffect):
    """
    One of the types of color effects that can be applied to a custom graphics entity. With this
    type of effect, the graphics entity will display using the specified color and will show through
    other graphics that are in front of it.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomGraphicsShowThroughColorEffect:
        return CustomGraphicsShowThroughColorEffect()
    @staticmethod
    def create(color: core.Color, opacity: float) -> CustomGraphicsShowThroughColorEffect:
        """
        Creates a new CustomGraphicsShowThroughColorEffect object that can be assigned to a custom graphics entity
        using its showThrough property.
        color : The color that will be used to render the custom graphics object.
        opacity : The level of opacity that will be applied when rendering the custom graphics object. A value of 0 is fully translucent
        and will have the effect of the object being completely covered by objects in front of it. A value of 1 is fully opaque
        which will have the effect of the object completely covering all objects. Values in between will make objects in front of
        the graphics object appear translucent to varying degrees so you can see the custom graphics object through it.
        Returns the newly created CustomGraphicsShowThroughColorEffect object or null in the case of failure. This can be assigned
        to a custom graphics entity using its showThrough property.
        """
        return CustomGraphicsShowThroughColorEffect()
    @property
    def color(self) -> core.Color:
        """
        Gets and sets the color associated with this CustomGraphicsShowThroughColorEffect object. The color that will be used to render
        the portion of the entity that is covered by other objects in the scene.
        """
        return core.Color()
    @color.setter
    def color(self, value: core.Color):
        """
        Gets and sets the color associated with this CustomGraphicsShowThroughColorEffect object. The color that will be used to render
        the portion of the entity that is covered by other objects in the scene.
        """
        pass
    @property
    def opacity(self) -> float:
        """
        Gets and sets the opacity value associated with this CustomGraphicsShowThroughColorEffect object. The opacity is used when rendering
        the portion of the entity that is covered by other objects in the scene. This can be a value between 0 and 1, where 1 is
        fully opaque and will completely cover any other entities.
        """
        return float()
    @opacity.setter
    def opacity(self, value: float):
        """
        Gets and sets the opacity value associated with this CustomGraphicsShowThroughColorEffect object. The opacity is used when rendering
        the portion of the entity that is covered by other objects in the scene. This can be a value between 0 and 1, where 1 is
        fully opaque and will completely cover any other entities.
        """
        pass

class CustomGraphicsSolidColorEffect(CustomGraphicsColorEffect):
    """
    One of the types of color effects that can be applied to a custom graphics entity. With this
    type of effect, the graphics entity will display as the single color without any lighting
    effects. For example, a sphere will display as a solid filled circle without any shading
    indicating it is actually spherical.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomGraphicsSolidColorEffect:
        return CustomGraphicsSolidColorEffect()
    @staticmethod
    def create(color: core.Color) -> CustomGraphicsSolidColorEffect:
        """
        Statically creates a new CustomGraphicsSolidColorEffect object. This can be used as input
        when creating various color related custom graphics attributes. A solid color effect,
        colors the entity with a single color without any lighting effects. With this coloring
        effect, a sphere will display as a solid filled circle.
        color : The color to use for the solid color display. The opacity component of the color is ignored
        because the opacity of custom graphics is controlled separately using an opacity attribute.
        Returns the created CustomGraphicsSolidColorEffect or null in case of a failure.
        """
        return CustomGraphicsSolidColorEffect()
    @property
    def color(self) -> core.Color:
        """
        The color to use for the solid color display. The opacity component of the color is ignored
        because the opacity of custom graphics is controlled separately using an opacity attribute.
        """
        return core.Color()
    @color.setter
    def color(self, value: core.Color):
        """
        The color to use for the solid color display. The opacity component of the color is ignored
        because the opacity of custom graphics is controlled separately using an opacity attribute.
        """
        pass

class CustomGraphicsText(CustomGraphicsEntity):
    """
    Represents text drawn in the graphics window. The default position of the text is at (0,0,0) and
    orientation is the text lying on the x-y plane. To reposition and reorient the text you can use
    the transformation property.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomGraphicsText:
        return CustomGraphicsText()
    @property
    def formattedText(self) -> str:
        """
        Gets and sets the formatted text definition. This is the full string, including the
        formatting information, that's used to define the displayed text.
        """
        return str()
    @formattedText.setter
    def formattedText(self, value: str):
        """
        Gets and sets the formatted text definition. This is the full string, including the
        formatting information, that's used to define the displayed text.
        """
        pass
    @property
    def font(self) -> str:
        """
        Gets and sets the font used to display the text. This is the default font and applies to
        all of text unless there is a font override defined within the text.
        """
        return str()
    @font.setter
    def font(self, value: str):
        """
        Gets and sets the font used to display the text. This is the default font and applies to
        all of text unless there is a font override defined within the text.
        """
        pass
    @property
    def isItalic(self) -> bool:
        """
        Specifies that the text displays using an italic style. This is the default italic style and applies to
        all of text unless there is a style override defined within the text.
        """
        return bool()
    @isItalic.setter
    def isItalic(self, value: bool):
        """
        Specifies that the text displays using an italic style. This is the default italic style and applies to
        all of text unless there is a style override defined within the text.
        """
        pass
    @property
    def isBold(self) -> bool:
        """
        Specifies that the text displays using a bold style. This is the default bold style and applies to
        all of text unless there is a style override defined within the text.
        """
        return bool()
    @isBold.setter
    def isBold(self, value: bool):
        """
        Specifies that the text displays using a bold style. This is the default bold style and applies to
        all of text unless there is a style override defined within the text.
        """
        pass
    @property
    def isUnderline(self) -> bool:
        """
        Specifies that the text displays using an underline style. This is the default underline style and applies to
        all of text unless there is a style override defined within the text.
        """
        return bool()
    @isUnderline.setter
    def isUnderline(self, value: bool):
        """
        Specifies that the text displays using an underline style. This is the default underline style and applies to
        all of text unless there is a style override defined within the text.
        """
        pass
    @property
    def isStrikeThrough(self) -> bool:
        """
        Specifies that the text displays using a strike through style. This is the default strike through style and applies to
        all of text unless there is a style override defined within the text.
        """
        return bool()
    @isStrikeThrough.setter
    def isStrikeThrough(self, value: bool):
        """
        Specifies that the text displays using a strike through style. This is the default strike through style and applies to
        all of text unless there is a style override defined within the text.
        """
        pass
    @property
    def size(self) -> float:
        """
        Gets and sets the size of the text in centimeters. This is the default size and applies to
        all of text unless there is a size override defined within the text.
        """
        return float()
    @size.setter
    def size(self, value: float):
        """
        Gets and sets the size of the text in centimeters. This is the default size and applies to
        all of text unless there is a size override defined within the text.
        """
        pass
    @property
    def width(self) -> float:
        """
        The actual width of the text in centimeters. This is useful when you want to position several
        GraphicsText objects together.
        """
        return float()
    @property
    def height(self) -> float:
        """
        The actual height of the text in centimeters. This is useful when you want to position several
        GraphicsText objects together.
        """
        return float()

class CustomGraphicsVertexColorEffect(CustomGraphicsColorEffect):
    """
    One of the types of color effects that can be applied to a custom graphics entity. With this
    type of effect, the graphics entity will display using the colors associated with the vertices
    of the mesh in the CustomGraphicsCoordinates object.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomGraphicsVertexColorEffect:
        return CustomGraphicsVertexColorEffect()
    @staticmethod
    def create() -> CustomGraphicsVertexColorEffect:
        """
        Statically creates a new CustomGraphicsVertexColorEffect object.
        Returns the created CustomGraphicsVertexColorEffect or null in case of a failure.
        """
        return CustomGraphicsVertexColorEffect()

class CutPasteBody(Feature):
    """
    Object that represents an existing Cut/Paste Body feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CutPasteBody:
        return CutPasteBody()
    @property
    def sourceBody(self) -> core.ObjectCollection:
        """
        Returns the bodies that were cut to create the result bodies of this feature. An ObjectCollection
        is returned that will contain the original bodies. It's possible that the collection can be empty
        or contain less than the number of bodies originally copied. This happens in the case where a body
        has been deleted or consumed by some other operation.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()

class CylinderFeature(Feature):
    """
    Object that represents an existing cylinder feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CylinderFeature:
        return CylinderFeature()

class CylindricalJointMotion(JointMotion):
    """
    Represents the set of information specific to a cylindrical joint.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CylindricalJointMotion:
        return CylindricalJointMotion()
    @property
    def rotationAxis(self) -> JointDirections:
        """
        Gets and sets the direction of the axis of rotation. This can be set to
        XAxisJointDirection, YAxisJointDirection, or ZAxisJointDirection. It can
        return those three directions and CustomJointDirection. If this returns
        CustomJointDirection then the customRotationAxisEntity will return an entity
        that defines the axis. If there is a custom rotation axis defined and this
        property is set to one of the three standard axes, the custom rotation will
        be removed and customRotationAxisEntity will return null.
        """
        return JointDirections()
    @rotationAxis.setter
    def rotationAxis(self, value: JointDirections):
        """
        Gets and sets the direction of the axis of rotation. This can be set to
        XAxisJointDirection, YAxisJointDirection, or ZAxisJointDirection. It can
        return those three directions and CustomJointDirection. If this returns
        CustomJointDirection then the customRotationAxisEntity will return an entity
        that defines the axis. If there is a custom rotation axis defined and this
        property is set to one of the three standard axes, the custom rotation will
        be removed and customRotationAxisEntity will return null.
        """
        pass
    @property
    def rotationAxisVector(self) -> core.Vector3D:
        """
        Returns the direction of the rotation axis. This property will return null in the case
        where the CylindricalJointMotion object was obtained from a JointInput object.
        """
        return core.Vector3D()
    @property
    def customRotationAxisEntity(self) -> core.Base:
        """
        This property can be set using various types of entities that can infer an
        axis. For example, a linear edge, sketch line, planar face, and cylindrical face.
        This property is only valid in the case where the rotationAxis property returns
        CustomJointDirection. Setting this property will automatically set
        the rotationAxis property to CustomJointDirection.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        """
        return core.Base()
    @customRotationAxisEntity.setter
    def customRotationAxisEntity(self, value: core.Base):
        """
        This property can be set using various types of entities that can infer an
        axis. For example, a linear edge, sketch line, planar face, and cylindrical face.
        This property is only valid in the case where the rotationAxis property returns
        CustomJointDirection. Setting this property will automatically set
        the rotationAxis property to CustomJointDirection.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        """
        pass
    @property
    def rotationValue(self) -> float:
        """
        Gets and sets the rotation value. This is in radians. Setting this value is
        the equivalent of using the Drive Joints command.
        """
        return float()
    @rotationValue.setter
    def rotationValue(self, value: float):
        """
        Gets and sets the rotation value. This is in radians. Setting this value is
        the equivalent of using the Drive Joints command.
        """
        pass
    @property
    def rotationLimits(self) -> JointLimits:
        """
        Returns a JointLimits object that defines the rotation limits for this joint.
        Use the functionality of the returned JointLimits object to get, set, and modify
        the joint limits.
        """
        return JointLimits()
    @property
    def slideValue(self) -> float:
        """
        Gets and sets the slide value. This is in centimeters. Setting this value is
        the equivalent of using the Drive Joints command.
        """
        return float()
    @slideValue.setter
    def slideValue(self, value: float):
        """
        Gets and sets the slide value. This is in centimeters. Setting this value is
        the equivalent of using the Drive Joints command.
        """
        pass
    @property
    def slideLimits(self) -> JointLimits:
        """
        Returns a JointLimits object that defines the slide limits for this joint.
        Use the functionality of the returned JointLimits object to get, set, and modify
        the joint limits.
        """
        return JointLimits()

class DeleteFaceFeature(Feature):
    """
    Object that represents an existing DeleteFaceFeature object in a design.
    
    The SurfaceDeleteFaceFeature and DeleteFaceFeature differ in that the SurfaceDeleteFaceFeature
    can delete any face without any restrictions. If the body is a solid, it will become a surface
    when the first face is deleted. The specified face is deleted without any other changes being
    made to the body. The DeleteFaceFeature deletes the specified face and also modifies the other faces
    in the body to heal or fill in the area of the deleted face. This means that a solid body will
    remain solid.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> DeleteFaceFeature:
        return DeleteFaceFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> DeleteFaceFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this is not the NativeObject.
        """
        return DeleteFaceFeature()
    @property
    def deletedFaces(self) -> list[BRepFace]:
        """
        Gets and sets the set of faces that are deleted by this feature.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        
        Setting this property can fail if Fusion is unable to heal the body after
        deleting the specified faces.
        """
        return [BRepFace()]
    @deletedFaces.setter
    def deletedFaces(self, value: list[BRepFace]):
        """
        Gets and sets the set of faces that are deleted by this feature.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        
        Setting this property can fail if Fusion is unable to heal the body after
        deleting the specified faces.
        """
        pass
    @property
    def nativeObject(self) -> DeleteFaceFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return DeleteFaceFeature()

class DerivedParameter(Parameter):
    """
    Represents a parameter that is derived from another design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> DerivedParameter:
        return DerivedParameter()
    @property
    def deriveFeature(self) -> DeriveFeature:
        """
        Returns the DeriveFeature that derives this parameter from another design.
        """
        return DeriveFeature()

class DeriveFeature(Feature):
    """
    Object that represents an existing derive feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> DeriveFeature:
        return DeriveFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> DeriveFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return DeriveFeature()
    def setSourceEntities(self, entities: list[core.Base], excludedEntities: list[core.Base]) -> bool:
        """
        Sets the array of entities that are derived.
        """
        return bool()
    def breakLink(self) -> bool:
        """
        Method that breaks the link between the source design and the destination design.
        The derived objects are converted to base features and added to the Timeline.
        Returns true if the break link was successful.
        """
        return bool()
    def getSourceEntity(self, derivedEntity: core.Base) -> core.Base:
        """
        Method that returns the source entity for a derived entity.
        derivedEntity : Input an entity (e.g. a BRepBody, MeshBody, Sketch, SketchEntity, ConstructionPlane, Occurrence, Canvas etc.)
        that was derived by this DeriveFeature.
        Returns the source entity for the derived entity or null if it failed.
        """
        return core.Base()
    def getDerivedEntity(self, sourceEntity: core.Base) -> core.Base:
        """
        Method that returns the derived entity for a source entity.
        sourceEntity : Input an entity (e.g. a BRepBody, MeshBody, Sketch, SketchEntity, ConstructionPlane, Occurrence, Canvas etc.)
        from the sourceDesign that is derived by this DeriveFeature.
        Returns the derived entity for the source entity or null if it failed.
        """
        return core.Base()
    @property
    def nativeObject(self) -> DeriveFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return DeriveFeature()
    @property
    def sourceDesign(self) -> Design:
        """
        The source Design of this derive feature. You can use the API to access various elements within the
        design to add them to the list of elements to be derived.
        """
        return Design()
    @property
    def sourceEntities(self) -> list[core.Base]:
        """
        The array of entities that are derived.
        """
        return [core.Base()]
    @property
    def excludedEntities(self) -> list[core.Base]:
        """
        The array of entities that are excluded from the derived set.
        """
        return [core.Base()]
    @property
    def isIncludeFavoriteParameters(self) -> bool:
        """
        Gets or sets whether favorite parameters in source design are derived or not.
        """
        return bool()
    @isIncludeFavoriteParameters.setter
    def isIncludeFavoriteParameters(self, value: bool):
        """
        Gets or sets whether favorite parameters in source design are derived or not.
        """
        pass
    @property
    def isIncludeComponentParameters(self) -> bool:
        """
        Gets or sets whether all feature parameters from all derived components
        from the source design are derived or not.
        """
        return bool()
    @isIncludeComponentParameters.setter
    def isIncludeComponentParameters(self, value: bool):
        """
        Gets or sets whether all feature parameters from all derived components
        from the source design are derived or not.
        """
        pass
    @property
    def isPlaceObjectsAtOrigin(self) -> bool:
        """
        Gets or sets whether to place all derived objects at the origin in
        the destination design or not.
        """
        return bool()
    @isPlaceObjectsAtOrigin.setter
    def isPlaceObjectsAtOrigin(self, value: bool):
        """
        Gets or sets whether to place all derived objects at the origin in
        the destination design or not.
        """
        pass
    @property
    def documentReference(self) -> core.DocumentReference:
        """
        Returns the DocumentReference for this derived design.
        Through the DocumentReference object you can modify the version and get other information associated with the reference.
        """
        return core.DocumentReference()

class Design(core.Product):
    """
    Object that represents an open Fusion design. This derives from the
    Product base class and adds the Fusion functionality specific to a Design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Design:
        return Design()
    def activateRootComponent(self) -> bool:
        """
        Makes the root component the active component in the user interface. This is the same
        as enabling the radio button next to the root component in the browser.
        Returns true if the activation was successful.
        """
        return bool()
    def createInterferenceInput(self, entities: core.ObjectCollection) -> InterferenceInput:
        """
        Creates an InterferenceInput object. This object collects the entities and options that are
        used when calculating interference. To analyze interference you first create an InterferenceInput
        supplying the entities and set any other settings and then provide this object as input to the
        analyzeInterference method.
        entities : An ObjectCollection containing the BRepBody and/or Occurrence entities that will be used in the
        interference calculation. All entities must be in the context of the root component of the top-level design.
        Returns an InterferenceInput object which you can use to set any other interference settings and then
        use as input to the analyzeInterference method to calculate the interference. Returns null if the
        creation failed.
        """
        return InterferenceInput()
    def analyzeInterference(self, input: InterferenceInput) -> InterferenceResults:
        """
        Calculates the interference between the input bodies and/or occurrences.
        input : An InterferenceInput that defines all of the necessary input needed to calculate the interference.
        An InterferenceInput object is created using the createInterferenceInput method.
        Returns an InterferenceResults object that can be used to examine the interference results.
        """
        return InterferenceResults()
    def areaProperties(self, inputs: core.ObjectCollection, accuracy: CalculationAccuracy = CalculationAccuracy.LowCalculationAccuracy) -> AreaProperties:
        """
        Returns the AreaProperties object that has properties for getting the area, perimeter, centroid, etc
        for a collection of 2D sketch profiles and/or planar surfaces that all lie on the same plane.
        inputs : A collection of one or more 2D sketch profile and/or planar surface input objects to perform the calculations on.
        Supported input object types are 2D closed sketch profiles and planar surfaces. Object must all lie on the same plane.
        Calculation results reflect the sums of the input objects (i.e. total area of multiple sketch profiles)
        accuracy : Specifies the desired level of computational accuracy of the property calculations.
        The default value of 'LowCalculationAccuracy' returns results within a +/- 1% error margin.
        Returns an AreaProperties object that can be used to examine the area results.
        """
        return AreaProperties()
    def physicalProperties(self, inputs: core.ObjectCollection, accuracy: CalculationAccuracy = CalculationAccuracy.LowCalculationAccuracy) -> PhysicalProperties:
        """
        Returns the PhysicalProperties object that has properties for getting the area, density, mass, volume, moments, etc
        for a collection of 3D solid objects.
        inputs : A collection of one or more 3D solid input objects to perform the calculations on.
        Supported input object types are Components, Occurrences and BRepBodies.
        Calculation results reflect the sums of the input objects (i.e. total volume of multiple bodies)
        accuracy : Specifies the desired level of computational accuracy of the property calculations.
        The default value of 'LowCalculationAccuracy' returns results within a +/- 1% error margin.
        """
        return PhysicalProperties()
    def findEntityByToken(self, entityToken: str) -> list[core.Base]:
        """
        Returns the entities associated with the provided token. The return is an
        array of entities. In most cases an array containing a single entity will be returned but
        there are cases where more than one entity can be returned. An example of this
        is where a token is obtained from a face and subsequent modeling operations cause
        the face to be split into two or more pieces. All of the faces that represent
        the original face will be returned with the first face being the most logical
        match to the original face.
        entityToken : The input entity token you want to find the matching entity for.
        Returns an array of entities associated with the provided token, or an empty array
        in the case where there are no matches.
        """
        return [core.Base()]
    def computeAll(self) -> bool:
        """
        Forces a recompute of the entire design. This is the equivalent of the "Compute All"
        command.
        Returns true if the compute completed. This doesn't indicate if all the items in the
        timeline successfully computed or not. You need to check the health state of each item
        in the timeline to determine if everything successfully computed or not.
        """
        return bool()
    def modifyParameters(self, parameters: list[Parameter], values: list[core.ValueInput]) -> bool:
        """
        Modifies the values of many parameters all at once. Changing them all at once is more efficient
        than modifying them one at a time.
        parameters : An array of UserParameter and ModelParameter objects that you want to change the value. The parameters
        must all exist within the Design object you're calling this method from. They can be in any component
        but must be local components owned by the Design.
        values : An array of ValueInput objects that defines the new value for each parameter defined by the "parameters" argument.
        This array must be the same size as the array used for the "parameters" argument, and the items in the arrays are
        used in the order they exist within the arrays. For example, the parameter at index 0 will use the value at index 0.
        
        If you use the createByString method to create the ValueInput, the expression of the parameter will be edited, and
        the effect is the same as interactively editing the expression. When you set the expression, you can include units,
        references to other parameters, and math operators and functions. For example, "(Length / 3) * cos(Angle)" is a valid
        expression for a distance parameter if the parameters "Length" and "Angle" already exist.
        
        If you use the createByReal method, the value is assigned directly and is always in the internal units for the unit
        type associated with the parameter. For example, if the parameter is a length, the value will ALWAYS be used as
        centimeters. If the parameter is an angle, the value will ALWAYS be used as radians. This is because the default design
        unit types for length are ignored, and internal units are ALWAYS used.
        Returns true if setting all of the parameters was successful. Setting multiple parameters is either all or none. If it
        fails to set any parameters, none of them are updated, and the method will return false.
        """
        return bool()
    def createConfiguredDesign(self) -> ConfigurationTopTable:
        """
        Converts this design into a configured design. The returned ConfigurationTable
        has a single row and no columns. You can use it to add columns and rows to define
        the configuration.
        Returns the ConfigurationTable that defines the configurations for this design.
        """
        return ConfigurationTopTable()
    def setGroundPlaneOffset(self, offset: float) -> bool:
        """
        Sets the offset of the ground plane. If the isAdpativeGroundPlane property is true,
        setting the offset will change isAdaptiveGroundPlane to false. The offset value is
        an offset relative to the current position of the ground plane.
        
        One example of how this method can be used is to set the isAdaptiveGroundPlane
        property to true, which will position the ground plane at the bottom of the part.
        By doing this, you know the current position of the ground plane. Then calling
        this method with a value of -2.0 will reposition the ground plane 2 cm below the part.
        If you called this method again with a value of -1.0 the ground plane will be moved
        an additional 1 cm away from the geometry, since this is defining an offset relative
        to the current position.
        offset : Defines the relative offset based on the current position of the ground plane. The
        offset is in centimeters, and a positive value will move it towards the design geometry
        and a negative value away from the geometry.
        Returns true if setting the offset was successful.
        """
        return bool()
    @property
    def designType(self) -> DesignTypes:
        """
        Gets and sets the current design type (DirectDesignType or ParametricDesignType)
        Changing an existing design from ParametricDesignType to DirectDesignType will result in the timeline and all design
        history being removed and further operations will not be captured in the timeline.
        """
        return DesignTypes()
    @designType.setter
    def designType(self, value: DesignTypes):
        """
        Gets and sets the current design type (DirectDesignType or ParametricDesignType)
        Changing an existing design from ParametricDesignType to DirectDesignType will result in the timeline and all design
        history being removed and further operations will not be captured in the timeline.
        """
        pass
    @property
    def rootComponent(self) -> Component:
        """
        Returns the root Component.
        """
        return Component()
    @property
    def allComponents(self) -> Components:
        """
        Returns the Components collection that provides access to existing components
        in a design.
        """
        return Components()
    @property
    def activeEditObject(self) -> core.Base:
        """
        Returns the current edit target as seen in the user interface. This edit target
        is defined as the container object that will be added to if something is created.
        For example, a component can be an edit target so that when new bodies are created they
        are added to that component. A sketch can also be an edit target.
        """
        return core.Base()
    @property
    def activeComponent(self) -> Component:
        """
        Returns the component that is currently being edited. This can return the root component
        or another component within the design.
        """
        return Component()
    @property
    def snapshots(self) -> Snapshots:
        """
        Returns the Snapshots object associated with this design which provides access to the
        existing snapshots and the creation of new snapshots.
        """
        return Snapshots()
    @property
    def timeline(self) -> Timeline:
        """
        Returns the timeline associated with this design.
        """
        return Timeline()
    @property
    def userParameters(self) -> UserParameters:
        """
        Returns the collection of User Parameters in a design.
        """
        return UserParameters()
    @property
    def allParameters(self) -> ParameterList:
        """
        Returns a read only list of all parameters in the design. This includes
        the user parameters and model parameters from all components in this design. The parameters from Externally Referenced components
        are NOT included because they are in actuality, separate designs.
        """
        return ParameterList()
    @property
    def fusionUnitsManager(self) -> FusionUnitsManager:
        """
        Returns a specialized UnitsManager that can set the default length units and work
        with parameters.
        """
        return FusionUnitsManager()
    @property
    def exportManager(self) -> ExportManager:
        """
        Returns the ExportManager for this design. You use the ExportManager
        to export the current design in various formats.
        """
        return ExportManager()
    @property
    def isRootComponentActive(self) -> bool:
        """
        Gets whether the root component is the active edit target in the user interface.
        This is the same as checking the state of the radio button next to the root component in the browser.
        To activate the root component use the ActivateRootComponent method.
        """
        return bool()
    @property
    def materials(self) -> core.Materials:
        """
        Returns the materials contained in this document.
        """
        return core.Materials()
    @property
    def appearances(self) -> core.Appearances:
        """
        Returns the appearances contained in this document.
        """
        return core.Appearances()
    @property
    def activeOccurrence(self) -> Occurrence:
        """
        Returns the occurrence that is currently activated, if any. This can return null in the case
        where no occurrence is activated and the root component is active.
        """
        return Occurrence()
    @property
    def contactSets(self) -> ContactSets:
        """
        Returns the contact sets associated with this design.
        """
        return ContactSets()
    @property
    def isContactAnalysisEnabled(self) -> bool:
        """
        Gets and sets whether contact analysis is enabled for all components. This
        is the equivalent of the "Disable Contact / Enable Contact" command. If this
        if True then any contact analysis defined (either all or contact sets) is enabled.
        if False, then no contact analysis is performed.
        """
        return bool()
    @isContactAnalysisEnabled.setter
    def isContactAnalysisEnabled(self, value: bool):
        """
        Gets and sets whether contact analysis is enabled for all components. This
        is the equivalent of the "Disable Contact / Enable Contact" command. If this
        if True then any contact analysis defined (either all or contact sets) is enabled.
        if False, then no contact analysis is performed.
        """
        pass
    @property
    def isContactSetAnalysis(self) -> bool:
        """
        Gets and sets whether contact analysis is done using contact sets
        or between all bodies, independent of any contact sets. If True and
        the isContactAnalysisEnabled property is True then contact analysis
        is performed using contact sets. If False and isContactAnalysisEnabled
        is True, then contact analysis is performed between all bodies. If
        isContactAnalysisEnabled is False then no contact analysis is performed.
        """
        return bool()
    @isContactSetAnalysis.setter
    def isContactSetAnalysis(self, value: bool):
        """
        Gets and sets whether contact analysis is done using contact sets
        or between all bodies, independent of any contact sets. If True and
        the isContactAnalysisEnabled property is True then contact analysis
        is performed using contact sets. If False and isContactAnalysisEnabled
        is True, then contact analysis is performed between all bodies. If
        isContactAnalysisEnabled is False then no contact analysis is performed.
        """
        pass
    @property
    def designSheetMetalRules(self) -> SheetMetalRules:
        """
        Gets the collection of sheet metal rules in the design.
        """
        return SheetMetalRules()
    @property
    def librarySheetMetalRules(self) -> SheetMetalRules:
        """
        Gets the collection of sheet metal rules in the sheet metal rule library.
        """
        return SheetMetalRules()
    @property
    def analyses(self) -> Analyses:
        """
        Gets the collection of design analyses associated with this design.
        """
        return Analyses()
    @property
    def renderManager(self) -> RenderManager:
        """
        Returns the RenderManager object associated with this design. Using the RenderManager you can access the
        same functionality that is available in the Render workspace.
        """
        return RenderManager()
    @property
    def isConfiguredDesign(self) -> bool:
        """
        Gets if this design is a configured design. A configured design contains a
        configuration table. Use the configurationTable property to get the associated table.
        """
        return bool()
    @property
    def configurationTopTable(self) -> ConfigurationTopTable:
        """
        If this design is a configured design or a configuration, this property returns the associated
        ConfigurationTopTable object. If this is not a configured design or configuration, this property
        returns null.
        """
        return ConfigurationTopTable()
    @property
    def isConfiguration(self) -> bool:
        """
        Gets if this design is a configuration. If this returns true,
        the configurationRowId can be used to get the row used to define this configuration.
        Also, when this is true, the design is essentially read-only and edits are either
        blocked from taking place or cannot be saved.
        """
        return bool()
    @property
    def configurationRowId(self) -> str:
        """
        Returns the ID of the row that defines this configuration. Use the
        isConfiguration property to determine if this Design is a configuration
        or not. If this is not a configuration, this property returns an
        empty string.
        """
        return str()
    @property
    def designPlasticRules(self) -> PlasticRules:
        """
        Gets the collection of plastic rules in the design.
        """
        return PlasticRules()
    @property
    def libraryPlasticRules(self) -> PlasticRules:
        """
        Gets the collection of plastic rules in the plastic rule library.
        """
        return PlasticRules()
    @property
    def rootDataComponent(self) -> core.DataComponent:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Get the root DataComponent in this design. This is only available for top level designs.
        """
        return core.DataComponent()
    @property
    def objectVisibility(self) -> ObjectVisibility:
        """
        Returns the ObjectVisibility object associated with this design which controls
        which objects are displayed in the graphics window. This is the equivalent of
        the "Object Visibility" settings in the Display Settings drop-down in the navigation
        toolbar at the bottom of the Fusion graphics window.
        """
        return ObjectVisibility()
    @property
    def isAdaptiveGroundPlane(self) -> bool:
        """
        Gets and sets if the position of the ground plane for this design is adaptive.
        If true, the ground plane will automatically move to be just below the model.
        The orientation of the ground plane is always normal to the "up" direction
        as defined by the view cube.
        """
        return bool()
    @isAdaptiveGroundPlane.setter
    def isAdaptiveGroundPlane(self, value: bool):
        """
        Gets and sets if the position of the ground plane for this design is adaptive.
        If true, the ground plane will automatically move to be just below the model.
        The orientation of the ground plane is always normal to the "up" direction
        as defined by the view cube.
        """
        pass
    @property
    def derivedParameters(self) -> list[DerivedParameter]:
        """
        Returns a read only list of all parameters that are derived into the design. This includes
        the user parameters and model parameters from all derives in this design.
        """
        return [DerivedParameter()]
    @property
    def isModelingInAssemblyEnabled(self) -> bool:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        If this design is an assembly, this property gets and sets if the modeling functionality
        is enabled. If this design is a part or hybrid design, the value of this property should be ignored.
        """
        return bool()
    @isModelingInAssemblyEnabled.setter
    def isModelingInAssemblyEnabled(self, value: bool):
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        If this design is an assembly, this property gets and sets if the modeling functionality
        is enabled. If this design is a part or hybrid design, the value of this property should be ignored.
        """
        pass
    @property
    def designIntent(self) -> DesignIntentTypes:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        <p>Gets and sets the use intent of this design. Changing the design intent from one
        type to another is not supported in all cases. Below is a list of cases where it
        is expected to fail:
        <ul><li>Assembly to Part where the assembly design has child components.</li>
        <li>Hybrid to Part where the hybrid design has child components</li>
        </ol></p>
        <p>The following are cases that are supported:
        <ul><li>Assembly to Part where the assembly does not contain any child components.</li>
        <ul>Part to Assembly when the part does not contain any bodies.</li>
        <ul>Part to Assembly(with bodies) - should succeed but will have modeling enabled (Hybrid)</li>
        <ul>Part to Hybrid</li>
        <ul>Hybrid to Assembly</li>
        <ul>Hybrid-to Part when the hybrid design contains no child components.</li>
        </p>
        <p>Setting the type will do nothing and is a no-op.</p>
        """
        return DesignIntentTypes()
    @designIntent.setter
    def designIntent(self, value: DesignIntentTypes):
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        <p>Gets and sets the use intent of this design. Changing the design intent from one
        type to another is not supported in all cases. Below is a list of cases where it
        is expected to fail:
        <ul><li>Assembly to Part where the assembly design has child components.</li>
        <li>Hybrid to Part where the hybrid design has child components</li>
        </ol></p>
        <p>The following are cases that are supported:
        <ul><li>Assembly to Part where the assembly does not contain any child components.</li>
        <ul>Part to Assembly when the part does not contain any bodies.</li>
        <ul>Part to Assembly(with bodies) - should succeed but will have modeling enabled (Hybrid)</li>
        <ul>Part to Hybrid</li>
        <ul>Hybrid to Assembly</li>
        <ul>Hybrid-to Part when the hybrid design contains no child components.</li>
        </p>
        <p>Setting the type will do nothing and is a no-op.</p>
        """
        pass
    @property
    def pmiSettings(self) -> PMISettings:
        """
        !!!!! Warning !!!!!
        ! This is in preview state; please see the help for more info
        !!!!! Warning !!!!!
        
        Returns a manager for settings associated with Product Manufacturing Information (PMI) in this design.
        Returns the PMISettings if they exist for the current document, or null. PMI settings only exist if the
        document contains Fusion-authored PMI.
        """
        return PMISettings()

class DistanceAndAngleChamferEdgeSet(ChamferEdgeSet):
    """
    Provides access to the edges and the parameter associated with a chord length fillet.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> DistanceAndAngleChamferEdgeSet:
        return DistanceAndAngleChamferEdgeSet()
    @property
    def edges(self) -> core.ObjectCollection:
        """
        Gets and sets the edges that will be chamfered. This collection can contain BRepEdge, BRepFace,
        and Feature objects. If BRepFace or Feature are objects are provided, all of the edges associated
        with those objects will be chamfered.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()
    @edges.setter
    def edges(self, value: core.ObjectCollection):
        """
        Gets and sets the edges that will be chamfered. This collection can contain BRepEdge, BRepFace,
        and Feature objects. If BRepFace or Feature are objects are provided, all of the edges associated
        with those objects will be chamfered.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def distance(self) -> ModelParameter:
        """
        Returns the model parameter that controls the offset distance of the chamfer.
        You can edit the distance by using the properties on the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def angle(self) -> ModelParameter:
        """
        Returns the model parameter that controls the angle of the chamfer.
        You can edit the distance by using the properties on the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def isFlipped(self) -> bool:
        """
        Gets and sets if the chamfer is flipped. This swaps the directions for distance one and two.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isFlipped.setter
    def isFlipped(self, value: bool):
        """
        Gets and sets if the chamfer is flipped. This swaps the directions for distance one and two.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass

class DistanceExtentDefinition(ExtentDefinition):
    """
    Defines the inputs for a distance ExtentDefinition object.
    This feature extent type defines the distance as well as whether the extent is symmetric
    or in only one direction. If the extent is not symmetric, a positive or negative distance
    can be used to control the direction.
    For a hole, the IsSymmetric property value will always be false.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> DistanceExtentDefinition:
        return DistanceExtentDefinition()
    @staticmethod
    def create(distance: core.ValueInput) -> DistanceExtentDefinition:
        """
        Statically creates a new DistanceExtentDefinition object. This is used as input when
        defining the extents of a feature to be a specified distance.
        distance : A ValueInput that defines the distance of the extrusion.
        Returns the newly created DistanceExtentDefinition or null in the case of failure.
        """
        return DistanceExtentDefinition()
    @property
    def distance(self) -> ModelParameter:
        """
        Returns the parameter controlling the distance. You can edit the distance
        by editing the value of the parameter object.
        """
        return ModelParameter()

class DoubleHemFeatureDefinition(HemFeatureDefinition):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The definition for a double hem.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> DoubleHemFeatureDefinition:
        return DoubleHemFeatureDefinition()
    @property
    def gap(self) -> ModelParameter:
        """
        Gets the gap for a double hem.
        """
        return ModelParameter()
    @property
    def length(self) -> ModelParameter:
        """
        Gets the length for a double hem.
        """
        return ModelParameter()
    @property
    def setback(self) -> ModelParameter:
        """
        Gets the setback for a double hem.
        """
        return ModelParameter()

class DraftAnalysis(Analysis):
    """
    Represents any existing Draft Analysis that exist in the design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> DraftAnalysis:
        return DraftAnalysis()

class DraftFeature(Feature):
    """
    Object that represents an existing draft feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> DraftFeature:
        return DraftFeature()
    def setSingleAngle(self, isSymmetric: bool, angle: core.ValueInput) -> bool:
        """
        Changes the definition of the feature so that a single angle is used for all drafts.
        If the isSymmetric is true then the faces are split along the parting plane and drafted
        independently using the same angle.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        isSymmetric : Set to true if the faces are to be split along the plane or parting line and drafted symmetrically. This
        will have the side effect of setting the isSymmetric property to the same value.
        angle : The ValueInput object that defines the angle of the draft. This can be a positive or negative
        value which will affect the direction of the draft along with the isDirectionFlipped property.
        Returns true if successful
        """
        return bool()
    def setTwoAngles(self, angleOne: core.ValueInput, angleTwo: core.ValueInput) -> bool:
        """
        Changes the definition of the feature so that the surfaces are split along the draft plane or
        parting line and the faces on each side of the plane are drafted independently.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        angleOne : The ValueInput object that defines the angle for the faces on the first side of the draft plane
        or parting line.
        angleTwo : The ValueInput object that defines the angle for the faces on the second side of the draft plane
        or parting line.
        Returns true if successful
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> DraftFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return DraftFeature()
    @property
    def inputFaces(self) -> list[BRepFace]:
        """
        Gets and sets the input faces.
        If isTangentChain is true, all the faces that are tangentially connected to the input faces (if any) will also be included.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return [BRepFace()]
    @inputFaces.setter
    def inputFaces(self, value: list[BRepFace]):
        """
        Gets and sets the input faces.
        If isTangentChain is true, all the faces that are tangentially connected to the input faces (if any) will also be included.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def plane(self) -> core.Base:
        """
        Gets and sets the plane that defines the direction in which the draft is applied. This is also referred to
        as the pull direction. This can be defined using either a planar BrepFace, or a ConstructionPlane.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @plane.setter
    def plane(self, value: core.Base):
        """
        Gets and sets the plane that defines the direction in which the draft is applied. This is also referred to
        as the pull direction. This can be defined using either a planar BrepFace, or a ConstructionPlane.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def isTangentChain(self) -> bool:
        """
        Gets and sets if any faces that are tangentially connected to any of the input faces will also be drafted.
        It defaults to true.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isTangentChain.setter
    def isTangentChain(self, value: bool):
        """
        Gets and sets if any faces that are tangentially connected to any of the input faces will also be drafted.
        It defaults to true.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def isDirectionFlipped(self) -> bool:
        """
        Gets and sets if the direction of the draft is flipped.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isDirectionFlipped.setter
    def isDirectionFlipped(self, value: bool):
        """
        Gets and sets if the direction of the draft is flipped.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def draftDefinition(self) -> ExtentDefinition:
        """
        Gets the definition object that specifies how the draft is defined. Modifying the
        definition object will cause the draft to recompute. This can return either an
        AngleExtentDefinition or TwoSidesAngleExtentDefinition object. This property
        returns nothing in the case where the feature is non-parametric. Use this property
        to access the parameters controlling the draft and whether the draft is symmetric or not.
        """
        return ExtentDefinition()
    @property
    def nativeObject(self) -> DraftFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return DraftFeature()

class DXFFlatPatternExportOptions(ExportOptions):
    """
    Defines that a DXF export of a flat pattern is to be done and specifies the various options.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> DXFFlatPatternExportOptions:
        return DXFFlatPatternExportOptions()
    @property
    def isSplineConvertedToPolyline(self) -> bool:
        """
        Specifies if splines are converted to polylines. If true, the convertToPolylineTolerance
        value is used to specify the accuracy of the conversion. Defaults to false.
        """
        return bool()
    @isSplineConvertedToPolyline.setter
    def isSplineConvertedToPolyline(self, value: bool):
        """
        Specifies if splines are converted to polylines. If true, the convertToPolylineTolerance
        value is used to specify the accuracy of the conversion. Defaults to false.
        """
        pass
    @property
    def convertToPolylineTolerance(self) -> float:
        """
        Specifies the tolerance when converting a spline to polylines. This value is only used when
        the isSplineConvertedToPolyline property is true and otherwise it is ignored. The units for
        this value are centimeters. Defaults to 0.01 cm.
        """
        return float()
    @convertToPolylineTolerance.setter
    def convertToPolylineTolerance(self, value: float):
        """
        Specifies the tolerance when converting a spline to polylines. This value is only used when
        the isSplineConvertedToPolyline property is true and otherwise it is ignored. The units for
        this value are centimeters. Defaults to 0.01 cm.
        """
        pass
    @property
    def units(self) -> DistanceUnits:
        """
        Gets and sets the units that will be used for the DXF file. This defaults to be
        the same as the default units of the design.
        """
        return DistanceUnits()
    @units.setter
    def units(self, value: DistanceUnits):
        """
        Gets and sets the units that will be used for the DXF file. This defaults to be
        the same as the default units of the design.
        """
        pass
    @property
    def isCenterLinesExported(self) -> bool:
        """
        Specifies if the center lines (bend line) of the flat pattern are exported in the DXF.
        Defaults to true.
        """
        return bool()
    @isCenterLinesExported.setter
    def isCenterLinesExported(self, value: bool):
        """
        Specifies if the center lines (bend line) of the flat pattern are exported in the DXF.
        Defaults to true.
        """
        pass
    @property
    def isExtentLinesExported(self) -> bool:
        """
        Specifies if the bend extent lines of the flat pattern are exported in the DXF.
        Defaults to true.
        """
        return bool()
    @isExtentLinesExported.setter
    def isExtentLinesExported(self, value: bool):
        """
        Specifies if the bend extent lines of the flat pattern are exported in the DXF.
        Defaults to true.
        """
        pass

class DXFSketchExportOptions(ExportOptions):
    """
    Defines the various settings associated with exporting a sketch in DXF format.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> DXFSketchExportOptions:
        return DXFSketchExportOptions()
    @property
    def units(self) -> DistanceUnits:
        """
        Gets and sets the units that will be used for the DXF file. This defaults to be
        the same as the default units of the design.
        """
        return DistanceUnits()
    @units.setter
    def units(self, value: DistanceUnits):
        """
        Gets and sets the units that will be used for the DXF file. This defaults to be
        the same as the default units of the design.
        """
        pass
    @property
    def isConstructionExported(self) -> bool:
        """
        Indicates if construction geometry should be exported. Defaults to true,
        which will export all construction geometry. If false it will be ignored
        and not included in the DXF file.
        """
        return bool()
    @isConstructionExported.setter
    def isConstructionExported(self, value: bool):
        """
        Indicates if construction geometry should be exported. Defaults to true,
        which will export all construction geometry. If false it will be ignored
        and not included in the DXF file.
        """
        pass
    @property
    def isPointsExported(self) -> bool:
        """
        Indicates if the sketch points should be exported. Defaults to true,
        which will export all points. If false it will be ignored
        and not included in the DXF file.
        """
        return bool()
    @isPointsExported.setter
    def isPointsExported(self, value: bool):
        """
        Indicates if the sketch points should be exported. Defaults to true,
        which will export all points. If false it will be ignored
        and not included in the DXF file.
        """
        pass
    @property
    def isProjectedGeometryExported(self) -> bool:
        """
        Indicates if any projected geometry should be exported. Defaults to true,
        which will export all projected geometry. If false it will be ignored
        and not included in the DXF file.
        """
        return bool()
    @isProjectedGeometryExported.setter
    def isProjectedGeometryExported(self, value: bool):
        """
        Indicates if any projected geometry should be exported. Defaults to true,
        which will export all projected geometry. If false it will be ignored
        and not included in the DXF file.
        """
        pass

class EmbossFeature(Feature):
    """
    Object that represents an existing emboss feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> EmbossFeature:
        return EmbossFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> EmbossFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this is not the NativeObject.
        """
        return EmbossFeature()
    @property
    def profiles(self) -> list[core.Base]:
        """
        Gets and sets the set Profile objects that define the shape of the emboss.
        The profile argument can be Profile and SketchText objects.
        When multiple objects are used, all profiles and sketch texts must be co-planar.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return [core.Base()]
    @profiles.setter
    def profiles(self, value: list[core.Base]):
        """
        Gets and sets the set Profile objects that define the shape of the emboss.
        The profile argument can be Profile and SketchText objects.
        When multiple objects are used, all profiles and sketch texts must be co-planar.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def inputFaces(self) -> list[BRepFace]:
        """
        Gets and sets an array of BRepFace objects that define the faces the emboss will be performed on. The
        value of the isTangentChain property controls if faces that are tangent to any of the specified faces
        are also included.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return [BRepFace()]
    @inputFaces.setter
    def inputFaces(self, value: list[BRepFace]):
        """
        Gets and sets an array of BRepFace objects that define the faces the emboss will be performed on. The
        value of the isTangentChain property controls if faces that are tangent to any of the specified faces
        are also included.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def isTangentChain(self) -> bool:
        """
        Gets and sets whether any faces that are tangentially connected to any of the input faces will
        also be used.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isTangentChain.setter
    def isTangentChain(self, value: bool):
        """
        Gets and sets whether any faces that are tangentially connected to any of the input faces will
        also be used.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def depth(self) -> ModelParameter:
        """
        Returns the parameter that controls the depth of the emboss. A positive value results in the emboss
        protruding out of the body and the negative value results in the emboss going into the body. To
        edit the depth, use properties on the returned ModelParameter.
        """
        return ModelParameter()
    @property
    def horizontalDistance(self) -> ModelParameter:
        """
        Returns the parameter that controls the horizontal offset distance. To
        edit the offset, use properties on the returned ModelParameter.
        """
        return ModelParameter()
    @property
    def verticalDistance(self) -> ModelParameter:
        """
        Returns the parameter that controls the vertical offset distance. To
        edit the offset, use properties on the returned ModelParameter.
        """
        return ModelParameter()
    @property
    def rotationAngle(self) -> ModelParameter:
        """
        Returns the parameter that controls the rotation angle. To
        edit the angle, use properties on the returned ModelParameter.
        """
        return ModelParameter()
    @property
    def nativeObject(self) -> EmbossFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return EmbossFeature()

class EqualConstraint(GeometricConstraint):
    """
    An equal constraint in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> EqualConstraint:
        return EqualConstraint()
    def createForAssemblyContext(self, occurrence: Occurrence) -> EqualConstraint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return EqualConstraint()
    @property
    def curveOne(self) -> SketchCurve:
        """
        Returns the first curve.
        """
        return SketchCurve()
    @property
    def curveTwo(self) -> SketchCurve:
        """
        Returns the second curve.
        """
        return SketchCurve()
    @property
    def nativeObject(self) -> EqualConstraint:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return EqualConstraint()

class EqualDistanceChamferEdgeSet(ChamferEdgeSet):
    """
    Provides access to the edges and the parameter associated with a equal distance offset chamfer.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> EqualDistanceChamferEdgeSet:
        return EqualDistanceChamferEdgeSet()
    @property
    def edges(self) -> core.ObjectCollection:
        """
        Gets and sets the edges that will be chamfered. This collection can contain BRepEdge, BRepFace,
        and Feature objects. If BRepFace or Feature are objects are provided, all of the edges associated
        with those objects will be chamfered.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()
    @edges.setter
    def edges(self, value: core.ObjectCollection):
        """
        Gets and sets the edges that will be chamfered. This collection can contain BRepEdge, BRepFace,
        and Feature objects. If BRepFace or Feature are objects are provided, all of the edges associated
        with those objects will be chamfered.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def distance(self) -> ModelParameter:
        """
        Returns the model parameter that controls the offset distance of the chamfer. You can edit
        the distance by using the properties on the returned ModelParameter object.
        """
        return ModelParameter()

class ExtendFeature(Feature):
    """
    Object that represents an existing extend feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ExtendFeature:
        return ExtendFeature()
    def setInputEntities(self, edges: core.ObjectCollection, isChainingEnabled: bool = True) -> bool:
        """
        Sets the edges for the extend feature.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        edges : The surface edges to extend.
        Only the surface edges from an open body can be extended.
        The edges must all be from the same open body.
        isChainingEnabled : An optional boolean argument whose default is true. If this argument is set to true, all edges that are
        tangent or curvature continuous, and end point connected, will be found automatically and extended.
        Returns true if successful
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> ExtendFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this is not the NativeObject.
        """
        return ExtendFeature()
    @property
    def edges(self) -> core.ObjectCollection:
        """
        Gets the edges that were extended. In many cases the extend operation results in
        the edges being consumed so they're no longer available after the feature is created.
        in this case you need to reposition the timeline marker to just before this feature
        when the edges do exist.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()
    @property
    def distance(self) -> ModelParameter:
        """
        Returns the parameter controlling the extend distance. You can edit the distance
        by editing the value of the parameter object.
        """
        return ModelParameter()
    @property
    def extendType(self) -> SurfaceExtendTypes:
        """
        Gets and sets surface extend type to use.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return SurfaceExtendTypes()
    @extendType.setter
    def extendType(self, value: SurfaceExtendTypes):
        """
        Gets and sets surface extend type to use.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def isChainingEnabled(self) -> bool:
        """
        Gets if all edges that are tangent or curvature continuous, and end point connected, will be found
        automatically and extended.
        """
        return bool()
    @property
    def nativeObject(self) -> ExtendFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return ExtendFeature()
    @property
    def extendAlignment(self) -> SurfaceExtendAlignment:
        """
        Gets and sets surface extend alignment to use.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return SurfaceExtendAlignment()
    @extendAlignment.setter
    def extendAlignment(self, value: SurfaceExtendAlignment):
        """
        Gets and sets surface extend alignment to use.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass

class ExtrudeFeature(Feature):
    """
    Object that represents an existing extrude feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ExtrudeFeature:
        return ExtrudeFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> ExtrudeFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return ExtrudeFeature()
    def setOneSideExtent(self, extent: ExtentDefinition, direction: ExtentDirections, taperAngle: core.ValueInput = None) -> bool:
        """
        Redefines the extrusion to go in one direction from the profile. The extent of the extrusion is
        defined by the extent argument.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        extent : An ExtentDefinition object that defines how the extent of the extrusion is defined. This can be
        a specified distance (DistanceExtentDefinition), to an entity (ToEntityExtent), or through-all (AllExtentDefinition).
        These objects can be obtained by using the static create method on the appropriate class.
        direction : Specifies the direction of the extrusion. PositiveExtentDirection and NegativeExtentDirection
        are valid values. PositiveExtentDirection is in the same direction as the normal of the profile's
        parent sketch plane.
        taperAngle : Optional argument that specifies the taper angle. If omitted a taper angle of 0 is used.
        Returns true is setting the input to a one sided extent was successful.
        """
        return bool()
    def setTwoSidesExtent(self, sideOneExtent: ExtentDefinition, sideTwoExtent: ExtentDefinition, sideOneTaperAngle: core.ValueInput = None, sideTwoTaperAngle: core.ValueInput = None) -> bool:
        """
        Redefines the extrusion to go in both directions from the profile. The extent is defined independently
        for each direction using the input arguments.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        sideOneExtent : An ExtentDefinition object that defines how the extent of the extrusion towards side one is defined. This can be
        a specified distance (DistanceExtentDefinition), to an entity (ToEntityExtent), or through-all (AllExtentDefinition).
        These objects can be obtained by using the static create method on the appropriate class.
        sideTwoExtent : An ExtentDefinition object that defines how the extent of the extrusion towards side two is defined. This can be
        a specified distance (DistanceExtentDefinition), to an entity (ToEntityExtent), or through-all (AllExtentDefinition).
        These objects can be obtained by using the static create method on the appropriate class.
        sideOneTaperAngle : Optional argument that specifies the taper angle for side one. If omitted a taper angle of 0 is used.
        sideTwoTaperAngle : Optional argument that specifies the taper angle for side two. If omitted a taper angle of 0 is used.
        Returns true, if the call was successful.
        """
        return bool()
    def setSymmetricExtent(self, distance: core.ValueInput, isFullLength: bool, taperAngle: core.ValueInput = None) -> bool:
        """
        Redefines the extrusion to go symmetrically in both directions from the profile.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        distance : The distance of the extrusions. This is either the full length of half of the length of the final extrusion
        depending on the value of the isFullLength property.
        isFullLength : Defines if the value defines the full length of the extrusion or half of the length. A value of true indicates
        it defines the full length.
        taperAngle : Optional argument that specifies the taper angle. The same taper angle is used for both sides for a symmetric
        extrusion. If omitted a taper angle of 0 is used.
        Returns true, if the call was successful.
        """
        return bool()
    def setThinExtrude(self, thinExtrudeWallLocationOne: ThinExtrudeWallLocation, thinExtrudeWallThicknessOne: core.ValueInput, thinExtrudeWallLocationTwo: ThinExtrudeWallLocation = ThinExtrudeWallLocation.Side1, thinExtrudeWallThicknessTwo: core.ValueInput = None) -> bool:
        """
        Changes the extrude feature to be a thin extrude. This is only valid if the isThinExtrude property
        is False. If the extrusion is already a thin extrude, you can use the properties on the ExtrudeFeature
        to modify the thin extrude specific values.
        thinExtrudeWallLocationOne : Specifies the position of the thin wall extrude with respect to the profile being extruded. This defines
        the direction for a single sided thin extrude or side one of a two-sided extrusion.
        thinExtrudeWallThicknessOne : A ValueInput object that defines the thickness for a single sided thin extrude or side one of a two-sided
        extrusion .
        thinExtrudeWallLocationTwo : Optional argument that specifies the position of side two of a two-sided extrusion. This argument is ignored
        for a single sided thin extrude.
        thinExtrudeWallThicknessTwo : Optional argument that is a ValueInput object that defines the thickness for side two of a
        two-sided extrusion. This argument is ignored for a single sided thin extrude.
        Returns true if successful.
        """
        return bool()
    @property
    def profile(self) -> core.Base:
        """
        Gets and sets the profiles or planar faces used to define the shape of the extrude.
        This property can return or be set with a single Profile, a single planar face, or
        an ObjectCollection consisting of multiple profiles and planar faces. When an
        ObjectCollection is used all of the profiles and faces must be co-planar.
        
        When setting this property of a surface (non-solid) extrusion, you can use the
        createOpenProfile and createBRepEdgeProfile methods of the Component object to create
        an open profile.
        
        This property returns null in the case where the feature is non-parametric.
        """
        return core.Base()
    @profile.setter
    def profile(self, value: core.Base):
        """
        Gets and sets the profiles or planar faces used to define the shape of the extrude.
        This property can return or be set with a single Profile, a single planar face, or
        an ObjectCollection consisting of multiple profiles and planar faces. When an
        ObjectCollection is used all of the profiles and faces must be co-planar.
        
        When setting this property of a surface (non-solid) extrusion, you can use the
        createOpenProfile and createBRepEdgeProfile methods of the Component object to create
        an open profile.
        
        This property returns null in the case where the feature is non-parametric.
        """
        pass
    @property
    def operation(self) -> FeatureOperations:
        """
        Gets and sets the type of operation performed by the extrusion.
        """
        return FeatureOperations()
    @operation.setter
    def operation(self, value: FeatureOperations):
        """
        Gets and sets the type of operation performed by the extrusion.
        """
        pass
    @property
    def startFaces(self) -> BRepFaces:
        """
        Property that returns the set of faces that cap the end of the extrusion and are coincident
        with the sketch plane. In the case of a symmetric extrusion, these faces are the ones on the
        positive normal side of the sketch plane. In the case where there are no start faces,
        this property will return null.
        """
        return BRepFaces()
    @property
    def endFaces(self) -> BRepFaces:
        """
        Property that returns the set of faces that cap the end of the extrusion, opposite the
        start faces. In the case where there are no end faces, this property will return null.
        """
        return BRepFaces()
    @property
    def sideFaces(self) -> BRepFaces:
        """
        Property that returns all of the side faces (i.e. those running perpendicular to the extrude direction)
        of the feature.
        """
        return BRepFaces()
    @property
    def nativeObject(self) -> ExtrudeFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return ExtrudeFeature()
    @property
    def isSolid(self) -> bool:
        """
        Indicates if this feature was initially created as a solid or a surface.
        """
        return bool()
    @property
    def startExtent(self) -> ExtentDefinition:
        """
        Gets and sets the extent used to define the start of the extrusion. You can set this property
        with either a ProfilePlaneStartDefinition, OffsetStartDefinition or a
        EntityStartDefinition object. You can get any of those objects by using the static create method on the class.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return ExtentDefinition()
    @startExtent.setter
    def startExtent(self, value: ExtentDefinition):
        """
        Gets and sets the extent used to define the start of the extrusion. You can set this property
        with either a ProfilePlaneStartDefinition, OffsetStartDefinition or a
        EntityStartDefinition object. You can get any of those objects by using the static create method on the class.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def extentOne(self) -> ExtentDefinition:
        """
        Gets and sets the extent used for a single sided extrude or side one of a two-sided extrusion. Valid
        inputs are DistanceExtentDefinition, ToEntityExtentDefinition, and ThroughAllExtentDefinition object,
        which can be created statically using the create method on the classes.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return ExtentDefinition()
    @extentOne.setter
    def extentOne(self, value: ExtentDefinition):
        """
        Gets and sets the extent used for a single sided extrude or side one of a two-sided extrusion. Valid
        inputs are DistanceExtentDefinition, ToEntityExtentDefinition, and ThroughAllExtentDefinition object,
        which can be created statically using the create method on the classes.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def extentTwo(self) -> ExtentDefinition:
        """
        Gets and sets the extent used for side two of the extrusion. If the extrude is a single sided extrude this
        property will return null and will fail if set. The hasTwoExtents property can be used to determine if
        there are two sides or not. When setting this property, valid inputs are DistanceExtentDefinition,
        ToEntityExtentDefinition, and ThroughAllExtentDefinition object, which can be created
        statically using the create method on the classes.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return ExtentDefinition()
    @extentTwo.setter
    def extentTwo(self, value: ExtentDefinition):
        """
        Gets and sets the extent used for side two of the extrusion. If the extrude is a single sided extrude this
        property will return null and will fail if set. The hasTwoExtents property can be used to determine if
        there are two sides or not. When setting this property, valid inputs are DistanceExtentDefinition,
        ToEntityExtentDefinition, and ThroughAllExtentDefinition object, which can be created
        statically using the create method on the classes.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def taperAngleOne(self) -> ModelParameter:
        """
        Gets the parameter controlling the taper angle for a single sided extrusion or side one of a two-sided
        extrusion. To edit the angle, use properties on the parameter to change the value of the parameter.
        """
        return ModelParameter()
    @property
    def taperAngleTwo(self) -> ModelParameter:
        """
        Gets the parameter controlling the taper angle for side two of a two-sided extrusion. if the extrusion is
        single-sided, this property will return null. The hasTwoExtents property can be used to determine if there
        are two sides or not. To edit the angle, use properties on the parameter to change the value of the parameter.
        """
        return ModelParameter()
    @property
    def hasTwoExtents(self) -> bool:
        """
        Property that indicates if the extrusion is a single or two-sided extrusion. If false, the extentTwo
        and taperAngleTwo properties should not be used.
        """
        return bool()
    @property
    def participantBodies(self) -> list[BRepBody]:
        """
        Gets and sets the list of bodies that will participate in the feature when the operation is a cut or intersection.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return [BRepBody()]
    @participantBodies.setter
    def participantBodies(self, value: list[BRepBody]):
        """
        Gets and sets the list of bodies that will participate in the feature when the operation is a cut or intersection.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def extentType(self) -> FeatureExtentTypes:
        """
        Returns a value indicating how the extent is defined for this extrude.
        """
        return FeatureExtentTypes()
    @property
    def symmetricExtent(self) -> SymmetricExtentDefinition:
        """
        If the current extent of the feature is defined as a symmetric extent, this property
        returns the SymmericExtentDefinition object that provides access to the information
        defining the symmetric extent. If the current extent is not symmetric, this property
        returns null. You can determine the type of extent by using the extentType property.
        
        To change the extent of a feature to symmetric extent you can use the setSymmetricExtent
        method.
        """
        return SymmetricExtentDefinition()
    @property
    def isThinExtrude(self) -> bool:
        """
        Sets or returns whether the extrude is a thin extrude.
        Setting it as false will make it a regular extrude.
        """
        return bool()
    @isThinExtrude.setter
    def isThinExtrude(self, value: bool):
        """
        Sets or returns whether the extrude is a thin extrude.
        Setting it as false will make it a regular extrude.
        """
        pass
    @property
    def thinExtrudeWallLocationOne(self) -> ThinExtrudeWallLocation:
        """
        Gets and sets the wall location for a one sided thin extrude or side one of a two sided thin extrude
        """
        return ThinExtrudeWallLocation()
    @thinExtrudeWallLocationOne.setter
    def thinExtrudeWallLocationOne(self, value: ThinExtrudeWallLocation):
        """
        Gets and sets the wall location for a one sided thin extrude or side one of a two sided thin extrude
        """
        pass
    @property
    def thinExtrudeWallLocationTwo(self) -> ThinExtrudeWallLocation:
        """
        Gets and sets the wall location for side two of a two sided thin extrude
        """
        return ThinExtrudeWallLocation()
    @thinExtrudeWallLocationTwo.setter
    def thinExtrudeWallLocationTwo(self, value: ThinExtrudeWallLocation):
        """
        Gets and sets the wall location for side two of a two sided thin extrude
        """
        pass
    @property
    def thinExtrudeWallThicknessOne(self) -> ModelParameter:
        """
        Gets and sets the wall thickness for a one sided thin extrude or side one of a two sided thin extrude
        """
        return ModelParameter()
    @property
    def thinExtrudeWallThicknessTwo(self) -> ModelParameter:
        """
        Gets and sets the wall thickness for side two of a two sided thin extrude
        """
        return ModelParameter()

class FaceRipFeatureDefinition(RipFeatureDefinition):
    """
    The definition for a face rip.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FaceRipFeatureDefinition:
        return FaceRipFeatureDefinition()
    @property
    def ripFace(self) -> BRepFace:
        """
        Gets and sets the input face for a face rip.
        """
        return BRepFace()
    @ripFace.setter
    def ripFace(self, value: BRepFace):
        """
        Gets and sets the input face for a face rip.
        """
        pass

class FilletFeature(Feature):
    """
    Object that represents an existing fillet feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FilletFeature:
        return FilletFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> FilletFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return FilletFeature()
    def convert(self, input: core.Base) -> bool:
        """
        Method that converts this feature to another fillet feature type.
        
        To use this method you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True).
        input : Input a fillet feature input object that defines the desired fillet.
        Use the FilletFeatures.create*Input methods to create a new fillet feature input object.
        This can be a feature input for fillet type, rule fillet type or full round fillet type.
        Returns true if the conversion was successful.
        """
        return bool()
    @property
    def edgeSets(self) -> FilletEdgeSets:
        """
        Returns the edge sets collection associated with this fillet.
        """
        return FilletEdgeSets()
    @property
    def isRollingBallCorner(self) -> bool:
        """
        Gets and sets if a rolling ball or setback solution is to be used in any corners. Asymmetric
        fillets always use a setback solution and will ignore this setting.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isRollingBallCorner.setter
    def isRollingBallCorner(self, value: bool):
        """
        Gets and sets if a rolling ball or setback solution is to be used in any corners. Asymmetric
        fillets always use a setback solution and will ignore this setting.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def nativeObject(self) -> FilletFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return FilletFeature()
    @property
    def fullRoundFilletFaceSets(self) -> FullRoundFilletFaceSets:
        """
        Returns the full round fillet face sets collection associated with this fillet feature.
        This collection is only valid when the filletFeatureType is FullRoundFilletFeatureType
        and it returns null if the filletFeatureType is not FullRoundFilletFeatureType.
        """
        return FullRoundFilletFaceSets()
    @property
    def filletFeatureType(self) -> FilletFeatureTypes:
        """
        Returns the FilletFeatureTypes indicating this fillet feature type.
        """
        return FilletFeatureTypes()
    @property
    def ruleFilletSettings(self) -> RuleFilletSettings:
        """
        Gets the RuleFilletSettings object for the rule fillet.
        
        This is valid only when the filletFeatureType is FilletFeatureTypes.RuleFilletFeatureType, otherwise this returns null.
        """
        return RuleFilletSettings()

class FitOnPathTextDefintion(SketchTextDefinition):
    """
    Defines the information for text that fits along a path.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FitOnPathTextDefintion:
        return FitOnPathTextDefintion()
    @property
    def path(self) -> core.Base:
        """
        Get and sets the entity that defines the path for the text. This can be a SketchCurve or BRepEdge object.
        """
        return core.Base()
    @path.setter
    def path(self, value: core.Base):
        """
        Get and sets the entity that defines the path for the text. This can be a SketchCurve or BRepEdge object.
        """
        pass
    @property
    def isAbovePath(self) -> bool:
        """
        Gets and sets if the text should be positioned above or below the path entity.
        """
        return bool()
    @isAbovePath.setter
    def isAbovePath(self, value: bool):
        """
        Gets and sets if the text should be positioned above or below the path entity.
        """
        pass

class FlangeFeature(Feature):
    """
    Object that represents an existing flange feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FlangeFeature:
        return FlangeFeature()

class FlatHemFeatureDefinition(HemFeatureDefinition):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The definition for a flat hem.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FlatHemFeatureDefinition:
        return FlatHemFeatureDefinition()
    @property
    def length(self) -> ModelParameter:
        """
        Gets the length for a flat hem.
        """
        return ModelParameter()

class FlatPattern(Feature):
    """
    The FlatPattern object provides access to the flattened representation of a folded part.
    This supports most of the functionality of a regular component like creating sketches,
    construction geometry, and most features. Functionality that is not supported in a
    flat pattern will fail if you attempt to use it. For example, the creation of occurrences
    and new components is not supported. Also the creation of sheet metal features is
    not supported.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FlatPattern:
        return FlatPattern()
    def getBendInfo(self, bendEdge: BRepEdge) -> tuple[bool, bool, float]:
        """
        Returns bend information for the specified bend.
        bendEdge : The wire BrepEdge that represents a bend line in the model. The edges are obtained from the wire
        body returned by the bendLinesBody property.
        isBendUp : Indicates if the bend is in the natural direction of the bend line or in the opposite direction. Returns true
        if the bend is in the same direction as the input bend line.
        bendAngle : Returns the bend angle of the bend in radians.
        Returns true if the bend information was successfully returned.
        """
        return (bool(), bool(), float())
    @property
    def flatBody(self) -> BRepBody:
        """
        Returns the B-Rep body that represents the flattened sheet metal part.
        """
        return BRepBody()
    @property
    def bendLinesBody(self) -> BRepBody:
        """
        Returns the wire B-Rep body that represents the bend lines of the flattened sheet metal part.
        """
        return BRepBody()
    @property
    def extentLinesBody(self) -> BRepBody:
        """
        Returns the wire B-Rep body that represents the extent lines of the flattened sheet metal part.
        """
        return BRepBody()
    @property
    def topFace(self) -> BRepFace:
        """
        Returns the "top" face of the flat pattern B-Rep body.
        """
        return BRepFace()
    @property
    def bottomFace(self) -> BRepFace:
        """
        Returns the "bottom" face of the flat pattern B-Rep body.
        """
        return BRepFace()
    @property
    def sideFaces(self) -> BRepFaces:
        """
        Returns the "side" faces of the flat pattern B-Rep body. These are the faces around
        the edge of the flat pattern that connect the top and bottom faces.
        """
        return BRepFaces()
    @property
    def foldedBody(self) -> BRepBody:
        """
        Returns the folded B-Rep body in the design that this flat pattern was created from.
        """
        return BRepBody()

class FormFeature(Feature):
    """
    Object that represents an existing Form feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FormFeature:
        return FormFeature()
    def startEdit(self) -> bool:
        """
        Set the user-interface so that the form body is in edit mode.
        Returns true if successful.
        """
        return bool()
    def finishEdit(self) -> bool:
        """
        Exits from edit mode in the user-interface. If this form feature in not
        in edit mode, then nothing happens.
        Returns true if successful.
        """
        return bool()
    @property
    def tSplineBodies(self) -> TSplineBodies:
        """
        Returns a TSplineBodies collection where you can access any existing
        T-Spline bodies and through it create new T-Spline bodies.
        """
        return TSplineBodies()

class FromEntityStartDefinition(ExtentDefinition):
    """
    A definition object that is used to define a feature whose start is defined by a specified construction
    plane or face. If a face is specified it must be large enough to completely contain the projected profile.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FromEntityStartDefinition:
        return FromEntityStartDefinition()
    @staticmethod
    def create(entity: core.Base, offset: core.ValueInput) -> FromEntityStartDefinition:
        """
        Statically creates a new FromEntityStartDefinition object. This is used as input when
        create a new feature and defining the starting condition.
        entity : An input construction plane or face that defines the start of the feature. If a face is specified it
        must be large enough to completely contain the projected profile.
        offset : An input ValueInput objects that defines the offset distance from the specified entity. The offset can be positive or
        negative. A positive value indicates an offset in the same direction as the positive normal direction of the face.
        Returns the newly created FromEntityStartDefinition or null in the case of a failure.
        """
        return FromEntityStartDefinition()
    @property
    def offset(self) -> core.Base:
        """
        Gets the currently defined offset value. If the FromEntityStartDefinition object was
        created statically and is not associated with a feature, this will return a ValueInput object.
        if the FromEntityStartDefinition is associated with an existing feature, this will return
        the parameter that was created when the feature was created. To edit the offset, use properties
        on the parameter to change the value of the parameter.
        """
        return core.Base()
    @property
    def entity(self) -> core.Base:
        """
        Gets and sets the entity defining the start of the feature.
        """
        return core.Base()
    @entity.setter
    def entity(self, value: core.Base):
        """
        Gets and sets the entity defining the start of the feature.
        """
        pass

class FusionArchiveExportOptions(ExportOptions):
    """
    Defines that a Fusion Archive export is to be done and specifies the various options.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FusionArchiveExportOptions:
        return FusionArchiveExportOptions()

class FusionDefaultUnitsPreferences(core.DefaultUnitsPreferences):
    """
    <p>Fusion Default Units for Design Preferences. The following code can be used to access this object.</p>
    <pre class="api-code">unitPrefs = app.preferences.defaultUnitsPreferences.itemByName('Design')</pre>
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FusionDefaultUnitsPreferences:
        return FusionDefaultUnitsPreferences()
    @property
    def distanceDisplayUnits(self) -> DistanceUnits:
        """
        Gets and sets the default design units for length when creating a new Fusion file.
        Setting this property will have the side effect of changing the defaultUnitSystem
        property to custom.
        """
        return DistanceUnits()
    @distanceDisplayUnits.setter
    def distanceDisplayUnits(self, value: DistanceUnits):
        """
        Gets and sets the default design units for length when creating a new Fusion file.
        Setting this property will have the side effect of changing the defaultUnitSystem
        property to custom.
        """
        pass
    @property
    def massDisplayUnits(self) -> MassUnits:
        """
        Gets and sets the default design units for mass when creating a new Fusion file.
        Setting this property will have the side effect of changing the defaultUnitSystem
        property to custom.
        """
        return MassUnits()
    @massDisplayUnits.setter
    def massDisplayUnits(self, value: MassUnits):
        """
        Gets and sets the default design units for mass when creating a new Fusion file.
        Setting this property will have the side effect of changing the defaultUnitSystem
        property to custom.
        """
        pass
    @property
    def defaultUnitSystem(self) -> UnitSystems:
        """
        Gets and sets the default unit system when creating a new Fusion file.
        """
        return UnitSystems()
    @defaultUnitSystem.setter
    def defaultUnitSystem(self, value: UnitSystems):
        """
        Gets and sets the default unit system when creating a new Fusion file.
        """
        pass

class FusionDocument(core.Document):
    """
    Object that represents a Fusion specific document.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FusionDocument:
        return FusionDocument()
    @property
    def design(self) -> Design:
        """
        Returns the design associated with this Fusion document.
        """
        return Design()

class FusionProductPreferences(core.ProductPreferences):
    """
    Fusion General Design Preferences
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FusionProductPreferences:
        return FusionProductPreferences()
    @property
    def isActiveComponentVisibilityUsed(self) -> bool:
        """
        Gets and sets the Active Component Visibility option.
        """
        return bool()
    @isActiveComponentVisibilityUsed.setter
    def isActiveComponentVisibilityUsed(self, value: bool):
        """
        Gets and sets the Active Component Visibility option.
        """
        pass
    @property
    def defaultDesignType(self) -> DefaultDesignTypeOptions:
        """
        Gets and sets the default modeling type setting.
        """
        return DefaultDesignTypeOptions()
    @defaultDesignType.setter
    def defaultDesignType(self, value: DefaultDesignTypeOptions):
        """
        Gets and sets the default modeling type setting.
        """
        pass
    @property
    def defaultWorkspace(self) -> DefaultWorkspaces:
        """
        Gets and sets the Default workspace setting. (Model, Sculpt or Patch)
        """
        return DefaultWorkspaces()
    @defaultWorkspace.setter
    def defaultWorkspace(self, value: DefaultWorkspaces):
        """
        Gets and sets the Default workspace setting. (Model, Sculpt or Patch)
        """
        pass
    @property
    def isJointPreviewAnimated(self) -> bool:
        """
        Gets and sets the Animate joint preview option.
        """
        return bool()
    @isJointPreviewAnimated.setter
    def isJointPreviewAnimated(self, value: bool):
        """
        Gets and sets the Animate joint preview option.
        """
        pass
    @property
    def is3DSketchingAllowed(self) -> bool:
        """
        Gets and sets the Allow 3D sketching of lines and splines option,
        which controls if 3D sketching is allowed or if sketching is forced to
        be on the x-y plane of the sketch.
        """
        return bool()
    @is3DSketchingAllowed.setter
    def is3DSketchingAllowed(self, value: bool):
        """
        Gets and sets the Allow 3D sketching of lines and splines option,
        which controls if 3D sketching is allowed or if sketching is forced to
        be on the x-y plane of the sketch.
        """
        pass
    @property
    def isGhostedResultBodyShown(self) -> bool:
        """
        Gets and sets the Show ghosted result body option.
        """
        return bool()
    @isGhostedResultBodyShown.setter
    def isGhostedResultBodyShown(self, value: bool):
        """
        Gets and sets the Show ghosted result body option.
        """
        pass
    @property
    def isDimensionEditedWhenCreated(self) -> bool:
        """
        Gets and sets if dimension value is edited when the dimension is created.
        """
        return bool()
    @isDimensionEditedWhenCreated.setter
    def isDimensionEditedWhenCreated(self, value: bool):
        """
        Gets and sets if dimension value is edited when the dimension is created.
        """
        pass
    @property
    def isAutoProjectGeometry(self) -> bool:
        """
        Gets and sets if geometry, not in the active sketch plane, is to be automatically projected.
        """
        return bool()
    @isAutoProjectGeometry.setter
    def isAutoProjectGeometry(self, value: bool):
        """
        Gets and sets if geometry, not in the active sketch plane, is to be automatically projected.
        """
        pass
    @property
    def isAutoProjectEdgesOnReference(self) -> bool:
        """
        Gets and sets if model edges should be automatically projected when creating
        constraints and dimensions in the active sketch when the orientation is normal
        to the active sketch plane.
        """
        return bool()
    @isAutoProjectEdgesOnReference.setter
    def isAutoProjectEdgesOnReference(self, value: bool):
        """
        Gets and sets if model edges should be automatically projected when creating
        constraints and dimensions in the active sketch when the orientation is normal
        to the active sketch plane.
        """
        pass
    @property
    def isAutoHideSketchOnFeatureCreation(self) -> bool:
        """
        Gets and sets if the sketch should be automatically hidden whenever
        a feature is created from it.
        """
        return bool()
    @isAutoHideSketchOnFeatureCreation.setter
    def isAutoHideSketchOnFeatureCreation(self, value: bool):
        """
        Gets and sets if the sketch should be automatically hidden whenever
        a feature is created from it.
        """
        pass
    @property
    def isSketchScaledWithFirstDimension(self) -> bool:
        """
        Gets and sets if the sketch geometry is automatically scaled when
        the first dimension is added.
        """
        return bool()
    @isSketchScaledWithFirstDimension.setter
    def isSketchScaledWithFirstDimension(self, value: bool):
        """
        Gets and sets if the sketch geometry is automatically scaled when
        the first dimension is added.
        """
        pass
    @property
    def isAllowReferencesDuringEditInPlace(self) -> bool:
        """
        Gets and sets if you can create associative references while editing
        external components in context.
        """
        return bool()
    @isAllowReferencesDuringEditInPlace.setter
    def isAllowReferencesDuringEditInPlace(self, value: bool):
        """
        Gets and sets if you can create associative references while editing
        external components in context.
        """
        pass
    @property
    def isEnableArrangeAndSimplifyTools(self) -> bool:
        """
        Gets and sets if the Arrange, Remove Features, Remove Faces, and
        Replace with Primitives commands should be added to the Modify menu
        in the Design workspace.
        """
        return bool()
    @isEnableArrangeAndSimplifyTools.setter
    def isEnableArrangeAndSimplifyTools(self, value: bool):
        """
        Gets and sets if the Arrange, Remove Features, Remove Faces, and
        Replace with Primitives commands should be added to the Modify menu
        in the Design workspace.
        """
        pass
    @property
    def isFirstComponentGroundToParent(self) -> bool:
        """
        Gets and sets if the first Component within another component should be
        grounded to parent automatically.
        """
        return bool()
    @isFirstComponentGroundToParent.setter
    def isFirstComponentGroundToParent(self, value: bool):
        """
        Gets and sets if the first Component within another component should be
        grounded to parent automatically.
        """
        pass
    @property
    def isAutoLookAtSketch2(self) -> AutoLookAtSketchSettings:
        """
        Gets and sets if the view is re-oriented to view the newly created sketch,
        and if it is re-oriented, if the camera uses the current camera settings or is orthographic.
        """
        return AutoLookAtSketchSettings()
    @isAutoLookAtSketch2.setter
    def isAutoLookAtSketch2(self, value: AutoLookAtSketchSettings):
        """
        Gets and sets if the view is re-oriented to view the newly created sketch,
        and if it is re-oriented, if the camera uses the current camera settings or is orthographic.
        """
        pass

class FusionUnitsManager(core.UnitsManager):
    """
    Utility class used to work with Values and control default design units.
    Internal values are held in SI units (e.g. seconds, radians, kg for time, angle, mass)
    with the exception that all lengths are in cm rather than meter and this affects derived
    units (e.g. velocity is cm/s, volume is cm^3). Units are specified flexibly via strings
    (e.g. "cm", "in", "inch", "cm^3", "cm*cm*cm", "mph", "mps" "m/s").
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FusionUnitsManager:
        return FusionUnitsManager()
    @property
    def design(self) -> Design:
        """
        Returns the parent design.
        """
        return Design()
    @property
    def distanceDisplayUnits(self) -> DistanceUnits:
        """
        Gets and sets the default distance units for this design. Setting this
        property has the side effect of changing the unitSystem
        property to custom.
        """
        return DistanceUnits()
    @distanceDisplayUnits.setter
    def distanceDisplayUnits(self, value: DistanceUnits):
        """
        Gets and sets the default distance units for this design. Setting this
        property has the side effect of changing the unitSystem
        property to custom.
        """
        pass
    @property
    def massDisplayUnits(self) -> MassUnits:
        """
        Gets and sets the default mass units for this design. Setting this property
        has the side effect of changing the unitSystem property to custom.
        """
        return MassUnits()
    @massDisplayUnits.setter
    def massDisplayUnits(self, value: MassUnits):
        """
        Gets and sets the default mass units for this design. Setting this property
        has the side effect of changing the unitSystem property to custom.
        """
        pass
    @property
    def unitSystem(self) -> UnitSystems:
        """
        Gets and sets the pre-defined combination of length and mass units to use for the
        units in the design. The distanceDisplayUnits and massDisplayUnits properties provide
        a way to get the current setting for distance and mass and to modify them to other values
        besides the predefined combinations. When a custom unit system is specified, any combination
        of distance and mass can be specified.
        """
        return UnitSystems()
    @unitSystem.setter
    def unitSystem(self, value: UnitSystems):
        """
        Gets and sets the pre-defined combination of length and mass units to use for the
        units in the design. The distanceDisplayUnits and massDisplayUnits properties provide
        a way to get the current setting for distance and mass and to modify them to other values
        besides the predefined combinations. When a custom unit system is specified, any combination
        of distance and mass can be specified.
        """
        pass

class HoleFeature(Feature):
    """
    Object that represents an existing hole feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> HoleFeature:
        return HoleFeature()
    def setToSimple(self) -> bool:
        """
        Calling this method will change the hole to a simple hole.
        Returns true if changing the hole was successful.
        """
        return bool()
    def setToCounterbore(self, counterboreDiameter: core.ValueInput, counterboreDepth: core.ValueInput) -> bool:
        """
        Calling this method will change the hole to a counterbore hole.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        counterboreDiameter : A ValueInput object that defines the counterbore diameter. If the ValueInput uses
        a real then it is interpreted as centimeters. If it is a string then the units
        can be defined as part of the string (i.e. "3 in"). If no units are specified
        it is interpreted using the current default units for length.
        counterboreDepth : A ValueInput object that defines the counterbore depth. If the ValueInput uses
        a real then it is interpreted as centimeters. If it is a string then the units
        can be defined as part of the string (i.e. "3 in"). If no units are specified
        it is interpreted using the current default units for length.
        Returns true if changing the hole was successful.
        """
        return bool()
    def setToCountersink(self, countersinkDiameter: core.ValueInput, countersinkAngle: core.ValueInput) -> bool:
        """
        Calling this method will change the hole to a countersink hole.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        countersinkDiameter : A ValueInput object that defines the countersink diameter. If the ValueInput uses
        a real then it is interpreted as centimeters. If it is a string then the units
        can be defined as part of the string (i.e. "3 in"). If no units are specified
        it is interpreted using the current default units for length.
        countersinkAngle : A ValueInput object that defines the countersink angle. If the ValueInput uses
        a real then it is interpreted as radians. If it is a string then the units
        can be defined as part of the string (i.e. "120 deg"). If no units are specified
        it is interpreted using the current default units for length.
        Returns true if changing the hole was successful.
        """
        return bool()
    def setDistanceExtent(self, distance: core.ValueInput) -> bool:
        """
        Defines the depth of the hole using a specific distance.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        distance : The depth of the hole. If a real is specified the value is in centimeters. If a string is
        specified the units are derived from the string. If no units are specified, the default
        units of the document are used.
        Returns true if setting the extent was successful.
        """
        return bool()
    def setAllExtent(self, direction: ExtentDirections) -> bool:
        """
        Defines the extent of the hole to be through-all. The direction can be
        either positive, negative.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        direction : The direction of the hole relative to the normal of the sketch plane.
        Returns true if successful.
        """
        return bool()
    def setOneSideToExtent(self, toEntity: core.Base, matchShape: bool, directionHint: core.Vector3D = None) -> bool:
        """
        Sets the extent of the hole to be from the sketch plane to the specified "to" face.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        toEntity : The entity that defines the "to" extent. The valid types of entities can vary depending on
        the type of feature this is being used with. For a hole it can be a BRepBody, BRepFace,
        BRepVertex, ConstructionPlane, or ConstructionPoint.
        matchShape : Indicates if the hole is not contained on the face that the hole should match
        the shape of the entity as if it extended beyond its current boundaries.
        directionHint : Specifies the direction of the hole. This is only used in the case where there are two possible solutions and the hole can
        hit the toEntity in either direction.
        
        Typically there is only a single solution and the direction is determined automatically.
        Returns true if successful.
        """
        return bool()
    def setPositionByPoint(self, planarEntity: core.Base, point: core.Base) -> bool:
        """
        Redefines the position of a the hole using a point. The point can be a vertex on the face
        or it can be a Point3D object to define any location on the face. If a Point3D object is
        provided it will be projected onto the plane along the planes normal. The orientation of the
        hole is defined by the planar face or construction plane. If a vertex is used, the position of
        the hole is associative to that vertex. If a Point3D object is used the position of the hole
        is not associative.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        planarEntity : The planar BRepFace or ConstructionPlane object that defines the orientation of the hole.
        The natural direction of the hole will be opposite the normal of the face or construction plane.
        point : A Point3D object or vertex that defines the position of the hole. The point will be projected
        onto the plane along the normal of the plane.
        Returns true if successful.
        """
        return bool()
    def setPositionAtCenter(self, planarEntity: core.Base, centerEdge: BRepEdge) -> bool:
        """
        Redefines the position of the hole at the center of a circular or elliptical edge of the face.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        planarEntity : The planar BRepFace or ConstructionPlane object that defines the orientation of the hole.
        The natural direction of the hole will be opposite the normal of the face or construction plane.
        centerEdge : A circular or elliptical edge whose center point will be the position of the hole.
        Returns true if successful.
        """
        return bool()
    def setPositionBySketchPoint(self, sketchPoint: SketchPoint) -> bool:
        """
        Redefines the position and orientation of the hole using a sketch point.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        sketchPoint : The sketch point that defines the position of the hole. The orientation is
        inferred from the normal of the point's parent sketch. The natural direction will be
        opposite the normal of the sketch.
        Returns true if successful.
        """
        return bool()
    def setPositionBySketchPoints(self, sketchPoints: core.ObjectCollection) -> bool:
        """
        Redefines the position and orientation of the hole using a set of points.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        sketchPoints : A collection of sketch points that defines the positions of the holes. The orientation is
        inferred from the normal of the point's parent sketch. The natural direction will be
        opposite the normal of the sketch. All of the points must be in the same sketch.
        Returns true if successful.
        """
        return bool()
    def setPositionByPlaneAndOffsets(self, planarEntity: core.Base, point: core.Point3D, edgeOne: BRepEdge, offsetOne: core.ValueInput, edgeTwo: BRepEdge = None, offsetTwo: core.ValueInput = None) -> bool:
        """
        Redefines the orientation of the hole using a planar face or construction plane.
        The position of the hole is defined by the distance from one or two edges.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        planarEntity : The planar BRepFace or ConstructionPlane object that defines the orientation of the hole.
        The natural direction of the hole will be opposite the normal of the face or construction plane.
        point : A Point3D object that defines the approximate initial position of the hole. The point will be
        projected onto the plane. This point should be close to the final position of the hole and
        is used to determine which solution out of several possible solutions should be chosen
        for the hole location.
        edgeOne : A linear BRepEdge object that the position of the hole will be measured from. The position
        of the hole will be measured along a perpendicular from this edge.
        offsetOne : A ValueInput object that defines the offset distance from edgeOne. If the ValueInput uses
        a real then it is interpreted as centimeters. If it is a string then the units
        can be defined as part of the string (i.e. "3 in"). If no units are specified
        it is interpreted using the current default units for length.
        edgeTwo : You can optionally define a second edge and offset to specify the position of the hole. If you use a
        second edge it has the same requirements as the edgeOne argument. If you provide a second edge you
        must also provide the offsetTwo argument.
        offsetTwo : If edgeTwo is defined, you must provide this argument which is a ValueInput object that
        defines the offset from the edgeTwo. If the ValueInput uses a real then it is interpreted
        as centimeters. If it is a string then the units can be defined as part of the string
        (i.e. "3 in"). If no units are specified it is interpreted using the current default units
        for length.
        Returns true if successful.
        """
        return bool()
    def setPositionOnEdge(self, planarEntity: core.Base, edge: BRepEdge, position: HoleEdgePositions) -> bool:
        """
        Redefines the position and orientation of the hole to be on the start, end or center of an edge.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        planarEntity : The planar BRepFace or ConstructionPlane object that defines the orientation of the hole
        and start of the hole. The natural direction of the hole will be opposite the normal of
        the face or construction plane.
        edge : The edge to position the hole on.
        position : The position along the edge to place the hole.
        Returns true if successful.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> HoleFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return HoleFeature()
    def setToSimpleHole(self) -> bool:
        """
        This method sets the hole's tap to be "simple," which means that the hole will not have any
        tap and will be a simple hole.
        Returns true if successful.
        """
        return bool()
    def setToClearanceHole(self, clearanceHoleInfo: ClearanceHoleInfo) -> bool:
        """
        Sets the hole to be a clearance hole of the size specified by the ClearanceHoleInfo object.
        clearanceHoleInfo : The ClearanceHoleInfo object that specifies the size of the clearance hole.
        Returns true if setting to a clearance hole was successful.
        """
        return bool()
    def setToTappedHole(self, threadInfo: ThreadInfo) -> bool:
        """
        Sets the hole to be a straight or tapered tapped hole of the size specified by the ThreadInfo object.
        threadInfo : The ThreadInfo object that specifies the thread to use for the tapped hole. Whether it is straight
        or tapered tap is defined by the input ThreadInfo object.
        Returns true if setting to a tapped hole was successful.
        """
        return bool()
    @property
    def position(self) -> core.Point3D:
        """
        Returns the position of the hole.
        """
        return core.Point3D()
    @property
    def direction(self) -> core.Vector3D:
        """
        Returns the direction of the hole.
        """
        return core.Vector3D()
    @property
    def holeType(self) -> HoleTypes:
        """
        Returns the current type of hole this feature represents.
        """
        return HoleTypes()
    @property
    def holeDiameter(self) -> ModelParameter:
        """
        Returns the model parameter controlling the hole diameter. The diameter of
        the hole can be edited through the returned parameter object.
        
        If there is a thread associated with the hole the thread definition controls
        the diameter of the hole. Even though there is a parameter for the diameter,
        its value is ignored when there is a thread.
        """
        return ModelParameter()
    @property
    def tipAngle(self) -> ModelParameter:
        """
        Returns the model parameter controlling the angle of the tip of the hole. The tip angle of
        the hole can be edited through the returned parameter object.
        """
        return ModelParameter()
    @property
    def counterboreDiameter(self) -> ModelParameter:
        """
        Returns the model parameter controlling the counterbore diameter.
        This will return null in the case the hole type is not a counterbore.
        The diameter of the counterbore can be edited through the returned parameter.
        """
        return ModelParameter()
    @property
    def counterboreDepth(self) -> ModelParameter:
        """
        Returns the model parameter controlling the counterbore depth.
        This will return null in the case the hole type is not a counterbore.
        The depth of the counterbore can be edited through the returned parameter.
        """
        return ModelParameter()
    @property
    def countersinkDiameter(self) -> ModelParameter:
        """
        Returns the model parameter controlling the countersink diameter.
        This will return null in the case the hole type is not a countersink.
        The diameter of the countersink can be edited through the returned parameter.
        """
        return ModelParameter()
    @property
    def countersinkAngle(self) -> ModelParameter:
        """
        Returns the model parameter controlling the countersink angle.
        This will return null in the case the hole type is not a countersink.
        The angle of the countersink can be edited through the returned parameter.
        """
        return ModelParameter()
    @property
    def isDefaultDirection(self) -> bool:
        """
        Gets and sets if the hole is in the default direction or not.
        """
        return bool()
    @isDefaultDirection.setter
    def isDefaultDirection(self, value: bool):
        """
        Gets and sets if the hole is in the default direction or not.
        """
        pass
    @property
    def extentDefinition(self) -> ExtentDefinition:
        """
        Gets the definition object that is defining the extent of the hole. Modifying the
        definition object will cause the hole to recompute. The extent type of a hole
        is currently limited to a distance extent.
        """
        return ExtentDefinition()
    @property
    def endFaces(self) -> BRepFaces:
        """
        Property that returns the faces at the bottom of the hole. This will typically be a single face
        but could return more than one face in the case where the bottom of the hole is uneven.
        """
        return BRepFaces()
    @property
    def sideFaces(self) -> BRepFaces:
        """
        Property that returns all of the side faces of the hole.
        """
        return BRepFaces()
    @property
    def holePositionDefinition(self) -> HolePositionDefinition:
        """
        Returns a HolePositionDefinition object that provides access to the information used
        to define the position of the hole. This returns null in the case where IsParametric
        is false.
        """
        return HolePositionDefinition()
    @property
    def nativeObject(self) -> HoleFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return HoleFeature()
    @property
    def participantBodies(self) -> list[BRepBody]:
        """
        Gets and sets the list of bodies that will participate in the feature when the operation is a cut or intersection.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return [BRepBody()]
    @participantBodies.setter
    def participantBodies(self, value: list[BRepBody]):
        """
        Gets and sets the list of bodies that will participate in the feature when the operation is a cut or intersection.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def holeTapType(self) -> HoleTapTypes:
        """
        This property returns the current type of tap associated with this hole. You can set the tap type
        by using one of the following methods: setToSimpleHole, setToClearanceHole, or setToTappedHole.
        """
        return HoleTapTypes()
    @property
    def clearanceHoleInfo(self) -> ClearanceHoleInfo:
        """
        Returns the information used to define a clearance hole. This returns a
        ClearanceHoleInfo object when the holeTapType returns ClearanceHoleTapType. Otherwise
        this property returns null.
        """
        return ClearanceHoleInfo()
    @property
    def tappedHoleInfo(self) -> ThreadInfo:
        """
        This property returns the information used to define a tapped hole.
        Otherwise, this property returns null.
        """
        return ThreadInfo()
    @property
    def thread(self) -> ThreadFeature:
        """
        When a tapped hole is created, a thread feature is also automatically created and controls
        the tapped threads. The thread feature is tied to the hole and is not displayed in the timeline
        and is suppressed if the hole is suppressed and deleted if the hole is deleted. This property
        returns the thread feature associated with this hole if it is a tapped hole. It returns null
        for all other hole types.
        """
        return ThreadFeature()

class HorizontalConstraint(GeometricConstraint):
    """
    A horizontal constraint in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> HorizontalConstraint:
        return HorizontalConstraint()
    def createForAssemblyContext(self, occurrence: Occurrence) -> HorizontalConstraint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return HorizontalConstraint()
    @property
    def line(self) -> SketchLine:
        """
        Returns the line being constrained.
        """
        return SketchLine()
    @property
    def nativeObject(self) -> HorizontalConstraint:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return HorizontalConstraint()

class HorizontalPointsConstraint(GeometricConstraint):
    """
    A horizontal constraint between two points in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> HorizontalPointsConstraint:
        return HorizontalPointsConstraint()
    def createForAssemblyContext(self, occurrence: Occurrence) -> HorizontalPointsConstraint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return HorizontalPointsConstraint()
    @property
    def pointOne(self) -> SketchPoint:
        """
        Returns the first point.
        """
        return SketchPoint()
    @property
    def pointTwo(self) -> SketchPoint:
        """
        Returns the second point.
        """
        return SketchPoint()
    @property
    def nativeObject(self) -> HorizontalPointsConstraint:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return HorizontalPointsConstraint()

class IGESExportOptions(ExportOptions):
    """
    Defines that an IGES export is to be done and specifies the various options.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> IGESExportOptions:
        return IGESExportOptions()

class IsoCurveAnalysis(Analysis):
    """
    Represents any existing Iso Curve Analysis that exist in the design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> IsoCurveAnalysis:
        return IsoCurveAnalysis()

class LineOnPlanarSurfaceConstraint(GeometricConstraint):
    """
    A sketch constraint defining that a line that lies on a planar face or construction plane.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> LineOnPlanarSurfaceConstraint:
        return LineOnPlanarSurfaceConstraint()
    def createForAssemblyContext(self, occurrence: Occurrence) -> LineOnPlanarSurfaceConstraint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return LineOnPlanarSurfaceConstraint()
    @property
    def line(self) -> SketchLine:
        """
        Returns the SketchLine object that is constrained.
        """
        return SketchLine()
    @property
    def planarSurface(self) -> core.Base:
        """
        Returns the planar BRepFace or ConstructionPlane the line is constrained to lie on.
        """
        return core.Base()
    @property
    def nativeObject(self) -> LineOnPlanarSurfaceConstraint:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return LineOnPlanarSurfaceConstraint()

class LineParallelToPlanarSurfaceConstraint(GeometricConstraint):
    """
    A sketch constraint defining that a line is parallel to a planar face or construction plane.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> LineParallelToPlanarSurfaceConstraint:
        return LineParallelToPlanarSurfaceConstraint()
    def createForAssemblyContext(self, occurrence: Occurrence) -> LineParallelToPlanarSurfaceConstraint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return LineParallelToPlanarSurfaceConstraint()
    @property
    def line(self) -> SketchLine:
        """
        Returns the SketchLine object that is constrained.
        """
        return SketchLine()
    @property
    def planarSurface(self) -> core.Base:
        """
        Returns the planar BRepFace or ConstructionPlane the line is parallel to.
        """
        return core.Base()
    @property
    def nativeObject(self) -> LineParallelToPlanarSurfaceConstraint:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return LineParallelToPlanarSurfaceConstraint()

class LoftDirectionEndCondition(LoftEndCondition):
    """
    Represents a "Direction" loft end condition.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> LoftDirectionEndCondition:
        return LoftDirectionEndCondition()
    @property
    def angle(self) -> core.Base:
        """
        Gets the valueInput or Parameter that defines the angle of the direction of the loft.
        If this object was obtained from a LoftFeatureInput object then this will return a
        valueInput object with the initial value provided. If this object was obtained from
        an exiting LoftFeature then it returns a Parameter. In the case of a parameter, to change the angle,
        edit the value of the associated parameter.
        """
        return core.Base()
    @property
    def weight(self) -> core.Base:
        """
        Gets the valueInput or Parameter that defines the weight of the loft.
        If this object was obtained from a LoftFeatureInput object then this will return a
        valueInput object with the initial value provided. If this object was obtained from
        an exiting LoftFeature then it returns a Parameter. In the case of a parameter, to change the weight,
        edit the value of the associated parameter.
        """
        return core.Base()

class LoftFeature(Feature):
    """
    Object that represents an existing loft feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> LoftFeature:
        return LoftFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> LoftFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return LoftFeature()
    @property
    def loftSections(self) -> LoftSections:
        """
        Returns the set of sections that the loft passes through.
        
        This property returns null in the case where the feature is non-parametric.
        """
        return LoftSections()
    @property
    def centerLineOrRails(self) -> LoftCenterLineOrRails:
        """
        Returns the single centerline or the set of rails that define the shape of the loft.
        
        This property returns null in the case where the feature is non-parametric.
        """
        return LoftCenterLineOrRails()
    @property
    def startFace(self) -> BRepFace:
        """
        Property that returns the face that caps the start of the loft and is coincident
        with the first section. In the case where the loft isn't capped and there isn't
        a start face, this property will return null.
        """
        return BRepFace()
    @property
    def endFace(self) -> BRepFace:
        """
        Property that returns the face that caps the end of the loft and is coincident
        with the last section. In the case where the loft isn't capped and there isn't an end face,
        this property will return null.
        """
        return BRepFace()
    @property
    def sideFaces(self) -> BRepFaces:
        """
        Property that returns all of the side faces (i.e. those running through the sections)
        of the feature.
        """
        return BRepFaces()
    @property
    def operation(self) -> FeatureOperations:
        """
        Gets and sets the type of operation performed by the extrusion.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return FeatureOperations()
    @operation.setter
    def operation(self, value: FeatureOperations):
        """
        Gets and sets the type of operation performed by the extrusion.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def isSolid(self) -> bool:
        """
        Indicates if this feature was initially created as a solid or a surface.
        """
        return bool()
    @property
    def nativeObject(self) -> LoftFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return LoftFeature()
    @property
    def participantBodies(self) -> list[BRepBody]:
        """
        Gets and sets the list of bodies that will participate in the feature when the operation is a cut or intersection.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return [BRepBody()]
    @participantBodies.setter
    def participantBodies(self, value: list[BRepBody]):
        """
        Gets and sets the list of bodies that will participate in the feature when the operation is a cut or intersection.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def isClosed(self) -> bool:
        """
        Specifies if the loft closes back on itself. In other words, the first section is also
        used as the last section.
        """
        return bool()
    @isClosed.setter
    def isClosed(self, value: bool):
        """
        Specifies if the loft closes back on itself. In other words, the first section is also
        used as the last section.
        """
        pass
    @property
    def isTangentEdgesMerged(self) -> bool:
        """
        Specifies if the loft will keep or merge tangent edges. These are edges between tangent
        faces in the resulting loft surface. If true, the faces will be merged so the connecting
        edge no longer exists
        """
        return bool()
    @isTangentEdgesMerged.setter
    def isTangentEdgesMerged(self, value: bool):
        """
        Specifies if the loft will keep or merge tangent edges. These are edges between tangent
        faces in the resulting loft surface. If true, the faces will be merged so the connecting
        edge no longer exists
        """
        pass
    @property
    def startLoftEdgeAlignment(self) -> LoftEdgeAlignments:
        """
        Specifies the start edge alignment option for the loft feature. The default is Free Edges.
        """
        return LoftEdgeAlignments()
    @startLoftEdgeAlignment.setter
    def startLoftEdgeAlignment(self, value: LoftEdgeAlignments):
        """
        Specifies the start edge alignment option for the loft feature. The default is Free Edges.
        """
        pass
    @property
    def endLoftEdgeAlignment(self) -> LoftEdgeAlignments:
        """
        Specifies the end edge alignment option for the loft feature. The default is Free Edges.
        """
        return LoftEdgeAlignments()
    @endLoftEdgeAlignment.setter
    def endLoftEdgeAlignment(self, value: LoftEdgeAlignments):
        """
        Specifies the end edge alignment option for the loft feature. The default is Free Edges.
        """
        pass

class LoftFreeEndCondition(LoftEndCondition):
    """
    Represents a "Free" loft end condition.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> LoftFreeEndCondition:
        return LoftFreeEndCondition()

class LoftPointSharpEndCondition(LoftEndCondition):
    """
    Represents a "Point Sharp" loft end condition.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> LoftPointSharpEndCondition:
        return LoftPointSharpEndCondition()

class LoftPointTangentEndCondition(LoftEndCondition):
    """
    Represents a "Point Tangent" loft end condition.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> LoftPointTangentEndCondition:
        return LoftPointTangentEndCondition()
    @property
    def weight(self) -> core.Base:
        """
        Gets the valueInput or Parameter that defines the weight of the loft.
        If this object was obtained from a LoftFeatureInput object then this will return a
        valueInput object with the initial value provided. If this object was obtained from
        an exiting LoftFeature then it returns a Parameter. In the case of a parameter, to change the weight,
        edit the value of the associated parameter.
        """
        return core.Base()

class LoftSmoothEndCondition(LoftEndCondition):
    """
    Represents a "Smooth" loft end condition.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> LoftSmoothEndCondition:
        return LoftSmoothEndCondition()
    @property
    def weight(self) -> core.Base:
        """
        Gets the valueInput or Parameter that defines the weight of the loft.
        If this object was obtained from a LoftFeatureInput object then this will return a
        valueInput object with the initial value provided. If this object was obtained from
        an exiting LoftFeature then it returns a Parameter. In the case of a parameter, to change the weight,
        edit the value of the associated parameter.
        """
        return core.Base()

class LoftTangentEndCondition(LoftEndCondition):
    """
    Represents a "Tangent" loft end condition.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> LoftTangentEndCondition:
        return LoftTangentEndCondition()
    @property
    def weight(self) -> core.Base:
        """
        Gets the valueInput or Parameter that defines the weight of the loft.
        If this object was obtained from a LoftFeatureInput object then this will return a
        valueInput object with the initial value provided. If this object was obtained from
        an exiting LoftFeature then it returns a Parameter. In the case of a parameter, to change the weight,
        edit the value of the associated parameter.
        """
        return core.Base()

class MeshConvertFeature(Feature):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Object that represents an existing mesh convert feature in a design.
    To change the properties of this feature, you need to position the timeline marker to immediately before this feature.
    This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshConvertFeature:
        return MeshConvertFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> MeshConvertFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return MeshConvertFeature()
    @property
    def inputBodies(self) -> list[MeshBody]:
        """
        Gets and sets the input meshes.
        """
        return [MeshBody()]
    @inputBodies.setter
    def inputBodies(self, value: list[MeshBody]):
        """
        Gets and sets the input meshes.
        """
        pass
    @property
    def meshConvertMethodType(self) -> MeshConvertMethodTypes:
        """
        Gets and sets the convert type of mesh convert.
        """
        return MeshConvertMethodTypes()
    @meshConvertMethodType.setter
    def meshConvertMethodType(self, value: MeshConvertMethodTypes):
        """
        Gets and sets the convert type of mesh convert.
        """
        pass
    @property
    def meshConvertResolutionType(self) -> MeshConvertResolutionTypes:
        """
        Gets and sets the resolution method of mesh convert.
        Only valid if meshConvertMethodType is OrganicMeshConvertMethodType.
        """
        return MeshConvertResolutionTypes()
    @meshConvertResolutionType.setter
    def meshConvertResolutionType(self, value: MeshConvertResolutionTypes):
        """
        Gets and sets the resolution method of mesh convert.
        Only valid if meshConvertMethodType is OrganicMeshConvertMethodType.
        """
        pass
    @property
    def meshConvertAccuracyType(self) -> MeshConvertAccuracyTypes:
        """
        Gets and sets the accuracy of organic mesh convert.
        Only valid if meshConvertResolutionType is ByAccuracyMeshConvertResolutionType.
        """
        return MeshConvertAccuracyTypes()
    @meshConvertAccuracyType.setter
    def meshConvertAccuracyType(self, value: MeshConvertAccuracyTypes):
        """
        Gets and sets the accuracy of organic mesh convert.
        Only valid if meshConvertResolutionType is ByAccuracyMeshConvertResolutionType.
        """
        pass
    @property
    def numberOfFaces(self) -> ModelParameter:
        """
        Specify the number of faces to generate for the converted body.
        Only valid if meshConvertResolutionTypes is ByFacetNumberMeshConvertResolutionType.
        """
        return ModelParameter()
    @property
    def isPreprocessHoles(self) -> bool:
        """
        Smooths the boundaries of open holes in the mesh body. Improves the chance of successful conversion by
        refining the shape of holes that will remain open. Only valid if meshConvertMethodType is OrganicMeshConvertMethodType.
        """
        return bool()
    @isPreprocessHoles.setter
    def isPreprocessHoles(self, value: bool):
        """
        Smooths the boundaries of open holes in the mesh body. Improves the chance of successful conversion by
        refining the shape of holes that will remain open. Only valid if meshConvertMethodType is OrganicMeshConvertMethodType.
        """
        pass
    @property
    def nativeObject(self) -> MeshConvertFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return MeshConvertFeature()

class MeshFeature(Feature):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Base class object representing all mesh features. Mesh features works on MeshBody objects and provide all functionality of the base
    feature except the functions bodies and faces, which will always return null.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshFeature:
        return MeshFeature()

class MidPointConstraint(GeometricConstraint):
    """
    A midpoint constraint in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MidPointConstraint:
        return MidPointConstraint()
    def createForAssemblyContext(self, occurrence: Occurrence) -> MidPointConstraint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return MidPointConstraint()
    @property
    def point(self) -> SketchPoint:
        """
        Returns the sketch point being constrained.
        """
        return SketchPoint()
    @property
    def midPointCurve(self) -> SketchCurve:
        """
        Returns the curve defining the midpoint.
        """
        return SketchCurve()
    @property
    def nativeObject(self) -> MidPointConstraint:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return MidPointConstraint()

class MinimumRadiusAnalysis(Analysis):
    """
    Represents any existing Minimum Radius Analysis that exist in the design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MinimumRadiusAnalysis:
        return MinimumRadiusAnalysis()

class MirrorFeature(Feature):
    """
    Object that represents an existing mirror feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MirrorFeature:
        return MirrorFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> MirrorFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return MirrorFeature()
    @property
    def inputEntities(self) -> core.ObjectCollection:
        """
        Gets and sets the entities that are mirrored. It can contain faces, features, bodies, or components.
        The input must all be of a single type. For example, you can't provide a body and a component but
        the collection must be either all bodies or all components.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()
    @inputEntities.setter
    def inputEntities(self, value: core.ObjectCollection):
        """
        Gets and sets the entities that are mirrored. It can contain faces, features, bodies, or components.
        The input must all be of a single type. For example, you can't provide a body and a component but
        the collection must be either all bodies or all components.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def mirrorPlane(self) -> core.Base:
        """
        Gets and sets the mirror plane. This can be either a planar face or construction plane.
        This works only for parametric features.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @mirrorPlane.setter
    def mirrorPlane(self, value: core.Base):
        """
        Gets and sets the mirror plane. This can be either a planar face or construction plane.
        This works only for parametric features.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def patternElements(self) -> PatternElements:
        """
        Gets the PatternElements collection that contains the elements created by this pattern.
        """
        return PatternElements()
    @property
    def resultFeatures(self) -> core.ObjectCollection:
        """
        Get the features that were created for this mirror.
        Returns null in the case where the feature is not parametric.
        """
        return core.ObjectCollection()
    @property
    def nativeObject(self) -> MirrorFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return MirrorFeature()
    @property
    def patternComputeOption(self) -> PatternComputeOptions:
        """
        Gets and sets the compute option for this mirror feature.
        This property only applies when mirroring features and is ignored in the direct modeling environment.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return PatternComputeOptions()
    @patternComputeOption.setter
    def patternComputeOption(self, value: PatternComputeOptions):
        """
        Gets and sets the compute option for this mirror feature.
        This property only applies when mirroring features and is ignored in the direct modeling environment.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def isCombine(self) -> bool:
        """
        Gets and sets whether combine is set when doing the Mirror.
        When true, the mirrored geometry will be Boolean unioned with the original solid or surface body(s)
        when they connect within the stitch tolerance defined with the stitchTolerance property. If the bodies
        cannot be unioned or stitched the result will be separate bodies.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isCombine.setter
    def isCombine(self, value: bool):
        """
        Gets and sets whether combine is set when doing the Mirror.
        When true, the mirrored geometry will be Boolean unioned with the original solid or surface body(s)
        when they connect within the stitch tolerance defined with the stitchTolerance property. If the bodies
        cannot be unioned or stitched the result will be separate bodies.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def stitchTolerance(self) -> ModelParameter:
        """
        Returns the parameter controlling the Stitch tolerance to use when stitching mirrored
        surface bodies with the original bodies. You can edit the tolerance by
        editing the value of the parameter object.
        """
        return ModelParameter()

class ModelParameter(Parameter):
    """
    Represents a Model Parameter.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ModelParameter:
        return ModelParameter()
    def deleteMe(self) -> bool:
        """
        Deletes this ModelParameter. As a general rule, model parameters cannot be deleted
        because features depend on them. However, there are uncommon workflows where a
        parameter no longer has any dependents and is not automatically deleted. You can
        use the isDeletable property to see if the parameter is in this state and can
        successfully be deleted.
        Returns true if the delete was successful.
        """
        return bool()
    @property
    def modelParameters(self) -> ModelParameters:
        """
        Returns the Collection containing the ModelParameter.
        """
        return ModelParameters()
    @property
    def component(self) -> Component:
        """
        Returns the Component containing the ModelParameter.
        """
        return Component()
    @property
    def role(self) -> str:
        """
        This property identifies what the parameter is used for. For an extrude, it
        could be "Depth", for a work plane it could be "Offset".
        """
        return str()
    @property
    def createdBy(self) -> core.Base:
        """
        Returns the object that created this parameter. For example,
        a feature, a sketch dimension, or a construction plane.
        """
        return core.Base()

class MoveFeature(Feature):
    """
    Object that represents an existing move feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MoveFeature:
        return MoveFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> MoveFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return MoveFeature()
    def redefineAsFreeMove(self, transform: core.Matrix3D) -> bool:
        """
        Redefines the move feature to be described by an arbitrary translation and orientation
        which is defined using a transformation matrix.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        transform : The transformation matrix that defines the transform to apply. The matrix must
        be an orthogonal matrix; that is the axes are perpendicular to each other
        and there isn't any scaling or mirroring defined.
        Returns true if the re-definition is successful.
        """
        return bool()
    def redefineAsTranslateXYZ(self, xDistance: core.ValueInput, yDistance: core.ValueInput, zDistance: core.ValueInput, isDesignSpace: bool) -> bool:
        """
        Redefines the move feature to be described by a translation in X, Y, and Z.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        xDistance : A ValueInput object that defines the offset in the X direction. If the ValueInput
        is created using a real value, the distance is in centimeters. If it's defined using
        a string, the default document units will be used.
        yDistance : A ValueInput object that defines the offset in the Y direction. If the ValueInput
        is created using a real value, the distance is in centimeters. If it's defined using
        a string, the default document units will be used.
        zDistance : A ValueInput object that defines the offset in the Z direction. If the ValueInput
        is created using a real value, the distance is in centimeters. If it's defined using
        a string, the default document units will be used.
        isDesignSpace : Defines if the translation is defined with respect to the design or component space.
        Design space is the same as the root component space.
        Returns true if the re-definition is successful.
        """
        return bool()
    def redefineAsTranslateAlongEntity(self, linearEntity: core.Base, distance: core.ValueInput) -> bool:
        """
        Redefines the move feature to be a translation along a specified entity.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        linearEntity : A linear entity that defines the direction of the move. This can be a linear BRepEdge,
        ConstructionAxis, or a SketchLine. The entity defines the direction, not the distance.
        The natural direction of the entity defines the translation direction.
        distance : A ValueInput object that defines the offset distance. If the ValueInput
        is created using a real value, the distance is in centimeters. If it's defined using
        a string, the default document units will be used.
        Returns true if the redefinition is successful.
        """
        return bool()
    def redefineAsRotate(self, axisEntity: core.Base, angle: core.ValueInput) -> bool:
        """
        Redefines the move feature to be described by an axis and rotation angle.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        axisEntity : A linear entity that defines the axis of rotation. This can be a linear BRepEdge,
        ConstructionAxis, or a SketchLine. The natural direction of the entity defines a
        right-hand rule for the rotation direction.
        angle : A ValueInput object that defines the rotation angle. If the ValueInput
        is created using a real value, the angle is in radians. If it's defined using
        a string, the default document units will be used.
        Returns true if the redefinition is successful.
        """
        return bool()
    def redefineAsPointToPoint(self, originPoint: core.Base, targetPoint: core.Base) -> bool:
        """
        Redefines the move feature to be a translation from one point to another.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        originPoint : The first point that defines the start position of the move.
        targetPoint : The second point that defines the direction and distance of the move.
        Returns true if the redefinition is successful.
        """
        return bool()
    def redefineAsPointToPosition(self, point: core.Base, xDistance: core.ValueInput, yDistance: core.ValueInput, zDistance: core.ValueInput, isDesignSpace: bool) -> bool:
        """
        Redefines a move feature to be described by a point and an offset. The distances
        define offsets in the X, Y, and Z directions in either design or component space. To
        not move the input entities at all the offset distances should be set to the current
        location of the point in either design or component space. Adding or subtracting to
        those values will then move the entities that distance. It's best to experiment with
        the command interactively to understand the behavior.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        point : An entity that defines a point in space. This can be a sketch point, a construction point,
        or a BRepVertex.
        xDistance : A ValueInput object that defines the offset in the X direction. If the ValueInput
        is created using a real value, the distance is in centimeters. If it's defined using
        a string, the default document units will be used.
        yDistance : A ValueInput object that defines the offset in the Y direction. If the ValueInput
        is created using a real value, the distance is in centimeters. If it's defined using
        a string, the default document units will be used.
        zDistance : A ValueInput object that defines the offset in the Z direction. If the ValueInput
        is created using a real value, the distance is in centimeters. If it's defined using
        a string, the default document units will be used.
        isDesignSpace : Defines if the translation is defined with respect to the design or component space.
        Design space is the same as the root component space.
        Returns true if the redefinition is successful.
        """
        return bool()
    @property
    def inputEntities(self) -> core.ObjectCollection:
        """
        Gets and sets the entities to move. This is done by using an ObjectCollection
        containing the objects to move. For a parametric model, the collection can contain
        BRepBody or BRepFace objects but not a combination of both.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()
    @inputEntities.setter
    def inputEntities(self, value: core.ObjectCollection):
        """
        Gets and sets the entities to move. This is done by using an ObjectCollection
        containing the objects to move. For a parametric model, the collection can contain
        BRepBody or BRepFace objects but not a combination of both.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def nativeObject(self) -> MoveFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return MoveFeature()
    @property
    def definition(self) -> MoveFeatureDefinition:
        """
        Returns the MoveFeatureDefinition object which provides access to the information
        that specifies how this MoveFeature is defined.
        """
        return MoveFeatureDefinition()

class MoveFeatureFreeMoveDefinition(MoveFeatureDefinition):
    """
    The MoveFeatureFreeMoveDefinition object defines a move feature described by a transformation matrix.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MoveFeatureFreeMoveDefinition:
        return MoveFeatureFreeMoveDefinition()
    @property
    def transform(self) -> core.Matrix3D:
        """
        Gets and sets the transform that's applied to the face or body.
        The matrix must be an orthogonal matrix; that is the axes are
        perpendicular to each other and there isn't any scaling or mirroring defined.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Matrix3D()
    @transform.setter
    def transform(self, value: core.Matrix3D):
        """
        Gets and sets the transform that's applied to the face or body.
        The matrix must be an orthogonal matrix; that is the axes are
        perpendicular to each other and there isn't any scaling or mirroring defined.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass

class MoveFeaturePointToPointDefinition(MoveFeatureDefinition):
    """
    The MoveFeaturePointToPointDefinition object defines a move feature described by the
    translation from one point to another.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MoveFeaturePointToPointDefinition:
        return MoveFeaturePointToPointDefinition()
    @property
    def originPoint(self) -> core.Base:
        """
        Gets and sets the first point that defines the start position of the move.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @originPoint.setter
    def originPoint(self, value: core.Base):
        """
        Gets and sets the first point that defines the start position of the move.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def targetPoint(self) -> core.Base:
        """
        Gets and sets the second point that defines the direction and distance of the move.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @targetPoint.setter
    def targetPoint(self, value: core.Base):
        """
        Gets and sets the second point that defines the direction and distance of the move.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass

class MoveFeaturePointToPositionDefinition(MoveFeatureDefinition):
    """
    The MoveFeaturePointToPositionDefinition object defines a move feature described
    by a point and an offset. The distances define offsets in the X, Y, and Z directions
    in either design or component space. To not move the input entities at all the offset
    distances should be set to the current location of the point in either design or component
    space. Adding or subtracting to those values will then move the entities that distance.
    It's best to experiment with the command interactively to understand the behavior.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MoveFeaturePointToPositionDefinition:
        return MoveFeaturePointToPositionDefinition()
    @property
    def point(self) -> core.Base:
        """
        Gets and sets the entity that defines a point in space. This can be a sketch point,
        a construction point, or a BRepVertex.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @point.setter
    def point(self, value: core.Base):
        """
        Gets and sets the entity that defines a point in space. This can be a sketch point,
        a construction point, or a BRepVertex.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def xDistance(self) -> ModelParameter:
        """
        Gets the model parameter that controls the offset in the X direction. You can use properties
        """
        return ModelParameter()
    @property
    def yDistance(self) -> ModelParameter:
        """
        Gets the model parameter that controls the offset in the Y direction. You can use properties
        """
        return ModelParameter()
    @property
    def zDistance(self) -> ModelParameter:
        """
        Gets the model parameter that controls the offset in the Z direction. You can use properties
        """
        return ModelParameter()
    @property
    def isDesignSpace(self) -> bool:
        """
        Gets and sets if the translation is defined with respect to the design or component space.
        Design space is the same as the root component space.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isDesignSpace.setter
    def isDesignSpace(self, value: bool):
        """
        Gets and sets if the translation is defined with respect to the design or component space.
        Design space is the same as the root component space.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass

class MoveFeatureRotateDefinition(MoveFeatureDefinition):
    """
    The MoveFeatureRotateDefinition object defines a move feature described by a rotation
    around a specified entity.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MoveFeatureRotateDefinition:
        return MoveFeatureRotateDefinition()
    @property
    def axisEntity(self) -> core.Base:
        """
        Gets and sets the linear entity that defines the axis of rotation. This can be a linear BRepEdge,
        ConstructionAxis, or a SketchLine. The natural direction of the entity defines a
        right-hand rule for the rotation direction.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @axisEntity.setter
    def axisEntity(self, value: core.Base):
        """
        Gets and sets the linear entity that defines the axis of rotation. This can be a linear BRepEdge,
        ConstructionAxis, or a SketchLine. The natural direction of the entity defines a
        right-hand rule for the rotation direction.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def angle(self) -> ModelParameter:
        """
        Gets the model parameter that controls the rotation angle. You can use properties
        on the returned ModelParameter object to edit the offset distance.
        """
        return ModelParameter()

class MoveFeatureTranslateAlongEntityDefinition(MoveFeatureDefinition):
    """
    The MoveFeatureTranslateAlongEntityDefinition object defines a move feature described by a
    translation in the direction defined by a specified entity.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MoveFeatureTranslateAlongEntityDefinition:
        return MoveFeatureTranslateAlongEntityDefinition()
    @property
    def linearEntity(self) -> core.Base:
        """
        Gets and sets the linear entity that defines the direction of the move. This can be a linear BRepEdge,
        ConstructionAxis, or a SketchLine. The entity defines the direction, not the distance.
        The natural direction of the entity defines the translation direction.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @linearEntity.setter
    def linearEntity(self, value: core.Base):
        """
        Gets and sets the linear entity that defines the direction of the move. This can be a linear BRepEdge,
        ConstructionAxis, or a SketchLine. The entity defines the direction, not the distance.
        The natural direction of the entity defines the translation direction.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def distance(self) -> ModelParameter:
        """
        Gets the model parameter that controls the offset distance. You can use properties
        on the returned ModelParameter object to edit the offset distance.
        """
        return ModelParameter()

class MoveFeatureTranslateXYZDefinition(MoveFeatureDefinition):
    """
    The MoveFeatureTranslateXYZDefinition object defines a move feature described by
    offsets in the X, Y, and Z directions.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MoveFeatureTranslateXYZDefinition:
        return MoveFeatureTranslateXYZDefinition()
    @property
    def xDistance(self) -> ModelParameter:
        """
        Gets the model parameter that controls the X distance of the translation. You
        can use properties on the returned ModelParameter object to edit the offset distance.
        """
        return ModelParameter()
    @property
    def yDistance(self) -> ModelParameter:
        """
        Gets the model parameter that controls the Y distance of the translation. You
        can use properties on the returned ModelParameter object to edit the offset distance.
        """
        return ModelParameter()
    @property
    def zDistance(self) -> ModelParameter:
        """
        Gets the model parameter that controls the Z distance of the translation. You
        can use properties on the returned ModelParameter object to edit the offset distance.
        """
        return ModelParameter()
    @property
    def isDesignSpace(self) -> bool:
        """
        Gets and sets if the translation is defined with respect to the design or component space.
        Design space is the same as the root component space.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isDesignSpace.setter
    def isDesignSpace(self, value: bool):
        """
        Gets and sets if the translation is defined with respect to the design or component space.
        Design space is the same as the root component space.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass

class MultiLineTextDefinition(SketchTextDefinition):
    """
    Defines the information for multi-line text.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MultiLineTextDefinition:
        return MultiLineTextDefinition()
    def rotate(self, angle: float, keyPoint: TextBoxKeyPoints = TextBoxKeyPoints.MiddleTextBoxKeyPoint) -> bool:
        """
        Rotates the text box.
        angle : The angle to rotate the text, specified in radians.
        keyPoint : The key point the rotation is defined around. This is optional and defaults the center of the text box.
        Returns true if successful.
        """
        return bool()
    @property
    def rectangleLines(self) -> list[SketchLine]:
        """
        Returns the four sketch lines that define the boundary of the sketch text. By adding constraints to these lines
        you can associatively control the size, position and angle of the sketch text. If the MultiLineTextDefinition
        object is obtained from a SketchTextInput object, this property will return null because the text and its
        associated lines have not been created yet.
        """
        return [SketchLine()]
    @property
    def horizontalAlignment(self) -> core.HorizontalAlignments:
        """
        Gets and sets the horizontal alignment of the text with respect to the text rectangle.
        """
        return core.HorizontalAlignments()
    @horizontalAlignment.setter
    def horizontalAlignment(self, value: core.HorizontalAlignments):
        """
        Gets and sets the horizontal alignment of the text with respect to the text rectangle.
        """
        pass
    @property
    def verticalAlignment(self) -> core.VerticalAlignments:
        """
        Gets and sets the vertical alignment of the text with respect to the text rectangle.
        """
        return core.VerticalAlignments()
    @verticalAlignment.setter
    def verticalAlignment(self, value: core.VerticalAlignments):
        """
        Gets and sets the vertical alignment of the text with respect to the text rectangle.
        """
        pass
    @property
    def characterSpacing(self) -> float:
        """
        Gets and sets the spacing between the characters. This is an additional spacing to apply
        that is defined as a percentage of the default spacing. A spacing of 0 indicates no
        additional spacing. A spacing of 50 indicates to use the default plus 50% of the default.
        """
        return float()
    @characterSpacing.setter
    def characterSpacing(self, value: float):
        """
        Gets and sets the spacing between the characters. This is an additional spacing to apply
        that is defined as a percentage of the default spacing. A spacing of 0 indicates no
        additional spacing. A spacing of 50 indicates to use the default plus 50% of the default.
        """
        pass

class OBJExportOptions(ExportOptions):
    """
    Defines that an OBJ export is to be done and specifies the various options.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> OBJExportOptions:
        return OBJExportOptions()
    @property
    def isOneFilePerBody(self) -> bool:
        """
        If the input is an Occurrence or the root Component, this specifies if a single file should be created containing
        all of the bodies within that occurrence or component or if multiple files should be created; one for each body.
        If multiple files are created, the body name is appended to the filename. The default is false.
        """
        return bool()
    @isOneFilePerBody.setter
    def isOneFilePerBody(self, value: bool):
        """
        If the input is an Occurrence or the root Component, this specifies if a single file should be created containing
        all of the bodies within that occurrence or component or if multiple files should be created; one for each body.
        If multiple files are created, the body name is appended to the filename. The default is false.
        """
        pass
    @property
    def meshRefinement(self) -> MeshRefinementSettings:
        """
        Gets and sets the current simple mesh refinement settings. Setting this property
        will reset the surfaceDeviation, normalDeviation, maximumEdgeLength, and aspectRatio
        to values that correspond to the specified mesh refinement. The default is MeshRefinementMedium.
        """
        return MeshRefinementSettings()
    @meshRefinement.setter
    def meshRefinement(self, value: MeshRefinementSettings):
        """
        Gets and sets the current simple mesh refinement settings. Setting this property
        will reset the surfaceDeviation, normalDeviation, maximumEdgeLength, and aspectRatio
        to values that correspond to the specified mesh refinement. The default is MeshRefinementMedium.
        """
        pass
    @property
    def surfaceDeviation(self) -> float:
        """
        Gets and sets the current surface deviation, or the distance the mesh can deviate
        from the actual surface. This is defined in centimeter. Setting this property
        will automatically set the meshRefinement to MeshRefinementCustom. The default is the value
        associated with medium mesh refinement.
        """
        return float()
    @surfaceDeviation.setter
    def surfaceDeviation(self, value: float):
        """
        Gets and sets the current surface deviation, or the distance the mesh can deviate
        from the actual surface. This is defined in centimeter. Setting this property
        will automatically set the meshRefinement to MeshRefinementCustom. The default is the value
        associated with medium mesh refinement.
        """
        pass
    @property
    def normalDeviation(self) -> float:
        """
        Gets and sets the current normal deviation, or the angle the mesh normals at the vertices can deviate
        from the actual surface normals. This is defined in radians. Setting this property
        will automatically set the meshRefinement to MeshRefinementCustom. The default is the value
        associated with medium mesh refinement.
        """
        return float()
    @normalDeviation.setter
    def normalDeviation(self, value: float):
        """
        Gets and sets the current normal deviation, or the angle the mesh normals at the vertices can deviate
        from the actual surface normals. This is defined in radians. Setting this property
        will automatically set the meshRefinement to MeshRefinementCustom. The default is the value
        associated with medium mesh refinement.
        """
        pass
    @property
    def maximumEdgeLength(self) -> float:
        """
        Gets and sets the maximum length of any mesh edge. This is defined in centimeter. Setting this property
        will automatically set the meshRefinement to MeshRefinementCustom. The default is the value
        associated with medium mesh refinement.
        """
        return float()
    @maximumEdgeLength.setter
    def maximumEdgeLength(self, value: float):
        """
        Gets and sets the maximum length of any mesh edge. This is defined in centimeter. Setting this property
        will automatically set the meshRefinement to MeshRefinementCustom. The default is the value
        associated with medium mesh refinement.
        """
        pass
    @property
    def aspectRatio(self) -> float:
        """
        Gets and sets the minimum aspect ratio for that triangles that are generated for the mesh. Setting this property
        will automatically set the meshRefinement to MeshRefinementCustom. The default is the value
        associated with medium mesh refinement.
        """
        return float()
    @aspectRatio.setter
    def aspectRatio(self, value: float):
        """
        Gets and sets the minimum aspect ratio for that triangles that are generated for the mesh. Setting this property
        will automatically set the meshRefinement to MeshRefinementCustom. The default is the value
        associated with medium mesh refinement.
        """
        pass
    @property
    def availablePrintUtilities(self) -> list[str]:
        """
        Returns a list of the known available print utilities. These strings can be used to set the PrintUtility
        property to specify which print utility to open the OBJ file in.
        """
        return [str()]
    @property
    def printUtility(self) -> str:
        """
        Specifies which print utility to use when opening the OBJ file if the sendToPrintUtility property is true.
        The value of this property can be one of the strings returned by the availalbePrintUtilities property, which
        will specify one of the known print utilities. You can also specify a custom print utility by specifying
        the full path to the print utility executable. The default value of this property is the last setting specified
        in the user-interface.
        """
        return str()
    @printUtility.setter
    def printUtility(self, value: str):
        """
        Specifies which print utility to use when opening the OBJ file if the sendToPrintUtility property is true.
        The value of this property can be one of the strings returned by the availalbePrintUtilities property, which
        will specify one of the known print utilities. You can also specify a custom print utility by specifying
        the full path to the print utility executable. The default value of this property is the last setting specified
        in the user-interface.
        """
        pass
    @property
    def sendToPrintUtility(self) -> bool:
        """
        Gets and sets whether the created OBJ file will be sent to the print utility specified by the printUtility property. If this
        is false a filename must be defined. The default is false.
        """
        return bool()
    @sendToPrintUtility.setter
    def sendToPrintUtility(self, value: bool):
        """
        Gets and sets whether the created OBJ file will be sent to the print utility specified by the printUtility property. If this
        is false a filename must be defined. The default is false.
        """
        pass
    @property
    def unitType(self) -> DistanceUnits:
        """
        Gets and sets the units to use for the created OBJ file. The default is Centimeters.
        """
        return DistanceUnits()
    @unitType.setter
    def unitType(self, value: DistanceUnits):
        """
        Gets and sets the units to use for the created OBJ file. The default is Centimeters.
        """
        pass

class OffsetConstraint(GeometricConstraint):
    """
    An offset constraint in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> OffsetConstraint:
        return OffsetConstraint()
    def createForAssemblyContext(self, occurrence: Occurrence) -> OffsetConstraint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return OffsetConstraint()
    @property
    def parentCurves(self) -> list[SketchCurve]:
        """
        Returns an array of sketch curves that are the set of parent curves.
        Nothing should be assumed about the order in how the curves are returned.
        """
        return [SketchCurve()]
    @property
    def childCurves(self) -> list[SketchCurve]:
        """
        Returns an array of sketch curves that are the set of child curves resulting from the offset.
        Nothing should be assumed about the order in how the curves are returned.
        """
        return [SketchCurve()]
    @property
    def distance(self) -> float:
        """
        The current distance of the offset in centimeters. To change the offset you need to
        modify the value of the parameter associated with the dimension, which you can get
        using the dimension property.
        """
        return float()
    @property
    def dimension(self) -> SketchDimension:
        """
        Returns the dimension controlling the offset distance. This can return null in the
        case where the dimension has been deleted. To change the offset distance you can use
        the parameter property of the returned dimension to get the parameter that controls the value and
        use properties on the parameter to change the value. This can return either a SketchOffsetCurvesDimension
        or a SketchOffsetDimension. A SketchOffsetCurvesDimension is created automatically when curves are
        offset but if it is deleted the offset can also be controlled by a SketchOffsetDimension.
        """
        return SketchDimension()
    @property
    def nativeObject(self) -> OffsetConstraint:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return OffsetConstraint()
    @property
    def isTopologyMatched(self) -> bool:
        """
        Gets the setting that controls if the offset curves match the topology of the original curves.
        """
        return bool()

class OffsetFacesFeature(Feature):
    """
    Object that represents an existing Offset Faces feature in a design.
    Offset Faces features are created in the UI using the "Offset Face" or "Press Pull" command.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> OffsetFacesFeature:
        return OffsetFacesFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> OffsetFacesFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return OffsetFacesFeature()
    @property
    def distance(self) -> ModelParameter:
        """
        Returns the parameter that controls the offset distance. You can modify
        the distance by using the properties of the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def inputFaces(self) -> list[BRepFace]:
        """
        Returns an array of BRepFace objects that were offset. The timeline must be rolled
        back to immediately before this feature when getting or setting this property
        so the faces are available.
        """
        return [BRepFace()]
    @inputFaces.setter
    def inputFaces(self, value: list[BRepFace]):
        """
        Returns an array of BRepFace objects that were offset. The timeline must be rolled
        back to immediately before this feature when getting or setting this property
        so the faces are available.
        """
        pass
    @property
    def nativeObject(self) -> OffsetFacesFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return OffsetFacesFeature()

class OffsetFeature(Feature):
    """
    Object that represents an existing offset feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> OffsetFeature:
        return OffsetFeature()
    def setInputEntities(self, entities: core.ObjectCollection, isChainSelection: bool = True) -> bool:
        """
        Sets the faces and sheet bodies to offset.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        entities : An ObjectCollection containing the BRepFace objects to offset. Additional faces may be
        automatically used depending on the value of the isChainSelection argument.
        Input faces need not be from the same body.
        isChainSelection : A boolean value for setting whether or not faces that are tangentially connected to
        the input faces (if any) will also be offset. The default value is true.
        Returns true if successful
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> OffsetFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this is not the NativeObject.
        """
        return OffsetFeature()
    @property
    def entities(self) -> core.ObjectCollection:
        """
        Gets and sets the faces to be offset.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()
    @entities.setter
    def entities(self, value: core.ObjectCollection):
        """
        Gets and sets the faces to be offset.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def isChainSelection(self) -> bool:
        """
        Get if the faces that are tangentially connected to the input faces (if any) are also offset.
        """
        return bool()
    @property
    def distance(self) -> ModelParameter:
        """
        Returns the parameter controlling the offset distance. You can edit the distance
        by editing the value of the parameter object. A positive value specifies that the offset
        is in the same direction as the normal direction of the face.
        """
        return ModelParameter()
    @property
    def operation(self) -> FeatureOperations:
        """
        Gets the feature operation that was performed when the feature was created,
        (either 'NewBodyFeatureOperation' or 'NewComponentFeatureOperation'.
        """
        return FeatureOperations()
    @property
    def nativeObject(self) -> OffsetFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return OffsetFeature()

class OffsetStartDefinition(ExtentDefinition):
    """
    A definition object that is used to define a feature whose start plane is defined as plane that is
    offset from the sketch plane of the profile.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> OffsetStartDefinition:
        return OffsetStartDefinition()
    @staticmethod
    def create(offset: core.ValueInput) -> OffsetStartDefinition:
        """
        Statically creates a new OffsetStartDefinition object. This is used as input when
        create a new feature and defining the starting condition.
        offset : An input ValueInput objects that defines the offset distance. The offset can be positive or
        negative. A positive value indicates an offset in the same direction as the z axis of the
        profile plane.
        Returns the newly created OffsetStartDefinition object or null in the case of failure.
        """
        return OffsetStartDefinition()
    @property
    def offset(self) -> core.Base:
        """
        Gets the currently defined offset value. If the ProfilePlaneWithOffsetDefinition object was
        created statically and is not associated with a feature, this will return a ValueInput object.
        if the ProfilePlaneWithOffsetDefinition is associated with an existing feature, this will return
        the parameter that was created when the feature was created. To edit the offset, use properties
        on the parameter to change the value of the parameter.
        """
        return core.Base()
    @property
    def profilePlane(self) -> core.Plane:
        """
        Returns the geometric definition of the profile plane.
        """
        return core.Plane()

class OnEdgeHolePositionDefinition(HolePositionDefinition):
    """
    Provides positioning information for a hole that is positioned
    on the start, end or center of an edge.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> OnEdgeHolePositionDefinition:
        return OnEdgeHolePositionDefinition()
    @property
    def planarEntity(self) -> core.Base:
        """
        Returns the plane that defines the orientation and start of the hole.
        """
        return core.Base()
    @property
    def edge(self) -> BRepEdge:
        """
        Returns the edge the hole is positioned on.
        """
        return BRepEdge()
    @property
    def position(self) -> HoleEdgePositions:
        """
        Returns the position of the hole on the edge.
        The hole can be at the start, midpoint, or end of the edge.
        """
        return HoleEdgePositions()

class OpenHemFeatureDefinition(HemFeatureDefinition):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The definition for an open hem.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> OpenHemFeatureDefinition:
        return OpenHemFeatureDefinition()
    @property
    def gap(self) -> ModelParameter:
        """
        Gets the gap for an open hem.
        """
        return ModelParameter()
    @property
    def length(self) -> ModelParameter:
        """
        Gets the length for an open hem.
        """
        return ModelParameter()

class ParallelConstraint(GeometricConstraint):
    """
    A parallel constraint in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ParallelConstraint:
        return ParallelConstraint()
    def createForAssemblyContext(self, occurrence: Occurrence) -> ParallelConstraint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return ParallelConstraint()
    @property
    def lineOne(self) -> SketchLine:
        """
        Returns the first line.
        """
        return SketchLine()
    @property
    def lineTwo(self) -> SketchLine:
        """
        Returns the second line.
        """
        return SketchLine()
    @property
    def nativeObject(self) -> ParallelConstraint:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return ParallelConstraint()

class PatchFeature(Feature):
    """
    An object that represents an existing patch feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PatchFeature:
        return PatchFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> PatchFeature:
        """
        Creates or returns a proxy for the native object
        - i.e., a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy.
        Returns the proxy object or null if this is not the NativeObject.
        """
        return PatchFeature()
    def setContinuity(self, continuity: list[int], weight: list[float], isContinuityDirectionFlipped: list[bool]) -> bool:
        """
        Sets the continuity to use for each edge in the boundary. The arrays for the arguments correspond
        to B-Rep edges in the boundary. You can use the getContinuity method to get the list of edges to
        know their order. This order applies to the arrays provided for the arguments.
        continuity : An array whose size of the number of B-Rep edges in the boundary. You can use the getContinuity
        method to get the list of edges, so you know the number and order of the edges. The continuity array defines the
        type of continuity to apply to the edge at the same index. The values are obtained from the SurfaceContinuityTypes
        enum and passed in as an integer.
        weight : An array whose size is the number of B-Rep edges in the boundary. You can use the getContinuity
        method to get the list of edges, so you know the number and order of the edges. The weight array defines the
        weight to apply to the edge at the same index. If the continuity of an edge is ConnectedSurfaceContinuityType,
        the weight value is ignored.
        isContinuityDirectionFlipped : An array whose size is the number of B-Rep edges in the boundary. You can use the getContinuity
        method to get the list of edges, so you know the number and order of the edges. The isContinuityDirectionFlipped
        array defines which of the two faces the edge connects to and is used in computing the continuity direction. If the
        continuity is ConnectedSurfaceContinuityType, or the edge is an open edge and only connected to a single face,
        the value is ignored.
        
        If false, the face associated with the first co-edge returned by the edge is used.
        Returns true if successful.
        """
        return bool()
    def getContinuity(self) -> tuple[bool, list[BRepEdge], list[int], list[float], list[bool]]:
        """
        Gets the continuity used for each edge in the boundary.
        
        To call this method, you need to position the timeline marker immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        edges : Output array containing all of the BRepEdge objects in the boundary.
        continuity : Output array the same size as the edges array that defines the continuity
        to apply to the edge in the same index in the edges array. The values are obtained
        from the SurfaceContinuityTypes enum and passed in as an integers.
        weight : Output array the same size as the edges array that defines the weight applied
        to the edge in the same index in the edges array. If the continuity
        of an edge is ConnectedSurfaceContinuityType, the weight value should be ignored.
        isContinuityDirectionFlipped : Output array the same size as the edges array that defines which of the two faces the
        edge connects to is used in computing the continuity direction. If the continuity is
        ConnectedSurfaceContinuityType or the edge is an open edge and only connected to a
        single face, the value should be ignored.
        
        If false, the face associated with the first co-edge returned by the edge is used.
        Returns true if successful.
        """
        return (bool(), [BRepEdge()], [int()], [float()], [bool()])
    @property
    def boundaryCurve(self) -> core.Base:
        """
        Returns an ObjectCollection that contains all of the sketch curves or B-Rep edges
        that defines the closed outer boundary of the patch feature.
        
        When setting this property, the input can be a sketch profile, a single sketch curve, a single B-Rep edge,
        or an ObjectCollection of sketch curves and B-Rep edges.
        
        If a single open sketch curve or B-Rep edge is input, Fusion will automatically find connected sketch curves
        or B-Rep edges to define a closed loop.
        
        If an ObjectCollection of sketch curves or B-Rep edges is input, they must define a closed shape.
        
        To get or set this property, you need to position the timeline marker immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @boundaryCurve.setter
    def boundaryCurve(self, value: core.Base):
        """
        Returns an ObjectCollection that contains all of the sketch curves or B-Rep edges
        that defines the closed outer boundary of the patch feature.
        
        When setting this property, the input can be a sketch profile, a single sketch curve, a single B-Rep edge,
        or an ObjectCollection of sketch curves and B-Rep edges.
        
        If a single open sketch curve or B-Rep edge is input, Fusion will automatically find connected sketch curves
        or B-Rep edges to define a closed loop.
        
        If an ObjectCollection of sketch curves or B-Rep edges is input, they must define a closed shape.
        
        To get or set this property, you need to position the timeline marker immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def operation(self) -> FeatureOperations:
        """
        Gets the type of operation performed by the patch feature.
        """
        return FeatureOperations()
    @property
    def nativeObject(self) -> PatchFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return PatchFeature()
    @property
    def interiorRailsAndPoints(self) -> core.ObjectCollection:
        """
        Gets and sets any interior curves or points the patch should fit
        through. Valid entities include object collections of connected curves, paths, sketch curves,
        sketch points, B-Rep edges, and construction points.
        
        When getting this property, the returned ObjectCollection can contain individual edges, sketch curves,
        sketch points, construction points, vertices, and ObjectCollection objects that represent a group
        of the curves and points listed above.
        
        Can be set to null to remove any interior rails and points from the patch.
        
        To get or set this property, you need to position the timeline marker immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()
    @interiorRailsAndPoints.setter
    def interiorRailsAndPoints(self, value: core.ObjectCollection):
        """
        Gets and sets any interior curves or points the patch should fit
        through. Valid entities include object collections of connected curves, paths, sketch curves,
        sketch points, B-Rep edges, and construction points.
        
        When getting this property, the returned ObjectCollection can contain individual edges, sketch curves,
        sketch points, construction points, vertices, and ObjectCollection objects that represent a group
        of the curves and points listed above.
        
        Can be set to null to remove any interior rails and points from the patch.
        
        To get or set this property, you need to position the timeline marker immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def isGroupEdges(self) -> bool:
        """
        Gets and sets if the edges in the boundary curve are treated as a group
        , and they all use the same continuity. If this property is True (which is the default),
        the continuity for all edges is controlled by the continuity property. If
        this property is false; the continuity is set for each edge using the
        setContinuity method.
        
        When this property is set to true, the continuity and weight of the first edge
        will be used for all edges. When set to false, each edge will initially have
        the same continuity and weight. This property is typically set to false by calling the
        setContinuity method, which has the side effect of changing this to false.
        
        To get or set this property, you need to position the timeline marker immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isGroupEdges.setter
    def isGroupEdges(self, value: bool):
        """
        Gets and sets if the edges in the boundary curve are treated as a group
        , and they all use the same continuity. If this property is True (which is the default),
        the continuity for all edges is controlled by the continuity property. If
        this property is false; the continuity is set for each edge using the
        setContinuity method.
        
        When this property is set to true, the continuity and weight of the first edge
        will be used for all edges. When set to false, each edge will initially have
        the same continuity and weight. This property is typically set to false by calling the
        setContinuity method, which has the side effect of changing this to false.
        
        To get or set this property, you need to position the timeline marker immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def groupContinuity(self) -> SurfaceContinuityTypes:
        """
        Gets and sets the type of surface continuity to use for all edges when the isGroupEdges property is true.
        The continuity is used to determine how the patch connects to any B-Rep edges in the boundary. It is
        ignored for any sketch curves in the boundary. The property defaults to ConnectedSurfaceContinuityType.
        The value of this property is ignored if the isGroupEdges property is false.
        
        To get or set this property, you need to position the timeline marker immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return SurfaceContinuityTypes()
    @groupContinuity.setter
    def groupContinuity(self, value: SurfaceContinuityTypes):
        """
        Gets and sets the type of surface continuity to use for all edges when the isGroupEdges property is true.
        The continuity is used to determine how the patch connects to any B-Rep edges in the boundary. It is
        ignored for any sketch curves in the boundary. The property defaults to ConnectedSurfaceContinuityType.
        The value of this property is ignored if the isGroupEdges property is false.
        
        To get or set this property, you need to position the timeline marker immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def groupWeight(self) -> float:
        """
        Gets and sets the weight to use for all edges when the isGroupEdges property is true. It is ignored for any sketch curves
        in the boundary. The property defaults to 0.5. The value of this property is ignored if the isGroupEdges property is false.
        
        To get or set this property, you need to position the timeline marker immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return float()
    @groupWeight.setter
    def groupWeight(self, value: float):
        """
        Gets and sets the weight to use for all edges when the isGroupEdges property is true. It is ignored for any sketch curves
        in the boundary. The property defaults to 0.5. The value of this property is ignored if the isGroupEdges property is false.
        
        To get or set this property, you need to position the timeline marker immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def groupIsContinuityDirectionFlipped(self) -> bool:
        """
        Gets and sets the continuity direction for all edges when the isGroupEdges property is true. It is ignored for any sketch curves
        in the boundary. The property defaults to false. The value of this property is ignored if the isGroupEdges property is false.
        
        To get or set this property, you need to position the timeline marker immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @groupIsContinuityDirectionFlipped.setter
    def groupIsContinuityDirectionFlipped(self, value: bool):
        """
        Gets and sets the continuity direction for all edges when the isGroupEdges property is true. It is ignored for any sketch curves
        in the boundary. The property defaults to false. The value of this property is ignored if the isGroupEdges property is false.
        
        To get or set this property, you need to position the timeline marker immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass

class PathPatternFeature(Feature):
    """
    Object that represents an existing path pattern feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PathPatternFeature:
        return PathPatternFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> PathPatternFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return PathPatternFeature()
    @property
    def inputEntities(self) -> core.ObjectCollection:
        """
        Gets and sets the entities to pattern using an ObjectCollection. The collection can contain BRepFace,
        PartFeature, BRepBody, or Occurrence objects. All of the entities provided must be the same type.
        For example, it must contain only bodies and can't contain both bodies and faces.
        
        ConstructionPoint, ConstructionAxis, and ConstructionPlane objects can also be patterned. When patterning any
        construction goemetry, only one entity can be patterned at a time, so the ObjectCollection will always contain a
        single entity
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()
    @inputEntities.setter
    def inputEntities(self, value: core.ObjectCollection):
        """
        Gets and sets the entities to pattern using an ObjectCollection. The collection can contain BRepFace,
        PartFeature, BRepBody, or Occurrence objects. All of the entities provided must be the same type.
        For example, it must contain only bodies and can't contain both bodies and faces.
        
        ConstructionPoint, ConstructionAxis, and ConstructionPlane objects can also be patterned. When patterning any
        construction goemetry, only one entity can be patterned at a time, so the ObjectCollection will always contain a
        single entity
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def path(self) -> Path:
        """
        Gets and sets the path to create the pattern on path.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return Path()
    @path.setter
    def path(self, value: Path):
        """
        Gets and sets the path to create the pattern on path.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def quantity(self) -> ModelParameter:
        """
        Gets the quantity of the elements.
        Edit the value through ModelParameter.
        Returns nothing in the case where the feature is non-parametric.
        """
        return ModelParameter()
    @property
    def distance(self) -> ModelParameter:
        """
        Gets the distance.
        Edit the value through ModelParameter.
        Returns nothing in the case where the feature is non-parametric.
        """
        return ModelParameter()
    @property
    def startPoint(self) -> float:
        """
        Gets and sets the start point on the path to count the distance.
        It's between 0 and 1. 0 means start point of the path, 1 means end point of the path.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return float()
    @startPoint.setter
    def startPoint(self, value: float):
        """
        Gets and sets the start point on the path to count the distance.
        It's between 0 and 1. 0 means start point of the path, 1 means end point of the path.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def isFlipDirection(self) -> bool:
        """
        Gets and sets if flip the direction from start point.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isFlipDirection.setter
    def isFlipDirection(self, value: bool):
        """
        Gets and sets if flip the direction from start point.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def patternDistanceType(self) -> PatternDistanceType:
        """
        Gets and sets how the distance between elements is computed.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return PatternDistanceType()
    @patternDistanceType.setter
    def patternDistanceType(self, value: PatternDistanceType):
        """
        Gets and sets how the distance between elements is computed.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def isSymmetric(self) -> bool:
        """
        Gets and sets if the pattern is in one direction or symmetric.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isSymmetric.setter
    def isSymmetric(self, value: bool):
        """
        Gets and sets if the pattern is in one direction or symmetric.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def isOrientationAlongPath(self) -> bool:
        """
        Gets and sets if the orientation is along path.
        If false, the orientation is identical.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isOrientationAlongPath.setter
    def isOrientationAlongPath(self, value: bool):
        """
        Gets and sets if the orientation is along path.
        If false, the orientation is identical.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def suppressedElementsIds(self) -> list[int]:
        """
        Gets and sets the id's of the elements to suppress.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return [int()]
    @suppressedElementsIds.setter
    def suppressedElementsIds(self, value: list[int]):
        """
        Gets and sets the id's of the elements to suppress.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def patternElements(self) -> PatternElements:
        """
        Gets the PatternElements collection that contains the elements created by this pattern.
        """
        return PatternElements()
    @property
    def resultFeatures(self) -> core.ObjectCollection:
        """
        Get the features that were created for this mirror.
        Returns null in the case where the feature is parametric.
        """
        return core.ObjectCollection()
    @property
    def nativeObject(self) -> PathPatternFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return PathPatternFeature()
    @property
    def patternEntityType(self) -> PatternEntityTypes:
        """
        Returns the type of entities the pattern consists of. This can be used to help
        determine the type of results that will be found in the pattern elements.
        """
        return PatternEntityTypes()
    @property
    def patternComputeOption(self) -> PatternComputeOptions:
        """
        Gets and sets the compute option for this pattern feature.
        This property only applies when patterning features and is ignored in the direct modeling environment.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return PatternComputeOptions()
    @patternComputeOption.setter
    def patternComputeOption(self, value: PatternComputeOptions):
        """
        Gets and sets the compute option for this pattern feature.
        This property only applies when patterning features and is ignored in the direct modeling environment.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass

class PerpendicularConstraint(GeometricConstraint):
    """
    A perpendicular constraint in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PerpendicularConstraint:
        return PerpendicularConstraint()
    def createForAssemblyContext(self, occurrence: Occurrence) -> PerpendicularConstraint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return PerpendicularConstraint()
    @property
    def lineOne(self) -> SketchLine:
        """
        Returns the first line.
        """
        return SketchLine()
    @property
    def lineTwo(self) -> SketchLine:
        """
        Returns the second line.
        """
        return SketchLine()
    @property
    def nativeObject(self) -> PerpendicularConstraint:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return PerpendicularConstraint()

class PerpendicularToSurfaceConstraint(GeometricConstraint):
    """
    A sketch constraint defining that a curve is perpendicular to a face or construction plane. Line and spline curves are supported.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PerpendicularToSurfaceConstraint:
        return PerpendicularToSurfaceConstraint()
    def createForAssemblyContext(self, occurrence: Occurrence) -> PerpendicularToSurfaceConstraint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return PerpendicularToSurfaceConstraint()
    @property
    def curve(self) -> SketchCurve:
        """
        Returns the SketchCurve object that is constrained.
        """
        return SketchCurve()
    @property
    def surface(self) -> core.Base:
        """
        Returns the BRepFace or ConstructionPlane the line is constrained to be perpendicular to.
        """
        return core.Base()
    @property
    def nativeObject(self) -> PerpendicularToSurfaceConstraint:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return PerpendicularToSurfaceConstraint()

class PinSlotJointMotion(JointMotion):
    """
    Represents the set of information specific to a pin slot joint.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PinSlotJointMotion:
        return PinSlotJointMotion()
    @property
    def rotationAxis(self) -> JointDirections:
        """
        Gets and sets the direction of the axis of rotation. This can be set to
        XAxisJointDirection, YAxisJointDirection, or ZAxisJointDirection. It can
        return those three directions and CustomJointDirection. If this returns
        CustomJointDirection then the customRotationAxisEntity will return an entity
        that defines the axis. If there is a custom rotation axis defined and this
        property is set to one of the three standard axes, the custom rotation will
        be removed and customRotationAxisEntity will return null.
        """
        return JointDirections()
    @rotationAxis.setter
    def rotationAxis(self, value: JointDirections):
        """
        Gets and sets the direction of the axis of rotation. This can be set to
        XAxisJointDirection, YAxisJointDirection, or ZAxisJointDirection. It can
        return those three directions and CustomJointDirection. If this returns
        CustomJointDirection then the customRotationAxisEntity will return an entity
        that defines the axis. If there is a custom rotation axis defined and this
        property is set to one of the three standard axes, the custom rotation will
        be removed and customRotationAxisEntity will return null.
        """
        pass
    @property
    def rotationAxisVector(self) -> core.Vector3D:
        """
        Returns the direction of the rotation axis. This property will return null in the case
        where the PinSlotJointMotion object was obtained from a JointInput object.
        """
        return core.Vector3D()
    @property
    def customRotationAxisEntity(self) -> core.Base:
        """
        This property can be set using various types of entities that can infer an
        axis. For example, a linear edge, sketch line, planar face, and cylindrical face.
        This property is only valid in the case where the rotationAxis property returns
        CustomJointDirection. Setting this property will automatically set
        the rotationAxis property to CustomJointDirection.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        """
        return core.Base()
    @customRotationAxisEntity.setter
    def customRotationAxisEntity(self, value: core.Base):
        """
        This property can be set using various types of entities that can infer an
        axis. For example, a linear edge, sketch line, planar face, and cylindrical face.
        This property is only valid in the case where the rotationAxis property returns
        CustomJointDirection. Setting this property will automatically set
        the rotationAxis property to CustomJointDirection.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        """
        pass
    @property
    def rotationValue(self) -> float:
        """
        Gets and sets the rotation value. This is in radians. Setting this value is
        the equivalent of using the Drive Joints command.
        """
        return float()
    @rotationValue.setter
    def rotationValue(self, value: float):
        """
        Gets and sets the rotation value. This is in radians. Setting this value is
        the equivalent of using the Drive Joints command.
        """
        pass
    @property
    def rotationLimits(self) -> JointLimits:
        """
        Returns a JointLimits object that defines the rotation limits for this joint.
        Use the functionality of the returned JointLimits object to get, set, and modify
        the joint limits.
        """
        return JointLimits()
    @property
    def slideDirection(self) -> JointDirections:
        """
        Gets and sets the direction of the slide motion in the slot. This can be set to
        XAxisJointDirection, YAxisJointDirection, or ZAxisJointDirection. It can
        return those three directions and CustomJointDirection. If this returns
        CustomJointDirection then the customSlideDirectionEntity will return an entity
        that defines the direction. If there is a custom direction defined and this
        property is set to one of the three standard axes, the custom direction will
        be removed and customSlideDirectionEntity will return null.
        """
        return JointDirections()
    @slideDirection.setter
    def slideDirection(self, value: JointDirections):
        """
        Gets and sets the direction of the slide motion in the slot. This can be set to
        XAxisJointDirection, YAxisJointDirection, or ZAxisJointDirection. It can
        return those three directions and CustomJointDirection. If this returns
        CustomJointDirection then the customSlideDirectionEntity will return an entity
        that defines the direction. If there is a custom direction defined and this
        property is set to one of the three standard axes, the custom direction will
        be removed and customSlideDirectionEntity will return null.
        """
        pass
    @property
    def slideDirectionVector(self) -> core.Vector3D:
        """
        Returns the direction of the primary slide direction. This property will return null in the case
        where the PinSlotJointMotion object was obtained from a JointInput object.
        """
        return core.Vector3D()
    @property
    def customSlideDirectionEntity(self) -> core.Base:
        """
        This property can be set using various types of entities that can infer a
        direction. For example, a linear edge, sketch line, planar face, and cylindrical face.
        This property is only valid in the case where the slideDirection property returns
        CustomJointDirection. Setting this property will automatically set
        the slideDirection property to CustomJointDirection.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        """
        return core.Base()
    @customSlideDirectionEntity.setter
    def customSlideDirectionEntity(self, value: core.Base):
        """
        This property can be set using various types of entities that can infer a
        direction. For example, a linear edge, sketch line, planar face, and cylindrical face.
        This property is only valid in the case where the slideDirection property returns
        CustomJointDirection. Setting this property will automatically set
        the slideDirection property to CustomJointDirection.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        """
        pass
    @property
    def slideValue(self) -> float:
        """
        Gets and sets the slide value. This is in centimeters. Setting this value is
        the equivalent of using the Drive Joints command.
        """
        return float()
    @slideValue.setter
    def slideValue(self, value: float):
        """
        Gets and sets the slide value. This is in centimeters. Setting this value is
        the equivalent of using the Drive Joints command.
        """
        pass
    @property
    def slideLimits(self) -> JointLimits:
        """
        Returns a JointLimits object that defines the slide limits for this joint.
        Use the functionality of the returned JointLimits object to get, set, and modify
        the joint limits.
        """
        return JointLimits()

class PipeFeature(Feature):
    """
    Object that represents an existing pipe feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PipeFeature:
        return PipeFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> PipeFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return PipeFeature()
    def setThickness(self, value: core.ValueInput) -> bool:
        """
        Defines the section thickness of the Pipe.
        
        In case the pipe is not already hollow, this also sets the isHollow to true.
        """
        return bool()
    @property
    def nativeObject(self) -> PipeFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return PipeFeature()
    @property
    def operation(self) -> FeatureOperations:
        """
        Gets and sets the type of operation performed by the Pipe.
        """
        return FeatureOperations()
    @operation.setter
    def operation(self, value: FeatureOperations):
        """
        Gets and sets the type of operation performed by the Pipe.
        """
        pass
    @property
    def path(self) -> Path:
        """
        Gets and sets the path to create the Pipe.
        This property returns null in the case where the feature is non-parametric.
        The path can be either closed (you can reach again the starting point by following the curves) or open (the starting point and end point are different in the path).
        
        The starting point of the Pipe will be the starting point of the first curve in the Path, regardless of it being open or closed.
        When the desired Pipe has a section that includes the starting point and the path is closed, the curves should be shifted in a circular pattern.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return Path()
    @path.setter
    def path(self, value: Path):
        """
        Gets and sets the path to create the Pipe.
        This property returns null in the case where the feature is non-parametric.
        The path can be either closed (you can reach again the starting point by following the curves) or open (the starting point and end point are different in the path).
        
        The starting point of the Pipe will be the starting point of the first curve in the Path, regardless of it being open or closed.
        When the desired Pipe has a section that includes the starting point and the path is closed, the curves should be shifted in a circular pattern.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def distanceOne(self) -> ModelParameter:
        """
        Gets the distance for the pipe created while following the path given as input, in the same order.
        
        If the path is open, this value returns the length of Pipe relative to the length of the path.
        If the path is closed, this value returns the length of the Pipe from the start point going along the curves.
        Ex: Path is made of curves A-B-C-A. The distanceOne returns the length of the pipe going from A-B-C-A.
        
        This property returns null in the case where the feature is non-parametric.
        """
        return ModelParameter()
    @property
    def distanceTwo(self) -> ModelParameter:
        """
        Gets the distance for the pipe created while following the reversed path given as input.
        
        If the path is open, getting this value returns null, and setting the value is ignored.
        If the path is closed, this value returns the length of the Pipe from the start point going in the reverse order of the path.
        Ex: Path is made of curves A-B-C-A. The distanceTwo returns the length of the pipe going from A-C-B-A.
        
        This property returns null in the case where the feature is non-parametric.
        """
        return ModelParameter()
    @property
    def sectionType(self) -> PipeSectionTypes:
        """
        Gets and sets the section type of the Pipe.
        The type can be: Circular, Square, Triangular.
        """
        return PipeSectionTypes()
    @sectionType.setter
    def sectionType(self, value: PipeSectionTypes):
        """
        Gets and sets the section type of the Pipe.
        The type can be: Circular, Square, Triangular.
        """
        pass
    @property
    def sectionSize(self) -> ModelParameter:
        """
        Gets and sets the section size of the Pipe.
        """
        return ModelParameter()
    @property
    def isHollow(self) -> bool:
        """
        Specifies if the Pipe is hollow or not.
        
        Setting this to true will default the sectionThickness to 0.1 cm.
        """
        return bool()
    @isHollow.setter
    def isHollow(self, value: bool):
        """
        Specifies if the Pipe is hollow or not.
        
        Setting this to true will default the sectionThickness to 0.1 cm.
        """
        pass
    @property
    def sectionThickness(self) -> ModelParameter:
        """
        Gets the section thickness of the Pipe.
        
        If the pipe is not hollow, this will return null.
        """
        return ModelParameter()
    @property
    def startFaces(self) -> BRepFaces:
        """
        Property that returns the set of faces that cap one end of the Pipe that are coincident with the sketch plane.
        In the cases where there aren't any start faces this property will return null.
        """
        return BRepFaces()
    @property
    def endFaces(self) -> BRepFaces:
        """
        Property that returns the set of faces that cap one end of the Pipe that are coincident with the sketch plane.
        The end faces are those not coincident to the sketch plane of the feature's profile.
        In the case of a symmetric Pipe these faces are the ones on the negative normal side of the sketch plane.
        In the cases where there aren't any end faces this property will return null.
        """
        return BRepFaces()
    @property
    def sideFaces(self) -> BRepFaces:
        """
        Property that returns an object that provides access to all of the faces created around the perimeter of the feature.
        """
        return BRepFaces()
    @property
    def participantBodies(self) -> list[BRepBody]:
        """
        Gets and sets the list of bodies that will participate in the feature when the operation is a cut or intersection.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return [BRepBody()]
    @participantBodies.setter
    def participantBodies(self, value: list[BRepBody]):
        """
        Gets and sets the list of bodies that will participate in the feature when the operation is a cut or intersection.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass

class PlanarJointMotion(JointMotion):
    """
    Represents the set of information specific to a planar joint.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PlanarJointMotion:
        return PlanarJointMotion()
    @property
    def normalDirection(self) -> JointDirections:
        """
        Gets and sets the direction of the normal of the single degree of rotation.
        This can be set to XAxisJointDirection, YAxisJointDirection, or ZAxisJointDirection.
        It can return those three directions and CustomJointDirection. If this returns
        CustomJointDirection then the customNormalDirectionEntity will return an entity
        that defines the direction. If there is a custom direction defined and this
        property is set to one of the three standard axes, the custom direction will
        be removed and customNormalDirectionEntity will return null.
        """
        return JointDirections()
    @normalDirection.setter
    def normalDirection(self, value: JointDirections):
        """
        Gets and sets the direction of the normal of the single degree of rotation.
        This can be set to XAxisJointDirection, YAxisJointDirection, or ZAxisJointDirection.
        It can return those three directions and CustomJointDirection. If this returns
        CustomJointDirection then the customNormalDirectionEntity will return an entity
        that defines the direction. If there is a custom direction defined and this
        property is set to one of the three standard axes, the custom direction will
        be removed and customNormalDirectionEntity will return null.
        """
        pass
    @property
    def normalDirectionVector(self) -> core.Vector3D:
        """
        Returns the direction of the normal direction. This property will return null in the case
        where the PlanarJointMotion object was obtained from a JointInput object.
        """
        return core.Vector3D()
    @property
    def customNormalDirectionEntity(self) -> core.Base:
        """
        This property defines a custom normal direction and can be set using various types
        of entities that can infer a direction. For example, a linear edge, sketch line,
        planar face, and cylindrical face.This property is only valid in the case where the
        normalDirection property returns CustomJointDirection. Setting this property will
        automatically set the normalDirection property to CustomJointDirection.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        """
        return core.Base()
    @customNormalDirectionEntity.setter
    def customNormalDirectionEntity(self, value: core.Base):
        """
        This property defines a custom normal direction and can be set using various types
        of entities that can infer a direction. For example, a linear edge, sketch line,
        planar face, and cylindrical face.This property is only valid in the case where the
        normalDirection property returns CustomJointDirection. Setting this property will
        automatically set the normalDirection property to CustomJointDirection.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        """
        pass
    @property
    def primarySlideDirection(self) -> JointDirections:
        """
        Gets the direction used as the primary direction for the two translational degrees of
        freedom. The value of this property is automatically set when setting the normalDirection.
        When reading this value it can return XAxisJointDirection, YAxisJointDirection, ZAxisJointDirection,
        or CustomJointDirection. If it's CustomJointDirection then the direction can be
        determined using the primarySlideDirectionVector and the entity controlling the direction can
        be gotten and set using the customPrimarySlideDirectionEntity.
        """
        return JointDirections()
    @property
    def primarySlideDirectionVector(self) -> core.Vector3D:
        """
        Returns the direction of the primary slide direction. This property will return null in the case
        where the PlanarJointMotion object was obtained from a JointInput object.
        """
        return core.Vector3D()
    @property
    def customPrimarySlideDirectionEntity(self) -> core.Base:
        """
        This property can be set using various types of entities that can infer a
        direction. For example, a linear edge, sketch line, planar face, and cylindrical face.
        When reading this property, it is only valid in the case where the primarySlideDirection property returns
        CustomJointDirection. Setting this property will automatically set the primarySlideDirection property to
        CustomJointDirection. The entity defining the custom direction by be perpendicular to the normal direction.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        """
        return core.Base()
    @customPrimarySlideDirectionEntity.setter
    def customPrimarySlideDirectionEntity(self, value: core.Base):
        """
        This property can be set using various types of entities that can infer a
        direction. For example, a linear edge, sketch line, planar face, and cylindrical face.
        When reading this property, it is only valid in the case where the primarySlideDirection property returns
        CustomJointDirection. Setting this property will automatically set the primarySlideDirection property to
        CustomJointDirection. The entity defining the custom direction by be perpendicular to the normal direction.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        """
        pass
    @property
    def secondarySlideDirectionVector(self) -> core.Vector3D:
        """
        Returns the direction of the secondary slide direction. This property will return null in the case
        where the PlanarJointMotion object was obtained from a JointInput object.
        """
        return core.Vector3D()
    @property
    def rotationValue(self) -> float:
        """
        Gets and sets the rotation value. This is in radians. Setting this value is
        the equivalent of using the Drive Joints command.
        """
        return float()
    @rotationValue.setter
    def rotationValue(self, value: float):
        """
        Gets and sets the rotation value. This is in radians. Setting this value is
        the equivalent of using the Drive Joints command.
        """
        pass
    @property
    def rotationLimits(self) -> JointLimits:
        """
        Returns a JointLimits object that defines the limits of rotation for this joint.
        Use the functionality of the returned JointLimits object to get, set, and modify
        the joint limits.
        """
        return JointLimits()
    @property
    def primarySlideValue(self) -> float:
        """
        Gets and sets the offset value in the primary direction. This is in centimeters.
        Setting this value is the equivalent of using the Drive Joints command.
        """
        return float()
    @primarySlideValue.setter
    def primarySlideValue(self, value: float):
        """
        Gets and sets the offset value in the primary direction. This is in centimeters.
        Setting this value is the equivalent of using the Drive Joints command.
        """
        pass
    @property
    def primarySlideLimits(self) -> JointLimits:
        """
        Returns a JointLimits object that defines the limits in the primary direction for this joint.
        Use the functionality of the returned JointLimits object to get, set, and modify
        the joint limits.
        """
        return JointLimits()
    @property
    def secondarySlideValue(self) -> float:
        """
        Gets and sets the offset value in the secondary direction. This is in centimeters.
        Setting this value is the equivalent of using the Drive Joints command.
        """
        return float()
    @secondarySlideValue.setter
    def secondarySlideValue(self, value: float):
        """
        Gets and sets the offset value in the secondary direction. This is in centimeters.
        Setting this value is the equivalent of using the Drive Joints command.
        """
        pass
    @property
    def secondarySlideLimits(self) -> JointLimits:
        """
        Returns a JointLimits object that defines the limits in the secondary direction for this joint.
        Use the functionality of the returned JointLimits object to get, set, and modify
        the joint limits.
        """
        return JointLimits()

class PlaneAndOffsetsHolePositionDefinition(HolePositionDefinition):
    """
    Provides positioning information for a hole that is positioned on a plane
    and at a distance from one or two edges.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PlaneAndOffsetsHolePositionDefinition:
        return PlaneAndOffsetsHolePositionDefinition()
    @property
    def planarEntity(self) -> core.Base:
        """
        Returns the plane that defines the orientation and start of the hole.
        """
        return core.Base()
    @property
    def edgeOne(self) -> BRepEdge:
        """
        The first of 2 edges the hole position is measured from. OffsetOne provides access to
        the model parameter controlling the offset distance.
        """
        return BRepEdge()
    @property
    def offsetOne(self) -> ModelParameter:
        """
        Returns the model parameter controlling the distance from the center of the hole
        to EdgeOne.
        """
        return ModelParameter()
    @property
    def edgeTwo(self) -> BRepEdge:
        """
        The second of two edges the hole position is measured from. OffsetTwo provides access
        to the model parameter controlling the offset distance. This property can return null
        in the case where only one edge is used.
        """
        return BRepEdge()
    @property
    def offsetTwo(self) -> ModelParameter:
        """
        Returns the model parameter controlling the distance from the center of the hole
        to EdgeTwo. This property returns null in the case where only one edge is used.
        """
        return ModelParameter()

class PMICreatedAnnotation(PMIAnnotation):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    A Base class representing a PMI created in Fusion.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMICreatedAnnotation:
        return PMICreatedAnnotation()
    @property
    def isPerpendicularLine(self) -> bool:
        """
        Gets and sets whether the PMI text is perpendicular to the leader line or parallel to it.
        """
        return bool()
    @isPerpendicularLine.setter
    def isPerpendicularLine(self, value: bool):
        """
        Gets and sets whether the PMI text is perpendicular to the leader line or parallel to it.
        """
        pass
    @property
    def horizontalAlignment(self) -> core.HorizontalAlignments:
        """
        Gets and sets the horizontal alignment of the PMI text relative to its anchor point.
        
        This determines how the text box is positioned relative to the text placement point.
        """
        return core.HorizontalAlignments()
    @horizontalAlignment.setter
    def horizontalAlignment(self, value: core.HorizontalAlignments):
        """
        Gets and sets the horizontal alignment of the PMI text relative to its anchor point.
        
        This determines how the text box is positioned relative to the text placement point.
        """
        pass
    @property
    def verticalAlignment(self) -> core.VerticalAlignments:
        """
        Gets and sets the vertical alignment of the PMI text relative to its anchor point.
        
        This determines the vertical positioning of the text box relative to the calculated text placement point.
        """
        return core.VerticalAlignments()
    @verticalAlignment.setter
    def verticalAlignment(self, value: core.VerticalAlignments):
        """
        Gets and sets the vertical alignment of the PMI text relative to its anchor point.
        
        This determines the vertical positioning of the text box relative to the calculated text placement point.
        """
        pass
    @property
    def leaderLineExtension(self) -> float:
        """
        Gets and sets the length of the leader line extension.
        
        This value extends the leader line in the direction determined by the perpendicular setting.
        """
        return float()
    @leaderLineExtension.setter
    def leaderLineExtension(self, value: float):
        """
        Gets and sets the length of the leader line extension.
        
        This value extends the leader line in the direction determined by the perpendicular setting.
        """
        pass
    @property
    def plane(self) -> core.Plane:
        """
        Gets the plane of the PMI.
        """
        return core.Plane()
    @property
    def annotationTextPoint(self) -> core.Point3D:
        """
        Gets and sets the point on the annotation plane where the PMI text is anchored.
        """
        return core.Point3D()
    @annotationTextPoint.setter
    def annotationTextPoint(self, value: core.Point3D):
        """
        Gets and sets the point on the annotation plane where the PMI text is anchored.
        """
        pass
    @property
    def annotationTargetPoint(self) -> core.Point3D:
        """
        Gets the point on the annotation plane where the leader line meets the annotated geometry.
        """
        return core.Point3D()
    @property
    def segments(self) -> list[PMISegment]:
        """
        Gets and sets the list of PMISegments used to define the PMI text.
        
        The segments can be any combination of PMITextSegment, PMISymbolSegment and PMILineBreakSegment objects.
        
        Changing this property will result in changing the displayed text of the PMI.
        """
        return [PMISegment()]
    @segments.setter
    def segments(self, value: list[PMISegment]):
        """
        Gets and sets the list of PMISegments used to define the PMI text.
        
        The segments can be any combination of PMITextSegment, PMISymbolSegment and PMILineBreakSegment objects.
        
        Changing this property will result in changing the displayed text of the PMI.
        """
        pass
    @property
    def plainText(self) -> str:
        """
        This is a convenience property that provides the plain-text representation of the PMI text.
        It iterates through the segments and concatenates their text representation.
        """
        return str()
    @property
    def isShowImportedGeometry(self) -> bool:
        """
        Gets and sets whether the original graphics/geometry of the PMI should be visible.
        Only supported for PMI that has been converted from imported data.
        """
        return bool()
    @isShowImportedGeometry.setter
    def isShowImportedGeometry(self, value: bool):
        """
        Gets and sets whether the original graphics/geometry of the PMI should be visible.
        Only supported for PMI that has been converted from imported data.
        """
        pass
    @property
    def hasImportedGeometry(self) -> bool:
        """
        Gets whether the created PMI was converted from an imported PMI and therefore whether it
        has original graphics/geometry that can be shown.
        """
        return bool()

class PMIHoleThreadNoteInput(PMIInput):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    A class that defines the input used to create a Hole/Thread Note PMI.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIHoleThreadNoteInput:
        return PMIHoleThreadNoteInput()
    @property
    def faces(self) -> list[BRepFace]:
        """
        An array of BRepFace objects the Hole/Thread Note would be associated to. These faces can be a subset of the group
        of faces defining a geometric hole, or faces defining bosses. The faces must represent equivalent geometry (e.g. holes defined
        by the faces should have the same properties such as type, diameter, thread, etc.).
        
        In the case of bosses, the set of faces represents the cylindrical faces from a group of bosses.
        
        These faces should not be in different components, but can be in different bodies within the same component.
        Native object will be used when setting the faces.
        """
        return [BRepFace()]
    @faces.setter
    def faces(self, value: list[BRepFace]):
        """
        An array of BRepFace objects the Hole/Thread Note would be associated to. These faces can be a subset of the group
        of faces defining a geometric hole, or faces defining bosses. The faces must represent equivalent geometry (e.g. holes defined
        by the faces should have the same properties such as type, diameter, thread, etc.).
        
        In the case of bosses, the set of faces represents the cylindrical faces from a group of bosses.
        
        These faces should not be in different components, but can be in different bodies within the same component.
        Native object will be used when setting the faces.
        """
        pass
    @property
    def isWantSelectAllMatchingHoles(self) -> bool:
        """
        Gets and sets whether the Hole/Thread Note PMI should represent all the matching holes in the design.
        """
        return bool()
    @isWantSelectAllMatchingHoles.setter
    def isWantSelectAllMatchingHoles(self, value: bool):
        """
        Gets and sets whether the Hole/Thread Note PMI should represent all the matching holes in the design.
        """
        pass
    @property
    def primaryDisplaySettings(self) -> PMIDisplaySettings:
        """
        Gets and sets the primary display settings for the Hole/Thread Note PMI.
        This will always be existent, and includes information about format and units.
        """
        return PMIDisplaySettings()
    @primaryDisplaySettings.setter
    def primaryDisplaySettings(self, value: PMIDisplaySettings):
        """
        Gets and sets the primary display settings for the Hole/Thread Note PMI.
        This will always be existent, and includes information about format and units.
        """
        pass
    @property
    def hasSecondaryDisplaySettings(self) -> bool:
        """
        Gets and sets whether there are secondary display settings defined for the Hole/Thread Note PMI.
        """
        return bool()
    @hasSecondaryDisplaySettings.setter
    def hasSecondaryDisplaySettings(self, value: bool):
        """
        Gets and sets whether there are secondary display settings defined for the Hole/Thread Note PMI.
        """
        pass
    @property
    def secondaryDisplaySettings(self) -> PMIDisplaySettings:
        """
        Gets and sets the secondary display settings for the Hole/Thread Note PMI.
        This will not always be existent. Setting this value will also set hasSecondaryDisplaySettings to true.
        """
        return PMIDisplaySettings()
    @secondaryDisplaySettings.setter
    def secondaryDisplaySettings(self, value: PMIDisplaySettings):
        """
        Gets and sets the secondary display settings for the Hole/Thread Note PMI.
        This will not always be existent. Setting this value will also set hasSecondaryDisplaySettings to true.
        """
        pass
    @property
    def isWantQuantityNote(self) -> bool:
        """
        Gets and sets whether the quantity is visible in the graphics.
        
        Updating this value will reset the segments in the PMI.
        """
        return bool()
    @isWantQuantityNote.setter
    def isWantQuantityNote(self, value: bool):
        """
        Gets and sets whether the quantity is visible in the graphics.
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def diameter(self) -> PMIGeometricValue:
        """
        Gets and sets the PMIGeometricValue used to define the diameter of the annotated hole or boss in cm.
        It is possible to also add tolerances to the object set by setting the tolerance property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        return PMIGeometricValue()
    @diameter.setter
    def diameter(self, value: PMIGeometricValue):
        """
        Gets and sets the PMIGeometricValue used to define the diameter of the annotated hole or boss in cm.
        It is possible to also add tolerances to the object set by setting the tolerance property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def shaftTolerance(self) -> PMIGeometricValueTolerance:
        """
        Gets and sets the PMIGeometricValueTolerance for the shaft diameter of the annotated hole if a shaft tolerance exists.
        """
        return PMIGeometricValueTolerance()
    @shaftTolerance.setter
    def shaftTolerance(self, value: PMIGeometricValueTolerance):
        """
        Gets and sets the PMIGeometricValueTolerance for the shaft diameter of the annotated hole if a shaft tolerance exists.
        """
        pass
    @property
    def isThrough(self) -> bool:
        """
        Gets and sets whether the hole should be considered a through hole.
        
        Setting this to true will remove the depth information related to the PMI.
        Setting this to false will result in the depth being passed to PMI creation.
        
        Updating this value will reset the segments in the PMI.
        """
        return bool()
    @isThrough.setter
    def isThrough(self, value: bool):
        """
        Gets and sets whether the hole should be considered a through hole.
        
        Setting this to true will remove the depth information related to the PMI.
        Setting this to false will result in the depth being passed to PMI creation.
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def depth(self) -> PMIGeometricValue:
        """
        Gets and sets the PMIGeometricValue used to define the depth of the hole in cm.
        
        In the case of bosses, it represents the height of the boss.
        When setting, it is possible to also add tolerances to the object set by setting the tolerance property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        return PMIGeometricValue()
    @depth.setter
    def depth(self, value: PMIGeometricValue):
        """
        Gets and sets the PMIGeometricValue used to define the depth of the hole in cm.
        
        In the case of bosses, it represents the height of the boss.
        When setting, it is possible to also add tolerances to the object set by setting the tolerance property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def radius(self) -> PMIGeometricValue:
        """
        Gets and sets the PMIGeometricValue used to define the radius of the hole in cm. Not applicable for bosses.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerance property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        return PMIGeometricValue()
    @radius.setter
    def radius(self, value: PMIGeometricValue):
        """
        Gets and sets the PMIGeometricValue used to define the radius of the hole in cm. Not applicable for bosses.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerance property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def isThreaded(self) -> bool:
        """
        Gets and sets whether the hole or the boss has a thread associated.
        
        Setting this to false will result in all thread information being ignored.
        Setting this to true requires the thread information to also be set.
        
        Updating this value will reset the segments in the PMI.
        """
        return bool()
    @isThreaded.setter
    def isThreaded(self, value: bool):
        """
        Gets and sets whether the hole or the boss has a thread associated.
        
        Setting this to false will result in all thread information being ignored.
        Setting this to true requires the thread information to also be set.
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def threadInfo(self) -> ThreadInfo:
        """
        Gets and sets the ThreadInfo object associated with the hole/thread note.
        
        Updating this value will reset the segments in the PMI.
        """
        return ThreadInfo()
    @threadInfo.setter
    def threadInfo(self, value: ThreadInfo):
        """
        Gets and sets the ThreadInfo object associated with the hole/thread note.
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def isThreadedThrough(self) -> bool:
        """
        Gets and sets whether the hole or boss is threaded all the way through.
        Setting this to true will remove the thread depth information.
        
        Updating this value will reset the segments in the PMI.
        """
        return bool()
    @isThreadedThrough.setter
    def isThreadedThrough(self, value: bool):
        """
        Gets and sets whether the hole or boss is threaded all the way through.
        Setting this to true will remove the thread depth information.
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def threadDepth(self) -> PMIGeometricValue:
        """
        Gets and sets the PMIGeometricValue used to define the thread depth of the hole in cm. In the case of bosses, it represents the thread length of the boss.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerances property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        return PMIGeometricValue()
    @threadDepth.setter
    def threadDepth(self, value: PMIGeometricValue):
        """
        Gets and sets the PMIGeometricValue used to define the thread depth of the hole in cm. In the case of bosses, it represents the thread length of the boss.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerances property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def counterboreDiameter(self) -> PMIGeometricValue:
        """
        Gets and sets the PMIGeometricValue used to define the diameter of the counterbore segment of the hole in cm. Not applicable for bosses.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerances property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        return PMIGeometricValue()
    @counterboreDiameter.setter
    def counterboreDiameter(self, value: PMIGeometricValue):
        """
        Gets and sets the PMIGeometricValue used to define the diameter of the counterbore segment of the hole in cm. Not applicable for bosses.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerances property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def counterboreDepth(self) -> PMIGeometricValue:
        """
        Gets and sets the PMIGeometricValue used to define the depth of the counterbore segment of the hole in cm. Not applicable for bosses.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerances property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        return PMIGeometricValue()
    @counterboreDepth.setter
    def counterboreDepth(self, value: PMIGeometricValue):
        """
        Gets and sets the PMIGeometricValue used to define the depth of the counterbore segment of the hole in cm. Not applicable for bosses.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerances property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def counterboreRadius(self) -> PMIGeometricValue:
        """
        Gets and sets the PMIGeometricValue used to define the radius of the counterbore segment of the hole in cm. Not applicable for bosses.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerances property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        return PMIGeometricValue()
    @counterboreRadius.setter
    def counterboreRadius(self, value: PMIGeometricValue):
        """
        Gets and sets the PMIGeometricValue used to define the radius of the counterbore segment of the hole in cm. Not applicable for bosses.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerances property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def countersinkDiameter(self) -> PMIGeometricValue:
        """
        Gets and sets the PMIGeometricValue used to define the diameter of the countersink segment of the hole in cm. Not applicable for bosses.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerances property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        return PMIGeometricValue()
    @countersinkDiameter.setter
    def countersinkDiameter(self, value: PMIGeometricValue):
        """
        Gets and sets the PMIGeometricValue used to define the diameter of the countersink segment of the hole in cm. Not applicable for bosses.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerances property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def countersinkAngle(self) -> PMIGeometricValue:
        """
        Gets and sets the PMIGeometricValue used to define the angle of the countersink segment of the hole in radians. Not applicable for bosses.
        
        When setting, this value does not have tolerances, and will not be taken into account.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        return PMIGeometricValue()
    @countersinkAngle.setter
    def countersinkAngle(self, value: PMIGeometricValue):
        """
        Gets and sets the PMIGeometricValue used to define the angle of the countersink segment of the hole in radians. Not applicable for bosses.
        
        When setting, this value does not have tolerances, and will not be taken into account.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def isHoleAnnotation(self) -> bool:
        """
        Gets whether the PMI is representing a hole or a boss.
        """
        return bool()
    @property
    def isFlipHoleNormal(self) -> bool:
        """
        Gets and sets whether the hole normal should be treated as flipped, resulting in the hole top to be placed at the lowest found face of the hole.
        
        This is applicable only to complex holes, in other cases the value is ignored.
        """
        return bool()
    @isFlipHoleNormal.setter
    def isFlipHoleNormal(self, value: bool):
        """
        Gets and sets whether the hole normal should be treated as flipped, resulting in the hole top to be placed at the lowest found face of the hole.
        
        This is applicable only to complex holes, in other cases the value is ignored.
        """
        pass

class PMIImportedDimension(PMIAnnotation):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Defines an imported PMI which includes data related to dimensions.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIImportedDimension:
        return PMIImportedDimension()
    def createForAssemblyContext(self, occurrence: Occurrence) -> PMIImportedDimension:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return PMIImportedDimension()
    def isHoleAnnotation(self) -> bool:
        """
        Indicates if the PMI is representing a hole or not.
        """
        return bool()
    @property
    def nativeObject(self) -> PMIImportedDimension:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return PMIImportedDimension()
    @property
    def nominalDistance(self) -> PMIGeometricValue:
        """
        Gets the PMIGeometricValue used to define the nominal distance of the annotated dimension in cm.
        When querying, if the nominal distance is not set, the value will be 0 and hasValue property will be false.
        """
        return PMIGeometricValue()
    @property
    def shaftTolerance(self) -> PMIGeometricValueTolerance:
        """
        Gets the PMIGeometricValueTolerance for the shaft diameter of the annotated hole if a shaft tolerance exists.
        """
        return PMIGeometricValueTolerance()
    @property
    def angleRelatorType(self) -> PMIAngleRelatorTypes:
        """
        The measured angle as a type.
        """
        return PMIAngleRelatorTypes()
    @property
    def holeType(self) -> HoleTypes:
        """
        Gets the type of the hole.
        Requires the dimension to be associated with a hole.
        """
        return HoleTypes()

class PMIImportedFolder(PMIAnnotation):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Defines a container of other PMI objects (including sub-folders).
    
    A PMIAnnotations can contain multiple PMI of this type, and is typically used to group the PMI within a PMIAnnotations.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIImportedFolder:
        return PMIImportedFolder()
    def createForAssemblyContext(self, occurrence: Occurrence) -> PMIImportedFolder:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return PMIImportedFolder()
    @property
    def nativeObject(self) -> PMIImportedFolder:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return PMIImportedFolder()
    @property
    def containedPMI(self) -> list[PMIAnnotation]:
        """
        Returns the PMI objects within this folder PMI. This excludes PMI contained within folders that are within this folder.
        
        The type of the objects returned is the base class PMIAnnotation.
        """
        return [PMIAnnotation()]

class PMIImportedGDTDatum(PMIAnnotation):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Defines an imported PMI which includes data related to a GDT Datum.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIImportedGDTDatum:
        return PMIImportedGDTDatum()
    def createForAssemblyContext(self, occurrence: Occurrence) -> PMIImportedGDTDatum:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return PMIImportedGDTDatum()
    @property
    def nativeObject(self) -> PMIImportedGDTDatum:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return PMIImportedGDTDatum()
    @property
    def label(self) -> str:
        """
        Gets the label of this Datum.
        
        This is a read-only property because imported PMI cannot be edited.
        """
        return str()
    @property
    def datumTargets(self) -> list[PMIDatumTarget]:
        """
        Gets an array of datum targets associated with this datum, if any.
        
        This is a read-only property because imported PMI cannot be edited.
        """
        return [PMIDatumTarget()]

class PMIImportedGeometricTolerance(PMIAnnotation):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Defines an imported PMI which includes data related to geometric tolerances.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIImportedGeometricTolerance:
        return PMIImportedGeometricTolerance()
    def createForAssemblyContext(self, occurrence: Occurrence) -> PMIImportedGeometricTolerance:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return PMIImportedGeometricTolerance()
    @property
    def nativeObject(self) -> PMIImportedGeometricTolerance:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return PMIImportedGeometricTolerance()
    @property
    def tolerance(self) -> float:
        """
        Gets the tolerance value of the geometric tolerance in cm.
        
        This is a read-only property because imported PMI cannot be edited.
        """
        return float()
    @property
    def datumReferences(self) -> list[PMIDatumReference]:
        """
        Gets an array of datum references associated with this geometric tolerance.
        
        This is a read-only property because imported PMI cannot be edited.
        """
        return [PMIDatumReference()]

class PMIImportedGraphical(PMIAnnotation):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Defines an imported PMI which only includes graphical data.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIImportedGraphical:
        return PMIImportedGraphical()
    def createForAssemblyContext(self, occurrence: Occurrence) -> PMIImportedGraphical:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return PMIImportedGraphical()
    @property
    def nativeObject(self) -> PMIImportedGraphical:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return PMIImportedGraphical()

class PMIImportedNote(PMIAnnotation):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Defines an imported PMI note.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIImportedNote:
        return PMIImportedNote()
    def createForAssemblyContext(self, occurrence: Occurrence) -> PMIImportedNote:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return PMIImportedNote()
    @property
    def nativeObject(self) -> PMIImportedNote:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return PMIImportedNote()
    @property
    def note(self) -> str:
        """
        Gets the text content of the note.
        """
        return str()
    @property
    def reference(self) -> PMIAnnotation:
        """
        Gets the PMI referenced by this note.
        Returns the referenced PMI, or null if no reference is specified.
        """
        return PMIAnnotation()

class PMIImportedSurfaceTexture(PMIAnnotation):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Defines an imported PMI which includes data related to surface texture.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIImportedSurfaceTexture:
        return PMIImportedSurfaceTexture()
    def createForAssemblyContext(self, occurrence: Occurrence) -> PMIImportedSurfaceTexture:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return PMIImportedSurfaceTexture()
    @property
    def nativeObject(self) -> PMIImportedSurfaceTexture:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return PMIImportedSurfaceTexture()
    @property
    def surfaceTextureType(self) -> PMISurfaceTextureTypes:
        """
        Gets the surface texture type.
        """
        return PMISurfaceTextureTypes()
    @property
    def standard(self) -> PMISurfaceTextureStandardTypes:
        """
        Gets the surface texture standard used.
        """
        return PMISurfaceTextureStandardTypes()
    @property
    def hasRoughness(self) -> bool:
        """
        Indicates whether a roughness value is defined.
        """
        return bool()
    @property
    def roughness(self) -> float:
        """
        Gets the roughness value in micrometers.
        Requires hasRoughness to be true.
        """
        return float()
    @property
    def hasRoughnessLimits(self) -> bool:
        """
        Indicates whether roughness limits (minimum and maximum) are defined.
        """
        return bool()
    @property
    def minimumRoughness(self) -> float:
        """
        Gets the minimum roughness value in micrometers.
        Requires hasRoughnessLimits to be true.
        """
        return float()
    @property
    def maximumRoughness(self) -> float:
        """
        Gets the maximum roughness value in micrometers.
        Requires hasRoughnessLimits to be true.
        """
        return float()
    @property
    def laySymbolType(self) -> PMILaySymbolTypes:
        """
        Gets the lay symbol type.
        """
        return PMILaySymbolTypes()
    @property
    def hasProcessingAllowance(self) -> bool:
        """
        Indicates whether a processing allowance value is defined.
        """
        return bool()
    @property
    def processingAllowance(self) -> float:
        """
        Gets the processing allowance value.
        Requires hasProcessingAllowance to be true.
        """
        return float()
    @property
    def hasProcessingAllowanceTolerances(self) -> bool:
        """
        Indicates whether processing allowance tolerances are defined.
        """
        return bool()
    @property
    def processingAllowanceLowerTolerance(self) -> float:
        """
        Gets the lower tolerance for processing allowance.
        Requires hasProcessingAllowanceTolerances to be true.
        """
        return float()
    @property
    def processingAllowanceUpperTolerance(self) -> float:
        """
        Gets the upper tolerance for processing allowance.
        Requires hasProcessingAllowanceTolerances to be true.
        """
        return float()
    @property
    def machineMethod(self) -> str:
        """
        Gets the machine method description.
        """
        return str()
    @property
    def isModifier(self) -> bool:
        """
        Indicates whether this surface texture has a modifier.
        """
        return bool()
    @property
    def cutoff(self) -> PMIRoughness:
        """
        Gets the cutoff roughness data.
        """
        return PMIRoughness()
    @property
    def secondaryRoughness(self) -> PMIRoughness:
        """
        Gets the secondary roughness data.
        """
        return PMIRoughness()
    @property
    def tertiaryRoughness(self) -> PMIRoughness:
        """
        Gets the tertiary roughness data.
        """
        return PMIRoughness()
    @property
    def waviness(self) -> PMIRoughness:
        """
        Gets the waviness data.
        """
        return PMIRoughness()

class PMILeaderLineNoteInput(PMIInput):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    A class that defines the input used to create a Note PMI.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMILeaderLineNoteInput:
        return PMILeaderLineNoteInput()
    def setAnnotationPlane(self, planeType: LeaderLineNotePlaneTypes, face: BRepFace = None) -> bool:
        """
        Sets the annotation plane for Leader Line Note PMI.
        planeType : The type of annotation plane to create.
        
        Creation of Leader Line Note PMI on Unknown plane type is not supported.
        face : An optional input face to define the plane.
        
        Required if the planeType is NormalToCustomFaceLeaderLineNotePlaneType.
        
        Required if the planeType is NormalToFaceLeaderLineNotePlaneType and the face must be an adjacent face to the geometry.
        
        For other plane types, this parameter is ignored.
        True if the plane has been set successfully.
        """
        return bool()
    @property
    def geometry(self) -> core.Base:
        """
        The geometric entity to which the Note PMI will be associated.
        
        This can be a BRepFace, BRepEdge, or BRepVertex object. For BRepEdge objects, only linear, circular
        and elliptical edges are supported. The note will be positioned relative to this entity and will
        maintain its association with the entity geometry.
        
        Setting the geometry will set a default annotation plane and target point.
        Resetting the geometry will reset to default annotation plane and target point.
        Native object will be used when setting the geometry.
        """
        return core.Base()
    @geometry.setter
    def geometry(self, value: core.Base):
        """
        The geometric entity to which the Note PMI will be associated.
        
        This can be a BRepFace, BRepEdge, or BRepVertex object. For BRepEdge objects, only linear, circular
        and elliptical edges are supported. The note will be positioned relative to this entity and will
        maintain its association with the entity geometry.
        
        Setting the geometry will set a default annotation plane and target point.
        Resetting the geometry will reset to default annotation plane and target point.
        Native object will be used when setting the geometry.
        """
        pass
    @property
    def annotationTargetPoint(self) -> core.Point3D:
        """
        Gets and sets the annotation point on the geometry that the leader line note is associated with.
        
        This can be a point on the BRepFace, BRepEdge or BRepVertex, depending on the geometry.
        The point is relative to the geometry's component space where the PMI is being created.
        """
        return core.Point3D()
    @annotationTargetPoint.setter
    def annotationTargetPoint(self, value: core.Point3D):
        """
        Gets and sets the annotation point on the geometry that the leader line note is associated with.
        
        This can be a point on the BRepFace, BRepEdge or BRepVertex, depending on the geometry.
        The point is relative to the geometry's component space where the PMI is being created.
        """
        pass
    @property
    def annotationPlaneType(self) -> LeaderLineNotePlaneTypes:
        """
        Get the LeaderLineNotePlaneTypes that the Leader Line Note PMI is currently using.
        """
        return LeaderLineNotePlaneTypes()
    @property
    def annotationPlaneReferencedFace(self) -> BRepFace:
        """
        The BRepFace used as the alternate plane for the leader line note, if there's any.
        
        Applicable when the planeType is NormalToCustomFaceLeaderLineNotePlaneType or NormalToFaceLeaderLineNotePlaneType
        """
        return BRepFace()
    @property
    def supportedAnnotationPlaneTypes(self) -> list[int]:
        """
        A helper method to get all available annotation plane types that can be set on this Leader Line Note PMI.
        """
        return [int()]
    @property
    def adjacentPlanarFaces(self) -> list[BRepFace]:
        """
        Adjacent planar faces to the geometry that can be used to define the annotation plane with type NormalToFaceLeaderLineNotePlaneType.
        """
        return [BRepFace()]

class PMILineBreakSegment(PMISegment):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Represents a segment defining a new line (or a line break).
    Used to define the text used by a PMI.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMILineBreakSegment:
        return PMILineBreakSegment()
    @staticmethod
    def create() -> PMILineBreakSegment:
        """
        Create a transient PMILineBreakSegment object.
        The newly created PMILineBreakSegment.
        """
        return PMILineBreakSegment()

class PMISymbolSegment(PMISegment):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Represents a segment containing a symbol used to define the text of a PMI.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMISymbolSegment:
        return PMISymbolSegment()
    @staticmethod
    def create(pmiSymbolType: PMISymbolTypes) -> PMISymbolSegment:
        """
        Create a transient PMISymbolSegment object.
        pmiSymbolType : The symbol this segment represents.
        The newly created PMISymbolSegment.
        """
        return PMISymbolSegment()
    @property
    def pmiSymbolType(self) -> PMISymbolTypes:
        """
        Gets and sets the symbol of this segment.
        """
        return PMISymbolTypes()
    @pmiSymbolType.setter
    def pmiSymbolType(self, value: PMISymbolTypes):
        """
        Gets and sets the symbol of this segment.
        """
        pass

class PMITextSegment(PMISegment):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Represents a segment of text used to define the text of a PMI.
    The text can include any number of characters.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMITextSegment:
        return PMITextSegment()
    @staticmethod
    def create(text: str) -> PMITextSegment:
        """
        Create a transient PMITextSegment object.
        text : A string defining the text of the segment.
        The newly created PMITextSegment.
        """
        return PMITextSegment()
    @property
    def text(self) -> str:
        """
        Gets and sets the text of this segment.
        """
        return str()
    @text.setter
    def text(self, value: str):
        """
        Gets and sets the text of this segment.
        """
        pass

class PointHolePositionDefinition(HolePositionDefinition):
    """
    Provides positioning information for a hole that is positioned relative to a 3D coordinate
    point.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PointHolePositionDefinition:
        return PointHolePositionDefinition()
    @property
    def planarEntity(self) -> core.Base:
        """
        Returns the plane that defines the orientation and start of the hole.
        """
        return core.Base()
    @property
    def point(self) -> core.Base:
        """
        Returns the coordinates defining the position of the hole.
        """
        return core.Base()

class PolygonConstraint(GeometricConstraint):
    """
    A polygon constraint in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PolygonConstraint:
        return PolygonConstraint()
    @property
    def points(self) -> list[SketchPoint]:
        """
        Returns the sketch points that define the vertices of the polygon. The
        sketch lines that draw the shape of the polygon can be obtained from the points.
        """
        return [SketchPoint()]
    @property
    def centerPoint(self) -> SketchPoint:
        """
        Returns the SketchPoint that acts as the center point of the polygon.
        """
        return SketchPoint()

class ProfilePlaneStartDefinition(ExtentDefinition):
    """
    A definition object that is used to define a feature whose start plane is the sketch plane of the profile.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ProfilePlaneStartDefinition:
        return ProfilePlaneStartDefinition()
    @staticmethod
    def create() -> ProfilePlaneStartDefinition:
        """
        Statically creates a new ProfilePlaneStartDefinition object. This is used as input when creating a new
        feature and defining the starting condition.
        Returns the newly created ProfilePlaneStartDefinition object or null in the case of a failure.
        """
        return ProfilePlaneStartDefinition()
    @property
    def profilePlane(self) -> core.Plane:
        """
        Returns the geometric definition of the profile plane.
        """
        return core.Plane()

class RectangularPatternConstraint(GeometricConstraint):
    """
    A rectangular pattern constraint in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RectangularPatternConstraint:
        return RectangularPatternConstraint()
    def setDirectionOne(self, directionOneEntity: SketchLine, quantityOne: core.ValueInput, distanceOne: core.ValueInput) -> bool:
        """
        Sets all of the input required to define the pattern in the first direction.
        directionOneEntity : Specifies the SketchLine object used to define the first direction entity.
        
        This argument can be null to indicate that the default first direction is to be used,
        which is along the X axis of the sketch.
        quantityOne : Specifies the number of instances in the first direction.
        distanceOne : Specifies the distance in the first direction. How this value is used depends on the value
        of the PatternDistanceType property. If the value is ExtentPatternDistanceType then it defines
        the total distance of the pattern. If the value is SpacingPatternDistanceType then it defines
        the distance between each element.
        Returns true if it was successful.
        """
        return bool()
    def setDirectionTwo(self, directionTwoEntity: SketchLine, quantityTwo: core.ValueInput, distanceTwo: core.ValueInput) -> bool:
        """
        Sets all of the input required to define the pattern in the second direction.
        directionTwoEntity : Specifies the SketchLine object used to define the second direction entity.
        
        This argument can be null to indicate that the default second direction is to be used, which is 90
        degrees to the first direction.
        quantityTwo : Specifies the number of instances in the second direction.
        distanceTwo : Specifies the distance in the second direction. How this value is used depends on the value of
        the PatternDistanceType property. If the value is ExtentPatternDistanceType then it defines the
        total distance of the pattern. If the value is SpacingPatternDistanceType then it defines the
        distance between each element.
        Returns true if it was successful.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> RectangularPatternConstraint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return RectangularPatternConstraint()
    @property
    def entities(self) -> list[SketchEntity]:
        """
        Gets and sets the entities that are patterned. Sketch points and curves are valid
        entities to pattern.
        """
        return [SketchEntity()]
    @entities.setter
    def entities(self, value: list[SketchEntity]):
        """
        Gets and sets the entities that are patterned. Sketch points and curves are valid
        entities to pattern.
        """
        pass
    @property
    def createdEntities(self) -> list[SketchEntity]:
        """
        Returns an array that contains all of the sketch entities that were created as a result
        of the pattern. This does not contain the original entities that were used as input to
        the pattern. The input entities can be obtained by using the entities property.
        """
        return [SketchEntity()]
    @property
    def directionOneEntity(self) -> SketchLine:
        """
        Gets and sets the entity that defined the first direction of the pattern. This can
        be null which indicates to use the default which is the X-axis of the sketch. Setting
        this property to null will automatically clear directionTwoEntity, if it has been set.
        """
        return SketchLine()
    @directionOneEntity.setter
    def directionOneEntity(self, value: SketchLine):
        """
        Gets and sets the entity that defined the first direction of the pattern. This can
        be null which indicates to use the default which is the X-axis of the sketch. Setting
        this property to null will automatically clear directionTwoEntity, if it has been set.
        """
        pass
    @property
    def directionTwoEntity(self) -> SketchLine:
        """
        Gets and sets the entity that defines the second direction of the pattern. This can
        be null which indicates to use the default direction, which is perpendicular to direction
        one. The directionOneEntity property must be set before setting this property.
        """
        return SketchLine()
    @directionTwoEntity.setter
    def directionTwoEntity(self, value: SketchLine):
        """
        Gets and sets the entity that defines the second direction of the pattern. This can
        be null which indicates to use the default direction, which is perpendicular to direction
        one. The directionOneEntity property must be set before setting this property.
        """
        pass
    @property
    def quantityOne(self) -> ModelParameter:
        """
        Returns the parameter that controls the number of instances in the first direction. To change
        the value, use the properties on the returned ModelParameter.
        """
        return ModelParameter()
    @property
    def quantityTwo(self) -> ModelParameter:
        """
        Returns the parameter that controls the number of instances in the second direction. To change
        the value, use the properties on the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def distanceOne(self) -> ModelParameter:
        """
        Returns the parameter that controls the distance in first direction. To change the
        value, use the properties on the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def distanceTwo(self) -> ModelParameter:
        """
        Returns the parameter that controls the distance in second direction. To change the
        value, use the properties on the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def isSymmetricInDirectionOne(self) -> bool:
        """
        Gets and sets if the pattern in direction one is in one direction or is symmetric.
        """
        return bool()
    @isSymmetricInDirectionOne.setter
    def isSymmetricInDirectionOne(self, value: bool):
        """
        Gets and sets if the pattern in direction one is in one direction or is symmetric.
        """
        pass
    @property
    def isSymmetricInDirectionTwo(self) -> bool:
        """
        Gets and sets if the pattern in direction two is in one direction or is symmetric.
        """
        return bool()
    @isSymmetricInDirectionTwo.setter
    def isSymmetricInDirectionTwo(self, value: bool):
        """
        Gets and sets if the pattern in direction two is in one direction or is symmetric.
        """
        pass
    @property
    def distanceType(self) -> PatternDistanceType:
        """
        Gets and sets how the distance between elements is computed.
        """
        return PatternDistanceType()
    @distanceType.setter
    def distanceType(self, value: PatternDistanceType):
        """
        Gets and sets how the distance between elements is computed.
        """
        pass
    @property
    def isSuppressed(self) -> list[bool]:
        """
        Specifies which, if any, instances of the pattern are suppressed. This returns an
        array of Boolean values that indicates if a particular instance in the pattern is
        suppressed or not. A value of true will result in the associated instance being suppressed.
        
        The indices represent the pattern instances in a row-column order, with the
        initial geometry not counting. For example, if you have a 4x4 pattern, the
        array will have 15 elements rather than 16 because the original geometry
        cannot be suppressed as part of the pattern. The first element in the array
        is the one next to the original in the first direction. The second element is
        the next one on the first row, and the third is the next one. The fourth element
        will be the first element in the row next to the first row that contains the
        original geometry.
        """
        return [bool()]
    @isSuppressed.setter
    def isSuppressed(self, value: list[bool]):
        """
        Specifies which, if any, instances of the pattern are suppressed. This returns an
        array of Boolean values that indicates if a particular instance in the pattern is
        suppressed or not. A value of true will result in the associated instance being suppressed.
        
        The indices represent the pattern instances in a row-column order, with the
        initial geometry not counting. For example, if you have a 4x4 pattern, the
        array will have 15 elements rather than 16 because the original geometry
        cannot be suppressed as part of the pattern. The first element in the array
        is the one next to the original in the first direction. The second element is
        the next one on the first row, and the third is the next one. The fourth element
        will be the first element in the row next to the first row that contains the
        original geometry.
        """
        pass
    @property
    def nativeObject(self) -> RectangularPatternConstraint:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return RectangularPatternConstraint()

class RectangularPatternFeature(Feature):
    """
    Object that represents an existing rectangular pattern feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RectangularPatternFeature:
        return RectangularPatternFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> RectangularPatternFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return RectangularPatternFeature()
    @property
    def inputEntities(self) -> core.ObjectCollection:
        """
        Gets and sets the entities to pattern using an ObjectCollection. The collection can contain BRepFace,
        PartFeature, BRepBody, or Occurrence objects. All of the entities provided must be the same type.
        For example, it must contain only bodies and can't contain both bodies and faces.
        
        ConstructionPoint, ConstructionAxis, and ConstructionPlane objects can also be patterned. When patterning any
        construction goemetry, only one entity can be patterned at a time, so the ObjectCollection will always contain a
        single entity
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()
    @inputEntities.setter
    def inputEntities(self, value: core.ObjectCollection):
        """
        Gets and sets the entities to pattern using an ObjectCollection. The collection can contain BRepFace,
        PartFeature, BRepBody, or Occurrence objects. All of the entities provided must be the same type.
        For example, it must contain only bodies and can't contain both bodies and faces.
        
        ConstructionPoint, ConstructionAxis, and ConstructionPlane objects can also be patterned. When patterning any
        construction goemetry, only one entity can be patterned at a time, so the ObjectCollection will always contain a
        single entity
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def directionOneEntity(self) -> core.Base:
        """
        Gets and sets the first direction entity.
        This can be a linear edge, construction axis, sketch line or rectangular pattern feature.
        If a rectangular pattern feature is set, the directionOneEntity and directionTwoEntity properties return the same rectangular pattern feature.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @directionOneEntity.setter
    def directionOneEntity(self, value: core.Base):
        """
        Gets and sets the first direction entity.
        This can be a linear edge, construction axis, sketch line or rectangular pattern feature.
        If a rectangular pattern feature is set, the directionOneEntity and directionTwoEntity properties return the same rectangular pattern feature.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def directionTwoEntity(self) -> core.Base:
        """
        Gets and sets the second direction entity.
        This can be a linear edge, construction axis, sketch line or rectangular pattern feature.
        If a rectangular pattern feature is set, the directionOneEntity and directionTwoEntity properties return the same rectangular pattern feature.
        This can be null when not entity has been specified to control the second direction. In this case Fusion will compute a default direction which is
        90 degrees to the direction one.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @directionTwoEntity.setter
    def directionTwoEntity(self, value: core.Base):
        """
        Gets and sets the second direction entity.
        This can be a linear edge, construction axis, sketch line or rectangular pattern feature.
        If a rectangular pattern feature is set, the directionOneEntity and directionTwoEntity properties return the same rectangular pattern feature.
        This can be null when not entity has been specified to control the second direction. In this case Fusion will compute a default direction which is
        90 degrees to the direction one.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def directionOne(self) -> core.Vector3D:
        """
        Returns a Vector3D indicating the positive direction of direction one.
        """
        return core.Vector3D()
    @property
    def directionTwo(self) -> core.Vector3D:
        """
        Returns a Vector3D indicating the positive direction of direction two.
        """
        return core.Vector3D()
    @property
    def quantityOne(self) -> ModelParameter:
        """
        Gets the number of instances in the first direction.
        Edit the value through ModelParameter.
        Returns nothing in the case where the feature is non-parametric.
        """
        return ModelParameter()
    @property
    def quantityTwo(self) -> ModelParameter:
        """
        Gets the number of instances in the second direction.
        Edit the value through ModelParameter.
        Returns nothing in the case where the feature is non-parametric.
        """
        return ModelParameter()
    @property
    def distanceOne(self) -> ModelParameter:
        """
        Gets the distance in the first direction.
        Edit the value through ModelParameter.
        Returns nothing in the case where the feature is non-parametric.
        """
        return ModelParameter()
    @property
    def distanceTwo(self) -> ModelParameter:
        """
        Gets the distance in the second direction.
        Edit the value through ModelParameter.
        Returns nothing in the case where the feature is non-parametric.
        """
        return ModelParameter()
    @property
    def isSymmetricInDirectionOne(self) -> bool:
        """
        Gets and sets if the pattern in direction one is in one direction or symmetric.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isSymmetricInDirectionOne.setter
    def isSymmetricInDirectionOne(self, value: bool):
        """
        Gets and sets if the pattern in direction one is in one direction or symmetric.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def isSymmetricInDirectionTwo(self) -> bool:
        """
        Gets and sets if the pattern in direction two is in one direction or symmetric.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isSymmetricInDirectionTwo.setter
    def isSymmetricInDirectionTwo(self, value: bool):
        """
        Gets and sets if the pattern in direction two is in one direction or symmetric.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def patternDistanceType(self) -> PatternDistanceType:
        """
        Gets and sets how the distance between elements is computed. Is initialized to ExtentPatternDistanceType when a new
        RectangularPatternFeatureInput has been created.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return PatternDistanceType()
    @patternDistanceType.setter
    def patternDistanceType(self, value: PatternDistanceType):
        """
        Gets and sets how the distance between elements is computed. Is initialized to ExtentPatternDistanceType when a new
        RectangularPatternFeatureInput has been created.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def suppressedElementsIds(self) -> list[int]:
        """
        Gets and sets the ids of the patterns to suppress.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return [int()]
    @suppressedElementsIds.setter
    def suppressedElementsIds(self, value: list[int]):
        """
        Gets and sets the ids of the patterns to suppress.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def patternElements(self) -> PatternElements:
        """
        Gets the PatternElements collection that contains the elements created by this pattern.
        """
        return PatternElements()
    @property
    def resultFeatures(self) -> core.ObjectCollection:
        """
        Get the features that were created for this pattern.
        Returns null in the case where the feature is parametric.
        """
        return core.ObjectCollection()
    @property
    def nativeObject(self) -> RectangularPatternFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return RectangularPatternFeature()
    @property
    def patternEntityType(self) -> PatternEntityTypes:
        """
        Returns the type of entities the pattern consists of. This can be used to help
        determine the type of results that will be found in the pattern elements.
        """
        return PatternEntityTypes()
    @property
    def patternComputeOption(self) -> PatternComputeOptions:
        """
        Gets and sets the compute option for this pattern feature.
        This property only applies when patterning features and is ignored in the direct modeling environment.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return PatternComputeOptions()
    @patternComputeOption.setter
    def patternComputeOption(self, value: PatternComputeOptions):
        """
        Gets and sets the compute option for this pattern feature.
        This property only applies when patterning features and is ignored in the direct modeling environment.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass

class RefoldFeature(Feature):
    """
    Object that represents an existing refold feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RefoldFeature:
        return RefoldFeature()

class RemoveFeature(Feature):
    """
    Object that represents an existing Remove feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RemoveFeature:
        return RemoveFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> RemoveFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this is not the NativeObject.
        """
        return RemoveFeature()
    @property
    def itemToRemove(self) -> core.Base:
        """
        Gets and sets the body or component occurrence to remove.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @property
    def nativeObject(self) -> RemoveFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return RemoveFeature()

class RenderEvent(core.Event):
    """
    A RenderEvent represents an event that occurs in reaction to the
    rendering process in the Render workspace.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RenderEvent:
        return RenderEvent()
    def add(self, handler: RenderEventHandler) -> bool:
        """
        Add a handler to be notified when the 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: RenderEventHandler) -> 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 RenderEventArgs(core.EventArgs):
    """
    The RenderEventArgs provides information associated with the render process.
    Render events happen when there's a change in state of the rendering process.
    The most typical is when the rendering process has reached a predefined quality.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RenderEventArgs:
        return RenderEventArgs()
    @property
    def viewport(self) -> core.Viewport:
        """
        Returns the viewport that the rendering was performed in when the render is an in-canvas rendering.
        """
        return core.Viewport()

class ReplaceFaceFeature(Feature):
    """
    Object that represents an existing replace face feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ReplaceFaceFeature:
        return ReplaceFaceFeature()
    def setInputEntities(self, sourceFaces: core.ObjectCollection, isTangentChain: bool) -> bool:
        """
        Method that sets faces to replace.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        sourceFaces : The collection can contain the faces from a solid and/or from features. All the faces must be on the same body.
        isTangentChain : A boolean value for setting whether or not faces that are tangentially connected to
        the input faces (if any) will also be included. A value of true indicates that tangent
        faces will be included.
        Returns true if successful.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> ReplaceFaceFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return ReplaceFaceFeature()
    @property
    def targetFaces(self) -> core.Base:
        """
        Gets and sets the entities that define the target faces. The new faces must completely intersect the part.
        The collection can contain the surface faces, surface bodies and construction planes.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @targetFaces.setter
    def targetFaces(self, value: core.Base):
        """
        Gets and sets the entities that define the target faces. The new faces must completely intersect the part.
        The collection can contain the surface faces, surface bodies and construction planes.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def isTangentChain(self) -> bool:
        """
        Gets if any faces that are tangentially connected to any of
        the input faces will also be included in setting InputEntities.
        """
        return bool()
    @property
    def nativeObject(self) -> ReplaceFaceFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return ReplaceFaceFeature()

class ReverseNormalFeature(Feature):
    """
    Object that represents an existing Reverse Normal feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ReverseNormalFeature:
        return ReverseNormalFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> ReverseNormalFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this is not the NativeObject.
        """
        return ReverseNormalFeature()
    @property
    def surfaces(self) -> core.ObjectCollection:
        """
        Gets and sets the surface bodies (open BRepBodies) whose faces normals are to be reversed.
        All faces of the input surface bodies get reversed.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()
    @surfaces.setter
    def surfaces(self, value: core.ObjectCollection):
        """
        Gets and sets the surface bodies (open BRepBodies) whose faces normals are to be reversed.
        All faces of the input surface bodies get reversed.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def nativeObject(self) -> ReverseNormalFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return ReverseNormalFeature()

class RevoluteJointMotion(JointMotion):
    """
    Represents the set of information specific to a revolute joint.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RevoluteJointMotion:
        return RevoluteJointMotion()
    @property
    def rotationAxis(self) -> JointDirections:
        """
        Gets and sets the direction of the axis of rotation. This can be set to
        XAxisJointDirection, YAxisJointDirection, or ZAxisJointDirection. It can
        return those three directions and CustomJointDirection. If this returns
        CustomJointDirection then the customRotationAxisEntity will return an entity
        that defines the axis. If there is a custom rotation axis defined and this
        property is set to one of the three standard axes, the custom rotation will
        be removed and customRotationAxisEntity will return null.
        """
        return JointDirections()
    @rotationAxis.setter
    def rotationAxis(self, value: JointDirections):
        """
        Gets and sets the direction of the axis of rotation. This can be set to
        XAxisJointDirection, YAxisJointDirection, or ZAxisJointDirection. It can
        return those three directions and CustomJointDirection. If this returns
        CustomJointDirection then the customRotationAxisEntity will return an entity
        that defines the axis. If there is a custom rotation axis defined and this
        property is set to one of the three standard axes, the custom rotation will
        be removed and customRotationAxisEntity will return null.
        """
        pass
    @property
    def rotationAxisVector(self) -> core.Vector3D:
        """
        Returns the direction of the rotation axis. This property will return null in the case
        where the RevolutionJointMotion object was obtained from a JointInput object.
        """
        return core.Vector3D()
    @property
    def customRotationAxisEntity(self) -> core.Base:
        """
        This property can be set using various types of entities that can infer an
        axis. For example, a linear edge, sketch line, planar face, and cylindrical face.
        This property is only valid in the case where the rotationAxis property returns
        CustomJointDirection. Setting this property will automatically set
        the rotationAxis property to CustomJointDirection.
        """
        return core.Base()
    @customRotationAxisEntity.setter
    def customRotationAxisEntity(self, value: core.Base):
        """
        This property can be set using various types of entities that can infer an
        axis. For example, a linear edge, sketch line, planar face, and cylindrical face.
        This property is only valid in the case where the rotationAxis property returns
        CustomJointDirection. Setting this property will automatically set
        the rotationAxis property to CustomJointDirection.
        """
        pass
    @property
    def rotationValue(self) -> float:
        """
        Gets and sets the rotation value. This is in radians. Setting this value is
        the equivalent of using the Drive Joints command.
        """
        return float()
    @rotationValue.setter
    def rotationValue(self, value: float):
        """
        Gets and sets the rotation value. This is in radians. Setting this value is
        the equivalent of using the Drive Joints command.
        """
        pass
    @property
    def rotationLimits(self) -> JointLimits:
        """
        Returns a JointLimits object that defines the rotation limits for this joint.
        Use the functionality of the returned JointLimits object to get, set, and modify
        the joint limits.
        """
        return JointLimits()

class RevolveFeature(Feature):
    """
    Object that represents an existing revolve feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RevolveFeature:
        return RevolveFeature()
    def setAngleExtent(self, isSymmetric: bool, angle: core.ValueInput) -> bool:
        """
        Defines the extent of the revolution to be at a defined angle.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        isSymmetric : Boolean that specifies if the extent is symmetric or not.
        angle : ValueInput object that defines the angle. This can be a string or a value. If
        it's a string it is interpreted using the current document units and can include
        equations. For example all of the following are valid as long as they result in
        angle units; "45", "45 deg", "a1 / 2". If a value is input it is interpreted
        as radians.
        
        If isSymmetric is false a positive or negative angle can be
        used to control the direction. If isSymmetric is true, the angle is the extent in one
        direction so the entire angle of the revolution will be twice the specified angle.
        Use an angle of 360 deg or 2 pi radians to create a full revolve.
        Returns true if successful
        """
        return bool()
    def setTwoSideAngleExtent(self, angleOne: core.ValueInput, angleTwo: core.ValueInput) -> bool:
        """
        Changes the extent of the revolve to be defined as a two sided angle extent.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        angleOne : ValueInput object that defines the first angle. This can be a string or a value. If
        it's a string it is interpreted using the current document units and can include
        equations. For example all of the following are valid as long as they result in
        angle units; "45", "45 deg", "a1 / 2". If a value is input it is interpreted
        as radians.
        angleTwo : ValueInput object that defines the second angle. This can be a string or a value. If
        it's a string it is interpreted using the current document units and can include
        equations. For example all of the following are valid as long as they result in
        angle units; "45", "45 deg", "a1 / 2". If a value is input it is interpreted
        as radians.
        Returns true if successful
        """
        return bool()
    def setOneSideToExtent(self, toEntity: core.Base, directionHint: core.Vector3D = None) -> bool:
        """
        Changes the extent of the revolve to be from the sketch plane to the specified "to" face.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        toEntity : The entity that defines the "to" extent. The valid types of entities can vary depending on
        the type of feature this is being used with. For a revolve it can be a BRepBody, BRepFace,
        BRepVertex, ConstructionPlane, or ConstructionPoint.
        directionHint : Specifies the direction of the revolve.
        Returns true if successful.
        """
        return bool()
    def setTwoSidesToExtent(self, toEntityOne: core.Base, toEntityTwo: core.Base) -> bool:
        """
        Changes the extent of the revolve to be defined as a two sided to extent.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        toEntityOne : The first entity that defines the "to" extent. The valid types of entities can vary depending on
        the type of feature this is being used with. For a revolve it can be a BRepBody, BRepFace,
        BRepVertex, ConstructionPlane, or ConstructionPoint.
        toEntityTwo : The second entity that defines the "to" extent. The valid types of entities can vary depending on
        the type of feature this is being used with. For a revolve it can be a BRepBody, BRepFace,
        BRepVertex, ConstructionPlane, or ConstructionPoint.
        Returns true if successful
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> RevolveFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return RevolveFeature()
    @property
    def profile(self) -> core.Base:
        """
        Gets and sets the profiles or planar faces used to define the shape of the revolve.
        This property can return or be set with a single Profile, a single planar face, or
        an ObjectCollection consisting of multiple profiles and planar faces. When an
        ObjectCollection is used all of the profiles and faces must be co-planar.
        
        When setting this property of a surface (non-solid) extrusion, you can use the
        createOpenProfile and createBRepEdgeProfile methods of the Component object to create
        an open profile.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        
        This property returns null in the case where the feature is non-parametric.
        """
        return core.Base()
    @profile.setter
    def profile(self, value: core.Base):
        """
        Gets and sets the profiles or planar faces used to define the shape of the revolve.
        This property can return or be set with a single Profile, a single planar face, or
        an ObjectCollection consisting of multiple profiles and planar faces. When an
        ObjectCollection is used all of the profiles and faces must be co-planar.
        
        When setting this property of a surface (non-solid) extrusion, you can use the
        createOpenProfile and createBRepEdgeProfile methods of the Component object to create
        an open profile.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        
        This property returns null in the case where the feature is non-parametric.
        """
        pass
    @property
    def axis(self) -> core.Base:
        """
        Gets and sets the entity used to define the axis of revolution.
        The axis can be a sketch line, construction axis, linear edge or a face that defines an
        axis (cylinder, cone, torus, etc.). If it is not in the same plane as the profile, it is
        projected onto the profile plane.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @axis.setter
    def axis(self, value: core.Base):
        """
        Gets and sets the entity used to define the axis of revolution.
        The axis can be a sketch line, construction axis, linear edge or a face that defines an
        axis (cylinder, cone, torus, etc.). If it is not in the same plane as the profile, it is
        projected onto the profile plane.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def operation(self) -> FeatureOperations:
        """
        Gets and sets the type of operation performed by the revolve.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return FeatureOperations()
    @operation.setter
    def operation(self, value: FeatureOperations):
        """
        Gets and sets the type of operation performed by the revolve.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def extentDefinition(self) -> ExtentDefinition:
        """
        Gets the definition object that is defining the extent of the revolve. Modifying the
        definition object will cause the revolve to recompute. Various types of objects can
        be returned depending on the type of extent currently defined for the revolve.
        This property returns nothing in the case where the feature is non-parametric.
        """
        return ExtentDefinition()
    @property
    def startFaces(self) -> BRepFaces:
        """
        Property that returns the set of faces that cap one end of the revolve and are coincident
        with the sketch plane. In the case of a symmetric revolve these faces are the ones on the
        positive normal side of the sketch plane. In the case where there aren't any start faces,
        this property will return null.
        """
        return BRepFaces()
    @property
    def endFaces(self) -> BRepFaces:
        """
        Property that returns the set of faces that cap the end of the revolve opposite the
        start faces. In the case where there aren't any start faces, this property will return null.
        """
        return BRepFaces()
    @property
    def sideFaces(self) -> BRepFaces:
        """
        Property that returns all of the faces created around the perimeter of the feature.
        """
        return BRepFaces()
    @property
    def nativeObject(self) -> RevolveFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return RevolveFeature()
    @property
    def isSolid(self) -> bool:
        """
        Indicates if this feature was initially created as a solid or a surface.
        """
        return bool()
    @property
    def participantBodies(self) -> list[BRepBody]:
        """
        Gets and sets the list of bodies that will participate in the feature when the operation is a cut or intersection.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return [BRepBody()]
    @participantBodies.setter
    def participantBodies(self, value: list[BRepBody]):
        """
        Gets and sets the list of bodies that will participate in the feature when the operation is a cut or intersection.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def isProjectAxis(self) -> bool:
        """
        Specifies if the axis should be projected on the same plane as the profile sketch plane or not.
        
        Setting this to true will use a projected axis, while setting it to false will keep it in its original location.
        This is initialized to false so the selected axis will be used in the feature.
        """
        return bool()
    @isProjectAxis.setter
    def isProjectAxis(self, value: bool):
        """
        Specifies if the axis should be projected on the same plane as the profile sketch plane or not.
        
        Setting this to true will use a projected axis, while setting it to false will keep it in its original location.
        This is initialized to false so the selected axis will be used in the feature.
        """
        pass

class RibFeature(Feature):
    """
    Object that represents an existing Rib feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RibFeature:
        return RibFeature()

class RigidJointMotion(JointMotion):
    """
    Represents the set of information specific to a rigid joint. A
    rigid joint doesn't support any additional information beyond
    getting the joint type which it derives from JointMotion.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RigidJointMotion:
        return RigidJointMotion()

class RipFeature(Feature):
    """
    Object that represents an existing Rip feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RipFeature:
        return RipFeature()
    def setByFace(self, face: BRepFace) -> bool:
        """
        This input method is for creating a rip from a face.
        face : The sheet metal face that defines the rip.
        Returns true if the rip definition is successful.
        """
        return bool()
    def redefineToAlongEdge(self, edge: BRepEdge, gapDistance: core.ValueInput) -> bool:
        """
        Redefines the feature to be a rip along an edge.
        edge : The BRepEdge that defines the rip.
        gapDistance : The gap distance of the rip.
        Returns true if the rip definition is successful.
        """
        return bool()
    def redefineToBetweenPoints(self, pointOneEntity: core.Base, pointTwoEntity: core.Base, gapDistance: core.ValueInput, pointOneOffset: core.ValueInput = None, pointTwoOffset: core.ValueInput = None) -> bool:
        """
        Redefines the feature to be a rip between two points.
        pointOneEntity : The first point of the rip. This can be defined using a BrepVertex or a BRepEdge and offset to define
        where the point is along the edge. If an edge is specified, the pointOneOffset parameter must be specified.
        pointTwoEntity : The second point of the rip and must lie on the same face as point 1. This can be defined using a
        BrepVertex or a BRepEdge and an offset to define where the point is along the edge.
        If an edge is specified, the pointTwoOffset parameter must be specified.
        gapDistance : The gap distance of the rip.
        pointOneOffset : If the first point lies on an edge, then this is the offset along the edge which defines the point.
        This is the physical distance from the topological start of the edge.
        If the offset is negative or exceeds the edge length, the corresponding vertex of the edge will be used.
        pointTwoOffset : If the second point lies on an edge, then this is the offset along the edge which defines the point.
        This is the physical distance from the topological start of the edge.
        If the offset is negative or exceeds the edge length, the corresponding vertex of the edge will be used.
        Returns true if the rip definition is successful.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> RipFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this is not the NativeObject.
        """
        return RipFeature()
    @property
    def definitionType(self) -> RipFeatureDefinitionTypes:
        """
        Gets the type of rip defined.
        """
        return RipFeatureDefinitionTypes()
    @property
    def definition(self) -> RipFeatureDefinition:
        """
        Returns the RipFeatureDefinition object which provides access to the information
        defining this RipFeature and the ability to edit it.
        """
        return RipFeatureDefinition()
    @property
    def nativeObject(self) -> RipFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return RipFeature()

class RolledHemFeatureDefinition(HemFeatureDefinition):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The definition for a rolled hem.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RolledHemFeatureDefinition:
        return RolledHemFeatureDefinition()
    @property
    def radius(self) -> ModelParameter:
        """
        Gets the radius for a rolled hem.
        """
        return ModelParameter()
    @property
    def angle(self) -> ModelParameter:
        """
        Gets the angle for a rolled hem.
        """
        return ModelParameter()

class RopeHemFeatureDefinition(HemFeatureDefinition):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The definition for a rope hem.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RopeHemFeatureDefinition:
        return RopeHemFeatureDefinition()
    @property
    def radius(self) -> ModelParameter:
        """
        Gets the radius for a rope hem.
        """
        return ModelParameter()
    @property
    def gap(self) -> ModelParameter:
        """
        Gets the gap for a rope hem.
        """
        return ModelParameter()
    @property
    def length(self) -> ModelParameter:
        """
        Gets the length for a rope hem.
        """
        return ModelParameter()

class RuledSurfaceFeature(Feature):
    """
    Object that represents an existing RuledSurface feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> RuledSurfaceFeature:
        return RuledSurfaceFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> RuledSurfaceFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this is not the NativeObject.
        """
        return RuledSurfaceFeature()
    @property
    def profile(self) -> core.Base:
        """
        Gets and sets the Profile object that defines the sketch geometry or edges that define the shape of
        the ruled surface. The Component.createBRepEdgeProfile method is useful to create a profile defined from edges.
        
        In many cases the RuledSurface operation results in the profile being consumed so it is no longer available
        after the feature is created. In this case, you need to reposition the timeline marker to just before this feature,
        when the profile still exists.
        """
        return core.Base()
    @profile.setter
    def profile(self, value: core.Base):
        """
        Gets and sets the Profile object that defines the sketch geometry or edges that define the shape of
        the ruled surface. The Component.createBRepEdgeProfile method is useful to create a profile defined from edges.
        
        In many cases the RuledSurface operation results in the profile being consumed so it is no longer available
        after the feature is created. In this case, you need to reposition the timeline marker to just before this feature,
        when the profile still exists.
        """
        pass
    @property
    def distance(self) -> ModelParameter:
        """
        Returns the parameter controlling the Ruled Surface distance. You can edit the distance
        by editing the value of the parameter object.
        """
        return ModelParameter()
    @property
    def angle(self) -> ModelParameter:
        """
        Returns the parameter controlling the Ruled Surface angle. You can edit the angle
        by editing the value of the parameter object.
        """
        return ModelParameter()
    @property
    def ruledSurfaceType(self) -> RuledSurfaceTypes:
        """
        Gets and sets the type of ruled surface. To set this to DirectionRuledSurfaceType,
        use the direction property to set the direction entity, which will automatically set
        this to DirectionRuledSurfaceType.
        """
        return RuledSurfaceTypes()
    @ruledSurfaceType.setter
    def ruledSurfaceType(self, value: RuledSurfaceTypes):
        """
        Gets and sets the type of ruled surface. To set this to DirectionRuledSurfaceType,
        use the direction property to set the direction entity, which will automatically set
        this to DirectionRuledSurfaceType.
        """
        pass
    @property
    def direction(self) -> core.Base:
        """
        Gets and sets the entity that defines the direction when the ruled surface type is DirectionRuledSurfaceType.
        The direction is specified by providing a linear or planar entity. For example, a linear edge, construction axis,
        planar face, or construction plane can be used as input.
        
        If this property is set when the ruledSurfaceType is not DirectionRuledSurfaceType, the type will automatically be
        changed to DirectionRuledSurfaceType. If you get this property when the direction is not DirectionRuledSurfaceType,
        it will return null.
        """
        return core.Base()
    @direction.setter
    def direction(self, value: core.Base):
        """
        Gets and sets the entity that defines the direction when the ruled surface type is DirectionRuledSurfaceType.
        The direction is specified by providing a linear or planar entity. For example, a linear edge, construction axis,
        planar face, or construction plane can be used as input.
        
        If this property is set when the ruledSurfaceType is not DirectionRuledSurfaceType, the type will automatically be
        changed to DirectionRuledSurfaceType. If you get this property when the direction is not DirectionRuledSurfaceType,
        it will return null.
        """
        pass
    @property
    def alternateFace(self) -> bool:
        """
        Gets and sets if the other face is used for creation of the Ruled Surface.
        When creating a ruled surface using the edges of a solid or the interior edges
        of a surface the angle of the ruled surface is measured with respect to the
        face the selected edge is bounding. For a solid, or an interior edge on a surface,
        the edge connects to two faces. This setting toggles which of the two faces will
        be used for measuring the angle.
        """
        return bool()
    @alternateFace.setter
    def alternateFace(self, value: bool):
        """
        Gets and sets if the other face is used for creation of the Ruled Surface.
        When creating a ruled surface using the edges of a solid or the interior edges
        of a surface the angle of the ruled surface is measured with respect to the
        face the selected edge is bounding. For a solid, or an interior edge on a surface,
        the edge connects to two faces. This setting toggles which of the two faces will
        be used for measuring the angle.
        """
        pass
    @property
    def nativeObject(self) -> RuledSurfaceFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return RuledSurfaceFeature()
    @property
    def cornerType(self) -> RuledSurfaceCornerTypes:
        """
        Gets and sets the corner type for the ruled surface, indicating if the corners will be rounded or mitered.
        The default value is rounded.
        """
        return RuledSurfaceCornerTypes()
    @cornerType.setter
    def cornerType(self, value: RuledSurfaceCornerTypes):
        """
        Gets and sets the corner type for the ruled surface, indicating if the corners will be rounded or mitered.
        The default value is rounded.
        """
        pass

class SATExportOptions(ExportOptions):
    """
    Defines that a SAT export is to be done and specifies the various options.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SATExportOptions:
        return SATExportOptions()

class ScaleFeature(Feature):
    """
    Object that represents an existing scale feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ScaleFeature:
        return ScaleFeature()
    def setToUniform(self, scaleFactor: core.ValueInput) -> bool:
        """
        Calling this method will change to a uniform scale.
        The isUniform is set to true if successful.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        scaleFactor : A ValueInput object that defines the scale factor.
        Returns true if successful.
        """
        return bool()
    def setToNonUniform(self, xScale: core.ValueInput, yScale: core.ValueInput, zScale: core.ValueInput) -> bool:
        """
        Calling this method will change to a non-uniform scale.
        Fails of the inputEntities collection contains sketches or components.
        The isUniform is set to false if successful.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        xScale : A ValueInput object that defines the scale in the X direction.
        yScale : A ValueInput object that defines the scale in the Y direction.
        zScale : A ValueInput object that defines the scale in the Z direction.
        Returns true if successful.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> ScaleFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return ScaleFeature()
    @property
    def inputEntities(self) -> core.ObjectCollection:
        """
        Gets and sets the input entities.
        This collection can contain sketches, BRep bodies and T-Spline bodies in parametric modeling.
        It can contain sketches, BRep bodies, T-Spline bodies, mesh bodies, root component and occurrences in non-parametric modeling.
        If the scaling is non-uniform (the isUniform property is false), this collection cannot contain sketches or components.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()
    @inputEntities.setter
    def inputEntities(self, value: core.ObjectCollection):
        """
        Gets and sets the input entities.
        This collection can contain sketches, BRep bodies and T-Spline bodies in parametric modeling.
        It can contain sketches, BRep bodies, T-Spline bodies, mesh bodies, root component and occurrences in non-parametric modeling.
        If the scaling is non-uniform (the isUniform property is false), this collection cannot contain sketches or components.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def point(self) -> core.Base:
        """
        Gets and sets the point as reference to scale. This can be a BRepVertex, a SketchPoint or a ConstructionPoint.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @point.setter
    def point(self, value: core.Base):
        """
        Gets and sets the point as reference to scale. This can be a BRepVertex, a SketchPoint or a ConstructionPoint.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def isUniform(self) -> bool:
        """
        Gets if it's uniform scale.
        """
        return bool()
    @property
    def scaleFactor(self) -> ModelParameter:
        """
        Returns the parameter that controls the uniform scale factor. This will return null in the case
        where isUniform is false or the feature is non-parametric. You can use the properties and
        methods on the ModelParameter object to get and set the value.
        """
        return ModelParameter()
    @property
    def xScale(self) -> ModelParameter:
        """
        Returns the parameter that controls the X scale factor. This will return null in the case
        where isUniform is false or the feature is non-parametric. You can use the properties and
        methods on the ModelParameter object to get and set the value.
        """
        return ModelParameter()
    @property
    def yScale(self) -> ModelParameter:
        """
        Returns the parameter that controls the Y scale factor. This will return null in the case
        where isUniform is false or the feature is non-parametric. You can use the properties and
        methods on the ModelParameter object to get and set the value.
        """
        return ModelParameter()
    @property
    def zScale(self) -> ModelParameter:
        """
        Returns the parameter that controls the Z scale factor. This will return null in the case
        where isUniform is false or the feature is non-parametric. You can use the properties and
        methods on the ModelParameter object to get and set the value.
        """
        return ModelParameter()
    @property
    def nativeObject(self) -> ScaleFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return ScaleFeature()

class SectionAnalysis(Analysis):
    """
    Represents any existing Section Analysis that exist in the design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SectionAnalysis:
        return SectionAnalysis()
    def flip(self) -> bool:
        """
        A property that flips which side of the part is cut away by the section. This is a
        convenience method that results in flipping the Z axis of the transform while maintaining
        a valid rectangular coordinate system. You can directly manipulate the transform matrix
        to have the same effect.
        """
        return bool()
    @property
    def cutPlane(self) -> core.Base:
        """
        A property that gets and sets the planar entity used to define the cut plane and can be either
        a planar BRepFace or a ConstructionPlane object.
        """
        return core.Base()
    @cutPlane.setter
    def cutPlane(self, value: core.Base):
        """
        A property that gets and sets the planar entity used to define the cut plane and can be either
        a planar BRepFace or a ConstructionPlane object.
        """
        pass
    @property
    def initialPosition(self) -> core.Matrix3D:
        """
        Returns the matrix that describes the initial position and orientation of the
        specified cut plane entity. Any additional offsets or rotations are defined
        by a transformation matrix that is applied to this initial position. That
        matrix can be obtained and set using the transform property.
        """
        return core.Matrix3D()
    @property
    def transform(self) -> core.Matrix3D:
        """
        The initial position of the section plane is defined by the specified cut plane
        entity. Any offsets or rotations are defined by a transformation matrix that is
        applied to the initial position. This property allows you to get and set the
        transformation matrix.
        """
        return core.Matrix3D()
    @transform.setter
    def transform(self, value: core.Matrix3D):
        """
        The initial position of the section plane is defined by the specified cut plane
        entity. Any offsets or rotations are defined by a transformation matrix that is
        applied to the initial position. This property allows you to get and set the
        transformation matrix.
        """
        pass
    @property
    def sectionColor(self) -> core.Color:
        """
        A property that gets and sets the color of the section. A value of null indicates
        the component color should be used. The opacity value of the color is ignored.
        """
        return core.Color()
    @sectionColor.setter
    def sectionColor(self, value: core.Color):
        """
        A property that gets and sets the color of the section. A value of null indicates
        the component color should be used. The opacity value of the color is ignored.
        """
        pass
    @property
    def isHatchShown(self) -> bool:
        """
        A property that gets and sets if a hatch pattern should be shown on the section.
        """
        return bool()
    @isHatchShown.setter
    def isHatchShown(self, value: bool):
        """
        A property that gets and sets if a hatch pattern should be shown on the section.
        """
        pass

class ShellFeature(Feature):
    """
    Object that represents an existing shell feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ShellFeature:
        return ShellFeature()
    def setInputEntities(self, inputEntities: core.ObjectCollection, isTangentChain: bool = True) -> bool:
        """
        Method that sets faces to remove and bodies to preform shell. Return false if any faces are input, and the owning bodies of the faces are also input.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        inputEntities : The collection contains the faces to remove and the bodies to perform shell.
        Fails if any faces are input, and the owning bodies of the faces are also input.
        isTangentChain : A boolean value for setting whether or not faces that are tangentially connected to
        the input faces (if any) will also be included. It defaults to true.
        Returns true if successful
        """
        return bool()
    def setThicknesses(self, insideThickness: core.ValueInput, outsideThickness: core.ValueInput) -> bool:
        """
        Method that sets the inside and outside thicknesses of the shell.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        insideThickness : ValueInput object that defines the inside thickness. If set to null, the inside thickness is removed.
        outsideThickness : ValueInput object that defines the outside thickness. If set to null, the outside thickness is removed.
        Returns true if successful
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> ShellFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return ShellFeature()
    @property
    def inputEntities(self) -> core.ObjectCollection:
        """
        Gets the input faces/bodies.
        """
        return core.ObjectCollection()
    @property
    def isTangentChain(self) -> bool:
        """
        Gets if any faces that are tangentially connected to any of
        the input faces will also be included in setting InputEntities.
        """
        return bool()
    @property
    def insideThickness(self) -> ModelParameter:
        """
        Gets the inside thickness.
        Edit the thickness through ModelParameter.
        This property returns nothing in the case where the feature is non-parametric.
        """
        return ModelParameter()
    @property
    def outsideThickness(self) -> ModelParameter:
        """
        Gets the outside thickness.
        Edit the thickness through ModelParameter.
        This property returns nothing in the case where the feature is non-parametric.
        """
        return ModelParameter()
    @property
    def nativeObject(self) -> ShellFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return ShellFeature()
    @property
    def shellType(self) -> ShellTypes:
        """
        The shell type used when creating a shell.
        The default value is SharpOffsetShellType.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return ShellTypes()
    @shellType.setter
    def shellType(self, value: ShellTypes):
        """
        The shell type used when creating a shell.
        The default value is SharpOffsetShellType.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass

class SilhouetteSplitFeature(Feature):
    """
    Object that represents an existing silhouette split feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SilhouetteSplitFeature:
        return SilhouetteSplitFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SilhouetteSplitFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this is not the NativeObject.
        """
        return SilhouetteSplitFeature()
    @property
    def viewDirection(self) -> core.Base:
        """
        Gets and sets the entity that defines the silhouette view direction, which can be a
        construction axis, linear BRepEdge, planar BRepFace or a construction plane.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @viewDirection.setter
    def viewDirection(self, value: core.Base):
        """
        Gets and sets the entity that defines the silhouette view direction, which can be a
        construction axis, linear BRepEdge, planar BRepFace or a construction plane.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def targetBody(self) -> BRepBody:
        """
        Gets and sets the solid body to split.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return BRepBody()
    @targetBody.setter
    def targetBody(self, value: BRepBody):
        """
        Gets and sets the solid body to split.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def operation(self) -> SilhouetteSplitOperations:
        """
        Gets the type of silhouette split operation.
        """
        return SilhouetteSplitOperations()
    @property
    def nativeObject(self) -> SilhouetteSplitFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SilhouetteSplitFeature()

class SketchAngularDimension(SketchDimension):
    """
    An angular dimension in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchAngularDimension:
        return SketchAngularDimension()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SketchAngularDimension:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SketchAngularDimension()
    @property
    def lineOne(self) -> SketchLine:
        """
        The first line being constrained.
        """
        return SketchLine()
    @property
    def lineTwo(self) -> SketchLine:
        """
        The second line being constrained.
        """
        return SketchLine()
    @property
    def nativeObject(self) -> SketchAngularDimension:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SketchAngularDimension()

class SketchConcentricCircleDimension(SketchDimension):
    """
    A concentric circle dimension in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchConcentricCircleDimension:
        return SketchConcentricCircleDimension()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SketchConcentricCircleDimension:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SketchConcentricCircleDimension()
    @property
    def circleOne(self) -> SketchCurve:
        """
        Returns the first concentric circle or arc.
        """
        return SketchCurve()
    @property
    def circleTwo(self) -> SketchCurve:
        """
        Returns the second concentric circle or arc.
        """
        return SketchCurve()
    @property
    def nativeObject(self) -> SketchConcentricCircleDimension:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SketchConcentricCircleDimension()

class SketchCurve(SketchEntity):
    """
    A single sketch curve. This is the base class for the specific curve types.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchCurve:
        return SketchCurve()
    def split(self, splitPoint: core.Point3D, createConstraints: bool = True) -> core.ObjectCollection:
        """
        Split a curve at a position specified along the curve
        splitPoint : A position (transient Point3D) on the curve that defines the point at which to split the curve
        createConstraints : Constraints are created by default. Specify false to create no constraints.
        Returns the resulting 2 curves; the original curve + the newly created curve
        When split spline the original is deleted and two new curves returned.
        Empty collection returned if curve is closed.
        """
        return core.ObjectCollection()
    def trim(self, segmentPoint: core.Point3D, createConstraints: bool = True) -> core.ObjectCollection:
        """
        Trim a curve by specifying a point that determines the segment of the curve to trim away
        segmentPoint : A point (transient Point3D) on or closest to the segment of the curve to remove. (start, end or middle)
        The segment of the curve closest to the segmentPoint gets removed
        createConstraints : Constraints are created by default. Specify false to not create constraints.
        When trimming the start or end side of a line, unclosed circular or elliptical arc, the original entity is modified and returned
        When trimming the middle of a line, unclosed circular or elliptical arc the original entity is deleted and two new entities are returned
        When trimming the start or end of any type of closed curve, the original is deleted and a new curve is returned
        Any trimming of a spline (open or closed) deletes the original and new spline/s are returned
        Trimming a curve having no intersections deletes the original and returns an empty collection
        """
        return core.ObjectCollection()
    def breakCurve(self, segmentPoint: core.Point3D, createConstraints: bool = True) -> core.ObjectCollection:
        """
        Breaks a curve into two or three pieces by finding intersections of this curve with all other curves in the
        sketch and splitting this curve at the nearest intersections to a specified point on the curve.
        segmentPoint : A point that specifies the segment of the curve that is to be split from the rest of the curve. The nearest
        intersection(s) to this point define the break location(s).
        createConstraints : Optional argument that specifies if constraints should be created between the new curve segments. A value of
        true indicates constraints will be created.
        All of the curves resulting from the break are returned in an ObjectCollection. In the case where no intersections
        are found and as a result the curve is not broken, an empty ObjectCollection is returned.
        """
        return core.ObjectCollection()
    def extend(self, endPoint: core.Point3D, createConstraints: bool = True) -> core.ObjectCollection:
        """
        Extend a curve by specifying a point that determines the end of the curve to extend
        endPoint : A point (transient Point3D) on or closest to the end of the curve to extend. (start or end)
        The end of the curve closest to the endPoint gets extended
        createConstraints : Constraints are created by default. Specify false to not create constraints.
        Returns the modified original curve if the start or end of the curve is extended
        If the extend joins a curve to another, the two original curves are deleted and a new curve is returned
        If an arc is extended so as to become a circle, the original arc is deleted and a new circle is returned
        """
        return core.ObjectCollection()
    def intersections(self, sketchCurves: core.ObjectCollection) -> tuple[bool, core.ObjectCollection, core.ObjectCollection]:
        """
        Get the curves that intersect this curve along with the intersection points (Point3D)
        sketchCurves : A collection of curves to attempt to find intersections with.
        Set the value of this parameter to null to use all curves in the sketch for the calculation.
        intersectingCurves : A collection of the actual intersecting curves
        intersectionPoints : A collection of intersection points (Point3D)
        Item numbers in this collection correspond to the item numbers in the intersectingCurves collection.
        Returns true if the method was successful. It can be successful regardless of whether intersections were found or not.
        """
        return (bool(), core.ObjectCollection(), core.ObjectCollection())
    @property
    def length(self) -> float:
        """
        Returns the length of the curve in centimeters.
        """
        return float()
    @property
    def isConstruction(self) -> bool:
        """
        Gets and sets whether this curve is construction geometry.
        """
        return bool()
    @isConstruction.setter
    def isConstruction(self, value: bool):
        """
        Gets and sets whether this curve is construction geometry.
        """
        pass

class SketchDiameterDimension(SketchDimension):
    """
    An diameter dimension in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchDiameterDimension:
        return SketchDiameterDimension()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SketchDiameterDimension:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SketchDiameterDimension()
    @property
    def entity(self) -> SketchCurve:
        """
        Returns the arc or circle being constrained.
        """
        return SketchCurve()
    @property
    def nativeObject(self) -> SketchDiameterDimension:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SketchDiameterDimension()

class SketchDistanceBetweenLineAndPlanarSurfaceDimension(SketchDimension):
    """
    A linear dimension in a sketch between a sketch line and a planar surface.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchDistanceBetweenLineAndPlanarSurfaceDimension:
        return SketchDistanceBetweenLineAndPlanarSurfaceDimension()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SketchDistanceBetweenLineAndPlanarSurfaceDimension:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SketchDistanceBetweenLineAndPlanarSurfaceDimension()
    @property
    def line(self) -> SketchLine:
        """
        The sketch line being constrained.
        """
        return SketchLine()
    @property
    def planarSurface(self) -> core.Base:
        """
        The planar surface the dimension is anchored to. This can be a planar BRepFace or a ConstructionPlane.
        """
        return core.Base()
    @property
    def nativeObject(self) -> SketchDistanceBetweenLineAndPlanarSurfaceDimension:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SketchDistanceBetweenLineAndPlanarSurfaceDimension()

class SketchDistanceBetweenPointAndSurfaceDimension(SketchDimension):
    """
    A linear dimension in a sketch between a sketch point and a surface.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchDistanceBetweenPointAndSurfaceDimension:
        return SketchDistanceBetweenPointAndSurfaceDimension()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SketchDistanceBetweenPointAndSurfaceDimension:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SketchDistanceBetweenPointAndSurfaceDimension()
    @property
    def point(self) -> SketchPoint:
        """
        The sketch point being constrained.
        """
        return SketchPoint()
    @property
    def surface(self) -> core.Base:
        """
        The BRepFace or ConstructionPlane to which the dimension is anchored. Planar, cylindrical, spherical and conical faces are supported.
        """
        return core.Base()
    @property
    def nativeObject(self) -> SketchDistanceBetweenPointAndSurfaceDimension:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SketchDistanceBetweenPointAndSurfaceDimension()

class SketchEllipseMajorRadiusDimension(SketchDimension):
    """
    An ellipse major radius dimension in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchEllipseMajorRadiusDimension:
        return SketchEllipseMajorRadiusDimension()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SketchEllipseMajorRadiusDimension:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SketchEllipseMajorRadiusDimension()
    @property
    def ellipse(self) -> SketchCurve:
        """
        Returns the ellipse or elliptical arc being constrained.
        """
        return SketchCurve()
    @property
    def nativeObject(self) -> SketchEllipseMajorRadiusDimension:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SketchEllipseMajorRadiusDimension()

class SketchEllipseMinorRadiusDimension(SketchDimension):
    """
    An ellipse minor radius dimension in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchEllipseMinorRadiusDimension:
        return SketchEllipseMinorRadiusDimension()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SketchEllipseMinorRadiusDimension:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SketchEllipseMinorRadiusDimension()
    @property
    def ellipse(self) -> SketchCurve:
        """
        Returns the ellipse or elliptical arc being constrained.
        """
        return SketchCurve()
    @property
    def nativeObject(self) -> SketchEllipseMinorRadiusDimension:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SketchEllipseMinorRadiusDimension()

class SketchLinearDiameterDimension(SketchDimension):
    """
    A linear diameter dimension in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchLinearDiameterDimension:
        return SketchLinearDiameterDimension()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SketchLinearDiameterDimension:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SketchLinearDiameterDimension()
    @property
    def line(self) -> SketchLine:
        """
        The first line being constrained.
        """
        return SketchLine()
    @property
    def entityTwo(self) -> SketchEntity:
        """
        The second entity being constrained. (a parallel SketchLine or a SketchPoint)
        """
        return SketchEntity()
    @property
    def nativeObject(self) -> SketchLinearDiameterDimension:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SketchLinearDiameterDimension()

class SketchLinearDimension(SketchDimension):
    """
    A linear dimension in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchLinearDimension:
        return SketchLinearDimension()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SketchLinearDimension:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SketchLinearDimension()
    @property
    def entityOne(self) -> SketchEntity:
        """
        The first entity being constrained.
        """
        return SketchEntity()
    @property
    def entityTwo(self) -> SketchEntity:
        """
        The second entity being constrained.
        """
        return SketchEntity()
    @property
    def orientation(self) -> DimensionOrientations:
        """
        The orientation of this dimension.
        """
        return DimensionOrientations()
    @property
    def nativeObject(self) -> SketchLinearDimension:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SketchLinearDimension()

class SketchOffsetCurvesDimension(SketchDimension):
    """
    A SketchOffsetCurvesDimension object is created automatically whenever curves are offset.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchOffsetCurvesDimension:
        return SketchOffsetCurvesDimension()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SketchOffsetCurvesDimension:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SketchOffsetCurvesDimension()
    @property
    def offsetConstraint(self) -> OffsetConstraint:
        """
        Returns the OffsetConstraint object that defines the curve offset. From the constraint
        you can get the original curves, the offset curves, and the dimension controlling the offset distance.
        """
        return OffsetConstraint()
    @property
    def nativeObject(self) -> SketchOffsetCurvesDimension:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SketchOffsetCurvesDimension()

class SketchOffsetDimension(SketchDimension):
    """
    An offset dimension in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchOffsetDimension:
        return SketchOffsetDimension()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SketchOffsetDimension:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SketchOffsetDimension()
    @property
    def line(self) -> SketchLine:
        """
        The first line being constrained.
        """
        return SketchLine()
    @property
    def entityTwo(self) -> SketchEntity:
        """
        The second entity being constrained. (a parallel SketchLine or a SketchPoint)
        """
        return SketchEntity()
    @property
    def nativeObject(self) -> SketchOffsetDimension:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SketchOffsetDimension()

class SketchPoint(SketchEntity):
    """
    A point within a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchPoint:
        return SketchPoint()
    def move(self, translation: core.Vector3D) -> bool:
        """
        Moves the sketch geometry using the specified transform.
        Move respects any constraints that would normally prohibit the move.
        This will fail in the case where the IsReference property is true.
        translation : The vector that defines the distance and direction to move.
        Returns true if moving the sketch point was successful.
        """
        return bool()
    def merge(self, point: SketchPoint) -> bool:
        """
        Merges the input sketch point into this sketch point. This effectively
        deletes the other sketch point and changes all entities that referenced
        that sketch point to reference this sketch point.
        
        This is the equivalent of dragging a sketch point on top of another
        sketch point in the user interface.
        point : The point to merge with this point.
        Returns true if the merge was successful.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SketchPoint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SketchPoint()
    def detach(self, curve: SketchCurve) -> SketchPoint:
        """
        This method disconnects the specified curve from the sketch point. The specified curve must
        use this point as one of its endpoints, and at least one other sketch curve must also use
        the point as its endpoint. Detaching the curve creates a new sketch point, which becomes
        the curve's end point. All other curves using the original sketch point will remain unaffected.
        curve : The sketch curve to detach from the sketch point. One of its end points must be the
        sketch point.
        If successful, the newly created sketch point that the curve was moved to is returned.
        Null is returned in the case of failure. Typical failure cases are if the specified curve
        is the only curve connected to the point or if the curve is not connected to the point.
        """
        return SketchPoint()
    @property
    def geometry(self) -> core.Point3D:
        """
        Returns a Point3D object which provides the position of the sketch point.
        The returned geometry is always in sketch space.
        """
        return core.Point3D()
    @property
    def worldGeometry(self) -> core.Point3D:
        """
        Returns a Point3D object which provides the position of the sketch point in world space.
        The returned coordinate takes into account the assembly context and the position of the
        sketch in its parent component, which means the coordinate will be returned in the root
        component space.
        """
        return core.Point3D()
    @property
    def nativeObject(self) -> SketchPoint:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SketchPoint()
    @property
    def connectedEntities(self) -> SketchEntityList:
        """
        Returns the set of sketch entities that are directly connected to this point. For
        example any entities that use this point as their start point or end point will be returned
        and any circle, arc or ellipse who have this point as a center point will be returned. This
        does not include entities that are related to the point through a constraint.
        """
        return SketchEntityList()

class SketchPointHolePositionDefinition(HolePositionDefinition):
    """
    Provides positioning information for a hole that is positioned by a sketch point.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchPointHolePositionDefinition:
        return SketchPointHolePositionDefinition()
    @property
    def sketchPoint(self) -> SketchPoint:
        """
        Returns the sketch point that defines the center of the hole.
        """
        return SketchPoint()

class SketchPointsBossPositionDefinition(BossPositionDefinition):
    """
    Provides positioning information for a boss feature that is positioned by a sketch point(s).
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchPointsBossPositionDefinition:
        return SketchPointsBossPositionDefinition()
    @property
    def sketchPoints(self) -> core.ObjectCollection:
        """
        Returns the sketch points that defines the position of the boss feature.
        """
        return core.ObjectCollection()

class SketchPointsHolePositionDefinition(HolePositionDefinition):
    """
    Provides positioning information for a hole that is positioned by a sketch point.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchPointsHolePositionDefinition:
        return SketchPointsHolePositionDefinition()
    @property
    def sketchPoints(self) -> core.ObjectCollection:
        """
        Returns the sketch point that defines the center of the hole.
        """
        return core.ObjectCollection()

class SketchRadialDimension(SketchDimension):
    """
    An radial dimension in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchRadialDimension:
        return SketchRadialDimension()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SketchRadialDimension:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SketchRadialDimension()
    @property
    def entity(self) -> SketchCurve:
        """
        The arc or circle being constrained.
        """
        return SketchCurve()
    @property
    def nativeObject(self) -> SketchRadialDimension:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SketchRadialDimension()

class SketchTangentDistanceDimension(SketchDimension):
    """
    A distance dimension measuring to the tangent on one or two circles or arcs.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchTangentDistanceDimension:
        return SketchTangentDistanceDimension()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SketchTangentDistanceDimension:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SketchTangentDistanceDimension()
    @property
    def entityOne(self) -> SketchEntity:
        """
        The first entity being constrained. This can be a SketchCircle, SketchArc,
        SketchLine, or SketchPoint.
        """
        return SketchEntity()
    @property
    def circleOrArc(self) -> SketchCurve:
        """
        The second entity being constrained which is always a SketchCircle or SketchArc.
        """
        return SketchCurve()
    @property
    def nativeObject(self) -> SketchTangentDistanceDimension:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SketchTangentDistanceDimension()

class SketchText(SketchEntity):
    """
    Text in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchText:
        return SketchText()
    def explode(self) -> list[SketchCurve]:
        """
        Explodes the SketchText into a set of curves. The original SketchText is deleted as a result of calling this.
        Returns an array of the sketch curves that were created that represent the text.
        """
        return [SketchCurve()]
    def asCurves(self) -> list[core.Curve3D]:
        """
        Returns the underlying curves that define the outline of the text. Calling this does not affect the
        SketchText and does not create any new sketch geometry but returns the geometrical definition of the
        sketch outline.
        Returns an array of transient curves that represent the outline of the text.
        """
        return [core.Curve3D()]
    def redefineAsFitOnPath(self, path: core.Base, isAbovePath: bool) -> bool:
        """
        Sets this SketchTextInput to define text that fits along a specified path. Fitting on a path will
        space the characters so the text fits along the entire length of the path entity.
        path : The entity that defines the path for the text. This can be a SketchCurve or BRepEdge object.
        isAbovePath : Indicates if the text should be positioned above or below the path entity.
        Returns true if the setting the definition was successful.
        """
        return bool()
    def redefineAsAlongPath(self, path: core.Base, isAbovePath: bool, horizontalAlignment: core.HorizontalAlignments, characterSpacing: float) -> bool:
        """
        Sets this SketchTextInput to define text that follows along a specified path.
        path : The entity that defines the path for the text. This can be a SketchCurve or BRepEdge object.
        isAbovePath : Indicates if the text should be positioned above or below the path entity.
        horizontalAlignment : Specifies the horizontal alignment of the text with respect to the path curve.
        characterSpacing : The spacing between the characters. This is an additional spacing to apply that is defined
        as a percentage of the default spacing. A spacing of 0 indicates no additional spacing.
        A spacing of 50 indicates to use the default plus 50% of the default.
        Returns true if the setting the definition was successful.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SketchText:
        """
        Creates a proxy object for the SketchText object that represents the SketchText
        object in the context of an assembly. The context is defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SketchText()
    @property
    def fontName(self) -> str:
        """
        Gets and sets the name of the font to use.
        """
        return str()
    @fontName.setter
    def fontName(self, value: str):
        """
        Gets and sets the name of the font to use.
        """
        pass
    @property
    def textStyle(self) -> TextStyles:
        """
        Gets and sets the text style to apply to the entire text. This is a bitwise enum so styles
        can be combined to apply multiple styles. For example you can apply bold and underline.
        """
        return TextStyles()
    @textStyle.setter
    def textStyle(self, value: TextStyles):
        """
        Gets and sets the text style to apply to the entire text. This is a bitwise enum so styles
        can be combined to apply multiple styles. For example you can apply bold and underline.
        """
        pass
    @property
    def isHorizontalFlip(self) -> bool:
        """
        Gets and sets if the text is flipped horizontally.
        """
        return bool()
    @isHorizontalFlip.setter
    def isHorizontalFlip(self, value: bool):
        """
        Gets and sets if the text is flipped horizontally.
        """
        pass
    @property
    def isVerticalFlip(self) -> bool:
        """
        Gets and sets if the text is flipped vertically.
        """
        return bool()
    @isVerticalFlip.setter
    def isVerticalFlip(self, value: bool):
        """
        Gets and sets if the text is flipped vertically.
        """
        pass
    @property
    def definition(self) -> SketchTextDefinition:
        """
        Gets the definition that is currently used to specify how the sketch text is defined.
        """
        return SketchTextDefinition()
    @property
    def nativeObject(self) -> SketchText:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SketchText()
    @property
    def textParameter(self) -> ModelParameter:
        """
        Returns the model parameter that was created when the sketch text was created that
        controls the contents of the sketch text. To edit the text, you can use
        the expression and textValue properties of the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def heightParameter(self) -> ModelParameter:
        """
        Returns the model parameter that was created when the sketch text was created
        that controls the height of the sketch text. To edit the height, you can use
        the expression and value properties of the returned ModelParameter object.
        """
        return ModelParameter()

class SliderJointMotion(JointMotion):
    """
    Represents the set of information specific to a slider joint.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SliderJointMotion:
        return SliderJointMotion()
    @property
    def slideDirection(self) -> JointDirections:
        """
        Gets and sets the direction of the slide. This can be set to
        XAxisJointDirection, YAxisJointDirection, or ZAxisJointDirection. It can
        return those three directions and CustomJointDirection. If this returns
        CustomJointDirection then the customSlideDirectionEntity will return an entity
        that defines the direction. If there is a custom direction defined and this
        property is set to one of the three standard axes, the custom direction will
        be removed and customSlideDirectionEntity will return null.
        """
        return JointDirections()
    @slideDirection.setter
    def slideDirection(self, value: JointDirections):
        """
        Gets and sets the direction of the slide. This can be set to
        XAxisJointDirection, YAxisJointDirection, or ZAxisJointDirection. It can
        return those three directions and CustomJointDirection. If this returns
        CustomJointDirection then the customSlideDirectionEntity will return an entity
        that defines the direction. If there is a custom direction defined and this
        property is set to one of the three standard axes, the custom direction will
        be removed and customSlideDirectionEntity will return null.
        """
        pass
    @property
    def slideDirectionVector(self) -> core.Vector3D:
        """
        Returns the direction of the slide. This property will return null in the case
        where the SliderJointMotion object was obtained from a JointInput object.
        """
        return core.Vector3D()
    @property
    def customSlideDirectionEntity(self) -> core.Base:
        """
        This property can be set using various types of entities that can infer a
        direction. For example, a linear edge, sketch line, planar face, and cylindrical face.
        This property is only valid in the case where the slideDirection property returns
        CustomJointDirection. Setting this property will automatically set
        the slideDirection property to CustomJointDirection.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        """
        return core.Base()
    @customSlideDirectionEntity.setter
    def customSlideDirectionEntity(self, value: core.Base):
        """
        This property can be set using various types of entities that can infer a
        direction. For example, a linear edge, sketch line, planar face, and cylindrical face.
        This property is only valid in the case where the slideDirection property returns
        CustomJointDirection. Setting this property will automatically set
        the slideDirection property to CustomJointDirection.
        
        To set this property, you need to position the timeline marker to immediately before this joint.
        This can be accomplished using the following code: thisJoint.timelineObject.rollTo(True)
        """
        pass
    @property
    def slideValue(self) -> float:
        """
        Gets and sets the slide value. This is in centimeters. Setting this value is
        the equivalent of using the Drive Joints command.
        """
        return float()
    @slideValue.setter
    def slideValue(self, value: float):
        """
        Gets and sets the slide value. This is in centimeters. Setting this value is
        the equivalent of using the Drive Joints command.
        """
        pass
    @property
    def slideLimits(self) -> JointLimits:
        """
        Returns a JointLimits object that defines the slide limits for this joint.
        Use the functionality of the returned JointLimits object to get, set, and modify
        the joint limits.
        """
        return JointLimits()

class SmoothConstraint(GeometricConstraint):
    """
    A smooth constraint in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SmoothConstraint:
        return SmoothConstraint()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SmoothConstraint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SmoothConstraint()
    @property
    def curveOne(self) -> SketchCurve:
        """
        Returns the first curve.
        """
        return SketchCurve()
    @property
    def curveTwo(self) -> SketchCurve:
        """
        Returns the second curve.
        """
        return SketchCurve()
    @property
    def nativeObject(self) -> SmoothConstraint:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SmoothConstraint()

class SMTExportOptions(ExportOptions):
    """
    Defines that an SMT export is to be done and specifies the various options.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SMTExportOptions:
        return SMTExportOptions()
    @property
    def version(self) -> int:
        """
        Gets and set the version of the SMT format to write to. The default
        is to use the current version of the Autodesk Shape Manager kernel
        that Fusion is using. Specifying an invalid version will result
        in an assert.
        
        Valid versions are 218 up to the current version, which is what this
        property returns by default when a new SMTExportOptions object is
        created.
        """
        return int()
    @version.setter
    def version(self, value: int):
        """
        Gets and set the version of the SMT format to write to. The default
        is to use the current version of the Autodesk Shape Manager kernel
        that Fusion is using. Specifying an invalid version will result
        in an assert.
        
        Valid versions are 218 up to the current version, which is what this
        property returns by default when a new SMTExportOptions object is
        created.
        """
        pass

class SphereFeature(Feature):
    """
    Object that represents an existing sphere feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SphereFeature:
        return SphereFeature()

class SplitBodyFeature(Feature):
    """
    Object that represents an existing split body feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SplitBodyFeature:
        return SplitBodyFeature()
    def setSplittingTool(self, splittingTool: core.Base, isSplittingToolExtended: bool) -> bool:
        """
        Sets the splitting tool used for the feature.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        splittingTool : Input entity that defines the splitting tool. The splitting tool is a single entity that can be either a solid body,
        open body, construction plane, face, or sketch curve that partially or fully intersects the body to split.
        isSplittingToolExtended : A boolean value for setting whether or not the splittingTool is to be automatically extended (if possible) so as to
        completely intersect the facesToSplit.
        Returns true if successful.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SplitBodyFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this is not the NativeObject.
        """
        return SplitBodyFeature()
    @property
    def splitBodies(self) -> core.ObjectCollection:
        """
        Gets and sets the input solid or open bodies that are split.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()
    @splitBodies.setter
    def splitBodies(self, value: core.ObjectCollection):
        """
        Gets and sets the input solid or open bodies that are split.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def splittingTool(self) -> core.Base:
        """
        Gets the entity that defines the splitting tool. The splitting tool is a single entity that can be either a
        solid body, open body, plane, sketch curve or face that partially or fully intersects the bodyToSplit.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @property
    def isSplittingToolExtended(self) -> bool:
        """
        Gets whether or not the splitting tool is to be automatically extended (if possible) so as to
        completely intersect the bodyToSplit.
        """
        return bool()
    @property
    def nativeObject(self) -> SplitBodyFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SplitBodyFeature()

class SplitFaceFeature(Feature):
    """
    Object that represents an existing split face feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SplitFaceFeature:
        return SplitFaceFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SplitFaceFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this is not the NativeObject.
        """
        return SplitFaceFeature()
    def setAsSurfaceIntersectionSplitType(self, splittingTool: core.Base, isSplittingToolExtended: bool) -> bool:
        """
        Set the split type to be a surface to surface intersection. If the split tool is a curve
        it will be extruded into a surface to use in the split. If it's a surface, the surface will
        be used and optionally extended to fully intersect the faces to be split.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        splittingTool : Input entity(s) that defines the splitting tool. The splitting tool can be a single entity or an ObjectCollection
        containing solid and/or open bodies, construction planes, faces, or sketch curves that partially or fully intersect
        the faces that are being split.
        isSplittingToolExtended : Specifies if the splitting tool should be extended so that is fully intersects the faces to be split.
        Returns true is setting the split type was successful.
        """
        return bool()
    def setAsAlongVectorSplitType(self, splittingTool: core.Base, directionEntity: core.Base) -> bool:
        """
        Sets the split type to project the splitting tool along the direction defined by the
        specified entity.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        splittingTool : Input entity(s) that defines the splitting tool. The splitting tool can be a single entity or an ObjectCollection
        containing faces or sketch curves. If faces are input, the edges of the face are used as the splitting tool.
        directionEntity : An entity that defines the direction of projection of the splitting tool. This can be
        a linear BRepEdge, SketchLine, ConstructionLine, or a planar face where the face
        normal is used.
        Returns true is setting the split type was successful.
        """
        return bool()
    def setAsClosestPointSplitType(self, splittingTool: core.Base) -> bool:
        """
        Sets the split type to be a curve that defined by projecting the splitting curve to the
        closest point on the surface.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        splittingTool : Input entity(s) that defines the splitting tool. The splitting tool can be a single entity or an ObjectCollection
        containing faces or sketch curves. If faces are input, the edges of the face are used as the splitting tool.
        Returns true if setting the closest point split type was successful.
        """
        return bool()
    @property
    def facesToSplit(self) -> core.ObjectCollection:
        """
        Gets and sets the faces to be split.
        The collection can contain one or more faces selected from solid and/or open bodies.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()
    @facesToSplit.setter
    def facesToSplit(self, value: core.ObjectCollection):
        """
        Gets and sets the faces to be split.
        The collection can contain one or more faces selected from solid and/or open bodies.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def splittingTool(self) -> core.ObjectCollection:
        """
        Gets the entity(s) that define the splitting tool(s). The splitting tool can consist of one or more of
        the following: BRepBody, ConstructionPlane, BRepFace, sketch curve that extends or can
        be extended beyond the extents of the face. To set the splitting tool, use one of the set methods to
        also define the split type.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()
    @property
    def isSplittingToolExtended(self) -> bool:
        """
        Gets whether or not the setting to automatically extend the splittingTool was set when the feature was created.
        
        This property is valid only when the splitType property returns surfaceIntersectionSplitType.
        """
        return bool()
    @property
    def nativeObject(self) -> SplitFaceFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SplitFaceFeature()
    @property
    def directionEntity(self) -> core.Base:
        """
        Gets the direction entity when the split type is along a vector. If the split type
        is not alongVectorSplitType this property will return null.
        
        To set the direction entity use the setAsAlongVectorSplitType method.
        """
        return core.Base()
    @property
    def splitType(self) -> SplitFaceSplitTypes:
        """
        Returns the type of split type currently defined. To change the split type, use
        one of the set methods.
        """
        return SplitFaceSplitTypes()

class STEPExportOptions(ExportOptions):
    """
    Defines that a STEP export is to be done and specifies the various options.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> STEPExportOptions:
        return STEPExportOptions()
    @property
    def wantTempIds(self) -> bool:
        """
        Indicates if the STEP file should include the Fusion temporary IDs for faces and edges.
        Outside services can use these IDs with the findByTempId method of the BRepBody,
        which will return the given entity. The default is false.
        """
        return bool()
    @wantTempIds.setter
    def wantTempIds(self, value: bool):
        """
        Indicates if the STEP file should include the Fusion temporary IDs for faces and edges.
        Outside services can use these IDs with the findByTempId method of the BRepBody,
        which will return the given entity. The default is false.
        """
        pass

class StitchFeature(Feature):
    """
    Object that represents an existing stitch feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> StitchFeature:
        return StitchFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> StitchFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this is not the NativeObject.
        """
        return StitchFeature()
    @property
    def stitchSurfaces(self) -> core.ObjectCollection:
        """
        Gets and sets the surfaces to stitch together. In some cases the stitch operation results in
        faces being merged so the original faces are no longer available after the feature is created.
        in this case you need to reposition the timeline marker to just before this feature
        when the faces do exist.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()
    @stitchSurfaces.setter
    def stitchSurfaces(self, value: core.ObjectCollection):
        """
        Gets and sets the surfaces to stitch together. In some cases the stitch operation results in
        faces being merged so the original faces are no longer available after the feature is created.
        in this case you need to reposition the timeline marker to just before this feature
        when the faces do exist.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def tolerance(self) -> ModelParameter:
        """
        Returns the parameter controlling the tolerance. You can edit the tolerance
        by editing the value of the parameter object.
        """
        return ModelParameter()
    @property
    def operation(self) -> FeatureOperations:
        """
        Gets and sets the feature operation to perform. This property value is ignored if the stitched result does not
        form a solid body.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return FeatureOperations()
    @operation.setter
    def operation(self, value: FeatureOperations):
        """
        Gets and sets the feature operation to perform. This property value is ignored if the stitched result does not
        form a solid body.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def nativeObject(self) -> StitchFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return StitchFeature()

class STLExportOptions(ExportOptions):
    """
    Defines that a STL export is to be done and specifies the various options.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> STLExportOptions:
        return STLExportOptions()
    @property
    def isBinaryFormat(self) -> bool:
        """
        Indicates if the STL file is to be an ASCII or binary STL format. The default is true.
        """
        return bool()
    @isBinaryFormat.setter
    def isBinaryFormat(self, value: bool):
        """
        Indicates if the STL file is to be an ASCII or binary STL format. The default is true.
        """
        pass
    @property
    def isOneFilePerBody(self) -> bool:
        """
        If the input is an Occurrence or the root Component, this specifies if a single file should be created containing
        all of the bodies within that occurrence or component or if multiple files should be created; one for each body.
        If multiple files are created, the body name is appended to the filename. The default is false.
        """
        return bool()
    @isOneFilePerBody.setter
    def isOneFilePerBody(self, value: bool):
        """
        If the input is an Occurrence or the root Component, this specifies if a single file should be created containing
        all of the bodies within that occurrence or component or if multiple files should be created; one for each body.
        If multiple files are created, the body name is appended to the filename. The default is false.
        """
        pass
    @property
    def meshRefinement(self) -> MeshRefinementSettings:
        """
        Gets and sets the current simple mesh refinement settings. Setting this property
        will reset the surfaceDeviation, normalDeviation, maximumEdgeLength, and aspectRatio
        to values that correspond to the specified mesh refinement. The default is MeshRefinementMedium.
        """
        return MeshRefinementSettings()
    @meshRefinement.setter
    def meshRefinement(self, value: MeshRefinementSettings):
        """
        Gets and sets the current simple mesh refinement settings. Setting this property
        will reset the surfaceDeviation, normalDeviation, maximumEdgeLength, and aspectRatio
        to values that correspond to the specified mesh refinement. The default is MeshRefinementMedium.
        """
        pass
    @property
    def surfaceDeviation(self) -> float:
        """
        Gets and sets the current surface deviation, or the distance the mesh can deviate
        from the actual surface. This is defined in centimeter. Setting this property
        will automatically set the meshRefinement to MeshRefinementCustom. The default is the value
        associated with medium mesh refinement.
        """
        return float()
    @surfaceDeviation.setter
    def surfaceDeviation(self, value: float):
        """
        Gets and sets the current surface deviation, or the distance the mesh can deviate
        from the actual surface. This is defined in centimeter. Setting this property
        will automatically set the meshRefinement to MeshRefinementCustom. The default is the value
        associated with medium mesh refinement.
        """
        pass
    @property
    def normalDeviation(self) -> float:
        """
        Gets and sets the current normal deviation, or the angle the mesh normals at the vertices can deviate
        from the actual surface normals. This is defined in radians. Setting this property
        will automatically set the meshRefinement to MeshRefinementCustom. The default is the value
        associated with medium mesh refinement.
        """
        return float()
    @normalDeviation.setter
    def normalDeviation(self, value: float):
        """
        Gets and sets the current normal deviation, or the angle the mesh normals at the vertices can deviate
        from the actual surface normals. This is defined in radians. Setting this property
        will automatically set the meshRefinement to MeshRefinementCustom. The default is the value
        associated with medium mesh refinement.
        """
        pass
    @property
    def maximumEdgeLength(self) -> float:
        """
        Gets and sets the maximum length of any mesh edge. This is defined in centimeter. Setting this property
        will automatically set the meshRefinement to MeshRefinementCustom. The default is the value
        associated with medium mesh refinement.
        """
        return float()
    @maximumEdgeLength.setter
    def maximumEdgeLength(self, value: float):
        """
        Gets and sets the maximum length of any mesh edge. This is defined in centimeter. Setting this property
        will automatically set the meshRefinement to MeshRefinementCustom. The default is the value
        associated with medium mesh refinement.
        """
        pass
    @property
    def aspectRatio(self) -> float:
        """
        Gets and sets the minimum aspect ratio for that triangles that are generated for the mesh. Setting this property
        will automatically set the meshRefinement to MeshRefinementCustom. The default is the value
        associated with medium mesh refinement.
        """
        return float()
    @aspectRatio.setter
    def aspectRatio(self, value: float):
        """
        Gets and sets the minimum aspect ratio for that triangles that are generated for the mesh. Setting this property
        will automatically set the meshRefinement to MeshRefinementCustom. The default is the value
        associated with medium mesh refinement.
        """
        pass
    @property
    def availablePrintUtilities(self) -> list[str]:
        """
        Returns a list of the known available print utilities. These strings can be used to set the PrintUtility
        property to specify which print utility to open the STL file in.
        """
        return [str()]
    @property
    def printUtility(self) -> str:
        """
        Specifies which print utility to use when opening the STL file if the sendToPrintUtility property is true.
        The value of this property can be one of the strings returned by the availalbePrintUtilities property, which
        will specify one of the know print utilities. You can also specify a custom print utility by specifying
        the full path to the print utility executable. The default value of this property is the last setting specified
        in the user-interface.
        """
        return str()
    @printUtility.setter
    def printUtility(self, value: str):
        """
        Specifies which print utility to use when opening the STL file if the sendToPrintUtility property is true.
        The value of this property can be one of the strings returned by the availalbePrintUtilities property, which
        will specify one of the know print utilities. You can also specify a custom print utility by specifying
        the full path to the print utility executable. The default value of this property is the last setting specified
        in the user-interface.
        """
        pass
    @property
    def sendToPrintUtility(self) -> bool:
        """
        Gets and sets whether the created STL file will be sent to the print utility specified by the printUtility property. If this
        is false a filename must be defined.
        """
        return bool()
    @sendToPrintUtility.setter
    def sendToPrintUtility(self, value: bool):
        """
        Gets and sets whether the created STL file will be sent to the print utility specified by the printUtility property. If this
        is false a filename must be defined.
        """
        pass
    @property
    def unitType(self) -> DistanceUnits:
        """
        Gets and sets the units to use for the created STL file. When the STLExportOptions object is created, this property
        is initialized with the default units specified for the Design.
        """
        return DistanceUnits()
    @unitType.setter
    def unitType(self, value: DistanceUnits):
        """
        Gets and sets the units to use for the created STL file. When the STLExportOptions object is created, this property
        is initialized with the default units specified for the Design.
        """
        pass

class SurfaceDeleteFaceFeature(Feature):
    """
    Object that represents an existing Surface Delete Face feature in a design.
    
    The SurfaceDeleteFaceFeature and DeleteFaceFeature differ in that the SurfaceDeleteFaceFeature
    can delete any face without any restrictions. If the body is a solid, it will become a surface
    when the first face is deleted. The specified face is deleted without any other changes being
    made to the body. The DeleteFaceFeature deletes the specified face and also modifies the other faces
    in the body to heal or fill in the area of the deleted face. This means that a solid body will
    remain solid.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SurfaceDeleteFaceFeature:
        return SurfaceDeleteFaceFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SurfaceDeleteFaceFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this is not the NativeObject.
        """
        return SurfaceDeleteFaceFeature()
    @property
    def deletedFaces(self) -> list[BRepFace]:
        """
        Gets and sets the set of faces that are deleted by this feature.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return [BRepFace()]
    @deletedFaces.setter
    def deletedFaces(self, value: list[BRepFace]):
        """
        Gets and sets the set of faces that are deleted by this feature.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def nativeObject(self) -> SurfaceDeleteFaceFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SurfaceDeleteFaceFeature()

class SweepFeature(Feature):
    """
    Object that represents an existing sweep feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SweepFeature:
        return SweepFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SweepFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SweepFeature()
    @property
    def profile(self) -> core.Base:
        """
        Gets and sets the profiles or planar faces used to define the shape of the sweep.
        This property can return or be set with a single Profile, a single planar face, or
        an ObjectCollection consisting of multiple profiles and planar faces. When an
        ObjectCollection is used all of the profiles and faces must be co-planar.
        This property returns nothing in the case where the feature is non-parametric.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @profile.setter
    def profile(self, value: core.Base):
        """
        Gets and sets the profiles or planar faces used to define the shape of the sweep.
        This property can return or be set with a single Profile, a single planar face, or
        an ObjectCollection consisting of multiple profiles and planar faces. When an
        ObjectCollection is used all of the profiles and faces must be co-planar.
        This property returns nothing in the case where the feature is non-parametric.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def operation(self) -> FeatureOperations:
        """
        Gets and sets the type of operation performed by the sweep.
        """
        return FeatureOperations()
    @operation.setter
    def operation(self, value: FeatureOperations):
        """
        Gets and sets the type of operation performed by the sweep.
        """
        pass
    @property
    def path(self) -> Path:
        """
        Gets and sets the path to create the sweep.
        This property returns nothing in the case where the feature is non-parametric.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return Path()
    @path.setter
    def path(self, value: Path):
        """
        Gets and sets the path to create the sweep.
        This property returns nothing in the case where the feature is non-parametric.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def distanceOne(self) -> ModelParameter:
        """
        Gets the distance for the first side.
        This property returns nothing in the case where the feature is non-parametric.
        """
        return ModelParameter()
    @property
    def distanceTwo(self) -> ModelParameter:
        """
        Gets the distance for the second side.
        Returns nothing if the path is only on one side of the profile or if the sweep definition includes a guide rail or surface.
        It's always the distance against the normal of the profile if available.
        This property returns nothing in the case where the feature is non-parametric.
        """
        return ModelParameter()
    @property
    def orientation(self) -> SweepOrientationTypes:
        """
        Gets and sets the sweep orientation. It defaults to PerpendicularOrientationType.
        This property is ignored if sweeping a solid or a guide rail or surface has been specified.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return SweepOrientationTypes()
    @orientation.setter
    def orientation(self, value: SweepOrientationTypes):
        """
        Gets and sets the sweep orientation. It defaults to PerpendicularOrientationType.
        This property is ignored if sweeping a solid or a guide rail or surface has been specified.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def startFaces(self) -> BRepFaces:
        """
        Property that returns the set of that cap one end of the sweep that are coincident with the sketch plane.
        In the cases where there aren't any start faces this property will return Nothing.
        """
        return BRepFaces()
    @property
    def endFaces(self) -> BRepFaces:
        """
        Property that returns the set of that cap one end of the sweep that are coincident with the sketch plane.
        The end faces are those not coincident to the sketch plane of the feature's profile.
        In the case of a symmetric revolution these faces are the ones on the negative normal side of the sketch plane.
        In the cases where there aren't any end faces this property will return Nothing.
        """
        return BRepFaces()
    @property
    def sideFaces(self) -> BRepFaces:
        """
        Property that returns an object that provides access to all of the faces created around the perimeter of the feature.
        """
        return BRepFaces()
    @property
    def nativeObject(self) -> SweepFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SweepFeature()
    @property
    def isSolid(self) -> bool:
        """
        Indicates if this feature was initially created as a solid or a surface.
        """
        return bool()
    @property
    def guideRail(self) -> Path:
        """
        Gets and sets the guide rail to create the sweep. This can be set to null
        to have a path only sweep.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return Path()
    @guideRail.setter
    def guideRail(self, value: Path):
        """
        Gets and sets the guide rail to create the sweep. This can be set to null
        to have a path only sweep.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def isDirectionFlipped(self) -> bool:
        """
        Gets and sets if the direction of the sweep is flipped.
        This property only applies to sweep features that include a guide rail and whose path runs on both
        sides of the profile.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isDirectionFlipped.setter
    def isDirectionFlipped(self, value: bool):
        """
        Gets and sets if the direction of the sweep is flipped.
        This property only applies to sweep features that include a guide rail and whose path runs on both
        sides of the profile.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def profileScaling(self) -> SweepProfileScalingOptions:
        """
        Gets and sets the sweep profile scaling option. It defaults to SweepProfileScaleOption.
        This property is only used when a guide rail has been specified.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return SweepProfileScalingOptions()
    @profileScaling.setter
    def profileScaling(self, value: SweepProfileScalingOptions):
        """
        Gets and sets the sweep profile scaling option. It defaults to SweepProfileScaleOption.
        This property is only used when a guide rail has been specified.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def participantBodies(self) -> list[BRepBody]:
        """
        Gets and sets the list of bodies that will participate in the feature when the operation is a cut or intersection.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return [BRepBody()]
    @participantBodies.setter
    def participantBodies(self, value: list[BRepBody]):
        """
        Gets and sets the list of bodies that will participate in the feature when the operation is a cut or intersection.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def taperAngle(self) -> ModelParameter:
        """
        Gets the ModelParameter that defines the taper angle of the sweep feature.
        The value of the angle can be edited by using the properties on the ModelParameter object to edit the parameter.
        This property is ignored if sweeping a solid or a guide rail or surface has been specified.
        """
        return ModelParameter()
    @property
    def twistAngle(self) -> ModelParameter:
        """
        Gets the ModelParameter that defines the twist angle of the sweep feature.
        The value of the angle can be edited by using the properties on the ModelParameter object to edit the parameter.
        When sweeping a solid setting the twist angle requires the solid twist axis to be set.
        This property is ignored if a guide rail or surface has been specified.
        """
        return ModelParameter()
    @property
    def extent(self) -> SweepExtentTypes:
        """
        Gets and sets the sweep extent type. It defaults to PerpendicularToPathExtentType.
        When sweeping a solid setting the twist angle requires the solid twist axis to be set.
        This property is ignored when a guide rail has not been specified.
        """
        return SweepExtentTypes()
    @extent.setter
    def extent(self, value: SweepExtentTypes):
        """
        Gets and sets the sweep extent type. It defaults to PerpendicularToPathExtentType.
        When sweeping a solid setting the twist angle requires the solid twist axis to be set.
        This property is ignored when a guide rail has not been specified.
        """
        pass
    @property
    def guideSurfaces(self) -> list[BRepFace]:
        """
        Gets and sets the guide surfaces to create the sweep. This can be set to
        an empty array to remove the guide surfaces and have a single path sweep feature.
        The isChainSelection property controls whether tangentially connected faces to
        the guide surfaces are also made guide surfaces.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return [BRepFace()]
    @guideSurfaces.setter
    def guideSurfaces(self, value: list[BRepFace]):
        """
        Gets and sets the guide surfaces to create the sweep. This can be set to
        an empty array to remove the guide surfaces and have a single path sweep feature.
        The isChainSelection property controls whether tangentially connected faces to
        the guide surfaces are also made guide surfaces.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def isChainSelection(self) -> bool:
        """
        Get and sets whether faces that are tangentially connected to the guide surfaces are also made guide surfaces.
        """
        return bool()
    @isChainSelection.setter
    def isChainSelection(self, value: bool):
        """
        Get and sets whether faces that are tangentially connected to the guide surfaces are also made guide surfaces.
        """
        pass
    @property
    def solidBody(self) -> BRepBody:
        """
        Gets and sets the BRepBody object to sweep. It must be a solid body.
        Setting this property results in the type being a single path sweep, and
        if the profile, guide path, or surface are set, they are set to null.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return BRepBody()
    @solidBody.setter
    def solidBody(self, value: BRepBody):
        """
        Gets and sets the BRepBody object to sweep. It must be a solid body.
        Setting this property results in the type being a single path sweep, and
        if the profile, guide path, or surface are set, they are set to null.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def solidOrientation(self) -> SweepSolidOrientationTypes:
        """
        Gets and sets the sweep solid orientation. It defaults to PerpendicularSolidOrientationType.
        Setting the solid orientation to AlignedSolidOrientationType requires the solid aligned axis to be set.
        This property is ignored if sweeping a profile.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return SweepSolidOrientationTypes()
    @solidOrientation.setter
    def solidOrientation(self, value: SweepSolidOrientationTypes):
        """
        Gets and sets the sweep solid orientation. It defaults to PerpendicularSolidOrientationType.
        Setting the solid orientation to AlignedSolidOrientationType requires the solid aligned axis to be set.
        This property is ignored if sweeping a profile.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def solidAlignedAxis(self) -> core.Base:
        """
        Gets and sets the axis to align the solid being swept with. The axis is used when sweeping a solid,
        and the solid orientation is set to AlignedSolidOrientationType. It can be a sketch line, linear edge,
        or construction axis.
        """
        return core.Base()
    @solidAlignedAxis.setter
    def solidAlignedAxis(self, value: core.Base):
        """
        Gets and sets the axis to align the solid being swept with. The axis is used when sweeping a solid,
        and the solid orientation is set to AlignedSolidOrientationType. It can be a sketch line, linear edge,
        or construction axis.
        """
        pass
    @property
    def solidTwistAxis(self) -> core.Base:
        """
        Gets and sets the twist axis of the solid being swept. The axis is used when sweeping a solid,
        and the twist angle is set. It can be a sketch line, linear edge, construction axis, or a face
        that defines an axis (cylinder, cone, torus, etc.).
        """
        return core.Base()
    @solidTwistAxis.setter
    def solidTwistAxis(self, value: core.Base):
        """
        Gets and sets the twist axis of the solid being swept. The axis is used when sweeping a solid,
        and the twist angle is set. It can be a sketch line, linear edge, construction axis, or a face
        that defines an axis (cylinder, cone, torus, etc.).
        """
        pass

class SymmetricExtentDefinition(ExtentDefinition):
    """
    A definition object that is used to define the extents of a feature to be symmetric.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SymmetricExtentDefinition:
        return SymmetricExtentDefinition()
    @staticmethod
    def create(distance: core.ValueInput, isFullLength: bool) -> SymmetricExtentDefinition:
        """
        Statically creates a new SymmetricExtentDefinition object. This is used as input when
        create a new feature and defining the starting condition.
        distance : An input ValueInput objects that defines either half the extent of the extrude or the full extent, depending
        on the value of the isFullLength argument.
        isFullLength : An input boolean that specifies if the distance specified defines the full or half length of the extrusion.
        Returns the newly created SymmetricExtentDefinition or null in the case of a failure.
        """
        return SymmetricExtentDefinition()
    @property
    def isFullLength(self) -> bool:
        """
        Gets and sets if the distance defines the full extent length or half the length. A value of
        True indicates if defines the full length.
        """
        return bool()
    @isFullLength.setter
    def isFullLength(self, value: bool):
        """
        Gets and sets if the distance defines the full extent length or half the length. A value of
        True indicates if defines the full length.
        """
        pass
    @property
    def distance(self) -> core.Base:
        """
        Returns the current extent distance. If the SymmetricExtentDefinition object has been created statically and isn't associated with
        a feature this will return a ValueInput object. If the SymmetricExtentDefinition object is obtained from a feature this
        will return a ModelParameter object. You can use properties of the parameter to edit its value which will result in
        the feature updating.
        """
        return core.Base()
    @property
    def taperAngle(self) -> core.Base:
        """
        Returns the current taper angle. If the SymmetricExtentDefinition object has been created statically and isn't associated with
        a feature this will return a ValueInput object. If the SymmetricExtentDefinition object is obtained from a feature this
        will return a ModelParameter object. You can use properties of the parameter to edit its value which will result in
        the feature updating.
        """
        return core.Base()

class SymmetryConstraint(GeometricConstraint):
    """
    A symmetry constraint in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SymmetryConstraint:
        return SymmetryConstraint()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SymmetryConstraint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SymmetryConstraint()
    @property
    def entityOne(self) -> SketchEntity:
        """
        Returns the first curve.
        """
        return SketchEntity()
    @property
    def entityTwo(self) -> SketchEntity:
        """
        Returns the second curve.
        """
        return SketchEntity()
    @property
    def symmetryLine(self) -> SketchLine:
        """
        Returns the axis (SketchLine) that defines the symmetry.
        """
        return SketchLine()
    @property
    def nativeObject(self) -> SymmetryConstraint:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SymmetryConstraint()

class TangentConstraint(GeometricConstraint):
    """
    A tangent constraint in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> TangentConstraint:
        return TangentConstraint()
    def createForAssemblyContext(self, occurrence: Occurrence) -> TangentConstraint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return TangentConstraint()
    @property
    def curveOne(self) -> SketchCurve:
        """
        Returns the first curve.
        """
        return SketchCurve()
    @property
    def curveTwo(self) -> SketchCurve:
        """
        Returns the second curve.
        """
        return SketchCurve()
    @property
    def nativeObject(self) -> TangentConstraint:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return TangentConstraint()

class TeardropHemFeatureDefinition(HemFeatureDefinition):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The definition for a teardrop hem.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> TeardropHemFeatureDefinition:
        return TeardropHemFeatureDefinition()
    @property
    def radius(self) -> ModelParameter:
        """
        Gets the radius for a teardrop hem.
        """
        return ModelParameter()
    @property
    def length(self) -> ModelParameter:
        """
        Gets the length for a teardrop hem.
        """
        return ModelParameter()
    @property
    def gap(self) -> ModelParameter:
        """
        Gets the gap for a teardrop hem.
        """
        return ModelParameter()

class ThickenFeature(Feature):
    """
    Object that represents an existing Thicken feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ThickenFeature:
        return ThickenFeature()
    def setInputEntities(self, inputFaces: core.ObjectCollection, isChainSelection: bool = True) -> bool:
        """
        Sets the faces and patch bodies to thicken.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        inputFaces : The faces or patch bodies to thicken. Faces need not be from the same component or body, nor do they need to be
        connected or touching one another.
        isChainSelection : A boolean value for setting whether or not faces that are tangentially connected to
        the input faces (if any) will be included in the offset. The default value is true.
        Returns true if successful
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> ThickenFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this is not the NativeObject.
        """
        return ThickenFeature()
    @property
    def inputFaces(self) -> core.ObjectCollection:
        """
        Gets and sets the ObjectCollection containing the face and/or patch bodies to thicken.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()
    @inputFaces.setter
    def inputFaces(self, value: core.ObjectCollection):
        """
        Gets and sets the ObjectCollection containing the face and/or patch bodies to thicken.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def thickness(self) -> ModelParameter:
        """
        Returns the parameter controlling the thickness. You can edit the thickness value
        by editing the value of the parameter object.
        """
        return ModelParameter()
    @property
    def isSymmetric(self) -> bool:
        """
        Gets and sets whether to add thickness symmetrically or only on one side of the face/s to thicken.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isSymmetric.setter
    def isSymmetric(self, value: bool):
        """
        Gets and sets whether to add thickness symmetrically or only on one side of the face/s to thicken.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def operation(self) -> FeatureOperations:
        """
        Gets and sets the feature operation to perform.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return FeatureOperations()
    @operation.setter
    def operation(self, value: FeatureOperations):
        """
        Gets and sets the feature operation to perform.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def isChainSelection(self) -> bool:
        """
        Get and sets whether faces that are tangentially connected to the input faces will be included in the thicken feature.
        """
        return bool()
    @property
    def nativeObject(self) -> ThickenFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return ThickenFeature()
    @property
    def thickenType(self) -> ThickenTypes:
        """
        Gets and sets the thicken type for the thicken.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return ThickenTypes()
    @thickenType.setter
    def thickenType(self, value: ThickenTypes):
        """
        Gets and sets the thicken type for the thicken.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass

class ThreadFeature(Feature):
    """
    Object that represents an existing thread feature in a design. The creation of a tapped
    hole also results in the creation of a thread feature. There are some limitation when the
    thread feature is associated with a hole, which are described in the documentation for the
    property or method where the limitation exists.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ThreadFeature:
        return ThreadFeature()
    def setThreadOffsetLength(self, threadOffset: core.ValueInput, threadLength: core.ValueInput, threadLocation: ThreadLocations) -> bool:
        """
        Sets the thread offset, length and location.
        Calling this method will cause the isFullLength property to be set to false.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        threadOffset : A ValueInput object that defines the thread offset.
        threadLength : A ValueInput object that defines the thread length.
        threadLocation : Indicates where the thread length is measured from.
        Returns true if successful.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> ThreadFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return ThreadFeature()
    @property
    def inputCylindricalFace(self) -> BRepFace:
        """
        Gets and sets the threaded face. In the case where there are multiple faces, only the first one is returned.
        Setting this results in a thread being applied to only a single face.
        It is recommended that you use the inputCylindricalfaces property in order to have full access to the collection of faces
        to be threaded.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        
        If the thread feature is associated with a hole (the hole property is not null), this property will
        always return null and will fail if set.
        """
        return BRepFace()
    @inputCylindricalFace.setter
    def inputCylindricalFace(self, value: BRepFace):
        """
        Gets and sets the threaded face. In the case where there are multiple faces, only the first one is returned.
        Setting this results in a thread being applied to only a single face.
        It is recommended that you use the inputCylindricalfaces property in order to have full access to the collection of faces
        to be threaded.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        
        If the thread feature is associated with a hole (the hole property is not null), this property will
        always return null and will fail if set.
        """
        pass
    @property
    def isModeled(self) -> bool:
        """
        Gets and sets if the thread is physical or cosmetic thread. A value of true indicates a physical thread.
        It defaults to false.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isModeled.setter
    def isModeled(self, value: bool):
        """
        Gets and sets if the thread is physical or cosmetic thread. A value of true indicates a physical thread.
        It defaults to false.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def isFullLength(self) -> bool:
        """
        Gets and sets if this thread is the full length of the cylinder.
        It only can be set to true.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isFullLength.setter
    def isFullLength(self, value: bool):
        """
        Gets and sets if this thread is the full length of the cylinder.
        It only can be set to true.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def threadLength(self) -> ModelParameter:
        """
        Gets the parameter that controls the depth of the thread.
        Even though the parameter for the thread depth is always created and accessible through this property,
        it is only used in the case where the isFullLength property is false.
        Returns nothing in the case where the feature is non-parametric.
        """
        return ModelParameter()
    @property
    def threadOffset(self) -> ModelParameter:
        """
        Gets the parameter that controls the offset value of the thread.
        The offset is the distance along the axis of the cylinder from the edge to the start of the thread,
        it is only used in the case where the isFullLength property is false.
        Returns nothing in the case where the feature is non-parametric.
        """
        return ModelParameter()
    @property
    def threadLocation(self) -> ThreadLocations:
        """
        Gets and sets where the thread length is measured from.
        This property is only used in the case where the isFullLength property is false.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        
        If the thread feature is associated with a hole (the hole property is not null), this property will
        always return null and will always return LowEndThreadLocation and will fail if set.
        """
        return ThreadLocations()
    @threadLocation.setter
    def threadLocation(self, value: ThreadLocations):
        """
        Gets and sets where the thread length is measured from.
        This property is only used in the case where the isFullLength property is false.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        
        If the thread feature is associated with a hole (the hole property is not null), this property will
        always return null and will always return LowEndThreadLocation and will fail if set.
        """
        pass
    @property
    def threadInfo(self) -> ThreadInfo:
        """
        Gets and sets the thread data.
        Also can edit the thread through the properties and methods on the ThreadInfo object.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return ThreadInfo()
    @threadInfo.setter
    def threadInfo(self, value: ThreadInfo):
        """
        Gets and sets the thread data.
        Also can edit the thread through the properties and methods on the ThreadInfo object.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def isRightHanded(self) -> bool:
        """
        Gets and sets if the thread is right or left-handed thread. A value of true indicates a right-handed thread.
        It defaults to true.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isRightHanded.setter
    def isRightHanded(self, value: bool):
        """
        Gets and sets if the thread is right or left-handed thread. A value of true indicates a right-handed thread.
        It defaults to true.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def nativeObject(self) -> ThreadFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return ThreadFeature()
    @property
    def inputCylindricalFaces(self) -> core.ObjectCollection:
        """
        Gets and sets the cylindrical input faces.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        
        If the thread feature is associated with a hole (the hole property is not null), this property will
        always return null and will fail if set.
        """
        return core.ObjectCollection()
    @inputCylindricalFaces.setter
    def inputCylindricalFaces(self, value: core.ObjectCollection):
        """
        Gets and sets the cylindrical input faces.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        
        If the thread feature is associated with a hole (the hole property is not null), this property will
        always return null and will fail if set.
        """
        pass
    @property
    def hole(self) -> HoleFeature:
        """
        If this thread feature is was created as the result of creating a tapped hole, this
        property will return the associated hole feature. If this is a standard thread feature,
        this property will return null.
        """
        return HoleFeature()

class ThreeBendCornerClosureFeatureDefinition(CornerClosureFeatureDefinition):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The definition for a three bend corner closure.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ThreeBendCornerClosureFeatureDefinition:
        return ThreeBendCornerClosureFeatureDefinition()
    @property
    def threeBendReliefShape(self) -> CornerThreeBendReliefShapeTypes:
        """
        Gets and sets the relief shape for the three-bend corner.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return CornerThreeBendReliefShapeTypes()
    @threeBendReliefShape.setter
    def threeBendReliefShape(self, value: CornerThreeBendReliefShapeTypes):
        """
        Gets and sets the relief shape for the three-bend corner.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def threeBendReliefRadius(self) -> ModelParameter:
        """
        Gets the radius of the three-bend relief.
        """
        return ModelParameter()
    @property
    def isUseSheetMetalRuleDefaults(self) -> bool:
        """
        Gets and sets whether to use default values from the Sheet Metal Rule for all three-bend relief parameters
        (shape and radius).
        
        When set to true, the relief shape and radius are retrieved from the active Sheet Metal Rule.
        When set to false (default), the explicitly set values for these parameters are used.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        
        The default value is false.
        """
        return bool()
    @isUseSheetMetalRuleDefaults.setter
    def isUseSheetMetalRuleDefaults(self, value: bool):
        """
        Gets and sets whether to use default values from the Sheet Metal Rule for all three-bend relief parameters
        (shape and radius).
        
        When set to true, the relief shape and radius are retrieved from the active Sheet Metal Rule.
        When set to false (default), the explicitly set values for these parameters are used.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        
        The default value is false.
        """
        pass
    @property
    def isUseSheetMetalRuleMiterGap(self) -> bool:
        """
        Gets and sets whether to use the miter gap value from the Sheet Metal Rule.
        
        When set to true, the miter gap value is retrieved from the active Sheet Metal Rule.
        When set to false (default), the explicitly set miterGap value is used.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        
        The default value is false.
        """
        return bool()
    @isUseSheetMetalRuleMiterGap.setter
    def isUseSheetMetalRuleMiterGap(self, value: bool):
        """
        Gets and sets whether to use the miter gap value from the Sheet Metal Rule.
        
        When set to true, the miter gap value is retrieved from the active Sheet Metal Rule.
        When set to false (default), the explicitly set miterGap value is used.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        
        The default value is false.
        """
        pass

class ThreeBendCornerClosureInputDefinition(CornerClosureInputDefinition):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Defines the input properties required for creating a three-bend corner closure feature.
    This input definition provides a structured way to organize and validate the parameters before passing them to the
    setThreeBendCornerClosure method.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ThreeBendCornerClosureInputDefinition:
        return ThreeBendCornerClosureInputDefinition()
    @staticmethod
    def create() -> ThreeBendCornerClosureInputDefinition:
        """
        Creates a ThreeBendCornerClosureParameters object that can be used to define parameters for a three-bend corner closure.
        Use properties on this object to set the relief shape, relief radius, miter gap, alignment settings,
        and bend transition type before passing it to the setThreeBendCornerClosure method.
        Returns the newly created ThreeBendCornerClosureParameters object or null if the creation failed.
        """
        return ThreeBendCornerClosureInputDefinition()
    @property
    def threeBendReliefShape(self) -> CornerThreeBendReliefShapeTypes:
        """
        Gets and sets the relief shape for the three-bend corner.
        This defines the geometric shape used to relieve stress at the corner where three bends meet.
        This property is ignored when useSheetMetalRuleDefaults is set to true.
        The default value is RoundWithRadiusCornerThreeBendReliefShapeType.
        """
        return CornerThreeBendReliefShapeTypes()
    @threeBendReliefShape.setter
    def threeBendReliefShape(self, value: CornerThreeBendReliefShapeTypes):
        """
        Gets and sets the relief shape for the three-bend corner.
        This defines the geometric shape used to relieve stress at the corner where three bends meet.
        This property is ignored when useSheetMetalRuleDefaults is set to true.
        The default value is RoundWithRadiusCornerThreeBendReliefShapeType.
        """
        pass
    @property
    def threeBendReliefRadius(self) -> core.ValueInput:
        """
        Gets and sets the radius of the three-bend relief.
        This parameter is only valid when the threeBendReliefShape is RoundWithRadiusCornerThreeBendReliefShapeType.
        For other relief shapes, this value is ignored.
        This property is ignored when useSheetMetalRuleDefaults is set to true.
        """
        return core.ValueInput()
    @threeBendReliefRadius.setter
    def threeBendReliefRadius(self, value: core.ValueInput):
        """
        Gets and sets the radius of the three-bend relief.
        This parameter is only valid when the threeBendReliefShape is RoundWithRadiusCornerThreeBendReliefShapeType.
        For other relief shapes, this value is ignored.
        This property is ignored when useSheetMetalRuleDefaults is set to true.
        """
        pass
    @property
    def isUseSheetMetalRuleDefaults(self) -> bool:
        """
        Gets and sets whether to use default relief values from the Sheet Metal Rule.
        When true, all relief parameters (shape and radius) are taken from the active Sheet Metal Rule,
        and any values set in threeBendReliefShape and threeBendReliefRadius properties are ignored.
        When false (default), the relief parameters must be explicitly set using the respective properties.
        The default value is false.
        """
        return bool()
    @isUseSheetMetalRuleDefaults.setter
    def isUseSheetMetalRuleDefaults(self, value: bool):
        """
        Gets and sets whether to use default relief values from the Sheet Metal Rule.
        When true, all relief parameters (shape and radius) are taken from the active Sheet Metal Rule,
        and any values set in threeBendReliefShape and threeBendReliefRadius properties are ignored.
        When false (default), the relief parameters must be explicitly set using the respective properties.
        The default value is false.
        """
        pass

class ThroughAllExtentDefinition(ExtentDefinition):
    """
    A definition object that is used to define the extents of a feature to be through all.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ThroughAllExtentDefinition:
        return ThroughAllExtentDefinition()
    @staticmethod
    def create() -> ThroughAllExtentDefinition:
        """
        Statically creates a new ThroughAllExtentDefinition object. This is used as input when
        defining the extents of a feature to be through all.
        Returns the newly created ThroughAllExtentDefinition or null in the case of a failure.
        """
        return ThroughAllExtentDefinition()
    @property
    def isPositiveDirection(self) -> bool:
        """
        Gets and sets if the direction is positive or negative. A value of true indicates it is
        in the same direction as the z direction of the profile's sketch plane.
        
        This is only used when the extrusion is only defined in a single direction from the
        profile plane. If it's a two sided extrusion, this value is ignored.
        """
        return bool()
    @isPositiveDirection.setter
    def isPositiveDirection(self, value: bool):
        """
        Gets and sets if the direction is positive or negative. A value of true indicates it is
        in the same direction as the z direction of the profile's sketch plane.
        
        This is only used when the extrusion is only defined in a single direction from the
        profile plane. If it's a two sided extrusion, this value is ignored.
        """
        pass

class TimelineGroup(TimelineObject):
    """
    Represents a group in the timeline.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> TimelineGroup:
        return TimelineGroup()
    def __len__(self) -> int:
        return 0
    def __getitem__(self, index: int) -> TimelineObject:
        return None
    def __iter__(self) -> Iterator[TimelineObject]:
        return None
    def deleteMe(self, deleteGroupAndContents: bool) -> bool:
        """
        Deletes the group with the option of deleting or keeping the contents.
        deleteGroupAndContents : Indicates if the group and its contents should be deleted or if only the group
        should be deleted and the contents kept and expanded. A value of true will delete
        the group and its contents.
        Returns true if the delete was successful.
        """
        return bool()
    def item(self, index: int) -> TimelineObject:
        """
        Function that returns the specified timeline object within the group 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 TimelineObject()
    @property
    def isCollapsed(self) -> bool:
        """
        Indicates if the group is collapsed or expanded.
        """
        return bool()
    @isCollapsed.setter
    def isCollapsed(self, value: bool):
        """
        Indicates if the group is collapsed or expanded.
        """
        pass
    @property
    def count(self) -> int:
        """
        The number of items in the group.
        """
        return int()

class ToEntityExtentDefinition(ExtentDefinition):
    """
    A definition object that is used to define the extents of a feature to be up to a specified
    construction plane or face.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ToEntityExtentDefinition:
        return ToEntityExtentDefinition()
    @staticmethod
    def create(entity: core.Base, isChained: bool, offset: core.ValueInput = None) -> ToEntityExtentDefinition:
        """
        Statically creates a new ToEntityExtentDefinition object. This is used as input when
        defining the extents of a feature to be up to a construction plane or face.
        entity : The construction plane or face that the feature extent it up to.
        isChained : 
        offset : A optional input value that defines an offset distance of the entity that will be used
        for the extent. Positive and negative values can be used to offset in both directions.
        If this argument is not provided a value of zero will be used.
        Returns the newly created ToEntityExtentDefinition object or null if the creation failed.
        """
        return ToEntityExtentDefinition()
    @property
    def entity(self) -> core.Base:
        """
        Gets and sets the entity that the feature extent is defined up to. This can be a ConstructionPlane, Profile, BrepFace,
        BrepBody, or BRepVertex.
        """
        return core.Base()
    @entity.setter
    def entity(self, value: core.Base):
        """
        Gets and sets the entity that the feature extent is defined up to. This can be a ConstructionPlane, Profile, BrepFace,
        BrepBody, or BRepVertex.
        """
        pass
    @property
    def offset(self) -> core.Base:
        """
        Returns the current offset. If the EntityExtentDefinition object has been created statically and isn't associated with
        a feature this will return a ValueInput object. If the EntityExtentDefinition object is obtained from a feature this
        will return a ModelParameter object. You can use properties of the parameter to edit its value which will result in
        the feature updating.
        """
        return core.Base()
    @property
    def isChained(self) -> bool:
        """
        Gets and sets whether connected faces to the input entity should also be used when calculating the extent or if the
        input entity should be extended. A value of true indicates that connected entities should be used.
        """
        return bool()
    @isChained.setter
    def isChained(self, value: bool):
        """
        Gets and sets whether connected faces to the input entity should also be used when calculating the extent or if the
        input entity should be extended. A value of true indicates that connected entities should be used.
        """
        pass
    @property
    def directionHint(self) -> core.Vector3D:
        """
        Gets and sets a direction that is used when the result is ambiguous. For example, if you have a profile in
        the center of a torus and are extruding to the torus, the extrusion can go in either direction. When needed,
        this provides the information to tell Fusion which direction to go. In most cases this is not needed and
        the property will be null.
        """
        return core.Vector3D()
    @directionHint.setter
    def directionHint(self, value: core.Vector3D):
        """
        Gets and sets a direction that is used when the result is ambiguous. For example, if you have a profile in
        the center of a torus and are extruding to the torus, the extrusion can go in either direction. When needed,
        this provides the information to tell Fusion which direction to go. In most cases this is not needed and
        the property will be null.
        """
        pass
    @property
    def isMinimumSolution(self) -> bool:
        """
        Gets and sets if the minimum or maximum solution is calculated. This is only used when the input entity is
        a body and defines if the extrusion to go to the near side (minimum solution) of the body or the far side.
        When a new ToEntityExtentDefinition object is created, this property defaults to True.
        """
        return bool()
    @isMinimumSolution.setter
    def isMinimumSolution(self, value: bool):
        """
        Gets and sets if the minimum or maximum solution is calculated. This is only used when the input entity is
        a body and defines if the extrusion to go to the near side (minimum solution) of the body or the far side.
        When a new ToEntityExtentDefinition object is created, this property defaults to True.
        """
        pass

class TorusFeature(Feature):
    """
    Object that represents an existing torus feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> TorusFeature:
        return TorusFeature()

class TrimFeature(Feature):
    """
    Object that represents an existing trim feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> TrimFeature:
        return TrimFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> TrimFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return TrimFeature()
    def applyCellChanges(self) -> bool:
        """
        After making any changes to the set of selected cells you must call this method to
        indicate all changes have been made and to apply those changes to the feature.
        Returns true if the apply was successful.
        """
        return bool()
    @property
    def trimTool(self) -> core.Base:
        """
        Gets and sets the entity (a patch body, B-Rep face, construction plane or sketch curve) that intersects the trim tool.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @trimTool.setter
    def trimTool(self, value: core.Base):
        """
        Gets and sets the entity (a patch body, B-Rep face, construction plane or sketch curve) that intersects the trim tool.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def bRepCells(self) -> BRepCells:
        """
        Gets the set of valid cells that have been calculated based on the current inputs.
        To get this collection the model must be in the state it was when the feature
        was initially computed, which means the timeline marker must be positioned to immediately
        before this feature.
        
        After changing any selected cells you must call the applyCellChanges method to update
        the feature with the changes.
        """
        return BRepCells()
    @property
    def nativeObject(self) -> TrimFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return TrimFeature()

class TwoBendCornerClosureFeatureDefinition(CornerClosureFeatureDefinition):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    The definition for a two bend corner closure.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> TwoBendCornerClosureFeatureDefinition:
        return TwoBendCornerClosureFeatureDefinition()
    @property
    def twoBendReliefShape(self) -> CornerTwoBendReliefShapeTypes:
        """
        Gets and sets the relief shape for the two-bend corner.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return CornerTwoBendReliefShapeTypes()
    @twoBendReliefShape.setter
    def twoBendReliefShape(self, value: CornerTwoBendReliefShapeTypes):
        """
        Gets and sets the relief shape for the two-bend corner.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def twoBendReliefSize(self) -> ModelParameter:
        """
        Gets the size of the two-bend relief.
        """
        return ModelParameter()
    @property
    def twoBendReliefPlacement(self) -> CornerTwoBendReliefPlacementTypes:
        """
        Gets and sets the placement of the two-bend relief.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return CornerTwoBendReliefPlacementTypes()
    @twoBendReliefPlacement.setter
    def twoBendReliefPlacement(self, value: CornerTwoBendReliefPlacementTypes):
        """
        Gets and sets the placement of the two-bend relief.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def isUseSheetMetalRuleDefaults(self) -> bool:
        """
        Gets and sets whether to use default values from the Sheet Metal Rule for all two-bend relief parameters
        (shape, size, and placement).
        
        When set to true, the relief shape, size, and placement are retrieved from the active Sheet Metal Rule.
        When set to false (default), the explicitly set values for these parameters are used.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        
        The default value is false.
        """
        return bool()
    @isUseSheetMetalRuleDefaults.setter
    def isUseSheetMetalRuleDefaults(self, value: bool):
        """
        Gets and sets whether to use default values from the Sheet Metal Rule for all two-bend relief parameters
        (shape, size, and placement).
        
        When set to true, the relief shape, size, and placement are retrieved from the active Sheet Metal Rule.
        When set to false (default), the explicitly set values for these parameters are used.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        
        The default value is false.
        """
        pass
    @property
    def isUseSheetMetalRuleMiterGap(self) -> bool:
        """
        Gets and sets whether to use the miter gap value from the Sheet Metal Rule.
        
        When set to true, the miter gap value is retrieved from the active Sheet Metal Rule.
        When set to false (default), the explicitly set miterGap value is used.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        
        The default value is false.
        """
        return bool()
    @isUseSheetMetalRuleMiterGap.setter
    def isUseSheetMetalRuleMiterGap(self, value: bool):
        """
        Gets and sets whether to use the miter gap value from the Sheet Metal Rule.
        
        When set to true, the miter gap value is retrieved from the active Sheet Metal Rule.
        When set to false (default), the explicitly set miterGap value is used.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        
        The default value is false.
        """
        pass

class TwoBendCornerClosureInputDefinition(CornerClosureInputDefinition):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Defines the input properties required for creating a two-bend corner closure feature.
    This input definition provides a structured way to organize and validate the parameters before passing them to the
    setTwoBendCornerClosure method.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> TwoBendCornerClosureInputDefinition:
        return TwoBendCornerClosureInputDefinition()
    @staticmethod
    def create() -> TwoBendCornerClosureInputDefinition:
        """
        Creates a TwoBendCornerClosureParameters object that can be used to define parameters for a two-bend corner closure.
        Use properties on this object to set the relief shape, relief size, relief placement, miter gap, alignment settings,
        and bend transition type before passing it to the setTwoBendCornerClosure method.
        Returns the newly created TwoBendCornerClosureParameters object or null if the creation failed.
        """
        return TwoBendCornerClosureInputDefinition()
    @property
    def twoBendReliefShape(self) -> CornerTwoBendReliefShapeTypes:
        """
        Gets and sets the relief shape for the two-bend corner.
        This defines the geometric shape used to relieve stress at the corner where two bends meet.
        This property is ignored when useSheetMetalRuleDefaults is set to true.
        The default value is RoundCornerTwoBendReliefShapeType.
        """
        return CornerTwoBendReliefShapeTypes()
    @twoBendReliefShape.setter
    def twoBendReliefShape(self, value: CornerTwoBendReliefShapeTypes):
        """
        Gets and sets the relief shape for the two-bend corner.
        This defines the geometric shape used to relieve stress at the corner where two bends meet.
        This property is ignored when useSheetMetalRuleDefaults is set to true.
        The default value is RoundCornerTwoBendReliefShapeType.
        """
        pass
    @property
    def twoBendReliefSize(self) -> core.ValueInput:
        """
        Gets and sets the size of the two-bend relief.
        This parameter is only valid when the twoBendReliefShape is RoundCornerTwoBendReliefShapeType
        or SquareCornerTwoBendReliefShapeType. For other relief shapes, this value is ignored.
        This property is ignored when useSheetMetalRuleDefaults is set to true.
        """
        return core.ValueInput()
    @twoBendReliefSize.setter
    def twoBendReliefSize(self, value: core.ValueInput):
        """
        Gets and sets the size of the two-bend relief.
        This parameter is only valid when the twoBendReliefShape is RoundCornerTwoBendReliefShapeType
        or SquareCornerTwoBendReliefShapeType. For other relief shapes, this value is ignored.
        This property is ignored when useSheetMetalRuleDefaults is set to true.
        """
        pass
    @property
    def twoBendReliefPlacement(self) -> CornerTwoBendReliefPlacementTypes:
        """
        Gets and sets the placement of the two-bend relief.
        This parameter controls where the relief feature is positioned relative to the bend intersection.
        This parameter is only valid when the twoBendReliefShape is RoundCornerTwoBendReliefShapeType
        or SquareCornerTwoBendReliefShapeType. For other relief shapes, this value is ignored.
        This property is ignored when useSheetMetalRuleDefaults is set to true.
        The default value is TangentCornerTwoBendReliefPlacementType.
        """
        return CornerTwoBendReliefPlacementTypes()
    @twoBendReliefPlacement.setter
    def twoBendReliefPlacement(self, value: CornerTwoBendReliefPlacementTypes):
        """
        Gets and sets the placement of the two-bend relief.
        This parameter controls where the relief feature is positioned relative to the bend intersection.
        This parameter is only valid when the twoBendReliefShape is RoundCornerTwoBendReliefShapeType
        or SquareCornerTwoBendReliefShapeType. For other relief shapes, this value is ignored.
        This property is ignored when useSheetMetalRuleDefaults is set to true.
        The default value is TangentCornerTwoBendReliefPlacementType.
        """
        pass
    @property
    def isUseSheetMetalRuleDefaults(self) -> bool:
        """
        Gets and sets whether to use default relief values from the Sheet Metal Rule.
        When true, all relief parameters (shape, size, and placement) are taken from the active Sheet Metal Rule,
        and any values set in twoBendReliefShape, twoBendReliefSize, and twoBendReliefPlacement properties are ignored.
        When false (default), the relief parameters must be explicitly set using the respective properties.
        The default value is false.
        """
        return bool()
    @isUseSheetMetalRuleDefaults.setter
    def isUseSheetMetalRuleDefaults(self, value: bool):
        """
        Gets and sets whether to use default relief values from the Sheet Metal Rule.
        When true, all relief parameters (shape, size, and placement) are taken from the active Sheet Metal Rule,
        and any values set in twoBendReliefShape, twoBendReliefSize, and twoBendReliefPlacement properties are ignored.
        When false (default), the relief parameters must be explicitly set using the respective properties.
        The default value is false.
        """
        pass

class TwoDistancesChamferEdgeSet(ChamferEdgeSet):
    """
    Provides access to the edges and the parameters associated with a two distances chamfer.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> TwoDistancesChamferEdgeSet:
        return TwoDistancesChamferEdgeSet()
    @property
    def edges(self) -> core.ObjectCollection:
        """
        Gets and sets the edges that will be chamfered. This collection can contain BRepEdge, BRepFace,
        and Feature objects. If BRepFace or Feature are objects are provided, all of the edges associated
        with those objects will be chamfered.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()
    @edges.setter
    def edges(self, value: core.ObjectCollection):
        """
        Gets and sets the edges that will be chamfered. This collection can contain BRepEdge, BRepFace,
        and Feature objects. If BRepFace or Feature are objects are provided, all of the edges associated
        with those objects will be chamfered.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def distanceOne(self) -> ModelParameter:
        """
        Returns the model parameter that controls the first offset distance of the chamfer.
        You can edit the distance by using the properties on the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def distanceTwo(self) -> ModelParameter:
        """
        Returns the model parameter that controls the first offset distance of the chamfer.
        You can edit the distance by using the properties on the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def isFlipped(self) -> bool:
        """
        Gets and sets if the chamfer is flipped. This swaps the directions for distance one and two.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isFlipped.setter
    def isFlipped(self, value: bool):
        """
        Gets and sets if the chamfer is flipped. This swaps the directions for distance one and two.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass

class TwoSidesAngleExtentDefinition(ExtentDefinition):
    """
    Defines the inputs for a TwoSidesAngleExtentDefinition object.
    This feature extent type defines the extents of the feature using angle extents on two sides.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> TwoSidesAngleExtentDefinition:
        return TwoSidesAngleExtentDefinition()
    @property
    def angleOne(self) -> ModelParameter:
        """
        Gets the ModelParameter that defines the angle on the first side.
        The value of the angle can be edited by using the properties on the ModelParameter object to edit the parameter.
        """
        return ModelParameter()
    @property
    def angleTwo(self) -> ModelParameter:
        """
        Gets the ModelParameter that defines the angle on the second side.
        The value of the angle can be edited by using the properties on the ModelParameter object to edit the parameter.
        """
        return ModelParameter()

class UnfoldFeature(Feature):
    """
    Object that represents an existing unfold feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> UnfoldFeature:
        return UnfoldFeature()

class UnstitchFeature(Feature):
    """
    Object that represents an existing Unstitch feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> UnstitchFeature:
        return UnstitchFeature()
    def setInputFaces(self, faces: core.ObjectCollection, isChainSelection: bool = True) -> bool:
        """
        Sets the faces and/or bodies to be unstitched.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        faces : The faces and/or bodies to Unstitch. Individual faces can be unstitched from solids and/or patch bodies.
        The faces being unstitched need not all come from the same body.
        isChainSelection : A boolean value for setting whether or not faces that are connected and adjacent to
        the input faces will be included in the selection. The default value is true.
        Returns true if successful.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> UnstitchFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this is not the NativeObject.
        """
        return UnstitchFeature()
    @property
    def inputFaces(self) -> core.ObjectCollection:
        """
        Gets the faces that were input to be unstitched.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()
    @property
    def isChainSelection(self) -> bool:
        """
        A boolean value for setting whether or not faces that are connected and adjacent to
        the input faces will be included in the selection. The default value is true.
        """
        return bool()
    @property
    def nativeObject(self) -> UnstitchFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return UnstitchFeature()

class UntrimFeature(Feature):
    """
    Object that represents an existing Untrim feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> UntrimFeature:
        return UntrimFeature()
    def redefineLoopsFromFaces(self, faces: list[BRepFace], untrimLoopType: UntrimLoopTypes) -> bool:
        """
        Set the loops to be removed from a set of faces.
        faces : An array of BRepFace objects that will have the loops of the specified types removed.
        Only loops that do not have a connected face can be removed (the edges in the loop have a single face).
        The array can only contain faces from surface bodies, (the isSolid property of the BRepBody returns false).
        untrimLoopType : The loop type to be untrimmed (AllLoopUntrimType, InternalLoopUntrimType, or ExternalLoopUntrimType).
        Returns whether the operation was successful
        """
        return bool()
    def redefineLoops(self, loops: list[BRepLoop]) -> bool:
        """
        Set the loops to be removed.
        loops : Input the entities that define loops to remove.
        Only loops that do not have a connected face can be removed (the edges in the loop have a single face)
        The array can only contain loops from surface bodies, (the isSolid property of the BRepBody returns false).
        Returns whether the operation was successful
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> UntrimFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this is not the NativeObject.
        """
        return UntrimFeature()
    @property
    def untrimLoopType(self) -> UntrimLoopTypes:
        """
        Gets the loop type that was untrimmed. To change the trim type, use one of the redefine methods.
        """
        return UntrimLoopTypes()
    @property
    def facesToUntrim(self) -> list[BRepFace]:
        """
        Gets the face objects to untrim.
        Returns null/None in the case where loops are specified instead of faces.
        """
        return [BRepFace()]
    @property
    def loopsToUntrim(self) -> list[BRepLoop]:
        """
        Gets the loop objects to untrim.
        Returns null/None in the case where faces are specified instead of loops
        """
        return [BRepLoop()]
    @property
    def extensionDistance(self) -> ModelParameter:
        """
        Gets the ModelParameter that defines the extension distance used to extend external boundaries.
        This can return null in the case where only internal boundaries have been removed.
        The value can be edited by using the properties of the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def nativeObject(self) -> UntrimFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return UntrimFeature()

class USDExportOptions(ExportOptions):
    """
    Defines that an USD export is to be done and specifies the various options.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> USDExportOptions:
        return USDExportOptions()

class UserParameter(Parameter):
    """
    Represents a User Parameter.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> UserParameter:
        return UserParameter()
    def deleteMe(self) -> bool:
        """
        Deletes the user parameter
        A parameter can only be deleted if it is a UserParameter and
        it is not referenced by other parameters.
        Returns a bool indicating if the delete was successful or not.
        Bug!!! Currently returning true if the parameter can't be deleted because it is
        being referenced by other parameters.
        """
        return bool()
    @property
    def userParameters(self) -> UserParameters:
        """
        Returns the Collection containing the UserParameter.
        """
        return UserParameters()
    @property
    def design(self) -> Design:
        """
        Returns the Design containing the UserParameter.
        """
        return Design()

class VariableRadiusFilletEdgeSet(FilletEdgeSet):
    """
    Provides access to the edges and the parameters associated with a variable radius fillet.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> VariableRadiusFilletEdgeSet:
        return VariableRadiusFilletEdgeSet()
    def addMidPosition(self, position: core.ValueInput, radius: core.ValueInput) -> bool:
        """
        Creates a new mid position radius on the variable radius edge set.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        position : The position where the new radius is to be created. This is a value between 0 and 1 where 0 is at the start of the
        edge and 1 is at the end. If the ValueInput uses a real then it is interpreted as a unitless value. If it is a string
        then it must resolve to a unitless value.
        radius : A ValueInput object that defines the radius at the defined position. If the ValueInput uses a real
        then it is interpreted as centimeters. If it is a string then the units can be defined as part of
        the string (i.e. "2 in"). If no units are specified it will be interpreted using the current
        default units for length.
        Returns true if successful.
        """
        return bool()
    def deleteMidPosition(self, positionIndex: int) -> bool:
        """
        Deletes the specified mid position from the variable radius fillet.
        
        To use this method, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        positionIndex : The index of the mid position to delete. The points are in the order they appear along the edge
        where the first point has an index of 0. The number of mid positions and their locations can be
        obtained by getting the list of mid positions using the midPositions property.
        Returns true if successful.
        """
        return bool()
    @property
    def edges(self) -> core.ObjectCollection:
        """
        Gets and sets an ObjectCollection containing the edges that are filleted.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.ObjectCollection()
    @edges.setter
    def edges(self, value: core.ObjectCollection):
        """
        Gets and sets an ObjectCollection containing the edges that are filleted.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def startRadius(self) -> ModelParameter:
        """
        Returns the model parameter that controls the start radius of the fillet. You can edit
        the start radius by using the properties on the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def endRadius(self) -> ModelParameter:
        """
        Returns the model parameter that controls the end radius of the fillet. You can edit
        the end radius by using the properties on the returned ModelParameter object.
        """
        return ModelParameter()
    @property
    def midRadii(self) -> ParameterList:
        """
        Returns a list of model parameters that control radius of the fillet at each position defined along the edge set.
        You can edit any of these radii by using the properties on its returned ModelParameter object. This list does
        not include the parameters for the start and end radii. Use the startRadius and endRadius properties to get those.
        """
        return ParameterList()
    @property
    def midPositions(self) -> ParameterList:
        """
        Returns a list of model parameters that control the location of each mid point radius. These positions are defined
        from 0 to 1 where 0 is at the start of the edge and 1 is at the end. You can edit any of these positions by
        using the properties on its returned ModelParameter object.
        """
        return ParameterList()

class VariableRadiusFilletEdgeSetInput(FilletEdgeSetInput):
    """
    Provides access to the edges and the parameters associated with a variable radius fillet.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> VariableRadiusFilletEdgeSetInput:
        return VariableRadiusFilletEdgeSetInput()
    def setMidRadii(self, radii: list[core.ValueInput], positions: list[core.ValueInput]) -> bool:
        """
        Defines any additional points along the fillet where a radius is specified.
        radii : An array of ValueInput objects that define the radii at positions along the edge(s).
        This array must have the same number of values as the positions argument.
        
        If the ValueInput uses a real then it is interpreted as centimeters. If it is a string then the
        the units can be defined as part of the string (i.e. "2 in"). If no units are specified it will
        be interpreted using the current default units for length.
        positions : An array of ValueInput objects that defines the positions of any additional radii
        along the edge(s). The value must be between 0 and 1 and defines the percentage along the curve
        where a radius is defined. This array must have the same number of values as the radii argument.
        
        If the ValueInput uses a real then it is interpreted as a unitless number. If it is a string then the
        the string must evaluate to a unitless number.
        Returns true if successful.
        """
        return bool()
    @property
    def startRadius(self) -> core.ValueInput:
        """
        Gets and sets a ValueInput object that defines the starting radius of the fillet.
        If a single edge is being filleted, the start radius is at the start end of the edge.
        If multiple tangent edges are being filleted the start radius is the start end of the
        first edge in the collection.
        
        If the ValueInput uses a real then it is interpreted as centimeters. If it is a string then
        the units can be defined as part of the string (i.e. "2 in") or if no units are specified
        it is interpreted using the current default units for length.
        """
        return core.ValueInput()
    @startRadius.setter
    def startRadius(self, value: core.ValueInput):
        """
        Gets and sets a ValueInput object that defines the starting radius of the fillet.
        If a single edge is being filleted, the start radius is at the start end of the edge.
        If multiple tangent edges are being filleted the start radius is the start end of the
        first edge in the collection.
        
        If the ValueInput uses a real then it is interpreted as centimeters. If it is a string then
        the units can be defined as part of the string (i.e. "2 in") or if no units are specified
        it is interpreted using the current default units for length.
        """
        pass
    @property
    def endRadius(self) -> core.ValueInput:
        """
        Gets and sets a ValueInput object that defines the ending radius of the fillet.
        If a single edge is being filleted, the end radius is at the end of the edge.
        If multiple tangent edges are being filleted the end radius is the open end of the
        last edge in the collection.
        
        If the ValueInput uses a real then it is interpreted as centimeters. If it is a string then
        the units can be defined as part of the string (i.e. "2 in") or if no units are specified
        it is interpreted using the current default units for length.
        """
        return core.ValueInput()
    @endRadius.setter
    def endRadius(self, value: core.ValueInput):
        """
        Gets and sets a ValueInput object that defines the ending radius of the fillet.
        If a single edge is being filleted, the end radius is at the end of the edge.
        If multiple tangent edges are being filleted the end radius is the open end of the
        last edge in the collection.
        
        If the ValueInput uses a real then it is interpreted as centimeters. If it is a string then
        the units can be defined as part of the string (i.e. "2 in") or if no units are specified
        it is interpreted using the current default units for length.
        """
        pass

class VerticalConstraint(GeometricConstraint):
    """
    A vertical constraint in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> VerticalConstraint:
        return VerticalConstraint()
    def createForAssemblyContext(self, occurrence: Occurrence) -> VerticalConstraint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return VerticalConstraint()
    @property
    def line(self) -> SketchLine:
        """
        Returns the line being constrained.
        """
        return SketchLine()
    @property
    def nativeObject(self) -> VerticalConstraint:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return VerticalConstraint()

class VerticalPointsConstraint(GeometricConstraint):
    """
    A vertical constraint between two points in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> VerticalPointsConstraint:
        return VerticalPointsConstraint()
    def createForAssemblyContext(self, occurrence: Occurrence) -> VerticalPointsConstraint:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return VerticalPointsConstraint()
    @property
    def pointOne(self) -> SketchPoint:
        """
        Returns the first point.
        """
        return SketchPoint()
    @property
    def pointTwo(self) -> SketchPoint:
        """
        Returns the second point.
        """
        return SketchPoint()
    @property
    def nativeObject(self) -> VerticalPointsConstraint:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return VerticalPointsConstraint()

class VolumetricCustomFeature(Feature):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Object that represents an existing volumetric custom feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> VolumetricCustomFeature:
        return VolumetricCustomFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> VolumetricCustomFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return VolumetricCustomFeature()
    @property
    def volumetricModel(self) -> core.Base:
        """
        Get the volumetric model object.This property is typed as core.Base because the adsk.fusion
        library does not reference the volume library where the VolumetricModel object is defined.
        At runtime, this property will return a VolumetricModel object.
        Returns the volumetric model object.
        """
        return core.Base()
    @property
    def nativeObject(self) -> VolumetricCustomFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return VolumetricCustomFeature()

class VolumetricModelToMeshFeature(Feature):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Object that represents a model to mesh feature.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> VolumetricModelToMeshFeature:
        return VolumetricModelToMeshFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> VolumetricModelToMeshFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return VolumetricModelToMeshFeature()
    @property
    def meshBody(self) -> MeshBody:
        """
        Get the mesh body created from the volumetric model.
        Returns the mesh body object.
        """
        return MeshBody()
    @property
    def volumetricModel(self) -> core.Base:
        """
        Gets and sets the volumetric model to be converted to a mesh. The volumetric model must have the
        same parent component as the VolumetricModelToMeshFeature.This property is typed as core.Base
        because the adsk.fusion library does not reference the volume library where the VolumetricModel object
        is defined. At runtime, this property will return a VolumetricModel object.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @volumetricModel.setter
    def volumetricModel(self, value: core.Base):
        """
        Gets and sets the volumetric model to be converted to a mesh. The volumetric model must have the
        same parent component as the VolumetricModelToMeshFeature.This property is typed as core.Base
        because the adsk.fusion library does not reference the volume library where the VolumetricModel object
        is defined. At runtime, this property will return a VolumetricModel object.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def refinementType(self) -> VolumetricMeshRefinementTypes:
        """
        Gets and sets the refinement type to be used when creating the mesh.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return VolumetricMeshRefinementTypes()
    @refinementType.setter
    def refinementType(self, value: VolumetricMeshRefinementTypes):
        """
        Gets and sets the refinement type to be used when creating the mesh.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def elementSize(self) -> ModelParameter:
        """
        Gets the element size that will be used when creating the mesh. This value is only used when the
        refinement type is set to Custom. The value must be greater than 0.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return ModelParameter()
    @property
    def meshingApproach(self) -> VolumetricMeshingApproachTypes:
        """
        Gets and sets the meshing approach to be used when creating the mesh.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return VolumetricMeshingApproachTypes()
    @meshingApproach.setter
    def meshingApproach(self, value: VolumetricMeshingApproachTypes):
        """
        Gets and sets the meshing approach to be used when creating the mesh.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def isVolumetricModelRemoved(self) -> bool:
        """
        Gets and sets if the volumetric model should be removed after creating the mesh.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isVolumetricModelRemoved.setter
    def isVolumetricModelRemoved(self, value: bool):
        """
        Gets and sets if the volumetric model should be removed after creating the mesh.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def isSmallShellsRemoved(self) -> bool:
        """
        Gets and sets if small mesh shells should be removed after creating the mesh.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isSmallShellsRemoved.setter
    def isSmallShellsRemoved(self, value: bool):
        """
        Gets and sets if small mesh shells should be removed after creating the mesh.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def smallShellThreshold(self) -> ModelParameter:
        """
        Gets the small mesh threshold used to determine if a mesh shell is considered small.
        The value is a fraction of the total mesh area and must be between 0 and 1.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return ModelParameter()
    @property
    def isComputeSuspended(self) -> bool:
        """
        Gets and sets if the feature compute should be suspended if a dependent entity changes.
        If true, the feature will need to be recomputed manually if a dependent entity changes.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return bool()
    @isComputeSuspended.setter
    def isComputeSuspended(self, value: bool):
        """
        Gets and sets if the feature compute should be suspended if a dependent entity changes.
        If true, the feature will need to be recomputed manually if a dependent entity changes.
        
        To set this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def nativeObject(self) -> VolumetricModelToMeshFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return VolumetricModelToMeshFeature()

class WebFeature(Feature):
    """
    Object that represents an existing web feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> WebFeature:
        return WebFeature()

class ZebraAnalysis(Analysis):
    """
    Represent any existing Zebra Analysis that exist in the design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ZebraAnalysis:
        return ZebraAnalysis()

class Arrange2DPlaneEnvelopeInput(Arrange2DEnvelopeInput):
    """
    This object is used to specify the input needed to define a 2D rectangular envelope.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Arrange2DPlaneEnvelopeInput:
        return Arrange2DPlaneEnvelopeInput()
    @property
    def plane(self) -> ConstructionPlane:
        """
        Gets and sets the construction plane that will be used for this envelope.
        """
        return ConstructionPlane()
    @plane.setter
    def plane(self, value: ConstructionPlane):
        """
        Gets and sets the construction plane that will be used for this envelope.
        """
        pass
    @property
    def length(self) -> core.ValueInput:
        """
        Gets and sets length of the envelope. This is the size of the envelope as measured along the X axis of the specified
        construction plane.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in centimeters. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses the current document units. For example, if the document units are inch and you specific "0.25" it
        will result in 1/4 inch clearance. Using a string, you can also specify the units as part of the expression,
        such as "0.25 in + 2 mm". And you can define equations like "PartSize + 2 mm" where "PartSize" is an existing parameter.
        """
        return core.ValueInput()
    @length.setter
    def length(self, value: core.ValueInput):
        """
        Gets and sets length of the envelope. This is the size of the envelope as measured along the X axis of the specified
        construction plane.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in centimeters. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses the current document units. For example, if the document units are inch and you specific "0.25" it
        will result in 1/4 inch clearance. Using a string, you can also specify the units as part of the expression,
        such as "0.25 in + 2 mm". And you can define equations like "PartSize + 2 mm" where "PartSize" is an existing parameter.
        """
        pass
    @property
    def width(self) -> core.ValueInput:
        """
        Gets and sets the width of the envelope. This is the size of the envelope as measured along the Y axis of the specified
        construction plane.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in centimeters. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses the current document units. For example, if the document units are inch and you specific "0.25" it
        will result in 1/4 inch clearance. Using a string, you can also specify the units as part of the expression,
        such as "0.25 in + 2 mm". And you can define equations like "PartSize + 2 mm" where "PartSize" is an existing parameter.
        """
        return core.ValueInput()
    @width.setter
    def width(self, value: core.ValueInput):
        """
        Gets and sets the width of the envelope. This is the size of the envelope as measured along the Y axis of the specified
        construction plane.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in centimeters. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses the current document units. For example, if the document units are inch and you specific "0.25" it
        will result in 1/4 inch clearance. Using a string, you can also specify the units as part of the expression,
        such as "0.25 in + 2 mm". And you can define equations like "PartSize + 2 mm" where "PartSize" is an existing parameter.
        """
        pass
    @property
    def originXOffset(self) -> core.ValueInput:
        """
        Gets and sets the X offset of the envelope from the origin of the construction plane. This value defaults to zero.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in centimeters. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses the current document units. For example, if the document units are inch and you specific "0.25" it
        will result in 1/4 inch clearance. Using a string, you can also specify the units as part of the expression,
        such as "0.25 in + 2 mm". And you can define equations like "PartSize + 2 mm" where "PartSize" is an existing parameter.
        """
        return core.ValueInput()
    @originXOffset.setter
    def originXOffset(self, value: core.ValueInput):
        """
        Gets and sets the X offset of the envelope from the origin of the construction plane. This value defaults to zero.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in centimeters. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses the current document units. For example, if the document units are inch and you specific "0.25" it
        will result in 1/4 inch clearance. Using a string, you can also specify the units as part of the expression,
        such as "0.25 in + 2 mm". And you can define equations like "PartSize + 2 mm" where "PartSize" is an existing parameter.
        """
        pass
    @property
    def originYOffset(self) -> core.ValueInput:
        """
        Gets and sets the Y offset of the envelope from the origin of the construction plane. This value defaults to zero.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in centimeters. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses the current document units. For example, if the document units are inch and you specific "0.25" it
        will result in 1/4 inch clearance. Using a string, you can also specify the units as part of the expression,
        such as "0.25 in + 2 mm". And you can define equations like "PartSize + 2 mm" where "PartSize" is an existing parameter.
        """
        return core.ValueInput()
    @originYOffset.setter
    def originYOffset(self, value: core.ValueInput):
        """
        Gets and sets the Y offset of the envelope from the origin of the construction plane. This value defaults to zero.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created using a
        real number it is in centimeters. If you use a string, it is evaluated the same as a value would be in the command
        dialog and uses the current document units. For example, if the document units are inch and you specific "0.25" it
        will result in 1/4 inch clearance. Using a string, you can also specify the units as part of the expression,
        such as "0.25 in + 2 mm". And you can define equations like "PartSize + 2 mm" where "PartSize" is an existing parameter.
        """
        pass
    @property
    def quantity(self) -> core.ValueInput:
        """
        Specifies the number of envelopes that can be used. The default value is -1 which means there is no limit.
        
        This value will become a parameter when the arrangement is created. When created with a real value it must be a whole number.
        You can also use a string where it is interpreted the same as when entered in the command dialog. The expression must result
        in a unitless whole number. It's also possible to use an equation like "Total / 4" where "Total" is an existing parameter and must be
        evenly divided by four.
        """
        return core.ValueInput()
    @quantity.setter
    def quantity(self, value: core.ValueInput):
        """
        Specifies the number of envelopes that can be used. The default value is -1 which means there is no limit.
        
        This value will become a parameter when the arrangement is created. When created with a real value it must be a whole number.
        You can also use a string where it is interpreted the same as when entered in the command dialog. The expression must result
        in a unitless whole number. It's also possible to use an equation like "Total / 4" where "Total" is an existing parameter and must be
        evenly divided by four.
        """
        pass
    @property
    def envelopeSpacing(self) -> core.ValueInput:
        """
        For a 2D plane envelope, this defines the spacing between envelopes when there is more than one.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created
        using a real number it is in centimeters. If you use a string, it is evaluated the same as a value
        would be in the command dialog and uses the current document units. For example, if the document
        units are inch and you specific "0.25" it will result in 1/4 inch clearance. You can also specify
        the units as part of the expression, such as "0.25 in + 2 mm". And you can define equations like
        "ToolDia + 2 mm" where "ToolDia" is an existing parameter.
        """
        return core.ValueInput()
    @envelopeSpacing.setter
    def envelopeSpacing(self, value: core.ValueInput):
        """
        For a 2D plane envelope, this defines the spacing between envelopes when there is more than one.
        
        This value will become a parameter when the arrangement is created. If the ValueInput is created
        using a real number it is in centimeters. If you use a string, it is evaluated the same as a value
        would be in the command dialog and uses the current document units. For example, if the document
        units are inch and you specific "0.25" it will result in 1/4 inch clearance. You can also specify
        the units as part of the expression, such as "0.25 in + 2 mm". And you can define equations like
        "ToolDia + 2 mm" where "ToolDia" is an existing parameter.
        """
        pass

class Arrange2DProfileOrFaceEnvelopeInput(Arrange2DEnvelopeInput):
    """
    This object is used to specify the input needed to define an envelope using profiles and planar
    faces to define the envelope shapes.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> Arrange2DProfileOrFaceEnvelopeInput:
        return Arrange2DProfileOrFaceEnvelopeInput()
    @property
    def profilesOrFaces(self) -> list[core.Base]:
        """
        Gets and sets an array that contains a combination of Profile and planar BRepFace objects that will be used to define
        the shape of the envelopes.
        """
        return [core.Base()]
    @profilesOrFaces.setter
    def profilesOrFaces(self, value: list[core.Base]):
        """
        Gets and sets an array that contains a combination of Profile and planar BRepFace objects that will be used to define
        the shape of the envelopes.
        """
        pass

class ConfigurationJointSnapColumn(ConfigurationFeatureAspectColumn):
    """
    This object represents a column in the table that controls which joint
    snap to use for a particular joint. The columns contains a list of
    joint snaps that have been defined specifically for that column. One of
    the joint snaps is specified for each cell in the column. That joint snap
    will be used by the joint when the row that cell is in is active.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> ConfigurationJointSnapColumn:
        return ConfigurationJointSnapColumn()
    @property
    def joint(self) -> core.Base:
        """
        Returns the joint or as-built joint being controlled by this column.
        
        This property returns null when the table being queried was obtained from a DataFile object.
        """
        return core.Base()
    @property
    def snaps(self) -> ConfigurationJointSnaps:
        """
        Provides access to any joint snaps that have been defined for this column. Using
        the returned collection you can define new joint snaps. Use the cell to specify
        which of the defined snaps is used for a specific row.
        """
        return ConfigurationJointSnaps()

class CustomFeatureParameter(ModelParameter):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    A custom parameter is a parameter that was created as the result of a custom feature
    being created. It is associated with the custom feature and it's lifetime is the same
    as the custom feature that owns it.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> CustomFeatureParameter:
        return CustomFeatureParameter()
    @property
    def id(self) -> str:
        """
        Returns the ID of this custom feature parameter.
        """
        return str()
    @property
    def isVisible(self) -> bool:
        """
        Gets and sets if this parameter is visible in the parameters dialog. By default, all new parameters are visible.
        
        This can be useful in cases where the feature can be edited to be in different states where a parameter
        is only valid in a certain state. You can change the visibility based on the current state of the feature
        and if that parameter should be available for edit. This implies that you create all the parameters that
        might be needed and then change their visibility based on the current state of the feature. The parameters
        that are not visible will not be returned by the ModelParameters collection and are only available through
        the custom feature they're associated with.
        """
        return bool()
    @isVisible.setter
    def isVisible(self, value: bool):
        """
        Gets and sets if this parameter is visible in the parameters dialog. By default, all new parameters are visible.
        
        This can be useful in cases where the feature can be edited to be in different states where a parameter
        is only valid in a certain state. You can change the visibility based on the current state of the feature
        and if that parameter should be available for edit. This implies that you create all the parameters that
        might be needed and then change their visibility based on the current state of the feature. The parameters
        that are not visible will not be returned by the ModelParameters collection and are only available through
        the custom feature they're associated with.
        """
        pass
    @property
    def parentCustomFeature(self) -> CustomFeature:
        """
        Returns the custom feature this parameter is associated with.
        """
        return CustomFeature()

class FlatPatternComponent(Component):
    """
    This object represent the root component of a FlatPatternProduct. The flatPattern
    property will return a FlatPattern object that provides access to the resulting
    flat pattern geometry.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FlatPatternComponent:
        return FlatPatternComponent()

class FlatPatternProduct(Design):
    """
    Product that contains all of the information associated with a flat pattern.
    
    A FlatPatternProduct object exists for each flat pattern created.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> FlatPatternProduct:
        return FlatPatternProduct()
    def deleteMe(self) -> bool:
        """
        Deletes this FlatPatternProduct and the flat pattern it contains.
        Returns true if the delete was successful.
        """
        return bool()
    @property
    def flatPattern(self) -> FlatPattern:
        """
        Gets the flat pattern associated with this FlatPatternProduct.
        """
        return FlatPattern()

class HemFeature(FlangeFeature):
    """
    Defines a hem feature, providing methods to redefine the type of hem.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> HemFeature:
        return HemFeature()
    def redefineAsFlatHem(self, length: core.ValueInput, isFlipped: bool, bendPositionType: BendPositionTypes) -> bool:
        """
        Redefines the hem as a flat hem.
        length : The length of the hem.
        isFlipped : Indicates if the hem direction is flipped.
        bendPositionType : The bend location type for the hem.
        Returns true if defining the hem is successful.
        """
        return bool()
    def redefineAsOpenHem(self, length: core.ValueInput, gap: core.ValueInput, isFlipped: bool, bendPositionType: BendPositionTypes) -> bool:
        """
        Redefines the hem as an open hem.
        length : The length of the hem.
        gap : The gap distance of the hem.
        isFlipped : Indicates if the hem direction is flipped.
        bendPositionType : The bend location type for the hem.
        Returns true if defining the hem is successful.
        """
        return bool()
    def redefineAsRolledHem(self, radius: core.ValueInput, angle: core.ValueInput, isFlipped: bool, bendPositionType: BendPositionTypes) -> bool:
        """
        Redefines the hem as a rolled hem.
        radius : The radius of the rolled hem.
        angle : The angle of the rolled hem.
        isFlipped : Indicates if the hem direction is flipped.
        bendPositionType : The bend location type for the hem.
        Returns true if defining the hem is successful.
        """
        return bool()
    def redefineAsRopeHem(self, length: core.ValueInput, gap: core.ValueInput, radius: core.ValueInput, isFlipped: bool, bendPositionType: BendPositionTypes) -> bool:
        """
        Redefines the hem as a rope hem.
        length : The length of the rope hem.
        gap : The gap distance of the hem.
        radius : The radius of the rope hem.
        isFlipped : Indicates if the hem direction is flipped.
        bendPositionType : The bend location type for the hem.
        Returns true if defining the hem is successful.
        """
        return bool()
    def redefineAsTeardropHem(self, radius: core.ValueInput, length: core.ValueInput, gap: core.ValueInput, isFlipped: bool, bendPositionType: BendPositionTypes) -> bool:
        """
        Redefines the hem as a teardrop hem.
        radius : The radius of the teardrop hem.
        length : The length of the teardrop hem.
        gap : The gap distance of the hem.
        isFlipped : Indicates if the hem direction is flipped.
        bendPositionType : The bend location type for the hem.
        Returns true if defining the hem is successful.
        """
        return bool()
    def redefineAsDoubleHem(self, gap: core.ValueInput, length: core.ValueInput, setback: core.ValueInput, isFlipped: bool, bendPositionType: BendPositionTypes) -> bool:
        """
        Redefines the hem as a double hem.
        gap : The gap distance of the hem.
        length : The length of the double hem.
        setback : The setback of the double hem.
        isFlipped : Indicates if the hem direction is flipped.
        bendPositionType : The bend location type for the hem.
        Returns true if defining the hem is successful.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> HemFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this is not the NativeObject.
        """
        return HemFeature()
    @property
    def definitionType(self) -> HemFeatureDefinitionTypes:
        """
        Gets the type of hem defined.
        """
        return HemFeatureDefinitionTypes()
    @property
    def definition(self) -> HemFeatureDefinition:
        """
        Returns the HemFeatureDefinition object which provides access to the information
        defining this HemFeature and the ability to edit it.
        """
        return HemFeatureDefinition()
    @property
    def nativeObject(self) -> HemFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return HemFeature()

class MeshCombineFaceGroupsFeature(MeshFeature):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Object that represents an existing mesh combine face groups feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshCombineFaceGroupsFeature:
        return MeshCombineFaceGroupsFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> MeshCombineFaceGroupsFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return MeshCombineFaceGroupsFeature()
    @property
    def mesh(self) -> core.Base:
        """
        Gets the input mesh body. The actual mesh body is set implicitly by the input face groups.
        """
        return core.Base()
    @property
    def inputFaceGroups(self) -> list[FaceGroup]:
        """
        Gets and sets the input face groups, which should be combined. They need to belong to the same mesh body.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return [FaceGroup()]
    @inputFaceGroups.setter
    def inputFaceGroups(self, value: list[FaceGroup]):
        """
        Gets and sets the input face groups, which should be combined. They need to belong to the same mesh body.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def nativeObject(self) -> MeshCombineFaceGroupsFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return MeshCombineFaceGroupsFeature()

class MeshCombineFeature(MeshFeature):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Object that represents an existing mesh combine feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshCombineFeature:
        return MeshCombineFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> MeshCombineFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return MeshCombineFeature()
    @property
    def targetBody(self) -> MeshBody:
        """
        Gets and sets the input targetBody.
        """
        return MeshBody()
    @targetBody.setter
    def targetBody(self, value: MeshBody):
        """
        Gets and sets the input targetBody.
        """
        pass
    @property
    def toolBodies(self) -> list[MeshBody]:
        """
        Gets and sets the MeshBody objects that represent the tool bodies.
        """
        return [MeshBody()]
    @toolBodies.setter
    def toolBodies(self, value: list[MeshBody]):
        """
        Gets and sets the MeshBody objects that represent the tool bodies.
        """
        pass
    @property
    def meshCombineOperationType(self) -> MeshCombineOperationTypes:
        """
        Gets and sets the operation type of mesh combine.
        """
        return MeshCombineOperationTypes()
    @meshCombineOperationType.setter
    def meshCombineOperationType(self, value: MeshCombineOperationTypes):
        """
        Gets and sets the operation type of mesh combine.
        """
        pass
    @property
    def isNewComponent(self) -> bool:
        """
        Creates a new component to contain combined mesh bodies.
        Default value is false.
        """
        return bool()
    @property
    def isKeepToolBodies(self) -> bool:
        """
        Preserves a copy of each tool body.
        """
        return bool()
    @isKeepToolBodies.setter
    def isKeepToolBodies(self, value: bool):
        """
        Preserves a copy of each tool body.
        """
        pass
    @property
    def nativeObject(self) -> MeshCombineFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return MeshCombineFeature()

class MeshGenerateFaceGroupsFeature(MeshFeature):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Object that represents an existing mesh generate face groups feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshGenerateFaceGroupsFeature:
        return MeshGenerateFaceGroupsFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> MeshGenerateFaceGroupsFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return MeshGenerateFaceGroupsFeature()
    @property
    def mesh(self) -> core.Base:
        """
        Gets and sets the input mesh body.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @mesh.setter
    def mesh(self, value: core.Base):
        """
        Gets and sets the input mesh body.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def meshGenerateFaceGroupsMethodType(self) -> MeshGenerateFaceGroupsMethodTypes:
        """
        Gets and sets the type of mesh generate face groups.
        """
        return MeshGenerateFaceGroupsMethodTypes()
    @meshGenerateFaceGroupsMethodType.setter
    def meshGenerateFaceGroupsMethodType(self, value: MeshGenerateFaceGroupsMethodTypes):
        """
        Gets and sets the type of mesh generate face groups.
        """
        pass
    @property
    def angleThreshold(self) -> ModelParameter:
        """
        Controls the angle threshold during the face group generation.
        The values can range between 0 and pi/2.
        Only valid if meshGenerateFaceGroupsMethodType is FastGenerateFaceGroupsType.
        """
        return ModelParameter()
    @property
    def minimumFaceGroupSize(self) -> ModelParameter:
        """
        Gets and sets the fraction of the overall mesh area
        which determines the smallest face group.
        The value can range between 0 and 1.
        Only valid if meshGenerateFaceGroupsMethodType is FastGenerateFaceGroupsType.
        """
        return ModelParameter()
    @property
    def boundaryTolerance(self) -> ModelParameter:
        """
        Gets and sets tolerance to define face group. This value is used
        during the fitting of the primitives. The values can range between
        0 and 0.01.
        Only valid if meshGenerateFaceGroupsMethodType is AccurateGenerateFaceGroupsType.
        """
        return ModelParameter()
    @property
    def nativeObject(self) -> MeshGenerateFaceGroupsFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return MeshGenerateFaceGroupsFeature()

class MeshReduceFeature(MeshFeature):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Object that represents an existing mesh reduce feature in a design.
    To change the properties of this feature, you need to position the timeline marker to immediately before this feature.
    This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshReduceFeature:
        return MeshReduceFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> MeshReduceFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return MeshReduceFeature()
    @property
    def mesh(self) -> core.Base:
        """
        Gets and sets the input mesh body.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @mesh.setter
    def mesh(self, value: core.Base):
        """
        Gets and sets the input mesh body.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def meshReduceMethodType(self) -> MeshReduceMethodTypes:
        """
        Gets and sets the type of mesh reduce.
        """
        return MeshReduceMethodTypes()
    @meshReduceMethodType.setter
    def meshReduceMethodType(self, value: MeshReduceMethodTypes):
        """
        Gets and sets the type of mesh reduce.
        """
        pass
    @property
    def meshReduceTargetType(self) -> MeshReduceTargetTypes:
        """
        Gets and sets the target criteria for the reduction.
        """
        return MeshReduceTargetTypes()
    @meshReduceTargetType.setter
    def meshReduceTargetType(self, value: MeshReduceTargetTypes):
        """
        Gets and sets the target criteria for the reduction.
        """
        pass
    @property
    def maximumDeviation(self) -> ModelParameter:
        """
        Controls the maximum deviation of the reduced mesh to the original mesh.
        Only valid if meshReduceTargetType is MaximumDeviationMeshReduceTargetType.
        """
        return ModelParameter()
    @property
    def proportion(self) -> ModelParameter:
        """
        Gets and sets the proportion of number of faces of the reduced mesh to the number of
        faces of original mesh as a target for the reduction. The value can range between 0 and 100 percent.
        Only valid if meshReduceTargetType is ProportionMeshReduceTargetType.
        """
        return ModelParameter()
    @property
    def facecount(self) -> ModelParameter:
        """
        Gets and sets the target face count for the reduced mesh as a target for the reduction.
        Only valid if meshReduceTargetType is FaceCountMeshReduceTargetType.
        """
        return ModelParameter()
    @property
    def nativeObject(self) -> MeshReduceFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return MeshReduceFeature()

class MeshRemeshFeature(MeshFeature):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Object that represents an existing mesh re-mesh feature in a design.
    To change the properties of this feature, you need to position the timeline marker to immediately before this feature.
    This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshRemeshFeature:
        return MeshRemeshFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> MeshRemeshFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return MeshRemeshFeature()
    @property
    def mesh(self) -> core.Base:
        """
        Gets and sets the input mesh body.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @mesh.setter
    def mesh(self, value: core.Base):
        """
        Gets and sets the input mesh body.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def meshRemeshMethodType(self) -> MeshRemeshMethodTypes:
        """
        Gets and sets the type of mesh re-mesh.
        """
        return MeshRemeshMethodTypes()
    @meshRemeshMethodType.setter
    def meshRemeshMethodType(self, value: MeshRemeshMethodTypes):
        """
        Gets and sets the type of mesh re-mesh.
        """
        pass
    @property
    def density(self) -> ModelParameter:
        """
        Controls the density of the newly created faces of the re-meshed mesh.
        The values can range between 0 and 1.
        """
        return ModelParameter()
    @property
    def shapePreservation(self) -> ModelParameter:
        """
        Gets and sets how much of the original shape needs to preserved.
        The value can range between 0 and 1.
        Only valid if meshRemeshMethodType is AdaptiveType.
        """
        return ModelParameter()
    @property
    def isPreserveSharpEdgesEnabled(self) -> bool:
        """
        Gets and sets if sharp edges are preserved during the re-mesh process.
        """
        return bool()
    @isPreserveSharpEdgesEnabled.setter
    def isPreserveSharpEdgesEnabled(self, value: bool):
        """
        Gets and sets if sharp edges are preserved during the re-mesh process.
        """
        pass
    @property
    def isPreserveBoundariesEnabled(self) -> bool:
        """
        Gets and sets if open boundary edges are preserved during the re-mesh process.
        """
        return bool()
    @isPreserveBoundariesEnabled.setter
    def isPreserveBoundariesEnabled(self, value: bool):
        """
        Gets and sets if open boundary edges are preserved during the re-mesh process.
        """
        pass
    @property
    def nativeObject(self) -> MeshRemeshFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return MeshRemeshFeature()

class MeshRemoveFeature(MeshFeature):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Object that represents an existing mesh remove feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshRemoveFeature:
        return MeshRemoveFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> MeshRemoveFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return MeshRemoveFeature()
    @property
    def inputBodies(self) -> list[MeshBody]:
        """
        Gets the input meshes.
        """
        return [MeshBody()]
    @property
    def nativeObject(self) -> MeshRemoveFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return MeshRemoveFeature()

class MeshRepairFeature(MeshFeature):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Object that represents an existing mesh repair feature in a design.
    To change the properties of this feature, you need to position the timeline marker to immediately before this feature.
    This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshRepairFeature:
        return MeshRepairFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> MeshRepairFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return MeshRepairFeature()
    @property
    def mesh(self) -> core.Base:
        """
        Gets and sets the input mesh body.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @mesh.setter
    def mesh(self, value: core.Base):
        """
        Gets and sets the input mesh body.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def meshRepairType(self) -> MeshRepairTypes:
        """
        Gets and sets the type of mesh repair.
        """
        return MeshRepairTypes()
    @meshRepairType.setter
    def meshRepairType(self, value: MeshRepairTypes):
        """
        Gets and sets the type of mesh repair.
        """
        pass
    @property
    def meshRepairRebuildType(self) -> MeshRepairRebuildTypes:
        """
        Gets and sets the type of mesh repair rebuild mode.
        Only valid if meshRepairType is RebuildMeshRepairType.
        """
        return MeshRepairRebuildTypes()
    @meshRepairRebuildType.setter
    def meshRepairRebuildType(self, value: MeshRepairRebuildTypes):
        """
        Gets and sets the type of mesh repair rebuild mode.
        Only valid if meshRepairType is RebuildMeshRepairType.
        """
        pass
    @property
    def density(self) -> ModelParameter:
        """
        Controls the density of the newly created triangles in RebuildMeshRepairType.
        The values can range between 8 and 256.
        Only valid if meshRepairType is RebuildMeshRepairType.
        """
        return ModelParameter()
    @property
    def offset(self) -> ModelParameter:
        """
        Gets and sets the offset from the original mesh to newly created mesh.
        Only valid if meshRepairType is RebuildMeshRepairType and meshRepairRebuildType
        is AccurateMeshRepairRebuildType.
        """
        return ModelParameter()
    @property
    def nativeObject(self) -> MeshRepairFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return MeshRepairFeature()

class MeshReverseNormalFeature(MeshFeature):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Object that represents an existing MeshReverseNormal feature in a design.
    To change the properties of this feature, you need to position the timeline marker to immediately before this feature.
    This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshReverseNormalFeature:
        return MeshReverseNormalFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> MeshReverseNormalFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return MeshReverseNormalFeature()
    @property
    def mesh(self) -> core.Base:
        """
        Gets and sets the input mesh body. This can either be a mesh body or an object collection with face groups.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @mesh.setter
    def mesh(self, value: core.Base):
        """
        Gets and sets the input mesh body. This can either be a mesh body or an object collection with face groups.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def nativeObject(self) -> MeshReverseNormalFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return MeshReverseNormalFeature()

class MeshSeparateFeature(MeshFeature):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Object that represents an existing MeshSeparate feature in a design.
    To change the properties of this feature, you need to position the timeline marker to immediately before this feature.
    This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshSeparateFeature:
        return MeshSeparateFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> MeshSeparateFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return MeshSeparateFeature()
    @property
    def mesh(self) -> core.Base:
        """
        Gets and sets the input mesh body. This can either be a mesh body or an object collection with face groups.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @mesh.setter
    def mesh(self, value: core.Base):
        """
        Gets and sets the input mesh body. This can either be a mesh body or an object collection with face groups.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def meshSeparateType(self) -> MeshSeparateTypes:
        """
        Gets and sets the output type of mesh separation.
        """
        return MeshSeparateTypes()
    @meshSeparateType.setter
    def meshSeparateType(self, value: MeshSeparateTypes):
        """
        Gets and sets the output type of mesh separation.
        """
        pass
    @property
    def isKeepBody(self) -> bool:
        """
        Preserves a copy of the original mesh body.
        """
        return bool()
    @isKeepBody.setter
    def isKeepBody(self, value: bool):
        """
        Preserves a copy of the original mesh body.
        """
        pass
    @property
    def isMultipleBodies(self) -> bool:
        """
        Separates each face group into an independent mesh body. Only valid if face groups are used as inputs.
        """
        return bool()
    @isMultipleBodies.setter
    def isMultipleBodies(self, value: bool):
        """
        Separates each face group into an independent mesh body. Only valid if face groups are used as inputs.
        """
        pass
    @property
    def nativeObject(self) -> MeshSeparateFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return MeshSeparateFeature()

class MeshShellFeature(MeshFeature):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Object that represents an existing mesh shell feature in a design.
    
    To change the properties of this feature, you need to position the timeline marker to immediately before this feature.
    This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshShellFeature:
        return MeshShellFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> MeshShellFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return MeshShellFeature()
    @property
    def mesh(self) -> core.Base:
        """
        Gets and sets the input mesh body.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @mesh.setter
    def mesh(self, value: core.Base):
        """
        Gets and sets the input mesh body.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def thickness(self) -> ModelParameter:
        """
        Controls the thickness of the shell.
        """
        return ModelParameter()
    @property
    def nativeObject(self) -> MeshShellFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return MeshShellFeature()

class MeshSmoothFeature(MeshFeature):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Object that represents an existing MeshSmooth feature in a design.
    To change the properties of this feature, you need to position the timeline marker to immediately before this feature.
    This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> MeshSmoothFeature:
        return MeshSmoothFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> MeshSmoothFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return MeshSmoothFeature()
    @property
    def mesh(self) -> core.Base:
        """
        Gets and sets the input mesh body.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return core.Base()
    @mesh.setter
    def mesh(self, value: core.Base):
        """
        Gets and sets the input mesh body.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def smoothness(self) -> ModelParameter:
        """
        Gets and sets the smoothness parameter. The range is between 0 and 1.
        The higher the value the stronger the smoothing.
        """
        return ModelParameter()
    @property
    def nativeObject(self) -> MeshSmoothFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return MeshSmoothFeature()

class PMIHoleThreadNote(PMICreatedAnnotation):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Defines a created PMI which includes data corresponding to Hole/Thread Note PMI.
    Provides access to information such as tolerances, thread information, and units.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMIHoleThreadNote:
        return PMIHoleThreadNote()
    def createForAssemblyContext(self, occurrence: Occurrence) -> PMIHoleThreadNote:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return PMIHoleThreadNote()
    @property
    def nativeObject(self) -> PMIHoleThreadNote:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return PMIHoleThreadNote()
    @property
    def isWantSelectAllMatchingHoles(self) -> bool:
        """
        Gets and sets whether the Hole/Thread Note PMI should represent all the matching holes in the design.
        
        While this can be set to true on existing PMI, it does not always ensures that all matching holes are included.
        
        Updating this value will result in the referenced entities being updated to include all matching holes.
        """
        return bool()
    @isWantSelectAllMatchingHoles.setter
    def isWantSelectAllMatchingHoles(self, value: bool):
        """
        Gets and sets whether the Hole/Thread Note PMI should represent all the matching holes in the design.
        
        While this can be set to true on existing PMI, it does not always ensures that all matching holes are included.
        
        Updating this value will result in the referenced entities being updated to include all matching holes.
        """
        pass
    @property
    def primaryDisplaySettings(self) -> PMIDisplaySettings:
        """
        Gets and sets the primary display settings for the Hole/Thread Note PMI.
        
        This will always be existent, and includes information about format and units.
        """
        return PMIDisplaySettings()
    @primaryDisplaySettings.setter
    def primaryDisplaySettings(self, value: PMIDisplaySettings):
        """
        Gets and sets the primary display settings for the Hole/Thread Note PMI.
        
        This will always be existent, and includes information about format and units.
        """
        pass
    @property
    def hasSecondaryDisplaySettings(self) -> bool:
        """
        Gets and sets whether there are secondary display settings defined for the Hole/Thread Note PMI.
        """
        return bool()
    @hasSecondaryDisplaySettings.setter
    def hasSecondaryDisplaySettings(self, value: bool):
        """
        Gets and sets whether there are secondary display settings defined for the Hole/Thread Note PMI.
        """
        pass
    @property
    def secondaryDisplaySettings(self) -> PMIDisplaySettings:
        """
        Gets and sets the secondary display settings for the Hole/Thread Note PMI.
        
        This will not always be existent, based on the hasSecondaryDisplaySettings value.
        
        Setting this value will also set hasSecondaryDisplaySettings to true.
        """
        return PMIDisplaySettings()
    @secondaryDisplaySettings.setter
    def secondaryDisplaySettings(self, value: PMIDisplaySettings):
        """
        Gets and sets the secondary display settings for the Hole/Thread Note PMI.
        
        This will not always be existent, based on the hasSecondaryDisplaySettings value.
        
        Setting this value will also set hasSecondaryDisplaySettings to true.
        """
        pass
    @property
    def isWantQuantityNote(self) -> bool:
        """
        Indicates if the quantity is visible in the graphics.
        
        Updating this value will reset the segments in the PMI.
        """
        return bool()
    @isWantQuantityNote.setter
    def isWantQuantityNote(self, value: bool):
        """
        Indicates if the quantity is visible in the graphics.
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def diameter(self) -> PMIGeometricValue:
        """
        Gets and sets the PMIGeometricValue used to define the diameter of the annotated hole or boss in cm.
        
        When querying, if the diameter is not set, the value will be 0 and hasValue property will be false.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerance property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        return PMIGeometricValue()
    @diameter.setter
    def diameter(self, value: PMIGeometricValue):
        """
        Gets and sets the PMIGeometricValue used to define the diameter of the annotated hole or boss in cm.
        
        When querying, if the diameter is not set, the value will be 0 and hasValue property will be false.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerance property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def shaftTolerance(self) -> PMIGeometricValueTolerance:
        """
        Gets and sets the PMIGeometricValueTolerance for the shaft diameter of the annotated hole if a shaft tolerance exists.
        """
        return PMIGeometricValueTolerance()
    @shaftTolerance.setter
    def shaftTolerance(self, value: PMIGeometricValueTolerance):
        """
        Gets and sets the PMIGeometricValueTolerance for the shaft diameter of the annotated hole if a shaft tolerance exists.
        """
        pass
    @property
    def isThrough(self) -> bool:
        """
        Gets and sets whether the hole should be considered a through hole.
        
        Setting this to true will remove the depth information related to the PMI.
        
        Setting this to false will result in a default depth set without tolerance.
        
        Updating this value will reset the segments in the PMI.
        """
        return bool()
    @isThrough.setter
    def isThrough(self, value: bool):
        """
        Gets and sets whether the hole should be considered a through hole.
        
        Setting this to true will remove the depth information related to the PMI.
        
        Setting this to false will result in a default depth set without tolerance.
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def depth(self) -> PMIGeometricValue:
        """
        Gets and sets the PMIGeometricValue used to define the depth of the hole in cm. In the case of bosses, it represents the height of the boss.
        
        When querying, if the depth is not set, the value will be 0 and hasValue property will be false.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerance property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        return PMIGeometricValue()
    @depth.setter
    def depth(self, value: PMIGeometricValue):
        """
        Gets and sets the PMIGeometricValue used to define the depth of the hole in cm. In the case of bosses, it represents the height of the boss.
        
        When querying, if the depth is not set, the value will be 0 and hasValue property will be false.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerance property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def radius(self) -> PMIGeometricValue:
        """
        Gets and sets the PMIGeometricValue used to define the radius of the hole in cm. Not applicable for bosses.
        
        When querying, if the radius is not set, the value will be 0 and hasValue property will be false.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerance property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        return PMIGeometricValue()
    @radius.setter
    def radius(self, value: PMIGeometricValue):
        """
        Gets and sets the PMIGeometricValue used to define the radius of the hole in cm. Not applicable for bosses.
        
        When querying, if the radius is not set, the value will be 0 and hasValue property will be false.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerance property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def isThreaded(self) -> bool:
        """
        Gets and sets whether the hole or the boss has a thread associated.
        
        Setting this to false will result in all thread information being removed.
        
        Updating this value will reset the segments in the PMI.
        """
        return bool()
    @isThreaded.setter
    def isThreaded(self, value: bool):
        """
        Gets and sets whether the hole or the boss has a thread associated.
        
        Setting this to false will result in all thread information being removed.
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def threadInfo(self) -> ThreadInfo:
        """
        Gets and sets the ThreadInfo object associated with the hole/thread note.
        
        Returns null if the hole is not threaded.
        
        Updating this value will reset the segments in the PMI.
        """
        return ThreadInfo()
    @threadInfo.setter
    def threadInfo(self, value: ThreadInfo):
        """
        Gets and sets the ThreadInfo object associated with the hole/thread note.
        
        Returns null if the hole is not threaded.
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def isThreadedThrough(self) -> bool:
        """
        Gets and sets whether the hole or boss is threaded all the way through.
        
        Setting this to true will remove the thread depth information.
        
        Updating this value will reset the segments in the PMI.
        """
        return bool()
    @isThreadedThrough.setter
    def isThreadedThrough(self, value: bool):
        """
        Gets and sets whether the hole or boss is threaded all the way through.
        
        Setting this to true will remove the thread depth information.
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def threadDepth(self) -> PMIGeometricValue:
        """
        Gets and sets the PMIGeometricValue used to define the thread depth of the hole in cm. In the case of bosses, it represents the thread length of the boss.
        
        When querying, if the thread depth is not set, the value will be 0 and hasValue property will be false.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerance property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        return PMIGeometricValue()
    @threadDepth.setter
    def threadDepth(self, value: PMIGeometricValue):
        """
        Gets and sets the PMIGeometricValue used to define the thread depth of the hole in cm. In the case of bosses, it represents the thread length of the boss.
        
        When querying, if the thread depth is not set, the value will be 0 and hasValue property will be false.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerance property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def counterboreDiameter(self) -> PMIGeometricValue:
        """
        Gets and sets the PMIGeometricValue used to define the diameter of the counterbore segment of the hole in cm. Not applicable for bosses.
        
        When querying, if the counterbore diameter is not set, the value will be 0 and hasValue property will be false.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerance property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        return PMIGeometricValue()
    @counterboreDiameter.setter
    def counterboreDiameter(self, value: PMIGeometricValue):
        """
        Gets and sets the PMIGeometricValue used to define the diameter of the counterbore segment of the hole in cm. Not applicable for bosses.
        
        When querying, if the counterbore diameter is not set, the value will be 0 and hasValue property will be false.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerance property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def counterboreDepth(self) -> PMIGeometricValue:
        """
        Gets and sets the PMIGeometricValue used to define the depth of the counterbore segment of the hole in cm. Not applicable for bosses.
        
        When querying, if the counterbore depth is not set, the value will be 0 and hasValue property will be false.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerance property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        return PMIGeometricValue()
    @counterboreDepth.setter
    def counterboreDepth(self, value: PMIGeometricValue):
        """
        Gets and sets the PMIGeometricValue used to define the depth of the counterbore segment of the hole in cm. Not applicable for bosses.
        
        When querying, if the counterbore depth is not set, the value will be 0 and hasValue property will be false.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerance property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def counterboreRadius(self) -> PMIGeometricValue:
        """
        Gets and sets the PMIGeometricValue used to define the radius of the counterbore segment of the hole in cm. Not applicable for bosses.
        
        When querying, if the counterbore radius is not set, the value will be 0 and hasValue property will be false.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerance property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        return PMIGeometricValue()
    @counterboreRadius.setter
    def counterboreRadius(self, value: PMIGeometricValue):
        """
        Gets and sets the PMIGeometricValue used to define the radius of the counterbore segment of the hole in cm. Not applicable for bosses.
        
        When querying, if the counterbore radius is not set, the value will be 0 and hasValue property will be false.
        
        When setting, it is possible to also add tolerances to the object set by setting the tolerance property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def countersinkDiameter(self) -> PMIGeometricValue:
        """
        Gets and sets the PMIGeometricValue used to define the diameter of the countersink segment of the hole in cm. Not applicable for bosses.
        
        When querying, if the countersink diameter is not set, the value will be 0 and hasValue property will be false.
        When setting, it is possible to also add tolerances to the object set by setting the tolerance property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        return PMIGeometricValue()
    @countersinkDiameter.setter
    def countersinkDiameter(self, value: PMIGeometricValue):
        """
        Gets and sets the PMIGeometricValue used to define the diameter of the countersink segment of the hole in cm. Not applicable for bosses.
        
        When querying, if the countersink diameter is not set, the value will be 0 and hasValue property will be false.
        When setting, it is possible to also add tolerances to the object set by setting the tolerance property of the PMIGeometricValue object.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def countersinkAngle(self) -> PMIGeometricValue:
        """
        Gets and sets the PMIGeometricValue used to define the angle of the countersink segment of the hole in radians. Not applicable for bosses.
        
        When querying, if the countersink angle is not set, the value will be 0 and hasValue property will be false.
        When setting, this value does not have tolerances, and will not be taken into account.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        return PMIGeometricValue()
    @countersinkAngle.setter
    def countersinkAngle(self, value: PMIGeometricValue):
        """
        Gets and sets the PMIGeometricValue used to define the angle of the countersink segment of the hole in radians. Not applicable for bosses.
        
        When querying, if the countersink angle is not set, the value will be 0 and hasValue property will be false.
        When setting, this value does not have tolerances, and will not be taken into account.
        
        Setting this to an object with "hasValue" set to true and "value" set to 0 will result in the modeled value being set (if such value exists in the model).
        
        Updating this value will reset the segments in the PMI.
        """
        pass
    @property
    def isHoleAnnotation(self) -> bool:
        """
        Indicates whether the PMI is representing a hole or a boss.
        """
        return bool()
    @property
    def holeType(self) -> HoleTypes:
        """
        Gets the type of the hole.
        """
        return HoleTypes()
    @property
    def quantity(self) -> int:
        """
        Gets the number of holes/bosses the Hole/Thread Note PMI is associated with.
        """
        return int()
    @property
    def isFlipHoleNormal(self) -> bool:
        """
        Gets and sets whether the hole normal should be treated as flipped, resulting in the hole top to be placed at the lowest found face of the hole.
        
        This is applicable only to complex holes, in other cases the value is ignored.
        """
        return bool()
    @isFlipHoleNormal.setter
    def isFlipHoleNormal(self, value: bool):
        """
        Gets and sets whether the hole normal should be treated as flipped, resulting in the hole top to be placed at the lowest found face of the hole.
        
        This is applicable only to complex holes, in other cases the value is ignored.
        """
        pass

class PMILeaderLineNote(PMICreatedAnnotation):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Defines a created PMI which includes data corresponding to Notes.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> PMILeaderLineNote:
        return PMILeaderLineNote()
    def createForAssemblyContext(self, occurrence: Occurrence) -> PMILeaderLineNote:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return PMILeaderLineNote()
    def setAnnotationTargetPoint(self, annotationTargetPoint: core.Point3D) -> bool:
        """
        Sets the point on the annotation plane where the leader line meets the annotated geometry.
        annotationTargetPoint : The point on the annotated geometry.
        Returns true if the annotation target point has been set successfully, false otherwise.
        """
        return bool()
    def setAnnotationPlane(self, planeType: LeaderLineNotePlaneTypes, face: BRepFace = None) -> bool:
        """
        Sets the annotation plane for Leader Line Note PMI.
        planeType : The type of annotation plane to create.
        
        Setting Leader Line Note PMI to Unknown plane type is not supported.
        face : An optional input face to define the plane.
        
        Required if the planeType is NormalToCustomFaceLeaderLineNotePlaneType.
        
        Required if the planeType is NormalToFaceLeaderLineNotePlaneType and the face must be an adjacent face to the geometry.
        
        For other plane types, this parameter is ignored.
        True if the plane has been set successfully, false otherwise.
        """
        return bool()
    @property
    def nativeObject(self) -> PMILeaderLineNote:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return PMILeaderLineNote()
    @property
    def geometry(self) -> core.Base:
        """
        The geometric entity to which the Note PMI is associated.
        
        This can be a BRepFace, BRepEdge or BRepVertex object. For BRepEdge objects, only linear, circular
        and elliptical edges are supported. The note will be positioned relative to this entity and will
        maintain its association with the entity geometry.
        
        The geometry obtained is equivalent to referencedEntities[0].
        
        Setting the geometry will set a default annotation plane and target point.
        Resetting the geometry will reset to default annotation plane and target point.
        Native object will be used when setting the geometry.
        """
        return core.Base()
    @geometry.setter
    def geometry(self, value: core.Base):
        """
        The geometric entity to which the Note PMI is associated.
        
        This can be a BRepFace, BRepEdge or BRepVertex object. For BRepEdge objects, only linear, circular
        and elliptical edges are supported. The note will be positioned relative to this entity and will
        maintain its association with the entity geometry.
        
        The geometry obtained is equivalent to referencedEntities[0].
        
        Setting the geometry will set a default annotation plane and target point.
        Resetting the geometry will reset to default annotation plane and target point.
        Native object will be used when setting the geometry.
        """
        pass
    @property
    def annotationPlaneType(self) -> LeaderLineNotePlaneTypes:
        """
        Gets the LeaderLineNotePlaneTypes that the Leader Line Note PMI is currently using.
        """
        return LeaderLineNotePlaneTypes()
    @property
    def annotationPlaneReferencedFace(self) -> BRepFace:
        """
        Gets the BRepFace used as the alternate plane for the leader line note, if there's any.
        
        Applicable when the planeType is NormalToCustomFaceLeaderLineNotePlaneType or NormalToFaceLeaderLineNotePlaneType.
        """
        return BRepFace()
    @property
    def supportedAnnotationPlaneTypes(self) -> list[int]:
        """
        Gets the available annotation plane types that can be set on this Leader Line Note PMI.
        """
        return [int()]
    @property
    def adjacentPlanarFaces(self) -> list[BRepFace]:
        """
        Gets the adjacent planar faces to the geometry that can be used to define the annotation plane with type NormalToFaceLeaderLineNotePlaneType.
        """
        return [BRepFace()]

class SketchArc(SketchCurve):
    """
    An arc in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchArc:
        return SketchArc()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SketchArc:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SketchArc()
    @property
    def centerSketchPoint(self) -> SketchPoint:
        """
        The sketch point at the center of the arc. The arc is dependent on this point and moving the
        point will cause the arc to adjust.
        """
        return SketchPoint()
    @property
    def startSketchPoint(self) -> SketchPoint:
        """
        The sketch point at the start of the arc. The arc is dependent on this point and moving the
        point will cause the arc to adjust.
        """
        return SketchPoint()
    @property
    def endSketchPoint(self) -> SketchPoint:
        """
        The sketch point at the end of the arc. The arc is dependent on this point and moving the
        point will cause the arc to adjust.
        """
        return SketchPoint()
    @property
    def radius(self) -> float:
        """
        Gets and sets the radius of the arc. Changing the radius is limited
        by any constraints that might exist on the circle. Setting the radius
        can fail in cases where the radius is fully defined through constraints.
        """
        return float()
    @radius.setter
    def radius(self, value: float):
        """
        Gets and sets the radius of the arc. Changing the radius is limited
        by any constraints that might exist on the circle. Setting the radius
        can fail in cases where the radius is fully defined through constraints.
        """
        pass
    @property
    def geometry(self) -> core.Arc3D:
        """
        Returns the transient geometry of the arc which provides geometric
        information about the arc. The returned geometry is always in sketch space.
        """
        return core.Arc3D()
    @property
    def worldGeometry(self) -> core.Arc3D:
        """
        Returns an Arc3D object which provides geometric information in world space.
        The returned geometry takes into account the assembly context and the position of the
        sketch in its parent component, which means the geometry will be returned in the root
        component space.
        """
        return core.Arc3D()
    @property
    def nativeObject(self) -> SketchArc:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SketchArc()

class SketchCircle(SketchCurve):
    """
    A circle in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchCircle:
        return SketchCircle()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SketchCircle:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SketchCircle()
    @property
    def centerSketchPoint(self) -> SketchPoint:
        """
        Returns the sketch point at the center of the circle.
        """
        return SketchPoint()
    @property
    def geometry(self) -> core.Circle3D:
        """
        Returns the transient geometry of the circle which provides geometric
        information about the circle. The returned geometry is always in sketch space.
        """
        return core.Circle3D()
    @property
    def worldGeometry(self) -> core.Circle3D:
        """
        Returns a Point3D object which provides the position of the sketch point in world space.
        The returned coordinate takes into account the assembly context and the position of the
        sketch in its parent component, which means the coordinate will be returned in the root
        component space.
        """
        return core.Circle3D()
    @property
    def area(self) -> float:
        """
        Returns the area of the circle in square centimeters.
        """
        return float()
    @property
    def radius(self) -> float:
        """
        Gets and sets the radius of the circle. Changing the radius is limited
        by any constraints that might exist on the circle.
        """
        return float()
    @radius.setter
    def radius(self, value: float):
        """
        Gets and sets the radius of the circle. Changing the radius is limited
        by any constraints that might exist on the circle.
        """
        pass
    @property
    def nativeObject(self) -> SketchCircle:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SketchCircle()

class SketchConicCurve(SketchCurve):
    """
    The SketchConicCurve class represents conic curves in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchConicCurve:
        return SketchConicCurve()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SketchConicCurve:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SketchConicCurve()
    @property
    def startSketchPoint(self) -> SketchPoint:
        """
        The sketch point at the start of the curve.
        """
        return SketchPoint()
    @property
    def endSketchPoint(self) -> SketchPoint:
        """
        The sketch point at the end of the curve.
        """
        return SketchPoint()
    @property
    def apexSketchPoint(self) -> SketchPoint:
        """
        The sketch point at the apex of the conic curve.
        """
        return SketchPoint()
    @property
    def geometry(self) -> core.NurbsCurve3D:
        """
        Returns the transient geometry of the curve which provides geometric
        information about the curve. The returned geometry is always in sketch space.
        
        Because the fixed spline can be analytically defined, for example it
        can be the precise intersection of a surface and the sketch plane,
        returning a NURBS curve that represents the spline may be an
        approximation of the actual curve. You can use the Evaluator
        property of the SketchFixedSpline object to perform evaluations
        on the precise curve.
        """
        return core.NurbsCurve3D()
    @property
    def worldGeometry(self) -> core.NurbsCurve3D:
        """
        Returns a NurbsCurve3D object that is the equivalent of this sketch curve
        but is in the space of the parent component rather than in sketch space.
        """
        return core.NurbsCurve3D()
    @property
    def evaluator(self) -> core.CurveEvaluator3D:
        """
        Returns an evaluator object that lets you perform evaluations
        on the precise geometry of the curve.
        """
        return core.CurveEvaluator3D()
    @property
    def nativeObject(self) -> SketchConicCurve:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SketchConicCurve()
    @property
    def rhoValue(self) -> float:
        """
        Get and sets the rho value for the curve. The value must be greater than
        zero and less than one.
        """
        return float()
    @rhoValue.setter
    def rhoValue(self, value: float):
        """
        Get and sets the rho value for the curve. The value must be greater than
        zero and less than one.
        """
        pass

class SketchControlPointSpline(SketchCurve):
    """
    A control point spline in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchControlPointSpline:
        return SketchControlPointSpline()
    def addControlPoint(self, parameter: float) -> bool:
        """
        Adds an additional control point to the control point spline. Inserting a new control
        point does not change the shape of the curve, but the control frame will be re-computed
        and the control points will be adjusted to maintain the current shape.
        
        This method will fail in the case where the control frame is not displayed. You can
        check for this by using the is isControlFrameDisplayed.
        parameter : The parameter position that defines where to insert the new control point. The parameter
        value must be within the parametric range of the curve. This can be determined by using the
        getParameterExtents method of the CurveEvaluator3D returned by the evaluator property.
        Returns true if adding the control point was successful.
        """
        return bool()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SketchControlPointSpline:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SketchControlPointSpline()
    @property
    def startSketchPoint(self) -> SketchPoint:
        """
        The sketch point at the start of the spline. If the curve is closed the start and end
        sketch points will be the same.
        """
        return SketchPoint()
    @property
    def endSketchPoint(self) -> SketchPoint:
        """
        The sketch point at the end of the spline. If the curve is closed the start and end
        sketch points will be the same.
        """
        return SketchPoint()
    @property
    def controlPoints(self) -> list[SketchPoint]:
        """
        Returns the set of sketch points that the control frame of the spline fits through.
        The points include the start and end points and are returned in
        the same order as the spline fits through them where the first point
        in the list is the start point and the last point is the end point.
        Editing the position of these sketch points will result in editing the spline.
        
        Deleting one of the sketch points will remove that point from the control frame and
        the curve will be recomputed.
        """
        return [SketchPoint()]
    @property
    def geometry(self) -> core.NurbsCurve3D:
        """
        Returns the transient geometry of the curve which provides geometric
        information about the curve. The returned geometry is always in sketch space.
        Use the worldGeometry property to get it in the model's design space.
        """
        return core.NurbsCurve3D()
    @property
    def worldGeometry(self) -> core.NurbsCurve3D:
        """
        Returns a NurbsCurve3D object that is the equivalent of this sketch curve
        but is in the space of the parent component rather than in sketch space.
        """
        return core.NurbsCurve3D()
    @property
    def evaluator(self) -> core.CurveEvaluator3D:
        """
        Returns an evaluator object that lets you perform evaluations
        on the precise geometry of the curve.
        """
        return core.CurveEvaluator3D()
    @property
    def nativeObject(self) -> SketchControlPointSpline:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SketchControlPointSpline()
    @property
    def degree(self) -> SplineDegrees:
        """
        Gets and sets the degree of the spline.
        """
        return SplineDegrees()
    @degree.setter
    def degree(self, value: SplineDegrees):
        """
        Gets and sets the degree of the spline.
        """
        pass
    @property
    def isControlFrameDisplayed(self) -> bool:
        """
        Gets and sets if the control frame of the curve is currently displayed. Using this property
        is useful to be able to determine if the controlPoints and controlFrameLines properties will return
        useful information or not and if the addControlPoint method will succeed or not.
        """
        return bool()
    @isControlFrameDisplayed.setter
    def isControlFrameDisplayed(self, value: bool):
        """
        Gets and sets if the control frame of the curve is currently displayed. Using this property
        is useful to be able to determine if the controlPoints and controlFrameLines properties will return
        useful information or not and if the addControlPoint method will succeed or not.
        """
        pass
    @property
    def controlFrameLines(self) -> list[SketchLine]:
        """
        Returns the sketch lines that represent the control frame of the spline.
        The lines are in sequential order starting with the line that connects to the
        starting control point to the end.
        """
        return [SketchLine()]

class SketchEllipse(SketchCurve):
    """
    An ellipse in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchEllipse:
        return SketchEllipse()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SketchEllipse:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SketchEllipse()
    @property
    def centerSketchPoint(self) -> SketchPoint:
        """
        Returns the sketch point that defines the center of the ellipse. You can
        reposition the ellipse by moving the sketch point, assuming any existing
        constraints allow the desired change.
        """
        return SketchPoint()
    @property
    def majorAxis(self) -> core.Vector3D:
        """
        Gets and sets the major axis direction of the ellipse. Changing the axis is
        limited by any constraints that might exist on the ellipse. Setting the axis
        can fail in cases where the direction is fully defined through constraints.
        """
        return core.Vector3D()
    @majorAxis.setter
    def majorAxis(self, value: core.Vector3D):
        """
        Gets and sets the major axis direction of the ellipse. Changing the axis is
        limited by any constraints that might exist on the ellipse. Setting the axis
        can fail in cases where the direction is fully defined through constraints.
        """
        pass
    @property
    def majorAxisRadius(self) -> float:
        """
        Gets and sets the major axis radius of the ellipse. Changing the radius is
        limited by any constraints that might exist on the ellipse. Setting the radius
        can fail in cases where the radius is fully defined through constraints.
        """
        return float()
    @majorAxisRadius.setter
    def majorAxisRadius(self, value: float):
        """
        Gets and sets the major axis radius of the ellipse. Changing the radius is
        limited by any constraints that might exist on the ellipse. Setting the radius
        can fail in cases where the radius is fully defined through constraints.
        """
        pass
    @property
    def minorAxisRadius(self) -> float:
        """
        Gets and sets the minor axis radius of the ellipse. Changing the radius is
        limited by any constraints that might exist on the ellipse. Setting the radius
        can fail in cases where the radius is fully defined through constraints.
        """
        return float()
    @minorAxisRadius.setter
    def minorAxisRadius(self, value: float):
        """
        Gets and sets the minor axis radius of the ellipse. Changing the radius is
        limited by any constraints that might exist on the ellipse. Setting the radius
        can fail in cases where the radius is fully defined through constraints.
        """
        pass
    @property
    def geometry(self) -> core.Ellipse3D:
        """
        Returns the transient geometry of the ellipse which provides geometric
        information about the ellipse. The returned geometry is always in sketch space.
        """
        return core.Ellipse3D()
    @property
    def worldGeometry(self) -> core.Ellipse3D:
        """
        Returns an Ellipse3D object which provides geometric information in world space.
        The returned geometry takes into account the assembly context and the position of the
        sketch in its parent component, which means the geometry will be returned in the root
        component space.
        """
        return core.Ellipse3D()
    @property
    def nativeObject(self) -> SketchEllipse:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SketchEllipse()
    @property
    def majorAxisLine(self) -> SketchLine:
        """
        Returns the sketch line associated with the ellipse that lies along the major axis.
        This can return null in the case where the line has been deleted.
        """
        return SketchLine()
    @property
    def minorAxisLine(self) -> SketchLine:
        """
        Returns the sketch line associated with the ellipse that lies along the minor axis.
        This can return null in the case where the line has been deleted.
        """
        return SketchLine()

class SketchEllipticalArc(SketchCurve):
    """
    An elliptical arc in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchEllipticalArc:
        return SketchEllipticalArc()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SketchEllipticalArc:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SketchEllipticalArc()
    @property
    def centerSketchPoint(self) -> SketchPoint:
        """
        Gets the sketch point that defines the center of the elliptical arc. You can
        reposition the elliptical arc by moving the sketch point, assuming any existing
        constraints allow the desired change.
        """
        return SketchPoint()
    @property
    def startSketchPoint(self) -> SketchPoint:
        """
        Gets the sketch point that defines the start of the elliptical arc. You can
        reposition the sketch point, assuming any existing constraints allow the
        desired change.
        """
        return SketchPoint()
    @property
    def endSketchPoint(self) -> SketchPoint:
        """
        Gets the sketch point that defines the end of the elliptical arc. You can
        reposition the sketch point, assuming any existing constraints allow the
        desired change.
        """
        return SketchPoint()
    @property
    def majorAxis(self) -> core.Vector3D:
        """
        Gets and sets the major axis direction of the elliptical arc. Changing the axis is
        limited by any constraints that might exist on the elliptical arc. Setting the axis
        can fail in cases where the direction is fully defined through constraints.
        """
        return core.Vector3D()
    @majorAxis.setter
    def majorAxis(self, value: core.Vector3D):
        """
        Gets and sets the major axis direction of the elliptical arc. Changing the axis is
        limited by any constraints that might exist on the elliptical arc. Setting the axis
        can fail in cases where the direction is fully defined through constraints.
        """
        pass
    @property
    def majorAxisRadius(self) -> float:
        """
        Gets and sets the major axis radius of the elliptical arc. Changing the radius is
        limited by any constraints that might exist on the elliptical arc. Setting the radius
        can fail in cases where the radius is fully defined through constraints.
        """
        return float()
    @majorAxisRadius.setter
    def majorAxisRadius(self, value: float):
        """
        Gets and sets the major axis radius of the elliptical arc. Changing the radius is
        limited by any constraints that might exist on the elliptical arc. Setting the radius
        can fail in cases where the radius is fully defined through constraints.
        """
        pass
    @property
    def minorAxisRadius(self) -> float:
        """
        Gets and sets the minor axis radius of the elliptical arc. Changing the radius is
        limited by any constraints that might exist on the elliptical arc. Setting the radius
        can fail in cases where the radius is fully defined through constraints.
        """
        return float()
    @minorAxisRadius.setter
    def minorAxisRadius(self, value: float):
        """
        Gets and sets the minor axis radius of the elliptical arc. Changing the radius is
        limited by any constraints that might exist on the elliptical arc. Setting the radius
        can fail in cases where the radius is fully defined through constraints.
        """
        pass
    @property
    def geometry(self) -> core.EllipticalArc3D:
        """
        Returns the transient geometry of the elliptical arc which provides geometric
        information about the elliptical arc. The returned geometry is always in sketch space.
        """
        return core.EllipticalArc3D()
    @property
    def worldGeometry(self) -> core.EllipticalArc3D:
        """
        Returns an EllipticalArc3D object which provides geometric information in world space.
        The returned geometry takes into account the assembly context and the position of the
        sketch in its parent component, which means the geometry will be returned in the root
        component space.
        """
        return core.EllipticalArc3D()
    @property
    def nativeObject(self) -> SketchEllipticalArc:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SketchEllipticalArc()

class SketchFittedSpline(SketchCurve):
    """
    A fitted spline in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchFittedSpline:
        return SketchFittedSpline()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SketchFittedSpline:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SketchFittedSpline()
    def activateTangentHandle(self, fitPoint: SketchPoint) -> SketchLine:
        """
        Activates the tangent handle for the specified fit point and returns the sketch line
        that acts as the handle to control the tangency. You can use the getTangentHandle
        property to determine if the tangent handle has already been activated. If this method
        is called for a handle that already exists, nothing changes and the existing sketch line
        that acts as the tangent handle is returned.
        
        The getTangentHandle method can be used to determine if the handle has already been
        activated.
        
        To deactivate a sketch handle you can delete the sketch line.
        fitPoint : The fit point on the curve where you want to activate the tangent handle.
        The fit points can be obtained by using the fitPoints property of the SketchFittedSpline object.
        Returns the sketch line that acts as the tangent handle at the specified fit point.
        """
        return SketchLine()
    def getTangentHandle(self, fitPoint: SketchPoint) -> SketchLine:
        """
        Returns the sketch line that acts as the handle to control the tangency at the specified fit
        point. Returns null in the case where the tangent handle has not been activated at that sketch point.
        Deleting the returned line will deactivate the tangent handle. Use the activateTangentHandle method
        to activate the tangent handle.
        fitPoint : The fit point on the curve where you want to get the tangent handle.
        The fit points can be obtained by using the fitPoints property of the SketchFittedSpline object.
        Returns the sketch line that acts as the handle to control the tangency at the specified point or
        returns null in the case where the tangency handle has not been activated at the specified sketch point.
        """
        return SketchLine()
    def activateCurvatureHandle(self, fitPoint: SketchPoint) -> SketchArc:
        """
        Activates the curvature handle for the specified fit point and returns the sketch arc
        that acts as the handle to control the curvature. You can use the getCurvatureHandle
        property to determine if the curvature handle has already been activated. If this method
        is called for a handle that already exists, nothing changes and the existing sketch arc
        that acts as the curvature handle is returned.
        
        The getCurvatureHandle method can be used to determine if the handle has already been
        activated.
        
        To deactivate a sketch handle you can delete the sketch arc.
        fitPoint : The fit point on the curve where you want to activate the curvature handle.
        The fit points can be obtained by using the fitPoints property of the SketchFittedSpline object.
        Returns the sketch arc that acts as the curvature handle at the specified fit point.
        """
        return SketchArc()
    def getCurvatureHandle(self, fitPoint: SketchPoint) -> SketchArc:
        """
        Returns the sketch arc that acts as the handle to control the curvature at the specified fit
        point. Returns null in the case where the curvature handle has not been activated at that sketch point.
        Deleting the returned arc will deactivate the curvature handle. Use the activateCurvatureHandle method
        to activate the curvature handle.
        fitPoint : The fit point on the curve where you want to get the curvature handle.
        The fit points can be obtained by using the fitPoints property of the SketchFittedSpline object.
        Returns the sketch arc that acts as the handle to control the curvature at the specified point or
        returns null in the case where the curvature handle has not been activated at the specified sketch point.
        """
        return SketchArc()
    def addFitPoint(self, parameter: float) -> SketchPoint:
        """
        Creates a new fit point at the specified parameter value.
        parameter : The parameter value at the position along the curve where you want to add the new fit point. The
        CurveEvaluator3D object provides utilities that support going from a 3D coordinate to a parameter
        value on the curve.
        Returns the newly created SketchPoint that acts as the fit point. Fails in the case where an invalid
        parameter is specified.
        """
        return SketchPoint()
    @property
    def startSketchPoint(self) -> SketchPoint:
        """
        Returns the sketch point that defines the starting position
        of the spline. Editing the position of this sketch point
        will result in editing the spline.
        """
        return SketchPoint()
    @property
    def endSketchPoint(self) -> SketchPoint:
        """
        Returns the sketch point that defines the ending position
        of the spline. Editing the position of this sketch point
        will result in editing the spline.
        """
        return SketchPoint()
    @property
    def fitPoints(self) -> SketchPointList:
        """
        Returns the set of sketch points that the spline fits through.
        The points include the start and end points and are returned in
        the same order as the spline fits through them where the first point
        in the list is the start point and the last point is the end point.
        Editing the position of these sketch points will result in
        editing the spline.
        """
        return SketchPointList()
    @property
    def isClosed(self) -> bool:
        """
        Gets and sets if this spline is closed. A closed spline
        is also periodic. This property can return false even in
        the case where the spline is physically closed. It's possible
        that the start and end points of a spline can be the same point
        but the curve is still not considered closed. This can happen
        when the start and end points of an open curve are merged. The
        curve is physically closed but is not periodic and can have a
        discontinuity at the joint. Setting it to closed will cause it
        to be periodic and to always remain closed even as fit points
        are deleted.
        """
        return bool()
    @isClosed.setter
    def isClosed(self, value: bool):
        """
        Gets and sets if this spline is closed. A closed spline
        is also periodic. This property can return false even in
        the case where the spline is physically closed. It's possible
        that the start and end points of a spline can be the same point
        but the curve is still not considered closed. This can happen
        when the start and end points of an open curve are merged. The
        curve is physically closed but is not periodic and can have a
        discontinuity at the joint. Setting it to closed will cause it
        to be periodic and to always remain closed even as fit points
        are deleted.
        """
        pass
    @property
    def geometry(self) -> core.NurbsCurve3D:
        """
        Returns the transient geometry of the curve which provides geometric
        information about the curve. The returned geometry is always in sketch space.
        """
        return core.NurbsCurve3D()
    @property
    def worldGeometry(self) -> core.NurbsCurve3D:
        """
        Returns a NurbsCurve3D object which provides geometric information in world space.
        The returned geometry takes into account the assembly context and the position of the
        sketch in its parent component, which means the geometry will be returned in the root
        component space.
        """
        return core.NurbsCurve3D()
    @property
    def nativeObject(self) -> SketchFittedSpline:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SketchFittedSpline()

class SketchFixedSpline(SketchCurve):
    """
    The SketchFixedSpline class represents splines in a sketch that are
    not editable. These can result from including splines from other sketches
    or the spline edges. They can also be created by intersections and
    projecting splines onto a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchFixedSpline:
        return SketchFixedSpline()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SketchFixedSpline:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SketchFixedSpline()
    def replaceGeometry(self, nurbsCurve: core.NurbsCurve3D) -> bool:
        """
        Replaces the underlying NURBS curve that defines the shape of the fixed curve. This
        can only be used if the isNative property of the SketchFixedSpline returns false.
        nurbsCurve : A NurbsCurve3D object that defines a valid NURBS curve and will be used to replace
        the existing geometry definition.
        Returns true if the replacement was successful.
        """
        return bool()
    @property
    def startSketchPoint(self) -> SketchPoint:
        """
        The sketch point at the start of the spline.
        """
        return SketchPoint()
    @property
    def endSketchPoint(self) -> SketchPoint:
        """
        The sketch point at the end of the spline.
        """
        return SketchPoint()
    @property
    def geometry(self) -> core.NurbsCurve3D:
        """
        Returns the transient geometry of the curve which provides geometric
        information about the curve. The returned geometry is always in sketch space.
        
        Because the fixed spline can be analytically defined, for example it
        can be the precise intersection of a surface and the sketch plane,
        returning a NURBS curve that represents the spline may be an
        approximation of the actual curve. You can use the Evaluator
        property of the SketchFixedSpline object to perform evaluations
        on the precise curve.
        """
        return core.NurbsCurve3D()
    @property
    def worldGeometry(self) -> core.NurbsCurve3D:
        """
        Returns a NurbsCurve3D object that is the equivalent of this sketch curve
        but is in the space of the parent component rather than in sketch space.
        """
        return core.NurbsCurve3D()
    @property
    def evaluator(self) -> core.CurveEvaluator3D:
        """
        Returns an evaluator object that lets you perform evaluations
        on the precise geometry of the curve.
        """
        return core.CurveEvaluator3D()
    @property
    def nativeObject(self) -> SketchFixedSpline:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SketchFixedSpline()

class SketchLine(SketchCurve):
    """
    A line in a sketch.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> SketchLine:
        return SketchLine()
    def createForAssemblyContext(self, occurrence: Occurrence) -> SketchLine:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return SketchLine()
    @property
    def startSketchPoint(self) -> SketchPoint:
        """
        The sketch point at the start of the line. The line is dependent on this point and moving the
        point will cause the line to adjust.
        """
        return SketchPoint()
    @property
    def endSketchPoint(self) -> SketchPoint:
        """
        The sketch point at the end of the line. The line is dependent on this point and moving the
        point will cause the line to adjust.
        """
        return SketchPoint()
    @property
    def geometry(self) -> core.Line3D:
        """
        Returns the transient geometry of the line which provides geometry
        information about the line. The returned geometry is always in sketch space.
        """
        return core.Line3D()
    @property
    def worldGeometry(self) -> core.Line3D:
        """
        Returns a Line3D object which provides geometric information in world space.
        The returned geometry takes into account the assembly context and the position of the
        sketch in its parent component, which means the geometry will be returned in the root
        component space.
        """
        return core.Line3D()
    @property
    def nativeObject(self) -> SketchLine:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return SketchLine()
    @property
    def isCenterLine(self) -> bool:
        """
        Gets and sets whether this line is defined as a centerline.
        """
        return bool()
    @isCenterLine.setter
    def isCenterLine(self, value: bool):
        """
        Gets and sets whether this line is defined as a centerline.
        """
        pass

class TessellateFeature(MeshFeature):
    """
    !!!!! Warning !!!!!
    ! This is in preview state; please see the help for more info
    !!!!! Warning !!!!!
    
    Object that represents an existing tessellate feature in a design.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> TessellateFeature:
        return TessellateFeature()
    def createForAssemblyContext(self, occurrence: Occurrence) -> TessellateFeature:
        """
        Creates or returns a proxy for the native object
        - i.e. a new object that represents this object but adds the assembly context
        defined by the input occurrence.
        occurrence : The occurrence that defines the context to create the proxy in.
        Returns the proxy object or null if this isn't the NativeObject.
        """
        return TessellateFeature()
    @property
    def inputBodies(self) -> list[BRepBody]:
        """
        Gets and sets the input B-Rep bodies.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        return [BRepBody()]
    @inputBodies.setter
    def inputBodies(self, value: list[BRepBody]):
        """
        Gets and sets the input B-Rep bodies.
        
        To use this property, you need to position the timeline marker to immediately before this feature.
        This can be accomplished using the following code: thisFeature.timelineObject.rollTo(True)
        """
        pass
    @property
    def tessellateRefinementType(self) -> TessellateRefinementTypes:
        """
        Gets and sets the type of refinement.
        """
        return TessellateRefinementTypes()
    @tessellateRefinementType.setter
    def tessellateRefinementType(self, value: TessellateRefinementTypes):
        """
        Gets and sets the type of refinement.
        """
        pass
    @property
    def surfaceDeviation(self) -> ModelParameter:
        """
        Specify maximum distance between the surface of the original
        body and the surface of the mesh body.
        Only valid if tessellateRefinementType is CustomTessellateRefinementType.
        """
        return ModelParameter()
    @property
    def normalDeviation(self) -> ModelParameter:
        """
        Specify maximum angle between the normal vectors of each face on the mesh body.
        Only valid if tessellateRefinementType is CustomTessellateRefinementType.
        """
        return ModelParameter()
    @property
    def maximumEdgeLength(self) -> ModelParameter:
        """
        Specify maximum length of any face edge on the mesh body.
        Only valid if tessellateRefinementType is CustomTessellateRefinementType.
        """
        return ModelParameter()
    @property
    def aspectRatio(self) -> ModelParameter:
        """
        Specify ratio between the height and width of each face on the mesh body.
        Only valid if tessellateRefinementType is CustomTessellateRefinementType.
        """
        return ModelParameter()
    @property
    def createQuads(self) -> bool:
        """
        Creates quad faces on the mesh body where possible.
        """
        return bool()
    @createQuads.setter
    def createQuads(self, value: bool):
        """
        Creates quad faces on the mesh body where possible.
        """
        pass
    @property
    def nativeObject(self) -> TessellateFeature:
        """
        The NativeObject is the object outside the context of an assembly and
        in the context of its parent component.
        Returns null in the case where this object is not in the context of
        an assembly but is already the native object.
        """
        return TessellateFeature()

class WorkingModel(Design):
    """
    A type of product that utilizes the internal "Working Model" functionality within Fusion.
    This is used where a model is referenced into another product. For example, when you create a
    Manufacturing Model, you see a copy of the original design, but you can make isolated edits to
    it within the Manufacturing Model. This is using the internal Working Model functionality to
    create an associative reference to a specific component.
    """
    def __init__(self):
        pass
    @staticmethod
    def cast(arg) -> WorkingModel:
        return WorkingModel()
    @property
    def sourceComponent(self) -> Component:
        """
        Returns the component being referenced by this working model.
        """
        return Component()
