Создание нестандартных элементов базы данных для nanoCAD СПДС на примере стеновых панелей (часть 2)

    Продолжаем публикацию о создании нестандартных элементов.



    Часть первая здесь

    Создание эскиза


    Следуя концепции nanoCAD СПДС и нашей постановке задач, не было смысла разрабатывать четыре разных эскиза для каждой марки панели, так как переключение между ними в диалоге не привело бы к отслеживанию свойств выбранной марки. Поэтому для всех вариантов следовало разработать один эскиз и научиться управлять им из диалогового окна. На рис. 4 представлен пример эскиза панели.

    nanoCAD СПДС

    Рис. 4. Эскиз для стеновой панели

    Как видно из рисунка, почти все размеры представляют собой константы. Общая длина определена как переменная «Length_panel» и будет назначена в программе по указанным значениям в скрипте. Окружность, перечеркнутая двумя отрезками, представляет собой точку вставки панели на чертеж. Она точно позиционирована согласно требованиям к размещению плит на чертеже. Чтобы управлять эскизом из диалогового окна, графическим элементам необходимо присвоить переменные, через которые это управление будет осуществляться. Для нашего варианта оно сводится не к изменению размеров плиты, а к изменению видимости отдельных графических элементов эскиза. Поясним это на конкретном примере. Рис. 5 представляет все четыре варианта (марки) панелей; отличаются они только укорачиванием с разных сторон, остальные размеры остаются неизменными.

    nanoCAD СПДС

    Рис. 5. Пример отображения в плане вариантов марок Н-101

    Вспомогательные красные линии проведены для визуального определения габаритов панелей. Справа указаны марки панелей (в скобках – марки бетона). При установке признака несущей панели появляется штриховка. Таким образом, вся задача сводится к установке переменных, которые отвечали бы за показ или скрытие в диалоговом окне отдельных фрагментов эскиза в зависимости от выбранной марки. Это позволяет нам обойтись единственным и необходимым эскизом для объекта базы данных, представляющим собой четыре марки панели. Рассмотрим параметр одного крайнего левого отрезка эскиза. Диалоговое окно определения параметров показано на рис. 6.

    nanoCAD СПДС

    Рис. 6. Свойства графического примитива для эскиза

    В поле Отображать указана переменная «left_pl», которая получает значение в диалоге. При значении «1» отрезок отображается в эскизе, а при значении «0» – нет. В зависимости от конкретной ситуации каждому примитиву эскиза назначаются одна или несколько переменных, которые отвечают за отображение этого примитива при определенных условиях. Для более сложных случаев в этом окне могут быть прописаны дополнительные параметры – например тип линии, параметры штриховок и прочее. Для отрезка, определяющего ось симметрии, устанавливается параметр «Рабочий объект», который скрывает ось на чертеже. Для разных вариантов панелей были разработаны свои эскизы и алгоритмы их отрисовки, но в любом случае для каждого объекта базы данных создается один эскиз. Теперь посмотрим, как осуществляется в диалоговом окне управление переменными.

    Работа диалогового окна с переменными объекта


    Работой формы или диалогового окна управляет скрипт, то есть фактически код программы, по которой работает объект базы данных. В простейших случаях он формируется автоматически при помощи Мастера скриптов. С помощью этого инструмента пользователь проходит пошаговую процедуру определения всех необходимых переменных и многих других свойств объекта. Рис. 7 демонстрирует пример диалогового окна Мастера скриптов на шаге определения переменных. В левом окне отображается список переменных. Свойства активной переменной, на которую указывает курсор, показаны в центре, а внизу генерируется текст скрипта.

    nanoCAD СПДС

    Рис. 7. Окно Мастера скриптов на шаге свойств переменных

    Пройдя все этапы, пользователь получает готовый объект. В окне Мастера объектов видны назначенные переменные, необходимые для построения объекта. На рис. 8 активировано отображение табличных переменных, свойства которых назначаются при перемещении по строкам таблицы. Иными словами, когда в окне диалога мы переходим между наименованиями марок панелей, меняются все соответствующие свойства панели, находящиеся в данной строке таблицы.

    nanoCAD СПДС

    Рис. 8. Окно Мастера объектов с табличными переменными

    В этом и заключается нестандартность решения, которое обычно не используется в простых объектах. Другие переменные могут быть открытыми и защищенными, они назначаются в тексте скрипта. Если переменная имеет одно и то же значение вне зависимости от марки панели, ей можно назначить постоянное значение. Для панели это может быть, например, способ наружной отделки или принадлежность к альбому чертежей. Эти свойства мы позже увидим в спецификации, но назначаются они также в скрипте, а хранятся в объекте на чертеже. Для нашего нестандартного случая Мастер скриптов может помочь формированием переменных, но не диалогового окна. В общем случае можно с самого начала писать скрипт самостоятельно, без Мастера, однако гораздо проще сделать заготовку и потом корректировать ее в текстовом режиме.

    Для размещения в диалоговом окне расширенного набора элементов управления – например выпадающих списков, таблиц с переменными, переключателей и т.д. – необходима пользовательская форма. В отличие от стандартной формы, которая генерируется с помощью скрипта без участия пользователя, пользовательская создается при помощи Редактора формы. Пример окна этого Редактора показан на рис. 9.

    nanoCAD СПДС

    Рис. 9. Окно Редактора формы для стеновой панели

    Редактор формы очень похож на многие редакторы из языков объектного программирования. С помощью панелей инструментов, расположенных в верхней части, добавляются элементы управления. Нужную позицию из окна Переменные можно перетаскивать на поле формы, выбирая при этом тип элемента управления, которому эта переменная будет присвоена. Активируя проставленный элемент, можно управлять им через окно свойств элемента. Чтобы заменить стандартную форму при вызове объекта из пользовательской базы, необходимо прописать дополнительную команду в скрипте и закомментировать вызов стандартной формы. Сугубо технические подробности мы опустим, отметив при этом, что решение более сложных задач при создании нетривиальных объектов требует (в плане их поведения и описания) некоторого вмешательства в текст скрипта. Таким образом, мы описали необходимые переменные и определили их в процессе простановки элемента на чертеж. Все значения сохраняются в объекте и могут быть в любой момент изменены при двойном клике через вызов диалогового окна. Это придает работе определенную гибкость, когда требуется без переотрисовки внести изменения в объект базы данных nanoCAD СПДС.

    Теперь наш элемент готов к применению в проекте. Но мало просто проставить панель на плане. Необходимо проставить маркировку и занести ее в спецификацию. Эти задачи будут решены в заключительной третьей части нашей публикации.

    Алексей Цветков, Tsvetkov@nanocad.ru

    Часть третья
    Нанософт
    77,00
    Компания
    Поделиться публикацией

    Комментарии 0

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое