The Element object represents an element within a structure. This object encapsulates all the properties of an element such as its position, section type, end releases and orientation of the local axes. All the elements that form a structure are contained within the Elements collection that is stored as part of the Frame object.

A summary of all the properties and methods of the Element object are listed in the table below.
|
Properties |
Type |
Description |
|
FlipSectionXX |
Boolean |
Get/Set whether the elements section is flipped about its x-axis. |
|
FlipSectionYY |
Boolean |
Get/Set whether the elements section is flipped about its y-axis. |
|
Length |
Double |
Read Only. Returns the length of the element. |
|
Member |
Member |
Read Only. Get the design member to which the element is part of. |
|
Node* |
Node/Variant |
Get/Set the node at a specified end of the element. |
|
Nodes |
NodeList |
Read Only. Returns a list of all nodes connected to the element. |
|
Offset* |
Variant |
Get/Set the rigid offsets at a specified end of the element. |
|
OffsetsLocal |
Boolean |
Get/Set whether the end offsets are defined in local or global coordinates. |
|
Orientation |
Double |
Get/Set the orientation of the element. |
|
Releases* |
Variant |
Get/Set the releases at the ends of the element. |
|
Section |
Section/Variant |
Get/Set the section. |
|
Slope |
Double |
Read Only. Get the slope of the element. |
|
SlopeXY |
Double |
Read Only. Get the slope of the element in the X-Y plane. |
|
SlopeZX |
Double |
Read Only. Get the slope of the element in the Z-X plane. |
|
SlopeZY |
Double |
Read Only. Get the slope of the element in the Z-Y plane. |
|
Type |
mfElementType |
Get/Set the type of the element. |
|
UseDynamicSelfWeight |
Boolean |
Get/Set whether the self-weight of the element is to be considered in dynamic analyses. |
|
UseShearAreaY |
Boolean |
Get/Set whether the shear deflection in the local y-axis is to be considered in an analysis. |
|
UseShearAreaZ |
Boolean |
Get/Set whether the shear deflection in the local z-axis is to be considered in an analysis. |
|
UseStaticSelfWeight |
Boolean |
Get/Set whether the self-weight of the element is to be considered in static analyses. |
|
XYZ* |
Variant |
Read only. Returns the position of a specified end of the element. |
|
X* |
Double |
Read only. Returns the x-coordinate of a specified end of the element. |
|
Y* |
Double |
Read only. Returns the y-coordinate of a specified end of the element. |
|
Z* |
Double |
Read only. Returns the z-coordinate of a specified end of the element. |
|
UserData |
Variant |
Get/Set user defined value stored with the element. |
|
UserDataUnits |
mfUnitType |
Get/Set the units of the user defined value stored with the element. |
*Denotes a property that takes a parameter specifying an end of the element.
|
Method |
Returns |
Description |
|
GlobalToLocal |
Variant |
Transforms a vector of values from global to local element coordinates. |
|
Loads |
NodeLoadList |
Returns the loads applied to the element by specified load cases. |
|
LocalToGlobal |
Variant |
Transforms a vector of values from local element coordinates to global coordinates. |
|
Results |
ElementResult |
Returns the results at the element for a specific analysis and load case. |
|
SetSection |
|
Sets the section type of the element. |
|
Subdivide |
ElementList |
Subdivides the element and returns a list of the elements that form the original element. |
|
ThermalLoads |
ThermalLoadList |
Returns the thermal loads applied to the element by specified load cases. |
|
GetUserData |
Variant |
Returns variant arrays containing the values and units of the specified user data fields. |
|
SetUserData |
Variant |
Sets the values and units of the specified user data fields. |
The Application, Frame, Number, Label and Index properties as well as the Delete method are common to many objects and are described in Chapter 2.
A note on Properties
The properties of an object are most commonly used without any parameters. However, properties may be defined to accept a parameter in much the same way that a method accepts parameters. Unlike methods, these properties can be directly set equal to a value. These types of properties have been used in the Multiframe automation interface to provide a simple means of accessing some properties. A common use is for the properties of an element that pertain to a particular end of the element. These are accessed via a single property of the Element object that accepts a single parameter identifying an end of the element. One such example is the rigid offsets at the end of an element; the offset at the first node can be set using the following code
MyFrame.Elements(1).Offset(1)=Array(1.0,0.0,0.0)
A new element is added to the frame using the AddElement method of the Elements collection. This method accepts up to six parameters that specify either the nodes at each end of the element or the x, y and z coordinates of the ends in the global coordinate system. When adding the element via it’s end coordinates the position of the element will be set using current units of length that are set within the Multiframe application. If a node already exists at one or both of the specified end points, the element will automatically be connected to the existing nodes. If an end point does not exist, a new node will be created at that position. The coordinates of the ends can be specified in three ways; the first uses only the first parameter of the AddElement method and specifies the coordinates as an array of six values. The second method uses two parameters and specifies the coordinates of each end as an array of three values. The final method uses all six parameters and specifies each component of the end coordinates separately. For example, the following demonstrates the different methods for adding an element to a structure by specifying the coordinates at the end of the element.
Dim myEl as Multiframe.Element
’Set units to metres
Call mfApp.Preferences.SetUnit(mfUnitLength, "m")
With myFrame.Elements
‘Add element between (1,3,0) and
(1,8,0)
Set myEl =.AddElement(1,3,0,1,8,0)
‘Add element between (1,8,0) and
(7,9,0)
Set myEl =.AddElement(Array(1,8,0),
Array(7,9,0))
‘Add element between (7,9,0) and
(12,3,0)
Set myEl =.AddElement(Array(7,9,0,12,3,0))
End With
When adding an element between two nodes there are also a number of variations on how the nodes are specified. In this case, the first two parameters can be any combination of variant values representing a node within the model (i.e. the nodes index or the nodes object). This is demonstrated in the following code.
Dim myEl as Multiframe.Element
’Set units to metres
Call mfApp.Preferences.SetUnit(mfUnitLength, "m")
With myFrame.Elements
’Add element between nodes 1 and 4
Set myEl =.AddElement(myFrame.Nodes(1),
myFrame.Nodes(4))
’Add element between nodes 2 and 6
Set myEl =.AddElement(2,6)
End With
A number of elements can be created using the AddElements method of the Elements collection. This method accepts up to six parameters which have the same meaning as the parameters used by the AddElement method. However, each of these parameters may be an array of values for each of the new elements, or a single value that will be applied to each of the new elements.
Dim myElList as New Multiframe.ElementList
Dim xVar,yVar as variant
xVar = Array(0,0,0,-1,1,0,2,1,0)
yVar = Array(5,0,0,4,1,0,7,1,0)
With myFrame.Elements
‘Add element between (1,3,0) and
(1,8,0)
Set myEl =.AddElements(xVar, yVar)
‘Add element between (1,8,0) and
(7,9,0)
Set myEl =.AddElements(Array(1,8,0),
Array(7,9,0))
‘Add element between points (7,9,0) and
(12,3,0)
Set myEl
=.AddElements(Array(7,9,0,12,3,0))
’Add element between nodes 1 & 4, 2
& 3, and 3 & 4
Set myEl =.AddElements(Array(1,2,3), Array(2,3,4))
’Add elements between nodes 1,2,3 and
node 5
Set myEl
=.AddElements(Array(1,2,3),myFrame.Nodes(5))
End With
In Multiframe only a single element can exist between two specific nodes. When adding an element to the structure, Multiframe will test for the existence of an element between the specified nodes and, if such an element exists, a new element will not be created. Instead the existing element will be returned to the user by the AddElement or AddElements methods.
The section type and orientation of an element are referenced via the Section, Orientation, FlipSectionXX, and FlipSectionYY properties of the Element object. The Section property identifies the Section object that represents the section currently allocated to the element. When setting the Section property, the new section can be specified using a Section object or by its name. In this case Multiframe will search the section library to locate a matching section. Additional functionality for setting the section type is provided by the SetSection method described in the next section. The orientation of the section, expressed in the current angle units, is controlled via the Orientation property. For sections that are not double symmetric, the orientation method is complemented by the FlipSectionXX, and FlipSectionYY properties that provide a means of correctly positioning the section in relation to the element. When these properties are set true, the orientation of the section will be flipped about the specified axis. A simple example setting the section type and orientation of an element is shown below.
Dim myEl as Multiframe.Element
Dim s as string
’Get reference to element 12
Set myEl = myFrame.Elements(12)
’Set section type using two different methods
myEl.Section = mfApp.SectionsLibrary.Groups(1).Sections(3)
myEl.Section = “610UB101”
’Set section orientation
myEl.Orientation = 45.0
myEl.FlipSectionXX = true
myEl.FlipSectionYY = false
’Notify user of elements section type
s = "Element: "+Str(myEl.Index)+” has section type
”+myEl.Section.Name
MsgBox s, vbOKOnly, "Multiframe"
The Type property of the Element object in an enumerated value of type mfElementType. It controls the type of the element that may be set as standard (mfEltypeStandard), tension only (mfEltypeTensionOnly), or compression only (mfEltypeCompressionOnly).
Dim myEl as Multiframe.Element
’Set element at tension only
myFrame.Elements(6).Type = mfEltypeTensionOnly
’Set element at compression only
myFrame.Elements(8).Type = mfEltypeCompressionOnly
The length and slope of an element can be determined from the read-only properties Length, Slope, SlopeXY, SlopeZX, and SlopeZY. The Length property returns the length of the member in the current length units. Note the length of the member is measured between end points defined by the end offsets and is NOT the distance between the nodes defining the element. The four methods for returning the slope of the member return a value in terms of the current angular units set within Multiframe. The Slope method returns the slope of the member in the X-Y plane and corresponds the slope of the elements displayed in the user interface. The other three slope methods return the slope of the element in a specific plane. The SlopeXY returns the slope of the member in the XY plane that is measured from the X to the Y-axes. Similar the SlopeZX and SlopeZY properties return the slope of the element in the ZX and ZY plane respectively, with the angle measured from the Z axis.
Dim myEl as Multiframe.Element
Dim s as string
’Get reference to element 10
Set myEl = myFrame.Elements(10)
’Notify user of elements slope in XY plane
s = "Slope of Element in XY plane is: "+Str(myEl.SlopeXY)
MsgBox s, vbOKOnly, "Element "+Str(myEl.Index)
’Notify user of elements slope in ZX plane
s = "Slope of Element in ZX plane is: "+Str(myEl.SlopeZX)
MsgBox s, vbOKOnly, "Element "+Str(myEl.Index)
Four properties of the Element object are flags used to control the analysis of the element. The UseDynamicSelfWeight and UseStaticSelfWeight properties are boolean properties controlling the inclusion of an elements mass in an analysis. When UseStaticSelfWeight is set equal to true, the elements self-weight will be accounted for in any self-weight load cases. Similarly, when the UseDynamicSelfWeight property is set true, the elements mass will be considered when performing a modal or time history analysis. The UseShearAreaY and UseShearAreaZ properties control whether or not an elements shear deformation, about a particular axis, is to be accounted for in an analysis. When set true, these properties indicate that an elements shear stiffness will be considered in a static analysis of the structural model.
The moment releases at the end of an element are controlled using the Releases property or the Element object. This property takes a single parameter that specifies an end of the member and returns an array of six boolean values representing the release of the end action in the direction of each degree of freedom. When a value in this array is set true, a release is applied to the corresponding degree of freedom. As Multiframe only supports the release of end moments, only the 3rd, 4th and 6th elements of this array are significant. An example on using end releases follows.
Dim myEl as Multiframe.Element
’Get reference to element 9
Set myEl = myFrame.Elements(9)
’Set pinned ends at both ends of element
myEl.Releases(1)=Array(false,false,false,true.true,false)
myEl.Releases(2)=Array(false,false,false,true.true,false)
The rigid end offsets at the end of a member are encapsulated by Offset property of the Element object. This property also takes a single parameter that specifies an end of the member and returns an array of three values representing the offsets in each direction of the axis system. The axis system in which the offset is applied is specified by the OffsetsLocal property of the Element object. When this property is equal to true, the offsets will be measured in the elements local coordinate system. Otherwise the offsets are computed in the global coordinate system. Each component of the offsets is measured in the current units of length set within Multiframe.
Dim myEl as Multiframe.Element
With myFrame
’Apply offsets to both ends element 2
’Offsets applied 1 unit along length of
member
.Elements(2).Offset(1) = Array(1.0,0,0) ‘start offset
.Elements(2).Offset(2) =
Array(-1.0,0,0) ‘end offset
.Elements(2).OffsetsLocal = true
’Apply offsets to start element 3
’Offset applied 1 unit in both global x
and y directions
.Elements(3).Offset(1) =
Array(1.0,1.0,0) ‘start offset
.Elements(3).OffsetsLocal = false
End With
The node at an end of an element is referenced by the Node property of the Element object. This property takes a single parameter identifying an end of the element. This property returns the Node object corresponding to the node, however a number of alternative values can be used to set this property to a new value. In fact, this property can be set using any variant value that can be interpreted as a node. This includes a Node object, a nodes index within the frame or even it position. To complement the Node property, the Nodes property returns a NodeList object containing all the nodes that define the element.
Dim myEl as Multiframe.Element
Dim myNode1, mynode2 as Multiframe.Node
’Get reference to element 12
Set myEl = myFrame.Elements(12)
’Get reference to nodes at each end of member
Set myNode1 = myEl.Node(1) ‘Node at
start of element
Set myNode2 = myEl.Node(2) ‘Node at end
of element
’Move end of element lie between nodes 4 and 5
myEl.Node(1) = 4
myEl.Node(2) = 5
’Move node at element end to position (1.5,2.0,0.0)
myEl.Node(1) = Array(1.5,2.0,0.0)
Note when specifying a new end node by its coordinates,
Multiframe will search for an existing node and connect the element to that
node. If a node does not exist at the specified location, a new node will
automatically be created.
The position of an elements end can be determined using the X, Y and Z properties of the Element object which each return a single component of the ends position in global coordinates. The XYZ property provides a faster method of accessing all three components of an end position and returns the coordinates as an array of three values. As with the Node property, each of the methods takes a single parameter identifying an end of the element.
The UserData and UserDataUnits properties enable values other than those defined within Multiframe to be stored with each element. These properties take a single parameter identifying separate values to be stored with the element thus allowing any number of values to be stored with each Element. Furthermore, each value is stored as a variant data type so that strings, numbers or even arrays may be stored with each user data entry. To provide compatability of the user data with the handling of units within Multiframe the type of units associated with each user data entry may be set using the UserDataUnits property. By default each user data value is assumed to be dimensionless. A simple example demonstrating these properties if shown below
Dim myElement as Multiframe.Element
’Get reference to Element
Set myElement = myFrame.Elements(21)
’Store user data values
myElement.UserData(1) = 12.5 ‘ number
myElement.UserData(2) = “ABC” ‘ string
myElement.UserData(3) = 6.0 ‘ Length
value
myElement.UserDataUnits(3) = mfUnitsLength
msgbox “User Data 1 = ”+ myElement.UserData(1)
msgbox “User Data 2 = ”+ myElement.UserData(2)
msgbox “User Data 3 = ”+ myElement.UserData(3)
Note units conversions will only be applied to user data values represented as numbers.
Finally, the Member property returns the Member object corresponding to the design member of which the element is a part.
The SetSection method of the Element object is used to specify the section type of an element. This method takes up to two parameters that specify the section and optionally the group in which it is contained. The section can be identified in a number of ways; the first is simply by the index of the section and the group in which it is contained. In this case the group can be specified by its index within the sections library, its name or by passing a SectionGroup object. The second method of setting the section is to use it’s name. In this case no group is required and Multiframe will search the entire sections library to locate the sections. The final way of setting the section type is to pass a Section object. Some typical uses of this method are shown in the following code.
Dim myEl As Multiframe.Element
Dim mySection as Multiframe.Section
’Get reference to element 5
Set myEl = myFrame.Elements(5)
'Set section to the fourth section in the second group
Call myEl.SetSection(4,2)
'Set section to sixth section in the group named UB
Call myEl.SetSection(6,”UB”)
'Set section to section named 610UB101
Call myEl.SetSection(“610UB101”)
'Set section to fifth section in fourth group using section object.
Set mySection = mfApp.SectionsLibrary.groups(4).Sections(5)
Call myEl.SetSection(mySection)
As the name suggests, the Subdivide method can be used to split an element into a number of smaller elements. The method takes a single a single parameter that specifies the proportions into which the element will be split. This parameter can be used in two ways; if a single integer value is passed the element will be split into the specified number of elements of equal length. Alternatively, the element may be split into arbitrary size elements by passing an array containing the relative size of each of the subdivided elements. For example;
Dim myEllist As Multiframe.ElementList
’Split element 5 into 4 equal size elements
Set myEllist = myFrame.Elements(5).Subdivide(4)
’Split element
3 into 3 elements
’End quarters of the element will be made into separate elements.
Set myEllist = myFrame.Elements(3).Subdivide(Array(1,2,1))
The Subdivide method returns an ElementList object containing the elements into which the original element was split.
A list of loads applied to an element can be obtained using the Loads and ThermalLoads methods of the Element object. These methods take a single parameter identifying the load cases that are to be considered when compiling the list of loads. This parameter is optional, and, if omitted, this method will return all the loads applied to the element as part of any load case within the frame. The Loads and ThermalLoads methods return the list of loads as ElementLoadList or ThermalLoadList objects respectively. The flexibility of these methods is demonstrated below
Dim myEl As Multiframe.Element
Dim myLoadList As New Multiframe.ElementLoadList
Dim myThermLoadList As New Multiframe.ThermalLoadList
'Get reference to element 5
Set myEl = myFrame.Elements(5)
'Get all loads applied to element 5 in load case 1
Set myLoadList = myEl.Loads(1)
Add to list the loads applied in the load case named “Live Loads”
myLoadlist.Add myEl.Loads(“Live Loads”)
'Get all thermal loads applied to element 5 in load case 3
Set myThermLoadList = myNode.PreDisps(myFrame.LoadCases(3))
'Get all loads applied to element 5 in load cases 1 to 3 and 5
Set myLoadList = myNode.Loads("1-3,5")
'Get all loads applied to element 5 (all load cases)
Set myLoadList = myNode.Loads(myFrame.LoadCases)
The Results method of the Element object provides a means of directly accessing the results at a element from a particular analysis, without navigating through the hierarchy of the Results object. This method takes three parameters; the first is a variant parameter identifying the load case for which the results are required, the second identifies the type of analysis. The third parameter is currently redundant and has been included for future expansion of the automation interface. The Results method returns an ElementResult object that encapsulates access to the elements actions and displacements. This object is described in detail in Chapter 7.
The Element object also provides two methods for transforming an array of values between global and local coordinates. These methods can transform arrays containing either 6 or 12 values. The GlobalToLocal method, as the name suggests, transforms values from the global coordinate system to the elements local coordinates as defined by the its orientation. Conversely, the LocalToGlobal method transforms values expressed in the elements local coordinates back to global coordinates. A typical application of transforming values between coordinate systems is in transforming the displacements (expressed in global coordinates) at a node to values expressed in terms of an elements local coordinate system.
Dim myEl As Multiframe.Element
Dim r As Variant
’Get reference to element 1
Set myEl = myFrame.Elements(1)
’Get vector of nodal displacements wrt global axes
r = myEl.Node(1).Results(1, mfAnalysisStatic).Disps
’Tranform reactions to local element axes
r = myEl.GlobalToLocal(r)