This command takes a topologically 1d or 2d mesh (a line, a set of line segments, or a planar or non-planar quad or triangle surface) and extrudes it into three dimensions along either the normal to the curve or surface (default), along a user defined vector, or to a set of points that the user has specified.
If the extrusion was along the normal of the surface or along a user defined vector, the command can optionally find the external surface of the volume created and return that to the user.
extrude/mesh1/mesh2/const min/offset/volume bubble/[norm x1,y1,z1] extrude/mesh1/mesh2/interp/layers/range1/range2
range1
and range2
are defined as pset,get, pset_name or ifirst,ilast,istride (1,0,0 is all).
mesh1
is the name of the resulting mesh.
mesh2
is the name of the initial mesh. This mesh must be a valid mesh object with element type of line, tri, or quad. The mesh type hybrid is acceptable but behavior may be unpredictable.
const is a keyword that indicates that the distance from each of the points in the initial mesh along the extruding vector will be equal to offset.Therefore, if you wanted the extruded mesh to have the same surface or edge characteristics as the original mesh on both the initial and newly formed surface or edge, you would use const.
min is a keyword and indicates that the minimum distance along the extruding vector to a reference plane that is perpendicular to the extruding vector will be equal to offset. This means that if you want an extruded mesh with at least one flat side, you would use min. This also means that if you use min, extrude computes the “bottom point” on the initial mesh, or the point closest to the reference plane, and then extrudes that point by min, all the other points will therefore be extruded by a larger distance. This avoids the problem of having the initial mesh intersect the reference plane that forms the “bottom” of the created mesh.
interp is a keyword and indicates a different kind of extrusion.
Instead of giving the initial mesh a direction in which to be
extruded, this keyword specifies that the initial mesh is made up of
two sets of points to be connected. These point sets are defined by
range1
and range2
. The ranges can be defined using the
standard LaGriT techniques of pset, get, pset_name or
ifirst, ilast, istride.
layers
is the number of layers of elements that will be placed between
the original two surfaces. This is a good point distribution
technique. The final number of layers of points will be equal to
layers+1. It must be an integer.
offset
is the length of extrusion. It can either be an integer or a
real.
volume is a keyword and indicates that the volume that was extruded is to be returned to the user (i.e., the operation will result in either a topologically 2d (quad) mesh if the initial mesh was topologically 1d, or a topologically 3d (prism or hex) mesh if the initial mesh was topologically 2d). bubble is a keyword and indicates that the external surface of the volume created will be returned. If bubble is used, hextotet will be called on the final surface, as well as extract.
The final argument is optional. It must either be the keyword norm, or a three valued vector (in cartesian space) specifying a direction. The default, if no argument is provided, is norm. If norm is chosen, the element area weighted normal to the surface or curve is computed, and the initial mesh is extruded in that direction. Otherwise, if a vector value is specified, the vector is normalized, and its direction used to extrude the initial mesh.
This code works on meshes containing lines, quads, triangles, or
hybrid polygons. If there are lines in the initial mesh, they become
quads; tris become prisms; and quads become hexes. Note that line elements will not work for the bubble option and will produce errors during the call to hextotet
.
If the interp keyword is used, the code expects the number of
points in range1
and range2
to be equal, and to correspond
such that the first point in range1
will connect to the first
point in range2
in the final mesh object, etc. Other setups will
result in a twisted, perhaps invalid mesh object.
It is very possible to create an invalid mesh object with the extrude command, especially if the initial mesh is a multivalued surface, or if the extruding vector is in a direction parallel to the plane the initial surface is in. You have been warned.
extrude/cmo_hex/cmo_quad/const/5.0/volume
This would result in hexes being created out of the initial quad sheet. First, since const and volume are used, the quad sheet will be extruded a constant amount from each point. Second, since the extruding vector and norm are omitted, the extrusion will occur on the average normal to the plane. Therefore, this command will result in a mesh of hexahedrons extruded 5.0 units in an orthogonal direction. (Or, more succinctly, a mesh of parallelopipeds of height 5.)
extrude/cmo_prism/cmo_tri/ min/10/volume/ 1,2,-1
This command would result in prisms being created out of the initial tri sheet. First, since min is used, the “bottom” of the extruded volume would be a plane. Second, because the vector 1, 2, -1 is specified, the extrusion will be in that direction (again the magnitude is not important, the vector is normalized to a unit vector), not in the direction of the average normal.
extrude/cmo_bigbox/cmo_quad/const/5.0/bubble/
This would result in a surface surrounding an amalgamation of parallelopipeds created from the initial quad sheet. First, since const is used the quads will be extruded a constant amount from each point in the quad sheet. Second, since the extruding vector and norm are omitted, the extrusion will occur on the average normal to the plane. Therefore, this command will result in a mesh of tris that form the surface of a group of parallelopipeds extruded 5.0 units in an orthogonal direction.
extrude/cmo_arbshape/cmo_tri/ min/7.5/bubble/ 3,-2.5,-6
This command would result in a mesh of tris that form a surface enclosing a volume of prisms being created out of the initial tri sheet. First, since min is used, the “bottom” of the surface would be a plane. Second, because the vector 3, -2.5, -6 is specified, the extrusion will be in that direction (again the magnitude is not important, the vector is normalized to a unit vector), not in the direction of the average normal of the initial tri surface.
extrude/cmo_prism/cmo_tris/interp/14/pset,get,bottom/pset,get,top
This command would result in a mesh of prisms being created out of the two sets of tri sheets in cmo_tris as well as 14-1 layers of additional tris that would be interpolated. First, since interp is used, the pset defined by bottom would end up connected to the pset defined by top. Second, there would be 14 layers of elements that would be placed between the psets top and bottom, so that the resulting grid would have 15 layers of points that would be connected to one another to form prisms.