10#include <OpenSim/Common/ComponentPath.h>
11#include <SimTKcommon/internal/Transform.h>
27#include <unordered_map>
31namespace OpenSim {
class AbstractOutput; }
32namespace OpenSim {
class AbstractPathPoint; }
33namespace OpenSim {
class AbstractProperty; }
34namespace OpenSim {
class AbstractSocket; }
35namespace OpenSim {
class Appearance; }
38namespace OpenSim {
class Body; }
39namespace OpenSim {
class Component; }
40namespace OpenSim {
class ComponentPath; }
41namespace OpenSim {
class Constraint; }
42namespace OpenSim {
class Coordinate; }
43namespace OpenSim {
class ExternalForce; }
44namespace OpenSim {
class Frame; }
45namespace OpenSim {
class Geometry; }
46namespace OpenSim {
class GeometryPath; }
47namespace OpenSim {
class HuntCrossleyForce; }
48namespace OpenSim {
class Joint; }
49namespace OpenSim {
class Marker; }
50namespace OpenSim {
class Mesh; }
51namespace OpenSim {
class Model; }
52namespace OpenSim {
class ModelComponent; }
53namespace OpenSim {
class Muscle; }
54namespace OpenSim {
class Object; }
57namespace OpenSim {
class PhysicalFrame; }
58namespace OpenSim {
class PhysicalOffsetFrame; }
59namespace OpenSim {
template<
typename,
typename>
class Set; }
61namespace OpenSim {
class Storage; }
62namespace OpenSim {
class WrapObject; }
63namespace SimTK {
class State; }
64namespace SimTK {
class SimbodyMatterSubsystem; }
72 { v.clone() } -> std::same_as<T*>;
77 std::derived_from<OpenSim::Object> T,
78 std::derived_from<OpenSim::Object> C = OpenSim::Object
82 return static_cast<size_t>(s.getSize());
87 std::derived_from<OpenSim::Object> T,
88 std::derived_from<OpenSim::Object> C = OpenSim::Object
92 return static_cast<ptrdiff_t
>(s.getSize());
99 return static_cast<size_t>(ary.getSize());
106 return static_cast<size_t>(ary.getSize());
113 return static_cast<size_t>(p.size());
120 return size(ary) != 0 ? std::addressof(ary[0]) :
nullptr;
127 return size(ary) != 0 ? std::addressof(ary[0]) :
nullptr;
141 return begin(ary) + ary.size();
146 std::derived_from<OpenSim::Object> T,
147 std::derived_from<OpenSim::Object> C = OpenSim::Object
158 if (pos >=
size(ary)) {
159 throw std::out_of_range{
"out of bounds access to an OpenSim::ArrayPtrs detected"};
162 if (T* el = ary.get(
static_cast<int>(pos))) {
166 throw std::runtime_error{
"attempted to access null element of ArrayPtrs"};
174 if (pos >=
size(ary)) {
175 throw std::out_of_range{
"out of bounds access to an OpenSim::ArrayPtrs detected"};
177 return ary.get(
static_cast<int>(pos));
182 std::derived_from<OpenSim::Object> T,
183 std::derived_from<OpenSim::Object> C = OpenSim::Object
187 if (pos >=
size(s)) {
188 throw std::out_of_range{
"out of bounds access to an OpenSim::Set detected"};
190 return s.get(
static_cast<int>(pos));
195 std::derived_from<OpenSim::Object> T,
196 std::derived_from<OpenSim::Object> C = OpenSim::Object
200 if (pos >=
size(s)) {
201 throw std::out_of_range{
"out of bounds access to an OpenSim::Set detected"};
203 s.get(
static_cast<int>(pos));
204 return s[
static_cast<int>(pos)];
211 return p[
static_cast<int>(pos)];
215 std::derived_from<OpenSim::Object> T,
216 std::derived_from<OpenSim::Object> C = OpenSim::Object
220 return s.remove(
static_cast<int>(i));
225 requires (std::strict_weak_order<std::ranges::less, T, T> and std::equality_comparable<T>)
228 std::vector<std::reference_wrapper<const T>> buffer;
229 buffer.reserve(v.size());
230 std::ranges::copy(
begin(v),
end(v), std::back_inserter(buffer));
231 std::ranges::sort(buffer, std::less<T>{});
232 return std::ranges::adjacent_find(buffer, std::ranges::equal_to{}, [](
const auto& wrapper) {
return wrapper.get(); }) == buffer.end();
237 const OpenSim::Component&,
238 const OpenSim::Component&
245 template<osc::DereferencesTo<const OpenSim::Component&> ComponentPtrLike>
247 const ComponentPtrLike& a,
248 const ComponentPtrLike& b)
254 const OpenSim::Component&,
255 const OpenSim::Component&
258 template<osc::DereferencesTo<const OpenSim::Component&> Ptr>
266 template<osc::DereferencesTo<const OpenSim::Component&> Ptr>
271 return !IsNameLexographicallyLowerThan<Ptr>(a, b);
275 OpenSim::Component*
UpdOwner(OpenSim::Component& root,
const OpenSim::Component&);
276 OpenSim::Component&
UpdOwnerOrThrow(OpenSim::Component& root,
const OpenSim::Component&);
278 template<std::derived_from<OpenSim::Component> T>
284 template<std::derived_from<OpenSim::Component> T>
285 T*
UpdOwner(OpenSim::Component& root,
const OpenSim::Component& c)
287 return dynamic_cast<T*
>(
UpdOwner(root, c));
293 const OpenSim::Component&
GetOwnerOr(
const OpenSim::Component&,
const OpenSim::Component& fallback);
294 const OpenSim::Component*
GetOwner(
const OpenSim::Component&);
296 template<std::derived_from<OpenSim::Component> T>
299 return dynamic_cast<const T*
>(
GetOwner(c));
302 template<std::derived_from<OpenSim::Component> T>
305 return GetOwner<T>(c) !=
nullptr;
320 void Clear(OpenSim::ComponentPath&);
326 void ForEachComponent(
const OpenSim::Component&,
const std::function<
void(
const OpenSim::Component&)>&);
332 template<std::derived_from<OpenSim::Component> T>
338 if (
dynamic_cast<const T*
>(&c)) {
350 const OpenSim::Component* parent,
351 const OpenSim::Component* c
358 std::span<const OpenSim::Component*> parents,
359 const OpenSim::Component* c
364 const OpenSim::Component*,
365 bool(*pred)(
const OpenSim::Component*)
369 template<std::derived_from<OpenSim::Component> T>
374 return dynamic_cast<const T*
>(el) !=
nullptr;
377 return dynamic_cast<const T*
>(rv);
381 template<std::derived_from<OpenSim::Component> T>
384 return FindAncestorWithType<T>(&c) !=
nullptr;
389 const OpenSim::Component& component,
390 bool(*predicate)(
const OpenSim::Component&)
395 const OpenSim::Component& component,
396 bool(*predicate)(
const OpenSim::Component&)
401 OpenSim::Component& component,
402 bool(*predicate)(
const OpenSim::Component&)
407 template<std::derived_from<OpenSim::Component> T>
412 return dynamic_cast<const T*
>(&el) !=
nullptr;
414 return dynamic_cast<const T*
>(rv);
419 template<std::derived_from<OpenSim::Component> T>
424 return dynamic_cast<const T*
>(&el) !=
nullptr;
426 return dynamic_cast<T*
>(rv);
434 const OpenSim::Model&,
435 std::vector<const OpenSim::Coordinate*>&
454 std::vector<const OpenSim::AbstractSocket*>
GetAllSockets(
const OpenSim::Component&);
462 const OpenSim::Component&,
469 const OpenSim::Model&,
474 const OpenSim::Component*
FindComponent(
const OpenSim::Component& root,
const OpenSim::ComponentPath&);
475 const OpenSim::Component*
FindComponent(
const OpenSim::Model&,
const std::string& absPath);
479 template<std::derived_from<OpenSim::Component> T>
480 const T*
FindComponent(
const OpenSim::Component& root,
const OpenSim::ComponentPath& cp)
485 template<std::derived_from<OpenSim::Component> T>
491 template<std::derived_from<OpenSim::Component> T>
499 OpenSim::Component& root,
500 const OpenSim::ComponentPath&
504 template<std::derived_from<OpenSim::Component> T>
506 OpenSim::Component& root,
507 const OpenSim::ComponentPath& cp)
514 const OpenSim::Component& root,
515 const OpenSim::ComponentPath&
520 const OpenSim::Component&,
521 const std::string& socketName
527 const std::string& socketName
532 const OpenSim::AbstractSocket&,
533 const OpenSim::Component&
538 const OpenSim::AbstractSocket&,
539 const OpenSim::Component&
547 OpenSim::Component& root,
548 const OpenSim::Component& from,
549 const OpenSim::Component& to
555 const OpenSim::Component&
source,
556 const OpenSim::Component&
target,
566 const OpenSim::Component&
source()
const {
return *m_Source; }
567 const OpenSim::Component&
target()
const {
return *m_Target; }
570 const OpenSim::Component* m_Source;
571 const OpenSim::Component* m_Target;
572 std::string m_SocketName;
579 const OpenSim::Component* root,
580 const OpenSim::Component* c,
581 std::function<
bool(
const OpenSim::Component&)> filter = [](
const OpenSim::Component&){
return true; }
593 OpenSim::Component& c,
594 const std::string& name)
601 const OpenSim::Component&,
602 const std::string& outputName
607 const OpenSim::Component& root,
608 const OpenSim::ComponentPath&,
609 const std::string& outputName
625 const OpenSim::Model&,
665 std::unique_ptr<OpenSim::Model>
LoadModel(
const std::filesystem::path&);
789 const OpenSim::Model&,
791 const OpenSim::HuntCrossleyForce&
798 const OpenSim::Model&,
799 const std::string& bodyNameOrPath
808 OpenSim::ComponentPath frameAbsPath_) :
825 OpenSim::ModelComponent&
AddModelComponent(OpenSim::Model&, std::unique_ptr<OpenSim::ModelComponent>&&);
828 template<std::derived_from<OpenSim::ModelComponent> T>
831 return static_cast<T&
>(
AddModelComponent(
model,
static_cast<std::unique_ptr<OpenSim::ModelComponent>&&
>(std::move(p))));
835 template<std::derived_from<OpenSim::ModelComponent> T,
typename... Args>
836 requires std::constructible_from<T, Args&&...>
843 OpenSim::Component&
AddComponent(OpenSim::Component&, std::unique_ptr<OpenSim::Component>&&);
845 template<std::derived_from<OpenSim::Component> T>
848 return static_cast<T&
>(
AddComponent(c,
static_cast<std::unique_ptr<OpenSim::Component>&&
>(std::move(p))));
851 template<std::derived_from<OpenSim::Component> T>
857 template<std::derived_from<OpenSim::Component> T,
typename... Args>
858 requires std::constructible_from<T, Args&&...>
861 return AddComponent(host, std::make_unique<T>(std::forward<Args>(args)...));
864 OpenSim::Body&
AddBody(OpenSim::Model&, std::unique_ptr<OpenSim::Body>);
866 template<
typename... Args>
867 requires std::constructible_from<OpenSim::Body, Args&&...>
870 auto p = std::make_unique<OpenSim::Body>(std::forward<Args>(args)...);
874 OpenSim::Joint&
AddJoint(OpenSim::Model&, std::unique_ptr<OpenSim::Joint>);
876 template<std::derived_from<OpenSim::Jo
int> T,
typename... Args>
877 requires std::constructible_from<T, Args&&...>
880 auto p = std::make_unique<T>(std::forward<Args>(args)...);
884 OpenSim::Constraint&
AddConstraint(OpenSim::Model&, std::unique_ptr<OpenSim::Constraint>);
886 template<std::derived_from<OpenSim::Constra
int> T,
typename... Args>
887 requires std::constructible_from<T, Args&&...>
890 auto p = std::make_unique<T>(std::forward<Args>(args)...);
894 OpenSim::Marker&
AddMarker(OpenSim::Model&, std::unique_ptr<OpenSim::Marker>);
896 template<
typename... Args>
897 requires std::constructible_from<OpenSim::Marker, Args&&...>
900 auto p = std::make_unique<OpenSim::Marker>(std::forward<Args>(args)...);
904 OpenSim::Geometry&
AttachGeometry(OpenSim::Frame&, std::unique_ptr<OpenSim::Geometry>);
906 template<std::derived_from<OpenSim::Geometry> T,
typename... Args>
907 requires std::constructible_from<T, Args&&...>
910 auto p = std::make_unique<T>(std::forward<Args>(args)...);
920 OpenSim::Geometry& oldGeometry,
921 std::unique_ptr<OpenSim::Geometry> newGeometry
924 OpenSim::PhysicalOffsetFrame&
AddFrame(OpenSim::Joint&, std::unique_ptr<OpenSim::PhysicalOffsetFrame>);
926 OpenSim::WrapObject&
AddWrapObject(OpenSim::PhysicalFrame&, std::unique_ptr<OpenSim::WrapObject>);
928 template<std::derived_from<OpenSim::WrapObject> T,
typename... Args>
929 requires std::constructible_from<T, Args&&...>
932 return static_cast<T&
>(
AddWrapObject(physFrame, std::make_unique<T>(std::forward<Args>(args)...)));
935 template<ClonesToRawPo
inter T>
936 std::unique_ptr<T>
Clone(
const T& obj)
938 return std::unique_ptr<T>(obj.clone());
941 template<std::derived_from<OpenSim::Component> T>
944 prop.adoptAndAppendValue(
Clone(c).release());
948 std::derived_from<OpenSim::Object> T,
949 std::derived_from<OpenSim::Object> C = OpenSim::Object
953 for (
size_t i = 0; i <
size(set); ++i) {
954 if (&
At(set, i) == &el) {
962 std::derived_from<OpenSim::Object> T,
963 std::derived_from<T> U,
964 std::derived_from<OpenSim::Object> C = OpenSim::Object
968 set.adoptAndAppend(el.release());
972 std::derived_from<OpenSim::Object> T,
973 std::derived_from<T> U,
974 std::derived_from<OpenSim::Object> C = OpenSim::Object
978 if (index >=
size(set)) {
979 throw std::out_of_range{
"out of bounds access to an OpenSim::Set detected"};
983 set.set(
static_cast<int>(index), el.release());
988 std::derived_from<OpenSim::Object> T,
989 std::derived_from<T> U,
990 std::derived_from<OpenSim::Object> C = OpenSim::Object
994 auto idx =
IndexOf(set, oldElement);
996 throw std::runtime_error{
"cannot find the requested element in the set"};
998 return Assign(set, *idx, std::move(newElement));
1002 std::derived_from<OpenSim::Object> T,
1003 std::derived_from<T> U,
1004 std::derived_from<OpenSim::Object> C = OpenSim::Object
1015 std::derived_from<OpenSim::Object> T,
1016 std::derived_from<T> U,
1017 std::derived_from<OpenSim::Object> C
1021 for (
size_t i = 0; i <
size(set); ++i) {
1022 if (&
At(set, i) == item) {
1072 const OpenSim::Component&,
1094 const OpenSim::Model&,
1095 const std::filesystem::path&,
1107 const OpenSim::Model&,
1108 const OpenSim::Storage&
1112 const OpenSim::Model&,
1113 const OpenSim::Storage&
1119 const std::unordered_map<int, int>& columnIndexToModelStateVarIndex,
1120 const OpenSim::Storage&,
1127 const std::unordered_map<int, int>& columnIndexToModelStateVarIndex,
1128 const OpenSim::Storage&,
1141 OpenSim::Model&
model,
1142 const SimTK::State& state,
Definition open_sim_helpers.h:37
Definition open_sim_helpers.h:36
Definition open_sim_helpers.h:56
Definition open_sim_helpers.h:55
Definition open_sim_helpers.h:59
Definition open_sim_helpers.h:60
Definition open_sim_helpers.h:552
friend bool operator==(const ComponentConnectionView &, const ComponentConnectionView &)=default
const OpenSim::Component & source() const
Definition open_sim_helpers.h:566
ComponentConnectionView(const OpenSim::Component &source, const OpenSim::Component &target, std::string socketName)
Definition open_sim_helpers.h:554
const OpenSim::Component & target() const
Definition open_sim_helpers.h:567
osc::CStringView socketName() const
Definition open_sim_helpers.h:568
Definition c_string_view.h:12
Definition string_name.h:14
Definition generator.h:32
Definition open_sim_helpers.h:71
Definition static_component_registries.h:3
Definition custom_decoration_generator.h:6
Definition component_registry.h:14
const OpenSim::Component * FindComponent(const OpenSim::Component &root, const OpenSim::ComponentPath &)
size_t GetNumChildren(const OpenSim::Component &c)
Definition open_sim_helpers.h:333
bool IsShowingMarkers(const OpenSim::Model &)
std::string SanitizeToOpenSimComponentName(std::string_view)
bool IsConcreteClassNameLexicographicallyLowerThan(const OpenSim::Component &, const OpenSim::Component &)
bool CanExtractPointInfoFrom(const OpenSim::Component &, const SimTK::State &)
osc::CStringView GetCoordDisplayValueUnitsString(const OpenSim::Coordinate &)
OpenSim::WrapObject & AddWrapObject(OpenSim::PhysicalFrame &, std::unique_ptr< OpenSim::WrapObject >)
const ComponentRegistryEntry< T > & At(const ComponentRegistry< T > ®istry, size_t i)
Definition component_registry.h:59
std::string WriteObjectXMLToString(const OpenSim::Object &)
OpenSim::Component & UpdOwnerOrThrow(OpenSim::Component &root, const OpenSim::Component &)
std::unique_ptr< OpenSim::Model > LoadModel(const std::filesystem::path &)
const OpenSim::Component * FindFirstDescendentInclusive(const OpenSim::Component &component, bool(*predicate)(const OpenSim::Component &))
OpenSim::Component & AddComponent(OpenSim::Component &, std::unique_ptr< OpenSim::Component > &&)
bool IsShowingFrames(const OpenSim::Model &)
osc::cpp23::generator< ComponentConnectionView > ForEachInboundConnection(const OpenSim::Component *root, const OpenSim::Component *c, std::function< bool(const OpenSim::Component &)> filter=[](const OpenSim::Component &){ return true;})
void WriteModelMultibodySystemGraphAsDotViz(const OpenSim::Model &, std::ostream &)
const T * FindAncestorWithType(const OpenSim::Component *c)
Definition open_sim_helpers.h:370
void InitializeModel(OpenSim::Model &)
bool HasInputFileName(const OpenSim::Model &)
bool IsInclusiveChildOf(const OpenSim::Component *parent, const OpenSim::Component *c)
std::vector< const OpenSim::Component * > GetPathElements(const OpenSim::Component &)
OpenSim::AbstractSocket * FindSocketMut(OpenSim::Component &, const std::string &socketName)
const OpenSim::Appearance * TryGetAppearance(const OpenSim::Component &)
StorageIndexToModelStateVarMappingResult CreateStorageIndexToModelStatevarMapping(const OpenSim::Model &, const OpenSim::Storage &)
bool ActivateAllWrapObjectsIn(OpenSim::Model &)
U & Assign(OpenSim::Set< T, C > &set, size_t index, std::unique_ptr< U > el)
Definition open_sim_helpers.h:976
bool IsAbleToConnectTo(const OpenSim::AbstractSocket &, const OpenSim::Component &)
bool ToggleShowingContactGeometry(OpenSim::Model &)
void Append(OpenSim::ObjectProperty< T > &prop, const T &c)
Definition open_sim_helpers.h:942
const OpenSim::PhysicalFrame & GetFrameUsingExternalForceLookupHeuristic(const OpenSim::Model &, const std::string &bodyNameOrPath)
std::optional< size_t > IndexOf(const ComponentRegistryBase &, std::string_view componentClassName)
std::vector< OpenSim::AbstractSocket * > UpdAllSockets(OpenSim::Component &)
void UpdateStateVariablesFromStorageRow(OpenSim::Model &, SimTK::State &, const std::unordered_map< int, int > &columnIndexToModelStateVarIndex, const OpenSim::Storage &, int row)
std::vector< OpenSim::Coordinate * > UpdDefaultLockedCoordinatesInModel(OpenSim::Model &)
OpenSim::Appearance * TryUpdAppearance(OpenSim::Component &)
void ScaleModelMassPreserveMassDistribution(OpenSim::Model &model, const SimTK::State &state, double newMass)
std::optional< std::filesystem::path > TryFindInputFile(const OpenSim::Model &)
T * FindFirstDescendentOfTypeMut(OpenSim::Component &c)
Definition open_sim_helpers.h:420
void UpdateStateFromStorageTime(OpenSim::Model &, SimTK::State &, const std::unordered_map< int, int > &columnIndexToModelStateVarIndex, const OpenSim::Storage &, double time)
const OpenSim::Component * GetOwner(const OpenSim::Component &)
std::optional< PointInfo > TryExtractPointInfo(const OpenSim::Component &, const SimTK::State &)
bool ShouldShowInUI(const OpenSim::Component &)
const OpenSim::Component & GetOwnerOrThrow(const OpenSim::AbstractOutput &)
OpenSim::Component * FindComponentMut(OpenSim::Component &root, const OpenSim::ComponentPath &)
const T * end(const OpenSim::Array< T > &ary)
Definition open_sim_helpers.h:132
bool IsAllElementsUnique(const OpenSim::Array< T > &v)
Definition open_sim_helpers.h:226
bool OwnerIs(const OpenSim::Component &c)
Definition open_sim_helpers.h:303
osc::Color GetSuggestedBoneColor()
float ConvertCoordValueToDisplayValue(const OpenSim::Coordinate &, double v)
bool IsShowingWrapGeometry(const OpenSim::Model &)
bool ContainsComponent(const OpenSim::Component &root, const OpenSim::ComponentPath &)
OpenSim::Component * FindFirstDescendentMut(OpenSim::Component &component, bool(*predicate)(const OpenSim::Component &))
OpenSim::ComponentPath GetAbsolutePath(const OpenSim::Component &)
std::unordered_map< int, int > CreateStorageIndexToModelStatevarMappingWithWarnings(const OpenSim::Model &, const OpenSim::Storage &)
ptrdiff_t ssize(const OpenSim::Set< T, C > &s)
Definition open_sim_helpers.h:90
std::unique_ptr< T > Clone(const T &obj)
Definition open_sim_helpers.h:936
std::unique_ptr< OpenSim::Storage > LoadStorage(const OpenSim::Model &, const std::filesystem::path &, const StorageLoadingParameters &={})
std::optional< ForcePoint > TryGetContactForceInGround(const OpenSim::Model &, const SimTK::State &, const OpenSim::HuntCrossleyForce &)
std::optional< std::string > TryGetOrientationalPropertyName(const OpenSim::Component &)
bool TryDeleteComponentFromModel(OpenSim::Model &, OpenSim::Component &)
std::string GetMeshFileName(const OpenSim::Mesh &)
size_t DistanceFromRoot(const OpenSim::Component &)
OpenSim::PhysicalOffsetFrame & AddFrame(OpenSim::Joint &, std::unique_ptr< OpenSim::PhysicalOffsetFrame >)
const OpenSim::Frame * TryGetParentFrame(const OpenSim::Frame &)
bool TryDeleteItemFromSet(OpenSim::Set< T, C > &set, const U *item)
Definition open_sim_helpers.h:1019
std::optional< std::filesystem::path > FindGeometryFileAbsPath(const OpenSim::Model &, const OpenSim::Mesh &)
OpenSim::Geometry & AttachGeometry(OpenSim::Frame &, std::unique_ptr< OpenSim::Geometry >)
std::string RecommendedDocumentName(const OpenSim::Model &)
void TryEquilibrateMusclesOrLogWarning(OpenSim::Model &, SimTK::State &)
OpenSim::Constraint & AddConstraint(OpenSim::Model &, std::unique_ptr< OpenSim::Constraint >)
bool IsValidOpenSimComponentNameCharacter(char)
bool ToggleShowingFrames(OpenSim::Model &)
std::optional< LinesOfAction > GetEffectiveLinesOfActionInGround(const OpenSim::Muscle &, const SimTK::State &)
OpenSim::Joint & AddJoint(OpenSim::Model &, std::unique_ptr< OpenSim::Joint >)
bool IsNameLexographicallyLowerThan(const OpenSim::Component &, const OpenSim::Component &)
bool IsEmpty(const OpenSim::ComponentPath &)
std::optional< SimTK::Transform > TryGetParentToGroundTransform(const OpenSim::Component &, const SimTK::State &)
const OpenSim::AbstractSocket * FindSocket(const OpenSim::Component &, const std::string &socketName)
void ForEachComponentInclusive(const OpenSim::Component &, const std::function< void(const OpenSim::Component &)> &)
const OpenSim::Component & GetOwnerOr(const OpenSim::Component &, const OpenSim::Component &fallback)
const OpenSim::PhysicalFrame * TryGetParentToGroundFrame(const OpenSim::Component &)
std::vector< std::string > GetSocketNames(const OpenSim::Component &)
std::optional< LinesOfAction > GetAnatomicalLinesOfActionInGround(const OpenSim::Muscle &, const SimTK::State &)
void GetAbsolutePathString(const OpenSim::Component &, std::string &)
std::optional< ComponentSpatialRepresentation > TryGetSpatialRepresentation(const OpenSim::Component &, const SimTK::State &)
bool empty(const OpenSim::Set< T, C > &s)
Definition open_sim_helpers.h:149
OpenSim::Component * UpdOwner(OpenSim::Component &root, const OpenSim::Component &)
OpenSim::ComponentPath GetAbsolutePathOrEmpty(const OpenSim::Component *)
std::optional< std::string > TryGetOwnerName(const OpenSim::Component &)
std::ostream & operator<<(std::ostream &out, const DataFrame &data_frame)
Writes a pretty-printed representation of data_frame to out.
OpenSim::AbstractProperty * FindPropertyMut(OpenSim::Component &, const std::string &)
bool ToggleShowingForces(OpenSim::Model &)
const T * FindFirstDescendentOfType(const OpenSim::Component &c)
Definition open_sim_helpers.h:408
OpenSim::ModelComponent & AddModelComponent(OpenSim::Model &, std::unique_ptr< OpenSim::ModelComponent > &&)
bool IsChildOfA(const OpenSim::Component &c)
Definition open_sim_helpers.h:382
OpenSim::Marker & AddMarker(OpenSim::Model &, std::unique_ptr< OpenSim::Marker >)
void ForEachComponent(const OpenSim::Component &, const std::function< void(const OpenSim::Component &)> &)
SimTK::State & InitializeState(OpenSim::Model &)
osc::Color to_color(const OpenSim::Appearance &)
const OpenSim::Component * FindFirstAncestorInclusive(const OpenSim::Component *, bool(*pred)(const OpenSim::Component *))
bool IsConnectedTo(const OpenSim::AbstractSocket &, const OpenSim::Component &)
std::vector< const OpenSim::WrapObject * > GetAllWrapObjectsReferencedBy(const OpenSim::GeometryPath &)
OpenSim::Component & AddComponentToAppropriateSet(OpenSim::Model &, std::unique_ptr< OpenSim::Component >)
bool DeactivateAllWrapObjectsIn(OpenSim::Model &)
OpenSim::Body & AddBody(OpenSim::Model &, std::unique_ptr< OpenSim::Body >)
std::string GetDisplayName(const OpenSim::Geometry &)
const T * begin(const OpenSim::Array< T > &ary)
Definition open_sim_helpers.h:118
std::optional< size_t > FindJointInParentJointSet(const OpenSim::Joint &)
void WriteComponentTopologyGraphAsDotViz(const OpenSim::Component &, std::ostream &)
bool EraseAt(OpenSim::Set< T, C > &s, size_t i)
Definition open_sim_helpers.h:218
std::optional< std::string > TryGetPositionalPropertyName(const OpenSim::Component &)
bool IsShowingForces(const OpenSim::Model &)
void CopyCommonJointProperties(const OpenSim::Joint &src, OpenSim::Joint &dest)
osc::CStringView GetMotionTypeDisplayName(const OpenSim::Coordinate &)
const OpenSim::Component * FindFirstDescendent(const OpenSim::Component &component, bool(*predicate)(const OpenSim::Component &))
bool HasModelFileExtension(const std::filesystem::path &path)
void OverwriteGeometry(OpenSim::Model &, OpenSim::Geometry &oldGeometry, std::unique_ptr< OpenSim::Geometry > newGeometry)
const OpenSim::AbstractOutput * FindOutput(const OpenSim::Component &, const std::string &outputName)
osc::StringName GetAbsolutePathStringName(const OpenSim::Component &)
bool IsShowingContactGeometry(const OpenSim::Model &)
std::vector< const OpenSim::AbstractSocket * > GetAllSockets(const OpenSim::Component &)
std::vector< const OpenSim::Coordinate * > GetCoordinatesInModel(const OpenSim::Model &)
bool IsNameLexographicallyGreaterThan(const Ptr &a, const Ptr &b)
Definition open_sim_helpers.h:267
void RecursivelyReassignAllSockets(OpenSim::Component &root, const OpenSim::Component &from, const OpenSim::Component &to)
OpenSim::ComponentPath GetRootComponentPath()
double ConvertCoordDisplayValueToStorageValue(const OpenSim::Coordinate &, float v)
void FinalizeFromProperties(OpenSim::Model &)
size_t size(const OpenSim::Set< T, C > &s)
Definition open_sim_helpers.h:80
void FinalizeConnections(OpenSim::Model &)
OpenSim::SimpleProperty< T > * FindSimplePropertyMut(OpenSim::Component &c, const std::string &name)
Definition open_sim_helpers.h:592
bool ToggleShowingMarkers(OpenSim::Model &)
bool TrySetAppearancePropertyIsVisibleTo(OpenSim::Component &, bool)
void Clear(OpenSim::ComponentPath &)
bool ToggleShowingWrapGeometry(OpenSim::Model &)
Definition open_sim_helpers.h:1064
std::string locationVec3PropertyName
Definition open_sim_helpers.h:1066
SimTK::Transform parentToGround
Definition open_sim_helpers.h:1065
std::optional< std::string > maybeOrientationVec3EulersPropertyName
Definition open_sim_helpers.h:1067
Definition open_sim_helpers.h:784
osc::Vector3 force
Definition open_sim_helpers.h:785
osc::Vector3 point
Definition open_sim_helpers.h:786
Definition open_sim_helpers.h:774
osc::Ray origin
Definition open_sim_helpers.h:775
osc::Ray insertion
Definition open_sim_helpers.h:776
Definition open_sim_helpers.h:805
osc::Vector3 location
Definition open_sim_helpers.h:814
PointInfo(osc::Vector3 location_, OpenSim::ComponentPath frameAbsPath_)
Definition open_sim_helpers.h:806
OpenSim::ComponentPath frameAbsPath
Definition open_sim_helpers.h:815
Definition open_sim_helpers.h:1101
std::vector< std::string > stateVariablesMissingInStorage
Definition open_sim_helpers.h:1103
std::unordered_map< int, int > storageIndexToModelStatevarIndex
Definition open_sim_helpers.h:1102
Definition open_sim_helpers.h:1084
bool convertRotationalValuesToRadians
Definition open_sim_helpers.h:1085
std::optional< double > resampleToFrequency
Definition open_sim_helpers.h:1086