public void UpdateValueTable(MultiValueTable _to_update, List <double> _Xs, string _unit_x, List <double> _Ys, string _unit_y, List <double> _Zs, string _unit_z, List <double> _Fs, bool _can_interpolate, string _name) { if (_to_update == null) { return; } if (_Xs == null || _Ys == null || _Zs == null || _Fs == null) { return; } if (!this.value_record.Contains(_to_update)) { return; } // remove old bool successful_delete = this.DeleteRecord(_to_update.MVID); if (!successful_delete) { return; } // create new Dictionary <Point3D, double> field = MultiValueFactory.ConvertToDictionary(_Fs, _Xs.Count, _Ys.Count, _Zs.Count); if (field.Count < 1) { return; } double min_x = _Xs.Min(); double max_x = _Xs.Max(); double min_y = _Ys.Min(); double max_y = _Ys.Max(); double min_z = _Zs.Min(); double max_z = _Zs.Max(); MultiValueTable created = this.ReconstructTable(_to_update.MVID, _name, _can_interpolate, _to_update.MVDisplayVector, _Xs.Count, min_x, max_x, _unit_x, _Ys.Count, min_y, max_y, _unit_y, _Zs.Count, min_z, max_z, _unit_z, _Xs, _Ys, _Zs, field); }
public MultiValueTable CreateValueTable(List <double> _Xs, string _unit_x, List <double> _Ys, string _unit_y, List <double> _Zs, string _unit_z, List <double> _Fs, bool _can_interpolate, string _name) { // determine which constructor to call if (_Fs == null || _Fs.Count < 1) { return(null); } if (_Xs == null || _Xs.Count < 1) { return(null); } MultiValueTable created = null; if (_Ys == null || _Ys.Count < 2) { created = new MultiValueTable1D(_Xs, _unit_x, _unit_y, _unit_z, _Fs, _can_interpolate, _name); } else if (_Zs == null || _Zs.Count < 2) { created = new MultiValueTable2D(_Xs, _unit_x, _Ys, _unit_y, _unit_z, _Fs, _can_interpolate, _name); } else { created = new MultiValueTable3D(_Xs, _unit_x, _Ys, _unit_y, _Zs, _unit_z, _Fs, _can_interpolate, _name); } // check if a valid value table was created if (created == null) { return(null); } if (created.NrX == 0) { return(null); } this.value_record.Add(created); return(created); }
private void btn_OK_Click(object sender, RoutedEventArgs e) { // get the data from the containers List <double> xs, ys, zs; List <List <double> > Fxyzs; if (this.MVFactory != null && this.value_field != null) { this.value_field.AssembleFieldInfo(out xs, out ys, out zs, out Fxyzs); List <double> Fxyzs_flat = new List <double>(); foreach (List <double> entry in Fxyzs) { Fxyzs_flat.AddRange(entry); } // update or save new if (this.in_edit_mode && this.to_edit != null) { this.MVFactory.UpdateValueTable(this.to_edit, xs, this.in_unitX.Text, ys, this.in_unitY.Text, zs, this.in_unitZ.Text, Fxyzs_flat, this.chb_interp.IsChecked.Value, this.in_Name.Text); this.in_edit_mode = false; } else { MultiValueTable created = this.MVFactory.CreateValueTable(xs, this.in_unitX.Text, ys, this.in_unitY.Text, zs, this.in_unitZ.Text, Fxyzs_flat, this.chb_interp.IsChecked.Value, this.in_Name.Text); } } this.DialogResult = true; this.Close(); }
// only call when parsing internal MultiValueTable ReconstructTable(long _id, string _name, bool _can_interpolate, MultiValPointer _disp_vect, int _nr_x, double _min_x, double _max_x, string _unit_x, int _nr_y, double _min_y, double _max_y, string _unit_y, int _nr_z, double _min_z, double _max_z, string _unit_z, List <double> _Xs, List <double> _Ys, List <double> _Zs, Dictionary <Point3D, double> _Fs) { if (_id < 0) { return(null); } // determine which constructor to call if (_Fs == null || _Fs.Count < 1) { return(null); } if (_Xs == null || _Xs.Count < 1) { return(null); } MultiValueTable created = null; if (_Ys == null || _Ys.Count < 2) { created = new MultiValueTable1D(_id, _name, _can_interpolate, _disp_vect, _nr_x, _min_x, _max_x, _unit_x, _Xs, _unit_y, _unit_z, _Fs); } else if (_Zs == null || _Zs.Count < 2) { created = new MultiValueTable2D(_id, _name, _can_interpolate, _disp_vect, _nr_x, _min_x, _max_x, _unit_x, _nr_y, _min_y, _max_y, _unit_y, _Xs, _Ys, _unit_z, _Fs); } else { created = new MultiValueTable3D(_id, _name, _can_interpolate, _disp_vect, _nr_x, _min_x, _max_x, _unit_x, _nr_y, _min_y, _max_y, _unit_y, _nr_z, _min_z, _max_z, _unit_z, _Xs, _Ys, _Zs, _Fs); } // check if a valid value table was created if (created == null) { return(null); } if (created.NrX == 0) { return(null); } // create this.value_record.Add(created); // adjust type counter MultiValue.NR_MULTI_VALUES = Math.Max(MultiValue.NR_MULTI_VALUES, created.MVID); // done return(created); }