PortSet

A PortSet contains none, one or more than one Group sections. A Group contains zero, one, or more port definitions. If the body of a port definition is empty, you can omit the braces ({}) and terminate the line with a semicolon (;). The PortSet section does not apply to shaders.

The purpose of a portset is to categorise the type of entities to which an operator port can be connected. Basically, it goes from more generic to more specialized Major->Minor->Interface->Component.

    PortSet portset_name
    {
       Group portgroup_name
       {
           Origin = Select | Pick | Create;
           PickMessage = string
           Input | Output portname
           {
              Major = guid;
              Minor = guid;
              Component | Interface = guid;
              Attributes = integer_expression;
           }
       }
    }

| In a scripted operator, if you selected a property or a primitive from the Explorer window, the Interface description appears in the SPDL file; if you selected a parameter, the Component description appears.

Major

Specifies the type of entity to which you want to connect.

GUID | Description
{E80A1590-CA13-11CF-91B9-00AA00624C2D} | A primitive (all primitives or cluster)
{9E04FCEE-10F3-11d0-943A-00AA006D3165} | A property (all properties,materials, and cluster properties)

Minor

Specifies a specialisation of the Major type (non existent if its a cluster))

If you inspect the object you're connecting too(local kine state, primitive), right-click the tab header bar and choose Edit. The Minor GUID is the GUID at the top of the spdl file.

Interface

There's a handful of different specialisation here, basically when this is specified it means your connecting to the full object rather than a specific parameter.

GUID | Description
{00000000-0000-0000-C000-000000000046} | Properties
{CDEA6775-415B-11d0-AA40-00A0243E34C4} | Primitive
{A244F0D0-1E1D-11D0-AA2E-00A0243E34C4} | Cluster

Component

This is used when connecting to a parameter. This value corresponds to the parameter-specific GUID that you'll find in the spdl of the target entity.