Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Выравнивание объектов в Allegro PCB
Форум разработчиков электроники ELECTRONIX.ru > Печатные платы (PCB) > Разрабатываем ПП в САПР - PCB development > Cadence
Страницы: 1, 2, 3
PCBinAquarium
Джон, спасибо. то что вы делаете весьма полезно. Не могли бы вы выложить последний вариант вашего кода align?
John Silver
В первом посте есть ссылка, там идете на вкладку Downloads, и выкачиваете необходимую версию.
Устаканившемуся коду я присваиваю tag, например "0.5".
Текущая версия имеет тег "tip".
Иногда (редко) bitbucket не доступен, как сегодня перед обедом было. Но это очень редко и не надолго.
Old1
Цитата(John Silver @ Jun 29 2011, 13:52) *
Не-не-не.
Я иду по списку:
1 взял сегмент, удалил, в списке осталась запись, но ID:removed
2 взял сегмент, получил варнинг о первой записи, ...
....
Ни обновить ID, ни удалить из списка.

Такое может быть при определенных условиях, но этого можно избежать... все зависит от того как организовать список (списки) и как потом с ними работать. Я стараюсь использовать списки в первую очередь и пока ворнингов удается избегать...
Кстати элементы из списков удалять можно, но опять же при определенных условиях...
John Silver
Разобрался.
Цитата
Попробуй сделать так: удаляется сегмент на старом месте -> перемещается объект -> создается сегмент на новом месте.

Вот так все заработало. wacko.gif
Оказывается если создать сегмент, и его конец попадает на заливку, то теряется Net.
Сдесь же получается, что конец попадает на уже сдвинутый пин, и все гуд.
Еще наблюдение, если не делать вызов axlDBCloak(), то потеряем Netы.

Варнинги появлялись когда терялись Net. Так и не понял в каком месте они вызывались.

Сделал принудительный режим "rough" для шейпов, при нажатом чекбоксе Stretch etch. Иначе тоже можно потерять Net.

Тестируйте.
John Silver
Пофиксил баг. Если к пину подходит несколько дорожек, то при перемещении тянется только одна.
Ant_m
Потестил. Применительно к stretch etch ничего не нашел.
Возвращаясь к моему посту №22..
Добавлю - при отрицательных значениях координаты Distribute не работает галочка Gap.
John Silver
Цитата(Ant_m @ Jul 4 2011, 09:53) *
Потестил. Применительно к stretch etch ничего не нашел.

гуд

Цитата
Возвращаясь к моему посту №22..
Добавлю - при отрицательных значениях координаты Distribute не работает галочка Gap.

Не понял, можно по шагам?
Таки мы выяснили, что сползание это фича?
Ant_m
Скажем так, меня как пользователя немного смущает что если я задам разный шаг(в одном случае положительный а в другом отрицательный), то команда Distribute ведет себя по разному... Получается что команды distribute = +10 и distribute = -10 не симметричны! Выполняя например 4 команды: d = +10; d = +5; d = -5; d = -10 компоненты никогда не вернутся в туже исходную точку.

Про Gap: насколько я понял функция этой галочки не допускать чтобы компоненты накладывались друг на друга... Когда координаты положительны это так и есть - между компонентами всегда есть какое то расстояние. А вот если задать отрицательную координату, то компоненты легко друг на друга наложить, например задав Gap = -1(если компонент конечно не меньше 1мм).

З.Ы с фичей можно смириться(это верхний абзац поста) но есть НО - эта фича судя по всему влияет на Gap, точнее скажет так: поведение Gap это последствие фичи sad.gif
John Silver
Все равно не понял в чем баг.

Функция Gap состоит в другом:
- используется только для DistributeH и DistributeV
- служит для распределения зазоров между границами компонентов
Т.о. при включенном Gap можно взять разнородные компоненты, распределить, и зазоры станут равны.
Если же не использовать Gap, то распределение будет вестись между точками (например центрами), и зазоры между границами разнородных компонентов будут разными.
Посмотрите в коде align_do.il, как используется переменная _formData->useGap.

Использование отрицательных координат:
- выстройте по горизонтали 10 элементов (резистор 0805)
- включите Gap
- в поле DistributeV введите "-20" mill (активируйте поле)
- нажмите Distribute, получится красивая лесенка. Зазор у соседних элементов между верхней границей нижнего элемента и нижней границей верхнего элемента будет =-20mill.
sa_per
Очень симпатичная штука, спасибо!
А такой вопрос (может и ламерский): как выделить несколько компонентов для выравнивания не окном, а "поштучно" ?
ctrl+pick не работает..
Uree
Temp Group...
sa_per
Цитата(Uree @ Jul 6 2011, 11:35) *
Temp Group...


Спасибо!..
John Silver
Цитата(sa_per @ Jul 6 2011, 11:09) *
как выделить несколько компонентов для выравнивания не окном, а "поштучно" ?
ctrl+pick не работает..

A что, ctrl+pick где-нибудь в Allegro PCB Editor работает?

Вот решил зделать сохранение настроек. Варианты:
1 Сохранять в отдельный файл. Совсем плохой вариант.
2 Сохранять в файл allegro.ini. Вроде неплохо, но парсить текстовый файл не улыбается.
3 Сохранять непосредственно в проект, в файл .brd. ИМХО лучший вариант. Как это сделать?

Какие у вас мысли на этот счет?
vitan
Я думаю, что сохранять надо как раз в отдельный файл.
В brd не надо, т.к. не везде может быть этот скрипт, а в allegro.ini - т.к. не всем надо иметь автозапуск.
John Silver
Цитата(vitan @ Jul 11 2011, 12:12) *
Я думаю, что сохранять надо как раз в отдельный файл.

И где его расположить, как назвать, какой формат, чем парсить?

Цитата
В brd не надо, т.к. не везде может быть этот скрипт,

ну и хай с ним. Будет лежать в файле и никому не мешать. Зато на каждый проект отдельные настройки.
Посмотрите сколько всяких "ненужных" вещей лежит в конце файла.
В идеале к объекту "design" прицепить что-то вроде property, и в эту пропертю засунуть лист с настройками. Тогда отпадает гемор с парсингом текста.

Цитата
а в allegro.ini - т.к. не всем надо иметь автозапуск.

причем сдесь автозапуск? Сохранять настройки формы хочу.
vitan
Цитата(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
Цитата(vitan @ Jul 11 2011, 15:40) *
Будет оно кому-то мешать, или нет, еще не известно... Думается, что, скорее будет, чем нет. Кому-то и когда-то.

В skill, например, есть функция для прикрепления файла к дизайну, т.е. включения некого файла внутрь .brd. Есть функции для работы с пропертями дизайна.
Я же не собираюсь открывать файл и ручками туда что то добавлять. Вы именно так и подумали? biggrin.gif
Проблема в том, что я не вкурил все эти функции, какую лучше использовать, как?
Повторюсь: в идеале к объекту "design" прицепить что-то вроде property, и в эту пропертю засунуть лист с настройками. Потом при вызове скрипта посмотреть, что у дизайна есть такая пропертя, и взять из нее все настройки. Получается 2 строчки кода: 1 посмотреть что есть, 2 забрать. Как это сделать?

Цитата
Ну это же ini для всего аллегро.

И? Таки что мешает добавить туда свою секцию [align_script]? Но опять же, это по сути первый вариант, опять надо делать поиск по тексту, сравнение... Посему он мне не нравится.
vitan
Цитата(John Silver @ Jul 11 2011, 18:29) *
Я же не собираюсь открывать файл и ручками туда что то добавлять. Вы именно так и подумали? biggrin.gif

Упаси Боже. sm.gif Просто если есть такая функция, то не обязательно же ее применять.

Цитата(John Silver @ Jul 11 2011, 18:29) *
И? Таки что мешает добавить туда свою секцию [align_script]? Но опять же, это по сути первый вариант, опять надо делать поиск по тексту, сравнение... Посему он мне не нравится.

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

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

Еще хуже, ваще не представляю, как это организовать в бинарнике.

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

Таки пришел я домой и проверил свои подозрения: настройки инструментов храняться в проекте. Ну или так: сохраняются для каждого проекта отдельно (а где сохраняются? Видимо в самом проекте...). laughing.gif

Все же это нормально, например в одном проекте надо тянуть дорожки, а в другом лучше их резать.
vitan
Цитата(John Silver @ Jul 11 2011, 20:16) *
Еще хуже, ваще не представляю, как это организовать в бинарнике.

Дык элементарно. В файл сохраняются параметры, которые надо. Например, галочки (по 1 биту на штуку), числа, строки. Все это тупо в любом порядке сливается в файл, а при необходимости читается в том же порядке. Обычное дело было (в старые добрые времена, теперь проклятые программисты для сохранения сливают весь дамп ОЗУ maniac.gif ).
Ant_m
Цитата(vitan @ Jul 11 2011, 16:40) *
Будет оно кому-то мешать, или нет, еще не известно... Думается, что, скорее будет, чем нет. Кому-то и когда-то.

+1e10
По законам Мерфи, cadence выкатит какой нибудь хотфикс, который будет конфликтовать с вашими добавлениями. Хорошо если выяснится сразу, а если приведет к не повторяющимся глюкам и чудесам????? Куча времени уйдет в трубу.
Если не хотите использовать allegro.ini, то что мешает сделать свой файл с настройками? Лежащий рядом с allegro.ini, но имеющий свой, удобный для вас формат.
John Silver
Ну вы блин даете...
Волков бояться - в лес не ходить?
Есть специальный инструмент, что бы добавить в дизайн свою инфу, так нет, низя его использовать, а то вдруг...
Так может тогда не использовать юзер проперти на компонентах, и еще кучу других возможностей? А то вдруг...
Были прецеденты?
Посмотрите до кучи на deprecated функции в skill. Они тянутся и тянутся, обеспечивают совместимось.
Вощем, не верю я, что такое может случится.
По Мерфи: если, что-то плохое должно случиться, то оно случится, добавил ты инфу в дизайн или нет. laughing.gif

Цитата
настройки инструментов храняться в проекте.

Что есть вери гуд!
vitan
Большая просьба не делать автоматического сохранения настроек в проекте. Или сделать это поведение отключаемым.
John Silver
Вот кстати, что говорят иностранные товарищи:
http://www.cadence.com/community/forums/T/19664.aspx
John Silver
Запилил сохранение настроек.
По просьбам трудящихся сделал двоякий механизм.
align.il:
Код
; t - store settings in design
; nil - store settings in file %envpath%/align_script.ini
  EN_STORE_TO_DESIGN = t

align_script.ini - псевдо-ини, проверка целостности не производится, так ша ручками в него лучше не лазить, а то вдруг... laughing.gif
Зато парсить не пришлось rolleyes.gif
Ant_m
Цитата(John Silver @ Jul 12 2011, 17:22) *
Вот кстати, что говорят иностранные товарищи:
http://www.cadence.com/community/forums/T/19664.aspx

Лучше бы задать вопрос в тех. поддержку. А то, ИМХО, форум cadence, от самой cadence оторван. В смысле что нифига они его не читают.

Цитата(John Silver @ Jul 13 2011, 01:26) *
Запилил сохранение настроек.
По просьбам трудящихся сделал двоякий механизм.

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

И что они мне ответят? Да, вы знаете, у нас там баг на баге и багом погоняет, поэтому нее используйте эту фичу, и ваще лучше переходите на Ментор. biggrin.gif

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

Посмотрите сколько там уже зааттачено axlGetAllAttachmentNames(). Потом посмотрите на эти аттачи в текстовом редакторе, в конце файла. О чем это говорит? Что фича активно используется.

Цитата
З.Ы как можно "выпилить" эти настройки из файла brd? Если они туда записались.

axlDeleteAttachment(t_attachmentId)
vitan
John Silver
Раз уж Вы такой добрый, может сделаете нормальный инсталлятор\деинсталлятор?

Установил последнюю версию (копировал файлы только в текущий каталог).
Опять удалил строку про регистрацию пункта меню.
После запуска из командной строки (просто "align") возникает ошибка:
Код
E- *Error* errsetstring: argument #1 should be a string (type template = "tgs") - nil
John Silver
Цитата(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
Цитата(vitan @ Jul 19 2011, 10:36) *
После запуска из командной строки (просто "align") возникает ошибка:
Код
E- *Error* errsetstring: argument #1 should be a string (type template = "tgs") - nil

У меня тоже. Нет проверки на nil. Кстати это происходит только если выбрать сохранение в design. wink.gif

Пофиксилось это само, т.к. я запилил третий механизм сохранения настроек в design property.
Сохранение в property сделал по-умолчанию. Вроде так постабильнее будет. (параноиком меня уже сделали)
John Silver
Встречайте новую версию.
Пофиксил кой-какие баги. Добавил возможность выбора номера вывода.
Ant_m
Нашел багу: После использования скрипта align перестают работать быстрые клавиши. У меня перестает работать поворот компонента - кнопка r.
В env файле написано так:
Код
funckey r      iangle 45

После использования скрипта эта запись исчезает и поворот по клавише не работает.

З.Ы версия 0.8
John Silver
Вопроизвел. Поправлю.

PS Исчезает именно в env файле? 0_0
Или все же в текущей сессии?
Ant_m
В сессии, не в файле. После перезапуска редактора все работает.
Смотрю Tools->Utilites->Env variables Tools->Utilites->Aliases, function key
John Silver
Сделал.
Еще починил не работающие функции Pick.
Ant_m
Спасибо! a14.gif
John Silver
Я научился делать анимированные гифки sm.gif. Только надо кликнуть по ней, а то так не показывает.
Нажмите для просмотра прикрепленного файла
Ant_m
Только сейчас заметил что у меня не отображаются иконки выравнивания. Ясно что проблема с путями к иконкам, но не могу найти как можно установить %bmppath% в PCB editor. В User preferences его нет, в env тоже не видно, в хелпе тоже внятного ничего не написано smile3046.gif
Когда иконки лежали рядом с проектом ".", то все работало. Переносить в ".../share/local/pcb/icons" ".../share/pcb/text/icons" не хочется.

Выкрутился дописав ручками в env
Цитата
set bmppath = $bmppath D:\Allegro\align\


Но вообще конечно странно, formpath, menupath можно изменить через UI, а bmppath нет - разработчики забыли?
John Silver
Хм... даже не обращал внимание, использовал пути по-умолчанию.

>Переносить в ".../share/local/pcb/icons" ".../share/pcb/text/icons" не хочется.
Почему? И так и так через ж.

Вот китайские друзъя подкинули "инсталятор". Потом вкину в репозиторий.
Ant_m
Цитата(John Silver @ Sep 23 2011, 18:12) *
>Переносить в ".../share/local/pcb/icons" ".../share/pcb/text/icons" не хочется.
Почему? И так и так через ж.

Это да. Но, если прописать свои пути в конкретную папку, то инсталлятор-обновлятор не нужен - просто закинул файлы новой версии в выделенную папку и все. И не нужно вспоминать где что должно лежать. Ленивый я rolleyes.gif
Uree
Ну ведь предусмотрено решение, чтобы не пихать свои наработки в .../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
Вот поднялась интересная тема.
Как подгружать множество файлов?
Как использовать код повторно, библиотеки?
Как подгружать нужные файлы в файле данного проекта?

Предлагаю создать отдельную тему. Обсудим?
Uree
Можно и обсудить. Кастомизация софта - вопрос интересный. И у Аллегро для этого очень широкие возможности. Осталось только в них разобраться...
Ant_m
Опять "быстрые" клавиши - после использования выравнивания кнопка F3 меняет свое значение. (а у меня на нее fix назначен).
Код
alias F3     alnOops


Версию сказать не могу, в заголовках файлов видимо не заменились переменные. Дата изменения файлов 20.09.2011 20:45
Цитата
;
; $Source$ $Revision$ $Branch$ $Rev$
; $Author$ $Date$
John Silver
Цитата(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
Ну, собственно, уже поправил. Проверяйте.
Сам не проверял, ибо много гемора с воспроизведением, тупо сохранил все кнопки, а потом их восстановил.

Интересная особенность bitbucket-а, если скачать версию со вкладки downloads, то все ключевые слова ($Revision: $ и т.п.) очищаются.
Если сделать hg clone, то все гуд, все на месте.
Баг или фича...
Ant_m
Да, правильно поняли. Про шаги учту.
Сейчас попробую.
Спасибо.

---------
Проверил - работает a14.gif
vitan
Скачал версию 0.9.2. Кстати, неплохо бы, чтобы в разделе downloads что-то было...
Запускаю в 15.5. Инсталлятор отрабытывает нормально. При запуске aln ошибка, нет функции axlGetFunckey. Пришлось комментировать вызов alnInitHotKeys. После этого скрипт запускается, но в опциях нету картинок (раньше были). Выравнивание не работает (раньше работало). При выходе ошибка, пришлось комментировать вызов alnRestoreHotKeys.
Теперь нужен деинсталлятор. sm.gif Жаль, забыл, какая версия работала с 15.5. Придется опять руками все ровнять. crying.gif
John Silver
Ой.
Предлагаю вычистить все предыдущие установки и попробовать 9,2 еще раз.
Если не поможет, надо будет найти версию которая работала нормально.
Тогда увидим, где собака порылась.
vitan
Последовательным приближением нашел, что выравнивание работает в версии 0.4.
Комментировать ошибку про регистрацию менюшки мне уже лень, и так работает.
Еще вопрос: при выборе шага распределения (distribute) цифры округляются до двух знаков после запятой. Этого бывает мало, надо бы по-хорошему считывать текущие настройки точности из проекта и позволять работать с этой точностью.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.