Modeler commands are not case-sensitive. Modeler's native command mechanism is
the lookup and execute pair of functions, which translate the command
name into a code and use an array of DynaValues to pass the
arguments. Commands issued using the evaluate function will be converted into lookup
and execute calls. (See the CommandSequence
document for definitions of these functions.)
Modeler's evaluate function treats double quote marks as delimiters, not
literal characters. Use them when a string argument contains spaces. You can insert a
quote mark as a literal character in a string argument by preceeding it with the backslash
( \ ) escape character. If you need a literal backslash, use two in a row. (This
can produce some odd-looking code if you're generating evaluate strings using sprintf.
To generate a literal quote character that won't be removed by either the C compiler or
Modeler's command processor, the sprintf string needs to contain three
backslashes, followed by the quote character: \\\".)
Some Modeler command arguments are optional. If they occur at the end of the argument
list, they can simply be omitted. If they're in the middle, they can be replaced by
placeholders, a DY_NULL DynaValue for execute or an asterisk (*)
in an evaluate string. Either way, Modeler will supply default values.
In the command list that follows, optional arguments are placed inside square brackets.
The types of the arguments are denoted by the initial letter.
- A single integer or floating-point number. These are passed to execute as
DynaValues of type DY_INTEGER or DY_FLOAT.
- A triple of numbers. In evaluate strings, vectors are delimited by angle
brackets (< and >). If one or two of the numbers is omitted, the
last number present is repeated, so <0> and <0 0 0>
are equivalent. For execute, vectors are passed as DY_VINTs or DY_VFLOATs.
- A string, such as a filename or surface name. Passed to execute as DY_STRINGs.
- A string containing one of several options. Valid keywords are listed in the definition
of the command.
- A string in which each character represents a toggle.
The commands are divided into six broad categories here, but this is just to get the
list under control. The categories don't have any programming significance.
- Close the current object workspace, or all object workspaces.
- Exit Modeler.
- Create a new, empty, unnamed object.
- These move back and forth in Modeler's undo buffer.
- The delete command removes the selected geometry without placing it in Modeler's
clipboard, unlike cutting, but deletes can still be undone.
- Load and save object files.
- Reload an existing object file.
SETOBJECT sname [nindex]
- Set the current object by name, filename or index.
- Set the current foreground (or active) and background layers. SETALAYER is a
synonym for SETLAYER. The layers argument is a string containing one or
more layer numbers separated by spaces. Layers are numbered sequentially, starting at 1.
- Set the name of the current layer.
- Set the pivot point for the current layer. The pivot point is the origin for rotations
- Set the current default surface. Geometry created after this is called will be assigned
SELECTVMAP ktype sname
- Set the current vertex map of a given type. The type can be MORF (relative
morph), SPOT (absolute morph), WGHT (weight), MNVW (subpatch
weight) or TXUV (texture UV).
CMDSEQ sname [sarg]
- Activate another command sequence plug-in, identified by its internal name, the string
in the plug-in's ServerRecord name field. The argument string is placed in the argument
field of the LWModCommand structure passed to the plug-in's activation function.
- Activate a MeshDataEdit class plug-in, identified by its internal name.
PLUGIN sfilename [sclass sname susername]
- Install the plug-ins contained in a .p file.
- Enables layer name instancing.
- Disables layer name instancing.
Commands are applied to the current selection, a subset of the geometry data
residing in Modeler when a command is issued. The selection is made up of elements from
the current layers, and within those layers, is defined by your choice of EltOpSelect mode
for each command.
For OPSEL_USER and OPSEL_DIRECT modes, you can change which elements
are selected using the SEL_POINT and SEL_POLYGON family of commands. (To
individually select points and polygons by ID, you'll need to use a mesh edit with the special OPSEL_MODIFY
- SEL_POINT kaction [condition ...]
- Modify point selection. If it isn't already, the Point tab in Modeler's interface will
be selected after this command is issued. The action can be either SET or CLEAR.
If there is no condition, the action will apply to all points. Otherwise, the points
specified by the condition will be added to the selection for SET and removed
from the selection for CLEAR. The possible conditions with their additional
"VOLUME" vlo vhi
- Points within the volume.
- Points connected to already selected ones. Only works with SET.
- "NPEQ" npols
- Points belonging to exactly pols polygons.
- "NPLT" npols
- Points belonging to less than pols polygons.
- "NPGT" npols
- points belonging to more than npol polygons.
SEL_POLYGON kaction [condition ...]
- Modify polygon selection. Like SEL_POINT, with the following conditions:
"VOLEXCL" vlo, vhi
- Polygons entirely within the volume.
- "VOLINCL" vlo, vhi
- Polygons at least partly within the volume.
- Polygons connected to already selected ones. Only works with SET.
- "NVEQ" nverts
- Polygons with exactly verts vertices.
- "NVLT" nverts
- Polygons with less than verts vertices.
- "NVGT" nverts
- Polygons with more than verts vertices.
- "SURFACE" ssurface
- Polygons having the given surface.
- Face polygons only.
- Curve polygons only.
- "NONPLANAR" [nlimit]
- Polygons less planar than the given limit. If limit is omitted, the user's default limit
- Invert the selection. Selected data becomes unselected and vice versa.
- Hide data from view. The state can be SELECTED (hide the selected
data, the default) or UNSELECTED.
- Unhide all hidden data.
- Invert the hiding of data. Hidden data becomes unhidden and vice versa.
The flex and deform transformations use similar region data to define the scope of
their operations. These are set globally and then applied to all transformations of a
- FIXEDFLEX kaxis nstart nend [fease]
- Set the flex functions to operate on a fixed range along an axis. Ease flags can be "i"
(ease-in), "o" (ease-out), or "io".
AUTOFLEX kaxis kpolarity [fease]
- Set the flex functions to operate on an automatic range along an axis of the given
polarity, which can be "+" or "-".
DEFORMREGION vradius [vcenter kaxis]
- Set the area of effect for the deformation tools. If axis is omitted, the effect is
bounded in all directions by the given radius. If an axis is specified, the effect is
unbounded along that axis.
- Translate points by the given offset. Shear translates along the flex axis. Magnet
translates in the deform region.
ROTATE nangle kaxis [vcenter]
TWIST nangle kaxis [vcenter]
VORTEX nangle kaxis [vcenter]
- Rotate points along the given axis by the angle given in degrees. Twist uses the flex
axis, and vortex uses the deform region.
SCALE vfactor [vcenter]
TAPER vfactor [vcenter]
POLE vfactor [vcenter]
- Scale points by the given factors around the given center. Taper uses the flex axis, and
pole uses the deform region.
BEND nangle ndirection [vcenter]
BEND2 nangle ndirection [vcenter]
- Bend points by the given bend angle in the direction around the optional center. These
commands use the current flex axis. In new code, use BEND2, which always
interprets angle values as degrees.
JITTER vradius [ktype vcenter]
- Randomly translate points using different displacement functions. The jitter type can be
UNIFORM, GAUSSIAN, NORMAL or RADIAL. UNIFORM
is the default and moves points randomly along all three axes within a box of the given
size. GAUSSIAN distributes the offsets in a bell curve around the start point. NORMAL
shifts the points in and out along the local surface normal. RADIAL shifts points
toward or away from the center.
SMOOTH [niterations nstrength]
- Apply a smoothing function to attempt to remove kinks in polygons connecting affected
- Snap all points to a 3D grid defined by the size vector.
- Merge points lying within a certain minimum distance of each other. If no distance is
given, it is computed heuristically.
- MAKEBOX vlowcorner vhighcorner [vsegments]
- Make a box with the given extent and and number of segments.
MAKEBALL vradius nsides nsegments [vcenter]
- Make a globe-style sphere.
MAKETESBALL vradius nlevel [vcenter]
MAKETESBALL2 vradius nsegments [vcenter]
- Make a tesselated sphere. A level 0 tesball is an icosahedron. A level n
tesball divides the edges of the icosahedron into 2n segments. The
newer MAKETESBALL2 comand allows the number of segments along the edges to be any
number, not just powers of 2.
MAKEDISC vradius ntop nbottom kaxis
nsides [nsegments vcenter]
- Make a disc.
MAKECONE vradius ntop nbottom kaxis
nsides [nsegments vcenter]
- Make a cone. The top is the pointy end.
MAKETEXT stext nfont [kcornertype nkern
nscale kaxis vpos]
MAKETEXT2 stext nfont [kcornertype nkern
nscale kaxis vpos kalignment]
- Generate text using the given font index. The font index begins at 1 for MAKETEXT
and 0 (in agreement with the Font List global's index
function) for MAKETEXT2. The corner type can be either SHARP or BUFFERED.
The kern is an additional distance to put between characters (normally 0). The scale sets
the approximate height of the character cell in meters. The axis defines the plane in
which the text will lie. For MAKETEXT, text is always left-aligned with the
position argument, while for MAKETEXT2, the alignment can be LEFT, CENTER
- LATHE kaxis nsides [vcenter nendangle
- Spin a template around an axis.
EXTRUDE kaxis nextent [nsegments]
- Sweep a template along an axis.
MIRROR kaxis nplane
- Copy selected data, flipping it through a plane.
PATHCLONE sfilename [nstep nstart nend]
PATHEXTRUDE sfilename [nstep nstart nend]
- Load a motion file and clone or extrude the selected data along the path in the file.
Clone creates copies of the selected geometry at intervals along the path, while extrude
creates a single continuous object by connecting the copies.
RAILCLONE nsegments [kdivs fflags nstrength]
RAILEXTRUDE nsegments [kdivs fflags nstrength]
- Clone or extrude selected data along one or more rails (curves) in background layers. If
segments is 0, the number of segments is computed automatically. Otherwise the number of
segments is fixed, and the intervals between segments depend on whether divs is KNOTS
(the default) or LENGTHS. For KNOTS, an equal number of segments is
placed between each knot, or curve vertex, while for LENGTHS, the segments are
spaced at equal intervals along the curve. The flags can be "o"
(oriented), "s" (scaled) or "os".
- AXISDRILL soperation kaxis [ssurface]
SOLIDDRILL soperation [ssurface]
- The drill commands slice the foreground geometry using a 2D template or 3D shape in the
background layer. The operation can be CORE, TUNNEL, SLICE or STENCIL.
- Booleans combine geometry in the foreground and background to create new shapes. The
geometry involved must form fully enclosed volumes, which Modeler treats as solids when
performing booleans. The operation can be UNION, SUBTRACT, INTERSECT
BEVEL ninset nshift
- Create a beveled edge around each selected polygon. The polygon's edges are moved inward
(toward the polygon's center) by the inset amount, and the polygon is offset in the
direction of its normal by the shift amount. The gap between the polygon's new and old
vertices is filled by new polygons that form the beveled edge.
- Perform multiple bevels using a single command. The patten for a shapebevel is either a
string containing pairs of inset/shift values, or a DY_CUSTOM DynaValue with the val
field set to the number of pairs, and the val field cast to a pointer to an
array of doubles holding the pairs.
SMOOTHSHIFT noffset [nmaxangle]
- Extrude part of a mesh. Vertices are moved in the average ("smoothed")
direction of the shared polygons' normals. The mesh breaks at edges that form angles
greater than maxangle, and the shift direction isn't averaged across those edges.
- Move and scale part of a mesh. Vertices are moved as they are with SMOOTHSHIFT,
but no new polygons are created.
- Flip the sidedness (reverse the surface normals) of faces and the directions of curves.
- Convert polygons into triangles by subdividing.
- Convert curves into polygons.
- Delete polygons, leaving behind their vertices as points.
- Delete duplicate polygons.
- Roughly speaking, flip polygons so that they all face in the "same" direction
to form a coherent mesh. Incoherent meshes can result from the use of the UNIFYPOLS
command, or when the geometry is created in another program that ignores the sidedness of
polygons. It isn't always possible for ALIGNPOLS to infer the correct sidedness
for all polygons, however.
- Set the surface of selected polygons.
- Set the part tag for selected polygons.
SUBDIVIDE kmode [nmaxangle]
- Split triangles into four smaller triangles and quads into four smaller quads. The mode
can be FLAT, SMOOTH, or METAFORM. With flat subdivision, the
new polygons retain the parent's normal. A smooth subdivide creates polygons with normals
that interpolate the parent's normal and those of its neighbors. Modeler won't try to
interpolate normals across edges that form angles larger than maxangle. Metaform,
unlike smooth mode, moves the original vertices to approximate the continuity (roundness)
of a higher-order patch.
FRACSUBDIVIDE kmode nfractal [nmaxangle]
- Like SUBDIVIDE, but applies a fractal displacement to each new vertex as a
function of its position.
- These affect the interpretation of the first and last points in curves. When toggled
"on," the first (or last) point in a curve becomes a continuity control point.
It and the curve segment connected to it are no longer part of the curve, but it can be
used to affect the shape of the first (or last) segment that is still part of the curve.
- Toggling this "on" converts the selected geometry into a subpatch control
- Create multiple copies of the selected points so that none are shared by two polygons at
The following eight commands are only valid with EltOpSelect modes of OPSEL_USER
or OPSEL_DIRECT. Just as in the user interface, these operations require explicit
selection of the elements they will operate on.
- MAKE4PATCH nperpendicular nparallel
- Create a quad mesh from three or four curves. The perpendicular and parallel
values determine the number of segments that will be created in directions perpendicular
and parallel to the last-selected curve. The curves must share vertices to form a closed
- Create a triangle mesh that connects two or more polygons and encloses the volume
between them. This is sometimes called lofting. The original polygons aren't required to
have the same number of vertices.
- Create a triangle mesh that connects exactly two polygons with the same number of
vertices. The new mesh is divided into a number of segments along the line connecting the
two original polygons.
- Merge selected polygons into a single polygon. Each selected polygon must share at least
one edge with another.
- Merge selected points into a single point. The position of the resulting point is the
same as that of the last-selected point before the weld.
- Weld selected points into a single point located at the average position of the welded
- Divide a polygon into two smaller polygons. The new edge is created between selected
- Smooth a composite of two curves at their join point.