Inheritance: ICloneable
Beispiel #1
0
        /// <summary>
        /// Al construir un LineElement se necesita un prototipo de Propiedades, que define el tipo de elemento que
        /// se forma. De esta manera, después de construir el elemento no se le puede cambiar el tipo, además de que
        /// se pueden crear varios elementos con las mismas propiedades. La constructora clona al prototipo, de manera
        /// que un objeto externo puede crear varios elementos con el mismo objeto de propiedades.
        /// </summary>
        /// <param name="prototype">El prototipo de propiedades.</param>
        public LineElement(LineProps prototype)
        {
            props  = (LineProps)prototype.Clone();
            joints = new Joint[2];
            angle  = 0;
            dofI   = new JointDOF(true);
            dofJ   = new JointDOF(true);

            Joint j = Model.Instance.JointList[1];
            int   i = 1;

            while (j == null && i < Model.Instance.JointList.Count)
            {
                j = Model.Instance.JointList[i++];
            }
            if (j != null)
            {
                I = j;
                J = j;
            }
            else
            {
                throw new NullReferenceException(Culture.Get("EM0020"));
            }
        }
Beispiel #2
0
 /// <summary>
 /// Constructora de copia que inicializa el LineElement como un clon de otro.
 /// </summary>
 /// <param name="src">El LineElement a copiar</param>
 internal LineElement(LineElement src, Joint i, Joint j) : base(src)
 {
     props         = (LineProps)src.Properties.Clone();
     joints        = new Joint[2];
     angle         = src.Angle;
     cardinalPoint = src.CardinalPoint;
     offsets       = src.EndOffsets;
     dofI          = src.DoFI;
     dofJ          = src.DoFJ;
     joints[0]     = i;
     joints[1]     = j;
 }
        /// <summary>
        /// Constructora que inicializa el LineElement con un clon de las propiedades indicadas y los nodos indicados.
        /// Si los nodos no están en la lista correspondiente, en la posición adecuada, se lanza una NullReferenceException
        /// Se recomienda usar esta constructora para minimizar el consumo de memoria en Model.Undo
        /// </summary>
        /// <param name="prototype"></param>
        /// <param name="i"></param>
        /// <param name="j"></param>
        public LineElement(LineProps prototype, Joint i, Joint j)
        {
            props = (LineProps)prototype.Clone();
            joints = new Joint[2];
            angle = 0;
            dofI = new JointDOF(true);
            dofJ = new JointDOF(true);

            if (i == null || j == null || 
                Model.Instance.JointList[i.Id] != i || Model.Instance.JointList[j.Id] != j)
                throw new NullReferenceException(Culture.Get("EM0021"));
            I = i;
            J = j;
        }
Beispiel #4
0
        /// <summary>
        /// Constructora que inicializa el LineElement con un clon de las propiedades indicadas y los nodos indicados.
        /// Si los nodos no están en la lista correspondiente, en la posición adecuada, se lanza una NullReferenceException
        /// Se recomienda usar esta constructora para minimizar el consumo de memoria en Model.Undo
        /// </summary>
        /// <param name="prototype"></param>
        /// <param name="i"></param>
        /// <param name="j"></param>
        public LineElement(LineProps prototype, Joint i, Joint j)
        {
            props  = (LineProps)prototype.Clone();
            joints = new Joint[2];
            angle  = 0;
            dofI   = new JointDOF(true);
            dofJ   = new JointDOF(true);

            if (i == null || j == null ||
                Model.Instance.JointList[i.Id] != i || Model.Instance.JointList[j.Id] != j)
            {
                throw new NullReferenceException(Culture.Get("EM0021"));
            }
            I = i;
            J = j;
        }
        /// <summary>
        /// Al construir un LineElement se necesita un prototipo de Propiedades, que define el tipo de elemento que
        /// se forma. De esta manera, después de construir el elemento no se le puede cambiar el tipo, además de que
        /// se pueden crear varios elementos con las mismas propiedades. La constructora clona al prototipo, de manera
        /// que un objeto externo puede crear varios elementos con el mismo objeto de propiedades.
        /// </summary>
        /// <param name="prototype">El prototipo de propiedades.</param>
        public LineElement(LineProps prototype)
        {
            props = (LineProps)prototype.Clone();
            joints = new Joint[2];
            angle = 0;
            dofI = new JointDOF(true);
            dofJ = new JointDOF(true);

            Joint j = Model.Instance.JointList[1];
            int i = 1;
            while (j == null && i < Model.Instance.JointList.Count)
                j = Model.Instance.JointList[i++];
            if (j != null)
            {
                I = j;
                J = j;
            }
            else
                throw new NullReferenceException(Culture.Get("EM0020"));
        }
 /// <summary>
 /// Constructora de copia que inicializa el LineElement como un clon de otro.
 /// </summary>
 /// <param name="src">El LineElement a copiar</param>
 internal LineElement(LineElement src, Joint i, Joint j) : base(src)
 {
     props = (LineProps)src.Properties.Clone();
     joints = new Joint[2];
     angle = src.Angle;
     cardinalPoint = src.CardinalPoint;
     offsets = src.EndOffsets;
     dofI = src.DoFI;
     dofJ = src.DoFJ;
     joints[0] = i;
     joints[1] = j;
 }