////////////////////////////////////////////////////////////////////////////// // // 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 "../Operations/OperationInput.h" #include "../CamTypeDefs.h" #include // THIS CLASS WILL BE VISIBLE TO AN API CLIENT. // THIS HEADER FILE WILL BE GENERATED FROM NIDL. #include "../../Core/OSMacros.h" #ifdef CAMXINTERFACE_EXPORTS # ifdef __COMPILING_ADSK_CAM_ADDITIVEFEAOPERATIONINPUT_CPP__ # define ADSK_CAM_ADDITIVEFEAOPERATIONINPUT_API XI_EXPORT # else # define ADSK_CAM_ADDITIVEFEAOPERATIONINPUT_API # endif #else # define ADSK_CAM_ADDITIVEFEAOPERATIONINPUT_API XI_IMPORT #endif namespace adsk { namespace cam { class AdditiveFEADeckBuilder; }} namespace adsk { namespace cam { /// !!!!! Warning !!!!! /// ! This is in preview state; please see the help for more info /// !!!!! Warning !!!!! /// class AdditiveFEAOperationInput : public OperationInput { public: /// Applies the deck builder cards needed for the result calculation. /// deck : A deck of solver cards. void applyDeck(const core::Ptr& deck); /// Add a file with contents encoded as base64 to the solver's working directory. This can be used to create PRM files or other resource files that the solver needs. /// destFileName : The name of the resource file. This name must match the card that refers to the resource, e.g. in PRMsCard. /// fileContentsBase64 : The contents of the resource file, encoded as a base64 string. With PRM files for example, you can either get this string from the print settings using base64PRMData(), or generate a new PRM using AdditiveFEAGenerationType::PRM. void addSolverFileContent(const std::string& destFileName, const std::string& fileContentsBase64); /// !!!!! Warning !!!!! /// ! This is hidden and not officially supported /// !!!!! Warning !!!!! /// /// Name of the input file for additive FEA, including the base name and the file extension, but not the path. std::string internalStudyName() const; /// !!!!! Warning !!!!! /// ! This is hidden and not officially supported /// !!!!! Warning !!!!! /// /// Path to the work directory for additive FEA. This directory contains the input file(s) initially. After generation, it also contains mesh or result files and subdirectories. std::string workDirectory() const; /// !!!!! Warning !!!!! /// ! This is in preview state; please see the help for more info /// !!!!! Warning !!!!! /// /// Text contents of the input deck file generated by applyDeck(). std::string text() const; /// Contents of the PRM file from the print settings, encoded as a base64 string. std::string base64PRMData() const; /// Additive FEA operations perform simulations by default. Setting this property to MeshPreCheck instead will only generate a mesh preview, or PRM will generate a process parameter file. AdditiveFEAGenerationType generationType() const; bool generationType(AdditiveFEAGenerationType value); /// Link this mechanical operation input to its weakly-coupled dependent thermal input. /// thermalInput : The AdditiveFEAOperationInput for the thermal analysis. void linkDependentThermalInput(const core::Ptr& thermalInput); ADSK_CAM_ADDITIVEFEAOPERATIONINPUT_API static const char* classType(); ADSK_CAM_ADDITIVEFEAOPERATIONINPUT_API const char* objectType() const override; ADSK_CAM_ADDITIVEFEAOPERATIONINPUT_API void* queryInterface(const char* id) const override; ADSK_CAM_ADDITIVEFEAOPERATIONINPUT_API static const char* interfaceId() { return classType(); } private: // Raw interface virtual void applyDeck_raw(AdditiveFEADeckBuilder* deck) = 0; virtual void addSolverFileContent_raw(const char* destFileName, const char* fileContentsBase64) = 0; virtual char* internalStudyName_raw() const = 0; virtual char* workDirectory_raw() const = 0; virtual char* text_raw() const = 0; virtual char* base64PRMData_raw() const = 0; virtual AdditiveFEAGenerationType generationType_raw() const = 0; virtual bool generationType_raw(AdditiveFEAGenerationType value) = 0; virtual void linkDependentThermalInput_raw(AdditiveFEAOperationInput* thermalInput) = 0; }; // Inline wrappers inline void AdditiveFEAOperationInput::applyDeck(const core::Ptr& deck) { applyDeck_raw(deck.get()); } inline void AdditiveFEAOperationInput::addSolverFileContent(const std::string& destFileName, const std::string& fileContentsBase64) { addSolverFileContent_raw(destFileName.c_str(), fileContentsBase64.c_str()); } inline std::string AdditiveFEAOperationInput::internalStudyName() const { std::string res; char* p= internalStudyName_raw(); if (p) { res = p; core::DeallocateArray(p); } return res; } inline std::string AdditiveFEAOperationInput::workDirectory() const { std::string res; char* p= workDirectory_raw(); if (p) { res = p; core::DeallocateArray(p); } return res; } inline std::string AdditiveFEAOperationInput::text() const { std::string res; char* p= text_raw(); if (p) { res = p; core::DeallocateArray(p); } return res; } inline std::string AdditiveFEAOperationInput::base64PRMData() const { std::string res; char* p= base64PRMData_raw(); if (p) { res = p; core::DeallocateArray(p); } return res; } inline AdditiveFEAGenerationType AdditiveFEAOperationInput::generationType() const { AdditiveFEAGenerationType res = generationType_raw(); return res; } inline bool AdditiveFEAOperationInput::generationType(AdditiveFEAGenerationType value) { return generationType_raw(value); } inline void AdditiveFEAOperationInput::linkDependentThermalInput(const core::Ptr& thermalInput) { linkDependentThermalInput_raw(thermalInput.get()); } }// namespace cam }// namespace adsk #undef ADSK_CAM_ADDITIVEFEAOPERATIONINPUT_API