1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Получение дерева проекта

Сценарии / Модули API

Модератор: специалисты Eplan

Ответить

Автор темы
VladimirK
здесь недавно
здесь недавно
Сообщения: 12
Зарегистрирован: 28 сен 2018, 15:27
Имя: Владимир
Благодарил (а): 5 раз
Поблагодарили: 6 раз

Получение дерева проекта

Сообщение VladimirK »

Здравствуйте,
Понадобилось получить дерево проекта EPLAN для его передачи в другую программу (сохранения в PDM-систему). Это дерево проекта должно содержать всю иерархию структурных идентификаторов и страниц документации (как в навигаторе страниц). Но дополнительно в дереве внутри узлов структурных идентификаторов должны быть расположенные в них устройства. Т.е. нужно дерево, совмещающее в себе узлы структурных идентификаторов и распределённые по ним узлы страниц документации и устройств.
Подскажите, пожалуйста, позволяет ли API считать древовидную структуру (отношение родительский-дочерний узлы, связь устройства с структурным идентификатором)?
То, что пока нашёл я - в проекте можно считать просто список всех сохранённых в нём структурных идентификаторов класса Location. У Location есть ParentNode/SubNodes, но они действительны только в пределах одного из 7 возможных типов структурных идентификаторов (функциональное присвоение, установка, место сборки, место установки, номер установки, вид документа, определенная пользователем структура). Т.е. родительский/дочерний Location не даёт полного дерева, а только в пределах своего типа. С устройствами тоже проблема с ссылкой на их родительский структурный идентификатор.
Неужели, единственный путь - это анализировать "Имя страницы (идентифицирующее)" для страниц и "ОУ (идентифицирующее)" для устройств, парсить эти строки по разделителям (==, =, ++, +, &, #, /, -) и таким образом строить дерево? :shock:
Спасибо.
Аватара пользователя

AGorskiy
знаток Eplan
знаток Eplan
Сообщения: 3328
Зарегистрирован: 05 мар 2012, 15:00
Имя: Горский Андрей Сергеевич
город/регион: Санкт-Петербург
Благодарил (а): 176 раз
Поблагодарили: 364 раза

Получение дерева проекта

Сообщение AGorskiy »

VladimirK писал(а): 28 июн 2019, 15:54 Подскажите, пожалуйста, позволяет ли API считать древовидную структуру (отношение родительский-дочерний узлы, связь устройства с структурным идентификатором)?
Да, все эти данные можно импортировать в xml-файл для дальнейшей передачи в PDM-систему.
Подкрепляю файл, его лучше смотреть в редакторе XML, например XML Notepad 2007 или Notepad ++, предварительно его настроив на древовидную структуру.
40-1.rar
2019-06-29_211606.png
2019-06-29_212706.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Все знания для всех. Поиск знаний священен. Обмен знаниями священен. Копирование священно.

Автор темы
VladimirK
здесь недавно
здесь недавно
Сообщения: 12
Зарегистрирован: 28 сен 2018, 15:27
Имя: Владимир
Благодарил (а): 5 раз
Поблагодарили: 6 раз

Получение дерева проекта

Сообщение VladimirK »

Здравствуйте, Андрей, спасибо Вам за ответ!
Как я понял из ответа "данные можно импортировать в xml-файл", т.е. получить дерево можно с помощью сформированного xml-файла. А с помощью какой команды (формирования отчёта или команды экспорта) Вы сформировали данный xml-файл?
Перепробовал использовать различные команды из меню EPLAN (например, Проект/Организовать/Экспортировать, Страница/Экспортировать, Сервисные программы/Отчёты, Сервисные программы/Внешняя обработка свойств). Но все они не формируют xml аналогичный Вашему. Получить именно дерево структурных идентификаторов с размещёнными в них устройствами и страницами документации так и не удалось. В xml выводится либо список страниц, либо список устройств.
Или Вы сформировали этот xml-файл не с помощью экспорта или отчёта, а через API "вручную", т.е. в коде анализируя структурные идентификаторы и устройства?

Madwolf
знаток Eplan
знаток Eplan
Сообщения: 1455
Зарегистрирован: 17 окт 2012, 11:24
Имя: Виталий
Страна: Беларусь
город/регион: Минск
Благодарил (а): 60 раз
Поблагодарили: 181 раз

Получение дерева проекта

Сообщение Madwolf »

Структурные идентификаторы изначально не предполагают структуры между собой, это разные по назначению сущности. Дерево Еплана строится самим Епланом каждый раз, в зависимости от настроек проекта, и не влияет на проект. Отсюда вывод - структурирование и заполнение в PDM нужно выполнять на стороне вашего ПО, это гораздо проще нежели юзать для этого API. Т.е. получаете все страницы, устройства и идентфикаторы, и уже у себя раскладываете по полочкам.
Аватара пользователя

AGorskiy
знаток Eplan
знаток Eplan
Сообщения: 3328
Зарегистрирован: 05 мар 2012, 15:00
Имя: Горский Андрей Сергеевич
город/регион: Санкт-Петербург
Благодарил (а): 176 раз
Поблагодарили: 364 раза

Получение дерева проекта

Сообщение AGorskiy »

VladimirK писал(а): 01 июл 2019, 12:22 Перепробовал использовать различные команды из меню EPLAN (например, Проект/Организовать/Экспортировать, Страница/Экспортировать, Сервисные программы/Отчёты, Сервисные программы/Внешняя обработка свойств). Но все они не формируют xml аналогичный Вашему.
Только API, увы, решит эту задачу.
Все знания для всех. Поиск знаний священен. Обмен знаниями священен. Копирование священно.

Автор темы
VladimirK
здесь недавно
здесь недавно
Сообщения: 12
Зарегистрирован: 28 сен 2018, 15:27
Имя: Владимир
Благодарил (а): 5 раз
Поблагодарили: 6 раз

Получение дерева проекта

Сообщение VladimirK »

Madwolf писал(а): 01 июл 2019, 15:33 Структурные идентификаторы изначально не предполагают структуры между собой
Спасибо, Вы подтвердили мои "опасения" насчёт структурных идентификаторов. При отладке кода сначала не мог понять почему у Location ParentNode/SubNodes действительны (не null) только в пределах одного типа структурных идентификаторов. Теперь понял, что структурные идентификаторы формируют лишь "поддерево" в пределах своего типа, а с помощью настроек проекта (Проект/Свойства/Структура/Страницы) можно произвольно менять иерархию узлов в дереве (навигаторе страниц), вплоть до того, что менять местами родительский узел на дочерний и наоборот (кнопки "Переместить вниз"/"Переместить вверх"). В связи с этим, перенос ответственности за построение структуры проекта на сторону разрабатываемого ПО/PDM - отличная идея. Но она меняет правила ведения проекта и требует согласования, это нормально. Например, чтобы человек в ПО/PDM строил дерево, а потом соотносил (настраивал связи) какой узел структурного идентификатора Eplan будет отображаться на узел в PDM.
AGorskiy писал(а): 01 июл 2019, 18:27 Только API, увы, решит эту задачу.
Хорошо, значит буду реализовывать с помощью API.
Теперь стало понятно, что дерево в навигаторе страниц более гибкое и что можно настроить проект Eplan так, что деревья в навигаторах страниц и устройств будут разные (в плане иерархии структурных идентификаторов). Тогда за основу возьму не страницы, а устройства. Попытаюсь анализировать свойства устройств и построить дерево как в навигаторе устройств. А потом дополню его страницами документации, т.к. по задаче нужно получить единое дерево, совмещающее в себе устройства и документацию.

Спасибо вам за ответы!
Аватара пользователя

AGorskiy
знаток Eplan
знаток Eplan
Сообщения: 3328
Зарегистрирован: 05 мар 2012, 15:00
Имя: Горский Андрей Сергеевич
город/регион: Санкт-Петербург
Благодарил (а): 176 раз
Поблагодарили: 364 раза

Получение дерева проекта

Сообщение AGorskiy »

VladimirK писал(а): 03 июл 2019, 08:44 чтобы человек в ПО/PDM строил дерево, а потом соотносил (настраивал связи) какой узел структурного идентификатора Eplan будет отображаться на узел в PDM.
Да, это уже регламент самого PDM. Благо, в большинстве случаев, эти настройки тоже гибки.
Все знания для всех. Поиск знаний священен. Обмен знаниями священен. Копирование священно.
Ответить

Вернуться в «Eplan API»