/// <summary> /// Load a family from xml /// </summary> /// <param name="familyXElement"></param> /// <param name="findFolderUtility"></param> private void ParseFamilyFromXml(XElement familyXElement, FindFolderUtility findFolderUtility) { XAttribute xafilename = familyXElement.Attribute(XName.Get("filename")); string familyPath = xafilename.Value; if (!System.IO.File.Exists(familyPath)) { string filename = System.IO.Path.GetFileName(familyPath); familyPath = findFolderUtility.FindFileFolder(filename); if (!System.IO.File.Exists(familyPath)) { throw new RoutingPreferenceDataException("Cannot find family file: " + xafilename.Value); } } if (string.Compare(System.IO.Path.GetExtension(familyPath), ".rfa", true) != 0) { throw new RoutingPreferenceDataException(familyPath + " is not a family file."); } try { if (!m_document.LoadFamily(familyPath)) { return; //returns false if already loaded. } } catch (System.Exception ex) { throw new RoutingPreferenceDataException("Cannot load family: " + xafilename.Value + ": " + ex.ToString()); } }
/// <summary> /// Create xml from a family /// </summary> /// <param name="pipeFitting"></param> /// <param name="findFolderUtility"></param> /// <param name="pathNotFound"></param> /// <returns></returns> private static XElement CreateXmlFromFamily(FamilySymbol pipeFitting, FindFolderUtility findFolderUtility, ref bool pathNotFound) { //Try to find the path of the .rfa file. string path = findFolderUtility.FindFileFolder(pipeFitting.Family.Name + ".rfa"); string pathToWrite; if (path == "") { pathNotFound = true; pathToWrite = pipeFitting.Family.Name + ".rfa"; } else { pathToWrite = path; } XElement xFamilySymbol = new XElement(XName.Get("Family")); xFamilySymbol.Add(new XAttribute(XName.Get("filename"), pathToWrite)); return(xFamilySymbol); }