This section describes the Marker entity of MotionView and shows the various usage, creation, and editing methods.
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:
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.
The data members of the Marker can be classified into the following:
The topological information required to define a Marker is show in the figure above. A Marker needs the following:
|
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. |
To learn how to add an "Entity" to a model, please see the Entity Manual topic.
OR
The Add Marker or MarkerPair dialog is displayed.
Note - The selection of System collector for the entity can also be done after the entity has been added.
OR
Marker Panel - Properties Tab - Single Entity Marker Panel - Properties Tab - Pair Entity
Note - The same steps as shown above can also be used to define Pair Marker entities. |
The model containing the Marker can be saved in MDL format from MotionView and exported in the MotionSolve XML format.
The Marker entity can be of the following types:
The complete definition of a marker needs two MDL statements: *Marker() or *MarkerPair() and a *SetOrientation() statement. These MDL statements are shown below:
To specify the orientation of the markers, the MDL statement for *SetOrientation() is shown below:
To understand the complete syntax of the MDL statements mentioned above, please refer to the following MotionView MDL Reference Guide topics: *Marker(), *MarkerPair(),*SetOrientation() . |
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. |
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:
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; |
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.
The following example shows the Marker placed on the bodies and their orientation:
*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() (MDL Model Statement)
*MarkerPair() (MDL Model Statement)
*SetOrientation() (MDL Model Statement)
Reference_Marker (XML Command)
InterpretEntity (Tcl Command)
InterpretSet (Tcl Command)