среда, 28 августа 2013 г.

Autocad P&ID: Баг HasFlowDirection

Первый баг в программе, который я решил серьёзно описать.

Описание проблемы

Программа позволяет серьёзно изменить начальные установки, в частности, добавлять новые элементы. Для себя мы приняли систему именования, чтобы выделить элементы из общего списка и применяем префикс ВНП. Но речь не об этом.
Создавая элемент, мы можем в один класс занести несколько различных обозначений, в зависимости от функционала, или от других признаков... В текущей задаче мне потребовалось создать дисковый затвор, причем отображаться он может как с лева на право, так и на оборот. Для этого можно применить свойство HasFlowDirection. Как написано в инструкции, достаточно лишь изменить значение логического типа с Ложь на Истина, и все будет в порядке: на блоке в чертеже будет появляться стрелка при нажатии на которую блок будет менять направление.

Пробуем. 
Изменяем свойство на Истина, нажимаем ОК.
Нет, не появилась. Снова открываем настройки. Свойство HasFlowDirection имеет значение ЛОЖЬ. Где-то что-то не так.... Нет, наверное, мы забыли изменить его. Или может нужно просто перейти на другое поле, тогда сработает.
Пробуем. На этот раз, нажимаем Применить. .......окно обновляется и мы видим..... ЛОЖЬ.
Получается, изменить это свойство не возможно???

Ищем решение

После тщетных попыток найти информацию по этой проблеме в интернете и на форумах автодеска, стал копать сам. 
Лезем в базу. Каждому классу в окне свойств соответствует запись в таблице PnPTables.
Чтобы проще было найти свой класс, отфильтровал записи по базовому классу.
Так, уже не плохо, но это только таблицы. 
Свойства хранятся в таблице PnPTableAttributes. Фильтруем по имени таблицы. Заодно проверим свойства в работающем обратном клапане.
 Всё сразу становится на свои места. Программисты, разрабатывая модель локализации, не учли, что в базу попадает не значение True/False, а его локализованный эквивалент. Т.е. с переводом элементов раскрывающегося списка мы лишились части функций программы. 

Итог

Выполнить эту настройку через интерфейс программы НЕВОЗМОЖНО. Чтобы добиться требуемого результата, мне пришлось вносить изменение напрямую в базу данных.

PS

На сайте Autodesk позже нашел вопрос без ответа, оставленный в начале августа 2013. Вопрос просто остался без внимания. На мой взгляд, это просто не достойно продукта, стоимостью 6 килоевро за лицензию. Задуман продукт хороший, но реализация и поддержка ужасны.


четверг, 22 августа 2013 г.

Autocad P&ID: трюки при создании нестандартных условных обозначений

Иерархия условных обозначений

Прежде чем создавать новое условное обозначение клапана, необходимо понять, что P&ID - это довольно серьёзная платформа, в которой используется иерархическая система классов элементов с реализованным наследованием свойств. Например, свойство, добавленное в классе "Клапаны с ручным приводом", также появится у всех клапанов, "наследуемых" от этого класса. Таким образом, общие для всех клапанов свойства нет смысла дублировать для каждого клапана отдельно.
Иерархию можно усложнять. Например, создать в классе "Клапаны с ручным приводом" класс "Задвижки", внутри которого создать все требуемые классы задвижек, например:
- задвижка без привода
- задвижка с ручным приводом
- задвижка фланцевая
- задвижка закрытая.
Не спешите так и делать - это только пример. Есть способ использовать фланцевые и нормально закрытые задвижки намного проще. Об этом позже. Главное в этом примере, что для каждого обобщенного класса (здесь, "Задвижки") можно задать общие для членов этого класса свойства, что является очень удобным способом организации условных обозначений.

Создание нестандартных условных обозначений

При создании нестандартных условных обозначений, придерживайтесь следующих правил:
  1. Однажды применив условное обозначение - создайте блок.
  2. В блоке примитивы должны быть на слое "0" с цветом "По слою"
  3. Выработайте систему наименования блоков. При большом количестве блоков, возможно имеет смысл создать таблицу соответствия наименования блока и наименования символа. В этом случае, даже если блок называется "FDIP_100", вы не запутаетесь.
  4. Используйте привязки и шаг сетки при создании блоков.
  5. Количество свойств, хранимых классом не ограничено, но для упрощения обслуживания системы, следует выработать правильную организацию классов.

Создание свойств классов

 В качестве значений свойств могут выступать следующие типы данных:
  1. Строка - принимает строковое значение. Значение может отсутствовать.
  2. Число - принимает целое или натуральное число.
  3. Логический - значения Истина или Ложь.
  4. Список выбора - при выборе этого свойства в таблице свойств класса и нажатии кнопки Изменить, выводится список выбора, который можно изменять. Вы можете создавать новые списки выбора и изменять существующие.
  5. Копирование свойств - позволяет хранить в классе свойства, относящиеся к другому классу. Например, вы можете скопировать в клапан свойство, относящееся к чертежу, на котором она расположена.
Есть еще один тип данных - "Список символов". Это список условных обозначений. Оно недоступно для выбора, но используется в некоторых свойствах. О нём я расскажу далее.

Трюки при создании условных обозначений

Клапан может изображаться на техсхеме открытым или закрытым. Можно выполнить для их изображения два различных условных обозначения, а можно создать одно, и использовать возможности P&ID, предоставив выбор пользователю. Таким образом, количество классов и кнопок на панели инструментов можно сократить.
В классе "Клапаны с ручным приводом" определено свойство Normally (Норма). Это свойство имеет тип Список символов. Свойство наследуется на все клапаны класса Клапаны с ручным приводом. Но значения для каждого клапана можно переопределить. Список, сформированный для этого свойства отображается в контекстном меню на чертеже. Таким образом, один класс может иметь несколько представлений, выбор между которыми осуществляет пользователь.

Использование динамических блоков

Хорошая новость: P&ID использует динамические блоки. Плохая - использование динамических блоков ограничено. В блоках условных обозначений по-умолчанию используется некоторые динамические элементы, но при вставке блока в чертеж, P&ID конвертирует их таким образом, что большая часть динамических свойств теряется.
Для примера, откроем файл projSymbolStyle.dwg в папке проекта. Этот файл содержит все блоки условных обозначений проекта.

Открыв в редакторе блоков блок ЗАДВИЖКА PIP можно увидеть два объекта Point Parameter. Это указатели точек присоединения линии к элементу. На встраиваемых элементов наличие точек подключения обязательно, на оборудовании, например, емкостях или резервуарах, их можно не устанавливать. Но следует иметь в виду, что есть оборудование, например насосы или теплообменники, где место подключения строго определено.
Имена параметров, в данном примере, состоят из двух частей, разделенных двоеточием. Первая часть - наименование точки подключения. Номером точки подключения определяется направление потока. В данном случае - от точки 1 к точке 2. Вторая часть отвечает за ориентацию присоединяемого компонента. Системой определено, что EndCode0 находится слева на горизонтали, обход идет против часовой стрелки, так что EndCode270 будет сверху.