MDL Model Statements
Reference to all MDL statements and blocks that can be used to model a mechanical system.
Statements
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
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.
- Topology statements that define entities.
- 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.
- All Set statements not within the *Define block.
- Some of *Begin statements such as *BeginAssemblySelection and *BeginAnalysis.
*BeginMDL(model, “Simple Model”)
*System (sys_1, “System 1”, def_sys_1)
*DefineSystem(def_sys_1)
*Point (p_cg, “Body CG point”)
*Body(body, “Body”, p_cg)
*SetPoint(p_cg, 10, 0, 0)
*EndDefine()
*BeginContext(sys_1)
*SetPoint(p_cg, 20, 0, 0)
*SetBodyInertia(body, 10, 10000,1000, 10000)
*EndContext()
*EndMDL()
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.
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.