/// <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; }
/// <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> /// 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")); }