chart 3D freezed after setting CustomTicksEnabled = true for Z axis
Posted: Mon Mar 18, 2024 11:28 am
Dear Support center.
i am developing spectrum trend, using lightning chart 7.2 trial and C# vs2017.
the plot can be switched between xy and 3dview.
The problem occurs when i call:
v3d.ZAxisPrimary3D.CustomTicksEnabled = true
//where v3d = lightningChartUltimate1.View3D;
after that, 3D view is freezed and i have to set it to viewxy mode.
Could you please check and let me know what s the problem is.
this is the function Plot 3D.
private void Plot3D()
{
View3D v3d = lightningChartUltimate1.View3D;
int selected_spectrum = listBox1.SelectedIndices.Count;
if (selected_spectrum == 0) return;
lightningChartUltimate1.BeginUpdate();
lightningChartUltimate1.ActiveView = ActiveView.View3D;
v3d.YAxisPrimary3D.Title.Text = StringUtils.AmpUnit2String(Unit_allspectrum) + " " + StringUtils.Det2String(Det_allspectrum);
//why?
v3d.ZAxisPrimary3D.CustomTicksEnabled = true;
v3d.ZAxisPrimary3D.AutoDivSpacing = false;
v3d.WaterfallSeries3D.Clear();
v3d.ZAxisPrimary3D.CustomTicks.Clear();
WaterfallSeries3D _waterfall = new WaterfallSeries3D(v3d, Axis3DBinding.Primary, Axis3DBinding.Primary, Axis3DBinding.Primary);
_waterfall.BaseLevel = 0;
_waterfall.WireframeType = WaterfallWireframeType.None;
_waterfall.MouseInteraction = false;
_waterfall.MouseHighlight = MouseOverHighlight.None;
//
int maxlines = 0;
double max_X = 0;
double minz = double.MaxValue, maxz = double.MinValue;
double zpos = 0;
for (int i = 0; i < selected_spectrum; i++)
{
int spectrum_id = listBox1.SelectedIndices;
if (spectrums[spectrum_id].Lines >= maxlines) maxlines = spectrums[spectrum_id].Lines;
if (spectrums[spectrum_id].fmax >= max_X) max_X = spectrums[spectrum_id].fmax;
}
//create
SurfacePoint[,] data = new SurfacePoint[maxlines + 1, listBox1.SelectedIndices.Count];
_waterfall.SetSize(maxlines + 1, selected_spectrum);
//
for (int j = 0; j < selected_spectrum; j++)
{
int spectrum_j = listBox1.SelectedIndices[j];
double delta_f = spectrums[spectrum_j].fmax / spectrums[spectrum_j].Lines;
zpos = ConvertDateTimeToSeconds(spectrums[spectrum_j].recorded_time);
if (zpos >= maxz) maxz = zpos;
if (zpos <= minz) minz = zpos;
for (int k = 0; k <= maxlines; k++)
{
data[k, j].X = k * delta_f;
data[k, j].Y = spectrums[spectrum_j].spectrum_data[k];
data[k, j].Z = zpos;
}
v3d.ZAxisPrimary3D.CustomTicks.Add(
new Arction.WinForms.Charting.Axes.CustomAxisTick(v3d.ZAxisPrimary3D, zpos, spectrums[spectrum_j].recorded_time.ToString("yyyy-MM-dd HH:mm:ss")));
}
v3d.ZAxisPrimary3D.InvalidateCustomTicks();
_waterfall.Data = data;
_waterfall.InvalidateData();
v3d.WaterfallSeries3D.Add(_waterfall);
v3d.XAxisPrimary3D.Minimum = 0;
v3d.XAxisPrimary3D.Maximum = max_X;
v3d.ZAxisPrimary3D.SetRange(minz, maxz);
lightningChartUltimate1.EndUpdate();
}
i am developing spectrum trend, using lightning chart 7.2 trial and C# vs2017.
the plot can be switched between xy and 3dview.
The problem occurs when i call:
v3d.ZAxisPrimary3D.CustomTicksEnabled = true
//where v3d = lightningChartUltimate1.View3D;
after that, 3D view is freezed and i have to set it to viewxy mode.
Could you please check and let me know what s the problem is.
this is the function Plot 3D.
private void Plot3D()
{
View3D v3d = lightningChartUltimate1.View3D;
int selected_spectrum = listBox1.SelectedIndices.Count;
if (selected_spectrum == 0) return;
lightningChartUltimate1.BeginUpdate();
lightningChartUltimate1.ActiveView = ActiveView.View3D;
v3d.YAxisPrimary3D.Title.Text = StringUtils.AmpUnit2String(Unit_allspectrum) + " " + StringUtils.Det2String(Det_allspectrum);
//why?
v3d.ZAxisPrimary3D.CustomTicksEnabled = true;
v3d.ZAxisPrimary3D.AutoDivSpacing = false;
v3d.WaterfallSeries3D.Clear();
v3d.ZAxisPrimary3D.CustomTicks.Clear();
WaterfallSeries3D _waterfall = new WaterfallSeries3D(v3d, Axis3DBinding.Primary, Axis3DBinding.Primary, Axis3DBinding.Primary);
_waterfall.BaseLevel = 0;
_waterfall.WireframeType = WaterfallWireframeType.None;
_waterfall.MouseInteraction = false;
_waterfall.MouseHighlight = MouseOverHighlight.None;
//
int maxlines = 0;
double max_X = 0;
double minz = double.MaxValue, maxz = double.MinValue;
double zpos = 0;
for (int i = 0; i < selected_spectrum; i++)
{
int spectrum_id = listBox1.SelectedIndices;
if (spectrums[spectrum_id].Lines >= maxlines) maxlines = spectrums[spectrum_id].Lines;
if (spectrums[spectrum_id].fmax >= max_X) max_X = spectrums[spectrum_id].fmax;
}
//create
SurfacePoint[,] data = new SurfacePoint[maxlines + 1, listBox1.SelectedIndices.Count];
_waterfall.SetSize(maxlines + 1, selected_spectrum);
//
for (int j = 0; j < selected_spectrum; j++)
{
int spectrum_j = listBox1.SelectedIndices[j];
double delta_f = spectrums[spectrum_j].fmax / spectrums[spectrum_j].Lines;
zpos = ConvertDateTimeToSeconds(spectrums[spectrum_j].recorded_time);
if (zpos >= maxz) maxz = zpos;
if (zpos <= minz) minz = zpos;
for (int k = 0; k <= maxlines; k++)
{
data[k, j].X = k * delta_f;
data[k, j].Y = spectrums[spectrum_j].spectrum_data[k];
data[k, j].Z = zpos;
}
v3d.ZAxisPrimary3D.CustomTicks.Add(
new Arction.WinForms.Charting.Axes.CustomAxisTick(v3d.ZAxisPrimary3D, zpos, spectrums[spectrum_j].recorded_time.ToString("yyyy-MM-dd HH:mm:ss")));
}
v3d.ZAxisPrimary3D.InvalidateCustomTicks();
_waterfall.Data = data;
_waterfall.InvalidateData();
v3d.WaterfallSeries3D.Add(_waterfall);
v3d.XAxisPrimary3D.Minimum = 0;
v3d.XAxisPrimary3D.Maximum = max_X;
v3d.ZAxisPrimary3D.SetRange(minz, maxz);
lightningChartUltimate1.EndUpdate();
}