Описание пользователя
Глава 3. Использование стандартных модулей автокомпиляции
§3.4. Копирование блоков и схем с автокомпилируемыми моделями и совместное использование моделей
Описывается особенности копирования блоков с автокомпилируемыми моделями в пределах одной схемы и между схемами. Рассматривается совместное использование одной модели несколькими блоками и схемами, а также связанные с этим возможные проблемы и способы их решения.
Хранение автокомпилируемых моделей блоков не внутри файла схемы, а в отдельных файлах дает возможность использовать одну и ту же модель в разных блоках разных схем. В файле схемы запоминается не сам текст модели, а только имя файла модели и путь к нему. При этом необходимо следить за тем, чтобы у RDS был доступ к файлам моделей: произвольное их перемещение и переименование, а также перемещение самого файла схемы может привести к неработоспособности этой схемы. Если, например, файл схемы был перемещен в другую папку средствами файлового менеджера Windows, при загрузке этой схемы RDS может не найти связанные с ней файлы моделей. Эту ошибку легко исправить, вручную скопировав файлы моделей в новую папку или изменив пути к ним в окнах параметров всех затронутых блоков (см. рис. 322, список всех используемых схемой автокомпилируемых моделей можно узнать в окне информации о схеме). Кроме того, в некоторых случаях RDS может автоматически скопировать файл модели в новую папку – об этом пользователю выдаются соответствующие сообщения, в которых он может согласиться на такое копирование или отказаться от него. Ниже эти сообщения будут рассмотрены подробно.
Если автокомпилируемая модель находится в одной папке с использующей ее схемой, в файле схемы запоминается только имя файла модели без пути – это позволяет перемещать всю папку со схемой и ее моделями без потери работоспособности. Однако, полный путь к файлу модели тоже запоминается скрыто от пользователя (для этого используется так называемое «альтернативное» имя модели, к которому имеют доступ только программисты, создающие модули автокомпиляции – этот параметр описан в §3.1 руководства программиста). Запомненный полный путь в некоторых случаях позволяет модулю автокомпиляции находить «потерянные» модели. Если, например, переместить или скопировать файл схемы, в одной папке с которой находились файлы ее автокомпилируемых моделей, а сами файлы моделей не скопировать, при загрузке схемы модулю не удастся найти эти модели в новой папке. Потерпев неудачу, он попытается найти их по запомненному для каждой модели полному пути. Если файлы модели все еще находятся на старом месте, пользователю будет выдано сообщение, в котором ему будет предложено либо привязать схему к старым моделям, либо сделать для них копию в новой папке (рис. 329).
Рис. 329. Запрос, выдающийся пользователю при загрузке схемы,
не нашедшей свой файл модели
Пользователь может установить один из двух взаимоисключающих флажков:
- «». При установке этого флажка в схеме будет запомнен полный путь к старому файлу модели, оставшемуся на прежнем месте. Схема будет оставаться привязанной к этому файлу при всех ее последующих перемещениях. Если в этот файл будут внесены изменения при работе с какой-либо другой схемой (например, со старой копией этой схемы), эти изменения распространятся и на данную схему. Выбирать этот вариант нужно с осторожностью, привязка схемы к файлу модели в нестандартной папке по абсолютному пути обычно не рекомендуется: с большой вероятностью такой файл модели находится в папке с другой схемой, и, если кто-нибудь переместит эту папку целиком вместе со всеми ее файлами, данная схема уже не сможет найти модель (при этом другая, перемещенная, схема сохранит работоспособность).
- «». При установке этого флажка файл модели из старой папки будет скопирован в папку, в которой находится данная схема – фактически, выполняется то, что должен был сделать пользователь, чтобы копируемая или перемещаемая в новую папку схема сохранила работоспособность. Выбор этого варианта наиболее предпочтителен: раз файл модели находится в нестандартной папке, он, вероятнее всего, не универсален, а относится к какой-то конкретной схеме, находящейся в этой же папке. Скопировав эту схему в другую папку, нужно скопировать и относящиеся к ней файлы моделей, при этом старая и новая схемы будут работать независимо, и изменения их моделей не будут влиять друг на друга. Новое имя, которое файл модели получит после копирования, отображается под флажком. Путь к файлу будет совпадать с путем к схеме, с которой он будет связан (он копируется в ее папку), а имя, по возможности, останется прежним. В параметрах блока имя файла модели будет запомнено без пути, поскольку он находится в одной папке со схемой. После копирования файла модели папку схемы со всеми внутренними файлами можно будет перемещать без потери работоспособности.
При копировании блока с автокомпилируемой моделью через буфер обмена также возможно несколько вариантов: пользователь должен решить, будет ли копия блока связана с тем же самым файлом модели (у двух блоков будет общая модель), или необходимо сделать для нее копию модели, чтобы модели исходного и скопированного блока можно было изменять независимо. Об этом пользователю выдается соответствующий запрос (рис. 330).
Рис. 330. Запрос, выдающийся пользователю при вставке блока с
автокомпилируемой моделью из буфера обмена
Пользователь должен установить один из трех взаимоисключающих флажков:
- «». При выборе этого флажка копия блока будет связана с тем же файлом модели, что и исходный блок. Модель станет общей для этих двух блоков, и изменения в ней будут влиять на оба сразу.
- «». При установке этого флажка вместе с копией блока будет сделана копия файла модели – старый блок останется привязанным к старому файлу, новый будет привязан к этой копии. Модели блоков при этом можно будет изменять независимо, они не будут влиять друг на друга. Модель будет скопирована в папку данной схемы. Имя для копии файла модели выбирается автоматически, оно выводится под флажком. Модуль автокомпиляции пытается сохранить имя файла модели при копировании, если же это невозможно (например, копия будет помещена в ту же папку, что и оригинал, и не может иметь с ним одинаковое имя), к старому имени модели спереди добавляется имя схемы, а сзади, возможно, число для обеспечения уникальности имени.
- «». Этот флажок действует аналогично предыдущему, за исключением того, что имя файла для копии модели пользователь может выбрать вручную, введя его в поле ввода под флажком или нажав кнопку «».
В нижней части окна запроса находится дополнительный флажок «», при установке которого выбранный пользователем вариант будет запомнен и, в дальнейшем, будет автоматически применяться ко всем копируемым блокам без выдачи запроса. Запомнены могут быть только первый и второй варианты – третий требует ввода имени копии модели вручную, поэтому не может быть применен автоматически без запроса пользователю. Выбранный вариант запоминается только до конца текущей операции, то есть вставки группы блоков из буфера обмена.
Если пользователь закроет окно запроса не кнопкой «», а кнопкой «», то, независимо от установленного флажка, копирование блока из буфера обмена будет отменено.
Следует учитывать, что при некоторых настройках совместного использования модели запрос при копировании выдаваться не будет, и файл модели будет копироваться автоматически.
Похожий запрос выдается пользователю в тех случаях, когда он сохраняет схему в другой файл при помощи пункта главного меню RDS «», если эта схема использует автокомпилируемые модели, находящиеся в одной с ней папке. Пользователь может либо оставить схему связанной со старыми файлами моделей, либо сделать их копии (рис. 331).
Рис. 331. Запрос, выдающийся пользователю при сохранении схемы с
автокомпилируемыми моделями под другим именем
Пользователь должен установить один из двух взаимоисключающих флажков:
- «» – схема остается связанной со старыми файлами моделей. Этот вариант рекомендуется использовать только в том случае, если схема сохраняется под другим именем в ту же папку, что и старая. В этом случае в обеих схемах ссылки на файлы моделей будут запомнены без путей, и всю папку с этими схемами и их моделями можно будет перемещать с места на место без потери работоспособности. Модели у обеих схем будут общими, и изменения в них будут влиять сразу на обе схемы.
- «» – в папке новой схемы создаются копии всех файлов моделей, связанных со старой и находившихся в одной с ней папке. Имена этим копиям присваиваются автоматически, пользователь не может ввести их вручную (тем не менее, он может позже открыть окна параметров блоков новой схемы и изменить там имена файлов моделей вручную кнопкой «»). Выбор этого варианта рекомендуется при сохранении копии схемы в другую папку, чтобы скопированная схема стала полностью независимой от старой и не имела с ней общих моделей.
Дополнительный флажок «» запоминает выбранный пользователем вариант и автоматически применяет его до следующего сохранения схемы.
При работе с моделями, которые используются в нескольких схемах одновременно, следует помнить, что для компиляции измененной модели модулю необходим монопольный доступ к файлу DLL, создаваемому в результате компиляции – в противном случае он не сможет заменить этот файл на новый. Такое может случиться, если две схемы, использующие одну и ту же модель, открыты в двух одновременно запущенных копиях RDS. Файл DLL при этом будет загружен в память обоих приложений и заблокирован от изменений, что приведет к невозможности компиляции модели. Решить эту проблему можно временно закрыв все одновременно работающие копии RDS кроме той, из которой вызван редактор модели. После внесения в модель изменений и успешной компиляции можно будет снова открыть схемы в нескольких копиях RDS.