Перейти к содержанию
    

Вывод текстовой документации в KiCAD-ГОСТ

Ну значит так и буду сидеть на 71-й сборке, пока проблема не возникнет у кого-то еще.

Проблема не в схемах. Создал пустую схему. Пустая схема воспринимается нормально. Кинул один элемент из стандартных либ. Запустил менеджер, выпало предупреждение. Выбрал элемент, завис менеджер.

 

Это после чего так происходит?

Если "Имя компонента" совпадает с атрибутом "Значение", то, при вызове Менеджера компонентов, содержимое атрибута "Значение" заменяется на тильду.

 

P.S. И всё-таки как-то механизм не очень прозрачный. Может сделать по принципу "что вижу, то и имею"? Поставил опцию видимости атрибута - увидел на схеме, не поставил - не увидел. Продублированы атрибуты - в перечень/спецификацию вставляется только один. Но никакой самодеятельности по очищению атрибутов в схеме!

 

Все описанные глюки смог повторить.

Итог:

1) поскольку непрозрачность работы с атрибутом Value стала существенно мешать разработке (часть из последних глюков была в усложнившейся логике по обработке этого атрибута на разных этапах после того как развязал окна), принято решение сделать работу с атрибутом Value прозрачной. Прежняя логика по анализу ChipName==Value теперь выполняется отдельной функцией. Данная функция при открытии менеджера компонентов делает проверку всех компонентов. Если обнаруживается ситуация ChipName==Value, выдается предупреждающее сообщение о том, что будут внесены изменения в атрибуты таких компонентов. Пользователь либо подтверждает, либо отказывается.

2) "Запустил менеджер, выпало предупреждение." Как оказалось, у меня проявляется только в Ubuntu 10.04 (wxWidgets 2.8.10). Выглядит все так, что поведение wxWidgets отличается у разных версий то ли самих wxWidgets, то ли ОС. Исправил.

3) "Выбрал элемент, завис менеджер." тоже самое, что и в п.2. Чтобы побороть эту проблему для Ubuntu 10.04 (wxWidgets 2.8.10), пришлось отказаться от управления менеджером компонентов курсором в Pcbnew (оставил управление курсором только в EESchema). То есть в Ubuntu 10.04 (wxWidgets 2.8.10) зависание происходит из-за того, что отправляю сообщения и в EESchema и сразу в Pcbnew через механизм dde. Похоже, что нужно дорабатывать механизм dde в самом KiCad. Либо это баг wxWidgets, поскольку используется работа с сокетами от wxWidgets.

 

Актуальная ревизия 4186.

 

Сейчас в основном могут выпадать 2 типа сообщения, на которые пока не добавлен русский перевод. Привожу перевод пока здесь:

1) "Some components have equal 'Chip Name' and 'Value' attributes!

'Value' attributes will be copied to 'Type' ones including their position, orientation and visibility. After that 'Value' attributes will be cleared.

If some of components do not have 'Type' attribute then such attributes will be created.

Continue?"

 

"Некоторые компоненты имеют равные значения атрибутов "Chip Name" ("Имя компонента") и "Value" (Номинал / Значение) !

Значения атрибутов "Value" будут скопированы в атрибуты "Type", включая их координаты, ориентацию и флаг видимости. После чего значения атрибутов "Value" будут стерты.

Если некоторые из компонентов не будут иметь атрибут "Type", то такие атрибуты будут созданы.

Продолжить?"

 

2) "Some components were changed outside of the Component Manager.

The changes have been transferred back to the Component Manager."

 

"Некоторые компоненты были изменены вне Менеджера Компонентов.

Эти изменения загружены обратно в Менеджер Компонентов."

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Актуальная ревизия 4186.

 

Сейчас в основном могут выпадать 2 типа сообщения, на которые пока не добавлен русский перевод. Привожу перевод пока здесь:

 

Обновил перевод в gost-committers-doc - bzr449.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

AVL

"Некоторые компоненты имеют равные значения атрибутов "Chip Name" ("Имя компонента") и "Value" (Номинал / Значение) !

Значения атрибутов "Value" будут скопированы в атрибуты "Type", включая их координаты, ориентацию и флаг видимости. После чего значения атрибутов "Value" будут стерты.

Если некоторые из компонентов не будут иметь атрибут "Type", то такие атрибуты будут созданы.

Продолжить?"

Не очень удачный вопрос - может ввести в заблуждение. Лучше написать "Выполнить перобразование?".

(По-басурмански тоже соответственно.)

 

пришлось отказаться от управления менеджером компонентов курсором в Pcbnew

А это нужно? Я считаю, что нет.

 

оставил управление курсором только в EESchema

Это нормально.

 

Если некоторые из компонентов не будут иметь атрибут "Type", то такие атрибуты будут созданы.

Всё же остаётся вопрос по библиотекам. Как-то не очень хорошо, что элементы на схеме имеют больше составляющих частей (в данном случае атрибутов), чем в библиотеке. Не могу объяснить чем мне не нравится, но есть какой-то внутренний протест. ;)

Изменено пользователем break

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не очень удачный вопрос - может ввести в заблуждение. Лучше написать "Выполнить перобразование?".

(По-басурмански тоже соответственно.)

OK

пришлось отказаться от управления менеджером компонентов курсором в Pcbnew

А это нужно? Я считаю, что нет.

Считаю, это может быть удобно для готовых устройств, в которые нужно внести изменения. Иногда удобнее смотреть на pcb.

Если некоторые из компонентов не будут иметь атрибут "Type", то такие атрибуты будут созданы.

Всё же остаётся вопрос по библиотекам. Как-то не очень хорошо, что элементы на схеме имеют больше составляющих частей (в данном случае атрибутов), чем в библиотеке. Не могу объяснить чем мне не нравится, но есть какой-то внутренний протест. ;)

Ну Вам никто не мешает добавить эти атрибуты в библиотеки :)

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Собрал сегодня последнюю версию. Все работает :rolleyes: Большое спасибо )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Баги.

 

Если в менеджере выбрать строчку, и нажать кнопку вверх или вниз на клаве, то от быстрого перебора строчек он зависает.

 

Если зажать shift и попытаться выделить группу элементов, менеджер виснет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вчера сделал merge с lp:kicad, а сегодня обнаружил, что eeschema при запуске падает. Так что будем сначала с этим разбираться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вчера сделал merge с lp:kicad, а сегодня обнаружил, что eeschema при запуске падает. Так что будем сначала с этим разбираться.

В ревизии 4189 теперь OK.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Баги.

 

Если в менеджере выбрать строчку, и нажать кнопку вверх или вниз на клаве, то от быстрого перебора строчек он зависает.

 

Если зажать shift и попытаться выделить группу элементов, менеджер виснет.

Удалось повторить только в Ubuntu 10.04. Пока выяснил только, что зависает опять из-за отправки пакетов через dde (управление курсором). Надо разбираться как это исправить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Удалось повторить только в Ubuntu 10.04. Пока выяснил только, что зависает опять из-за отправки пакетов через dde (управление курсором). Надо разбираться как это исправить.

 

Проблема заключается в том, что механизм dde можно использовать только для связи двух разных процессов, но нельзя в одном процессе. Для механизма dde, как для сервера, так и для клиента используется общая очередь сообщений процесса. Могу описать более подробно, но очень много букв.

 

Патч прилагается.

0001_BUG_gost_doc_freezed_on_fast_selecting.patch.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проблема заключается в том, что механизм dde можно использовать только для связи двух разных процессов, но нельзя в одном процессе. Для механизма dde, как для сервера, так и для клиента используется общая очередь сообщений процесса. Могу описать более подробно, но очень много букв.

 

Патч прилагается.

Приветствую, Максим. Спасибо за патч. Патч применен в ревизии 4199 ветки lp:~kicad-gost-committers/kicad/kicad .

 

По поводу dde Вы похоже говорите о стандартном DDE, который используется как одна из технологий взаимодействия процессов в винде.

В исходниках KiCad используется свой собственный механизм, который, похоже, разработчики KiCad назвали одноименной аббревиатурой dde. Этот механизм в KiCad сделан на основе сокетов фрейморка wxWidgets и является кросс-платформенным (а виндовый DDE только для винды). С учетом того, что KiCad dde отправляет сообщение через сокеты, не вижу проблемы в использовании KiCad dde в том числе пределах одного процесса. В чем там проблема, так и не разбирался пока.

 

P.S.:

если хотите, можем добавить Вас в команду lp:~kicad-gost-committers, чтобы коммитить изменения в lp:~kicad-gost-committers/kicad/kicad. Для этого нужно зарегистрироваться на https://login.launchpad.net/+login (если еще не зарегистрированы) и далее https://launchpad.net/~kicad-gost-committers/+join

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую, Максим. Спасибо за патч. Патч применен в ревизии 4199 ветки lp:~kicad-gost-committers/kicad/kicad .

 

По поводу dde Вы похоже говорите о стандартном DDE, который используется как одна из технологий взаимодействия процессов в винде.

В исходниках KiCad используется свой собственный механизм, который, похоже, разработчики KiCad назвали одноименной аббревиатурой dde. Этот механизм в KiCad сделан на основе сокетов фрейморка wxWidgets и является кросс-платформенным (а виндовый DDE только для винды). С учетом того, что KiCad dde отправляет сообщение через сокеты, не вижу проблемы в использовании KiCad dde в том числе пределах одного процесса. В чем там проблема, так и не разбирался пока.

Я имел ввиду внутренний механизм Kicad, реализованный через wxSocket. Если ипользовать его внутри одного процесса, то возможно зацикливание. Подробнее: При клике мыши в gtk_main() при ходит сообщение, которое через wx вызывает GOST_COMP_MANAGER::OnClickListCtrl(), SendCommand(), wxSocketClient::Connect(),wxSocketClient::WaitConnect(), wxSockeBase::_Wait(),wxApp::Yield() . wxApp::Yield() вызывает gtk_main_iteration(), которая вызывает EDA_DRAW_FRAME::OnSockRequest(), wxSockeBase::Read(), потом wxSockeBase::_Wait(), которая повторно вызывает wxApp::Yield(). wxApp::Yield() анлизирует повторный вход и вызывает wxAppBase::OnAssertFailure(). В Release сборке wxAppBase::OnAssertFailure() выкидывается, и программа уходит в цикл. В Debug версии выкидывает диалог исключения. Подробное описание зацикливания очень многословно, хотя код весьма простой. Проще читать прямо код. Резюме: встроенный dde служит для межпроцессного взаимодействия, применение внутри одного процесса чревато трудноуловимыми глюками.

 

P.S.:

если хотите, можем добавить Вас в команду lp:~kicad-gost-committers, чтобы коммитить изменения в lp:~kicad-gost-committers/kicad/kicad. Для этого нужно зарегистрироваться на https://login.launchpad.net/+login (если еще не зарегистрированы) и далее https://launchpad.net/~kicad-gost-committers/+join

 

Я не смогу заниматься этим проектом на постоянной основе. Моё хобби читать код открытых проектов. Здесь я увидел небольшую головоломку и попытался её решить. Сам проект некрасив архитектурно, развивался эволюционно без должного проектирования. Изначально были заложены весьма ограниченные модели данных. Теперь практически невозможно переделать систему без потери совместимости, и значит проект практически обречён на статус поделки. Ситуация с аттрибутом Value == Chip-Name, наглядно это показывает. Поэтому я только читать. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я не смогу заниматься этим проектом на постоянной основе. Моё хобби читать код открытых проектов. Здесь я увидел небольшую головоломку и попытался её решить. Сам проект некрасив архитектурно, развивался эволюционно без должного проектирования. Изначально были заложены весьма ограниченные модели данных. Теперь практически невозможно переделать систему без потери совместимости, и значит проект практически обречён на статус поделки. Ситуация с аттрибутом Value == Chip-Name, наглядно это показывает. Поэтому я только читать. :)

Буду надеяться, что головоломки KiCad, хотя бы и небольшие, будут Вас заинтересовывать и впредь ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Апробировал 99 сборку. Большое спасибо за патч. Теперь все работает :a14:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...