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

Скрипты и API

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

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


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

Re: Скрипты и API

Сообщение limbir » 30 окт 2014, 16:49

Всем здравствуйте!
Хочу поменять цвет слоя, делаю вот что:

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

SelectionSet sel = new SelectionSet();
prj = sel.GetCurrentProject(false);
GraphicalLayerTable layers = prj.LayerTable;
GraphicalLayer layer = layers.Layers.Where(n => n.Name == "EPLAN200").First();
layer.Pen.ColorId = 0;

Когда цепляюсь к процессу, то вижу, что layer.Pen.ColorId принимает значение "0", но prj.LayerTable.Layers.Where(n => n.Name == "EPLAN200").First().Pen.ColorId меняться не хочет


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

Re: Скрипты и API

Сообщение limbir » 31 окт 2014, 06:49

Чтобы обновить слой в проекте, нужно добавить

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

layer.Store();

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

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

Re: Скрипты и API

Сообщение AGorskiy » 12 ноя 2014, 11:14

Часто в схеме пользуюсь разными вида представления функции, не только многополюсной, но и обзором, графикой. Так как символ при этом никак не меняется, а часто происходит копирование через буфер или же проект просто отдается другому пользователю, который о таких тонкостях не знает или не знает где они есть - происходят ляпы с отчетами и прочее.

К сожалению визуальное изменение символа или инфы о ней возможно только в этих рамках
12-11-2014 10-59-59.jpg
то есть, если вид представления, к примеру парная перекрестная ссылка, то будет окраска в желтый цвет (при моей серой схеме). Версия 2.1.
Это была преамбула.

Амбула-вопрос: есть ли возможность, чтобы при изменении Вид представления символа происходило изменение цвета обозначения вывода и/или ОУ? Так же бы хотелось, как то выделить графически, если выставлен чек-бокс Распределенная клемма.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Все знания для всех. Поиск знаний священен. Обмен знаниями священен. Копирование священно.


Dotarev
знаток Eplan
знаток Eplan
Сообщения: 115
Зарегистрирован: 12 июн 2014, 05:17
Ф.И.О.: Мишкин Иван
Благодарил (а): 11 раз
Поблагодарили: 20 раз

Re: Скрипты и API

Сообщение Dotarev » 20 ноя 2014, 09:47

Обозначения вывода и/или ОУ можно выводить как свойство блока - по одной записи на каждый вид представления.
Например,
[spoiler=Формируем 5 свойств блока.
В каждом первым свойством выводим <20121> "Вид представления", затем <20058> "Имя (без структуры проекта)";
<20121> - скрываем, если свойство не имеет следующего значения: (1,3,7,-2,-3) (для "Графика", например, 7).]Свойство блока: Формат [31] <20202 31> [20201<20121,0,0,0,0,0,0,0,1,ru_RU,0,1,1,0,0,1>][20201<20058,0,0,0,0,0,0,0,0,ru_RU,0,0,0,1,0,0>]
Свойство блока: Формат [32] <20202 32> [20201<20121,0,0,0,0,0,0,0,1,ru_RU,0,1,3,0,0,1>][20201<20058,0,0,0,0,0,0,0,0,ru_RU,0,0,0,1,0,0>]
Свойство блока: Формат [33] <20202 33> [20201<20121,0,0,0,0,0,0,0,1,ru_RU,0,1,7,0,0,1>][20201<20058,0,0,0,0,0,0,0,0,ru_RU,0,0,0,1,0,0>]
Свойство блока: Формат [34] <20202 34> [20201<20121,0,0,0,0,0,0,0,1,ru_RU,0,1,-2,0,0,1>][20201<20058,0,0,0,0,0,0,0,0,ru_RU,0,0,0,1,0,0>]
Свойство блока: Формат [35] <20202 35> [20201<20121,0,0,0,0,0,0,0,1,ru_RU,0,1,-3,0,0,1>][20201<20058,0,0,0,0,0,0,0,0,ru_RU,0,0,0,1,0,0>][/spoiler]
Текст свойства <20121> "Вид представления" с помощью таблицы замены изменяем на что-то, похожее на условное обозначение.
Затем отображаем свойства блока 31..34 на схеме (сразу все, будет выведено только одно, остальные будут подавлены).
[spoiler=Результат]
Символы1.gif
[/spoiler]
[spoiler=Свойство <20121> в таблице замены можно заменить пустотой]
Символы2.gif
[/spoiler]
[spoiler=или вывести как часть графики символа]
Символы3.gif
[/spoiler]
Примечание. Я использую шрифт Mipgost.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Dotarev 20 ноя 2014, 10:18, всего редактировалось 1 раз.

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

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

Re: Скрипты и API

Сообщение AGorskiy » 20 ноя 2014, 10:07

Иван, это ОЧЕНЬ-ОЧЕНЬ интересное решение, даже не подумал бы в эту сторону. Обязательно попробую это осуществить. У вас пока два поста в теме Eplan Electric P8, но которые показывают, что вы специалист. Спасибо большое. Изображение
Думаю у меня еще возникнут вопросы по этому поводу, так что возможно еще помучаю.
==========================================
Вопросов не возникло, описано все хорошо, для себя немного упрощу. Ценная инфа - аргументы Видов представление, ранее сам пробовал делать замену по значениям, то есть уже Обзор, Графика, но не выходило, а используя значение аргументов 3, 7 - все упрощает.
Ранее мне казалось, что используя скрипт ExtendedSettings можно было увидеть данные значения, но у меня увы не отображаются.

Иван, еще раз спасибо!
Последний раз редактировалось AGorskiy 20 ноя 2014, 13:55, всего редактировалось 1 раз.
Причина: дополнил сообщение
Все знания для всех. Поиск знаний священен. Обмен знаниями священен. Копирование священно.


Dotarev
знаток Eplan
знаток Eplan
Сообщения: 115
Зарегистрирован: 12 июн 2014, 05:17
Ф.И.О.: Мишкин Иван
Благодарил (а): 11 раз
Поблагодарили: 20 раз

Re: Скрипты и API

Сообщение Dotarev » 20 ноя 2014, 18:09

Пожалуйста.
Что касается допустимых значений "Вид представления" - они видны при включенной настройке "Пользователь/Отображение интерфейса пользователя/Отображать идентифицирующие номера":
[spoiler=Свойства символа]
Код вида представления.gif
[/spoiler]
Полный перечень допустимых значений есть в Help.
Eplan 2.4.4.8366
У вас нет необходимых прав для просмотра вложений в этом сообщении.

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

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

Re: Скрипты и API

Сообщение Madwolf » 04 дек 2014, 19:13

Попробовал у себя, полет нормальный )) Спасибо.


svetkin
здесь недавно
здесь недавно
Сообщения: 5
Зарегистрирован: 01 фев 2011, 09:29
Ф.И.О.: Сергей

Re: Скрипты и API

Сообщение svetkin » 19 янв 2015, 00:01

Всем добрый вечер!

на первой странице ветки есть архив с регистрацией dll.
А вопрос такой это как бы замена модуля API от Eplan или это пример как можно написать свою dll-ку с нужными тебе функциями и в обход стандартного инструмента API подгрузить ее в EPlan и пользоваться мощью API?

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

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

Re: Скрипты и API

Сообщение Madwolf » 19 янв 2015, 10:10

Начиная с 2.3 окно добавления модуля имеется и без лицензии, однако загрузить туда ничего не получится.
Однако (как мне кажется) Еплановцы могут подписать модуль специальным ключом, и его можно будет запустить без лицензии АПИ.


svetkin
здесь недавно
здесь недавно
Сообщения: 5
Зарегистрирован: 01 фев 2011, 09:29
Ф.И.О.: Сергей

Re: Скрипты и API

Сообщение svetkin » 19 янв 2015, 17:19

Madwolf, я не до конца понял. Можно свою dll регистрировать при помощи этого скрипта или стандартными средствами, но если нет лицензии, то ничего работать не будет?

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

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

Re: Скрипты и API

Сообщение Madwolf » 20 янв 2015, 20:59

Есть 2 вида лицензии API: для разработчика и для юзера. Если лицензия для разработчика, то подключать можно любые сборки. Если для юзера - только подписанные dll (Еплановцами) цифровым ключом . При этом, подписывается сборка под конкретную лицензию. Однако, я думаю, есть у них особые ключи, так вот если подписать этим ключом сборку, она будет работать на всех машинах, даже без лицензии API (как например RD5 от Weidmuller или приблуда от Phoenix Contact).


KiraKudachinova
здесь недавно
здесь недавно
Сообщения: 38
Зарегистрирован: 02 фев 2015, 07:18
Ф.И.О.: Кудачинова Кира Владимировна

Re: Скрипты и API

Сообщение KiraKudachinova » 16 фев 2015, 07:06

Здравствуйте, извините, пожалуйста, за такой элементарный наверное для кого-то вопрос. Хочу получить ссылки на все изделия, при создании экземпляра ArticleReference при использовании следующей перегрузки конструктора (ArticleReference(string strPartNr, string strVariant, uint nCount)) никак не могу понять,что передавать третьим аргументом? Я вроде бы поняла,что если третий аргумент меньше единицы ,то вызывается исключение, так он отвечает за количество, но все же где его брать,

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

   List<  ArticleReference > listArtRef =  new  List<  ArticleReference >();
           foreach(var article in articles)
           {
               ArticleReference artRef = new ArticleReference(article.PartNr, article.VariantNr, /* не знаю, что передавать*/ );
               listArtRef(artRef);
           }

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

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

Re: Скрипты и API

Сообщение Madwolf » 16 фев 2015, 10:14

nCount - количество изделий. Вообще данный код, на мой взгляд, не особо полезен, а добавить изделие (например клемме) можно с помощью следующего кода:

terminal.AddArticleReference(article.PartNr, variant, count).StoreToObject(),
где terminal - объект (клемма) которой будет добавляться изделие,
article.PartNr - Номер изделия <22001>
variant - обычно я задаю "1"1;
count - количество изделий

Используя этот метод ( AddArticleReference() ) можно добавить изделия ко всем устройствам, клеммникам, штекерам и т.д.

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

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

Re: Скрипты и API

Сообщение aranea » 16 фев 2015, 10:17

Кира, если не сложно, опишите общую задачу, которую вы решаете
может быть окажется вы выбрали немного не тот путь
Изображение


KiraKudachinova
здесь недавно
здесь недавно
Сообщения: 38
Зарегистрирован: 02 фев 2015, 07:18
Ф.И.О.: Кудачинова Кира Владимировна

Re: Скрипты и API

Сообщение KiraKudachinova » 16 фев 2015, 12:27

Простите,я тут две задачи делаю, это был вопрос относящийся к другой задаче, не имеющего отношения к клеммам,а насчет клемм: требуется автоматически добавлять концевые платы к клеммам с открытыми контактами.


KiraKudachinova
здесь недавно
здесь недавно
Сообщения: 38
Зарегистрирован: 02 фев 2015, 07:18
Ф.И.О.: Кудачинова Кира Владимировна

Re: Скрипты и API

Сообщение KiraKudachinova » 16 фев 2015, 12:43

Доброго времени суток, мне нужно изменить позиции легенд зависимости от категории изделия и алфавитного порядка, категорию изделия определяю по полю "Произвольное свойство Значение" [2]<221472> у меня это: детали, прочие изделия, сборочные единицы, материалы и т.д. по некоторому правилу: прочие изделия от 1 до 100,детали от 100 до 200 и т.п.

Реализую это по следующему алгоритму:
1 Сортирую по свойству <221472>.
2 Сортирую по алфавиту.
3. Изменяю позиции легенд.

Вот то что я уже сделала:

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

private  List<Article> GetArticlesByCategory(string category)
        {
            var currentProject = new ProjectManager().CurrentProject;
            Article[] articles = currentProject.Articles;
            List<Article> articleOfCatrgory = new List<Article>();


           foreach(var article in articles)
           {
             
               if (article.Properties.ARTICLE_FREE_DATA_VALUE[2].ToString(ISOCode.Language.L___) == category)
               {
                   articleOfCatrgory.Add(article);
               
               }
           }
   

           return articleOfCatrgory;
        }

{
           List<Article> articles = this.GetArticlesByCategory("Прочие изделия");
           ShowArticles(articles);
         
           for (int i = 0; i < articles.Count; i++)
           {
               for (int j = i+1; j < articles.Count; j++)
               {
                   if (String.Compare(articles[i].Properties.ARTICLE_DESCR1.ToString(ISOCode.Language.L___),articles[j].Properties.ARTICLE_DESCR1.ToString(ISOCode.Language.L___))>0)
                   {
                       Article tempArticle = articles[i];
                       articles[i] = articles[j];
                       articles[j] = tempArticle;
                   }

               }
           }
        //   ShowArticles(articles);
           return articles;
       
       }
public void RestructLegendItem()
{
List articles = SortByAlfabet();
string s = "";
foreach(var article in articles)
{
// Here I want to set of position legend since 1 to 100
}

}


Вопрос: каким образом теперь через изделия получить доступ к позициям легенд?
Последний раз редактировалось AGorskiy 16 фев 2015, 12:53, всего редактировалось 2 раза.
Причина: для кода, лучше использовать тег


KiraKudachinova
здесь недавно
здесь недавно
Сообщения: 38
Зарегистрирован: 02 фев 2015, 07:18
Ф.И.О.: Кудачинова Кира Владимировна

Re: Скрипты и API

Сообщение KiraKudachinova » 16 фев 2015, 12:47

Простите, я не поблагодарила за участие в моей проблеме,спасибо большое, я только начала работать с eplan api и у меня очень старая версия api справочника, поэтому извините если я спрашиваю слишком очевидные вещи.

\\Горский: для этого и существует форум, так что извиняться не за что

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

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

Re: Скрипты и API

Сообщение Madwolf » 16 фев 2015, 12:57

Концевые платы нужно добавлять в конце только, по идее. Я решал данный вопрос следующим образом, нахожу все клеммники в проекте, нахожу последнюю клемму, смотрю в изделии-клемме в принадлежностях какие могут быть назначены концевые платы, добавляю. В базе изделий, естественно должно быть все забито.

"Хочу получить ссылки на все изделия," - это как? Чтобы получить ссылку на все изделия, нужно в еплане их найти сначала через DMOObjectFinder, и они будут в виде массива. При этом никаких параметров передавать не нужно, просто создать свой пустой список или массив (в примере только кусок кода).

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

using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using Eplan.EplApi.ApplicationFramework;
using Eplan.EplApi.DataModel;
using Eplan.EplApi.HEServices;
using Eplan.EplApi.DataModel.Graphics;

DMObjectsFinder oDMO=  new DMObjectsFinder(project);
            ArticleReferencesFilter aRFilter = new ArticleReferencesFilter();
            List<ArticleReference> arrAR = new List<ArticleReference>();
            arrAR = oDMO.GetArticleReferences(aRFilter).ToList <ArticleReference>();



для решения 99% проблем, которые у Вас возникают, вам не хватает двух вещей:
1. Возможности заходить под отладкой.
2. Нормальным хелпом на API.

Для решения 1-го вопроса нужна студия не Express версия. По 2-му вопросу, я так понимаю, помощь уже пришла )

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

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

Re: Скрипты и API

Сообщение Madwolf » 16 фев 2015, 13:01

Вам нужно это свойство:
Позиция легенды <20450> Позиция легенды
API-Define: FUNC_ARTICLEPLACEMENT_CAPTIONID
???


KiraKudachinova
здесь недавно
здесь недавно
Сообщения: 38
Зарегистрирован: 02 фев 2015, 07:18
Ф.И.О.: Кудачинова Кира Владимировна

Re: Скрипты и API

Сообщение KiraKudachinova » 16 фев 2015, 13:05

Спасибо за помощь, отлаживать по шагам не могу потому что у меня стоит режим Release,мне это необходимо, чтоб получать в процессе сборки файл .dll. Если честно не представляю чем мне поможет студия express, чем она будет лучше ultimate?

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

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

Re: Скрипты и API

Сообщение Madwolf » 16 фев 2015, 13:09

Очевидно произошло смешение понятий "ссылка". Т.е. ссылка на изделие с точки зрения программирования это будет Article. А с точки зрения Еплана это ArticleReference. Как я уже говорил, оперировать Article нет смысла, т.к. они не содержат информации о устройствах, т.е. вы не сможете выйти через изделие на свойство Позиция легенды <20450>. А вот через ArticleReference можно.

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

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

Re: Скрипты и API

Сообщение Madwolf » 16 фев 2015, 13:11

Так она не лучше, я же сказал "студия не Express версия". А почему нельзя поставить в режим debug и получать тоже файл dll? Мы же это делаем. Бывает много тонкостей, без отладки просто невозможно разобраться, либо очень долго это все будет.


KiraKudachinova
здесь недавно
здесь недавно
Сообщения: 38
Зарегистрирован: 02 фев 2015, 07:18
Ф.И.О.: Кудачинова Кира Владимировна

Re: Скрипты и API

Сообщение KiraKudachinova » 16 фев 2015, 13:18

Madwolf писал(а):Вам нужно это свойство:
Позиция легенды <20450> Позиция легенды
API-Define: FUNC_ARTICLEPLACEMENT_CAPTIONID
???


Да это свойство (я знаю какой код у этого свойства и как его получить через объект function), но свойство "позиция легенды" есть только у Function, через изделие Article я не могу получить, проблема не в том,что я не знаю как называется это свойство.

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

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

Re: Скрипты и API

Сообщение Madwolf » 16 фев 2015, 13:25

Решение см. выше.


KiraKudachinova
здесь недавно
здесь недавно
Сообщения: 38
Зарегистрирован: 02 фев 2015, 07:18
Ф.И.О.: Кудачинова Кира Владимировна

Re: Скрипты и API

Сообщение KiraKudachinova » 17 фев 2015, 07:06

Madwolf писал(а):Так она не лучше, я же сказал "студия не Express версия". А почему нельзя поставить в режим debug и получать тоже файл dll? Мы же это делаем. Бывает много тонкостей, без отладки просто невозможно разобраться, либо очень долго это все будет.


Ну, потому что у меня тип проекта "Библиотека классов", библиотеку классов невозможно отладить в режиме debug, я понимаю, что я не могу отлаживать, но я не нашла другого способа,Я не заметила частицу "не".Какой у вас тип проекта,можете скинуть любой проект целиком,который отлаживается-можно даже пустой,хочу посмотреть,что у меня не так
Последний раз редактировалось KiraKudachinova 17 фев 2015, 12:08, всего редактировалось 1 раз.


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



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

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