Как мне спроектировать структуру пакета САПР? - PullRequest
6 голосов
/ 01 февраля 2009

Я разрабатываю на C ++ пакет автоматизированного проектирования для печатных плат и схем (он же EDA CAD). Он использует Lua для некоторых конкретных вещей, но я хотел бы расширить роль Lua, чтобы он реализовал большую часть логики пользовательского интерфейса.

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

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

Есть ли хороший документ или книга, которую я могу прочитать, или форум, где люди говорят о подобных вещах. Я искал и думал уже много месяцев, и я до сих пор не уверен, что ответ.

Кстати, проект называется LiquidPCB .

Большое спасибо

Hugo

Ответы [ 5 ]

1 голос
/ 17 февраля 2009

Я бы хотел отметить, что происходит при разработке новой версии Blender, 2.50. Предыдущий API-интерфейс Python был написанным от руки слоем, пытавшимся обернуть большинство функций. новый API автоматически обернет доступ к структуре данных через Data API . Больше документов здесь .

1 голос
/ 16 февраля 2009

Понятно, что вам нужно будет предоставить некоторые функции lua через ваш API, чтобы разработчики могли создавать и комбинировать эти функции.

Я наткнулся на эту хорошую презентацию о том, как правильно спроектировать API, и включенные рекомендации соответствуют тому, что я делал в прошлом. Это поможет вам руководить вашим дизайном.

Если у вас есть API, я рекомендую использовать шаблон команды в lua или в C ++ для создания моста с пользовательским интерфейсом. В прошлом я инкапсулировал каждый вызов API в Команде, и затем команду можно было вызывать с помощью скрипта. Я не знаю lua, но я знаю, что Python - это хороший язык сценариев, который можно использовать с вашими командами.

Удачи в вашем проекте.

0 голосов
/ 18 мая 2010

Новый Sketchup Ruby API является довольно хорошим примером того, что вы ищете. Сравните его со старым API, чтобы узнать, что делать , а не .

0 голосов
/ 17 февраля 2009

Opensource проекта?

Судя по всему, у ваших пользователей будет определенный уровень знаний в области программирования, и они также захотят реализовать новые функции. Таким образом выполняются две роли, как клиента, так и разработчика.

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

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

0 голосов
/ 07 февраля 2009

Попробуйте SWIG (Упрощенная оболочка и генератор интерфейсов). Он может создавать оболочки Lua для существующих заголовочных файлов C / C ++. Это позволит вам быстро представить все API Lua. Исходя из вашего опыта, вы можете выбрать другую архитектуру.

...