Exemple #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Subassembly"/> class.
        /// </summary>
        /// <param name="subassembly">The subassembly.</param>
        /// <param name="corridor">The corridor.</param>
        internal Subassembly(AeccSubassembly subassembly, AeccCorridor corridor)
        {
            this._subassembly = subassembly;
            this._corridor    = corridor;

            foreach (var p in subassembly.ParamsBool)
            {
                this._parameters.Add(new SubassemblyParameter((IAeccParam)p));
            }
            foreach (var p in subassembly.ParamsDouble)
            {
                this._parameters.Add(new SubassemblyParameter((IAeccParam)p));
            }
            foreach (var p in subassembly.ParamsLong)
            {
                this._parameters.Add(new SubassemblyParameter((IAeccParam)p));
            }
            foreach (var p in subassembly.ParamsString)
            {
                this._parameters.Add(new SubassemblyParameter((IAeccParam)p));
            }
        }
Exemple #2
0
        /// <summary>
        /// Sets SubassemblyParameter value by name.
        /// </summary>
        /// <param name="name">The parameter name.</param>
        /// <param name="value">The value.</param>
        /// <param name="rebuild">if set to <c>true</c> [rebuild].</param>
        /// <returns></returns>
        /// <exception cref="Exception">
        /// The parameter name cannot be null
        /// or
        /// The value cannot be null
        /// or
        /// or
        /// </exception>
        public Subassembly SetParameterByName(string name, object value, bool rebuild = false)
        {
            Utils.Log(string.Format("Subassembly.SetParameterByName started...", ""));

            if (null == name)
            {
                throw new Exception("The parameter name cannot be null");
            }

            if (null == value)
            {
                throw new Exception("The value cannot be null");
            }

            SubassemblyParameter parameter = null;

            try
            {
                parameter = this.Parameters.First(x => x.Name == name);
            }
            catch (Exception ex)
            {
                var message = string.Format("No parameter {0} found on this Subassembly", name);

                Utils.Log(string.Format("ERROR: Subassembly.SetParameterByName {0} {1}", message, ex.Message));

                throw new Exception(message);
            }

            if (null != parameter)
            {
                if (parameter.Type == SubassemblyParameterType.Bool && value is bool)
                {
                    var p = parameter.InternalElement as AeccParamBool;
                    p.Value = Convert.ToBoolean(value);
                }

                else if (parameter.Type == SubassemblyParameterType.Double && (value is double || value is int))
                {
                    var p = parameter.InternalElement as AeccParamDouble;
                    p.Value = Convert.ToDouble(value);
                }

                else if (parameter.Type == SubassemblyParameterType.Long && (value is long || value is double || value is int))
                {
                    var p = parameter.InternalElement as AeccParamLong;
                    p.Value = Convert.ToInt32(value);
                }
                else if (parameter.Type == SubassemblyParameterType.String && value is string)
                {
                    var p = parameter.InternalElement as AeccParamString;
                    p.Value = Convert.ToString(value);
                }
                else
                {
                    var message = string.Format("The value does not match the parameter data type {0}", parameter.Type);

                    Utils.Log(string.Format("ERROR: Subassembly.SetParameterByName {0}", message));

                    throw new Exception(message);
                }
            }

            if (rebuild)
            {
                AeccSubassembly sa = this.InternalElement as AeccSubassembly;
                this._corridor.Rebuild();
            }

            Utils.Log(string.Format("Subassembly.SetParameterByName completed.", ""));

            return(this);
        }