
На форуме обязательно:
Рекламу мы не размещаем ни на каких условиях.
- Заполнить свой профиль НА РУССКОМ ЯЗЫКЕ КИРИЛИЦЕЙ. См. Правила, п.2.d.
- Не писать свой вопрос в первую попавшуюся тему, а вместо этого создать свою. См. Правила, п.3.a.
Рекламу мы не размещаем ни на каких условиях.
Скрипты и API
Модератор: специалисты по Eplan
-
- знаток Eplan
- Сообщения: 2504
- Зарегистрирован: 05 мар 2012, 14:00
- Имя: Горский Андрей Сергеевич
- Откуда: Санкт-Петербург
- Благодарил (а): 63 раза
- Поблагодарили: 87 раз
- Контактная информация:
Re: Скрипты и API
Интересующимся рекомендую посетить сайт https://getsatisfaction.com/stlm/topics ... _api_forum EPlan P8 API Programming - это Community Luc Morin. Александр аkа aranea знает этот сайт 

Все знания для всех. Поиск знаний священен. Обмен знаниями священен. Копирование священно.
-
- знаток Eplan
- Сообщения: 2504
- Зарегистрирован: 05 мар 2012, 14:00
- Имя: Горский Андрей Сергеевич
- Откуда: Санкт-Петербург
- Благодарил (а): 63 раза
- Поблагодарили: 87 раз
- Контактная информация:
Re: Скрипты и API
Вынес в отдельную тему Перекрестные ссылки viewtopic.php?f=90&t=4020 работу Воробьева Александра aka aranea
На мой взгляд, в данной теме она (работа) просто потерялась.
По описанию интересная вещь, но признаюсь сам не проверял.
На мой взгляд, в данной теме она (работа) просто потерялась.
По описанию интересная вещь, но признаюсь сам не проверял.
Все знания для всех. Поиск знаний священен. Обмен знаниями священен. Копирование священно.
-
- знаток Eplan
- Сообщения: 455
- Зарегистрирован: 15 май 2012, 11:36
- Имя: Чистякова Оксана
- Благодарил (а): 5 раз
- Поблагодарили: 12 раз
Re: Скрипты и API
Хотелось бы такую штучку придумать (хотя это ближе к разделу МЕЧТА), чтобы как в Автокаде, если нужно что-то обрезать, то все разом, а не тыкать в каждый графический объект.
ЗЫ. Столкнулась сейчас с разрисовкой узлов на плане.
ЗЫ. Столкнулась сейчас с разрисовкой узлов на плане.
______________________________________________________
Я слышу и забываю. Я вижу и запоминаю. Я делаю и понимаю.
Я слышу и забываю. Я вижу и запоминаю. Я делаю и понимаю.
-
- знаток Eplan
- Сообщения: 2504
- Зарегистрирован: 05 мар 2012, 14:00
- Имя: Горский Андрей Сергеевич
- Откуда: Санкт-Петербург
- Благодарил (а): 63 раза
- Поблагодарили: 87 раз
- Контактная информация:
Батник для Винды
Сабж для резервного копирования БДИ. Простой код, простая операция. Можно поступить двумя путями
1) создать ярлык поместить его в автозагрузку и при старте ОС будет произведена операция;
2) создать задание в Планировщике заданий, создать там некоторые условия, если нужны, указать путь к батнику.
После выполнения операции у вас в каталоге с батником будет лежать еще файлы
"25.02.2014 BackUp.mdb" (пример, число сегодняшнее) и "filename" (в нем указана дата)
При изменении путей помните, что пробелов надо избегать, а сохранить батник в кодировке OEM 866, если в имени пути используете кириллицу, Notepad++ вам поможет.
Батник неидеален, замечания, предложения, пожелания приветствуются.
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++ вам поможет.
Батник неидеален, замечания, предложения, пожелания приветствуются.
Все знания для всех. Поиск знаний священен. Обмен знаниями священен. Копирование священно.
-
- здесь недавно
- Сообщения: 36
- Зарегистрирован: 12 фев 2014, 07:13
- Имя: Сергей
- Благодарил (а): 1 раз
Re: Скрипты и API
Всем здравствуйте!
Ни как не получается найти, как задать координаты создаваемого текста.
Текст создаётся в точке [0,0]. Как бы его подвинуть?
Ни как не получается найти, как задать координаты создаваемого текста.
Код: Выделить всё
Eplan.EplApi.DataModel.Graphics.Text text = new Text();
text.Create(oPage, "Текст", 2.5);
-
- здесь недавно
- Сообщения: 36
- Зарегистрирован: 12 фев 2014, 07:13
- Имя: Сергей
- Благодарил (а): 1 раз
Re: Скрипты и API
Всё очень просто
Код: Выделить всё
PointD A = new PointD();
A.X = 20; A.Y = 20;
text.Location = A;
-
- знаток Eplan
- Сообщения: 1115
- Зарегистрирован: 17 окт 2012, 10:24
- Имя: Виталий
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Скрипты и API
А еще проще так:
Кстати, все изменения в графических объектах нужно производить после того как они созданы методом create(), иначе вываливается исключение.
Код: Выделить всё
text.Location = new PointD(20, 20);
-
- здесь недавно
- Сообщения: 36
- Зарегистрирован: 12 фев 2014, 07:13
- Имя: Сергей
- Благодарил (а): 1 раз
Re: Скрипты и API
Добрый день!
Написана программка, использующая свойство функции "Пользователь, доп. поле1 <40201>". Для удобства оно переименовано, например, в "Номер сигнала" (Настройки: Проекты: Проект: Управление: Дополнительные поля: Функция: Новое имя).
Возможно ли это переименование запрограммировать, чтобы при запуске программы в другом проекте это свойство проекта уже называлось как надо.
Написана программка, использующая свойство функции "Пользователь, доп. поле1 <40201>". Для удобства оно переименовано, например, в "Номер сигнала" (Настройки: Проекты: Проект: Управление: Дополнительные поля: Функция: Новое имя).
Возможно ли это переименование запрограммировать, чтобы при запуске программы в другом проекте это свойство проекта уже называлось как надо.
-
- знаток Eplan
- Сообщения: 2504
- Зарегистрирован: 05 мар 2012, 14:00
- Имя: Горский Андрей Сергеевич
- Откуда: Санкт-Петербург
- Благодарил (а): 63 раза
- Поблагодарили: 87 раз
- Контактная информация:
Re: Скрипты и API
Мои познания в АПИ ничтожны, но смею предположить, что нет так как это затрагивает саму программу, но вам ничего не стоит использовать перенос свойств проекта - viewtopic.php?f=90&t=4873#p44146 и(или) заложить это себе в программку.
Все знания для всех. Поиск знаний священен. Обмен знаниями священен. Копирование священно.
-
- здесь недавно
- Сообщения: 36
- Зарегистрирован: 12 фев 2014, 07:13
- Имя: Сергей
- Благодарил (а): 1 раз
Re: Скрипты и API
AGorskiy, спасибо за совет, но требовалось немножко не то.
Порылся в хелпе, чуток подумал и придумал вот что:
Самая проблема оказалась в поиске имени настройки "TrDMBase.PropertyDefs.17.40201.PropertyName", в хелпе не нашёл, решил искать в "\EPLAN\Platform\2.2.5\cfg" по тексту "SUPPLEMENTARYFIELD" (взято из имени свойства функций, для которого и требуется замена). Поиск меня привёл к файлу SettingsMasterGui_AvailableSettings.xml, где лежат path'ы настроек.
Порылся в хелпе, чуток подумал и придумал вот что:
Код: Выделить всё
SelectionSet sel = new SelectionSet();
Project prj = sel.GetCurrentProject(false);
ProjectSettings prjSet = new ProjectSettings(prj);
prjSet.SetStringSetting("TrDMBase.PropertyDefs.17.40201.PropertyName", "Моё новое имя свойства", 0);
-
- знаток Eplan
- Сообщения: 732
- Зарегистрирован: 21 сен 2012, 21:45
- Имя: Воробьев Александр
- Благодарил (а): 4 раза
- Поблагодарили: 55 раз
- Контактная информация:
Re: Скрипты и API
limbir, отличное решение!
также имена путей можно найти после экспорта нужных настроек в xml файл
также имена путей можно найти после экспорта нужных настроек в 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>
..............

-
- здесь недавно
- Сообщения: 36
- Зарегистрирован: 12 фев 2014, 07:13
- Имя: Сергей
- Благодарил (а): 1 раз
Re: Скрипты и API
Никак теперь не могу определить к какому классу относится "Обозначение местоположения", это штрихпунктирная рамка, которая на CTRL+F11 вызывается. Может кто в курсе?
-
- знаток Eplan
- Сообщения: 732
- Зарегистрирован: 21 сен 2012, 21:45
- Имя: Воробьев Александр
- Благодарил (а): 4 раза
- Поблагодарили: 55 раз
- Контактная информация:
Re: Скрипты и API
Код: Выделить всё
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

-
- здесь недавно
- Сообщения: 36
- Зарегистрирован: 12 фев 2014, 07:13
- Имя: Сергей
- Благодарил (а): 1 раз
Re: Скрипты и API
Воспользовавшись предложенным aranea методом определил TypeIdentifier "Обозначения местоположения", указав в выводимом сообщении
Потом по этому значению пытаюсь выбирать из списка StorableObject эти рамки мест обозначения.
Выбрал, но как их теперь преобразовать из класса StorableObject в LocationBox?
Код: Выделить всё
so.TypeIdentifier.ToString();
Код: Выделить всё
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)
{
}
-
- знаток Eplan
- Сообщения: 732
- Зарегистрирован: 21 сен 2012, 21:45
- Имя: Воробьев Александр
- Благодарил (а): 4 раза
- Поблагодарили: 55 раз
- Контактная информация:
Re: Скрипты и API
вариант 1
вариант 2
не проверял
Код: Выделить всё
SelectionSet selectionSet = new SelectionSet();
List<LocationBox> oLBs = selectionSet.Selection.OfType<LocationBox>().ToList();
foreach (LocationBox oLB in oLBs)
{
}
Код: Выделить всё
LocationBox oLB = so as LocationBox;

-
- здесь недавно
- Сообщения: 36
- Зарегистрирован: 12 фев 2014, 07:13
- Имя: Сергей
- Благодарил (а): 1 раз
Re: Скрипты и API
Спасибо! Второй вариант то что надо!
В первом варианте выбор производится через SelectionSet, а мне бы через DMObjectsFinder.
В первом варианте выбор производится через SelectionSet, а мне бы через DMObjectsFinder.
-
- знаток Eplan
- Сообщения: 1115
- Зарегистрирован: 17 окт 2012, 10:24
- Имя: Виталий
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Скрипты и API
Также еще можно использовать следующую конструкцию явного приведения типов ((LocationBox)so). ...
-
- здесь недавно
- Сообщения: 2
- Зарегистрирован: 30 апр 2014, 08:45
- Имя: Минвалеев Алмаз Хайдарзанович
Re: Скрипты и API
Добрый день всем! Кто-нибудь подскажет можно ли реализовать с помощью API вот что: хочу чтобы при вставке устройств и кабелей в их счетчик (для ОУ) присваивалась цифра которую я написал в обозначение места установки в структурном идентификаторе.
Например, у меня есть объект "Емкость подземная". По технологической схеме его номер 41. Захожу в струк. идентификатор создаю данный объект: Обозначение места установки=41, Описание=Емкость подземная. Далее создаю страницу и размещаю ее в 41 месте установки. Все устройства (с черными ящиками и кабели) нумеруем как сам объект. Т.е Счетчик в ОУ = 41 и подсчетчик = 1...n.
Так вот приходится делать это вручную. А хотелось бы вставил макрос, допустим датчика, на страницу и он автоматически себе в счетчик присвоил номер "обозначения место установки" со структурного идентификатора.
Например, у меня есть объект "Емкость подземная". По технологической схеме его номер 41. Захожу в струк. идентификатор создаю данный объект: Обозначение места установки=41, Описание=Емкость подземная. Далее создаю страницу и размещаю ее в 41 месте установки. Все устройства (с черными ящиками и кабели) нумеруем как сам объект. Т.е Счетчик в ОУ = 41 и подсчетчик = 1...n.
Так вот приходится делать это вручную. А хотелось бы вставил макрос, допустим датчика, на страницу и он автоматически себе в счетчик присвоил номер "обозначения место установки" со структурного идентификатора.
-
- знаток Eplan
- Сообщения: 707
- Зарегистрирован: 18 ноя 2013, 07:32
- Имя: Сергей
- Благодарил (а): 47 раз
- Поблагодарили: 41 раз
Re: Скрипты и API
Можно, наверное, попробовать эти данные для устройства вытаскивать через "Свойство блока"...
Будет выглядеть как то так:
Будет выглядеть как то так:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
--------------------------------------------
Eplan Electric P8 - Professional
Версия: 2.2 HF1
Номер сборки: 6360
Eplan Electric P8 - Professional
Версия: 2.2 HF1
Номер сборки: 6360
-
- знаток Eplan
- Сообщения: 80
- Зарегистрирован: 09 апр 2014, 08:55
- Имя: Александр Павлов
- Откуда: Санкт Петербург
- Благодарил (а): 4 раза
- Поблагодарили: 4 раза
Re: Скрипты и API
Как можно запускать скрипты? сервисные программы - сценарии - выполнить? версия p8 2.1
Eplan 2.1
-
- знаток Eplan
- Сообщения: 732
- Зарегистрирован: 21 сен 2012, 21:45
- Имя: Воробьев Александр
- Благодарил (а): 4 раза
- Поблагодарили: 55 раз
- Контактная информация:
Re: Скрипты и API
если скрипт содержит строку [Start], то "сервисные программы - сценарии - выполнить"
в противном случае "сервисные программы - сценарии - загрузить"
в противном случае "сервисные программы - сценарии - загрузить"

-
- знаток Eplan
- Сообщения: 2504
- Зарегистрирован: 05 мар 2012, 14:00
- Имя: Горский Андрей Сергеевич
- Откуда: Санкт-Петербург
- Благодарил (а): 63 раза
- Поблагодарили: 87 раз
- Контактная информация:
github.com
GitHub — самый крупный веб-сервис для хостинга IT-проектов и их совместной разработки.
https://github.com/DanielPa - думаю некоторых коллег заинтересует
https://github.com/DanielPa - думаю некоторых коллег заинтересует
Все знания для всех. Поиск знаний священен. Обмен знаниями священен. Копирование священно.