When you model interactively using non-ICE operators, you specify the components to affect by selecting them in the viewports. When modeling procedurally with ICE, you must also specify the components somehow. This is done using the components' indices. You can specify components by explicitly listing their indices, or you can calculate the desired index values procedurally. Many of the topology nodes, like Delete Vertex, allow you to specify component indices as a single integer, an array of integers, or a (possibly filtered) set of integers.
You can specify a single component using the slider in an ICE topology node, or you can specify multiple components by connecting an array. You can create an array with the various array nodes, such as Build Array or String to Array.
Although explicit indices can be useful when learning ICE modeling, or when developing and debugging compounds, they are very limited. Calculating indices procedurally based on various conditions is much more powerful.
Calculating Indices Procedurally
One way to calculate indices procedurally is to filter out those that do not meet one or more conditions. The Test Polygon Inside Null compound is available in the Conditionals group of the Tasks Topology group in the preset manager, or you can build your own test using any calculation with a Boolean result.
Using the Test Component Index Compounds
The Conditionals group also contains compounds for specifying indices of each component type in a variety of ways: Test Edge Index, Test Polygon Index, Test PolyNode Index, and Test Vertex Index.
Sometimes you need to switch component types. For example, you perform a test on polygons but you want to modify the associated edges. In that particular case, you can use the PolygonToEdges attribute. This attribute is an array of integers per polygon, containing the indices of its edges. There are similar attributes for converting between all polymesh components: vertex, edge, polygon, and node (polynode).
The following example shows how to build a filtered set of edge indices from a filtered set of polygons:
This example shows how to build an filtered set of polygon indices from an array of vertex indices:
The nodes in the Topology category on the Tool tab of the preset manager modify the specified components. They perform the same operations as the equivalent non-ICE topology operators. You get a topology (or leave the input unconnected for Self.Topology), connect to a topology node, and set the Topology.
You can also use the compounds in the Modifiers group of the Tasks Topology group. They have built-in options for specifying components, and they have execute-type outputs so they can be connected directly to the ICETree root one after another.
There are some compounds that can help when working with loops. Note that loops on open meshes are unidirectional, that is, from a specific edge to one or other border.