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

ViewPart обзора модели и вывод позиции легенды

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

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

Ответить
Аватара пользователя

Автор темы
Alexander_Pavlov
знаток Eplan
знаток Eplan
Сообщения: 97
Зарегистрирован: 09 апр 2014, 09:55
Имя: Александр Павлов
Страна: РФ
город/регион: Санкт Петербург
Благодарил (а): 12 раз
Поблагодарили: 6 раз

ViewPart обзора модели и вывод позиции легенды

Сообщение Alexander_Pavlov »

Добрый день

Пытаюсь реализовать свою мечту - автоматически добавлять позицию легенды или заказной номер на Обзоре модели.
Но получить какую либо информацию об выгруженном устройстве или функции размещения не удаётся из объекта класса ViewPart. Свойства, вроде как доступны, но прочитать их не удаётся

Код: Выделить всё

if (vp is ViewPart)
{
string Pos5 = "Pos5 недоступно";
try { Pos5 = vp.Project.Properties.FUNC_ARTICLE_PARTNR.ToString(); } catch { }
MessageBox.Show("subPlacement.IsReadOnly = ", Pos5);
}
Может зайти с другой стороны - прочитать порядок свойств и задать новые координаты выводимым свойствам. Но какой класс управляет порядком свойств?
У объектов класса Function3D есть PropertyPlacementsSchemas, но это порядок свойств в Пространстве листа.
Eplan 2.6 сборка 10395

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

ViewPart обзора модели и вывод позиции легенды

Сообщение Madwolf »

Можно прочитать в том случае, если отображение у вас не оттенение.
Посмотрите в сторону ViewPart.Source
Аватара пользователя

Barmaley4
знаток Eplan
знаток Eplan
Сообщения: 48
Зарегистрирован: 30 окт 2018, 09:17
Имя: Павел
Страна: РФ
город/регион: Москва
Благодарил (а): 2 раза
Поблагодарили: 48 раз

ViewPart обзора модели и вывод позиции легенды

Сообщение Barmaley4 »

Alexander_Pavlov писал(а): 21 янв 2021, 17:46

Код: Выделить всё

vp.Project.Properties.FUNC_ARTICLE_PARTNR.ToString();
Мне кажется этим действием номер изделия не получить, тут получается сначала идёт обращение к проекту, а не к функции изделия.
Если нужно изделие, я бы сделал так:

Код: Выделить всё

ViewPart v = // ваш вьюпарт обзора модели
Article ART1 = null; // Объект будущего изделия

//Проверяем что есть изделие в трёхмерном объекте
if (v.Source is Function3D)
                if ((v.Source as Function3D).ArticleReferences.Count() > 0)
                     ART1 = (v.Source as Function3D).ArticleReferences.First().Article;
                     
// Далее из ART1 вытаскиваем информацию (номеру для заказа)
if (ART1 != null)
{
String artInfo = ART1.Properties. // нужное свойство
}
Отправлено спустя 7 минут 19 секунд:
Позиция легенды не совсем правильно работает в понятии еплана и наших спецификаций. Если нужно что бы на внешнем виде был проставлен номер согласно порядковому номеру в спецификации, то нужно добавить пользовательскую операцию в модификатор отчёта перечня элементов (групповой спецификации изделий), что бы он включал счётчик и присваивал инкрементное значение каждому следующему пункту с изделием групповой спецификации изделий, и сразу же записывал этот номер в какое-нибудь доп поле функции 3D которую бы он искал по полному ОУ при формировании отчёта.

Далее на обзоре модели помимо ОУ и номере для заказа , можно это доп. поле отобразить.

Таким образом мы получаем:
1. Групповая спецификация изделий с нумерацией с 1 по последнее изделие, без пропусков чисел.
2. При обновлении или генерации отчёта номера позиций обновляются и в функции 3D.
3. На внешнем виде на обзоре модели отображение привязано к свойству блока что позволяет динамически обновлять номера по спецификации при изменениях в перечне элементов.
Аватара пользователя

Автор темы
Alexander_Pavlov
знаток Eplan
знаток Eplan
Сообщения: 97
Зарегистрирован: 09 апр 2014, 09:55
Имя: Александр Павлов
Страна: РФ
город/регион: Санкт Петербург
Благодарил (а): 12 раз
Поблагодарили: 6 раз

ViewPart обзора модели и вывод позиции легенды

Сообщение Alexander_Pavlov »

Первые эксперименты показали, что можно вывести ОУ vp.Source.Properties.FUNC_IDENTDEVICETAG.ToString() - а это уже немало. В Понедельник продолжу штурм!!! :thankyou:
Eplan 2.6 сборка 10395

Евгений Кузнецов
здесь недавно
здесь недавно
Сообщения: 72
Зарегистрирован: 01 окт 2009, 15:57
Имя: Евгений К.
Благодарил (а): 15 раз
Поблагодарили: 2 раза

ViewPart обзора модели и вывод позиции легенды

Сообщение Евгений Кузнецов »

Barmaley4 писал(а): 22 янв 2021, 09:05
Alexander_Pavlov писал(а): 21 янв 2021, 17:46

Код: Выделить всё

vp.Project.Properties.FUNC_ARTICLE_PARTNR.ToString();
Мне кажется этим действием номер изделия не получить, тут получается сначала идёт обращение к проекту, а не к функции изделия.
Если нужно изделие, я бы сделал так:

Код: Выделить всё

ViewPart v = // ваш вьюпарт обзора модели
Article ART1 = null; // Объект будущего изделия

//Проверяем что есть изделие в трёхмерном объекте
if (v.Source is Function3D)
                if ((v.Source as Function3D).ArticleReferences.Count() > 0)
                     ART1 = (v.Source as Function3D).ArticleReferences.First().Article;
                     
// Далее из ART1 вытаскиваем информацию (номеру для заказа)
if (ART1 != null)
{
String artInfo = ART1.Properties. // нужное свойство
}
Отправлено спустя 7 минут 19 секунд:
Позиция легенды не совсем правильно работает в понятии еплана и наших спецификаций. Если нужно что бы на внешнем виде был проставлен номер согласно порядковому номеру в спецификации, то нужно добавить пользовательскую операцию в модификатор отчёта перечня элементов (групповой спецификации изделий), что бы он включал счётчик и присваивал инкрементное значение каждому следующему пункту с изделием групповой спецификации изделий, и сразу же записывал этот номер в какое-нибудь доп поле функции 3D которую бы он искал по полному ОУ при формировании отчёта.

Далее на обзоре модели помимо ОУ и номере для заказа , можно это доп. поле отобразить.

Таким образом мы получаем:
1. Групповая спецификация изделий с нумерацией с 1 по последнее изделие, без пропусков чисел.
2. При обновлении или генерации отчёта номера позиций обновляются и в функции 3D.
3. На внешнем виде на обзоре модели отображение привязано к свойству блока что позволяет динамически обновлять номера по спецификации при изменениях в перечне элементов.
@Barmaley4
Павел, подскажите пожалуйста, что есть "пользовательскую операцию в модификатор отчёта перечня элементов" - пункт Операция в свойствах отчета?
@Alexander_Pavlov
Александр, штурм закончился успехом?
Аватара пользователя

Barmaley4
знаток Eplan
знаток Eplan
Сообщения: 48
Зарегистрирован: 30 окт 2018, 09:17
Имя: Павел
Страна: РФ
город/регион: Москва
Благодарил (а): 2 раза
Поблагодарили: 48 раз

ViewPart обзора модели и вывод позиции легенды

Сообщение Barmaley4 »

Да, нужно в форме отчёта, где должен быть номер позиции, указать "операция", и в самом отчёте вставить разработанный API Action в поле "операция"
https://www.eplan.help/en-US/infoportal ... ATION.html
Ответить

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