Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
developers:tutorial:dwpfields [2022/08/12 11:27] proxor [Пользовательский тег динамического чертежа поперечного профиля профиля] |
developers:tutorial:dwpfields [2023/07/31 08:46] (текущий) yulia |
||
---|---|---|---|
Строка 2: | Строка 2: | ||
- | В программном комплексе [[http://topomatic.ru/|Топоматик Робур]] чертежи профилей генерируются на основе шаблонов. Шаблон чертежа профиля представляет из себя файл в формате [[https://ru.wikipedia.org/wiki/DXF|DXF (Drawing eXchange Format)]]. При генерации чертежа используются специальные динамические объекты называемые [[road:commons_tasks:basic_codes_rail_subobject:start|тегами]]. Теги это элементы [[road:commons_tasks:format_template_drawing_cross_profile:start|шаблона чертежа]], которые представляют необходимую информацию о модели в требуемом графическом виде. | + | В программном комплексе [[http://topomatic.ru/|Топоматик Робур]] чертежи профилей генерируются на основе шаблонов. Шаблон чертежа профиля представляет из себя файл в формате [[https://ru.wikipedia.org/wiki/DXF|DXF (Drawing eXchange Format)]]. При генерации чертежа используются специальные динамические объекты называемые [[road:commons_tasks:archive_sections:format_template_drawing:basic_codes_rail_subobject:start|тегами]]. Теги это элементы [[road:commons_tasks:archive_sections:format_template_drawing_cross_profile:start|шаблона чертежа]], которые представляют необходимую информацию о модели в требуемом графическом виде. |
- | ==== Алгоритм создания пользовательского тега ==== | + | ==== Создания пользовательского тега ==== |
Для создания пользовательского тега необходимы следующие действия: | Для создания пользовательского тега необходимы следующие действия: | ||
- Создание класса тега, содержащего алгоритм отрисовки графической информации на чертеже | - Создание класса тега, содержащего алгоритм отрисовки графической информации на чертеже | ||
- Создание класса провайдера тега, отвечающего за регистрацию его в системе | - Создание класса провайдера тега, отвечающего за регистрацию его в системе | ||
- | - Добавление команды регистрирующей тег в теле пользовательского модуля | + | - Объявление команды регистрирующей тег и добавление таска для регистрации тега при инициализации пользовательского модуля |
- | - Добавление таска для регистрации тега при инициализации пользовательского модуля | + | |
- | - Создание в plugin файле action'a добавления тега в шаблон чертежа | + | <note>При необходимости, в plugin файле можно объявить action добавления тега в шаблон чертежа</note> |
Программно, тег является классом наследником от [[developers:references:topomatic.plt.templates.prf.prffield|PrfField]] для продольного профиля и [[developers:references:topomatic.plt.templates.crs.crsfield|CrsField]] для поперечного профиля. Оба эти класса, в свою очередь, являются наследниками класса [[developers:references:topomatic.plt.templates.common.templatefield|TemplateField]]. Класс тега содержит его свойства и описание алгоритмов построения графических примитивов. | Программно, тег является классом наследником от [[developers:references:topomatic.plt.templates.prf.prffield|PrfField]] для продольного профиля и [[developers:references:topomatic.plt.templates.crs.crsfield|CrsField]] для поперечного профиля. Оба эти класса, в свою очередь, являются наследниками класса [[developers:references:topomatic.plt.templates.common.templatefield|TemplateField]]. Класс тега содержит его свойства и описание алгоритмов построения графических примитивов. | ||
Строка 437: | Строка 437: | ||
</code> | </code> | ||
- | Остаётся зарегистрировать соответствующие таски. Для этого в классе наследнике от PluginHostInitializator нашего модуля следует перекрыть метод Initialize() и добавить в него соответствующие инструкции. Пример такого класса будет выглядеть так: | + | Остаётся зарегистрировать соответствующие таски. Для этого в классе наследнике от [[developers:references:topomatic.applicationplatform.plugins.pluginhostinitializator|PluginHostInitializator]] нашего модуля следует перекрыть метод [[developers:references:topomatic.applicationplatform.plugins.pluginhostinitializator.initialize|Initialize()]] и добавить в него соответствующие инструкции. Пример такого класса будет выглядеть так: |
<code csharp> | <code csharp> | ||
... | ... | ||
Строка 463: | Строка 463: | ||
Редактировать шаблон чертежа можно изменяя содержимое текстовых примитивов посредством DXF-редактора, но более удобно воспользоваться редактором шаблонов программного комплекса Топоматик Робур. | Редактировать шаблон чертежа можно изменяя содержимое текстовых примитивов посредством DXF-редактора, но более удобно воспользоваться редактором шаблонов программного комплекса Топоматик Робур. | ||
- | Для добавление тега в редакторе шаблонов нужно создать новый action в plugin файле. Action должен вызывать команду в формате | + | Для добавление тега в редакторе шаблонов нужно создать новый **action** в **plugin** файле. **Action** должен вызывать команду в формате |
<code>"insert_template_field \"<Выравнивание> <Индекс_подобъекта> <Идентификатор_тега> <Атрибуты_через_пробел>\""</code> | <code>"insert_template_field \"<Выравнивание> <Индекс_подобъекта> <Идентификатор_тега> <Атрибуты_через_пробел>\""</code> | ||
- | В шаблоне чертежа тег является текстовым примитивом, содержание которого представлено в формате "$<Имя_тега>". Так же после имени тега, в тексте могут содержаться атрибуты разделённые пробелами. Атрибуты определяют значения свойств тега по порядку. Порядок свойств тега соответствует порядку свойств добавленных при регистрации тега. | + | В шаблоне чертежа тег является текстовым примитивом, содержание которого представлено в формате "**$<Имя_тега>**". Так же после имени тега, в тексте могут содержаться атрибуты разделённые пробелами. Атрибуты определяют значения свойств тега по порядку. Порядок свойств тега соответствует порядку свойств добавленных при регистрации тега. |
Механизм построения чертежа определяет все текстовые примитивы с вышеописанным содержанием. Далее эти примитивы заменяются на наборы примитивов, построенные подпрограммами соответствующих тегов. | Механизм построения чертежа определяет все текстовые примитивы с вышеописанным содержанием. Далее эти примитивы заменяются на наборы примитивов, построенные подпрограммами соответствующих тегов. | ||
- | Теперь необходимо сформировать наш файл .plugin. Добавим action'ы Заполните его следующим образом. | + | Теперь необходимо сформировать наш файл .plugin. Заполните его следующим образом. |
<code javascript> | <code javascript> |