GeometryGym.Ifc.IfcElementQuantity.retrieveReference C# (CSharp) Méthode

retrieveReference() private méthode

private retrieveReference ( IfcReference reference ) : List
reference IfcReference
Résultat List
		internal override List<IBaseClassIfc> retrieveReference(IfcReference reference)
		{
			IfcReference ir = reference.InnerReference;
			List<IBaseClassIfc> result = new List<IBaseClassIfc>();
			if (ir == null)
			{
				if (string.Compare(reference.mAttributeIdentifier, "Quantities", true) == 0)
				{
					List<IfcPhysicalQuantity> quants = Quantities;
					if (reference.mListPositions.Count == 0)
					{
						string name = reference.InstanceName;
						if (!string.IsNullOrEmpty(name))
						{
							foreach (IfcPhysicalQuantity q in quants)
							{
								if (string.Compare(q.Name, name) == 0)
									result.Add(q);
							}
						}
						else
							result.AddRange(quants);
					}
					else
					{
						foreach (int i in reference.mListPositions)
						{
							result.Add(quants[i - 1]);
						}
					}
					return result;
				}
			}
			if (string.Compare(reference.mAttributeIdentifier, "Quantities", true) == 0)
			{
				List<IfcPhysicalQuantity> quants = Quantities;
				if (reference.mListPositions.Count == 0)
				{
					string name = reference.InstanceName;

					if (string.IsNullOrEmpty(name))
					{
						foreach (IfcPhysicalQuantity q in quants)
							result.AddRange(q.retrieveReference(reference.InnerReference));
					}
					else
					{
						foreach (IfcPhysicalQuantity q in quants)
						{
							if (string.Compare(name, q.Name) == 0)
								result.AddRange(q.retrieveReference(reference.InnerReference));
						}
					}
				}
				else
				{
					foreach (int i in reference.mListPositions)
						result.AddRange(quants[i - 1].retrieveReference(ir));
				}
				return result;
			}
			return base.retrieveReference(reference);
		}
		internal override bool isEmpty { get { return mQuantities.Count == 0; } }