ggg 0 27 сентября, 2007 Опубликовано 27 сентября, 2007 · Жалоба Здравствуйте! Возникла необходимость сохранять проекты в ином формате. Ну, ясное дело, вручную все просто: File - Save Copy As на каждом листе схемы и всего делов-то. Но вот захотелось автоматизировать сей нудный процесс, сведя сохранение наскольких файлов проекта к нажатию одной кнопки. Вот тут-то и вылезла "заковыка": стандартный процесс SaveObject имеет всего два параметра: SaveMode (Standard, SaveAs, SaveCopyAs) и ObjectKind (выбор, что сохранять). После запуска этого процесса я попадаю в стандартное окно "SaveCopyAs" и вынужден снова вручную вводить имя файла, выбирать папку назначения и тип файла. Вопрос: можно ли каким-то образом автоматизировать ввод этой информации? Иными словами - как из скрипта передать диалогу "SaveCopyAs" три параметра: папка, имя файла и тип файла. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ggg 0 1 октября, 2007 Опубликовано 1 октября, 2007 · Жалоба Сам задал, сам и ответил... В общем, у этой процедуры такого свойства нет, но можно использовать другие. Задачу решить удалось :-) :yeah: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Uladzimir 61 1 октября, 2007 Опубликовано 1 октября, 2007 · Жалоба Сам задал, сам и ответил... В общем, у этой процедуры такого свойства нет, но можно использовать другие. Задачу решить удалось :-) :yeah: Кинь на мыло для тестирования ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex Ko 3 2 октября, 2007 Опубликовано 2 октября, 2007 · Жалоба Сам задал, сам и ответил... В общем, у этой процедуры такого свойства нет, но можно использовать другие. Задачу решить удалось :-) :yeah: Может, лучше сюда? Или мне тоже.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ggg 0 2 октября, 2007 Опубликовано 2 октября, 2007 · Жалоба Может, лучше сюда? Или мне тоже.. Хм... А это действительно кому-то интересно??? Дело в том, что программа получилась не короткая, и выполняет кучу разных процедур, обеспечивая трансляцию файлов текущего проекта в формат 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 3 2 октября, 2007 Опубликовано 2 октября, 2007 · Жалоба Хм... А это действительно кому-то интересно??? Дело в том, что программа получилась не короткая, и выполняет кучу разных процедур, обеспечивая трансляцию файлов текущего проекта в формат Protel99. Да, это не то, что я думал.. А на чём писал? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ggg 0 2 октября, 2007 Опубликовано 2 октября, 2007 · Жалоба Да, это не то, что я думал.. А на чём писал? Delphi Script. А что думал? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex Ko 3 3 октября, 2007 Опубликовано 3 октября, 2007 · Жалоба Delphi Script. А что думал? Ну, будучи практически нулём в программировании, думал методом Copy-Paste надергать скрипт для простейших задач, типа сохранения проекта в .DWG, что АД должон бы делать сам, но дурит (вместо всех листов схемы выдаёт один и тот же под разными именами) и т.п., надеясь на что-нить простейшее,типа Visual Basic.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ggg 0 4 октября, 2007 Опубликовано 4 октября, 2007 · Жалоба Ну, будучи практически нулём в программировании, думал методом Copy-Paste надергать скрипт для простейших задач, типа сохранения проекта в .DWG, что АД должон бы делать сам, но дурит (вместо всех листов схемы выдаёт один и тот же под разными именами) и т.п., надеясь на что-нить простейшее,типа Visual Basic.. В принципе, может получится. Вам придется кое-что поменять, а кое-какие функции вообще выбросить. Я отправил Вам в личку текст скрипта. Попробуйте, а затем напишите о результатах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться