- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Скрипты и API
Модератор: специалисты Eplan
-
- знаток Eplan
- Сообщения: 3327
- Зарегистрирован: 05 мар 2012, 15:00
- Имя: Горский Андрей Сергеевич
- город/регион: Санкт-Петербург
- Благодарил (а): 176 раз
- Поблагодарили: 364 раза
Re: Скрипты и API
Интересующимся рекомендую посетить сайт https://getsatisfaction.com/stlm/topics ... _api_forum EPlan P8 API Programming - это Community Luc Morin. Александр аkа aranea знает этот сайт
Все знания для всех. Поиск знаний священен. Обмен знаниями священен. Копирование священно.
-
- знаток Eplan
- Сообщения: 3327
- Зарегистрирован: 05 мар 2012, 15:00
- Имя: Горский Андрей Сергеевич
- город/регион: Санкт-Петербург
- Благодарил (а): 176 раз
- Поблагодарили: 364 раза
Re: Скрипты и API
Вынес в отдельную тему Перекрестные ссылки viewtopic.php?f=90&t=4020 работу Воробьева Александра aka aranea
На мой взгляд, в данной теме она (работа) просто потерялась.
По описанию интересная вещь, но признаюсь сам не проверял.
На мой взгляд, в данной теме она (работа) просто потерялась.
По описанию интересная вещь, но признаюсь сам не проверял.
Все знания для всех. Поиск знаний священен. Обмен знаниями священен. Копирование священно.
-
- знаток Eplan
- Сообщения: 456
- Зарегистрирован: 15 май 2012, 12:36
- Имя: Чистякова Оксана
- Страна: Россия
- город/регион: Череповец
- Благодарил (а): 4 раза
- Поблагодарили: 17 раз
Re: Скрипты и API
Хотелось бы такую штучку придумать (хотя это ближе к разделу МЕЧТА), чтобы как в Автокаде, если нужно что-то обрезать, то все разом, а не тыкать в каждый графический объект.
ЗЫ. Столкнулась сейчас с разрисовкой узлов на плане.
ЗЫ. Столкнулась сейчас с разрисовкой узлов на плане.
______________________________________________________
Я слышу и забываю. Я вижу и запоминаю. Я делаю и понимаю.
Я слышу и забываю. Я вижу и запоминаю. Я делаю и понимаю.
-
- знаток Eplan
- Сообщения: 3327
- Зарегистрирован: 05 мар 2012, 15:00
- Имя: Горский Андрей Сергеевич
- город/регион: Санкт-Петербург
- Благодарил (а): 176 раз
- Поблагодарили: 364 раза
Батник для Винды
Сабж для резервного копирования БДИ. Простой код, простая операция. Можно поступить двумя путями
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, 08:13
- Имя: Сергей
- Страна: Россия
- Благодарил (а): 1 раз
Re: Скрипты и API
Всем здравствуйте!
Ни как не получается найти, как задать координаты создаваемого текста.
Текст создаётся в точке [0,0]. Как бы его подвинуть?
Ни как не получается найти, как задать координаты создаваемого текста.
Код: Выделить всё
Eplan.EplApi.DataModel.Graphics.Text text = new Text();
text.Create(oPage, "Текст", 2.5);
-
- здесь недавно
- Сообщения: 36
- Зарегистрирован: 12 фев 2014, 08:13
- Имя: Сергей
- Страна: Россия
- Благодарил (а): 1 раз
Re: Скрипты и API
Всё очень просто
Код: Выделить всё
PointD A = new PointD();
A.X = 20; A.Y = 20;
text.Location = A;
-
- знаток Eplan
- Сообщения: 1454
- Зарегистрирован: 17 окт 2012, 11:24
- Имя: Виталий
- Страна: Беларусь
- город/регион: Минск
- Благодарил (а): 60 раз
- Поблагодарили: 181 раз
Re: Скрипты и API
А еще проще так:
Кстати, все изменения в графических объектах нужно производить после того как они созданы методом create(), иначе вываливается исключение.
Код: Выделить всё
text.Location = new PointD(20, 20);
-
- здесь недавно
- Сообщения: 36
- Зарегистрирован: 12 фев 2014, 08:13
- Имя: Сергей
- Страна: Россия
- Благодарил (а): 1 раз
Re: Скрипты и API
Добрый день!
Написана программка, использующая свойство функции "Пользователь, доп. поле1 <40201>". Для удобства оно переименовано, например, в "Номер сигнала" (Настройки: Проекты: Проект: Управление: Дополнительные поля: Функция: Новое имя).
Возможно ли это переименование запрограммировать, чтобы при запуске программы в другом проекте это свойство проекта уже называлось как надо.
Написана программка, использующая свойство функции "Пользователь, доп. поле1 <40201>". Для удобства оно переименовано, например, в "Номер сигнала" (Настройки: Проекты: Проект: Управление: Дополнительные поля: Функция: Новое имя).
Возможно ли это переименование запрограммировать, чтобы при запуске программы в другом проекте это свойство проекта уже называлось как надо.
-
- знаток Eplan
- Сообщения: 3327
- Зарегистрирован: 05 мар 2012, 15:00
- Имя: Горский Андрей Сергеевич
- город/регион: Санкт-Петербург
- Благодарил (а): 176 раз
- Поблагодарили: 364 раза
Re: Скрипты и API
Мои познания в АПИ ничтожны, но смею предположить, что нет так как это затрагивает саму программу, но вам ничего не стоит использовать перенос свойств проекта - viewtopic.php?f=90&t=4873#p44146 и(или) заложить это себе в программку.
Все знания для всех. Поиск знаний священен. Обмен знаниями священен. Копирование священно.
-
- здесь недавно
- Сообщения: 36
- Зарегистрирован: 12 фев 2014, 08: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
- Сообщения: 1136
- Зарегистрирован: 21 сен 2012, 22:45
- Имя: aranea
- Благодарил (а): 27 раз
- Поблагодарили: 155 раз
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, 08:13
- Имя: Сергей
- Страна: Россия
- Благодарил (а): 1 раз
Re: Скрипты и API
Никак теперь не могу определить к какому классу относится "Обозначение местоположения", это штрихпунктирная рамка, которая на CTRL+F11 вызывается. Может кто в курсе?
-
- знаток Eplan
- Сообщения: 1136
- Зарегистрирован: 21 сен 2012, 22:45
- Имя: aranea
- Благодарил (а): 27 раз
- Поблагодарили: 155 раз
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, 08: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
- Сообщения: 1136
- Зарегистрирован: 21 сен 2012, 22:45
- Имя: aranea
- Благодарил (а): 27 раз
- Поблагодарили: 155 раз
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, 08:13
- Имя: Сергей
- Страна: Россия
- Благодарил (а): 1 раз
Re: Скрипты и API
Спасибо! Второй вариант то что надо!
В первом варианте выбор производится через SelectionSet, а мне бы через DMObjectsFinder.
В первом варианте выбор производится через SelectionSet, а мне бы через DMObjectsFinder.
-
- знаток Eplan
- Сообщения: 1454
- Зарегистрирован: 17 окт 2012, 11:24
- Имя: Виталий
- Страна: Беларусь
- город/регион: Минск
- Благодарил (а): 60 раз
- Поблагодарили: 181 раз
Re: Скрипты и API
Также еще можно использовать следующую конструкцию явного приведения типов ((LocationBox)so). ...
-
- здесь недавно
- Сообщения: 2
- Зарегистрирован: 30 апр 2014, 09:45
- Имя: Минвалеев Алмаз Хайдарзанович
- Страна: Россия
- город/регион: Набережные Челны/Татарстан
Re: Скрипты и API
Добрый день всем! Кто-нибудь подскажет можно ли реализовать с помощью API вот что: хочу чтобы при вставке устройств и кабелей в их счетчик (для ОУ) присваивалась цифра которую я написал в обозначение места установки в структурном идентификаторе.
Например, у меня есть объект "Емкость подземная". По технологической схеме его номер 41. Захожу в струк. идентификатор создаю данный объект: Обозначение места установки=41, Описание=Емкость подземная. Далее создаю страницу и размещаю ее в 41 месте установки. Все устройства (с черными ящиками и кабели) нумеруем как сам объект. Т.е Счетчик в ОУ = 41 и подсчетчик = 1...n.
Так вот приходится делать это вручную. А хотелось бы вставил макрос, допустим датчика, на страницу и он автоматически себе в счетчик присвоил номер "обозначения место установки" со структурного идентификатора.
Например, у меня есть объект "Емкость подземная". По технологической схеме его номер 41. Захожу в струк. идентификатор создаю данный объект: Обозначение места установки=41, Описание=Емкость подземная. Далее создаю страницу и размещаю ее в 41 месте установки. Все устройства (с черными ящиками и кабели) нумеруем как сам объект. Т.е Счетчик в ОУ = 41 и подсчетчик = 1...n.
Так вот приходится делать это вручную. А хотелось бы вставил макрос, допустим датчика, на страницу и он автоматически себе в счетчик присвоил номер "обозначения место установки" со структурного идентификатора.
-
- знаток Eplan
- Сообщения: 965
- Зарегистрирован: 18 ноя 2013, 08:32
- Имя: Сергей
- Страна: Россия
- Благодарил (а): 89 раз
- Поблагодарили: 115 раз
Re: Скрипты и API
Можно, наверное, попробовать эти данные для устройства вытаскивать через "Свойство блока"...
Будет выглядеть как то так:
Будет выглядеть как то так:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- знаток Eplan
- Сообщения: 97
- Зарегистрирован: 09 апр 2014, 09:55
- Имя: Александр Павлов
- Страна: РФ
- город/регион: Санкт Петербург
- Благодарил (а): 12 раз
- Поблагодарили: 6 раз
Re: Скрипты и API
Как можно запускать скрипты? сервисные программы - сценарии - выполнить? версия p8 2.1
Eplan 2.6 сборка 10395
-
- знаток Eplan
- Сообщения: 1136
- Зарегистрирован: 21 сен 2012, 22:45
- Имя: aranea
- Благодарил (а): 27 раз
- Поблагодарили: 155 раз
Re: Скрипты и API
если скрипт содержит строку [Start], то "сервисные программы - сценарии - выполнить"
в противном случае "сервисные программы - сценарии - загрузить"
в противном случае "сервисные программы - сценарии - загрузить"
-
- знаток Eplan
- Сообщения: 3327
- Зарегистрирован: 05 мар 2012, 15:00
- Имя: Горский Андрей Сергеевич
- город/регион: Санкт-Петербург
- Благодарил (а): 176 раз
- Поблагодарили: 364 раза
github.com
GitHub — самый крупный веб-сервис для хостинга IT-проектов и их совместной разработки.
https://github.com/DanielPa - думаю некоторых коллег заинтересует
https://github.com/DanielPa - думаю некоторых коллег заинтересует
Все знания для всех. Поиск знаний священен. Обмен знаниями священен. Копирование священно.