На форуме обязательно:
  1. Заполнить свой профиль на Русском языке. См. Правила, п.2.d.
  2. Не писать свой вопрос в первую попавшуюся тему, а вместо этого создать свою. См. Правила, п.3.a.

Скрипты и API

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

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

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

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

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
Сообщения: 640
Зарегистрирован: 21 сен 2012, 21:45
Имя: Воробьев Александр
Благодарил (а): 2 раза
Поблагодарили: 38 раз
Контактная информация:

Re: Скрипты и API

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

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

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

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

Re: Скрипты и API

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

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

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

aranea
знаток Eplan
знаток Eplan
Сообщения: 640
Зарегистрирован: 21 сен 2012, 21:45
Имя: Воробьев Александр
Благодарил (а): 2 раза
Поблагодарили: 38 раз
Контактная информация:

Re: Скрипты и API

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

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

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

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

Re: Скрипты и API

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

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

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

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

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

Сообщение 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 » 25 апр 2014, 11:32

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

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

Eplan.EplApi.DataModel.Graphics.Text text = new Text();
text.Create(oPage, "Текст", 2.5);

Текст создаётся в точке [0,0]. Как бы его подвинуть?


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

Re: Скрипты и API

Сообщение limbir » 25 апр 2014, 12:00

Всё очень просто

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

PointD A = new PointD();
A.X = 20; A.Y = 20;
text.Location = A;

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

Madwolf
знаток Eplan
знаток Eplan
Сообщения: 966
Зарегистрирован: 17 окт 2012, 10:24
Имя: Виталий
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Re: Скрипты и API

Сообщение Madwolf » 25 апр 2014, 18:26

А еще проще так:

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

text.Location = new PointD(20, 20);

Кстати, все изменения в графических объектах нужно производить после того как они созданы методом create(), иначе вываливается исключение.


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

Re: Скрипты и API

Сообщение limbir » 16 июн 2014, 11:43

Добрый день!
Написана программка, использующая свойство функции "Пользователь, доп. поле1 <40201>". Для удобства оно переименовано, например, в "Номер сигнала" (Настройки: Проекты: Проект: Управление: Дополнительные поля: Функция: Новое имя).
Возможно ли это переименование запрограммировать, чтобы при запуске программы в другом проекте это свойство проекта уже называлось как надо.

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

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

Re: Скрипты и API

Сообщение AGorskiy » 16 июн 2014, 12:09

Мои познания в АПИ ничтожны, но смею предположить, что нет так как это затрагивает саму программу, но вам ничего не стоит использовать перенос свойств проекта - viewtopic.php?f=90&t=4873#p44146 и(или) заложить это себе в программку.
Все знания для всех. Поиск знаний священен. Обмен знаниями священен. Копирование священно.


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

Re: Скрипты и API

Сообщение limbir » 17 июн 2014, 09:25

AGorskiy, спасибо за совет, но требовалось немножко не то.
Порылся в хелпе, чуток подумал и придумал вот что:

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

SelectionSet sel = new SelectionSet();
Project prj = sel.GetCurrentProject(false);
ProjectSettings prjSet = new ProjectSettings(prj);
prjSet.SetStringSetting("TrDMBase.PropertyDefs.17.40201.PropertyName", "Моё новое имя свойства", 0);

Самая проблема оказалась в поиске имени настройки "TrDMBase.PropertyDefs.17.40201.PropertyName", в хелпе не нашёл, решил искать в "\EPLAN\Platform\2.2.5\cfg" по тексту "SUPPLEMENTARYFIELD" (взято из имени свойства функций, для которого и требуется замена). Поиск меня привёл к файлу SettingsMasterGui_AvailableSettings.xml, где лежат path'ы настроек.

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

aranea
знаток Eplan
знаток Eplan
Сообщения: 640
Зарегистрирован: 21 сен 2012, 21:45
Имя: Воробьев Александр
Благодарил (а): 2 раза
Поблагодарили: 38 раз
Контактная информация:

Re: Скрипты и API

Сообщение aranea » 17 июн 2014, 10:43

limbir, отличное решение!
также имена путей можно найти после экспорта нужных настроек в xml файл

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

<?xml version="1.0" encoding="utf-8" ?>
- <Settings ver="2.2.5">
  <CAT name="COMPANY" />
  <CAT name="INSTALL" />
- <CAT name="PROJECT">
- <MOD name="TrDMBase">
- <LEV1 name="PropertyDefs">
.......
- <LEV2 name="17">
...........
- <LEV3 name="40201">
- <Setting name="PropertyName" ver="1" type="string" desc="649">
- <Default>
  <Val />
  </Default>
  <Val />
  </Setting>
  </LEV3>
..............
Изображение


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

Re: Скрипты и API

Сообщение limbir » 18 июн 2014, 13:38

Никак теперь не могу определить к какому классу относится "Обозначение местоположения", это штрихпунктирная рамка, которая на CTRL+F11 вызывается. Может кто в курсе?

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

aranea
знаток Eplan
знаток Eplan
Сообщения: 640
Зарегистрирован: 21 сен 2012, 21:45
Имя: Воробьев Александр
Благодарил (а): 2 раза
Поблагодарили: 38 раз
Контактная информация:

Re: Скрипты и API

Сообщение aranea » 18 июн 2014, 14:26

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

SelectionSet selectionSet = new SelectionSet();
StorableObject[] storableObjects = selectionSet.Selection;

foreach (StorableObject so in storableObjects)
    {
    MessageBox.Show("so.ToString(): " + so.ToString());
    }

дает
so.ToString(): Eplan.EplApi.DataModel.LocationBox
Изображение


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

Re: Скрипты и API

Сообщение limbir » 18 июн 2014, 14:38

aranea, благодарю!


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

Re: Скрипты и API

Сообщение limbir » 19 июн 2014, 11:53

Воспользовавшись предложенным aranea методом определил TypeIdentifier "Обозначения местоположения", указав в выводимом сообщении

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

so.TypeIdentifier.ToString();

Потом по этому значению пытаюсь выбирать из списка StorableObject эти рамки мест обозначения.

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

SelectionSet sel = new SelectionSet();
Project prj = sel.GetCurrentProject(false);
DMObjectsFinder fndr = new DMObjectsFinder(prj);
StorableObject[] storObj = fndr.GetStorableObjects(null);
foreach (StorableObject so in storObj)
                if (so.TypeIdentifier == 88)
                {

                }

Выбрал, но как их теперь преобразовать из класса StorableObject в LocationBox?

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

aranea
знаток Eplan
знаток Eplan
Сообщения: 640
Зарегистрирован: 21 сен 2012, 21:45
Имя: Воробьев Александр
Благодарил (а): 2 раза
Поблагодарили: 38 раз
Контактная информация:

Re: Скрипты и API

Сообщение aranea » 19 июн 2014, 12:05

вариант 1

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

SelectionSet selectionSet = new SelectionSet();
List<LocationBox> oLBs = selectionSet.Selection.OfType<LocationBox>().ToList();

foreach (LocationBox oLB in oLBs)
    {

    }


вариант 2

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

LocationBox oLB = so as LocationBox;


не проверял
Изображение


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

Re: Скрипты и API

Сообщение limbir » 19 июн 2014, 12:17

Спасибо! Второй вариант то что надо!
В первом варианте выбор производится через SelectionSet, а мне бы через DMObjectsFinder.

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

Madwolf
знаток Eplan
знаток Eplan
Сообщения: 966
Зарегистрирован: 17 окт 2012, 10:24
Имя: Виталий
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Re: Скрипты и API

Сообщение Madwolf » 19 июн 2014, 17:10

Также еще можно использовать следующую конструкцию явного приведения типов ((LocationBox)so). ...


AlmazM
новенький
новенький
Сообщения: 2
Зарегистрирован: 30 апр 2014, 08:45
Имя: Минвалеев Алмаз Хайдарзанович

Re: Скрипты и API

Сообщение AlmazM » 17 июл 2014, 08:32

Добрый день всем! Кто-нибудь подскажет можно ли реализовать с помощью API вот что: хочу чтобы при вставке устройств и кабелей в их счетчик (для ОУ) присваивалась цифра которую я написал в обозначение места установки в структурном идентификаторе.
Например, у меня есть объект "Емкость подземная". По технологической схеме его номер 41. Захожу в струк. идентификатор создаю данный объект: Обозначение места установки=41, Описание=Емкость подземная. Далее создаю страницу и размещаю ее в 41 месте установки. Все устройства (с черными ящиками и кабели) нумеруем как сам объект. Т.е Счетчик в ОУ = 41 и подсчетчик = 1...n.
Так вот приходится делать это вручную. А хотелось бы вставил макрос, допустим датчика, на страницу и он автоматически себе в счетчик присвоил номер "обозначения место установки" со структурного идентификатора.

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

legionercheg
знаток Eplan
знаток Eplan
Сообщения: 675
Зарегистрирован: 18 ноя 2013, 07:32
Имя: Сергей
Благодарил (а): 34 раза
Поблагодарили: 31 раз

Re: Скрипты и API

Сообщение legionercheg » 17 июл 2014, 14:24

Можно, наверное, попробовать эти данные для устройства вытаскивать через "Свойство блока"...
Будет выглядеть как то так:
[spoiler=Свойство блока]
1.jpg
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
--------------------------------------------
Eplan Electric P8 - Professional
Версия: 2.2 HF1
Номер сборки: 6360

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

Alexander_Pavlov
знаток Eplan
знаток Eplan
Сообщения: 80
Зарегистрирован: 09 апр 2014, 08:55
Имя: Александр Павлов
Откуда: Санкт Петербург
Благодарил (а): 4 раза
Поблагодарили: 4 раза

Re: Скрипты и API

Сообщение Alexander_Pavlov » 29 июл 2014, 14:06

Как можно запускать скрипты? сервисные программы - сценарии - выполнить? версия p8 2.1
Eplan 2.1

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

aranea
знаток Eplan
знаток Eplan
Сообщения: 640
Зарегистрирован: 21 сен 2012, 21:45
Имя: Воробьев Александр
Благодарил (а): 2 раза
Поблагодарили: 38 раз
Контактная информация:

Re: Скрипты и API

Сообщение aranea » 29 июл 2014, 14:15

если скрипт содержит строку [Start], то "сервисные программы - сценарии - выполнить"
в противном случае "сервисные программы - сценарии - загрузить"
Изображение

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

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

github.com

Сообщение AGorskiy » 15 авг 2014, 08:19

GitHub — самый крупный веб-сервис для хостинга IT-проектов и их совместной разработки.
https://github.com/DanielPa - думаю некоторых коллег заинтересует
Все знания для всех. Поиск знаний священен. Обмен знаниями священен. Копирование священно.