private static void geSummaryXmlRecurse_(XmlInstanceApi api, string instance, ref HashSet <string> summary, bool includeRelations = true) { summary.Add(prepair_(instance)); if (!includeRelations) { return; } string instId = XmlInstanceApi.GetInstanceIdFromXmlInstance(instance); IList <string> relations = api.ReadRelationshipInstances(instId); foreach (string relation in relations) { string sourceId, targetId; XmlInstanceApi.GetInstanceIdsFromXmlRelationshipInstance( relation, out sourceId, out targetId); string sourceInst = api.ReadInstance(sourceId); string targetInst = api.ReadInstance(targetId); foreach (string subInst in new string[] { sourceInst, targetInst }) { string xmlData = prepair_(subInst); if (!summary.Contains(xmlData)) { summary.Add(xmlData); geSummaryXmlRecurse_(api, subInst, ref summary, includeRelations); } } } }
public static IEnumerable <string> getSp3dXmlData(Element element, bool includeRelations = true) { var summary = new HashSet <string>(); var modelSchema = new XmlInstanceSchemaManager(element.ModelRef); XmlInstanceApi api = XmlInstanceApi.CreateApi(modelSchema); IList <string> instances = api.ReadInstances(element.ElementRef); foreach (string inst in instances) { #if DEBUG //geSummaryXmlRecurse_(api, inst, ref summary, includeRelations); //continue; #endif summary.Add(prepair_(inst)); if (!includeRelations) { continue; } string instId = XmlInstanceApi.GetInstanceIdFromXmlInstance(inst); IList <string> relations = api.ReadRelationshipInstances(instId); foreach (string relation in relations) { string sourceId, targetId; XmlInstanceApi.GetInstanceIdsFromXmlRelationshipInstance( relation, out sourceId, out targetId); string sourceInst = api.ReadInstance(sourceId); string targetInst = api.ReadInstance(targetId); foreach (string subInst in new string[] { sourceInst, targetInst }) { summary.Add(prepair_(subInst)); } } } return(summary); }