hexagon logo

Variable length

Hello everyone,
 
Some help please because I'm running out of ideas.
 
So, I have two markers / construction frames : first one has a fix location, but the second one is dependent by the first marker.
 
There is a relationship between markers: the 2nd one moves along the axis of the 1st one, only after the distance (DM) between them drops under a certain length.
 
So far I've tried with IF function and with VARVAL... but no success.
 
Examples :
marker_2 = (LOC_RELATIVE_TO({0.0, 0.0, (IF(....))}, marker_1) or
marker_2 = (LOC_RELATIVE_TO({0.0, 0.0, (VARVAL(....))}, marker_1)
 
 
 
How can I integrate a run-time variable into a marker definition ?
 
 
 
 
Thank you very much!
Parents
  • You can't integrate run-time expressions in the parameterization.
    Once the simulation starts, the parameterization is gone, dead, does not exist from a solver perspective. The marker is where it is.
     
    But what you write as "the 2nd one moves along the axis of the 1st one" is a solver constraint, not a parameterization.
    Use for example a translational joint or an inline jprim.
    constraint create primitive_joint inline jprim_name=jprim_1 &
    i_marker_name = marker_2 &
    j_marker_name = marker 1
    This forces marker_2 to move along the z_axis of marker_1.
     
    Then you write "only after the distance (DM) between them drops under a certain length." I don't completely understand what you intend here. What does it do when the length is greater than the specified value? Free to move as it wants along the axis specified by the jprim above?
    If that is the case, this is handled by a force. If the trigger value (DM as you call it) is greater than zero, then an SFORCE is appropriate utilizing a IMPACTfunction. (if DM can be zero or negative, you should use a VFORCE as a translational SFORCE never can have length zero when the direction would become undefined)
    force create direct single_component_force &
    type = translational &
    action_only=off &
    i_marker = marker_2 &
    j_marker=marker_1 &
    function="BISTOP(DZ(marker_2,marker_1,marker_2),VZ(marker_2,marker_1,marker_2), 42, 1e4, 1.1,10, 0.1)
    This will allow marker_2 to move freely along the z-axis of marker_1 as long as the distance between them is greater than 42. If distance is lower than 42, they will move together.
     
    Note that marker_1 and marker_2 must of course belong to different parts.
     
     
     
     
Reply
  • You can't integrate run-time expressions in the parameterization.
    Once the simulation starts, the parameterization is gone, dead, does not exist from a solver perspective. The marker is where it is.
     
    But what you write as "the 2nd one moves along the axis of the 1st one" is a solver constraint, not a parameterization.
    Use for example a translational joint or an inline jprim.
    constraint create primitive_joint inline jprim_name=jprim_1 &
    i_marker_name = marker_2 &
    j_marker_name = marker 1
    This forces marker_2 to move along the z_axis of marker_1.
     
    Then you write "only after the distance (DM) between them drops under a certain length." I don't completely understand what you intend here. What does it do when the length is greater than the specified value? Free to move as it wants along the axis specified by the jprim above?
    If that is the case, this is handled by a force. If the trigger value (DM as you call it) is greater than zero, then an SFORCE is appropriate utilizing a IMPACTfunction. (if DM can be zero or negative, you should use a VFORCE as a translational SFORCE never can have length zero when the direction would become undefined)
    force create direct single_component_force &
    type = translational &
    action_only=off &
    i_marker = marker_2 &
    j_marker=marker_1 &
    function="BISTOP(DZ(marker_2,marker_1,marker_2),VZ(marker_2,marker_1,marker_2), 42, 1e4, 1.1,10, 0.1)
    This will allow marker_2 to move freely along the z-axis of marker_1 as long as the distance between them is greater than 42. If distance is lower than 42, they will move together.
     
    Note that marker_1 and marker_2 must of course belong to different parts.
     
     
     
     
Children
No Data