Nik0lay 0 19 мая, 2013 Опубликовано 19 мая, 2013 · Жалоба Всем привет! Используем 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`шник, а вот с панелями просмотра компонент на форме не уверен (а без них как то совсем плохо). Посоветуйте спецы... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nik0lay 0 20 мая, 2013 Опубликовано 20 мая, 2013 · Жалоба Похоже никто не зает, а кто знал забыл )) На данный момент могу составить списки футпринтов у проверяемой библиотеки и эталонных библиотек, нахожу новые элементы и заношу в список. Пока никак не могу понять как произвести копирование одиночного компонента из одной библиотеки в другую. Тянуть ради одного футпринта всю библиотеку на сервер не хочется. Есть вариант скопировать файл библиотеки во временный и уже из него удалить ненужные компоненты. Так кто работает, но размер остается такой же как и раньше, да и не получится из нескольких библиотек собрать в один. В общем, помощь не помешала бы... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
peshkoff 38 21 мая, 2013 Опубликовано 21 мая, 2013 · Жалоба да скрипты вещь такая вроде и должно работать, но на самом последнем месте ообрывается. я пишу скрипты, но все они касаются PCB и работы в одном файле. В свое время возник вопрос, так я его даже с помощью Petar Perisin (один из авторов гугло-скриптов) не смог решить А вопром был такой: изменяем длину цепи скриптом, а в панели изменение не происходит. и приплыли... чтоб ваш вопрос решить это надо написать что-то подобное и копать, пробовать, документации то по сути нету. попробуйте что-нибудь типа ActiveDoc или как он там, может с помощью ее получится переключиться (помню в солиде такая команда была, можно было прыгать из документа в документ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nik0lay 0 21 мая, 2013 Опубликовано 21 мая, 2013 · Жалоба По документации согласен, вроде и есть референс файл на тыщу с лишним страниц, а нужного чуть. Приходится изучать методом научного тыка ) Буду, конечно, пробывать, но надежда все убывает. Пока даже примерно не представляю как можно на свою панель DelphiScript поместить панель Альтиума. зы Начать было писать свой сервер в виде dll ... ага, наивный )))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Uladzimir 97 21 мая, 2013 Опубликовано 21 мая, 2013 · Жалоба а в панели изменение не происходит. и приплыли... Так панель обновлять нужно, она же не знает, что скрипт поработал Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
peshkoff 38 21 мая, 2013 Опубликовано 21 мая, 2013 · Жалоба Так панель обновлять нужно, она же не знает, что скрипт поработал аа.. интересно. надо попробовать. вообще я использую 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. Должны апдейтиться все панели, а этого не происходит Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Uladzimir 97 21 мая, 2013 Опубликовано 21 мая, 2013 · Жалоба вообще я использую ViewManager_FullUpdate method Должны апдейтиться все панели, а этого не происходит Возможно этого не достаточно, так как смены данных нет в панели (формально ей ни кто не сказал, что данные изменились), и информация в ней не обновляется, а перерисовывается экран. Сами же говорите в соседней ветке что все долго идет, если все перегружать и перекомпилировать по всякому мелкому случаю Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
peshkoff 38 21 мая, 2013 Опубликовано 21 мая, 2013 · Жалоба Где говорю? что-то я подзабыл. Но в принципе я согласен подождать, операция не в цикле, апдейт должен произойти перед завершением работы скрипта. и, судя по описанию, ViewManager_FullUpdate должен это делать. Но не делает... Возможно, есть какой-нибудь локальный апдейт PCBPanel.Update, Panel.Update или еще там чтото, может Runprocess или Client. не смог найти... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Uladzimir 97 21 мая, 2013 Опубликовано 21 мая, 2013 · Жалоба да смените в панели, например, класс или тип, а затем верните обратно, что было. по идее сработает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nik0lay 0 21 мая, 2013 Опубликовано 21 мая, 2013 · Жалоба Интересно послушать умных людей ) А есть какое нибудь решение у моей проблемы? Хотелось бы сделать на DelphiScriptForm форму похожую на панель Library (справа которая), с моим функционалом и отображением выбранных УГО и футпринта. Вроде попадаются всякого рода Handle, вот бы прикрутить.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
peshkoff 38 21 мая, 2013 Опубликовано 21 мая, 2013 · Жалоба да смените в панели, например, класс или тип, а затем верните обратно, что было. по идее сработает можно попробовать, но думаю вряд ли сработает. Панель не сразу обновляется, когда класс со схемы вносишь. Приходится еще там потыкать, чтобы все отобразилось как надо... Интересно послушать умных людей ) А есть какое нибудь решение у моей проблемы? Хотелось бы сделать на DelphiScriptForm форму похожую на панель Library (справа которая), с моим функционалом и отображением выбранных УГО и футпринта. Вроде попадаются всякого рода Handle, вот бы прикрутить.. Форму то сделать можно. Можно и заставить висеть постоянно, нужно чтоб скрипт постоянно работал. Ну а сделать ее такой же частью, как и панели альтиума незнаю... Альтиум даже не дает создать custom панель, они все жестко зашиты в коде http://code.google.com/p/altium-designer-addons/ все проштудировали? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nik0lay 0 21 мая, 2013 Опубликовано 21 мая, 2013 · Жалоба Форму то сделать можно. Можно и заставить висеть постоянно, нужно чтоб скрипт постоянно работал. Ну а сделать ее такой же частью, как и панели альтиума незнаю... Альтиум даже не дает создать custom панель, они все жестко зашиты в коде http://code.google.com/p/altium-designer-addons/ все проштудировали? Не-не, я хочу на своей форме показывать картинки уго и посадок, которые выбирает юзверь (из списка формы). Форма самая обычная, не нужно ее делать частью Альтиума и висеть ей все время нет необходимости. Можно, конечно, сделать скриншоты и их показывать, но, блин, это же изврат )))) Про ссылку знаю, все скачал, уже в печенках сидят... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
peshkoff 38 22 мая, 2013 Опубликовано 22 мая, 2013 · Жалоба мы контроль версий для таких задач используем. правда годится для небольшого количества разработчиков. кстати, альтиуму если svn указать, то он будет автоматом сканировать репозиторий. может вам стандартными средствами попробовать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nik0lay 0 22 мая, 2013 Опубликовано 22 мая, 2013 · Жалоба Эмм.. а зачем тут svn? Что я хочу: есть, к примеру, уго резистора и его футпринт в библиотеках (SchLib, PcbLib), мне нужно сгенерить 100500 компонентов в базе MySQL по ряду номиналов, точности и тп. Поэтому, на моей форме будут списки УГОшек и посадок и нужно показывать, собственно, чего мы выбрали (а как иначе то?). Тыкаем кнопку "Генерировать" и в базе MySQL формируются компоненты (через мою exe`шку). Как то так )) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Uladzimir 97 22 мая, 2013 Опубликовано 22 мая, 2013 · Жалоба Стоит задача синхронизации компонентов между разработчиками и сервером. Компоненты хранятся в виде DBLib, *.SCHLib, *.PCBLib, MySQL. Идея в том, что разработчики создают компоненты и запускают скрипт, который ищет созданные, пишет в отдельный SCHLib(PCBLib) и отправляет на сервер. Новые компоненты на сервере будут проверяться и записываться в базу MySQL. кстати, альтиуму если svn указать, то он будет автоматом сканировать репозиторий. может вам стандартными средствами попробовать? Угу. и стандартный называется Vault. Он включает и репозиторий, и то, что хотят скриптом сделать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться