comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: IVolume/isosurface
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: IVolume/isosurface [message #49205 is a reply to message #49199] Thu, 06 July 2006 16:30 Go to previous messageGo to previous message
Kenneth P. Bowman is currently offline  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
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Previous Topic: Re: reading past leading and training bytes
Next Topic: Re: Avoid loop in matrix operation

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Sat Oct 11 15:00:55 PDT 2025

Total time taken to generate the page: 0.81706 seconds