Beispiel #1
0
        void setField()
        {
            Dictionary <string, Dictionary <int, string> > ext = consumer.ExtAliases;

            ext.Clear();
            IFieldConsumer c = consumer;

            for (int i = 0; i < fieldCombo.Count; i++)
            {
                IPhysicalField           ph = c[i];
                string                   fn = consumer.GetRelativeName(ph as IAssociatedObject);
                Dictionary <int, string> d  = null;
                List <ComboBox>          lb = fieldCombo[i];
                for (int j = 0; j < ph.Count; j++)
                {
                    ComboBox cb = lb[j];
                    object   it = cb.SelectedItem;
                    if (it == null)
                    {
                        continue;
                    }
                    if (d == null)
                    {
                        d       = new Dictionary <int, string>();
                        ext[fn] = d;
                    }
                    d[j] = it + "";
                }
            }
        }
 private object[] GetFieldValue(IPhysicalField field)
 {
     if (fieldValue.ContainsKey(field))
     {
         return(fieldValue[field]);
     }
     object[] o = new object[field.Count];
     for (int i = 0; i < o.Length; i++)
     {
         object type = field.GetType(i);
         if (type.GetType().Equals(typeof(double)))
         {
             double a = 0;
             o[i] = a;
             continue;
         }
         if (type is ArrayReturnType)
         {
             ArrayReturnType art = type as ArrayReturnType;
             o[i] = new double[art.Dimension[0]];
         }
         fieldValue[field] = o;
     }
     return(o);
 }
Beispiel #3
0
        void selectField()
        {
            Dictionary <string, Dictionary <int, string> > ext = consumer.ExtAliases;
            IFieldConsumer c = consumer;

            for (int i = 0; i < fieldCombo.Count; i++)
            {
                IPhysicalField ph = c[i];
                string         fn = consumer.GetRelativeName(ph as IAssociatedObject);
                if (!ext.ContainsKey(fn))
                {
                    continue;
                }
                Dictionary <int, string> d  = ext[fn];
                List <ComboBox>          lb = fieldCombo[i];
                for (int j = 0; j < ph.Count; j++)
                {
                    if (!d.ContainsKey(j))
                    {
                        continue;
                    }
                    string   s = d[j];
                    ComboBox b = lb[j];
                    b.SelectCombo(s);
                }
            }
        }
Beispiel #4
0
        //private Dictionary<IMeasurements, bool> isUpdated = new Dictionary<IMeasurements, bool>();

        #endregion

        #region Ctor

        protected PhysicalFieldDataConsumer()
        {
            cons = this;
            IPhysicalField f = this;

            input = new string[f.SpaceDimension];
        }
        void IFieldConsumer.Remove(IPhysicalField field)
        {
            fields.Remove(field);
            results.Remove(field);
            proc.Remove(field);
            updatedFields.Remove(field);
            IList <IMeasurement> del = dic[field];

            foreach (IMeasurement m in del)
            {
                measures.Remove(m);
            }
        }
        private void CreateMesurements(IPhysicalField field)
        {
            string name = this.GetRelativeName(field as IAssociatedObject) + "_";

            name = name.Replace(".", "_");
            name = name.Replace("/", "_");
            int n = field.Count;
            IList <IMeasurement> lm = new List <IMeasurement>();
            IList <ProcessField> pr = new List <ProcessField>();
            IList <object>       lo = new List <object>();

            dic[field]     = lm;
            proc[field]    = pr;
            results[field] = lo;
            IMeasurement mea = null;

            measures.Clear();
            for (int i = 0; i < n; i++)
            {
                object       result = null;
                ProcessField pf     = null;
                string       na     = name + (i + 1);
                object       type   = field.GetType(i);
                object       tt     = field.GetTransformationType(i);
                if (type is ArrayReturnType)
                {
                    if (tt.Equals(Field3D_Types.CovariantVector))
                    {
                        pf = ProcessCovariantVector;
                    }
                    else
                    {
                        pf = ProcessInvariantVector;
                    }
                    ArrayReturnType art = type as ArrayReturnType;
                    int             dim = art.Dimension[0];
                    result = new double[dim];
                    mea    = new FieldMeasurement(na, type, result);
                }
                else
                {
                    pf     = ProcessSimpleType;
                    result = new object[1];
                    mea    = new FieldMeasurementElement(na, type, result as object[]);
                }
                lm.Add(mea);
                pr.Add(pf);
                lo.Add(result);
                measures.Add(mea);
            }
        }
Beispiel #7
0
        void fillField()
        {
            Panel p = panelFieldParameters;

            p.Controls.Clear();
            fieldCombo.Clear();
            IFieldConsumer cons = consumer;
            int            y    = 0;

            for (int i = 0; i < cons.Count; i++)
            {
                IPhysicalField ph = cons[i];
                Control        h  = DataPerformer.UI.HeaderControl.GetHeaderControl(consumer as IAssociatedObject, ph as IAssociatedObject);
                h.Left = 0;
                h.Top  = y;
                p.Controls.Add(h);
                y = h.Bottom;
                List <ComboBox> lb = new List <ComboBox>();
                fieldCombo.Add(lb);
                for (int j = 0; j < ph.Count; j++)
                {
                    object t  = ph.GetType(j);
                    string tn = " (" + Measurement.GetTypeName(t) + ")";
                    Label  l  = new Label();
                    l.Text  = ResourceService.Resources.GetControlResource("Parameter", Motion6D.UI.Utils.ControlUtilites.Resources) + " " + (j + 1) + tn;
                    l.Left  = 10;
                    l.Top   = y;
                    l.Width = 400;
                    p.Controls.Add(l);
                    ComboBox cb = new ComboBox();
                    lb.Add(cb);
                    cb.Top   = l.Bottom + 5;
                    cb.Left  = l.Left + 50;
                    cb.Width = p.Width - cb.Left - 20;
                    p.Controls.Add(cb);
                    IList <string> list = consumer.GetAliases(t);
                    cb.FillCombo(list);
                    y = cb.Bottom + 5;
                }
                Panel sep = new Panel();
                sep.Width     = p.Width - 20;
                sep.BackColor = Color.Black;
                sep.Height    = 3;
                sep.Top       = y;
                p.Controls.Add(sep);
                y = sep.Bottom;
            }
            selectField();
        }
        void IFieldConsumer.Add(IPhysicalField field)
        {
            object o = (field as IAssociatedObject).GetObject <IPositionObject>();

            if (o == null)
            {
                throw new Exception("Field should have position");
            }
            fields.Add(field);
            updatedFields[field] = false;
            if (!isSerialized)
            {
                CreateMesurements(field);
            }
        }
Beispiel #9
0
        void IFieldConsumer.Add(IPhysicalField field)
        {
            if (this.field != null)
            {
                throw new Exception("Field of this object already exist");
            }
            if (!(field is IPositionObject))
            {
                throw new Exception("Field has no postion");
            }
            this.field = field;
            IPositionObject po = field as IPositionObject;

            fieldFrame = ReferenceFrame.GetOwnFrame(po.Position);
            CreateDelegate();
        }
Beispiel #10
0
        public static int[] GetFields(IPhysicalField field, object type,
                                      object transformationType)
        {
            List <int> l = new List <int>();
            int        n = field.Count;

            for (int i = 0; i < n; i++)
            {
                object t  = field.GetType(i);
                object tr = field.GetTransformationType(i);
                if (t.Equals(type) & tr.Equals(transformationType))
                {
                    l.Add(i);
                }
            }
            return(l.ToArray());
        }
Beispiel #11
0
 void IFieldConsumer.Remove(IPhysicalField field)
 {
     fields.Remove(field);
 }
Beispiel #12
0
 void IFieldConsumer.Add(IPhysicalField field)
 {
     fields.Add(field);
 }
Beispiel #13
0
 internal FieldComponent(IPhysicalField field, int number)
 {
     this.field = field;
     this.num   = number;
 }
Beispiel #14
0
 void IFieldConsumer.Remove(IPhysicalField field)
 {
     this.field = null;
     transform  = null;
     num        = -1;
 }