GiD - The personal pre and post processor

Geometry 

  
GiD_Geometry -v2 ?-no_model? create|delete|get|list|edit|exists point|line|surface|volume <num>|append <data>
To create, delete, get data or list the identifiers of geometric entities:

  • <num>|append: <num> is the entity identifier (integer > 0). You can use the word 'append' to set a new number automatically.
  • <data>: is all the geometric definition data (create) or a selection specification (delete, get or list):


-v2 mean version 2 of this command (deprecated version 1 documentation must be seen in help of old versions of the program).


If -no_model flag is specified then entities are stored in a special container, it doesn't belong to the model


create: to make new geometric entities (the parameters are explained in the get command, the result of get can be used to create)

  • GiD_Geometry -v2 create volume <num>|append volume|contactvolume <layer> {surface1...surfacen} {o1...on} ?<transformation_matrix>?

for contactvolume is necessary to specify the <transformation_matrix> : a vector of 16 reals representing a 4x4 transformation matrix that maps surface1 into surface2

  • GiD_Geometry -v2 create surface <num>|append planarsurface|nurbssurface|coonsurface|meshsurface|contactsurface <layer> <trimmed>|-interpolate {line1...linen} {o1...on} <geometrical_data>

<geometrical data> depends of each entity type (see get command)

-interpolate is only valid for nurbssurface, and then must only provide {line1...linen}, but not  {o1...on}  or <geometrical_data>

and in this case the lines must not be a closed boundary, but a series of near-parallel curves, to create a surface interpolating them.

  • GiD_Geometry -v2 create line <num>|append stline|nurbsline|arcline <layer> <inipoint> <endpoint> <geometrical_data>

Instead the NURBS parameters is possible to create a curve that interpolates a list of points (also tangents at start and end can be specified)

  • GiD_Geometry -v2 create line <num> | append nurbsline <layer> <inipoint> <endpoint> {-interpolate {p1_x p1_y p1_z ... pn_x pn_y pn_z} ?-tangents {t0_x t0_y t0_z} {t1_x t1_y t1_z}?}
  • GiD_Geometry -v2 create line <num>|append stline <layer> <inipoint> <endpoint>
  • GiD_Geometry -v2 create point <num>|append <layer> <point_x> <point_y> <point_z>


delete: to erase model entities

  • GiD_Geometry -v2 delete ?-also_lower_entities? point|line|surface|volume {id_1> ... <id_n>}

To delete the geometric entities with this ids. 

-also_lower_entities to delete also its dependent lower-entities when possible (nod depend on other higher-entities or have applied conditions)

{id_1> ... <id_n>} is an objarray of integers (can use a GiD_Geometry list command to select filtered entities, like the surfaces of a layer, etc.)


get: to obtain all the geometrical data to define a single entity

  • GiD_Geometry -v2 get point|line|surface|volume <args>

with <args>: num ?line_uv <line_index> | index_boundaries | has_holes | render_mesh | mesh | material?


line_uv <line_index> extra arguments must be only used in case of nurbs surfaces, to get the information of the <line_index> curve (integer from 1 to the number of trimming curves) on the surface, defined in its uv space parameter.


index_boundaries extra argument to get an objarray of integers with the index of the list of curves where each boundary start.
If the surface doesn't has any hole, it return 0 (the start index of the outer loop)
It the surface has holes it return an index by hole (the start index or the hole inner loop)


has_holes: it return 0 if the surface doesn't has any hole, 1 else


-v2 mean version 2 of this command and then return this data (deprecated version 1 documentation must be seen in help of old versions of the program)

  • GiD_Geometry -v2 get point <num>

will return:
<layer> <geometrical data>
<layer> is the layer name
<geometrical data> the coordinates x y z

  • GiD_Geometry -v2 get line <num>

will return:
<type> <layer> <p1> <p2> <geometrical data>
<type> can be: stline, nurbsline, arcline, polyline
<layer> is the layer name
<p1> identifier of start point
<p2> identifier of end point
<geometrical data> item depends of each entity type
stline: nothing


nurbsline: <d> <n> {x y z ... x y z} {w ... w} {k ... k}
<d>degree of the polynomials
<n> number of control points
<xi yi zi> control points coordinates (objarray of 3*n double values)
<wi> are the weights associated to each control point (objarray of double values. Empty array if is non-rational)
<ki> knots (the amount of knots = amount of control points+degree+1


arcline: <xc> <yc> <r> <sa> <ea> {m11 ... m44}
<xc> <yc> 2D center
<r> radius
<sa> <ea> start and end angle (rad)
{m11 ... m44} transformation 4x4 matrix (the identity for a 2D case)
m11 ...m33 is a rotation 3x3 matrix
m14 ...m34 is a translation 3x1 vector
m44 is an scale factor
m41 ... m43 must be 0


polyline: <line .... line> <orientation ... orientation>
<line ...> is a list with the data of each sub-line of the polyline
<orientation ... orientation> is an objarray of values 0 or 1 (0==natural orientation, along tangent, 1== opposite direction)

  • GiD_Geometry get line <line_id> render_mesh

Will return the information of the render mesh of the line <line_id> as a list: {element_type element_num_nodes coordinates connectivities ts}
element_type: line
element_num_nodes: 2
coordinates: objarray with 3*num_nodes items of float with x y z of the render mesh nodes.
connectivities: objarray with element_num_nodes*num_elements of int with the connectivities of the elements (zero-based)
ts: optional objarray with num_nodes items of float with t space parameters (from 0.0 to 1.0) of each node. (it is optional, the array could have zero length)

  • GiD_Geometry -v2 get surface <num>

will return:
<type> <layer> <trimmed> {l1 ... ln} {o1 ... on} <geometrical data>
<type> can be: nurbssurface planarsurface coonsurface meshsurface
<layer> is the layer name
<trimmed> 1 if the surface valid part is a trim of a bigger underlying shape, 0 else
{li...} objarray of integer identifiers of the surface lines (outer and inner boundaries)
{o1 ... on} orientation of the lines for the surface (0==natural orientation, along tangent, 1== opposite direction)
Note: turning left of a line with orientation 0 must points inside the surface.
<geometrical data> depends of each entity type
planarsurface: nothing


coonsurface: nothing


nurbssurface <du> <dv> <nu> <nv> {x y z ... x y z} {w ... w} {ku ... ku} {kv ... kv}
<du> <dv>degree in u, v direction
<nu> <nv>number of control points in each direction
{xi yi zi} control points coordinates. (objarray of 3*nu*nv double values)
<wi> are the weights associated to each control point (objarray of double values. Empty array if is non-rational)
<kui> <kvi> knots in each direction


meshsurface: <nnode> {x1 y1 z1 ... xnn ynn znn} {a1 b1 c1 ?d1? ... ane bne cne ?dne?}
nnode: number of nodes by element: 3 or 4 (triangles or quadrilaterals)
xi yi zi: coordinates
ai bi ci di: connectivities (di only for quadrilaterals)

  • GiD_Geometry get surface <surface_id> line_uv <line_index>

will return the information of the curve in uv space of the surface <surface_id>, with similar format as GiD_Geometry get line <num> in case of a nurbs curve.

  • GiD_Geometry get surface <surface_id> has_holes

Return a boolean 1 or 0 indicating if the surface is trimmed with inner holes.

  • GiD_Geometry get surface <surface_id> index_boundaries

Return an objarray of int of num_holes+1 items with the index in the list of boundary curves where each loop starts (the first is the outer loop and then the inner loops)

  • GiD_Geometry get surface <surface_id> ?-force? render_mesh

Will return the information of the render mesh of the surface <surface_id> as a list: {element_type element_num_nodes coordinates connectivities normals uvs}


use -force flag to create the render mesh if it was not created.


element_type: triangle or quadrilateral
element_num_nodes: 3 or 4
coordinates: objarray with 3*num_nodes items of float with x y z of the render mesh nodes.
connectivities: objarray with element_num_nodes*num_elements of int with the connectivities of the elements (starting by zero)
normals: optional objarray with 3*num_nodes items of float with x y z of the render mesh normals. (it is optional, the array could have zero length)
uvs: optional objarray with 2*num_nodes items of float with u v space parameters of each node. (it is optional, the array could have zero length)

  • GiD_Geometry -v2 get volume <num>

will return:
<type> <layer> {s1 sn} {o1 ... on}
<type> can be: volume or contactvolume
<layer> is the layer name
{si} identifier of surfaces bounding the volume (including holes. the first must be the outer boundary)
{oi} are its orientation for the volume ( 0 along to the surface normal, 1 opposite)

Note: the normal of a surface with orientation 0 points inside the volume

  • GiD_Geometry get volume <volume_id> has_holes

Return a boolean 1 or 0 indicating if the volume has inner holes.

  • GiD_Geometry get volume <volume_id> index_boundaries

Return an objarray of int of num_holes+1 items with the index in the list of boundary surfaces where each shell starts (the first is the outer shell and then the inner shells)

  • GiD_Geometry get point|line|surface|volume <id> mesh

Will return the information of the mesh of the geometric entity <id> as a list: {element_type element_num_nodes node_ids coordinates element_ids connectivities ?radius_and_normals?}
element_type: string
element_num_nodes: integer with the amount of nodes of an element (all mesh elements are of same type)
node_ids: objarray of integers with num_nodes items, where num_nodes is the amount of nodes of the elements of this mesh (node id one-based)
coordinates: objarray with 3*num_nodes items of double with x y z of the mesh nodes.
element_ids: objarray of integers with num_elements items (element id one-based)
connectivities: objarray with element_num_nodes*num_elements of int with the connectivities of the elements (one-based)
radius_and_normals: only for sphere and circle elements. objarray with num_elements items of double with the radius of each element or num_elements*4 items for circles, with the radius and the normal 3D vector (normal to the plane of the circle).


  • GiD_Geometry get surface|volume <id> mesh_boundary

Will return the information of the boundary of the mesh of the geometric entity <id> as a list: {element_type element_num_nodes connectivities}
element_type: string
element_num_nodes: integer with the amount of nodes of an element (all mesh elements are of same type). Can be also a quadratic mesh, whit more nodes than the linear ones of the corners.
connectivities: objarray with element_num_nodes*num_elements of int with the connectivities of the elements (one-based)
a volume with a mesh of prisms or pyramid will have as boundary a mix of quadrilateral and triangles, all are expressed as quadrilaterals (triangles will write the 4th node repeating the last id)

It is not returned any information of node_ids, coordinates or element_ids.

the list of node_ids can be obtained easily with something like this, sorting the ids of connectivities removing duplicates

set node_ids [objarray sort -unique [lindex [GiD_Geometry get volume $volume_id mesh_boundary] 2]]

or

set node_ids [ lsort -unique -integer [lindex [GiD_Geometry get volume $volume_id mesh_boundary] 2]]

the coordinates could be obtained from the node_ids with other commands like GiD_Mesh get node

element_ids are not returned because the boundary faces doesn't exists explicitly in GiD, and then they don't have a number


  • GiD_Geometry get point <id> node

Will return the information of the mesh nod of this point, if any.

Can return "" is there is not any node, the integer node num if it has a node (but the number could be 0 in case of an 'internal' node, not visible)


  • GiD_Geometry get point|line|surface|volume <id> material

Will return an integer with its material index


  • GiD_Geometry get point|line|surface|volume <id> label_on

Will return 1 if the label flag is set to on (to be shown), 0 otherwise

  • GiD_Geometry get point|line|surface|volume <id> selected

Will return 1 if the selected flag is set to on (to be drawn in red), 0 otherwise

  • GiD_Geometry get point|line|surface <id> higherentity

Will return an integer >=0 with the counter of parent entities using this entity.

It is not defined for volume because this is the top category and doesn't has any parent.

  • GiD_Geometry get point <id> forced surface|volume

In case of being a point forced to be meshes as a node of a surface or volume it return the id of this geometrical entity


list: to get a list of entity identifiers of a range or inside some layer

  • GiD_Geometry list ?<filter_flags>? point|line|surface|volume ?<args>?

<filter_flags> could be: ?-count? ?-unrendered? ?-higherentity <num_higher>? ?-material <id_material>? ?-layer <layer_name>? ?-plane {a b c d r}? ?-avoid_frozen_layers? ?-mesh_data element_type|structured|meshing|size|skip|boundary_layer|mesher|point_forced_to?

-count to return the amount of entities instead of the objarray with its ids
-unrendered flag is only valid for surface
-higherentity <num_higher> to filter the selection and list only the entities with the amount of parents equal to <num_higher> (integer >=0)
-material <id_material>to filter the selection and list only the entities with material id equal to <id_material> (integer >=0)

-layer <layer_name> to filter the selection and list only the entities with layer equal to <layer_name>
-plane <a b c d r> to list only the entities with center that match the plane equation a*x+b*y+c*z+d<=r
-entity_type <types_allowed> to list only the entities of a type contained in <types_allowed>, that must be a list of allowed types ("STLINE | ARCLINE |POLYLINE | NURBLINE | NURBSURFACE PLSURFACE COONSURFACE MESHSURFACE CONTACTSURFACE VOLUME CONTACTVOLUME")

-avoid_frozen_layers to ignore the entities on layers frozen

-mesh_data allow to list entities depending on extra meshing information attached to them:

-mesh_data element_type <element_type> line|surface|volume

-mesh_data structured full|semi|center line|surface|volume
-mesh_data meshing duplicate line|surface
-mesh_data meshing tobemeshed_yes|tobemeshed_no point|line|surface|volume
-mesh_data size point|line|surface|volume
-mesh_data skip point|line
-mesh_data boundary_layer line|surface
-mesh_data mesher <mesher_id> surface|volume
-mesh_data point_forced_to surface|volume point


<args>: <num>|<num_min>:<num_max>


<num_max> could be 'end' to mean the last index
if <args> is not provided it is considered as 1:end, and then all ids are returned


edit: to modify some option

  • GiD_Geometry edit point|line|surface|volume <num> material|label_on|selected <value>

<num> the entity id

<material> to set the material number (value>=0)

<label_on> to set the label flat (value 0 or 1)

<selected> to set the selection flag (value 0 or 1)


exists: to check if a single entity exists or not

  • GiD_Geometry exists point|line|surface|volume <id>

Return 1 if exists, 0 otherwise



Examples:

Creation of a new NURBS surface:

GiD_Geometry create surface 1 nurbssurface Layer0 0 {1 4 3 2} {1 1 1 1} \
{1 1 2 2 {0.17799 6.860841 0.0 -8.43042200 6.86084199 0.0 0.17799400 0.938510 0.0 -8.43042 0.938510 0.0} \
 {} {0.0 0.0 1.0 1.0} {0.0 0.0 1.0 1.0}}


Get the list of points of the layer named 'Layer0':

GiD_Geometry list -layer Layer0 point


Get the list of surfaces that not belong to any volume:

GiD_Geometry list -higherentity 0 surface

Get the list of problematic surfaces that couldn't be rendered:

GiD_Geometry list -unrendered surface


Get the list of lines of type nurbline or arcline

GiD_Geometry list -entity_type {nurbline arcline} line

COPYRIGHT © 2022 · GID · CIMNE