Solid element with geometry, inertia, and color

**Library:**Simscape / Multibody / Body Elements

The Solid block adds to the attached frame a solid element with geometry, inertia, and color. The solid element can be a simple rigid body or part of a compound rigid body—a group of rigidly connected solids, often separated in space through rigid transformations. Combine Solid and Rigid Transform blocks to model a compound rigid body.

Geometry parameters include shape and size. You can choose from a list of preset
shapes or import a custom shape from an external file in STL or STEP format. By default,
for all but STL-derived shapes, the block automatically computes the mass properties of
the solid from the specified geometry and either mass or mass density. You can change
this setting in the **Inertia** > **Type** block parameter.

A reference frame encodes the position and orientation of the solid. In the default
configuration, the block provides only the reference frame. A frame-creation interface
provides the means to define additional frames based on solid geometry features. You
access this interface by selecting the Create button in the **Frames** expandable area.

You can view the calculated values of the solid mass properties directly in the
block dialog box. Setting the **Inertia** > **Type** parameter to `Calculate from Geometry`

causes
the block to expose a new node, **Derived Values**. Click the
**Update** button provided under this node to calculate the
mass properties and display their values in the fields below the button.

**Derived Values** Display

The block dialog box contains a collapsible visualization pane. This pane provides instant visual feedback on the solid you are modeling. Use it to find and fix any issues with the shape and color of the solid. You can examine the solid from different perspectives by selecting a standard view or by rotating, panning, and zooming the solid.

Select the Update Visualization button to view the latest changes to the solid geometry
in the visualization pane. Select **Apply** or
**OK** to commit your changes to the solid. Closing the block
dialog box without first selecting **Apply** or
**OK** causes the block to discard those changes.

**Solid Visualization Pane**

Right-click the visualization pane to access the visualization context-sensitive
menu. This menu provides additional options so that you can change the background
color, split the visualization pane into multiple tiles, and modify the view
convention from the default **+Z up (XY Top)** setting.

`R`

— Reference frameframe

Local reference frame of the solid. This frame is fixed with respect to the solid geometry. For the frame placement relative to a specific geometry see Shape. Connect this port to a frame entity—port, line, or junction—to resolve the placement of the reference frame in a model. For more information, see Working with Frames.

`Shape`

— Shape parameterization to use`Brick`

(default) | `Cylinder`

| `Sphere`

| `Ellipsoid`

| `Regular Extrusion`

| `General Extrusion`

| `Revolution`

| `From File`

Shape parameterization to use. Select a preset shape such as
`Sphere`

or use the ```
From
File
```

option to import an external STEP or STL geometry.

`Cylinder`

— Cylindrical shape with geometry center coincident with the reference frame origin and symmetry axis coincident with the reference frame z axis.`Sphere`

— Spherical shape with geometry center coincident with the reference frame origin.`Brick`

— Prismatic shape with geometry center coincident with the reference frame origin and prismatic surfaces normal to the reference frame x, y, and z axes.`Ellipsoid`

— Three-dimensional extension of the ellipse with geometry center coincident with the reference frame origin and semi-principal axes coincident with the reference frame x, y, and z axes.`Regular Extrusion`

— Translational sweep of a regular polygon cross section with geometry center coincident with the reference frame origin and extrusion axis coincident with the reference frame z axis.`General Extrusion`

— Translational sweep of a general cross section with geometry center coincident with the [0 0] coordinate on the cross-sectional XY plane and extrusion axis coincident with the reference frame z axis.`Revolution`

— Rotational sweep of a general cross section with geometry center coincident with the [0 0] coordinate on the cross-sectional XZ plane and revolution axis coincident with the reference frame z axis.`From File`

— Imported custom shape with geometry center and orientation as defined in STL or STEP geometry file.

`Cylinder: Radius`

— Radius of the cylinder`1 m`

(default) | scalar with units of lengthDistance between the axis of the cylinder and its surface.

`Cylinder: Length`

— Length of the cylinder`1 m`

(default) | scalar with units of lengthDistance between the opposing ends of the cylinder.

`Sphere: Radius`

— Radius of the sphere`1 m`

(default) | scalar with units of lengthDistance between the center of the sphere and its surface.

`Brick: Dimensions`

— Width, thickness, and height of the brick`[1 1 1] m`

(default) | scalar with units of lengthLengths of the brick sides along the *x*-,
*y*-, and *z*-axes of the solid
reference frame. These lengths give, in no specific order, the width,
thickness, and height of the brick.

`Ellipsoid: Radii`

— Ellipsoid radii along the `[1,1,1] m`

(default) | scalar with units of lengthEllipsoid radii along the *x*, *y*, and
*z* axes of the solid reference frame. The ellipsoid
becomes a sphere if all radii are equal.

`Regular Extrusion: Number of Sides`

— Number of sides of the extrusion cross-section`3`

(default) | scalar with units of lengthNumber of sides of the extrusion cross-section. The cross-section is by definition a regular polygon—one whose sides are of equal length. The number specified must be greater than two.

`Regular Extrusion: Outer Radius`

— Radius of the inscribed circle of the extrusion cross-section`1 m`

(default) | scalar with units of lengthRadius of the circle that fully inscribes the extrusion cross-section. The cross-section is by definition a regular polygon—one whose sides are of equal length.

`Regular Extrusion: Length`

— Sweep length of the extrusion`1 m`

(default) | scalar with units of lengthLength by which to sweep the specified extrusion cross-section. The
extrusion axis is the *z*-axis of the solid reference
frame. The cross-section is swept by equal amounts in the positive and
negative directions.

`General Extrusion: Cross-section`

— Cross-section coordinates specified on the XY plane`[1 1; -1 1; -1 -1; 1 -1]`

(default) | two-column matrix with units of lengthCross-sectional shape specified as an [x,y] coordinate matrix, with each row corresponding to a point on the cross-sectional profile. The coordinates specified must define a closed loop with no self-intersecting segments.

The coordinates must be arranged such that from one point to the next the solid region always lies to the left. The block extrudes the cross-sectional shape specified along the z axis to obtain the extruded solid.

`General Extrusion: Length`

— Sweep length of the extrusion`1 m`

(default) | scalar with units of length

*z*-axis of the solid
reference frame. The cross-section is swept by equal amounts in the
positive and negative directions.

`Revolution: Cross-section`

— Cross-section coordinates specified on the XZ plane`[1 1; 1 -1; 2 -1; 2 1] m`

(default) | two-column matrix with units of lengthCross-sectional shape specified as an [x,z] coordinate matrix, with each row corresponding to a point on the cross-sectional profile. The coordinates specified must define a closed loop with no self-intersecting segments.

The coordinates must be arranged such that from one point to the next the solid region always lies to the left. The block revolves the cross-sectional shape specified about the reference frame z axis to obtain the revolved solid.

`Revolution: Extent of Revolution`

— Selection of a full or partial revolution`Full`

(default) | `Custom`

Type of revolution sweep to use. Use the default setting of
`Full`

to revolve the cross-sectional shape by
the maximum 360 degrees. Select `Custom`

to revolve
the cross-sectional shape by a lesser angle.

`Revolution: Revolution Angle`

— Sweep angle of a partial revolution`180`

(default) | positive scalarAngle of the rotational sweep associated with the revolution.

`From File: File Type`

— Type of geometry file to import`STEP`

(default) | `STL`

Type of geometry file to import. Automatic inertia calculation is
available for `STEP`

files only. You must specify
all inertial properties explicitly for STL files.

`From File: File Name`

— Name of the geometry file to importcustom character vector

Name and extension of the geometry file to import. If the file is not on
the MATLAB path, the file location must be specified. The file location can
be specified as an absolute path, starting from the root directory of the
file system—e.g., `'C:/Users/JDoe/Documents/myShape.STEP'`

.
It can also be specified as a relative path, starting from a folder on the
MATLAB path—e.g., `'Documents/myShape.STEP'`

.

`From File: Units`

— Length units of the numerical data provided in the STL file`m`

(default) | `cm`

| `mm`

| `km`

| `in`

| `ft`

| `yd`

| `mi`

Length units in which to interpret the vertex coordinates provided in the STL geometry file. Changing the units changes the scale of the geometry itself.

`Type`

— Inertia parameterization to use`Calculate from Geometry`

(default) | `Point Mass`

| `Custom`

Inertia parameterization to use. Select ```
Point
Mass
```

to model a concentrated mass with negligible
rotational inertia. Select `Custom`

to model a
distributed mass with the specified moments and products of inertia. The
default setting, `Calculate from Geometry`

, enables
the block to automatically calculate the rotational inertia properties from
the solid geometry and specified mass or mass density.

`Based on`

— Parameter to base inertia calculation on`Density`

(default) | `Mass`

Parameter to use in inertia calculation. The block obtains the inertia
tensor from the solid geometry and the parameter selected. Use
`Density`

if the material properties are known.
Use `Mass`

if the total solid mass if known.

`Density`

— Mass per unit volume of material`1000 kg/m^3`

(default)Mass per unit volume of material. The mass density can take on a positive or negative value. Specify a negative mass density to model the effects of a void or cavity in a solid body.

`Mass`

— Total mass of the solid element`1 kg`

(default) | scalar with units of massTotal mass to attribute to the solid element. This parameter can be positive or negative. Use a negative value to capture the effect of a void or cavity in a compound body (one comprising multiple solids and inertias), being careful to ensure that the mass of the body is on the whole positive.

`Custom: Center of Mass`

— Center-of-mass coordinates`[0 0 0] m`

(default) | three-element vector with units of length[x y z] coordinates of the center of mass relative to the block reference frame. The center of mass coincides with the center of gravity in uniform gravitational fields only.

`Custom: Moments of Inertia`

— Diagonal elements of inertia tensor`[1 1 1] kg*m^2`

(default) | three-element vector with units of mass*length^2Three-element vector with the [I_{xx} I_{yy} I_{zz}]
moments of inertia specified relative to a frame with origin at the
center of mass and axes parallel to the block reference frame. The
moments of inertia are the diagonal elements of the inertia tensor

$$\left(\begin{array}{ccc}{I}_{xx}& & \\ & {I}_{yy}& \\ & & {I}_{zz}\end{array}\right),$$

where:

$${I}_{xx}={\displaystyle \underset{V}{\int}\left({y}^{2}+{z}^{2}\right)\text{\hspace{0.17em}}dm}$$

$${I}_{yy}={\displaystyle \underset{V}{\int}\left({x}^{2}+{z}^{2}\right)\text{\hspace{0.17em}}dm}$$

$${I}_{zz}={\displaystyle \underset{V}{\int}\left({x}^{2}+{y}^{2}\right)\text{\hspace{0.17em}}dm}$$

`Custom: Products of Inertia`

— Off-diagonal elements of inertia tensor`[0 0 0] kg*m^2`

(default) | three-element vector with units of mass*length^2Three-element vector with the [I_{yz} I_{zx} I_{xy}]
products of inertia specified relative to a frame with origin at the
center of mass and axes parallel to the block reference frame. The
products of inertia are the off-diagonal elements of the inertia tensor

$$\left(\begin{array}{ccc}& {I}_{xy}& {I}_{zx}\\ {I}_{xy}& & {I}_{yz}\\ {I}_{zx}& {I}_{yz}& \end{array}\right),$$

where:

$${I}_{yz}=-{\displaystyle \underset{V}{\int}yz\text{\hspace{0.17em}}dm}$$

$${I}_{zx}=-{\displaystyle \underset{V}{\int}zx\text{\hspace{0.17em}}dm}$$

$${I}_{xy}=-{\displaystyle \underset{V}{\int}xy\text{\hspace{0.17em}}dm}$$

`Calculate from Geometry: Derived Values`

— Display of calculated values of mass propertiesbutton

Display of the calculated values of the solid mass properties—mass, center
of mass, moments of inertia, and products of inertia. Click the
**Update** button to calculate and display the mass
properties of the solid. Click this button following any changes to the
block parameters to ensure that the displayed values are still
current.

The center of mass is resolved in the local reference frame of the solid. The moments and products of inertia are each resolved in the inertia frame of resolution—a frame whose axes are parallel to those of the reference frame but whose origin coincides with the solid center of mass.

The option to calculate and display the mass properties is active when
the **Inertia** > **Type** block parameter is set to ```
Calculate from
Geometry
```

.

`Type`

— Graphic to use in the visualization of the solid`From Geometry`

(default) | `Marker`

| `None`

Choice of graphic to use in the visualization of the solid. The graphic is
by default the geometry specified for the solid. Select
`Marker`

to show instead a simple graphic
marker, such as a sphere or cube. Change this parameter to
`None`

to eliminate this solid altogether from
the model visualization.

`Marker: Shape`

— Shape of the marker to assign to the solid`Sphere`

(default) | `Cube`

| `Frame`

Shape of the marker by means of which to visualize the solid. The motion of the marker reflects the motion of the solid itself.

`Marker: Size`

— Width of the marker in pixels`10`

(default) | scalar with units of pixelsWidth of the marker in pixels. This width does not scale with zoom level. Note that the apparent size of the marker depends partly on screen resolution, with higher resolutions packing more pixels per unit length, and therefore producing smaller icons.

`Visual Properties`

— Parameterizations for color and opacity`Simple`

(default) | `Advanced`

Parameterization for specifying visual properties. Select `Simple`

to
specify color and opacity. Select `Advanced`

to
add specular highlights, ambient shadows, and self-illumination effects.

`Simple: Color`

— True color as [R,G,B] vector on 0–1 scale`[0.5 0.5 0.5]`

(default) | three-element vector with values constrained to 0–1RGB color vector with red (R), green (G), and blue (B) color
amounts specified on a 0–1 scale. A color picker provides an
alternative interactive means of specifying a color. If you change
the **Visual Properties** setting to `Advanced`

,
the color specified in this parameter becomes the **Diffuse
Color** vector.

`Simple: Opacity`

— Surface opacity as scalar number on 0–1 scale`1.0`

(default) | scalar with value constrained to 0–1Graphic opacity specified on a scale of 0–1. An opacity
of `0`

corresponds to a completely transparent graphic
and an opacity of `1`

to a completely opaque graphic.

`Advanced: Diffuse Color`

— True color as [R,G,B,A] vector on 0–1 scale`[0.5 0.5 0.5]`

(default) | three- or four-element vector with values constrained to 0–1True color under direct white light specified as an [R,G,B]
or [R,G,B,A] vector on a 0–1 scale. An optional fourth element
specifies the color opacity also on a scale of 0–1. Omitting
the opacity element is equivalent to specifying a value of `1`

.

`Advanced: Specular Color`

— Highlight color as [R,G,B,A] vector on 0–1 scale`[0.5 0.5 0.5 1.0]`

(default) | three- or four-element vector with values constrained to 0–1Color of specular highlights specified as an [R,G,B] or [R,G,B,A]
vector on a 0–1 scale. The optional fourth element specifies
the color opacity. Omitting the opacity element is equivalent to specifying
a value of `1`

.

`Advanced: Ambient Color`

— Shadow color as [R,G,B,A] vector on 0–1 scale`[0.5 0.5 0.5 1.0]`

(default) | three- or four-element vector with values constrained to 0–1Color of shadow areas in diffuse ambient light, specified as
an [R,G,B] or [R,G,B,A] vector on a 0–1 scale. The optional
fourth element specifies the color opacity. Omitting the opacity element
is equivalent to specifying a value of `1`

.

`Advanced: Emissive Color`

— Self-illumination color as [R,G,B,A] vector on 0–1 scale`[0.5 0.5 0.5 1.0]`

(default) | three- or four-element vector with values constrained to 0–1Surface color due to self illumination, specified as an [R,G,B] or [R,G,B,A] vector on
a 0–1 scale. The optional fourth element specifies the color opacity. Omitting the
opacity element is equivalent to specifying a value of `1`

.

`Advanced: Shininess`

— Highlight sharpness as scalar number on 0–128 scale`75`

(default) | scalar with value constrained to 0–128Sharpness of specular light reflections, specified as a scalar number on a 0–128 scale. Increase the shininess value for smaller but sharper highlights. Decrease the value for larger but smoother highlights.

`Show Port R`

— Show the reference frame port for connection to other blockschecked (default) | cleared

Clear the check box to hide the reference frame port in the Solid block. Hiding the reference frame port suppresses the frame visualization in Mechanics Explorer. You must expose the reference frame port if the block has no custom frames.

`New Frame`

— Create a custom frame for connection to other blocksempty (default)

Select the Create button to define a new frame using the
frame-creation interface. Each new frame appears on a row above the
**New Frame** parameter. To edit an existing frame,
select the Edit button . To delete an existing frame, select the
Delete button .

`Frame Name`

— MATLABcustom character vector

Frame identifier specified as a MATLAB string. This string identifies the frame port in the block diagram and in the tree view pane of Mechanics Explorer. Keep the frame name short to ensure it fits in the block icon width.

`Frame Origin`

— Position of the custom frame originSelect the location of the frame origin. Options include:

**At Reference Frame Origin**— Make the new frame origin coincident with the reference frame origin. This is the default option.**At Center of Mass**— Make the new frame origin coincident with the solid center of mass. The reference frame origin is located at the center of mass in symmetrical shapes such as spheres and bricks but not in certain extrusions or revolutions.**Based on Geometric Feature**— Place the new frame origin at the center of the selected geometry feature. Valid geometry features include surfaces, lines, and points. You must select a geometry feature from the visualization pane and then select the**Use Selected Feature**button. The name of the selected geometry feature appears in the field below this option.

`Frame Axes: Primary Axis`

— Axis used to constrain the possible directions of the remaining frame axesSelect the axis of the new frame that you want to set as the primary axis. The primary axis constrains the possible orientations of the remaining two axes. Specify the orientation of the primary axis by selecting from the following options:

**Along Reference Frame Axis**— Align the primary axis with the selected axis of the reference frame.**Along Principal Inertia Axis**— Align the primary axis with the selected principal inertia axis. The principal inertia axes are those about which the products of inertia are zero.**Based on Geometric Feature**— Align the primary axis with the vector associated with the selected geometric feature. Valid geometric features include surfaces and lines.

`Frame Axes: Secondary Axis`

— Axis used to constrain the possible directions of the remaining frame axisSelect the axis of the new frame that you want to set as the secondary axis. The secondary axis is the projection of the selected direction onto the normal plane of the primary axis. Select the direction to project from the following options:

**Along Reference Frame Axis**— Project the selected reference frame axis onto the normal plane of the primary axis. Align the secondary axis with the projection.**Along Principal Inertia Axis**— Project the selected principal inertia axis onto the normal plane of the primary axis. Align the secondary axis with the projection. The principal inertia axes are those about which the products of inertia are zero.**Based on Geometric Feature**— Project the vector associated with the selected geometry feature onto the normal plane of the primary axis. Align the secondary axis with the projection. Valid geometry features include surfaces and lines. You must select a geometry feature from the visualization pane and then select the**Use Selected Feature**button.

Generate C and C++ code using MATLAB® Coder™.

Rigid Transform | Variable Brick Solid | Variable Cylindrical Solid | Variable Spherical Solid

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

Select web siteYou can also select a web site from the following list:

Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.

- América Latina (Español)
- Canada (English)
- United States (English)

- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)

- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)