MDL Model Statements

Reference to all MDL statements and blocks that can be used to model a mechanical system.


MDL statements generally are used to define modeling entities and assign property values to the entities defined. Statements that define entities are referred as topology statements, as often an entity definition will refer to other entities and thereby establish a topological connection.

Example: *Point() is a modeling statement that is used to create a point. *Body() is a statement used to create a body and refers to a point definition for the body center of mass location. Similarly, *RevJoint() is a modeling statement used to create a revolute joint. This statement holds reference to body definitions between which the joint is defined and a point definition to specify the location of the joint.

MDL statements that assign properties to a defined entity are referred to as Property statements. Most of these statements start with *Set, these are also called Set statements or simply “Sets”.

For example, *SetPoint() is a property statement by which a point defined through the *Point topology statement is assigned coordinate values.

While there are no specific rules on the order in which these statements should be placed in the MDL file; it is common practice to list the topology statements first, followed by Set statements, so that it provides clarity.


Blocks are identified by two statements that can hold a list of topology and/or property statements. The first statement indicates the opening of the block and the second statement indicates the closing of the block.

For example, *DefineSystem/*EndDefine, *BeginAssemblySelection/*EndSelection, *BeginMDL()/*EndMDL().

There are two types of blocks: one which starts with *Define in the first statement and the other which starts with *Begin in the first statement. *Define blocks are definition blocks that are generally instantiated using their corresponding statement for instantiation. There could be multiple instantiations of a definition block.

Definition blocks may not be nested and can only reside in the model file directly within the model context (for example, *BeginMDL/*EndMDL) or within a definition file.

The *Begin block, as the statement suggests, generally indicates a parental block that holds a set of related statements.

Definition and Data

Building upon the concept of a definition block, these terminologies are used specifically with regard to container entities such as Systems, Assemblies and Analysis.

The block of statements when contained within a *Define block are termed as a Definition. These may include:
  1. Topology statements that define entities.
  2. Set statements that assign properties. These Set statements within a definition block are called "Default Sets" as they are considered as default values for the entities in the definition.
Any statements or block that resides outside the context of *Define block are termed as Data. These include:
  1. All Set statements not within the *Define block.
  2. Some of *Begin statements such as *BeginAssemblySelection and *BeginAnalysis.
The following simple model example further demonstrates the terminology of Data and Definition:
*BeginMDL(model, “Simple Model”)
*System (sys_1, “System 1”, def_sys_1)
*Point (p_cg, “Body CG point”)
*Body(body, “Body”, p_cg)
*SetPoint(p_cg, 10, 0, 0)
*SetPoint(p_cg, 20, 0, 0)
*SetBodyInertia(body, 10, 10000,1000, 10000)

The model that is described through MDL statements (above) consists of a System called "System 1" which has a point (Body CG point) and a body (Body). System 1 is an instantiation of the system definition def_sys_1. The point is referred to the body to define its CG location. The definition block not only contains the topology statement *Point and *Body, which define the point and body entity respectively, it also contains a property statement for the point that acts a default value for the point location. This is considered as Definition.

The other part of MDL contains a *BeginContext block that has set statements for the point and the body for the system System 1. This block is considered as Data.
Note: This block also contains a set statement for the point. This Set statement overrides the default value in the definition.

Beginning with version 11.0, MotionView comes with the Assembly technology (a container concept similar to Systems) whose data and definition reside in separate files instead of the model file. These terminologies are also applicable in the context of Assembly and related technologies.