Post: Graphic

Model ElementPost_Graphic defines a graphic element that can be used for visualization and also for 3D rigid-rigid body contact.

Description

The following types of graphics entities are supported:

3D Geometry 2D Geometry 1D Geometry Other
Box (Defined from corner)

Box (Defined from center)

Cylinder

Ellipsoid

Frustum

Sphere

SPDP

TriaMesh

Parasolid

DeformSurface

Plane

ParamSurface

Outline

Arc (Defined by radius)

Arc (Defined by reference marker)

Circle (Defined by radius)

Circle (Defined by reference marker)

DeformCurve

LineMesh

Outline

ParamCurve

Point

UserGra

BoxDefinedFromCorner

<Post_Graphic 
    id                 = "integer"       
    type               = "BoxDefinedFromCorner" 
    corner_marker_id   = "integer"       
    length_x           = "real" 
    length_y           = "real"       
    length_z           = "real" 
    is_material_inside = {"TRUE" | "FALSE"} 
    refinement_level   = "integer"
 [[  
    label              = "string" 
    color              = "integer:integer:integer"
 ]]  
/>

BoxDefinedFromCenter

<Post_Graphic
    id                 = "integer"
    type               = "BoxDefinedFromCenter"
    center_marker_id   = "integer"
    length_x           = "real"
    length_y           = "real"
    length_z           = "real"
    is_material_inside = {"TRUE"| "FALSE"}        
    refinement_level   = "integer"
 [[        
    label              = "string" 
    color              = "integer:integer:integer"
 ]]  
/>

Cylinder

<Post_Graphic
    id                 = "integer"
    type               = "Cylinder"
    center_marker_id   = "integer"
    radius             = "real"
    length             = "real"
    refinement_level   = "integer"
    ends_type          = {"OPEN"|"CLOSED"|"TOP_ONLY"|"BOTTOM_ONLY"}
    is_material_inside = {"TRUE"|"FALSE"}
[[  
    label              = "string"
    color              = "integer:integer:integer"  
 ]]
/>

Frustrum

<Post_Graphic
    id                 = "integer"        
    type               = "Frustum"         
    center_marker_id   = "integer"
    top_radius         = "real"
    bottom_radius      = "real"
    length             = "real"
    refinement_level   = "integer"
    ends_type          = { "OPEN" | "CLOSED" | "TOP_ONLY" | "BOTTOM_ONLY" }         
    is_material_inside = {"TRUE" | "FALSE"} 
 [[ 
    label              = "string"        
    color              = "integer:integer:integer" 
 ]] 
/>

Ellipsoid

<Post_Graphic
    id                 = "integer"  
    type               = "Ellipsoid"  
    center_marker_id   = "integer"  
    x_scale            = "real"  
    y_scale            = "real"  
    z_scale            = "real"  
    refinement_level   = "integer"  
    is_material_inside = {"TRUE" | "FALSE"}  
 [[   
    label              = "string"  
    color              = "integer:integer:integer"   
 ]]  
/>

Sphere

<Post_Graphic  
    id                 = "integer"  
    type               = "SPHERE"  
    center_marker_id   = "integer"  
    radius             = "real"  
    refinement_level   = "integer"  
    is_material_inside = {"TRUE" | "FALSE"} 
[[   
    label              = "string"  
    color              = "integer:integer:integer"  
]]  
/>

Plane

<Post_Graphic  
    id                 = "integer" 
    type               = "Plane"  
    ref_marker_id      = "integer"  
    xmin               = "real"  
    xmax               = "real"  
    ymin               = "real"  
    ymax               = "integer"  
    refinement_level   = "integer" 
 [[   
    label              = "string"  
    color              = "integer:integer:integer"   
 ]]  
/>

CircleFromRM

<Post_Graphic  
    id                = "integer"  
    type              = "CircleFromRM"  
    center_marker_id  = "integer"  
    nseg              = "integer"  
    r_marker_id       = "integer" 
 [[   
    label             = "string"  
    color             = "integer:integer:integer"   
 ]]  
/>

CircleFromRadius

<Post_Graphic  
    id                = "integer"  
    type              = "CircleFromRadius"  
    center_marker_id  = "integer"  
    radius            = "real"  
    nseg              = "integer"  
 [[   
    label             = "string"  
    color             = "integer:integer:integer"   
 ]]  
/>

ArcFromRm

<Post_Graphic  
    id                = "integer"  
    type              = "ArcFromRM"  
    center_marker_id  = "integer"  
    rangle            = "real"  
    nseg              = "integer"  
    r_marker_id       = "integer" 
 [[   
    label             = "string"  
    color             = "integer:integer:integer"   
 ]]  
/>

ArcFromRadius

<Post_Graphic  
    id                = "integer"  
    type              = "ArcFromRadius"  
    point_marker_i    = "integer"  
    radius            = "real"   
    rangle            = "real"  
    nseg              = "integer"  
 [[   
    label             = "string"  
    color             = "integer:integer:integer"   
 ]]  
/>

Point

<Post_Graphic  
    id                = "integer"  
    type              = "Point"  
    ref_marker_id     = "integer" 
 [[   
    label             = "string"  
    color             = "integer:integer:integer"   
 ]]  
/>

TriaMesh

<Post_Graphic  
    id                 = "integer"  
    type               = "TriaMesh"  
    ref_marker_id      = "integer"  
    num_triangle       = "integer"
    num_point          = "integer"    
    is_material_inside = {"TRUE" | "FALSE"}
 [[     
    label              = "string"
    color              = "integer:integer:integer"        
 ]] >

<!--Node position
      real  real  real  real  real  real 
      ...   ...   ...   ...   ...   ...
      real  real  real  real  real  real
<!-- Tria Connectivity
      integer  integer  ...  integer
      ...   ...   ...   ...   ...
      integer  integer  ...  integer
</Post_Graphic>

LineMesh

<Post_Graphic  
    id                 = "integer"  
    type               = "LineMesh"  
    ref_marker_id      = "integer"  
    num_line           = "integer"  
 [[   
    label              = "string"  
    color              = "integer:integer:integer"  
 ]] >  
!--Vertex data  
      real real real real real real   
      ... ... ... ... ... ...   
      real real real real real real 
</Post_Graphic>

SPDP

<Post_Graphic  
    id                 = "integer"  
    type               = "SPDP"  
    i_marker_id        = "integer"  
    j_marker_id        = "integer"  
    da                 = "real"  
    db                 = "real"  
    dc                 = "real"  
    la                 = "real"  
    lb                 = "real"  
    lc                 = "real"  
    ld                 = "real"  
    ncoil              = "integer" 
 [[   
    label              = "string"  
    color              = "integer:integer:integer"   
 ]]  
/>

Outline

<Post_Graphic  
    id                 = "integer"  
    type               = "Outline"  
    num_marker_id      = "integer"  
    marker_id          = "integer:integer:...:integer"  
 [[   
    label              = "string"  
    color              = "integer:integer:integer"   
 ]]  
/>

ParamCurve

<Post_Graphic  
    id                 = "integer"  
    type               = "ParamCurve"  
    curve_id           = "integer"  
    ref_marker_id      = "integer:integer:...:integer"  
    nseg               = "integer"  
 [[   
    label              = "string"  
    color              = "integer:integer:integer"   
 ]]  
/>

ParamSurface

<Post_Graphic  
    id                 = "integer"  
    type               = "ParamSurface"  
    surface_id         = "integer"  
    ref_marker_id      = "integer:integer:...:integer"  
    nseg_u             = "integer"  
    nseg_v             = "integer"  
 [[   
    label              = "string"  
    color              = "integer:integer:integer"   
 ]]  
/>

Deform Curve

<Post_Graphic  
    id                 = "integer"  
    type               = "DeformCurve"  
    curve_id           = "integer"  
    nseg               = "integer"  
 [[   
    label              = "string"  
    color              = "integer:integer:integer"   
 ]]  
/> 

Deform Surface

<Post_Graphic 
    id                 = "integer"  
    type               = "DeformSurface"  
    surface_id         = "integer"  
    nseg_u             = "integer"  
    nseg_v             = "integer"  
 [[   
    label              = "string"  
    color              = "integer:integer:integer"   
 ]]  
/> 

UserGra

<Post_Graphic  
    id                  = "integer"  
    type                = "UserGra"  
    ref_marker_id       = "integer"  
    grasub_increment    = "integer"  
    usrsub_param_string = "USER([par1, ..., parn])"  
    usrsub_fnc_name     = "string" 
{ 
   [usrsub_dll_name     = "string" ] 
   | 
  [
    script_name         = "string"  
    interpreter         = "PYTHON" | "MATLAB" 
  ]  
} 
 [[  
    label               = "string"  
    color               = "integer:integer:integer"   
 ]]  
/> 

Parasolid

<Post_Graphic  
    id                  = "integer"  
    type                = "Parasolid"  
    graphic_file        = "string"  
    graphic_component   = "string [, string, ..., string]"  
    refinement_level    = "integer"  
    ref_marker_id       = "integer" 
/> 

Attributes

id
Element identification number (integer>0). This number is unique among all the Post_Graphic elements in the model.
label
The name of the Post_Graphic element.
color
The color of the graphic for H3D animation. Specified as RGB (Red : Green : Blue).
type
Defines the type of graphic entity. Supported graphic types are:
  • BoxDefinedFromCorner
  • BoxDefinedFromCenter
  • Cylinder
  • Frustum
  • Ellipsoid
  • Sphere
  • Plane
  • CircleFromRM
  • CircleFromRadius
  • ArcFromRM
  • ArcFromRadius
  • Point
  • TriaMesh
  • SPDP
  • Outline
  • ParamCurve
  • ParamSurface
  • DeformCurve
  • DeformSurface
  • UserGra
  • ParaSolid
corner_marker_id
Specifies the ID of a marker in the model. The marker specified is used as the coordinate system for specifying the geometric corner of the BoxDefinedFromCorner graphic type.
ref_marker_id
Specifies the ID of a marker in the model. The marker specified is used as the coordinate system for specifying geometry data. The role of this marker depends on the entity type as described below.
Plane
The ref_marker_id defines a point on the plane. The z-axis of the marker defines the normal to the plane.
Point
The origin of the ref_marker_id defines the location of this graphic element.
Triamesh
The ref_marker_id defines the coordinate system with respect to which all the vertex coordinates are defined.
Parasolid
Defines the coordinate system with respect to which the Parasolid graphic is located.
LineMesh
The ref_marker_id defines the coordinate system with respect to which all the vertex coordinates are defined.
Param_Curve
The ref_marker_id defines the coordinate system with respect to which the curve points are defined.
Param_Surface
The ref_marker_id defines the coordinate system with respect to which the surface points are defined.
UserGra
Defines the coordinate system with respect to which the user defined graphic's point data is defined.
center_marker_id
Specifies the ID of a marker in the model. The marker specified is used as the coordinate system for specifying the geometry. The role of this marker depends on the entity type as described below.
BoxDefinedFromCenter
The origin of the center_marker_id defines the geometric center of the box.
Cylinder
The center_marker_id defines the center of the bottom circular face of the cylinder. The z-axis of this marker defines the axis of the cylinder.
Frustum
The center_marker_id defines the center of the bottom circular face of the frustum. The z-axis of this marker defines the axis of the frustum.
Ellipsoid
The center_marker_id defines the geometric center of the ellipsoid. The x-, y-, and z-axes of this marker define the semi-major axes of the ellipsoid.
ArcFromRM
The center_marker_id defines the center of the arc. The z-axis of this marker defines the normal to the arc.
ArcFromRadius
The center_marker_id defines the center of the arc. The z-axis of this marker defines the normal to the arc.
CircleFromRM
The center_marker_id defines the center of the arc. The z-axis of this marker defines the normal to the circle.
CircleFromRadius
The center_marker_id defines the center of the arc. The z-axis of this marker defines the normal to the circle.
radius
Defines the radius of a Cylinder, Sphere or Arc graphic type.
top_radius
Defines the radius of the top circle of the Cylinder or Frustum graphic type.
bottom_radius
Defines the radius of the bottom circle of the Cylinder or Frustum graphic type.
length
Defines the length of the Cylinder or Frustum graphic type.
length_x, length_y, length_z
Defines the x, y and z dimensions of BoxDefinedFromCorner or BoxDefinedFromCenter graphic type.
ends_type
Specifies whether the ends of the Cylinder or Frustum are open or closed. Select from OPEN, CLOSED, TOP_ONLY, and BOTTOM_ONLY. See Comment number 3 for more details.
refinement_level
Defines the mesh density of BoxDefinedFromCenter, BoxDefinedFromCorner, Ellipsoid, Sphere, Cylinder, Frustum, Plane, TriaMesh and Parasolid graphic elements.
Controlling the refinement_level is useful when using the graphic for 3D rigid body contact. A finer mesh will typically yield smoother contact forces than a coarser mesh for the same graphic. It should be noted, however, that increasing the mesh density by a large amount can degrade the solver and/or post processor's performance. A large value for refinement_level is not recommended unless your contact modeling demands it.
is_material_inside
Specifies if the graphic has material inside or outside. is_material_inside is a Boolean flag (TRUE/FALSE).
TRUE
The geometry is solid. In other words, it is filled with material and its exterior is devoid of material. Consequently, the surface normals of the geometry point outward.
FALSE
Indicates the converse: The exterior of the geometry is filled with material and the interior is devoid of material. In this case, the surface normals of the geometry point inward.
This flag is useful for reversing the surface normals of a geometry for contact simulations.
x_scale
Specifies the diameter of the Ellipsoid graphic along the x-axis.
y_scale
Specifies the diameter of the Ellipsoid graphic along the y-axis.
z_scale
Specifies the diameter of the Ellipsoid graphic along the z-axis.
xmin, xmax, ymin, ymax
Define the spatial extent of a Plane graphic entity. These values are defined in the coordinate system of the ref_marker_id.
nseg
Defines the number of line segments to be used to approximate the circular edges in a CircleFromRadius, CircleFromRM, ArcFromRadius or ArcFromRM. This parameter is also used to defined the number of line segments to represent the curve graphic defined in a ParamCurve or DeformCurve entity.
r_marker_id
Specifies the ID of a marker in the model. This marker is used to compute the radius of the Arc or Circle specified in ArcFromRM or CircleFromRM.
point_marker_id
Specifies the ID of the marker located at the center point of the arc specified in ArcFromRadius.
num_triangle
Defines the number of triangles contained in a Triamesh entity.
num_line
Defines the number of lines contained in a Linemesh entity. A line is defined by specifying the locations (x, y and z) of two vertices. All vertex locations are defined in the coordinate system specified by the ref_marker_id.
num_marker_id
Number of markers whose origins lie on the polyline.
rangle
Defines the angle subtended by an arc. The arc could be of type ArcFromRadius or ArcFromRM.
i_marker_id
Specifies the ID of a marker in the model. This marker serves as one connection point for the SPDP graphic.
j_marker_id
Specifies the ID of a marker in the model. This marker serves as the second connection point for the SPDP graphic element.
Da
Defines the diameter of the spring in an SPDP graphic element.
Db, Dc
Define the diameter of the damper at the I marker and at the J marker in a spring-damper.
La
Defines the distance between the I marker and the end of the damper to which it is closest.
Lb
Defines the distance between the J marker and the end of the damper to which it is closest.
Lc
Defines the height of the damper at i_marker_id.
Ld
Defines the height of the damper at j_marker_id.
ncoil
Defines the number of coils in the spring of a spring-damper graphic.
curve_id
Specifies the ID of a parametric or deformable curve entity in the model which will be used to generate the graphic.
For the ParamCurve graphic type, curve_id must point to the ID of a Reference_ParamCurve entity in the model.
For the DeformCurve graphic type, curve_id must point to the ID of a Reference_DeformCurve entity in the model.
surface_id
Specifies the ID of a parametric or deformable surface entity in the model which will be used to generate the graphic.
For the ParamSurface graphic type, surface_id must point to the ID of a Reference_ParamSurface entity in the model.
For the DeformSurface graphic type, surface_id must point to the ID of a Reference_DeformSurface entity in the model.
nseg_u
Specifies the number of segments along the u coordinate of the parametric or deformable surface graphic.
nseg_v
Specifies the number of segments along the v coordinate of the parametric or deformable surface graphic.
nseg
Specifies the number of segments along the parametric or deformable curve graphic.
graphic_file
Specifies the location and name of the Parasolid file.
graphic_component
Specifies a comma separated list of the names of the components in the Parasolid graphic file that are to be considered for the rigid body contact. The components that are not specified here will not be considered during the contact simulation.
grasub_increment
Specifies the increment in which the GRASUB will be called. The default is 4.
usrsub_dll_name
Specifies the path and name of the shared library containing the user subroutine. MotionSolve uses this information to load the user subroutine in the shared library at run time.
usrsub_param_string
Specifies a list of parameters that are passed from the data file to the user-defined subroutine. Use this keyword only when type = USERSUB is selected. This attribute is common to all types of user subroutines/scripts.
usrsub_fnc_name
Specifies an alternative name for the user subroutine GRASUB.
script_name
Specifies the path and name of the user-written script that contains the routine specified by usrsub_fnc_name.
interpreter
Specifies the interpreted language that the user script is written in. Valid choices are MATLAB or PYTHON.

Example

This example illustrates how an ellipsoid graphic may be created using Post_Graphic. Assume an ellipsoid with semi major axes, a = 10, b = 7, c = 5 is to be defined as shown in the image below. The MotionSolve XML input is:

<Post_Graphic  
    id                 = "90000"  
    type               = "Ellipsoid"  
    center_marker_id   = "90000000"  
    x_scale            = "10"  
    y_scale            = "7"  
    z_scale            = "5"  
    refinement_level   = "3"  
    is_material_inside = "TRUE" 
/>


Figure 1. An ellipsoid of dimension (10, 7, 5)

The next example illustrates how a Parasolid geometry is represented in MotionSolve. The input CAD geometry for this example is shown below in Parasolid format along with the corresponding Post_Graphic model statement.

<Post_Graphic  
    id                  = "900000"  
    type                = "Parasolid"  
    graphic_file        = "../gears .x_t"  
    graphic_component   = "Gear1 Gear2"  
    refinement_level    = "1"  
    ref_marker_id       = "90000000" 
/>


Figure 2. Parasolid graphic representing two bevel gears

Comments

  1. Not all graphic types are supported by the Force_Contact modeling element. The graphic types that are supported are:
    • BoxDefinedFromCorner
    • BoxDefinedFromCenter
    • Cylinder
    • Frustum
    • Ellipsoid
    • Sphere
    • Plane
    • TriaMesh
    • UserGra
    • Parasolid

      The remaining graphic types are used for visualization only.

  2. The BoxDefinedFromCenter and BoxDefinedFromCorner graphic types are illustrated in the figure below.


    Figure 3. BoxDefinedFromCenter graphic type


    Figure 4. BoxDefinedFromCorner graphic type

    Both the BoxDefinedFromCenter and BoxDefinedFromCorner graphics are defined by their x, y, z lengths and a marker at the center or the corner, respectively.

  3. The Cylinder and Frustum graphic types are illustrated in the figure below.


    Figure 5. Cylinder graphic type


    Figure 6. Frustum graphic type

    The Cylinder and Frustum graphics are defined by the radius (top and bottom in case of Frustum), length and the marker at the center of the geometry.

    The TOP end of these graphics is the end that lies toward the negative Z axis, whereas the BOTTOM end is the one that lies toward the positive Z axis. These graphics may be defined with both, either TOP or BOTTOM, or neither ends capped. This is determined by the attribute ends_type:
    • ends_type = "OPEN" implies that neither ends of the Cylinder or Frustum is closed
    • ends_type = "CLOSED" implies that both ends of the Cylinder or Frustum is closed
    • ends_type = "TOP_ONLY" implies that only the TOP end of the Cylinder or Frustum is open
    • ends_type = "BOTTOM_ONLY" implies that only the BOTTOM end of the Cylinder or Frustum is open
      Note: If you would like to use the Cylinder or Frustum graphic in your mesh based contact model, make sure that ends_type is set to CLOSED so that the Cylinder or Frustum graphic is closed. Closed geometry is a requirement for the mesh based contact in MotionSolve. For more details, see Best Practices for Modeling 3D Contact Models in MotionSolve in the MotionSolve User's Guide.
    • The Ellipsoid and Sphere graphic types are illustrated in the figure below.


      Figure 7. Ellipsoid graphic type


      Figure 8. Sphere graphic type

      The Ellipsoid and Sphere graphic type are defined by the radii (x, y and z for Ellipsoid and a single radius for the Sphere) and the marker located at the center of the geometry.

  4. The Plane and SPDP graphic types are illustrated in the figure below.


    Figure 9. Plane graphic type


    Figure 10. SPDP graphic type

    The Plane graphic type is defined by the spatial extent (xmin, xmax, ymin, ymax) and a marker. This marker is positioned at the center of the plane, and the Z axis of this marker determines the normal to the plane. The spatial lengths are defined in the coordinate system of the ref_marker_id(shown in blue above).

    The SPDP graphic type is defined by the two attachment markers for the I and J body, the number of coils in the spring and the diameter of the coil.

  5. The CircleFromRM and CircleFromRadius graphic types are illustrated in the figure below.


    Figure 11. CircleFromRM graphic type


    Figure 12. CircleFromRadius graphic type

    The CircleFromRM graphic type is defined by two markers. The origin of the circle is centered at the origin of the marker specified by center_marker_id; also the Z axis of this marker determines the normal to the plane of the circle. The origin of the r_marker_id is used to determine the radius of the circle as | r cm - r rm | MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2Caerbd9MBZ9 gBHnharuavP1wzZbItLDhis9wBH5garmWu51MyVXgarqqtubsr4rNC HbGeaGqipu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9vqaq pepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=xfr=x b9adbeGabiWadmWabmqabeqabeqaceabbaGcbaWaaqWaaKazaaiaba GabKOCayaalaGcdaWgaaqcKfaGaeaacaqIJbGaaKyBaaqabaqcKbaG aiaaj2caceqIYbGbaSaakmaaBaaajqwaacqaaiaajkhacaqITbaabe aaaKazaaiacaGLhWUaayjcSdaaaa@43D0@ , where r cm MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2Caerbd9MBZ9 gBHnharuavP1wzZbItLDhis9wBH5garmWu51MyVXgarqqtubsr4rNC HbGeaGqipu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9vqaq pepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=xfr=x b9adbeGabiWadmWabmqabeqabeqaceabbaGcbaqcKbaGaiqajkhaga WcaOWaaSbaaKazbaiabaGaaK4yaiaaj2gaaeqaaaaa@39FF@ is the position of the center_marker_id and r rm MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2Caerbd9MBZ9 gBHnharuavP1wzZbItLDhis9wBH5garmWu51MyVXgarqqtubsr4rNC HbGeaGqipu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9vqaq pepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=xfr=x b9adbeGabiWadmWabmqabeqabeqaceabbaGcbaqcKbaGaiqajkhaga WcaOWaaSbaaKazbaiabaGaaKOCaiaaj2gaaeqaaaaa@3A0E@ is the position of the r_marker_id.

    The CircleFromRadius graphic type is defined by a marker and the radius. The origin of the circle is centered at the origin of the marker specified by center_marker_id; also the Z axis of this marker determines the normal to the plane of the circle. The radius is specified by the radius attribute.

    For visualizing both these graphics, the circle is drawn using a number of straight line segments connected together. The attribute nseg defines the number of segments that should be used to draw the circle. A larger value will result in a smoother looking graphic.

  6. The ArcFromRM and ArcFromRadius graphic are illustrated in the figure below.


    Figure 13. ArcFromRM graphic type


    Figure 14. ArcFromRadius graphic type

    The ArcFromRM graphic type is defined by two markers. The origin of the arc is set to the origin of the marker specified by center_marker_id; also the Z axis of this marker determines the normal to the plane of the circle. The origin of the r_marker_id is used to determine the radius of the circle as | r cm - r rm | , where r cm MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2Caerbd9MBZ9 gBHnharuavP1wzZbItLDhis9wBH5garmWu51MyVXgarqqtubsr4rNC HbGeaGqipu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9vqaq pepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=xfr=x b9adbeGabiWadmWabmqabeqabeqaceabbaGcbaGabKOCayaalaWaaS baaSqaaiaajogacaqITbaabeaaaaa@3825@ is the position of the center_marker_id and r rm is the position of the r_marker_id. The arc is drawn starting from the Y axis of the center_marker_id, in a counter clockwise fashion for the included angle, specified by rangle.

    The ArcFromRadius graphic type is defined by a marker and the radius. The origin of the arc is set to the origin of the marker specified by center_marker_id; also the Z axis of this marker determines the normal to the plane of the circle. The radius is specified by the radius attribute. The arc is drawn starting from the Y axis of the center_marker_id,in a counter clockwise fashion for the included angle, specified by rangle.

    For visualizing both these graphics, the arc is drawn using a number of straight line segments connected together. The attribute nseg defines the number of segments that should be used to draw the arc. A larger value will result in a smoother looking graphic.

  7. The LineFromMesh and Point graphic types are illustrated in the figure below.


    Figure 15. LineMesh graphic type


    Figure 16. Point graphic type

    The LineFromMesh graphic type connects a number of vertices with straight lines. The number of lines to be drawn is specified by the num_line attribute. The X, Y and Z positions of the vertices are specified in the order in which the lines are to be drawn. For the above example, the vertices are specified in the following order:

    (1)
    r 1 x r 1 y r 1 z r 1 r 2 x r 2 y r 2 z r 2 r 2 x r 2 y r 2 z r 2 r 3 x r 3 y r 3 z r 3 ... ... r n x r n y r n z r n r 1 x r 1 y r 1 z r 1 MathType@MTEF@5@5@+= feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2Caerbd9MBZ9 gBHnharuavP1wzZbItLDhis9wBH5garmWu51MyVXgarqqtubsr4rNC HbGeaGqipu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9vqaq pepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=xfr=x b9adbeGabeqadmWabmqaceGabeqaceabbaGceaqabeaajaa4faqabe qacaaabaGcdaagaaqcaaEaauaabeqabmaaaeaacaWGYbGcdaWgaaqc baEaaiaaigdacaWG4baabeaaaKaaGhaacaWGYbGcdaWgaaqcbaEaai aaigdacaWG5baabeaaaKaaGhaacaWGYbGcdaWgaaqcbaEaaiaaigda caWG6baabeaaaaaabaGabmOCayaalaWcdaWgaaadbaGaaGymaaqaba aajaa4caGL44paaeaakmaayaaajaa4baqbaeqabeWaaaqaaiaadkha kmaaBaaajea4baGaaGOmaiaadIhaaeqaaaqcaaEaaiaadkhakmaaBa aajea4baGaaGOmaiaadMhaaeqaaaqcaaEaaiaadkhakmaaBaaajea4 baGaaGOmaiaadQhaaeqaaaaaaeaaceWGYbGbaSaalmaaBaaajia4ba GaaGOmaaqabaaajaa4caGL44paaaaabaqbaeqabeGaaaqaaOWaaGba aKaaGhaafaqabeqadaaabaGaamOCaOWaaSbaaKqaGhaacaaIYaGaam iEaaqabaaajaa4baGaamOCaOWaaSbaaKqaGhaacaaIYaGaamyEaaqa baaajaa4baGaamOCaOWaaSbaaKqaGhaacaaIYaGaamOEaaqabaaaaa qaaiqadkhagaWcaSWaaSbaaKGaGhaacaaIYaaabeaaaKaaGlaawIJ= aaqaaOWaaGbaaKaaGhaafaqabeqadaaabaGaamOCaOWaaSbaaKqaGh aacaaIZaGaamiEaaqabaaajaa4baGaamOCaOWaaSbaaKqaGhaacaaI ZaGaamyEaaqabaaajaa4baGaamOCaOWaaSbaaKqaGhaacaaIZaGaam OEaaqabaaaaaqaaiqadkhagaWcaSWaaSbaaKGaGhaacaaIZaaabeaa aKaaGlaawIJ=aaaaaeaafaqabeqacaaabaGaaiOlaiaac6cacaGGUa aabaGaaiOlaiaac6cacaGGUaaaaaqcaaCaaKaaGxaabeqabiaaaeaa kmaayaaajaa4baqbaeqabeWaaaqaaiaadkhakmaaBaaajea4baGaam OBaiaadIhaaeqaaaqcaaEaaiaadkhakmaaBaaajea4baGaamOBaiaa dMhaaeqaaaqcaaEaaiaadkhakmaaBaaajea4baGaamOBaiaadQhaae qaaaaaaeaaceWGYbGbaSaalmaaBaaajia4baGaamOBaaqabaaajaa4 caGL44paaeaakmaayaaajaa4baqbaeqabeWaaaqaaiaadkhakmaaBa aajea4baGaaGymaiaadIhaaeqaaaqcaaEaaiaadkhakmaaBaaajea4 baGaaGymaiaadMhaaeqaaaqcaaEaaiaadkhakmaaBaaajea4baGaaG ymaiaadQhaaeqaaaaaaeaaceWGYbGbaSaalmaaBaaajia4baGaaGym aaqabaaajaa4caGL44paaaaaaaa@B303@

    The order above specifies a line to be drawn between r1 and r2, r2 and r3, and so on.

    The Point graphic type is defined as the point that is specified by the origin of the center_marker_id.

  8. The LineFromMesh and Point graphic types are illustrated in the figure below.


    Figure 17. TriaMesh graphic type


    Figure 18. Outline graphic type

    The TriaMesh graphic is defined as a collection of triangle elements that usually share vertices and edges between them. This type of mesh is commonly used for representing CAD geometry in analysis. The triangles, by themselves are 2D. When connected together, these triangles can represent a 3D surface. The surface may or may not have free edges. Further, there is no requirement that the mesh defines a contiguous solid. In other words, all parts of the mesh need not be connected.

    The surface normal at each triangle is defined as the cross product of the edges such that the normal points outward when the vertices are specified in a counter-clockwise manner. In the figure above, the normal is defined as

    n ^ = ( r 2 - r 1 ) × ( r 3 - r 1 ) .

    The Outline graphic is defined by a list of marker IDs. A poly line is drawn through the origins of each of these markers. The number of markers is specified by the attribute num_marker_id.

  9. The ParamCurve and DeformCurve graphic types are illustrated in the figure below.


    Figure 19. ParamCurve graphic type


    Figure 20. DeformCurve graphic type

    The ParamCurve graphic type is used to represent a curve defined in the model as a Reference_ParamCurve element. The graphic is defined by a number of straight line segments connecting vertices on the curve defined by curve_id.

    The DeformCurve graphic type is used to represent a deformable curve defined in the model as a Reference_DeformCurve element. The graphic is defined by a number of straight line segments connecting vertices on the curve defined by curve_id. Since this graphic represents a deformable curve, the graphic deforms along with the curve as the simulation progresses.

    The attribute nseg defines the number of segments that should be used to draw the curves. A larger value will result in a smoother looking curve. Depending on how the points are defined, the ParamCurve or DeformCurve graphic can be open or closed.

  10. The ParamSurface and DeformSurface graphic types are illustrated in the figure below.


    Figure 21. ParamSurface graphic type


    Figure 22. DeformSurface graphic type

    The ParamSurface graphic type is used to represent a surface defined in the model as a Reference_ParamSurface element. The graphic is defined by a number of straight line segments connecting vertices on the surface defined by surface_id.

    The DeformSurface graphic type is used to represent a deformable surface defined in the model as a Reference_DeformSurface element. The graphic is defined by a number of straight line segments connecting vertices on the surface defined by surface_id. Since this graphic represents a deformable surface, the graphic deforms along with the surface as the simulation progresses.

    The attribute nseg_u and nseg_v defines the number of segments that should be used to draw the curves along the U and V directions of the surface respectively. Larger values will result in a smoother looking surface.

  11. The Parasolid graphic type allows you to use Parasolid geometry as a graphic in MotionSolve. The graphic is defined by the name and location of the Parasolid graphic file and the name(s) of the parts in the Parasolid assembly.

    Specifying your geometry as a Parasolid graphic offers an advantage when using the graphic for contact simulations. Since there is no discretization of the surface into triangles, the surface of the Parasolid graphic is smoother than its meshed counterpart, resulting in smoother contact forces.

    To import Parasolid geometry into your model, you must use Import CAD or FE from the Tools menu in MotionView. Please see tutorial MV-1035 for more information.

    After the simulation is complete, MotionSolve tessellates the Parasolid geometry and writes it to the animation H3D file for visualization.

  12. The UserGra graphic type allows you to define your own graphic. This can be done by defining your own subroutine or script. You can create vertices and triangles using the access functions ADD_GRA_NODE, SET_GRA_NODE and ADD_GRA_TRIA provided by MotionSolve. These access functions allow you to create a triangular mesh that can be then used as a graphic in your model. For more information and examples, please refer to the documentation on GRASUB.

    Using a GRASUB is particularly useful when you would like to redraw your graphic as the simulation progresses.

  13. If you want to use CAD geometry (other than Parasolid geometry, for example IGES, STP etc.) for contact modeling, then the native CAD format needs to be converted to Triamesh elements. This can be done in two ways:
    • Import the CAD model into HyperMesh, mesh it, and export the H3D file. Import this H3D file into MotionView and define contact.
    • From within MotionView, select Import CAD or FE from the Tools menu in MotionView. This utility uses HyperMesh to perform the translation. It is intended for those who are not familiar with HyperMesh.
  14. All graphic entities are written to the animation H3D file so the system behavior can be visualized in HyperView.
  15. All primitive 3D graphics (Sphere, Ellipsoid, Cylinder, Frustum, BoxDefinedFromCorner and BoxDefinedFromCenter) are converted to a triangular meshed representation when they are used for contact simulations and also when they are written to the animation H3D file.

    The density of their mesh can be controlled by the parameter refinement_level. A higher value ofrefinement_level increases the mesh density by adding more and more triangles.

    A higher mesh density tends to produce more accurate contact forces, however adding more triangles usually increases the simulation time.

    The following figures show the effect of increasing refinement level on some of the primitive 3D shapes.



    Figure 23. Box with refinement_level = 0


    Figure 24. Box with refinement_level = 1


    Figure 25. Box with refinement_level = 2


    Figure 26. Sphere with refinement_level= 2


    Figure 27. Sphere with refinement_level = 3


    Figure 28. Sphere with refinement_level = 4


    Figure 29. Cylinder with refinement_level = 1


    Figure 30. Cylinder with refinement_level = 2


    Figure 31. Cylinder with refinement_level = 3

    The refinement_level attribute may also be used for a TriaMesh graphic type. Increasing the refinement level by 1 results in each triangle being divided into 4 triangles as illustrated in the figures below. Note: if you wish to use your TriaMesh graphic as is, set this attribute to 0 or do not define it.



    Figure 32. Triamesh with refinement_level = 0


    Figure 33. Triamesh with refinement_level = 1


    Figure 34. Triamesh with refinement_level = 2
    The refinement_level is supported for the following graphic types:
    • BoxDefinedFromCenter
    • BoxDefinedFromCorner
    • Sphere
    • Ellipsoid
    • Cylinder
    • Frustum
    • Plane
    • TriaMesh
    • Parasolid