Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: "СкриптописАние" под AD6.7
Форум разработчиков электроники ELECTRONIX.ru > Печатные платы (PCB) > Разрабатываем ПП в САПР - PCB development > Altium Designer, DXP, Protel
Gennaj
Здравствуйте!
Возникла необходимость сохранять проекты в ином формате. Ну, ясное дело, вручную все просто: File - Save Copy As на каждом листе схемы и всего делов-то.
Но вот захотелось автоматизировать сей нудный процесс, сведя сохранение наскольких файлов проекта к нажатию одной кнопки. Вот тут-то и вылезла "заковыка": стандартный процесс SaveObject имеет всего два параметра: SaveMode (Standard, SaveAs, SaveCopyAs) и ObjectKind (выбор, что сохранять). После запуска этого процесса я попадаю в стандартное окно "SaveCopyAs" и вынужден снова вручную вводить имя файла, выбирать папку назначения и тип файла.
Вопрос: можно ли каким-то образом автоматизировать ввод этой информации?
Иными словами - как из скрипта передать диалогу "SaveCopyAs" три параметра: папка, имя файла и тип файла.
Gennaj
Сам задал, сам и ответил...
В общем, у этой процедуры такого свойства нет, но можно использовать другие.
Задачу решить удалось :-)
yeah.gif
Владимир
Цитата(Gennaj @ Oct 1 2007, 17:29) *
Сам задал, сам и ответил...
В общем, у этой процедуры такого свойства нет, но можно использовать другие.
Задачу решить удалось :-)
yeah.gif

Кинь на мыло для тестирования wink.gif
Alex Ko
Цитата(Gennaj @ Oct 1 2007, 18:29) *
Сам задал, сам и ответил...
В общем, у этой процедуры такого свойства нет, но можно использовать другие.
Задачу решить удалось :-)
yeah.gif

Может, лучше сюда? Или мне тоже..
Gennaj
Цитата(Alex Ko @ Oct 2 2007, 09:16) *
Может, лучше сюда? Или мне тоже..


Хм... А это действительно кому-то интересно???
Дело в том, что программа получилась не короткая, и выполняет кучу разных процедур, обеспечивая трансляцию файлов текущего проекта в формат Protel99.
При этом проверяются некоторые типичные ошибки, препятствующие корректной передаче. Здесь важное уточнение: программа ориентирована на работу с нашей библиотекой. Например, по ГОСТ требуется разрывы линий электрической связи завершать стрелками, простое указание NetLabel не катит. Ну, мы и сделали графический компонент типа "Обрыв связи", который проставляем на концах линий. В Альтиуме все в порядке, а вот в Протеле возникает проблема - там нет типа graphical. Соответственно все эти графические символы должны быть пронумерованы уникальными десигнаторами. С помощью команды Annotate этого не сделать, так как графика на автомате не нумеруется. Значит, либо Find Symilar - смена типа - нумерация - смена типа, либо писать программу.
Аналогично, Протел не понимает полигонов типа Solid, а мы в Альтиуме работаем именно с такими.
Вот программа и производит кучу проверок и преобразований, после чего сохраняет набор файлов.
Короче, сейчас скопирую из руководства, которое я для наших написал:

Ошибки, которые обнаруживаются программой и приводят к ее останову:
- наличие многоконтактных разъемов («Цепь-Контакт»), нарисованных на схеме зеркально относительно библиотечного компонента (имеющиеся в библиотеке многоконтактные разъемы имеют два варианта начертания, что позволяет не использовать атрибут Mirror – «отразить»);
- наличие компонентов, расположенных вне сетки – ошибка типа «Off grid»;
- наличие символов «Sheet Entry», расположенных не в сетке с шагом 10.
Все эти ошибки должны быть вручную исправлены пользователем.

Кроме того, программа автоматически осуществляет ряд подготовительных действий, которые призваны обеспечить правильную передачу в Protel99 проекта. А именно:
- в папке текущего проекта создается папка для сохранения файлов по принципу: <Имя проекта>\Protel99 (например: AV221_V6\Protel99);
- если такая папка ранее существовала, то все файлы, которые были в ней до начала работы скрипта, удаляются;
- автоматически нумеруются все символы «Обрыв связи»;
- корректируются ссылки в элементах SheetSymbol (символ листа);
- изменяется тип всех полигонов на печатной плате с Solid на 45DegreeHatch и осуществляется их перестройка;
- обнаруживаются и корректируются правила для Clearance<=0.
Все корректировки, проводимые автоматически, не сохраняются в исходных файлах Альтиума и попадают только в файлы формата Protel99.

Вот, собственно, такая программа :-)
Могу, в принципе, поделится, если это кому-то нужно.
Alex Ko
Цитата(Gennaj @ Oct 2 2007, 16:10) *
Хм... А это действительно кому-то интересно???
Дело в том, что программа получилась не короткая, и выполняет кучу разных процедур, обеспечивая трансляцию файлов текущего проекта в формат Protel99.

Да, это не то, что я думал.. А на чём писал?
Gennaj
Цитата(Alex Ko @ Oct 2 2007, 16:49) *
Да, это не то, что я думал.. А на чём писал?

Delphi Script.
А что думал?
Alex Ko
Цитата(Gennaj @ Oct 2 2007, 18:42) *
Delphi Script.
А что думал?

Ну, будучи практически нулём в программировании, думал методом Copy-Paste надергать скрипт для простейших задач, типа сохранения проекта в .DWG, что АД должон бы делать сам, но дурит (вместо всех листов схемы выдаёт один и тот же под разными именами) и т.п., надеясь на что-нить простейшее,типа Visual Basic..
Gennaj
Цитата(Alex Ko @ Oct 3 2007, 08:23) *
Ну, будучи практически нулём в программировании, думал методом Copy-Paste надергать скрипт для простейших задач, типа сохранения проекта в .DWG, что АД должон бы делать сам, но дурит (вместо всех листов схемы выдаёт один и тот же под разными именами) и т.п., надеясь на что-нить простейшее,типа Visual Basic..

В принципе, может получится. Вам придется кое-что поменять, а кое-какие функции вообще выбросить. Я отправил Вам в личку текст скрипта. Попробуйте, а затем напишите о результатах.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.