MotionView User's Guide

Markers

Markers

Previous topic Next topic Expand/collapse all hidden text  

Markers

Previous topic Next topic JavaScript is required for expanding text JavaScript is required for the print function  

This section describes the Marker entity of MotionView and shows the various usage, creation, and editing methods.

Theory/Background

A Marker entity is an orthonormal, right-handed coordinate system and reference frame in MotionView.  A Marker must belong to a body.  The body can be any type: rigid, flexible, or point mass.  The default marker that belongs to the Ground Body (Newtonian reference frame) at the Global Origin is called Global Frame.

The topological information required to define a Marker is shown in the figure below:

marker_diagram_mv

In MotionView you can create the following types of Markers:

Non-Floating (Single or Pair)
Floating (Single or Pair)

A fixed marker belonging to a body is fixed with regard to the body’s reference frame.  To attach a marker on a body, a location and orientation need to be specified.

Even though a floating marker belongs to a body, is not fixed within the body reference frame.  Floating markers are generally used in entities such as a Vector force or a bushing.

Marker is a primary entity in a multi-body system.  All entities that comprise of a multi body system are represented in the solver using Markers.  For example, a CG marker represents a body at the specified marker location and the mass is assumed be located at the origin of the CG marker.  A revolute joint is represented by imposing constraints along five directions between two markers (referred as I & J Markers), each on the two bodies between which the joint is defined.  A similar concept exists for other entities such as forces.  Some entities such as vectors, forces, or bushings require their J marker be coincident with the I marker.  Hence the J marker needs to move with respect to its body reference frame, thereby such markers are defined as floating markers.

While defining entities such as bodies, joints, and forces in MotionView, markers are implicitly created.  However, there are occasions where markers need to be explicitly created. For example, to define an output at a certain location where there are no other entities, or to define a reference frame for a force.

Entity Data Members

The data members of the Marker can be classified into the following:

hmtoggle_plus1Connectivity

The topological information required to define a Marker is show in the figure above.

A Marker needs the following:

A Parent body - Body
Point of Origin - Point
Orientation – specified using any of three methods Orient two axes, Orient one axis, or Orient by angles.  The axes can be further specified using Points, Vectors, or Direction Cosines/
hmtoggle_plus1Properties

A Marker can be modeled as a Single entity or as a Pair entity.  When modeled as a Pair entity, the entity can have symmetric properties about the ZX plane of the model.

Creating and Editing Markers

To learn how to add an "Entity" to a model, please see the Entity Manual topic. 

hmtoggle_plus1To create/add a Marker to a model:
1.A Marker entity can be added to the model using two different methods:
-From the MotionView Reference Entity toolbar, right-click the Markers icon entityMarkers-24.

OR

-From the Project Browser, right-click on the Model label (or on any System/Analysis of your choice) and select Add > Reference Entity > Marker from the context menu.

The Add Marker or MarkerPair dialog is displayed.

add_marker_or_markerpair_dialog_mv

2.In the Add Marker or MarkerPair dialog, double click the System collector button and select the desired system from the Select a System or Assembly or Analysis dialog.

Note - The selection of System collector for the entity can also be done after the entity has been added.

3.Enter the Label and Variable name for the Marker.
4.Select the Marker type (Single or Pair) using the Type radio button.
5.Add any comment information related to the Marker in the Comments area (Optional).
6.Click OK to add the Marker.

OR

-If several Markers are to be added, click Apply.  This keeps the Add Marker or MarkerPair dialog box open for adding additional markers.
7.Once an Marker has been added to the model using any of the entity creation methods, the panel for the Marker will be displayed in the panel area.

marker_panel_mv

Marker Panel - Properties Tab - Single Entity

marker_panel_pair_mv

Marker Panel - Properties Tab - Pair Entity

8.Click the Body collector (located under Parent) and select a body by picking the body from the graphics area, or double click the Body collector to open the model tree (from which the desired body can be selected).
9.Select the point of Origin for the Marker by picking it from the graphics area (or from the collector/model tree).
10.The default orientation for the Marker entity is along with Global Axes.  To change the orientation of the Marker entity, use any of the three methods described in the Methods of Orientation topic.
11.When defining a Pair Marker, use pair entities for Body, Origin, etc.

Note - The same steps as shown above can also be used to define Pair Marker entities.

Marker in MDL and XML Formats

The model containing the Marker can be saved in MDL format from MotionView and exported in the MotionSolve XML format.

hmtoggle_plus1Marker in MDL (Model Definition Language)

The Marker entity can be of the following types:

1.Non-Floating (Single or Pair)
2.Floating (Single or Pair)

The complete definition of a marker needs two MDL statements: *Marker() or *MarkerPair() and a *SetOrientation() statement.  These MDL statements are shown below:

Syntax:

*Marker(marker_name, "marker_label", body, origin, [FLOATING])

Example:

*Marker( m_single_fixed, "Marker Single Fixed", MODEL.b_a, MODEL.p_a )

 

*Marker( m_single_floating, "Marker Single Floating", b_b, p_b, FLOATING )

Syntax:

*MarkerPair(marker_name, "marker_label", body, origin, [FLOATING])

Example:

*MarkerPair( m_pair_fixed, "Marker Fixed Pair", b_e, p_e )

To specify the orientation of the markers, the MDL statement for *SetOrientation() is shown below:

Syntax:

*SetOrientation (frame, ONEAXIS,X|Y|Z,

POINT|VECTOR|DXDYDZ,

point_name|vector_name|x,y,z)

Example:

*SetOrientation( m_single_fixed_oneaxis, ONEAXIS, Z, VECTOR, V_Global_Z )

Syntax:

*SetOrientation (frame, TWOAXES,XY|XZ|YX|YZ|ZX|ZY,

POINT|VECTOR|DXDYDZ,

point_1|vector_1|xyz_1,

POINT|VECTOR|DXDYDZ,

point_2|vector_2|xyz_2)

Example:

*SetOrientation( m_pair_fixed, LEFT, TWOAXES, ZX, DXDYDZ, 0, 0, 1, DXDYDZ, 1, 0, 0 )

Syntax:

*SetOrientation (frame, ANGLES, ref_marker, ang_1, ang_2, ang_3)

Example:

*SetOrientation( m_single_fixed, ANGLES, Global_Frame, 15, 20, 0.0 )

To understand the complete syntax of the MDL statements mentioned above, please refer to the following MotionView MDL Reference Guide topics: *Marker(), *MarkerPair(),*SetOrientation() .

hmtoggle_plus1Marker in XML Format

The Marker when exported to the MotionSolve XML format is exported as a Reference_Marker statement.

Syntax:

<Reference_Marker

id = "integer"

body_id= "integer"

[ body_type = { "RIGIDBODY" | "FLEXBODY" | "POINTBODY" } ]

[ node_id  = "integer" ]

pos_x  = "real"

pos_y  = "real"

pos_z  = "real"

[

{

a00 = "real"

a10  = "real"

a20  = "real"

a01  = "real"

a11  = "real"

a21  = "real"

a02 = "real"

a12  = "real"

a22  = "real" >

psi = "real"

theta = "real"

phi  = "real"

|

e0 = "real"

e1  = "real"

e2 = "real"

e3 = "real"

}

]

</Reference_Marker>

In case of the Marker the model statement will be as shown below:

<Reference_Marker

  id                  = "30102021"

  label               = "Marker Single Fixed"

  body_id             = "30102"

  body_type           = "RigidBody"

  a00                 = "0.96592583"

  a10                 = "0.25881905"

  a20                 = "0."

  a02                 = "0.088521327"

  a12                 = "-0.33036609"

  a22                 = "0.93969262"

/>

To understand the complete syntax of the Reference_Marker XML model statement, please refer to the MotionSolve Reference Guide topic for Reference_Marker.

Creating and Editing Markers using Tcl

In MotionView, Tcl can be used to add any MDL entities to the model.  There are two Tcl commands that can be used to add an entity:

hmtoggle_arrow1InterpretEntity

Syntax:

mdlmodel_handle InterpretEntity new_handle keyword varname label tokens

In case of the Marker the statement will look as shown below:

mdlmodel_handle InterpretEntity marker_handle Marker m_single_fixed "\"Marker Single Fixed\"" MODEL.b_a MODEL.p_a;

hmtoggle_arrow1InterpretSet

Syntax: 

mdlmodel_handle InterpretSet keyword tokens;

In case of the Marker the statement will look as shown below:

mdlmodel_handle InterpretSet SetOrientation m_single_fixed "ANGLES" Global_Frame 15 20;

The InterpretEntity command is used to add entities to the model and the InterpretSet command is used to set the entity properties.  To understand the complete usage and syntax of these commands, please refer to the InterpretEntity and InterpretSet topics located within the HyperWorks Desktop Reference Guide.

Note - When using the InterpretEntity and InterpretSet commands, it is important to also use the Evaluate command in order for the changes to take effect immediately.

To learn how to create a complete model using Tcl commands, please refer to tutorial MV-1040: Model Building Using Tcl.

Example Model

The following example shows the Marker placed on the bodies and their orientation:

hmtoggle_plus1Marker.mdl

*BeginMDL( the_model, "Model", "11.0.0.101-HWDesktop" )

 

 *StandardInclude(FILE)

 *SetCurrentSolverMode(MotionSolve)

 *Point( p_a, "Point A" )

 *Point( p_b, "Point B" )

 *Body( b_a, "Body A", p_a, , , ,  )

 *Body( b_b, "Body B", p_b, , , ,  )

 

#Example for a Marker entity

 *Marker( m_a, "Marker A", b_a, p_a )

 *Marker( m_b, "Marker B", b_b, p_b )

 *Graphic( gra_a, "Graphic A", BOX, b_a, CENTER, p_a, ZX, POINT, p_b, VECTOR, V_Global_X, 2, 2, 2 )

 *Graphic( gra_b, "Graphic B", BOX, b_b, CENTER, p_b, XZ, VECTOR, m_b.xaxis, VECTOR, m_c.zaxis, 2, 2, 2 )

 *Point( p_c, "Point C" )

 *Body( b_c, "Body C", p_c, , , ,  )

 

#Example for a Marker entity

 *Marker( m_c, "Marker C", b_c, p_c )

 *Graphic( gra_0, "Graphic C", BOX, b_c, CENTER, p_c, ZX, VECTOR, m_c.zaxis, VECTOR, m_c.xaxis, 2, 2, 2 )

 *SetPoint( p_a,                        0 )

 *Set( b_b.usecm, true )

 *Set( b_a.usecm, true )

 

#Example for Marker entity orientation method

 *SetOrientation( m_a,                        ANGLES, Global_Frame, 0.0 )

 *SetGraphicAttributes( gra_b,                      , OFF )

 *SetOrientation( m_b,                        ONEAXIS, Z, DXDYDZ )

 *SetOrientation( m_b,                        TWOAXES, XY, DXDYDZ, , , , DXDYDZ )

 *SetPoint( p_b,                        5, 00 )

 *SetOrientation( m_b,                        TWOAXES, XY, POINT, p_a, DXDYDZ )

 *SetOrientation( m_b,                        TWOAXES, XY, POINT, p_d, VECTOR, V_Global_Z )

 *SetPoint( p_c,                        10 )

 *Set( b_c.usecm, true )

 *SetOrientation( b_c.cm,                     TWOAXES, ZX, DXDYDZ, , , , DXDYDZ )

 *SetOrientation( m_c,                        ANGLES, Global_Frame, 15, 15, 15 )

 *SetOrientation( m_b,                        TWOAXES, XY, VECTOR, V_Global_Z, VECTOR )

 *SetOrientation( m_b,                        ANGLES, Global_Frame, 35, 42, 56 )

 *Point( d, "Point D" )

 *SetPoint( d,                          15 )

 *Body( b_d, "Body D", d, , , ,  )

 *Set( b_d.usecm, true )

 *Marker( m_d, "Marker D", MODEL.b_d, MODEL.d, FLOATING )

 *SetOrientation( m_a,                        ONEAXIS, Z, DXDYDZ )

 *Graphic( gra_d, "Graphic D", BOX, b_d, CORNER, d, ZX, POINT, p_c, VECTOR, V_Global_X, 2, 2, 2 )

*EndMDL()

See Also:

Marker Panel

Adding and Removing Entities

*Marker() (MDL Model Statement)

*MarkerPair() (MDL Model Statement)

*SetOrientation() (MDL Model Statement)

Reference_Marker (XML Command)

InterpretEntity (Tcl Command)

InterpretSet (Tcl Command)