internal static void parseFields(IfcReference m, List<string> arrFields, ref int ipos) { m.mTypeIdentifier = arrFields[ipos++].Replace("'", ""); m.mAttributeIdentifier = arrFields[ipos++].Replace("'", ""); m.mInstanceName = arrFields[ipos++].Replace("'", ""); string s = arrFields[ipos++]; if (s.StartsWith("(")) m.mListPositions = ParserSTEP.SplitLineFields(s.Substring(1, s.Length - 2)).ConvertAll(x => int.Parse(x)); m.mInnerReference = ParserSTEP.ParseLink(arrFields[ipos++]); }
internal virtual List <IBaseClassIfc> retrieveReference(IfcReference reference) { return(reference.InnerReference != null ? null : new List <IBaseClassIfc>() { }); }
internal static IfcReference Parse(string strDef) { IfcReference m = new IfcReference(); int ipos = 0; parseFields(m, ParserSTEP.SplitLineFields(strDef), ref ipos); return m; }
public IfcReference(DatabaseIfc db, string typeId, string attributeId, string instanceName, List<int> positions, IfcReference inner) : this(db, typeId, attributeId, instanceName, inner) { mListPositions.AddRange(positions); }
public IfcReference(DatabaseIfc db, string typeId, string attributeId, string instanceName, IfcReference inner) : this(db,typeId,attributeId,instanceName) { InnerReference = inner; }
internal IfcReference(IfcReference r) : base() { mTypeIdentifier = r.mTypeIdentifier; mAttributeIdentifier = r.mAttributeIdentifier; mInstanceName = r.mInstanceName; mListPositions.AddRange(r.mListPositions); mInnerReference = r.mInnerReference; }
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); }