1. IStyleManager<T>

Ниже приводится полный исходный код обобщённого интерфейса, который должен реализовываться всеми разрабатываемыми мною менеджерами стилей AutoCAD:

   1:  using System;
   2:  using System.Xml.Linq;
   3:  using Autodesk.AutoCAD.ApplicationServices;
   4:  using Autodesk.AutoCAD.DatabaseServices;
   5:  namespace Bushman.Autodesk.AutoCAD.Styles
   6:  {
   7:      public interface IStyleManager<T> where T : SymbolTableRecord, new()
   8:      {
   9:          /// <summary>
  10:          /// Добавить в базу данных чертежа новый стиль
  11:          /// </summary>
  12:          /// <param name="style">Объект добавляемого стиля</param>
  13:          void AddToDwg(T style);
  14:          /// <summary>
  15:          /// Добавить определение стиля в xml-файал
  16:          /// </summary>
  17:          /// <param name="styleName">Имя стиля, имеющегося в базе данных чертежа</param>
  18:          void AddToXml(string styleName);
  19:          /// <summary>
  20:          /// Добавить определение стиля в xml-файал
  21:          /// </summary>
  22:          /// <param name="style">Объект стиля</param>
  23:          void AddToXml(T style);
  24:          /// <summary>
  25:          /// Проверка на то, может ли стиль быть удалён из базы данных чертежа.
  26:          /// Если этот стиль используется примитивами - он не может быть удалён.
  27:          /// </summary>
  28:          /// <param name="styleName">Имя стиля</param>
  29:          /// <returns>True - может быть удалён; False - не может быть удалён</returns>
  30:          bool CanBeRemoved(string styleName);
  31:          /// <summary>
  32:          /// Назначение иного стиля всем примитивам, которые используют стиль, объект которого передан
  33:          /// в метод в качестве параметра. Примитивам будет назначен стиль, прописанный в xml-файле как
  34:          /// используемый по умолчанию. Если в чертеже нет такого стиля - он будет создан.
  35:          /// </summary>
  36:          /// <param name="oldStyle">Стиль, который следует прекратить использовать</param>
  37:          void ChangeStyleForPrimitives(T oldStyle);
  38:          /// <summary>
  39:          /// Назначение иного стиля всем примитивам, которые используют стиль, объект которого передан
  40:          /// в метод в качестве параметра. Примитивам будет назначен стиль, который передан методу
  41:          /// в качестве параметра newStyle.
  42:          /// </summary>
  43:          /// <param name="oldStyle">Стиль, который следует прекратить использовать</param>
  44:          /// <param name="newStyle">Стиль, который следует использовать взамен</param>
  45:          void ChangeStyleForPrimitives(T oldStyle, T newStyle);
  46:          /// <summary>
  47:          /// Создать xml-описание стиля
  48:          /// </summary>
  49:          /// <param name="style">Объект стиля</param>
  50:          /// <returns>Xml-описание стиля</returns>
  51:          XElement CreateXml(T style);
  52:          /// <summary>
  53:          /// Чертёж, который подвергается обработке
  54:          /// </summary>
  55:          Document Drawing { get; set; }
  56:          /// <summary>
  57:          /// Проверка настроек стиля на их соответствие тем настройкам, которые прописаны в xml-файле
  58:          /// </summary>
  59:          /// <param name="styleName">Имя проверяемого стиля</param>
  60:          /// <returns>True - настройки стиля соответствуют требованиям; False - не соответствуют</returns>
  61:          bool EqualWithXml(string styleName);
  62:          /// <summary>
  63:          /// Проверка на то, существует ли в чертеже стиль с указанным именем
  64:          /// </summary>
  65:          /// <param name="styleName">Имя стиля, поиск которого выполняется</param>
  66:          /// <returns>True - стиль существует в базе данных чертежа; False - не существует</returns>
  67:          bool ExistInDrawing(string styleName);
  68:          /// <summary>
  69:          /// Проверка на то, существует ли в xml-файле стиль с указанным именем
  70:          /// </summary>
  71:          /// <param name="styleName">Имя стиля, поиск которого выполняется</param>
  72:          /// <returns>True - стиль существует в составе xml-файла; False - не существует</returns>
  73:          bool ExistInXml(string styleName);
  74:          /// <summary>
  75:          /// Получить стиль из базы данных чертежа по его имени
  76:          /// </summary>
  77:          /// <param name="styleName">Имя искомого стиля</param>
  78:          /// <returns>Возвращается объект стиля</returns>
  79:          T GetDrawingStyle(string styleName);
  80:          /// <summary>
  81:          /// Получить все стили, имеющиеся в базе данных чертежа
  82:          /// </summary>
  83:          /// <returns>Возвращается массив объектов стилей</returns>
  84:          T[] GetDrawingStyles();
  85:          /// <summary>
  86:          /// Получить из базы данных чертежа все стили, которые не соответствуют настройкам, 
  87:          /// прописанным в xml-файле
  88:          /// </summary>
  89:          /// <returns>Возвращается массив объектов стилей</returns>
  90:          T[] GetNonStandardStyles();
  91:          T GetStyleFromXml(string styleName);
  92:          /// <summary>
  93:          /// Получить имена всех стилей, имеющихся в xml-файле
  94:          /// </summary>
  95:          /// <returns>Возвращается массив имён стилей</returns>
  96:          string[] GetXmlStyleNames();
  97:          /// <summary>
  98:          /// Добавить в базу данных чертежа новый стиль, создав его на основе одноимённого 
  99:          /// стиля, имеющегося в xml-файле
 100:          /// </summary>
 101:          /// <param name="styleName">Имя стиля</param>
 102:          /// <returns>Возвращается ссылка на добавленный в базу данных чертежа стиль</returns>
 103:          T ImportStyleFromXml(string styleName);
 104:          /// <summary>
 105:          /// Изменить стиль, имеющийся в xml-файле
 106:          /// </summary>
 107:          /// <param name="style">Обновлённый объект стиля</param>
 108:          void ModifyStyleInXml(T style);
 109:          /// <summary>
 110:          /// Удалить стиль из базы данных чертежа
 111:          /// </summary>
 112:          /// <param name="styleName">Имя удаляемого стиля</param>
 113:          void RemoveStyleFromDrawing(string styleName);
 114:          /// <summary>
 115:          /// Удалить стиль из xml-файла
 116:          /// </summary>
 117:          /// <param name="styleName">Имя удаляемого стиля</param>
 118:          void RemoveStyleFromXml(string styleName);
 119:          /// <summary>
 120:          /// Сохранить в xml-файле все произведённые в нём изменения
 121:          /// </summary>
 122:          void SaveSettings();
 123:          /// <summary>
 124:          /// Полный путь к xml-файлу, в котором хранятся определения стилей
 125:          /// </summary>
 126:          string StyleSettingsXmlFilePath { get; set; }
 127:          /// <summary>
 128:          /// Синхронизировать все стили имеющиеся в чертеже с теми стилями, которые
 129:          /// указаны в xml-файле
 130:          /// </summary>
 131:          /// <returns>Возвращается отчёт (в формате xml) о проделанной работе</returns>
 132:          XElement SynchronizationAll();
 133:          /// <summary>
 134:          /// Синхронизировать стиль, имеющийся в чертеже, с одноимённым стилем, который
 135:          /// находится в xml-файле
 136:          /// </summary>
 137:          /// <param name="styleName">Имя стиля</param>
 138:          void SynchronizationStyle(string styleName);
 139:          /// <summary>
 140:          /// Синхронизировать стиль, имеющийся в чертеже, с одноимённым стилем, который
 141:          /// находится в xml-файле
 142:          /// </summary>
 143:          /// <param name="styleName">Имя стиля</param>
 144:          /// <param name="log">Лог синхронизации</param>
 145:          void SynchronizationStyle(string styleName, ref XElement log);
 146:          /// <summary>
 147:          /// Объединение двух стилей в один. Стиль, который передан в качестве первого параметра
 148:          /// будет удалён и останется только стиль, переданный в качестве второго параметра. Все
 149:          /// объекты, использовавшие первый стиль, станут использовать второй стиль.
 150:          /// </summary>
 151:          /// <param name="uniteStyleName">Имя стиля, который должен исчезнуть после объединения</param>
 152:          /// <param name="resultStyleName">Имя стиля, который должен остаться после объединения</param>
 153:          /// <returns>Возвращается ссылка на стиль, оставшийся в результате объединения</returns>
 154:          T UnionStyles(string uniteStyleName, string resultStyleName);
 155:          /// <summary>
 156:          /// Объединение группы стилей в один стиль. Стили, которые переданы в массиве первого параметра
 157:          /// будут удалены и останется только стиль, переданный в качестве второго параметра. Все
 158:          /// объекты, использовавшие удаляемые стили, станут использовать стиль, указанный во втором параметре.
 159:          /// </summary>
 160:          /// <param name="uniteStylesName">Стили, которые должны исчезнуть после объединения</param>
 161:          /// <param name="resultStyleName">Стиль, который должен остаться после объединения</param>
 162:          /// <returns>Возвращается ссылка на стиль, оставшийся в результате объединения</returns>
 163:          T UnionStyles(string[] uniteStylesName, string resultStyleName);
 164:      }
 165:  }



Comments