## ClusterNonOverlapEnforcement

### Description

Resolves the ambiguity when clusters overlap in a context of a given property type (e.g.: material). This command is used primarily by ApplyShader.
It either removes the overlap from the selected clusters, from the existing clusters, or simply lets the overlap happen.

### Scripting Syntax

    oReturn = ClusterNonOverlapEnforcement( InputObjs, Property, ActionWhenLocalMaterialsOverlap );

### Return Value

Returns an XSICollection containing the clusters found to be overlapping with the target cluster(s).

### Parameters

Parameter | Type | Description
--- | --- | ---
InputObjs | String | List of clusters (probably selected) against which all clusters will be tested for overlapping. Default Value: Current selection
Property | String | Example of a property the existing clusters must have in order to be tested.
ActionWhenLocalMaterialsOverlap | siActionWhenLocalMaterialsOverlap | What to do with the clusters found to be overlapping with the target cluster(s). Default Value: siRemoveFromSelectedClusters

### Examples

#### VBScript Example

    ' The following example demonstrates how to use ClusterNonOverlapEnforcement to resolve conflicts

    ' when clusters with a given type of property (eg: material) overlaps.

    ' The example is not really a good one because ApplyShader already does all this internally

    ' let's create a grid

    NewScene

    CreatePrim "Grid", "MeshSurface"

    ' now lets make the four corners red

    ActivateRaycastPolySelTool

    SelectGeometryComponents "grid.poly[0]"

    AddToSelection "grid.poly[0,1,8,9]", , True

    AddToSelection "grid.poly[48,49,56,57]", , True

    AddToSelection "grid.poly[6,7,14,15]", , True

    AddToSelection "grid.poly[54,55,62,LAST]", , True

    set l_Shader = ApplyShader

    SetValue "grid.polymsh.cls.Polygon.Material.Phong.diffuse.red", 1

    SetValue "grid.polymsh.cls.Polygon.Material.Phong.diffuse.green", 0

    SetValue "grid.polymsh.cls.Polygon.Material.Phong.diffuse.blue", 0

    SetDisplayMode "Views.ViewA.TopCamera", "shaded"

    ' to make the remaining polygons green lets simply select

    ' all the polygons and use ClusterNonOverlapEnforcement with

    ' siRemoveFromSelectedClusters to not override the corners

    SelectAllUsingFilter "Polygon", siCheckComponentVisibility

    set l_Cluster = CreateCluster

    ClusterNonOverlapEnforcement l_Cluster, "grid.polymsh.cls.Polygon.Material", siRemoveFromSelectedClusters

    ApplyShader

    SetValue "grid.polymsh.cls.Polygon1.Material.Phong.diffuse.red", 0

    SetValue "grid.polymsh.cls.Polygon1.Material.Phong.diffuse.green", 1

    SetValue "grid.polymsh.cls.Polygon1.Material.Phong.diffuse.blue", 0

    ' now to make the 4 polygons blue in the center

    ' lets use ClusterNonOverlapEnforcement this time with siRemoveFromExistingClusters

    SelectGeometryComponents "grid.poly[27,28,35,36]"

    set l_Cluster = CreateCluster

    ClusterNonOverlapEnforcement l_Cluster, "grid.polymsh.cls.Polygon.Material", siRemoveFromExistingClusters

    ApplyShader

    SetValue "grid.polymsh.cls.Polygon2.Material.Phong.diffuse.red", 0

    SetValue "grid.polymsh.cls.Polygon2.Material.Phong.diffuse.green", 0

    SetValue "grid.polymsh.cls.Polygon2.Material.Phong.diffuse.blue", 1

    DeselectAll

### See Also

ApplyShader