/// <summary> /// Create a new ClassificationCache. /// </summary> /// <param name="doc">The document.</param> public ClassificationCache(Document doc) { IFCClassificationMgr savedClassificationFromUI = new IFCClassificationMgr(doc); // The UI currently supports only one, but future UIs may support a list. IList<IFCClassification> classifications; if (savedClassificationFromUI.GetSavedClassifications(doc, null, out classifications)) { foreach (IFCClassification classification in classifications) { bool classificationHasName = !string.IsNullOrWhiteSpace(classification.ClassificationName); if (classificationHasName) ClassificationsByName[classification.ClassificationName] = classification; if (!string.IsNullOrWhiteSpace(classification.ClassificationFieldName)) { string[] splitResult = classification.ClassificationFieldName.Split(new Char[] { ',', ';', '\t', '\n' }, StringSplitOptions.RemoveEmptyEntries); for (int i=0; i<splitResult.Length; i++) { // found [<Classification Field Names>] string classificationFieldName = splitResult[i].Trim(); CustomClassificationCodeNames.Add(classificationFieldName); if (classificationHasName) FieldNameToClassificationNames[classificationFieldName] = classification.ClassificationName; } } } } }