How to append a contour map to a surface gizmo plot in Igor 7

In Igor 6, one can use "append contours..." under Gizmo menu to append contour to a surface gizmo plot.

In Igor 7, I dont find any command like "append contours..."

Including "All Gizmo Procedures" in Igor 7 does not work.

I notice in Igor7 one can append RGB images to a gizmo plot, that means I can save a real contour image first and then reload it for gizmo image. This is appearently not straitforward. Does any one know other ways for appending contours?

Thanks.

IP6 Gizmo contours were supported via procedures which are still available. The basic idea is to first create a contour plot of the data and then extract the waves describing the contour traces. The waves contain XY values. For display in Gizmo you need to convert into XYZ triplets which you then display as a path object.

In general I do not recommend using path objects to attempt to display contours on the surface itself. Paths are appropriate if you want to add the contours with some offset to the surface itself.

I do not recommend using a Gizmo Image to display contours because of the difficulty of scaling all the objects correctly.

Another idea (not using a contour) can be illustrated by the following example:
make/n=(200,300) ddd=sin(x/40)*cos(y/30)

and add the following recreation macro:
Window gizmo0() : GizmoPlot
    PauseUpdate; Silent 1       // building window...
    // Building Gizmo 7 window...
    NewGizmo/W=(400,45,915,505)
    ModifyGizmo startRecMacro=700
    ModifyGizmo scalingOption=63
    AppendToGizmo Surface=root:ddd,name=surface0
    ModifyGizmo ModifyObject=surface0,objectType=surface,property={ srcMode,0}
    ModifyGizmo ModifyObject=surface0,objectType=surface,property={ surfaceCTab,Rainbow}
    AppendToGizmo Axes=boxAxes,name=axes0
    ModifyGizmo ModifyObject=axes0,objectType=Axes,property={-1,axisScalingMode,1}
    ModifyGizmo ModifyObject=axes0,objectType=Axes,property={-1,axisColor,0,0,0,1}
    ModifyGizmo ModifyObject=axes0,objectType=Axes,property={0,ticks,3}
    ModifyGizmo ModifyObject=axes0,objectType=Axes,property={1,ticks,3}
    ModifyGizmo ModifyObject=axes0,objectType=Axes,property={2,ticks,3}
    ModifyGizmo modifyObject=axes0,objectType=Axes,property={-1,Clipped,0}
    AppendToGizmo Surface=root:ddd,name=surface1
    ModifyGizmo ModifyObject=surface1,objectType=surface,property={ srcMode,0}
    ModifyGizmo ModifyObject=surface1,objectType=surface,property={ surfaceCTab,Rainbow}
    ModifyGizmo setDisplayList=0, object=surface0
    ModifyGizmo setDisplayList=1, object=axes0
    ModifyGizmo setDisplayList=2, opName=translate0, operation=translate, data={0,0,-0.99}
    ModifyGizmo setDisplayList=3, opName=scale0, operation=scale, data={1,1,0.001}
    ModifyGizmo setDisplayList=4, object=surface1
    ModifyGizmo autoscaling=1
    ModifyGizmo currentGroupObject=""
    ModifyGizmo showInfo
    ModifyGizmo infoWindow={933,23,1750,322}
    ModifyGizmo endRecMacro
    ModifyGizmo SETQUATERNION={0.532829,-0.178963,-0.269674,0.781884}
EndMacro


I hope this helps,

A.G.
WaveMetrics, Inc.