Skip to content

Commit 78ddb17

Browse files
committed
Merge pull request #907 from UV-CDAT/vcs3D-fix_z_axis_problems
Vcs3 d fix z axis problems ok tests pass on my ubuntu no need to update any files. Merging
2 parents d426cf4 + 8ddf792 commit 78ddb17

File tree

12 files changed

+45
-20
lines changed

12 files changed

+45
-20
lines changed

Packages/DV3D/ButtonBarWidget.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,6 @@
1212
DataDir = os.path.join( PackagePath, 'data' )
1313
ButtonDir = os.path.join( DataDir, 'buttons' )
1414

15-
def get_scalar_value( tvals ):
16-
if hasattr( tvals, '__iter__' ):
17-
return get_scalar_value( tvals[0] )
18-
else: return tvals
19-
2015
class OriginPosition:
2116
Upper_Left = [ 0, 1 ]
2217
Upper_Right = [ 1, 1 ]

Packages/DV3D/ConfigurationFunctions.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@
2525
SLIDER_MAX_VALUE = 100
2626
MAX_IMAGE_SIZE = 1000000
2727

28+
def get_scalar_value( tvals ):
29+
if hasattr( tvals, '__iter__' ):
30+
return get_scalar_value( tvals[0] )
31+
else: return tvals
32+
2833
def isNumerical( vals ):
2934
for val in vals:
3035
if type( val ) not in [ int, float ]: return False
@@ -616,6 +621,7 @@ def serialize( self ):
616621
return str( self.values )
617622

618623
def getValue( self, key=0, default_value=None ):
624+
if key == None: return default_value
619625
return self.values.get( key, default_value )
620626

621627
def getState( self ):

Packages/DV3D/DV3DPlot.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -288,12 +288,14 @@ def getConstituentSelectionButton(self, config_function, build_args, position, *
288288
control_bar.reposition()
289289
return control_bar
290290

291-
def processConfigParameterChange( self, parameter ):
292-
values = parameter.getValues()
291+
def processConfigParameterChange( self, parameter, val_key = None ):
292+
values = parameter.getValue(val_key)
293+
if values == None: values = parameter.getValues()
294+
if not hasattr( values, '__iter__' ): values = [ values ]
293295
state = parameter.getState()
294296
if state <> None: addState( values, state )
295297
argList = [ parameter.name, parameter.ptype, str(values) ]
296-
# print " ..........>>>>>> Process Config Parameter Change: %s " % str(argList)
298+
#print " ..........>>>>>> Process Config Parameter Change: %s ( key: %s ) " % ( str(argList), str( val_key ) )
297299
self.ParameterValueChanged( argList )
298300

299301
def processConfigStateChange( self, parameter ):
@@ -333,7 +335,6 @@ def terminate( self ):
333335
def quit( self, **args ):
334336
eventArgs = args.get( 'args', None )
335337
if eventArgs and ( eventArgs[1] == 'Q' ):
336-
self.recordCamera()
337338
self.saveState()
338339
self.onClosing()
339340
sys.exit( 0 )
@@ -405,6 +406,7 @@ def changeButtonActivations(self, activation_list ):
405406
self.changeButtonActivation( *activation_spec )
406407

407408
def saveState(self, **args):
409+
self.recordCamera()
408410
self.cfgManager.saveState()
409411

410412
def getStateData(self, **args):
@@ -856,7 +858,8 @@ def buildPlotButtons( self, **args ):
856858
bbar = self.buttonBarHandler.createButtonBarWidget( bbar_name, self.renderWindowInteractor, position=( 0.0, 0.96) )
857859
self.buttonBarHandler.DefaultGroup = 'SliceRoundRobin'
858860
if (self.type == '3d_vector') or not enable_3d_plots:
859-
b = bbar.addSliderButton( names=['ZSlider'], key='z', toggle=True, group='SliceRoundRobin', sliderLabels='Slice Position', label="Slicing", state = 1, interactionHandler=self.processSlicingCommand )
861+
sliderLabels= 'Slice Position' if enable_3d_plots else []
862+
b = bbar.addSliderButton( names=['ZSlider'], key='z', toggle=True, group='SliceRoundRobin', sliderLabels=sliderLabels, label="Slicing", state = 1, interactionHandler=self.processSlicingCommand )
860863
else:
861864
b = bbar.addConfigButton( names=['SliceRoundRobin'], key='p', interactionHandler=bbar.sliceRoundRobin )
862865
b = bbar.addSliderButton( names=['XSlider'], key='x', toggle=True, group='SliceRoundRobin', sliderLabels='X Slice Position', label="Slicing", position=[0,3], interactionHandler=self.processSlicingCommand )

Packages/DV3D/RectilinearGridPlot.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,8 @@
1010
from ImagePlaneWidget import *
1111
from StructuredGridPlot import *
1212
from StructuredDataset import *
13+
from ConfigurationFunctions import get_scalar_value
1314
import numpy as np
14-
15-
def get_scalar_value( tvals ):
16-
if hasattr( tvals, '__iter__' ):
17-
return get_scalar_value( tvals[0] )
18-
else: return tvals
1915

2016
LegacyAbsValueTransferFunction = 0
2117
LinearTransferFunction = 1
@@ -382,7 +378,8 @@ def processSlicingCommand( self, args, config_function = None ):
382378
self.ProcessIPWAction( plane_widget, ImagePlaneWidget.InteractionUpdateEvent, action = ImagePlaneWidget.Pushing )
383379
elif args and args[0] == "EndConfig":
384380
plane_widget.endSlicing()
385-
self.processConfigParameterChange( slicePosition )
381+
val_key = 'relative' if (plane_index == 2) else None
382+
self.processConfigParameterChange( slicePosition, val_key )
386383
elif args and args[0] == "InitConfig":
387384
self.skipIndex = 4
388385
bbar = self.getPlotButtonbar()

Packages/DV3D/StructuredVariableReader.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ def __init__(self, **args):
103103
self.vars = args.get( 'vars', None )
104104
if self.vars <> None:
105105
dfile = self.vars[0].parent
106-
self.subSpace = args.get( 'axes', 'xyz' )
106+
self.subSpace = get_scalar_value( args.get( 'axes', 'xyz' ) )
107107
if dfile <> None:
108108
self.datasetId = dfile.Title if hasattr( dfile, 'Title' ) else dfile.id
109109
self.fileSpecs = dfile.id

Packages/DV3D/demo/demo_plots/clt_xyt_demo.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,14 @@
55
dv3d = vcs.get3d_scalar('Hovmoller3D')
66
dv3d.ToggleSurfacePlot = vcs.on
77
dv3d.ToggleVolumePlot = vcs.on
8-
dv3d.IsosurfaceValue = [11.4]
8+
dv3d.IsosurfaceValue = [ 10.0 ]
9+
dv3d.ToggleClipping = [-180.0, 175.0, -22.0, 90.0, 0.0, 119.0 ]
910
dv3d.ScaleTransferFunction = [80, 100, 1]
11+
dv3d.ScaleOpacity={ 'Volume': [0.0, 0.2] }
12+
dv3d.ZSlider = ( 0.0, vcs.on )
13+
dv3d.YSlider = ( 20.0, vcs.on )
14+
dv3d.Camera={'Position': (436.8, -126.3, 285.2), 'ViewUp': (-0.5, 0.25, 0.83), 'FocalPoint': (9.6, 19.9, -3.2)}
15+
1016
x.plot( v, dv3d )
1117
x.interact()
1218

testing/dv3d/CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,9 @@ add_test(dv3d_constituents_test
2222
)
2323

2424

25+
add_test(dv3d_hovmoller_test
26+
${CMAKE_INSTALL_PREFIX}/bin/python
27+
${cdat_SOURCE_DIR}/testing/dv3d/dv3d_hovmoller_test.py
28+
)
29+
30+

testing/dv3d/TestDefinitions.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
'YSlider': ( vcs.off ),
4848
} )
4949

50-
test3 = vcsTest( 'dv3d_constituents_test', file="geos5-sample.nc", vars = [ 'uwnd' ],
50+
test4 = vcsTest( 'dv3d_constituents_test', file="geos5-sample.nc", vars = [ 'uwnd' ],
5151
parameters={'VerticalScaling': 5.0,
5252
'ToggleClipping': ( 40, 360, -28, 90 ),
5353
'ToggleVolumePlot': vcs.on,
@@ -62,6 +62,14 @@
6262
'YSlider': ( 0.0, vcs.off ),
6363
'Camera': { 'Position': (-161, -171, 279), 'ViewUp': (.29, 0.67, 0.68), 'FocalPoint': (146.7, 8.5, -28.6) }
6464
} )
65+
66+
test5 = vcsTest( 'dv3d_hovmoller_test', file="clt.nc", vars = [ 'clt' ], template = 'Hovmoller3D',
67+
parameters={'BasemapOpacity': 0.5,
68+
'XSlider': ( 77.8, vcs.on ),
69+
'ZSlider': ( 0.1, vcs.on ),
70+
'YSlider': ( 49.0, vcs.on ),
71+
'Camera': {'Position': (-300, -409, 400), 'ViewUp': (0.156, 0.64, 0.75), 'FocalPoint': (-23.2, 14.2, -20)}
72+
} )
6573

6674
if __name__ == '__main__':
6775

testing/dv3d/TestManager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,5 +154,5 @@ def writeCMakeDef( self, f ):
154154
if __name__ == '__main__':
155155
from TestDefinitions import testManager
156156
# testManager.runTests()
157-
testManager.runTest( 'dv3d_slider_test', True )
157+
testManager.runTest( 'dv3d_hovmoller_test', True )
158158
# testManager.showTest( 'dv3d_constituents_test' )
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import sys
2+
from TestDefinitions import testManager
3+
interactive = ( len(sys.argv) > 1 ) and ( sys.argv[1] == '-i' )
4+
testManager.runTest( 'dv3d_hovmoller_test', interactive )

0 commit comments

Comments
 (0)