How define current selection type?

Discussions concerning programming of SOFTIMAGE©
Post Reply
Xsinode
Posts: 26
Joined: 06 Sep 2013, 19:08

How define current selection type?

Post by Xsinode » 14 Mar 2015, 11:00

Hi i need some help.
Now i'm use three simple scripts for quick toggling from object filter to vertex/edge/polygon filter.

This example of Object/vertex toggle script. For each hotkey i'm use single script

Code: Select all

currFilter = selection.filter;
if ( currFilter.name == "object" )
 SetSelFilter ( "Vertex" );
else if ( currFilter.name == "Vertex" )
 SetSelFilter ( "object" );
else if ( currFilter.name == "Edge" )
SetSelFilter ( "Vertex" );
else if ( currFilter.name == "Polygon" )
SetSelFilter ( "Vertex" );
And i want make this toggle sense to selection type (polymesh, surfacemesh, curve).
For example: if i'm select polymesh (avalible point/edge/polygon filters for toggling), if curve (avalible point, isopoint, knot for toggling) and etc
But i dont uderstand how i can get current selection type?

Maybe something like this:

Code: Select all

currFilter = selection.filter;
currType = selection.type;
if (currType == "polymesh")
{
if ( currFilter.name == "object" )
 SetSelFilter ( "Edge" );
else if ( currFilter.name == "Edge" )
 SetSelFilter ( "object" );
else if ( currFilter.name == "Polygon" )
SetSelFilter ( "Edge" );
else if ( currFilter.name == "Vertex" )
SetSelFilter ( "Edge" );
}
if (currType == "crvlist")
{
if ( currFilter.name == "object" )
 SetSelFilter ( "Isopoint" );
else if ( currFilter.name == "isopoint" )
 SetSelFilter ( "object" );
else if ( currFilter.name == "Knot" )
SetSelFilter ( "Isopoint" );
else if ( currFilter.name == "Vertex" )
SetSelFilter ( "Isopoint" );
}

And second question about scripting. I have script for quick subdivision level toggling

Code: Select all

Dim objSelected, intSubDLevel, intNewLevel

Subdivide

Sub Subdivide

	Set objSelected = SIFilter( null, "sceneobject", true, siQuickSearch )

	If typename(objSelected) = "Nothing" Then
		objSelected="Nothing"
		LogMessage "Clear selection "
		Exit Sub
	Else
		intSubDLevel = GetValue (objSelected & ".geomapprox.gapproxmosl")
		' LogMessage "SubD Level : " & intSubDLevel
		
		If intSubDLevel => 4 Then
			intNewLevel = 0
		Else
			intNewLevel = 4
		End If	
	End If
	
	' sets the selected object's sub-d level
	SetValue objSelected & ".geomapprox.gapproxmosl", intNewLevel

End Sub
How i can fix multiple selection error (for example if i'm select 2 objects with different subdiv level script set value to 0)

Thanks for reading

User avatar
csaez
Posts: 253
Joined: 09 Jul 2012, 15:31
Skype: csaezmargotta
Location: Sydney, Australia
Contact:

Re: How define current selection type?

Post by csaez » 19 Mar 2015, 03:31

You can check the selection type, but it will fail if nothing is selected... What you need is toggle the selection filter instead (python).

Code: Select all

from sipyutils import si
si = si()

filters = {
    "object": "Vertex",
    "Vertex": "Edge",
    "Edge": "Polygon",
    "Polygon": "Vertex",
}

si.SetSelFilter(filters.get(si.Selection.Filter.Name))
Cheers!

Post Reply

Who is online

Users browsing this forum: No registered users and 29 guests