22 scalingDocument->finalizeConnections(*scalingDocument);
23 scalingDocument->finalizeFromProperties();
34 scalingDocument->clearConnections();
35 scalingDocument->finalizeConnections(*scalingDocument);
36 scalingDocument->finalizeFromProperties();
54 *sourceModel = *other.sourceModel;
55 *scalingDocument = *other.scalingDocument;
56 scalingDocument->clearConnections();
57 scalingDocument->finalizeConnections(*scalingDocument);
58 scalingDocument->finalizeFromProperties();
70 sourceModel = std::make_shared<BasicModelStatePair>(path);
74 sourceModel = std::make_shared<BasicModelStatePair>();
84 scalingDocument->addScalingStep(std::move(step));
88 return scalingDocument->removeScalingStep(step);
92 if (
auto* scalingStep = findScalingComponentMut<ScalingStep>(path)) {
109 edit.
apply(*property);
110 scalingDocument->clearConnections();
111 scalingDocument->finalizeConnections(*scalingDocument);
112 scalingDocument->finalizeFromProperties();
116 if (
auto* scalingStep = findScalingComponentMut<ScalingStep>(path)) {
117 scalingStep->set_enabled(
false);
118 scalingDocument->clearConnections();
119 scalingDocument->finalizeConnections(*scalingDocument);
120 scalingDocument->finalizeFromProperties();
129 std::vector<ScalingDocumentValidationMessage> rv;
137 for (
const auto& scalingStep : scalingDocument->getComponentList<
ScalingStep>()) {
138 if (not scalingStep.get_enabled()) {
142 auto stepMessages = scalingStep.validate(scalingCache, scalingParameters, *sourceModel);
143 rv.reserve(rv.size() + stepMessages.size());
144 for (
auto& stepMessage : stepMessages) {
147 .payload = std::move(stepMessage),
159 scalingDocument = std::make_shared<ModelWarperV3Document>();
160 scalingDocument->finalizeConnections(*scalingDocument);
161 scalingDocument->finalizeFromProperties();
165 scalingDocument = std::make_shared<ModelWarperV3Document>(path);
169 if (
const auto filename = scalingDocument->getDocumentFileName(); not filename.empty()) {
170 return std::filesystem::path{filename};
181 return scalingDocument->setScalingParameterOverride(scalingParamName, newValue);
195 OpenSim::Model resultModel = sourceModel->getModel();
196 resultModel.clearConnections();
202 return std::make_unique<BasicModelStatePair>(std::move(resultModel));
209 for (
const auto& step : scalingDocument->getComponentList<
ScalingStep>()) {
210 step.applyScalingStep(scalingCache, scalingParams, *sourceModel, resultModel);
214 return std::make_unique<BasicModelStatePair>(std::move(resultModel));
218 template<
typename T = OpenSim::Component>
219 T* findScalingComponentMut(
const OpenSim::ComponentPath& p) {
return FindComponentMut<T>(*scalingDocument, p); }
221 std::shared_ptr<BasicModelStatePair> sourceModel = std::make_shared<BasicModelStatePair>();
222 std::shared_ptr<ModelWarperV3Document> scalingDocument = std::make_shared<ModelWarperV3Document>();
Definition basic_model_state_pair.h:22
Definition model_state_pair.h:19
Definition model_warper_v3_document.h:25
Definition scaling_cache.h:31
Definition scaling_parameters.h:14
Definition scaling_state.h:18
void applyScalingObjectPropertyEdit(osc::ObjectPropertyEdit edit)
Definition scaling_state.h:99
std::unique_ptr< BasicModelStatePair > tryGenerateScaledModel(ScalingCache &scalingCache) const
Definition scaling_state.h:188
void resetScalingDocument()
Definition scaling_state.h:157
bool eraseScalingStep(const OpenSim::ComponentPath &path)
Definition scaling_state.h:90
void addScalingStep(std::unique_ptr< ScalingStep > step)
Definition scaling_state.h:82
const ModelStatePair & getSourceModel() const
Definition scaling_state.h:66
void loadSourceModelFromOsim(const std::filesystem::path &path)
Definition scaling_state.h:68
std::shared_ptr< const ModelWarperV3Document > getScalingDocumentPtr() const
Definition scaling_state.h:79
auto iterateScalingSteps() const
Definition scaling_state.h:81
bool hasScalingParameterDeclarations() const
Definition scaling_state.h:177
std::shared_ptr< ModelStatePair > getSourceModelPtr()
Definition scaling_state.h:67
std::vector< ScalingDocumentValidationMessage > getEnabledScalingStepValidationMessages(ScalingCache &scalingCache) const
Definition scaling_state.h:127
ScalingState()
Definition scaling_state.h:20
bool hasScalingStepValidationIssues(ScalingCache &scalingCache) const
Definition scaling_state.h:153
ScalingState(const ScalingState &other)
Definition scaling_state.h:26
void loadScalingDocument(const std::filesystem::path &path)
Definition scaling_state.h:163
bool hasScalingSteps() const
Definition scaling_state.h:80
~ScalingState() noexcept=default
ScalingState & operator=(ScalingState &&tmp) noexcept
Definition scaling_state.h:62
bool eraseScalingStep(ScalingStep &step)
Definition scaling_state.h:86
std::optional< std::filesystem::path > scalingDocumentFilesystemLocation() const
Definition scaling_state.h:167
ScalingState(ScalingState &&tmp) noexcept
Definition scaling_state.h:39
ScalingParameters getEffectiveScalingParameters() const
Definition scaling_state.h:178
bool setScalingParameterOverride(const std::string &scalingParamName, ScalingParameterValue newValue)
Definition scaling_state.h:179
void resetSourceModel()
Definition scaling_state.h:72
bool disableScalingStep(const OpenSim::ComponentPath &path)
Definition scaling_state.h:114
Definition scaling_step.h:25
Definition object_property_edit.h:15
void apply(OpenSim::AbstractProperty &)
const std::string & getPropertyName() const
const std::string & getComponentAbsPath() const
Definition component_registry.h:14
void InitializeModel(OpenSim::Model &)
double ScalingParameterValue
Definition scaling_parameter_value.h:9
OpenSim::AbstractProperty * FindPropertyMut(OpenSim::Component &, const std::string &)
SimTK::State & InitializeState(OpenSim::Model &)
Definition scaling_document_validation_message.h:12
OpenSim::ComponentPath sourceScalingStepAbsPath
Definition scaling_document_validation_message.h:13