PCBinAquarium
Jun 29 2011, 12:57
Джон, спасибо. то что вы делаете весьма полезно. Не могли бы вы выложить последний вариант вашего кода align?
John Silver
Jun 29 2011, 13:08
В первом посте есть ссылка, там идете на вкладку Downloads, и выкачиваете необходимую версию.
Устаканившемуся коду я присваиваю tag, например "0.5".
Текущая версия имеет тег "tip".
Иногда (редко) bitbucket не доступен, как сегодня перед обедом было. Но это очень редко и не надолго.
Цитата(John Silver @ Jun 29 2011, 13:52)

Не-не-не.
Я иду по списку:
1 взял сегмент, удалил, в списке осталась запись, но ID:removed
2 взял сегмент, получил варнинг о первой записи, ...
....
Ни обновить ID, ни удалить из списка.
Такое может быть при определенных условиях, но этого можно избежать... все зависит от того как организовать список (списки) и как потом с ними работать. Я стараюсь использовать списки в первую очередь и пока ворнингов удается избегать...
Кстати элементы из списков удалять можно, но опять же при определенных условиях...
John Silver
Jun 30 2011, 08:14
Разобрался.
Цитата
Попробуй сделать так: удаляется сегмент на старом месте -> перемещается объект -> создается сегмент на новом месте.
Вот так все заработало.
Оказывается если создать сегмент, и его конец попадает на заливку, то теряется Net.
Сдесь же получается, что конец попадает на уже сдвинутый пин, и все гуд.
Еще наблюдение, если не делать вызов axlDBCloak(), то потеряем Netы.
Варнинги появлялись когда терялись Net. Так и не понял в каком месте они вызывались.
Сделал принудительный режим "rough" для шейпов, при нажатом чекбоксе Stretch etch. Иначе тоже можно потерять Net.
Тестируйте.
John Silver
Jul 1 2011, 21:21
Пофиксил баг. Если к пину подходит несколько дорожек, то при перемещении тянется только одна.
Потестил. Применительно к stretch etch ничего не нашел.
Возвращаясь к моему посту
№22..
Добавлю - при отрицательных значениях координаты Distribute не работает галочка Gap.
John Silver
Jul 4 2011, 08:30
Цитата(Ant_m @ Jul 4 2011, 09:53)

Потестил. Применительно к stretch etch ничего не нашел.
гуд
Цитата
Возвращаясь к моему посту
№22..
Добавлю - при отрицательных значениях координаты Distribute не работает галочка Gap.
Не понял, можно по шагам?
Таки мы выяснили, что сползание это фича?
Скажем так, меня как пользователя немного смущает что если я задам разный шаг(в одном случае положительный а в другом отрицательный), то команда Distribute ведет себя по разному... Получается что команды distribute = +10 и distribute = -10 не симметричны! Выполняя например 4 команды: d = +10; d = +5; d = -5; d = -10 компоненты никогда не вернутся в туже исходную точку.
Про Gap: насколько я понял функция этой галочки
не допускать чтобы компоненты накладывались друг на друга... Когда координаты положительны это так и есть - между компонентами всегда есть какое то расстояние. А вот если задать отрицательную координату, то компоненты легко друг на друга наложить, например задав Gap = -1(если компонент конечно не меньше 1мм).
З.Ы с фичей можно смириться(это верхний абзац поста) но есть НО - эта фича судя по всему влияет на Gap, точнее скажет так: поведение Gap это последствие фичи
John Silver
Jul 4 2011, 10:32
Все равно не понял в чем баг.
Функция Gap состоит в другом:
- используется только для DistributeH и DistributeV
- служит для распределения зазоров между границами компонентов
Т.о. при включенном Gap можно взять разнородные компоненты, распределить, и зазоры станут равны.
Если же не использовать Gap, то распределение будет вестись между точками (например центрами), и зазоры между границами разнородных компонентов будут разными.
Посмотрите в коде align_do.il, как используется переменная _formData->useGap.
Использование отрицательных координат:
- выстройте по горизонтали 10 элементов (резистор 0805)
- включите Gap
- в поле DistributeV введите "-20" mill (активируйте поле)
- нажмите Distribute, получится красивая лесенка. Зазор у соседних элементов между верхней границей нижнего элемента и нижней границей верхнего элемента будет =-20mill.
Очень симпатичная штука, спасибо!
А такой вопрос (может и ламерский): как выделить несколько компонентов для выравнивания не окном, а "поштучно" ?
ctrl+pick не работает..
Цитата(Uree @ Jul 6 2011, 11:35)

Temp Group...
Спасибо!..
John Silver
Jul 11 2011, 08:47
Цитата(sa_per @ Jul 6 2011, 11:09)

как выделить несколько компонентов для выравнивания не окном, а "поштучно" ?
ctrl+pick не работает..
A что, ctrl+pick где-нибудь в Allegro PCB Editor работает?
Вот решил зделать сохранение настроек. Варианты:
1 Сохранять в отдельный файл. Совсем плохой вариант.
2 Сохранять в файл allegro.ini. Вроде неплохо, но парсить текстовый файл не улыбается.
3 Сохранять непосредственно в проект, в файл .brd. ИМХО лучший вариант. Как это сделать?
Какие у вас мысли на этот счет?
Я думаю, что сохранять надо как раз в отдельный файл.
В brd не надо, т.к. не везде может быть этот скрипт, а в allegro.ini - т.к. не всем надо иметь автозапуск.
John Silver
Jul 11 2011, 11:35
Цитата(vitan @ Jul 11 2011, 12:12)

Я думаю, что сохранять надо как раз в отдельный файл.
И где его расположить, как назвать, какой формат, чем парсить?
Цитата
В brd не надо, т.к. не везде может быть этот скрипт,
ну и хай с ним. Будет лежать в файле и никому не мешать. Зато на каждый проект отдельные настройки.
Посмотрите сколько всяких "ненужных" вещей лежит в конце файла.
В идеале к объекту "design" прицепить что-то вроде property, и в эту пропертю засунуть лист с настройками. Тогда отпадает гемор с парсингом текста.
Цитата
а в allegro.ini - т.к. не всем надо иметь автозапуск.
причем сдесь автозапуск? Сохранять настройки формы хочу.
Цитата(John Silver @ Jul 11 2011, 15:35)

И где его расположить, как назвать, какой формат, чем парсить?
Все равно. Ну, расположить, разве что, в одном из тех каталогов, где остальные файлы располагаются.
Цитата(John Silver @ Jul 11 2011, 15:35)

ну и хай с ним. Будет лежать в файле и никому не мешать. Зато на каждый проект отдельные настройки.
Посмотрите сколько всяких "ненужных" вещей лежит в конце файла.
В идеале к объекту "design" прицепить что-то вроде property, и в эту пропертю засунуть лист с настройками. Тогда отпадает гемор с парсингом текста.
Будет оно кому-то мешать, или нет, еще не известно... Думается, что, скорее будет, чем нет. Кому-то и когда-то.
Если у Вас трудности с парсингом текста, то почему Вы не сделаете бинарный файл? Не обязательно же его потом отдельно в текстовом редакторе править?
Цитата(John Silver @ Jul 11 2011, 15:35)

причем сдесь автозапуск? Сохранять настройки формы хочу.
Ну это же ini для всего аллегро.
John Silver
Jul 11 2011, 14:29
Цитата(vitan @ Jul 11 2011, 15:40)

Будет оно кому-то мешать, или нет, еще не известно... Думается, что, скорее будет, чем нет. Кому-то и когда-то.
В skill, например, есть функция для прикрепления файла к дизайну, т.е. включения некого файла внутрь .brd. Есть функции для работы с пропертями дизайна.
Я же не собираюсь открывать файл и ручками туда что то добавлять. Вы именно так и подумали?
Проблема в том, что я не вкурил все эти функции, какую лучше использовать, как?
Повторюсь: в идеале к объекту "design" прицепить что-то вроде property, и в эту пропертю засунуть лист с настройками. Потом при вызове скрипта посмотреть, что у дизайна есть такая пропертя, и взять из нее все настройки. Получается 2 строчки кода: 1 посмотреть что есть, 2 забрать. Как это сделать?
Цитата
Ну это же ini для всего аллегро.
И? Таки что мешает добавить туда свою секцию [align_script]? Но опять же, это по сути первый вариант, опять надо делать поиск по тексту, сравнение... Посему он мне не нравится.
Цитата(John Silver @ Jul 11 2011, 18:29)

Я же не собираюсь открывать файл и ручками туда что то добавлять. Вы именно так и подумали?

Упаси Боже.

Просто если есть такая функция, то не обязательно же ее применять.
Цитата(John Silver @ Jul 11 2011, 18:29)

И? Таки что мешает добавить туда свою секцию [align_script]? Но опять же, это по сути первый вариант, опять надо делать поиск по тексту, сравнение... Посему он мне не нравится.
Ничего не мешает, правильно, что по сути это первый вариант. Я про скилл мао знаю, но мне рассказывали, что работа с текстом там очень простая. Кроме того, если Вам все-таки сложно, то можно же хранить все в бинарном виде. Это плохо?
Я считаю, что хранить настройки инструмента в файле проекта неправильно. Вот, если бы в файле проекта сохранялись данные, относящиеся к проекту, то - да. Поэтому я за вариант 1. Так, кстати, во многих программах сделано, и хорошо, как мне кажется...
John Silver
Jul 11 2011, 16:16
Цитата(vitan @ Jul 11 2011, 18:42)

то можно же хранить все в бинарном виде. Это плохо?
Еще хуже, ваще не представляю, как это организовать в бинарнике.
Цитата
Я считаю, что хранить настройки инструмента в файле проекта неправильно. Вот, если бы в файле проекта сохранялись данные, относящиеся к проекту, то - да. Поэтому я за вариант 1. Так, кстати, во многих программах сделано, и хорошо, как мне кажется...
Таки пришел я домой и проверил свои подозрения: настройки инструментов храняться в проекте. Ну или так: сохраняются для каждого проекта отдельно (а где сохраняются? Видимо в самом проекте...).
Все же это нормально, например в одном проекте надо тянуть дорожки, а в другом лучше их резать.
Цитата(John Silver @ Jul 11 2011, 20:16)

Еще хуже, ваще не представляю, как это организовать в бинарнике.
Дык элементарно. В файл сохраняются параметры, которые надо. Например, галочки (по 1 биту на штуку), числа, строки. Все это тупо в любом порядке сливается в файл, а при необходимости читается в том же порядке. Обычное дело было (в старые добрые времена, теперь проклятые программисты для сохранения сливают весь дамп ОЗУ

).
Цитата(vitan @ Jul 11 2011, 16:40)

Будет оно кому-то мешать, или нет, еще не известно... Думается, что, скорее будет, чем нет. Кому-то и когда-то.
+1e10
По законам Мерфи, cadence выкатит какой нибудь хотфикс, который будет конфликтовать с вашими добавлениями. Хорошо если выяснится сразу, а если приведет к не повторяющимся глюкам и чудесам????? Куча времени уйдет в трубу.
Если не хотите использовать allegro.ini, то что мешает сделать свой файл с настройками? Лежащий рядом с allegro.ini, но имеющий свой, удобный для вас формат.
John Silver
Jul 12 2011, 10:34
Ну вы блин даете...
Волков бояться - в лес не ходить?
Есть
специальный инструмент, что бы добавить в дизайн свою инфу, так нет, низя его использовать, а то вдруг...
Так может тогда не использовать юзер проперти на компонентах, и еще кучу других возможностей? А то вдруг...
Были прецеденты?
Посмотрите до кучи на deprecated функции в skill. Они тянутся и тянутся, обеспечивают совместимось.
Вощем, не верю я, что такое может случится.
По Мерфи: если, что-то плохое должно случиться, то оно случится, добавил ты инфу в дизайн или нет.
Цитата
настройки инструментов храняться в проекте.
Что есть вери гуд!
Большая просьба не делать автоматического сохранения настроек в проекте. Или сделать это поведение отключаемым.
John Silver
Jul 12 2011, 13:22
John Silver
Jul 12 2011, 21:26
Запилил сохранение настроек.
По просьбам трудящихся сделал двоякий механизм.
align.il:
Код
; t - store settings in design
; nil - store settings in file %envpath%/align_script.ini
EN_STORE_TO_DESIGN = t
align_script.ini - псевдо-ини, проверка целостности не производится, так ша ручками в него лучше не лазить,
а то вдруг...
Зато парсить не пришлось
Цитата(John Silver @ Jul 12 2011, 17:22)

Лучше бы задать вопрос в тех. поддержку. А то, ИМХО, форум cadence, от самой cadence оторван. В смысле что нифига они его не читают.
Цитата(John Silver @ Jul 13 2011, 01:26)

Запилил сохранение настроек.
По просьбам трудящихся сделал двоякий механизм.
Спасибо. И все таки, хранить настройки скрипта в проекте я считаю не правильным. Например потому что, совсем не очевидно как будут работать сторонние программы с этим файлом, тот же hyperlynx. А вдруг ваша структура(строка, переменная) как то совпадут с зарезервированной, но сейчас не используемой? Все варианты вы ведь проверить не сможете.
З.Ы как можно "выпилить" эти настройки из файла brd? Если они туда записались.
John Silver
Jul 13 2011, 07:25
Цитата(Ant_m @ Jul 13 2011, 08:13)

Лучше бы задать вопрос в тех. поддержку. А то, ИМХО, форум cadence, от самой cadence оторван. В смысле что нифига они его не читают.
И что они мне ответят? Да, вы знаете, у нас там баг на баге и багом погоняет, поэтому нее используйте эту фичу, и ваще лучше переходите на Ментор.
Цитата
Спасибо. И все таки, хранить настройки скрипта в проекте я считаю не правильным. Например потому что, совсем не очевидно как будут работать сторонние программы с этим файлом, тот же hyperlynx. А вдруг ваша структура(строка, переменная) как то совпадут с зарезервированной, но сейчас не используемой? Все варианты вы ведь проверить не сможете.
Посмотрите сколько там уже зааттачено axlGetAllAttachmentNames(). Потом посмотрите на эти аттачи в текстовом редакторе, в конце файла. О чем это говорит? Что фича активно используется.
Цитата
З.Ы как можно "выпилить" эти настройки из файла brd? Если они туда записались.
axlDeleteAttachment(t_attachmentId)
John SilverРаз уж Вы такой добрый, может сделаете нормальный инсталлятор\деинсталлятор?
Установил последнюю версию (копировал файлы только в текущий каталог).
Опять удалил строку про регистрацию пункта меню.
После запуска из командной строки (просто "align") возникает ошибка:
Код
E- *Error* errsetstring: argument #1 should be a string (type template = "tgs") - nil
John Silver
Jul 19 2011, 13:37
Цитата(vitan @ Jul 19 2011, 10:36)

John Silver
Раз уж Вы такой добрый,
Да, недаром меня назвали John Silver, что означает: "добрый, отзывчивый, и добрый... иногда"
Цитата
может сделаете нормальный инсталлятор\деинсталлятор?
Думал об этом, но не умею.
Помогайте, люди! С миру по нитке... дальше вы знаете. Велкам, так сказать.
Цитата
Установил последнюю версию (копировал файлы только в текущий каталог).
Опять удалил строку про регистрацию пункта меню.
Предлагаю вам сделать патчик, что бы не регистрировало пункт если версия, например, меньше 16.
Там ничего сложного. Есть готовая функция, чтобы взять версию. А я его добавлю в главную ветку.
Вам, как пользователю 15 версии, и карты в руки.
С картинками решили вопрос?
Цитата
После запуска из командной строки (просто "align") возникает ошибка:
Код
E- *Error* errsetstring: argument #1 should be a string (type template = "tgs") - nil
А это уже посерьезней. С какой версии скрипта это появилось?
Загрузите все файлы по очереди, и посмотрите в каком файле эта ошибка.
John Silver
Jul 19 2011, 18:57
Цитата(vitan @ Jul 19 2011, 10:36)

После запуска из командной строки (просто "align") возникает ошибка:
Код
E- *Error* errsetstring: argument #1 should be a string (type template = "tgs") - nil
У меня тоже. Нет проверки на nil. Кстати это происходит только если выбрать сохранение в design.
Пофиксилось это само, т.к. я запилил третий механизм сохранения настроек в design property.
Сохранение в property сделал по-умолчанию. Вроде так постабильнее будет. (параноиком меня уже сделали)
John Silver
Aug 9 2011, 20:50
Встречайте новую версию.
Пофиксил кой-какие баги. Добавил возможность выбора номера вывода.
Нашел багу: После использования скрипта align перестают работать быстрые клавиши. У меня перестает работать поворот компонента - кнопка r.
В env файле написано так:
Код
funckey r iangle 45
После использования скрипта эта запись исчезает и поворот по клавише не работает.
З.Ы версия 0.8
John Silver
Sep 20 2011, 07:04
Вопроизвел. Поправлю.
PS Исчезает именно в env файле? 0_0
Или все же в текущей сессии?
В сессии, не в файле. После перезапуска редактора все работает.
Смотрю Tools->Utilites->Env variables Tools->Utilites->Aliases, function key
John Silver
Sep 20 2011, 20:49
Сделал.
Еще починил не работающие функции Pick.
Спасибо!
John Silver
Sep 22 2011, 22:28
Я научился делать анимированные гифки

. Только надо кликнуть по ней, а то так не показывает.
Нажмите для просмотра прикрепленного файла
Только сейчас заметил что у меня не отображаются иконки выравнивания. Ясно что проблема с путями к иконкам, но не могу найти как можно установить %bmppath% в PCB editor. В User preferences его нет, в env тоже не видно, в хелпе тоже внятного ничего не написано
Когда иконки лежали рядом с проектом ".", то все работало. Переносить в ".../share/local/pcb/icons" ".../share/pcb/text/icons" не хочется.
Выкрутился дописав ручками в env
Цитата
set bmppath = $bmppath D:\Allegro\align\
Но вообще конечно странно, formpath, menupath можно изменить через UI, а bmppath нет - разработчики забыли?
John Silver
Sep 23 2011, 14:12
Хм... даже не обращал внимание, использовал пути по-умолчанию.
>Переносить в ".../share/local/pcb/icons" ".../share/pcb/text/icons" не хочется.
Почему? И так и так через ж.
Вот китайские друзъя подкинули "инсталятор". Потом вкину в репозиторий.
Цитата(John Silver @ Sep 23 2011, 18:12)

>Переносить в ".../share/local/pcb/icons" ".../share/pcb/text/icons" не хочется.
Почему? И так и так через ж.
Это да. Но, если прописать свои пути в конкретную папку, то инсталлятор-обновлятор не нужен - просто закинул файлы новой версии в выделенную папку и все. И не нужно вспоминать где что должно лежать. Ленивый я
Ну ведь предусмотрено решение, чтобы не пихать свои наработки в .../share/local/pcb/icons :
set BMPPATH = . $ALLEGRO_SITE/icons $GLOBAL/icons $ALLEGRO_INSTALL_ROOT/share/fsp/legends
set FORMPATH = . $ALLEGRO_SITE/forms $GLOBAL/forms
set MENUPATH = . $ALLEGRO_SITE/menus $GLOBAL/cuimenus
Фактически, можно создать копию ../share/pcb/text с аналогичными каталогами, но своим личным наполнением. Причем содержимое $ALLEGRO_SITE надписывает дефолтовые установки, потому как грузится последним - вот последняя строка глобального env-a:
source -q $ALLEGRO_SITE/site.env
John Silver
Sep 26 2011, 08:53
Вот поднялась интересная тема.
Как подгружать множество файлов?
Как использовать код повторно, библиотеки?
Как подгружать нужные файлы в файле данного проекта?
Предлагаю создать отдельную тему. Обсудим?
Можно и обсудить. Кастомизация софта - вопрос интересный. И у Аллегро для этого очень широкие возможности. Осталось только в них разобраться...
Опять "быстрые" клавиши - после использования выравнивания кнопка F3 меняет свое значение. (а у меня на нее fix назначен).
Код
alias F3 alnOops
Версию сказать не могу, в заголовках файлов видимо не заменились переменные. Дата изменения файлов 20.09.2011 20:45
Цитата
;
; $Source$ $Revision$ $Branch$ $Rev$
; $Author$ $Date$
John Silver
Nov 8 2011, 12:26
Цитата(Ant_m @ Nov 3 2011, 10:00)

Опять "быстрые" клавиши - после использования выравнивания кнопка F3 меняет свое значение. (а у меня на нее fix назначен).
Надо шаги. Я так понял:
1 назначить в env функцию на F3
2 для функции "oops" в env нету горячей клавиши
3 попользовать Align
4 выйти из Align
ошибка: после шага 4 на кнопке F3 висит "oops"
должно быть: после шага 4 на кнопке F3 висит функция прописанная в env файле.
Я все правильно понял?
John Silver
Nov 8 2011, 20:17
Ну, собственно, уже поправил. Проверяйте.
Сам не проверял, ибо много гемора с воспроизведением, тупо сохранил все кнопки, а потом их восстановил.
Интересная особенность bitbucket-а, если скачать версию со вкладки downloads, то все ключевые слова ($Revision: $ и т.п.) очищаются.
Если сделать hg clone, то все гуд, все на месте.
Баг или фича...
Да, правильно поняли. Про шаги учту.
Сейчас попробую.
Спасибо.
---------
Проверил - работает
Скачал версию 0.9.2. Кстати, неплохо бы, чтобы в разделе downloads что-то было...
Запускаю в 15.5. Инсталлятор отрабытывает нормально. При запуске aln ошибка, нет функции axlGetFunckey. Пришлось комментировать вызов alnInitHotKeys. После этого скрипт запускается, но в опциях нету картинок (раньше были). Выравнивание не работает (раньше работало). При выходе ошибка, пришлось комментировать вызов alnRestoreHotKeys.
Теперь нужен деинсталлятор.

Жаль, забыл, какая версия работала с 15.5. Придется опять руками все ровнять.
John Silver
Jan 19 2012, 10:05
Ой.
Предлагаю вычистить все предыдущие установки и попробовать 9,2 еще раз.
Если не поможет, надо будет найти версию которая работала нормально.
Тогда увидим, где собака порылась.
Последовательным приближением нашел, что выравнивание работает в версии 0.4.
Комментировать ошибку про регистрацию менюшки мне уже лень, и так работает.
Еще вопрос: при выборе шага распределения (distribute) цифры округляются до двух знаков после запятой. Этого бывает мало, надо бы по-хорошему считывать текущие настройки точности из проекта и позволять работать с этой точностью.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.