реклама на сайте
подробности

 
 
> Скрипт в AD
Nik0lay
сообщение May 19 2013, 14:28
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 17-02-07
Пользователь №: 25 454



Всем привет!
Используем Altium 9, заплюхался со скриптами уже, кто разбирается, прошу помочь.

Стоит задача синхронизации компонентов между разработчиками и сервером. Компоненты хранятся в виде DBLib, *.SCHLib, *.PCBLib, MySQL. Идея в том, что разработчики создают компоненты и запускают скрипт, который ищет созданные, пишет в отдельный SCHLib(PCBLib) и отправляет на сервер. Новые компоненты на сервере будут проверяться и записываться в базу MySQL.
Имеется "TR0126 DXP RTL Reference.pdf", конечно, некоторые моменты проясняет, но толку мало.
Сейчас пытаюсь синхронизировать хотя бы футпринты, могу получить список футпринтов в библиотеке PCBLib, могу создать новую библиотеку, но, хоть убейте, не могу скопировать их!
Есть такая конструкция
Код
CurrentLib.RegisterComponent(NewPCBLibComp);
но это для вновь созданного компонента, если я туда засуну компонент полученный из другой библиотеки (уже зарегистрированный), то у Альтиума происходит когнитивный диссонанс и выпадение в осадок )) Чего нибудь типа CopyTo или CopyFrom я не нашел.
Пробывал с момощью комманд серверу, аналог ручного копирования через контекстное меню
Код
ResetParameters;
RunProcess('PCB:CopyComponent');
переключиться на другую библиотеку
ResetParameters;
RunProcess('PCB:PasteComponent');
но у меня не получается переключаться между библиотеками.
Это первая проблема.
Есть еще одна, в возможности решения которой средствами скриптов я сильно сомневаюсь. Это касается проверки скинутых на сервер компонент и записи в базу.
Нужно создать форму в которой можно было бы из списка присланных *.SCHLib, *.PCBLib (с их превьюшками как на панели Libraries) формировать компоненты в базе MySQL. Причем запросы к базе меня не беспокоят, делаю через внешний exe`шник, а вот с панелями просмотра компонент на форме не уверен (а без них как то совсем плохо).

Посоветуйте спецы...
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 25)
Nik0lay
сообщение May 20 2013, 15:49
Сообщение #2





Группа: Участник
Сообщений: 11
Регистрация: 17-02-07
Пользователь №: 25 454



Похоже никто не зает, а кто знал забыл ))
На данный момент могу составить списки футпринтов у проверяемой библиотеки и эталонных библиотек, нахожу новые элементы и заношу в список. Пока никак не могу понять как произвести копирование одиночного компонента из одной библиотеки в другую. Тянуть ради одного футпринта всю библиотеку на сервер не хочется. Есть вариант скопировать файл библиотеки во временный и уже из него удалить ненужные компоненты. Так кто работает, но размер остается такой же как и раньше, да и не получится из нескольких библиотек собрать в один. В общем, помощь не помешала бы...
Go to the top of the page
 
+Quote Post
peshkoff
сообщение May 21 2013, 05:42
Сообщение #3


люблю бегать и орать
*****

Группа: Свой
Сообщений: 1 685
Регистрация: 28-04-07
Из: ЮБутово@Москва.ru
Пользователь №: 27 376



да скрипты вещь такая вроде и должно работать, но на самом последнем месте ообрывается.
я пишу скрипты, но все они касаются PCB и работы в одном файле.
В свое время возник вопрос, так я его даже с помощью Petar Perisin (один из авторов гугло-скриптов) не смог решить
А вопром был такой: изменяем длину цепи скриптом, а в панели изменение не происходит. и приплыли...

чтоб ваш вопрос решить это надо написать что-то подобное и копать, пробовать, документации то по сути нету.

попробуйте что-нибудь типа ActiveDoc или как он там, может с помощью ее получится переключиться (помню в солиде такая команда была, можно было прыгать из документа в документ)
Go to the top of the page
 
+Quote Post
Nik0lay
сообщение May 21 2013, 06:34
Сообщение #4





Группа: Участник
Сообщений: 11
Регистрация: 17-02-07
Пользователь №: 25 454



По документации согласен, вроде и есть референс файл на тыщу с лишним страниц, а нужного чуть.
Приходится изучать методом научного тыка )
Буду, конечно, пробывать, но надежда все убывает. Пока даже примерно не представляю как можно на свою панель DelphiScript поместить панель Альтиума.
зы
Начать было писать свой сервер в виде dll ... ага, наивный ))))
Go to the top of the page
 
+Quote Post
Владимир
сообщение May 21 2013, 06:45
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 11 653
Регистрация: 25-03-05
Из: Минск
Пользователь №: 3 671



Цитата(peshkoff @ May 21 2013, 08:42) *
а в панели изменение не происходит. и приплыли...

Так панель обновлять нужно, она же не знает, что скрипт поработал
Go to the top of the page
 
+Quote Post
peshkoff
сообщение May 21 2013, 07:54
Сообщение #6


люблю бегать и орать
*****

Группа: Свой
Сообщений: 1 685
Регистрация: 28-04-07
Из: ЮБутово@Москва.ru
Пользователь №: 27 376



Цитата(Владимир @ May 21 2013, 10:45) *
Так панель обновлять нужно, она же не знает, что скрипт поработал


аа.. интересно. надо попробовать.

вообще я использую ViewManager_FullUpdate method

Description
This method invokes a full update of all panels that are associated with the current PCB document. This method is useful if a document has been modified programmatically especially with library documents.

Должны апдейтиться все панели, а этого не происходит
Go to the top of the page
 
+Quote Post
Владимир
сообщение May 21 2013, 08:37
Сообщение #7


Гуру
******

Группа: Модераторы
Сообщений: 11 653
Регистрация: 25-03-05
Из: Минск
Пользователь №: 3 671



Цитата(peshkoff @ May 21 2013, 10:54) *
вообще я использую ViewManager_FullUpdate method
Должны апдейтиться все панели, а этого не происходит

Возможно этого не достаточно, так как смены данных нет в панели (формально ей ни кто не сказал, что данные изменились), и информация в ней не обновляется, а перерисовывается экран.
Сами же говорите в соседней ветке что все долго идет, если все перегружать и перекомпилировать по всякому мелкому случаю
Go to the top of the page
 
+Quote Post
peshkoff
сообщение May 21 2013, 10:08
Сообщение #8


люблю бегать и орать
*****

Группа: Свой
Сообщений: 1 685
Регистрация: 28-04-07
Из: ЮБутово@Москва.ru
Пользователь №: 27 376



Где говорю? что-то я подзабыл.
Но в принципе я согласен подождать, операция не в цикле, апдейт должен произойти перед завершением работы скрипта. и, судя по описанию, ViewManager_FullUpdate должен это делать. Но не делает... Возможно, есть какой-нибудь локальный апдейт PCBPanel.Update, Panel.Update или еще там чтото, может Runprocess или Client. не смог найти...
Go to the top of the page
 
+Quote Post
Владимир
сообщение May 21 2013, 10:29
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 11 653
Регистрация: 25-03-05
Из: Минск
Пользователь №: 3 671



да смените в панели, например, класс или тип, а затем верните обратно, что было. по идее сработает
Go to the top of the page
 
+Quote Post
Nik0lay
сообщение May 21 2013, 13:01
Сообщение #10





Группа: Участник
Сообщений: 11
Регистрация: 17-02-07
Пользователь №: 25 454



Интересно послушать умных людей )
А есть какое нибудь решение у моей проблемы? Хотелось бы сделать на DelphiScriptForm форму похожую на панель Library (справа которая), с моим функционалом и отображением выбранных УГО и футпринта. Вроде попадаются всякого рода Handle, вот бы прикрутить..
Go to the top of the page
 
+Quote Post
peshkoff
сообщение May 21 2013, 13:35
Сообщение #11


люблю бегать и орать
*****

Группа: Свой
Сообщений: 1 685
Регистрация: 28-04-07
Из: ЮБутово@Москва.ru
Пользователь №: 27 376



Цитата(Владимир @ May 21 2013, 14:29) *
да смените в панели, например, класс или тип, а затем верните обратно, что было. по идее сработает


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

Цитата(Nik0lay @ May 21 2013, 17:01) *
Интересно послушать умных людей )
А есть какое нибудь решение у моей проблемы? Хотелось бы сделать на DelphiScriptForm форму похожую на панель Library (справа которая), с моим функционалом и отображением выбранных УГО и футпринта. Вроде попадаются всякого рода Handle, вот бы прикрутить..


Форму то сделать можно. Можно и заставить висеть постоянно, нужно чтоб скрипт постоянно работал.
Ну а сделать ее такой же частью, как и панели альтиума незнаю... Альтиум даже не дает создать custom панель, они все жестко зашиты в коде

http://code.google.com/p/altium-designer-addons/
все проштудировали?
Go to the top of the page
 
+Quote Post
Nik0lay
сообщение May 21 2013, 16:16
Сообщение #12





Группа: Участник
Сообщений: 11
Регистрация: 17-02-07
Пользователь №: 25 454



Цитата(peshkoff @ May 21 2013, 18:35) *
Форму то сделать можно. Можно и заставить висеть постоянно, нужно чтоб скрипт постоянно работал.
Ну а сделать ее такой же частью, как и панели альтиума незнаю... Альтиум даже не дает создать custom панель, они все жестко зашиты в коде

http://code.google.com/p/altium-designer-addons/
все проштудировали?

Не-не, я хочу на своей форме показывать картинки уго и посадок, которые выбирает юзверь (из списка формы). Форма самая обычная, не нужно ее делать частью Альтиума и висеть ей все время нет необходимости. Можно, конечно, сделать скриншоты и их показывать, но, блин, это же изврат ))))
Про ссылку знаю, все скачал, уже в печенках сидят...
Go to the top of the page
 
+Quote Post
peshkoff
сообщение May 22 2013, 05:31
Сообщение #13


люблю бегать и орать
*****

Группа: Свой
Сообщений: 1 685
Регистрация: 28-04-07
Из: ЮБутово@Москва.ru
Пользователь №: 27 376



мы контроль версий для таких задач используем.
правда годится для небольшого количества разработчиков.
кстати, альтиуму если svn указать, то он будет автоматом сканировать репозиторий.
может вам стандартными средствами попробовать?
Go to the top of the page
 
+Quote Post
Nik0lay
сообщение May 22 2013, 06:36
Сообщение #14





Группа: Участник
Сообщений: 11
Регистрация: 17-02-07
Пользователь №: 25 454



Эмм.. а зачем тут svn?
Что я хочу: есть, к примеру, уго резистора и его футпринт в библиотеках (SchLib, PcbLib), мне нужно сгенерить 100500 компонентов в базе MySQL по ряду номиналов, точности и тп. Поэтому, на моей форме будут списки УГОшек и посадок и нужно показывать, собственно, чего мы выбрали (а как иначе то?). Тыкаем кнопку "Генерировать" и в базе MySQL формируются компоненты (через мою exe`шку).
Как то так ))
Go to the top of the page
 
+Quote Post
Владимир
сообщение May 22 2013, 06:39
Сообщение #15


Гуру
******

Группа: Модераторы
Сообщений: 11 653
Регистрация: 25-03-05
Из: Минск
Пользователь №: 3 671



Цитата(Nik0lay @ May 19 2013, 17:28) *
Стоит задача синхронизации компонентов между разработчиками и сервером. Компоненты хранятся в виде DBLib, *.SCHLib, *.PCBLib, MySQL. Идея в том, что разработчики создают компоненты и запускают скрипт, который ищет созданные, пишет в отдельный SCHLib(PCBLib) и отправляет на сервер. Новые компоненты на сервере будут проверяться и записываться в базу MySQL.

Цитата
кстати, альтиуму если svn указать, то он будет автоматом сканировать репозиторий.
может вам стандартными средствами попробовать?

Угу. и стандартный называется Vault. Он включает и репозиторий, и то, что хотят скриптом сделать
Go to the top of the page
 
+Quote Post
peshkoff
сообщение May 22 2013, 06:53
Сообщение #16


люблю бегать и орать
*****

Группа: Свой
Сообщений: 1 685
Регистрация: 28-04-07
Из: ЮБутово@Москва.ru
Пользователь №: 27 376



Цитата(Nik0lay @ May 22 2013, 10:36) *
Эмм.. а зачем тут svn?
Что я хочу: есть, к примеру, уго резистора и его футпринт в библиотеках (SchLib, PcbLib), мне нужно сгенерить 100500 компонентов в базе MySQL по ряду номиналов, точности и тп. Поэтому, на моей форме будут списки УГОшек и посадок и нужно показывать, собственно, чего мы выбрали (а как иначе то?). Тыкаем кнопку "Генерировать" и в базе MySQL формируются компоненты (через мою exe`шку).
Как то так ))


как то я связь утерял...
т.е. получается каждый разработчик будет заходить и регулярно (по одному хотя бы разу в день) генерировать по 100000 компонентов?
потому что, как мне кажется, скрипт нужен для часто повторяющихся операций.
а нагородить тучу компонентов можно и средствами сторонними. я, например, это делаю в msAccess, иногда ексель использую...

да и не приходилось как то генерировать сразу тучу компонентов.
интересно. а ваши снабженцы в курсе, что вы собираетесь 100500 компонентов в базу поставить и их использовать?
Go to the top of the page
 
+Quote Post
Nik0lay
сообщение May 22 2013, 13:00
Сообщение #17





Группа: Участник
Сообщений: 11
Регистрация: 17-02-07
Пользователь №: 25 454



Цитата(Владимир @ May 22 2013, 11:39) *
Угу. и стандартный называется Vault. Он включает и репозиторий, и то, что хотят скриптом сделать

Там же, вроде, авторизация через сервак Альтиума? Тогда сразу отпадает, выхода "наружу" нет и не будет.


Цитата(peshkoff @ May 22 2013, 11:53) *
как то я связь утерял...
т.е. получается каждый разработчик будет заходить и регулярно (по одному хотя бы разу в день) генерировать по 100000 компонентов?
потому что, как мне кажется, скрипт нужен для часто повторяющихся операций.
а нагородить тучу компонентов можно и средствами сторонними. я, например, это делаю в msAccess, иногда ексель использую...

да и не приходилось как то генерировать сразу тучу компонентов.
интересно. а ваши снабженцы в курсе, что вы собираетесь 100500 компонентов в базу поставить и их использовать?

100500 компонентов это шутка юмора если что ))
Сторонними средствами я и сам нагородить могу и програмку набросать можно, не в этом суть. Не имея в сторонней программе изображений выбираемых уго`шек и посадок, Вам придется одним глазом поглядывать на окно Альтиума и сверяться, что чревато ошибками. Поэтому, хотелось бы средствами AD провернуть.
Выполняемые операции скрипта могут быть не особо частыми, но весьма монотонными и чреватыми ошибками (человеческий фактор).

Кроме того, это не мне так захотелось, если проблема не имеет решения, то я долже убедиться в этом на 101%, что бы потом "на ковре" не мямлить, что "..я не знаю, у меня не получилось..", сами понимаете, позиция должна быть железобетонная. Поэтому и обращаюсь к знающим людям )))
Go to the top of the page
 
+Quote Post
Nik0lay
сообщение May 22 2013, 18:29
Сообщение #18





Группа: Участник
Сообщений: 11
Регистрация: 17-02-07
Пользователь №: 25 454



YYYYEEEESSSS!!! 08.gif 1111493779.gif 1111493779.gif

Кому интересно:
PCBServer.PaintFootprintThumbnail
SCHServer.PaintComponentThumbnail
а уж дальше сама, сама... )
зы
В референс файле этого НЕТ!!! Что за угоды писали...

зыы
Еще бы найти как отдельные футпринты (и уго) записывать в файл библиотек. Я об этом уже писал выше..

Сообщение отредактировал Nik0lay - May 22 2013, 18:33
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
peshkoff
сообщение May 23 2013, 05:16
Сообщение #19


люблю бегать и орать
*****

Группа: Свой
Сообщений: 1 685
Регистрация: 28-04-07
Из: ЮБутово@Москва.ru
Пользователь №: 27 376



Цитата(Nik0lay @ May 22 2013, 22:29) *
YYYYEEEESSSS!!! 08.gif 1111493779.gif 1111493779.gif

Кому интересно:
PCBServer.PaintFootprintThumbnail
SCHServer.PaintComponentThumbnail
а уж дальше сама, сама... )
зы
В референс файле этого НЕТ!!! Что за угоды писали...

зыы
Еще бы найти как отдельные футпринты (и уго) записывать в файл библиотек. Я об этом уже писал выше..


круто!
это круто, что найдено решение! т.к. я обычно упираюсь во что-нибудь и действительно, команду фиг найдешь.

Референс написан поди лет 5 назад по типу "директорсказалдаидитынафикдиректордавайзарплатуявсесделал"
после этого не правили.
Например, в pcb (не помню с какой, но вроде с 10-ой версии) ввели поддержку 32 механических слоев. и появилась новая команда для обработки их
так эту команду я только на гугло-аддонах откопать смог, в документации - 0.
Вопрос откуда эти ребята знают? возможно они в альтиуме подрабатывают...
Go to the top of the page
 
+Quote Post
Nik0lay
сообщение May 23 2013, 06:35
Сообщение #20





Группа: Участник
Сообщений: 11
Регистрация: 17-02-07
Пользователь №: 25 454



Наверное так и находят, методом научного тыка.
Вот и приходится фигней страдать, набираеш, скажем, "PCBServer", нажимаеш точку и смотриш в выпадающем списке, что там есть полезного, особенно по типу входных данных и возращаемого результата.
Ну ладно референс старый, но АльтиумВики тоже молчит, а нафиг тогда онлайн ресурс, если он оперативно не правится? Нет, не понимаю я этого angry.gif
Go to the top of the page
 
+Quote Post
Nik0lay
сообщение May 28 2013, 14:53
Сообщение #21





Группа: Участник
Сообщений: 11
Регистрация: 17-02-07
Пользователь №: 25 454



Ну, в общем то, большенство проблем решено, осталось по мелочи. Например, как получить папку в которой распологается запущеный скрипт. Думал с помощью ParamStr(0) получить, да не вышло, вернула функция расположение dxp.exe. Может кто знает?
Go to the top of the page
 
+Quote Post
peshkoff
сообщение May 29 2013, 07:01
Сообщение #22


люблю бегать и орать
*****

Группа: Свой
Сообщений: 1 685
Регистрация: 28-04-07
Из: ЮБутово@Москва.ru
Пользователь №: 27 376



может ExtractFilePath()?
только в скобках надо правильно написать что хотим
Go to the top of the page
 
+Quote Post
Nik0lay
сообщение May 29 2013, 13:07
Сообщение #23





Группа: Участник
Сообщений: 11
Регистрация: 17-02-07
Пользователь №: 25 454



Хорошо бы еще знать, что в скобках писать )) То есть, я конечно знаю, как работает эта функция и что у нее на входе, но я не знаю где будет распологаться сам скрипт. Для exe`шника прекрасно подходят ParamStr и ExtractFilePath, а вот какой аналог ParamStr для скрипта, неизвестно. Есть для скрипта специальные функции вида "SpecialFolder_блабла" для получени путей к "Мои Документы", ''Рабочий стол", к папке Temp и др, а вот нужной мне нету...
По идее, можно получить путь к Project`ам и их документам, но скрипт может там и не находиться, если прописан как глобальный. Впрочем попробую поискать по имени где можно, авось найдется.
Go to the top of the page
 
+Quote Post
peshkoff
сообщение May 29 2013, 13:24
Сообщение #24


люблю бегать и орать
*****

Группа: Свой
Сообщений: 1 685
Регистрация: 28-04-07
Из: ЮБутово@Москва.ru
Пользователь №: 27 376



а. ExtractFilePath работает тупо со строкой.
на самом деле загвоздка. код для дельфи создан для запуска exe. незнаю даже, заложено ли в самом дельфи то. что его будут запускать как скрипт..
Go to the top of the page
 
+Quote Post
Aleksey Roubtsov
сообщение Jul 2 2013, 11:58
Сообщение #25


Участник
*

Группа: Участник
Сообщений: 67
Регистрация: 23-07-08
Из: Питер
Пользователь №: 39 160



А кто-нибудь умеет хэндлер назначить создаваемому во время исполнения объекту?
Аналогичная проблема h ttp://forum.live.altium.com/posts/55117
Тогда вопрос остался без ответа, может сейчас что-то прояснилось?
Go to the top of the page
 
+Quote Post
Master of Nature
сообщение Jul 2 2013, 13:02
Сообщение #26


Мыслящий
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 20-07-07
Из: Самара
Пользователь №: 29 270



Цитата(Aleksey Roubtsov @ Jul 2 2013, 15:58) *
А кто-нибудь умеет хэндлер назначить создаваемому во время исполнения объекту?
Аналогичная проблема h ttp://forum.live.altium.com/posts/55117
Тогда вопрос остался без ответа, может сейчас что-то прояснилось?
Этот пост висит ещё с 2005 года.
Попробуйте ап-нуть его, а ещё лучше перезадайте вопрос в русскоязычном форуме.


--------------------
FAQ по AD
Форум по AD
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью.
...стоит запомнить ...вернее задуматься.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 5th July 2025 - 15:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01605 секунд с 7
ELECTRONIX ©2004-2016