Easyelectronics.ru

Электроника для всех
Текущее время: 17 ноя 2017, 22:35

Часовой пояс: UTC + 5 часов



    • 10 шт. 2-слоя 100*100mm 2$. Быстрый заказ: JLCPCB.com
    • JLCPCB - это крупнейшая фабрика PCB прототипов в Китае.
    • Имеющий более 290,000 клиентов и выполняющий более 8,000 заказов в день.
    • LCSC - Крупнейший китайский онлайн магазин радиодеталей.

Начать новую тему Ответить на тему  [ Сообщений: 79 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Re: Разработка САПР
СообщениеДобавлено: 14 сен 2017, 09:22 
Заглядывает иногда

Зарегистрирован: 20 окт 2015, 18:14
Сообщения: 197
Чего мне обижаться? Вы полностью правы. Человек проделал огромную работу, решил множество сложных задач и довел свой проект до рабочего состояния. Достойно похвалы и уважения. Это если с точки зрения разработчика.
А теперь попробуем взглянуть со стороны пользователя. Она важнее. И вот тут не все так радужно. Не будем сильно углубляться, но на скринах схемного редактора я не увидел шин и многосекционных компонентов (хотя вроде заявлено), ERC, многостраничных схем. Даже домашние схемы зачастую бывают на нескольких страницах. В редакторе плат нельзя сделать многослойку, да она нечасто нужна, да и не всем, но... Не увидел заявленных полигонов, как они обходят дорожки. Простой полигон с заливкой сделать легко. Непонятно, что с DRC, какие там параметры. Выкладывая скрины, надо показывать лучшие стороны своего детища.
По моему мнению, автор все же молодец, но мог бы поднять планку повыше. Если уж взялся сделать то, чего и так полно, надо стремиться быть лучше их. Не исключено также, что уперся в ограничения выбранной архитектуры, либо просто выдохся.

UPD
Установил на пробу. Крайне сырая программа, управление неудобное. Те возможности, которые есть, работают со скрипом. Элементарно подключенную цепь на схеме нельзя передвинуть, только за узлы тянуть. Полигон рисуется только в виде контура, при экспорте в гербер похоже вобще не учитывается. Непонятно, для чего надо было свои шрифты делать. Наверно для скорости, но это актуально для систем совершенно другого уровня. И много чего другого.


Вложения:
pcb.png
pcb.png [ 116.72 Кб | Просмотров: 1458 ]
sch.png
sch.png [ 66.06 Кб | Просмотров: 1458 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка САПР
СообщениеДобавлено: 15 сен 2017, 10:43 
Старожил
Аватара пользователя

Зарегистрирован: 28 янв 2012, 12:56
Сообщения: 512
Откуда: Тюмень
Можно ещё вопрос по алгоритму отрисовки? Как сделан отступ, между "дорожкой" и полигоном? Каким образом он формируется, интересует алгоритм? )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка САПР
СообщениеДобавлено: 15 сен 2017, 11:41 
Заглядывает иногда

Зарегистрирован: 20 окт 2015, 18:14
Сообщения: 197
Для сканирования строки у меня есть два круга: один диаметром, равным ширине строки W (пользовательский параметр - ширина линии заливки), второй диаметром W+2*C, где С - заданный пользователем зазор. В каждой точке сканирования надо проверить на вхождение в заданный полигон и на столкновение с другими элементами. В первом случае использую первый круг, во втором соответственно второй. В Qt есть удобные функции определения как пересечения элементов, так и вхождения одного в другой.
Во время обводки элементов также используются эти две проверки с разными кругами. Пады сканирую по кругу с довольно большими углами, так быстрее. "Угловатость" видна только при сильном увеличении. Линии обвожу в два этапа, сначала определяю две параллельные дорожке линии с заданным зазором и формирую отрезки как при заливке, затем для узлов вызываю функции обводки как у падов. Только "диаметр" "пада" равен ширине дорожки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка САПР
СообщениеДобавлено: 15 сен 2017, 12:23 
Заглядывает иногда

Зарегистрирован: 20 окт 2015, 18:14
Сообщения: 197
Этап 1 и 2


Вложения:
1.png
1.png [ 43.65 Кб | Просмотров: 1402 ]
2.png
2.png [ 26.45 Кб | Просмотров: 1402 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка САПР
СообщениеДобавлено: 15 сен 2017, 12:23 
Заглядывает иногда

Зарегистрирован: 20 окт 2015, 18:14
Сообщения: 197
Этап 3 и 4


Вложения:
3.png
3.png [ 30.56 Кб | Просмотров: 1402 ]
4.png
4.png [ 33.27 Кб | Просмотров: 1402 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка САПР
СообщениеДобавлено: 19 сен 2017, 15:11 
Старожил
Аватара пользователя

Зарегистрирован: 28 янв 2012, 12:56
Сообщения: 512
Откуда: Тюмень
Спасибо, но честно говоря не совсем понял алгоритм :( Т.е получается, на каждую точку сканирования, мы проверяем все пересечение большого круга со всем элементами(если быть точным со всеми точками этих элементов)? Это же тысячи переборов и длинные циклы. Например, берем первую строчку полигона, который хотим закрасить: берем его первую точку - это будет центр большого круга и начинаем перебирать все дорожки, пады, не пересекаются ли они с ним, если нет, то сдвигаем точку влево/вправо и снова проверяем и т.д... если есть пересечение, то заливаем линию только до этого пересечения, так?

Как это влияет на производительность? Тормоза, мерцания про отрисовке(если например полигоны большие или их много)? И ещё, если вот какой вопрос, представим пример: дорожка проходит вертикально через полигон, мы его значит закрашиваем, начинаем слева. Просканировали до дорожки, нашли пересечение и закрасили линию до этого самого пересечения. Но эта линия будет закрашена получается только с одной стороны дорожки, а как быть со второй стороной, после дорожки, откуда-до куда сканировать? :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка САПР
СообщениеДобавлено: 20 сен 2017, 09:29 
Заглядывает иногда

Зарегистрирован: 20 окт 2015, 18:14
Сообщения: 197
Алгоритм простой:
1) выделяем прямоугольник, в который входит полигон
2) проходим построчно с заданной шириной строки: попали в полигон - начало линии, зашли на проводник - конец, идем дальше, сошли с проводника - снова начало, вышли из полигона - конец, и т.д. Тут много условий. Идем от левой до правой границы прямоугольника.
3) обводим контур, условия проверки как в п.2 (для меня было самое сложное, т.к. контур должен быть внутри полигона)
4) обводим элементы, условия проверки как в п.2 (после контура уже ничего не страшно)

Я широко использую функции QPainterPath:contains(QPainterPath) и QPainterPath:intersects(QPainterPath). Никаких тысяч переборов нет. А уж как QPainterPath определяет столкновения, мне все равно, вряд ли сделаю быстрее.

По производительности пока не очень хорошо, я только-только начал оптимизировать. Самое долгое - это контур, там много геометрии, которую надо убирать. Сама заливка (п.2) площадью ок. 2 дм2 занимает где-то полсекунды. Алгоритм вызывается один раз при создании полигона, поэтому можно и потерпеть. Как я уже говорил, отрисовка идет по уже сформированному QPainterPath, поэтому никаких тормозов и мерцаний нет. Вобще хочу вынести этот алгоритм в другой поток, чтобы просчитывать заливку в реалтайме при разводке плат. Не знаю пока, что получится.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка САПР
СообщениеДобавлено: 22 сен 2017, 08:06 
Заглядывает иногда

Зарегистрирован: 20 окт 2015, 18:14
Сообщения: 197
sva_omsk писал(а):
Установил на пробу. Крайне сырая программа, управление неудобное. Те возможности, которые есть, работают со скрипом. Элементарно подключенную цепь на схеме нельзя передвинуть, только за узлы тянуть. Полигон рисуется только в виде контура, при экспорте в гербер похоже вобще не учитывается. Непонятно, для чего надо было свои шрифты делать. Наверно для скорости, но это актуально для систем совершенно другого уровня. И много чего другого.
Из-за экспорта в гербер. Оказывается там нет текста, только примитивы. Такие же шрифты сделаны и в других САПР.

Вопрос:
У игла концепция такая, что когда изменяешь схему, все тут же отображается на плате (новые компоненты, новые соединения). У диптрейса по-другому, делаешь схему, затем из редактора плат вызываешь обновление нетлиста.
Какой подход, на ваш взгляд, удобнее в работе?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка САПР
СообщениеДобавлено: 22 сен 2017, 12:32 
Старожил
Аватара пользователя

Зарегистрирован: 23 сен 2012, 20:35
Сообщения: 1095
sva_omsk писал(а):
У игла концепция такая, что когда изменяешь схему, все тут же отображается на плате (новые компоненты, новые соединения). У диптрейса по-другому, делаешь схему, затем из редактора плат вызываешь обновление нетлиста.
Какой подход, на ваш взгляд, удобнее в работе?

Первый, однозначно. Вообще мне не совсем понятно, зачем юзер должен делать что-то, что программа может сделать автоматом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка САПР
СообщениеДобавлено: 22 сен 2017, 12:36 
Старожил
Аватара пользователя

Зарегистрирован: 28 янв 2012, 12:56
Сообщения: 512
Откуда: Тюмень
Спасибо, имхо удобнее первый вариант, но думаю лучше сделать этот момент настройкой, кому удобнее чтобы обновлялось автоатом, просто включит эту опцию :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка САПР
СообщениеДобавлено: 22 сен 2017, 12:47 
Заглядывает иногда

Зарегистрирован: 20 окт 2015, 18:14
Сообщения: 197
Я тоже больше к первому склоняюсь. Подумаю насчет настройки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка САПР
СообщениеДобавлено: 22 сен 2017, 14:50 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 2743
по хорошему должен быть и обратный процесс, чтобы из редактора плат можно было менять равнозначные ноги или части компонентов, но вот тут не уверен что этот обратный процесс должен происходить автоматически, а не через отдельную кнопочку sync с отображением изменений.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка САПР
СообщениеДобавлено: 22 сен 2017, 15:44 
Заглядывает иногда

Зарегистрирован: 20 окт 2015, 18:14
Сообщения: 197
Я думал с равнозначными ногами сделать так: представьте 2 корпуса, между двумя ногами линия связи (ratline), ведем проводник от первой ноги, довели до нужной, она естественно подсветилась. А другие равнозначные ноги, для которых установлено одинаковое значение swap_level, подсветились "в полнакала". При наведении проводника на них и щелчке мышкой выскочит рамка с предупреждением, что изменится схема. Если продолжить, то на самой схеме изменятся только конечные точки цепей. Они же все под 90 градусов идут, а тут поменяются только точки на пинах и надо будет вручную навести порядок с линиями. Интеллектуальную прокладку цепей как в протеусе я пока не продумывал.
Менять части компонента друг с другом можно будет из редактора схем, а вот с заменой в редакторе плат надо подумать. Вдруг часть проводников уже проведена?! Должно быть все удобно и интуитивно понятно. К примеру возьмем микросхему с 4-мя И-НЕ. К ней будут подходить со всех сторон и проводники и линии связи. Вот как тут удобно показать, что с чем можно менять?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка САПР
СообщениеДобавлено: 22 сен 2017, 21:42 
Старожил

Зарегистрирован: 23 мар 2017, 14:45
Сообщения: 1513
Я за первый вариант.
_pv писал(а):
по хорошему должен быть и обратный процесс
Вот за это - ОБЕИМИ РУКАМИ!!!
Но. Обязательно предупреждение.
Например перед выходом из режима редактирования платы, сообщение:
"Внимание, плата была изменена"
- Внести изменения в схему
- Отменить изменения
- Возвратиться к редактированию (При возврате - подсветка всех несоответствующих связей.)

Внесенные изменения при первом просмотре схемы должны быть подсвечены.
Думаю, что при изменении схемы обязателен бэкап. Потому что изменили, вошли, смотрим - оказалось наредактировано таааакое....

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

Я бы предложил такую фичу:
Пользователь самостоятельно выбирает две точки, например два входа, и кнопка "Обменять". После этого проверяется, равноценны ли они.
Если НЕ равноценны, должно быть предупреждение, по умолчанию - "Да" (обменять)
(Потому что может оказаться просто удобнее такой кнопкой последовательно перекинуть несколько связей, или сделать изменения).
Или выбираем два элемента, и обмениваем их. Если количество выводов не совпадает (элементы разные) - то отказ в обмене. (Пусть пользователь обменивает связи поштучно, лично определяя, какую куда).

Кнопка "Обменять" активна, когда выбраны только 2 объекта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка САПР
СообщениеДобавлено: 22 сен 2017, 22:14 
Старожил

Зарегистрирован: 23 мар 2017, 14:45
Сообщения: 1513
sva_omsk писал(а):
Должно быть все удобно и интуитивно понятно.
Вот еще какая штука.
Я, например, путаюсь в клике/перетаскивании.
К примеру: в абсолютном большинстве виндовых программ, чтобы перетащить объект, надо нажать по нему мышкой, и двигать не отпуская; где отпустил - там и отпадет.
Это естественная модель движения руки: берем; перемещая - держим; отпустили=положили.

Но во множестве КАД-ов алгоритм другой:
клик по объекту - объект "приклеивается" к мышке и двигается с ней; чтобы бросить объект, надо кликнуть еще раз.
Это эргономичнее, но с непривычки очень нервирует.

С другой стороны, первый вариант будет нервировать специалистов, привыкших ко второму.

Думаю, что должен быть пункт в настройках:
- Помечать кликом, двигать перетаскиванием
либо
- Двигать кликом, помечать правым кликом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка САПР
СообщениеДобавлено: 22 сен 2017, 22:26 
Старожил

Зарегистрирован: 18 июл 2016, 21:17
Сообщения: 587
В виндовсе есть залипание кнопок мыши. А если все время держать нажатой кнопку и при этом перетаскивать компоненты и вести дорожки, то очень быстро начинает болеть кисть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка САПР
СообщениеДобавлено: 22 сен 2017, 22:31 
Старожил

Зарегистрирован: 23 мар 2017, 14:45
Сообщения: 1513
Да, я про это. Эргономичность, мать ее...

Но в Спринте я работал дофига - по первому способу - и как-то не уставал.
А вот в Протеусе - особенно когда навигация приклеивается - каждый раз чорта поминаю, несмотря даже, что атеист)))))


добавлено:
Но ведение дорожки в ручную - всегда по второму способу; так и в Спринте сделано, иначе действительно очень устанет рука.


Последний раз редактировалось Кот495 23 сен 2017, 01:00, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка САПР
СообщениеДобавлено: 22 сен 2017, 22:36 
Заглядывает иногда

Зарегистрирован: 20 окт 2015, 18:14
Сообщения: 197
Я привык к виндовому варианту, но пожалуй да, надо будет ввести настройку на прилипание.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка САПР
СообщениеДобавлено: 22 сен 2017, 22:49 
Заглядывает иногда

Зарегистрирован: 20 окт 2015, 18:14
Сообщения: 197
Планирую два режима: Forward Annotation и Back Annotation. В первом изменения будут передаваться только из схемы в плату, никак не обратно. В этом режиме из платы можно только поменять равноценные части компонента (? пока не знаю как, но думаю) или пины одной части. Второй режим надо посмотреть, как у других сделано. У меня есть некоторые мысли на этот счет, но пока ясной картины нет.

Кот495 писал(а):
На подсветку равнозначных входов как-то не особо полагаюсь. Ведь можно заменить не только два входа одного элемента, но и одинаковые элементы из разных корпусов.
Как Вы будете высчитывать такую равноценность? Это во-первых сложно, во-вторых подсветится очень много чего, скорее глаза разбегутся, чем помощь.

Я бы предложил такую фичу:
Пользователь самостоятельно выбирает две точки, например два входа, и кнопка "Обменять". После этого проверяется, равноценны ли они.
Если НЕ равноценны, должно быть предупреждение, по умолчанию - "Да" (обменять)
(Потому что может оказаться просто удобнее такой кнопкой последовательно перекинуть несколько связей, или сделать изменения).
Или выбираем два элемента, и обмениваем их. Если количество выводов не совпадает (элементы разные) - то отказ в обмене. (Пусть пользователь обменивает связи поштучно, лично определяя, какую куда).

Кнопка "Обменять" активна, когда выбраны только 2 объекта.
В принципе вариант, но надо будет на практике проверить. Когда дойду до этого.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка САПР
СообщениеДобавлено: 22 сен 2017, 22:57 
Старожил

Зарегистрирован: 18 июл 2016, 21:17
Сообщения: 587
Кот495 писал(а):
Да, я про это. Эргономичность, мать ее...

Но в Спринте я работал дофига - по первому способу - и как-то не уставал.
А вот в Протеусе - особенно когда навигация приклеивается - каждый раз чорта поминаю, несмотря даже, что атеист)))))

Я включил залипание на всех компьютерах, постепенно привык и даже начало казаться более удобным и при обычных операциях. А вот народ, кто пытается что то делать на них, очень быстро переходит на маты :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка САПР
СообщениеДобавлено: 23 сен 2017, 00:53 
Старожил

Зарегистрирован: 23 мар 2017, 14:45
Сообщения: 1513
А вот еще могу предложить идею: сквозное выделение.
Если на схеме выделен объект, и мы переходим в редактор платы - соответствующий объект платы выделен.
Также - если выделяем в редакторе платы и переходим к схеме - в схеме объект выделен.
Помогает ориентировке в сложных схемах.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка САПР
СообщениеДобавлено: 23 сен 2017, 10:53 
Заглядывает иногда

Зарегистрирован: 20 окт 2015, 18:14
Сообщения: 197
Кот495 писал(а):
А вот еще могу предложить идею: сквозное выделение.
Функционально это уже есть. Когда буду формировать контексные меню, добавлю туда нужные команды.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка САПР
СообщениеДобавлено: 28 сен 2017, 12:38 
Заглядывает иногда

Зарегистрирован: 20 окт 2015, 18:14
Сообщения: 197
Сделал утилитку для создания векторных шрифтов. В каждый шрифт входит 160 символов, включая русский и английский алфавит. Курсивный шрифт будет получаться путем вычисления координат точек по углу 18 градусов.
Фон сразу на много символов в ряд делал в Inkscape и сохранял в png. В утилите есть два режима перемещения фона: при нажатом колесе мышки во все стороны, при нажатии ЛКМ только по горизонтали. Это удобно при смене символа. Вся работа осуществляется одной мышкой. При щелчке внутри рабочей зоны (квадрат в центре) рисуется полилиния. При щелчке снаружи - перемещается фон. Его кстати можно масштабировать.
Есть отмена действий, правда только в пределах редактирования символа.
Шрифт сохраняется в бинарном виде для уменьшения размера файла.
Программа работает уже сейчас, но до полной готовности надо по нормальному сделать панель инструментов. 2 поля, которые сейчас на панели, это масштаб фона в попугаях для подгонки к нужному размеру символа и толщина линий для более комфортного рисования.
Если кто-то пожелает добавить функционал или использовать эту утилитку для своих нужд, я могу передать исходники при условии возврата доработанного кода. Планирую включить утилиту с состав САПР, возможно добавлю импорт/экспорт.


Вложения:
Fonts.png
Fonts.png [ 85.83 Кб | Просмотров: 647 ]
_GOST B_1.png
_GOST B_1.png [ 67.83 Кб | Просмотров: 653 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка САПР
СообщениеДобавлено: 28 сен 2017, 23:05 
Старожил

Зарегистрирован: 23 мар 2017, 14:45
Сообщения: 1513
Какой странный ход мысли...
Логичнее было бы сделать конвертер ТТ-шрифтов, установленных на компе. (Кажется они и так уже векторные...)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка САПР
СообщениеДобавлено: 29 сен 2017, 07:42 
Заглядывает иногда

Зарегистрирован: 20 окт 2015, 18:14
Сообщения: 197
Нет, не странный. Шрифты то векторные, но они контурные, а нужны именно скелетные. Во что выльется экспорт в гербер контурных шрифтов?! Даже такой гигант, как Cadence Allegro, использует свои скелетные шрифты.


Вложения:
с.png
с.png [ 89.94 Кб | Просмотров: 599 ]
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 79 ]  На страницу Пред.  1, 2, 3, 4  След.

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB