////////////////////////////////////////////////////////////////////////////// // // Copyright 2026 Autodesk, Inc. All rights reserved. // // Use of this software is subject to the terms of the Autodesk license // agreement provided at the time of installation or download, or which // otherwise accompanies this software. // ////////////////////////////////////////////////////////////////////////////// #pragma once #include "../Features/Feature.h" #include "../FusionTypeDefs.h" // THIS CLASS WILL BE VISIBLE TO AN API CLIENT. // THIS HEADER FILE WILL BE GENERATED FROM NIDL. #include #ifdef FUSIONXINTERFACE_EXPORTS # ifdef __COMPILING_ADSK_FUSION_BOSSFEATURE_CPP__ # define ADSK_FUSION_BOSSFEATURE_API XI_EXPORT # else # define ADSK_FUSION_BOSSFEATURE_API # endif #else # define ADSK_FUSION_BOSSFEATURE_API XI_IMPORT #endif namespace adsk { namespace core { class Vector3D; }} namespace adsk { namespace fusion { class BossFeatureInput; class BossPositionDefinition; class ModelParameter; class Occurrence; }} namespace adsk { namespace fusion { /// Object that represents an existing boss feature in a design. /// For history free model this interface has limited functionality. class BossFeature : public Feature { public: /// 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. core::Ptr nativeObject() const; /// 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. core::Ptr createForAssemblyContext(const core::Ptr& occurrence) const; /// 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. core::Ptr createInput() const; /// 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. bool update(const core::Ptr& input); /// 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. core::Ptr direction() const; /// Gets and sets if the direction of the boss (or boss connection) is flipped. bool isDirectionFlipped() const; bool isDirectionFlipped(bool value); /// 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. bool isGeometryOpposite() const; /// Returns the current boss shape this feature represents. BossShapeTypes shapeType() const; /// Returns the current boss alignment shape this feature represents. BossAlignmentTypes alignmentType() const; /// Returns the current type of hole this feature represents. HoleTypes holeType() const; /// Returns the current type of hole extent this feature represents. BossHoleExtentTypes holeExtentType() const; /// Returns the current type of ribs shape this feature represents. BossRibShapeTypes ribType() const; /// Returns a BossPositionDefinition object that provides access to the information used /// to define the position of the boss feature. core::Ptr positionDefinition() const; /// Returns the model parameter for thickness - plastic part rule reference. core::Ptr thickness() const; /// Returns the model parameter for taper angle - plastic part rule reference. core::Ptr taperAngle() const; /// Returns the model parameter for inner radius - reference for parametric expressions. core::Ptr innerRadius() const; /// Returns the model parameter for screw diameter - reference for parametric expressions. core::Ptr screwDiameter() const; /// Returns the model parameter for screw head diameter - reference for parametric expressions. core::Ptr screwHeadDiameter() const; /// Returns the model parameter for countersink head angle - reference for parametric expressions. core::Ptr screwHeadAngle() const; /// Returns the model parameter controlling the offset from the selected parting plane. core::Ptr offset() const; /// Returns the model parameter controlling the offset clearance from the selected parting plane and offset. core::Ptr offsetClearance() const; /// Returns the model parameter controlling the shank diameter. core::Ptr diameter() const; /// Returns the model parameter controlling the shank draft angle. core::Ptr draftAngle() const; /// Returns the model parameter controlling the step diameter used for alignment of its counterparts. core::Ptr alignmentDiameter() const; /// Returns the model parameter controlling the step depth used for alignment of its counterparts. core::Ptr alignmentDepth() const; /// Returns the model parameter controlling the step draft angle. core::Ptr alignmentDraftAngle() const; /// Returns the model parameter controlling the hole diameter. core::Ptr holeDiameter() const; /// Returns the model parameter controlling hole draft angle. core::Ptr holeDraftAngle() const; /// 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. core::Ptr holeDepth() const; /// 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. core::Ptr holeMajorDiameter() const; /// 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. core::Ptr holeMajorDepth() const; /// 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. core::Ptr holeMajorDraftAngle() const; /// 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. core::Ptr holeCountersinkAngle() const; /// Returns the model parameter controlling blend radius of the boss shank. core::Ptr rootRadius() const; /// Returns the model parameter controlling blend radius of the boss shank top face. core::Ptr tipRadius() const; /// Returns the model parameter controlling blend radius of the boss alignment top face. core::Ptr alignmentTipRadius() const; /// Returns the model parameter controlling blend radius of the boss alignment root. core::Ptr alignmentRootRadius() const; /// Returns the model parameter controlling blend radius of the hole start. core::Ptr holeStartRadius() const; /// Returns the model parameter controlling blend radius of the hole end. core::Ptr holeEndRadius() const; /// Returns the model parameter controlling blend radius of major hole counterbore. core::Ptr holeMajorTipRadius() const; /// Returns the model parameter controlling blend radius of major hole counterbore root. core::Ptr holeMajorRootRadius() const; /// Returns the model parameter controlling ribs length measured from the shank axis. core::Ptr ribLength() const; /// Returns the model parameter controlling ribs offset from the top face or alignment face. core::Ptr ribOffset() const; /// Returns the model parameter controlling ribs thickness. core::Ptr ribThickness() const; /// Returns the model parameter controlling ribs draft angle. core::Ptr ribDraftAngle() const; /// Returns the model parameter controlling size of rib outer draft angle. core::Ptr ribOuterDraftAngle() const; /// Returns the model parameter controlling size of rib chamfer or fillet. core::Ptr ribCutSize() const; /// Returns the model parameter controlling size of rib chamfer angle. core::Ptr ribChamferAngle() const; /// Returns the model parameter controlling size of rib tip blend radius. core::Ptr ribTipRadius() const; /// Returns the model parameter controlling size of rib root blend radius. core::Ptr ribBlendRadius() const; /// 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. core::Ptr ribRotation() const; /// Returns the model parameter controlling total angle for ribs distribution. core::Ptr ribTotalAngle() const; /// Returns the model parameter controlling number of ribs. core::Ptr ribCount() const; ADSK_FUSION_BOSSFEATURE_API static const char* classType(); ADSK_FUSION_BOSSFEATURE_API const char* objectType() const override; ADSK_FUSION_BOSSFEATURE_API void* queryInterface(const char* id) const override; ADSK_FUSION_BOSSFEATURE_API static const char* interfaceId() { return classType(); } private: // Raw interface virtual BossFeature* nativeObject_raw() const = 0; virtual BossFeature* createForAssemblyContext_raw(Occurrence* occurrence) const = 0; virtual BossFeatureInput* createInput_raw() const = 0; virtual bool update_raw(BossFeatureInput* input) = 0; virtual core::Vector3D* direction_raw() const = 0; virtual bool isDirectionFlipped_raw() const = 0; virtual bool isDirectionFlipped_raw(bool value) = 0; virtual bool isGeometryOpposite_raw() const = 0; virtual BossShapeTypes shapeType_raw() const = 0; virtual BossAlignmentTypes alignmentType_raw() const = 0; virtual HoleTypes holeType_raw() const = 0; virtual BossHoleExtentTypes holeExtentType_raw() const = 0; virtual BossRibShapeTypes ribType_raw() const = 0; virtual BossPositionDefinition* positionDefinition_raw() const = 0; virtual ModelParameter* thickness_raw() const = 0; virtual ModelParameter* taperAngle_raw() const = 0; virtual ModelParameter* innerRadius_raw() const = 0; virtual ModelParameter* screwDiameter_raw() const = 0; virtual ModelParameter* screwHeadDiameter_raw() const = 0; virtual ModelParameter* screwHeadAngle_raw() const = 0; virtual ModelParameter* offset_raw() const = 0; virtual ModelParameter* offsetClearance_raw() const = 0; virtual ModelParameter* diameter_raw() const = 0; virtual ModelParameter* draftAngle_raw() const = 0; virtual ModelParameter* alignmentDiameter_raw() const = 0; virtual ModelParameter* alignmentDepth_raw() const = 0; virtual ModelParameter* alignmentDraftAngle_raw() const = 0; virtual ModelParameter* holeDiameter_raw() const = 0; virtual ModelParameter* holeDraftAngle_raw() const = 0; virtual ModelParameter* holeDepth_raw() const = 0; virtual ModelParameter* holeMajorDiameter_raw() const = 0; virtual ModelParameter* holeMajorDepth_raw() const = 0; virtual ModelParameter* holeMajorDraftAngle_raw() const = 0; virtual ModelParameter* holeCountersinkAngle_raw() const = 0; virtual ModelParameter* rootRadius_raw() const = 0; virtual ModelParameter* tipRadius_raw() const = 0; virtual ModelParameter* alignmentTipRadius_raw() const = 0; virtual ModelParameter* alignmentRootRadius_raw() const = 0; virtual ModelParameter* holeStartRadius_raw() const = 0; virtual ModelParameter* holeEndRadius_raw() const = 0; virtual ModelParameter* holeMajorTipRadius_raw() const = 0; virtual ModelParameter* holeMajorRootRadius_raw() const = 0; virtual ModelParameter* ribLength_raw() const = 0; virtual ModelParameter* ribOffset_raw() const = 0; virtual ModelParameter* ribThickness_raw() const = 0; virtual ModelParameter* ribDraftAngle_raw() const = 0; virtual ModelParameter* ribOuterDraftAngle_raw() const = 0; virtual ModelParameter* ribCutSize_raw() const = 0; virtual ModelParameter* ribChamferAngle_raw() const = 0; virtual ModelParameter* ribTipRadius_raw() const = 0; virtual ModelParameter* ribBlendRadius_raw() const = 0; virtual ModelParameter* ribRotation_raw() const = 0; virtual ModelParameter* ribTotalAngle_raw() const = 0; virtual ModelParameter* ribCount_raw() const = 0; }; // Inline wrappers inline core::Ptr BossFeature::nativeObject() const { core::Ptr res = nativeObject_raw(); return res; } inline core::Ptr BossFeature::createForAssemblyContext(const core::Ptr& occurrence) const { core::Ptr res = createForAssemblyContext_raw(occurrence.get()); return res; } inline core::Ptr BossFeature::createInput() const { core::Ptr res = createInput_raw(); return res; } inline bool BossFeature::update(const core::Ptr& input) { bool res = update_raw(input.get()); return res; } inline core::Ptr BossFeature::direction() const { core::Ptr res = direction_raw(); return res; } inline bool BossFeature::isDirectionFlipped() const { bool res = isDirectionFlipped_raw(); return res; } inline bool BossFeature::isDirectionFlipped(bool value) { return isDirectionFlipped_raw(value); } inline bool BossFeature::isGeometryOpposite() const { bool res = isGeometryOpposite_raw(); return res; } inline BossShapeTypes BossFeature::shapeType() const { BossShapeTypes res = shapeType_raw(); return res; } inline BossAlignmentTypes BossFeature::alignmentType() const { BossAlignmentTypes res = alignmentType_raw(); return res; } inline HoleTypes BossFeature::holeType() const { HoleTypes res = holeType_raw(); return res; } inline BossHoleExtentTypes BossFeature::holeExtentType() const { BossHoleExtentTypes res = holeExtentType_raw(); return res; } inline BossRibShapeTypes BossFeature::ribType() const { BossRibShapeTypes res = ribType_raw(); return res; } inline core::Ptr BossFeature::positionDefinition() const { core::Ptr res = positionDefinition_raw(); return res; } inline core::Ptr BossFeature::thickness() const { core::Ptr res = thickness_raw(); return res; } inline core::Ptr BossFeature::taperAngle() const { core::Ptr res = taperAngle_raw(); return res; } inline core::Ptr BossFeature::innerRadius() const { core::Ptr res = innerRadius_raw(); return res; } inline core::Ptr BossFeature::screwDiameter() const { core::Ptr res = screwDiameter_raw(); return res; } inline core::Ptr BossFeature::screwHeadDiameter() const { core::Ptr res = screwHeadDiameter_raw(); return res; } inline core::Ptr BossFeature::screwHeadAngle() const { core::Ptr res = screwHeadAngle_raw(); return res; } inline core::Ptr BossFeature::offset() const { core::Ptr res = offset_raw(); return res; } inline core::Ptr BossFeature::offsetClearance() const { core::Ptr res = offsetClearance_raw(); return res; } inline core::Ptr BossFeature::diameter() const { core::Ptr res = diameter_raw(); return res; } inline core::Ptr BossFeature::draftAngle() const { core::Ptr res = draftAngle_raw(); return res; } inline core::Ptr BossFeature::alignmentDiameter() const { core::Ptr res = alignmentDiameter_raw(); return res; } inline core::Ptr BossFeature::alignmentDepth() const { core::Ptr res = alignmentDepth_raw(); return res; } inline core::Ptr BossFeature::alignmentDraftAngle() const { core::Ptr res = alignmentDraftAngle_raw(); return res; } inline core::Ptr BossFeature::holeDiameter() const { core::Ptr res = holeDiameter_raw(); return res; } inline core::Ptr BossFeature::holeDraftAngle() const { core::Ptr res = holeDraftAngle_raw(); return res; } inline core::Ptr BossFeature::holeDepth() const { core::Ptr res = holeDepth_raw(); return res; } inline core::Ptr BossFeature::holeMajorDiameter() const { core::Ptr res = holeMajorDiameter_raw(); return res; } inline core::Ptr BossFeature::holeMajorDepth() const { core::Ptr res = holeMajorDepth_raw(); return res; } inline core::Ptr BossFeature::holeMajorDraftAngle() const { core::Ptr res = holeMajorDraftAngle_raw(); return res; } inline core::Ptr BossFeature::holeCountersinkAngle() const { core::Ptr res = holeCountersinkAngle_raw(); return res; } inline core::Ptr BossFeature::rootRadius() const { core::Ptr res = rootRadius_raw(); return res; } inline core::Ptr BossFeature::tipRadius() const { core::Ptr res = tipRadius_raw(); return res; } inline core::Ptr BossFeature::alignmentTipRadius() const { core::Ptr res = alignmentTipRadius_raw(); return res; } inline core::Ptr BossFeature::alignmentRootRadius() const { core::Ptr res = alignmentRootRadius_raw(); return res; } inline core::Ptr BossFeature::holeStartRadius() const { core::Ptr res = holeStartRadius_raw(); return res; } inline core::Ptr BossFeature::holeEndRadius() const { core::Ptr res = holeEndRadius_raw(); return res; } inline core::Ptr BossFeature::holeMajorTipRadius() const { core::Ptr res = holeMajorTipRadius_raw(); return res; } inline core::Ptr BossFeature::holeMajorRootRadius() const { core::Ptr res = holeMajorRootRadius_raw(); return res; } inline core::Ptr BossFeature::ribLength() const { core::Ptr res = ribLength_raw(); return res; } inline core::Ptr BossFeature::ribOffset() const { core::Ptr res = ribOffset_raw(); return res; } inline core::Ptr BossFeature::ribThickness() const { core::Ptr res = ribThickness_raw(); return res; } inline core::Ptr BossFeature::ribDraftAngle() const { core::Ptr res = ribDraftAngle_raw(); return res; } inline core::Ptr BossFeature::ribOuterDraftAngle() const { core::Ptr res = ribOuterDraftAngle_raw(); return res; } inline core::Ptr BossFeature::ribCutSize() const { core::Ptr res = ribCutSize_raw(); return res; } inline core::Ptr BossFeature::ribChamferAngle() const { core::Ptr res = ribChamferAngle_raw(); return res; } inline core::Ptr BossFeature::ribTipRadius() const { core::Ptr res = ribTipRadius_raw(); return res; } inline core::Ptr BossFeature::ribBlendRadius() const { core::Ptr res = ribBlendRadius_raw(); return res; } inline core::Ptr BossFeature::ribRotation() const { core::Ptr res = ribRotation_raw(); return res; } inline core::Ptr BossFeature::ribTotalAngle() const { core::Ptr res = ribTotalAngle_raw(); return res; } inline core::Ptr BossFeature::ribCount() const { core::Ptr res = ribCount_raw(); return res; } }// namespace fusion }// namespace adsk #undef ADSK_FUSION_BOSSFEATURE_API