
You can get at the Resolutions through scripting (via NestedObjects or Dictionary.GetObject), but you can get the resolution name and file only.
from siutils import si # Application
from siutils import sidict # Dictionary
from siutils import sisel # Selection
from siutils import log # LogMessage
def getResolutionFileName( m, res ):
if ( m.Type == "#model" and m.Parameters("referenced_model").Value==True):
return sidict.GetObject( m.FullName + ".resolutions." + res + ".file" ).Value
log( getResolutionFileName( sisel(0), 'res1' ) )
log( getResolutionFileName( sisel(0), 'res2' ) )
log( getResolutionFileName( sisel(0), 'res3' ) )
# INFO : Models\Octa-Low.emdl
# INFO : Models\Octa-Med.emdl
# INFO : Models\Octa-High.emdl
Going through NestedObjects is a bit more of a hassle:
from siutils import si # Application
from siutils import sidict # Dictionary
from siutils import sisel # Selection
from siutils import log # LogMessage
import win32com.client.dynamic
def getResolutions( m ):
if ( m.Type == "#model" and m.Parameters("referenced_model").Value==True):
return m.NestedObjects( "Resolutions" ).NestedObjects
resolutions = getResolutions( sisel(0) )
for r in resolutions:
name = sidict.GetObject( r.FullName + ".name" ).Value
file = sidict.GetObject( r.FullName + ".file" ).Value
log( name )
log( file )
# This errors out with the dynamic dispatch fix:
name = r.NestedObjects( "name" )
log( si.ClassName( name ) )
log( win32com.client.dynamic.Dispatch(name).Value )
For the second example, I don’t think you need GetObject() — you can just do:
r.NestedObjects(“Name”).Value
r.NestedObjects(“file”).Value