Re: IVolume/isosurface [message #49205 is a reply to message #49199] |
Thu, 06 July 2006 16:30   |
Kenneth P. Bowman
Messages: 585 Registered: May 2000
|
Senior Member |
|
|
In article <12ar2fms945fc42@corp.supernews.com>,
"Karl Schultz" <k_remove_schultz@ittvis.com> wrote:
>> Can an IVolume display more than one isosurface? If not, why not?
>>
>
> You need to re-select the volume to add another Isosurface.
OK, I can do that interactively, but I am trying to do this programmatically, as follows.
Being a novice object graphics user, I expect the code is ugly, but it
works for a single isovalue. However, when isovalues is an array, only one
surface is displayed. Printing isosurface_id shows two isosurfaces, but
the second does not appear in the display.
Confusedly (but what else is new),
Ken
IVOLUME, var, /NO_SAVEPROMPT, OVERPLOT = itool_id
vol_id = itool_obj -> FindIdentifiers('*DATA SPACE/VOLUME*', /VISUALIZATIONS) ;Get volume viz object identifier
vol_obj = itool_obj -> GetByIdentifier(vol_id) ;Get volume viz object reference
vol_obj -> SetProperty, RENDER_EXTENTS = 0 ;Turn off walls
vol_obj -> SetProperty, HIDE = 1 ;Hide volume (for exporting images)
isosurface_op_id = itool_obj -> FindIdentifiers('*ISOSURFACE*', /OPERATIONS) ;Get isosurface operator identifier
isosurface_op_obj = itool_obj -> GetByIdentifier(isosurface_op_id) ;Get isosurface operator object reference
isosurface_op_obj -> SetProperty, SHOW_EXECUTION_UI = 0 ;Turn off isosurface operator user interface
FOR i = 0, N_ELEMENTS(isovalues)-1 DO BEGIN
isosurface_op_obj -> SetProperty, _ISOVALUE0 = isovalues[i] ;Set isosurface value to pv_value
rc = itool_obj -> DoAction(isosurface_op_id) ;Make isosurface
ENDFOR
isosurface_id = itool_obj -> FindIdentifiers('*DATA SPACE/ISOSURFACE*', /VISUALIZATIONS) ;Get isosurface object identifier(s)
PRINT, isosurface_id
FOR i = 0, N_ELEMENTS(isovalues)-1 DO BEGIN
isosurface_obj = itool_obj -> GetByIdentifier(isosurface_id[i]) ;Get isosurface object reference
isosurface_obj -> SetProperty, SOURCE_COLOR = 1, $ ;Set color source to "user"
FILL_COLOR = isocolor, $ ;Set color
TRANSPARENCY = 20 ;Set transparency
itool_obj -> RefreshCurrentWindow ;Refresh window
iTPropertyReport, itool_obj, isosurface_id[i] ;Print list of isosurface properties
ENDFOR
|
|
|