Page 1 of 1

usage of ConditionalPathPoint

Posted: Thu Apr 25, 2024 1:56 am
by craving
does anyone knows how to use ConditionalPathPoint to build muscle?i 'm stucked at its property of connectSocket_coordinate().

Re: usage of ConditionalPathPoint

Posted: Thu Apr 25, 2024 4:33 pm
by tkuchida
Based on the doxygen documentation (https://simtk.org/api_docs/opensim/api_ ... 13a8fa369b), the ConditionalPathPoint::connectSocket_coordinate() method would be called by passing in a reference to the coordinate, something like this:

Code: Select all

model = osim.Model('modelFilename.osim');
state = model.initSystem();
coord = model.getCoordinateSet().get(5);
// ...
myConditionalPathPoint.connectSocket_coordinate(coord);

Re: usage of ConditionalPathPoint

Posted: Fri Apr 26, 2024 12:08 am
by craving
am i corrcet in using ConditionalPathPoint::connectSocket_coordinate() method? and what should i do to add the conditionnal pathpoint to the pathpointset of the muscle?

//...
transformaxisZR = TransformAxis();
transformaxisZR.setName('transformaxisZR');
transformaxisZR.setAxis(Vec3(0.049400012358,0.0366,0.998108249695));
transformaxisZR.set_coordinates(0,'elbow_flextion');
transformaxisZR.set_function(LinearFunction(1,0));
spatialTrans = SpatialTransform();
spatialTrans.set_rotation1(transformaxisZR);
elbow = CustomJoint('elbow',humerus,Vec3(0.0061,-0.2904,-0.0123),Vec3(0,0,0),ulna,Vec3(0,0,0),Vec3(0,0,0),spatialTrans);
osimModel.addJoint(elbow);
elbowrot = elbow.updCoordinate(0);
elbowrot.setRange([0,2.268928027593]);
elbowrot.setDefaultValue(deg2rad(90));
coord = osimModel.getCoordinateSet().get(0);~~~~~~~~~~~~~~~~~~~~~~~% get a reference
//...
BIClong.addNewPathPoint('BIClong_point7', humerus, Vec3(0.0228,-0.1754,-0.0063));
BIClong.addNewPathPoint('BIClong_point8', radius, Vec3(-0.002,-0.0375,-0.002));
BIClong_point9 = ConditionalPathPoint();
BIClong_point9.setName('BIClong_point9');
BIClong_point9.connectSocket_coordinate(coord);~~~~~~~~~~~~~~~~~~~%pass the reference
BIClong_point9.setRangeMax(1.570796326795);
BIClong_point9.setRangeMin(-0.63879050623);

//...

Re: usage of ConditionalPathPoint

Posted: Sat Apr 27, 2024 3:39 am
by tkuchida
what should i do to add the conditionnal pathpoint to the pathpointset of the muscle?
I think it would be something like this:

Code: Select all

BIClong.updGeometryPath().updPathPointSet().cloneAndAppend(BIClong_point9);
I've used upd... methods here but the get... versions should work equally well in Matlab.

Re: usage of ConditionalPathPoint

Posted: Sun Apr 28, 2024 12:54 am
by craving
i used get...method before, and it had same error with upd...method.
and do you know how to solve this problem?
Error Create_Complex_muscle
Java exception occurred:
java.io.IOException: Failed to connect Socket 'coordinate' of type Coordinate(details: Connectee for Socket 'coordinate' of type Coordinate in ConditionalPathPoint at /forceset/BIClong/geometrypath/BIClong_point9 is unspecified. If this model was built programmatically, perhaps finalizeConnections() was not called before printing. Thrown at Component.h:3383 in finalizeConnection().).
In Object 'BIClong_point9' of type ConditionalPathPoint.
Thrown at Component.cpp:313 in finalizeConnections().
at org.opensim.modeling.opensimSimulationJNI.Model_initSystem(Native Method)
at org.opensim.modeling.Model.initSystem(Model.java:984)