From: Jonathan S. <jjs...@us...> - 2005-05-08 00:47:43
|
Update of /cvsroot/octaviz/octaviz/Scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11512 Modified Files: vtk_axis.m Log Message: progress on axis function Index: vtk_axis.m =================================================================== RCS file: /cvsroot/octaviz/octaviz/Scripts/vtk_axis.m,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- vtk_axis.m 29 Apr 2005 16:45:58 -0000 1.7 +++ vtk_axis.m 8 May 2005 00:47:32 -0000 1.8 @@ -75,25 +75,19 @@ f.renderer.GetProps.GetLastProp.SetScale(1/span(1),1/span(2),1/span(3)) endif - else - disp("manual setting of axis bounds not implemented yet") -# ## attempt at clipping (only one Actor for now) -# plane = vtkPlane(); -# plane.SetOrigin(0, 0, 0); # trial case for now, will recode to use input values -# plane.SetNormal(1, 0, 0); -# clippoly = vtkClipPolyData; -# clippoly.SetClipFunction(plane); -# clippoly.GenerateClipScalarsOn(); -# clippoly.GenerateClippedOutputOn(); -# ##clippoly.SetValue(0.5); ?? -# clippoly.SetInput(f.renderer.GetActors.GetLastActor.GetMapper.GetInput); -# ##f.renderer.GetActors.GetLastActor.GetMapper.SetInput(clippoly.GetOutput); # this doesn't work because you can't recover original! -# clipmapper = vtkPolyDataMapper; -# clipmapper.SetInput(clippoly.GetOutput); -# clipactor = vtkActor; -# clipactor.SetMapper(clipmapper); -# f.renderer.GetActors.GetLastActor.VisibilityOff; # turn unclipped actor off -# f.renderer.AddActor(clipactor); + else ## clip everything to desired axes limits + ##disp("manual setting of axis bounds not implemented yet") + ## attempt at clipping (only one Actor for now) + limits = arg; + clippd = clipaxes(f.renderer.GetActors.GetLastActor.GetMapper.GetInput,limits); + ## this doesn't work because you can't recover original! + ##f.renderer.GetActors.GetLastActor.GetMapper.SetInput(clippoly.GetOutput); + clipmapper = vtkPolyDataMapper; + clipmapper.SetInput(clippd); + clipactor = vtkActor; + clipactor.SetMapper(clipmapper); + f.renderer.GetActors.GetLastActor.VisibilityOff; # turn unclipped actor off + f.renderer.AddActor(clipactor); endif endfor @@ -102,6 +96,54 @@ endfunction +function clippd = clipaxes(polydata,limits) + plane = vtkPlane(); + clippoly = vtkClipPolyData; + clippoly.SetClipFunction(plane); + clippd = vtkPolyData; + ##clippoly.GenerateClipScalarsOff(); + clippoly.GenerateClippedOutputOn(); + + ## clip xlow + plane.SetOrigin(limits(1), 0, 0); + plane.SetNormal(1, 0, 0); + clippoly.SetInput(polydata); + clippoly.Update; + clippd.DeepCopy(clippoly.GetOutput); + ## clip xhigh + plane.SetOrigin(limits(2), 0, 0); + plane.SetNormal(-1, 0, 0); + clippoly.SetInput(clippd) + clippoly.Update; + clippd.DeepCopy(clippoly.GetOutput); + ## clip ylow + plane.SetOrigin(0, limits(3), 0); + plane.SetNormal(0, 1, 0); + clippoly.SetInput(clippd) + clippoly.Update; + clippd.DeepCopy(clippoly.GetOutput); + ## clip yhigh + plane.SetOrigin(0, limits(4), 0); + plane.SetNormal(0, -1, 0); + clippoly.SetInput(clippd) + clippoly.Update; + clippd.DeepCopy(clippoly.GetOutput); + ## clip zlow + plane.SetOrigin(0, 0, limits(5)); + plane.SetNormal(0, 0, 1); + clippoly.SetInput(clippd) + clippoly.Update; + clippd.DeepCopy(clippoly.GetOutput); + ## clip zhigh + plane.SetOrigin(0, 0, limits(6)); + plane.SetNormal(0, 0, -1); + clippoly.SetInput(clippd) + clippoly.Update; + clippd.DeepCopy(clippoly.GetOutput); +endfunction + + +## notes: ## to set arbitrary ranges on the axes ##f.axes.UseRangesOn ##f.axes.SetRanges(xl,xh,yl,yh,zl,zh) @@ -111,3 +153,5 @@ ## to get at the polydata input of the last actor; hopefully I can then clip it #f.renderer.GetActors.GetLastActor.GetMapper.GetInput + +## can add more inputs (i.e. from other actors) to vtkClipPolyData with AddInput command? \ No newline at end of file |