Профиль должен быть заполнен на русском языке кириллицей. Заполнение профиля заведомо ложными или некорректными данными - причина возможного отказа в регистрации на форуме.

Скрипты и API

Обсуждение и решение проблем в работе с Eplan.

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


Z-Nik
новенький
новенький
Сообщения: 2
Зарегистрирован: 19 дек 2012, 12:36
Ф.И.О.: Земцов Никита Сергеевич

Свойства страницы

Сообщение Z-Nik » 19 дек 2012, 12:45

Доброго времени суток!
На форуме новичок.
Разбираюсь со сценариями в Eplan.
Возникла необходимость получиться значение свойства страницы в переменную.
Нашел следующую операцию:
"selectionset" - Извлекает значения (имя, путь, расширение имени файла) выбранных страниц или выбранного проекта.

написал соответствующую функцию по встроенному хелпу:

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

   public string GetPageProperty()
   {
      ActionCallingContext selectionsetContext = new ActionCallingContext();
      selectionsetContext.AddParameter("TYPE","PAGES");
      new CommandLineInterpreter().Execute("selectionset",selectionsetContext);
      return;
   }


И собственно вопрос, что нужно "Ретернить" то?
Функция комплится, а как получить результат не знаю:)
Эта функция возвращает полное имя страницы. А нет возможности получить конкретное свойство страницы?
Заранее спасибо!
Последний раз редактировалось MIvanov 19 дек 2012, 14:00, всего редактировалось 1 раз.
Причина: перенес сообщение

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

aranea
знаток Eplan
знаток Eplan
Сообщения: 519
Зарегистрирован: 21 сен 2012, 21:45
Ф.И.О.: Воробьев Александр
Поблагодарили: 12 раз
Контактная информация:

Re: Свойства страницы

Сообщение aranea » 19 дек 2012, 18:02

какие это интересно свойства старницы вы хотите получить?
согласно хэлпу, получить можно только список выделенных страниц
Return currently selected pages:
selectionset /TYPE:PAGES
Results in calling context: Parameter name = 'PAGES'
Value = '=AP+ST1/1;=AP+ST1/2;=AP+ST1/5'

таково ограничение скриптов: записывать свойства, но не читать
пример кода от Suplanus.de

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

        CommandLineInterpreter oCLI = new CommandLineInterpreter();
        ActionCallingContext acc = new ActionCallingContext();

        string strPages = string.Empty;

        acc.AddParameter("TYPE", "PAGES");
        oCLI.Execute("selectionset", acc);
        acc.GetParameter("PAGES", ref strPages);

        string[] strPagesCount = strPages.Split(';');
        int intPagesCount = strPagesCount.Length;
Изображение


Z-Nik
новенький
новенький
Сообщения: 2
Зарегистрирован: 19 дек 2012, 12:36
Ф.И.О.: Земцов Никита Сергеевич

Re: Свойства страницы

Сообщение Z-Nik » 20 дек 2012, 04:57

Спасибо за оперативный ответ, попробую сегодня разобраться.
Не понимаю почему они ограничили возможность чтения свойств, я так понимаю это все можно с помощью API реализовать, но нужно докупать какой то модуль для этого?

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

AGorskiy
знаток Eplan
знаток Eplan
Сообщения: 2268
Зарегистрирован: 05 мар 2012, 14:00
Ф.И.О.: Горский Андрей Сергеевич
Откуда: Санкт-Петербург
Благодарил (а): 18 раз
Поблагодарили: 21 раз
Контактная информация:

Re: Скрипты и API

Сообщение AGorskiy » 24 май 2013, 08:15

Интересующимся рекомендую посетить сайт https://getsatisfaction.com/stlm/topics ... _api_forum EPlan P8 API Programming - это Community Luc Morin. Александр аkа aranea знает этот сайт Изображение
Все знания для всех. Поиск знаний священен. Обмен знаниями священен. Копирование священно.

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

aranea
знаток Eplan
знаток Eplan
Сообщения: 519
Зарегистрирован: 21 сен 2012, 21:45
Ф.И.О.: Воробьев Александр
Поблагодарили: 12 раз
Контактная информация:

Re: Скрипты и API

Сообщение aranea » 25 май 2013, 20:04

гугл сегодня нашел тоже интересный сайтик
http://www.cnblogs.com/AriLee/
сижу читаю
Изображение

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

AGorskiy
знаток Eplan
знаток Eplan
Сообщения: 2268
Зарегистрирован: 05 мар 2012, 14:00
Ф.И.О.: Горский Андрей Сергеевич
Откуда: Санкт-Петербург
Благодарил (а): 18 раз
Поблагодарили: 21 раз
Контактная информация:

Re: Скрипты и API

Сообщение AGorskiy » 26 июл 2013, 11:56

Вынес в отдельную тему Перекрестные ссылки viewtopic.php?f=90&t=4020 работу Воробьева Александра aka aranea
На мой взгляд, в данной теме она (работа) просто потерялась.
По описанию интересная вещь, но признаюсь сам не проверял.
Все знания для всех. Поиск знаний священен. Обмен знаниями священен. Копирование священно.

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

aranea
знаток Eplan
знаток Eplan
Сообщения: 519
Зарегистрирован: 21 сен 2012, 21:45
Ф.И.О.: Воробьев Александр
Поблагодарили: 12 раз
Контактная информация:

Re: Скрипты и API

Сообщение aranea » 17 авг 2013, 16:22

ну так и задача разовая и довольно редкая =)
Изображение

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

Madwolf
знаток Eplan
знаток Eplan
Сообщения: 889
Зарегистрирован: 17 окт 2012, 10:24
Ф.И.О.: Виталий
Благодарил (а): 4 раза
Поблагодарили: 14 раз

Re: Скрипты и API

Сообщение Madwolf » 22 авг 2013, 16:58

aranea писал(а):ну так и задача разовая и довольно редкая =)


Что-то ругается при добавлении этой dll.

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

aranea
знаток Eplan
знаток Eplan
Сообщения: 519
Зарегистрирован: 21 сен 2012, 21:45
Ф.И.О.: Воробьев Александр
Поблагодарили: 12 раз
Контактная информация:

Re: Скрипты и API

Сообщение aranea » 22 авг 2013, 18:16

может пройдет через какое-то время =))

aranea писал(а):модуль собран на базе Eplan 2.1.6 (5473) и Microsoft.NET Framework v4.0.30319 соответственно может не работать на младших версиях

на что конкретно и как ругается, сомневаюсь что у вас версия старее
Изображение

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

Madwolf
знаток Eplan
знаток Eplan
Сообщения: 889
Зарегистрирован: 17 окт 2012, 10:24
Ф.И.О.: Виталий
Благодарил (а): 4 раза
Поблагодарили: 14 раз

Скрипты и API

Сообщение Madwolf » 23 авг 2013, 13:19

Версия 2.2 HF1, .NET 4.5

Вот на как ругается:
screen.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.

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

aranea
знаток Eplan
знаток Eplan
Сообщения: 519
Зарегистрирован: 21 сен 2012, 21:45
Ф.И.О.: Воробьев Александр
Поблагодарили: 12 раз
Контактная информация:

Re: Скрипты и API

Сообщение aranea » 13 сен 2013, 12:08

madwolf_by, у меня пока не выгрузил - не ругался
косяк нашел, исправил
теперь меняет обозначения всех точек разрыва в открытом проекте

после загрузки модуля нужно создать кнопку на панели инструментов с действием
InterruptionPoint_Action /SymbolLibName:"SPECIAL" /SymbolName:"BP"
или
InterruptionPoint_Action /SymbolLibName:"SPECIAL" /SymbolName:"BPOL"

где:
InterruptionPoint_Action - имя нового зарегистрированного действия (action)
/SymbolLibName:"SPECIAL" - параметр "Имя библиотеки символов"
/SymbolName:"BPOL" - параметр "Имя символа точки разрыва"

имена других символов точек разрыва можно посмотреть в свойствах
EPLAN.EplAddin.InterruptionPoint.rar
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Изображение

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

Madwolf
знаток Eplan
знаток Eplan
Сообщения: 889
Зарегистрирован: 17 окт 2012, 10:24
Ф.И.О.: Виталий
Благодарил (а): 4 раза
Поблагодарили: 14 раз

Re: Скрипты и API

Сообщение Madwolf » 11 окт 2013, 14:52

Спасибо за скрипт.

Есть одна идея по уменьшению количества бесполезной рутинной работы появилась - привязать схему рабочей области к открываемому типу страниц, т.е. область будет изменяться при открытии страницы. Насколько это будет тормознуто работать - другой вопрос ).

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

aranea
знаток Eplan
знаток Eplan
Сообщения: 519
Зарегистрирован: 21 сен 2012, 21:45
Ф.И.О.: Воробьев Александр
Поблагодарили: 12 раз
Контактная информация:

Re: Скрипты и API

Сообщение aranea » 15 окт 2013, 21:55

madwolf_by, могу предложить смену рабочих областей через сочетания клавиш (типа Ctrl+1 или другие)
потому как у меня при смене рабочей области пропадает и перерисовывается все окно еплана, и думаю при каждой смене листа это будет напрягать сильно
Изображение

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

Madwolf
знаток Eplan
знаток Eplan
Сообщения: 889
Зарегистрирован: 17 окт 2012, 10:24
Ф.И.О.: Виталий
Благодарил (а): 4 раза
Поблагодарили: 14 раз

Re: Скрипты и API

Сообщение Madwolf » 15 окт 2013, 22:12

Аналогично, пропадает и перерисовывается, вариант с клавишами тоже нравится.
Еще, пришла в голову идея, не менять вид, а показывать/скрывать нужные панели инструментов.

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

Dyma
знаток Eplan
знаток Eplan
Сообщения: 514
Зарегистрирован: 15 май 2012, 11:36
Ф.И.О.: Чистякова Оксана
Благодарил (а): 3 раза
Поблагодарили: 8 раз

Re: Скрипты и API

Сообщение Dyma » 16 окт 2013, 12:29

Хотелось бы такую штучку придумать (хотя это ближе к разделу МЕЧТА), чтобы как в Автокаде, если нужно что-то обрезать, то все разом, а не тыкать в каждый графический объект.
ЗЫ. Столкнулась сейчас с разрисовкой узлов на плане.
______________________________________________________
Я слышу и забываю. Я вижу и запоминаю. Я делаю и понимаю.

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

aranea
знаток Eplan
знаток Eplan
Сообщения: 519
Зарегистрирован: 21 сен 2012, 21:45
Ф.И.О.: Воробьев Александр
Поблагодарили: 12 раз
Контактная информация:

Re: Скрипты и API

Сообщение aranea » 21 дек 2013, 22:45

madwolf_by писал(а):Есть одна идея по уменьшению количества бесполезной рутинной работы появилась - привязать схему рабочей области к открываемому типу страниц, т.е. область будет изменяться при открытии страницы. Насколько это будет тормознуто работать - другой вопрос ).

приветствую!

после загрузки скрипт создает меню Вид - Рабочие области, где перечислены все сохраненные рабочие области
после этого этим пунктам можно назначить горячие клавиши и быстро переключаться на нужную схему панелек
при создании новых или удалении рабочих областей необходим перезапуск еплана, чтобы список обновился
при выгрузке/загрузке скрипта из еплана комбинации горячих клавиш не слетают, хотя опять же может потребоваться перезапуск
09_Switch_WS_Shortcuts.cs
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Изображение


Zakharov
знаток Eplan
знаток Eplan
Сообщения: 154
Зарегистрирован: 27 окт 2013, 11:11
Ф.И.О.: Захаров
Поблагодарили: 6 раз

Re: Скрипты и API

Сообщение Zakharov » 22 дек 2013, 21:19

Супер, Спасибо Александр!!!!
Работает, проверено.
Первый скрипт, который реально мне полезен.
____________________________________________
В своем стремлении избежать граблей человек наступает на весь прочий сельхозинструмент.

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

AGorskiy
знаток Eplan
знаток Eplan
Сообщения: 2268
Зарегистрирован: 05 мар 2012, 14:00
Ф.И.О.: Горский Андрей Сергеевич
Откуда: Санкт-Петербург
Благодарил (а): 18 раз
Поблагодарили: 21 раз
Контактная информация:

Батник для Винды

Сообщение AGorskiy » 25 фев 2014, 14:38

Сабж для резервного копирования БДИ. Простой код, простая операция. Можно поступить двумя путями
1) создать ярлык поместить его в автозагрузку и при старте ОС будет произведена операция;
2) создать задание в Планировщике заданий, создать там некоторые условия, если нужны, указать путь к батнику.

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

@date /T > D:\EPLAN\Base_backup\filename
Set /p input=Имя < D:\EPLAN\Base_backup\filename
echo %input%
copy P:\Ресурсы\Элементы\СПб\ESS_part001.mdb "D:\EPLAN\Base_backup\%input%BackUp.mdb"


После выполнения операции у вас в каталоге с батником будет лежать еще файлы
"25.02.2014 BackUp.mdb" (пример, число сегодняшнее) и "filename" (в нем указана дата)

При изменении путей помните, что пробелов надо избегать, а сохранить батник в кодировке OEM 866, если в имени пути используете кириллицу, Notepad++ вам поможет.
Батник неидеален, замечания, предложения, пожелания приветствуются.
[+] кстати
чуть не забыл сказать, если использовать первый способ, то пути в первых двух строках можно игнорировать, а именно

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

@date /T > filename
Set /p input=Имя < filename
echo %input%
copy P:\Ресурсы\Элементы\СПб\ESS_part001.mdb "D:\EPLAN\Base_backup\%input%BackUp.mdb"

Связано это с тем, что при использовании Планировщика, командная строка выполняется из системной папки system32, а в этом случае из папке с батником.
Все знания для всех. Поиск знаний священен. Обмен знаниями священен. Копирование священно.


limbir
здесь недавно
здесь недавно
Сообщения: 36
Зарегистрирован: 12 фев 2014, 07:13
Ф.И.О.: Сергей
Благодарил (а): 1 раз

Re: Скрипты и API

Сообщение limbir » 28 мар 2014, 10:35

Всем привет!
Стоит задача получения спецификации в Excel с помощью API.
Пока что у меня получается вывести список ОУ устройств проекта.
Вот код действия:

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

public class Action01 : IEplAction
{
    public bool Execute(ActionCallingContext ctx)
    {
        Project prj = null;
        ProjectManager prjMngr = new ProjectManager();
        prj = prjMngr.CurrentProject;
        DMObjectsFinder fndr = new DMObjectsFinder(prj);
        Function[] arrTest01 = fndr.GetFunctions(null);
        prj = null;
        Microsoft.Office.Interop.Excel.Application oExcel = new Microsoft.Office.Interop.Excel.Application();
        oExcel.Visible = true;
        Microsoft.Office.Interop.Excel.Workbooks iWorkBooks = oExcel.Workbooks;
        Microsoft.Office.Interop.Excel.Workbook iWorkBook = iWorkBooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
        Microsoft.Office.Interop.Excel.Worksheet iSheet = (Microsoft.Office.Interop.Excel.Worksheet)oExcel.ActiveSheet;
        int j=1;
        foreach (var test01 in arrTest01)
        {
            iSheet.Cells[j, 1] = test01.VisibleName;
    //      iSheet.Cells[j, 5] = test01.Properties.FUNC_ARTICLE_DESCR2;
            j++;
        }
        return true;
}

Пытался вытянуть из базы свойства изделия через test01.Properties.FUNC_ARTICLE_DESCR2, но EPLAN выдаёт сообщение:
"Отсутствующий параметр не имеет значения по умолчанию. Имя параметра: parameters".

Подскажите, пожалуйста, какими методами можно вытянуть свойства изделий из базы?

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

aranea
знаток Eplan
знаток Eplan
Сообщения: 519
Зарегистрирован: 21 сен 2012, 21:45
Ф.И.О.: Воробьев Александр
Поблагодарили: 12 раз
Контактная информация:

Re: Скрипты и API

Сообщение aranea » 28 мар 2014, 10:41

приветствую!

если сходу, то лучше foreach (Function test01 in arrTest01)
и возможно обращаться к ArticleReference этой функции test01 (Ссылка на изделие)
перед чтением свойств проверять не пустое ли оно (IsEmpty)
еще проверяйте является ли функция главной
присвоены ли ей изделия (foreach по всем ArticleReference)

чем Отчеты - Маркировка не устраивает? =)
Изображение


limbir
здесь недавно
здесь недавно
Сообщения: 36
Зарегистрирован: 12 фев 2014, 07:13
Ф.И.О.: Сергей
Благодарил (а): 1 раз

Re: Скрипты и API

Сообщение limbir » 28 мар 2014, 12:03

Замена var на Function результата не дала.
При проверке на пустоту свойства обнаружил, что надо бы указывать индекс изделия, т.е. вернее будет запись
iSheet.Cells[j, 5] = test01.Properties.FUNC_ARTICLE_DESCR2[1];
Ну а проверку реализовал так:

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

if (test01.Properties.FUNC_ARTICLE_DESCR2[1].IsEmpty == true)
                {
                    MessageBox.Show("Пустое свойство");
                    return true;
                }
                else
                {
                    MessageBox.Show("Не пустое свойство");
                    iSheet.Cells[j, 1] = test01.Properties.FUNC_ARTICLE_DESCR2[1];
                }

Получил что свойство не пустое, и всё то же сообщение: "Отсутствующий параметр не имеет значения по умолчанию. Имя параметра: parameters".
При обращении к ссылке на изделие
iSheet.Cells[j, 2] = test01.ArticleReference.Properties.ARTICLE_DESCR2[1];
компилятор выдаёт ошибку:
Error 5: The property or indexer 'Eplan.EplApi.DataModel.Function.ArticleReference' cannot be used in this context because it lacks the get accessor.

Маркировкой пользуюсь, но здесь задача больше на получение умений и знаний в API)

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

aranea
знаток Eplan
знаток Eplan
Сообщения: 519
Зарегистрирован: 21 сен 2012, 21:45
Ф.И.О.: Воробьев Александр
Поблагодарили: 12 раз
Контактная информация:

Re: Скрипты и API

Сообщение aranea » 28 мар 2014, 12:15

ну учиться так учиться =)
читать хэлп, изучать объектную модель, обращать внимание на подсказки в VisualStudio

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

foreach (Function oFunc in arrTest01)
    {
    // выводим свойства oFunc, например oFunc.Name

    foreach (ArticleReference oArtRef in oFunc.ArticleReferences)
        {
        // выводим свойства oArtRef
        }
    }
Изображение


limbir
здесь недавно
здесь недавно
Сообщения: 36
Зарегистрирован: 12 фев 2014, 07:13
Ф.И.О.: Сергей
Благодарил (а): 1 раз

Re: Скрипты и API

Сообщение limbir » 28 мар 2014, 13:32

Нашёл ошибку, забыл перевести значение в строковое: ToString().
Александр, большое спасибо за помощь! Использование вложенного цикла по ссылкам получается проще и логичней.
Вот такой код получился по вытаскиванию параметра "Изделие. Обозначение 2" из базы:

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

public class Action01 : IEplAction
{
    public bool Execute(ActionCallingContext ctx)
    {
        Project prj = null;
        ProjectManager prjMngr = new ProjectManager();
        prj = prjMngr.CurrentProject;
        DMObjectsFinder fndr = new DMObjectsFinder(prj);
        Function[] arrTest01 = fndr.GetFunctions(null);
        prj = null;
        Microsoft.Office.Interop.Excel.Application oExcel = new Microsoft.Office.Interop.Excel.Application();
        oExcel.Visible = true;
        Microsoft.Office.Interop.Excel.Workbooks iWorkBooks = oExcel.Workbooks;
        Microsoft.Office.Interop.Excel.Workbook iWorkBook = iWorkBooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
        Microsoft.Office.Interop.Excel.Worksheet iSheet = (Microsoft.Office.Interop.Excel.Worksheet)oExcel.ActiveSheet;
        int j=1;
        foreach (var test01 in arrTest01)
        {
                foreach (ArticleReference oArtRef in oFunc.ArticleReferences)
                {
                    iSheet.Cells[j, 1] = oArtRef.Properties.ARTICLE_DESCR2.ToString();
                    j++;
                }
        }
        return true;
}

Пока на сегодня результатом доволен) Получаются строчки такого вида:
??_??@Выключатель-разъединитель 3p 80A;
??_??@Наборная клемма с пружинной фиксацией двухуровневая, 2,5мм²;

Смущает только "??_??@" вначале каждой строки, но это отбросить не сложно.

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

Madwolf
знаток Eplan
знаток Eplan
Сообщения: 889
Зарегистрирован: 17 окт 2012, 10:24
Ф.И.О.: Виталий
Благодарил (а): 4 раза
Поблагодарили: 14 раз

Re: Скрипты и API

Сообщение Madwolf » 31 мар 2014, 09:55

oArtRef.Properties.ARTICLE_DESCR2 это MultiLangString, поэтому лучше пользоваться методом GetAsString() или GetString(). Язык в параметре укажите по умолчанию.


limbir
здесь недавно
здесь недавно
Сообщения: 36
Зарегистрирован: 12 фев 2014, 07:13
Ф.И.О.: Сергей
Благодарил (а): 1 раз

Re: Скрипты и API

Сообщение limbir » 04 апр 2014, 07:24

madwolf_by
спасибо за совет!


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



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей