示例#1
0
        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);
        }
示例#2
0
        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();
        }
示例#4
0
        // 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);
        }