Перейти к содержанию
СофтФорум - всё о компьютерах и не только

ООП в VB 6.0 (не .NET) и VBA


Гость avb_constructor

Рекомендуемые сообщения

Сейчас пытаюсь на VBA разработать программку для рисования схем электрических принципиальных и разводки на их основе гибких печатных плат (для клавиатур) в AutoCAD. Пришел к выводу, что, скорее всего, придется разрабатывать классы объектов: "Контактная площадка", "Проводник", "Контакт_на_шлейфе", "Запрещенная зона", чтобы прога "понимала", что клавиша, например, "1" соединяется одним проводником на схеме и на плате с 1-м контактом на шлейфе, а другим (проводником) - к примеру, с 7-м контактом на шлейфе, что тот или иной проводник в одних местах можно проводить, а в других местах (край платы, отверстия, другой проводник) - нельзя. Соотвественно придется вводить такое понятие, как "вывод контакной площадки". И к каждому выводу подводить тот или иной проводник. Причем контактная площадка будет двух видов (а, может, их будет больше): круглой и в виде решетки. Для второго случая (для решетки) придется создавать еще такую штуку, как "замыкатель".

И вот вопрос: как выполняются в языках VB 6.0 и VBA основные принципы ООП - наследование, полиморфизм, инкапсуляция (это, вообще, реально для таких языков)? Вполне возможно, что будет создаваться какой-то базовый класс, например, "Контакт", на основе которого будут разработаны классы-наследники, например, "Контактная площадка" и "Контакт_на_шлейфе" (у них есть общие признаки: и то, и другое соединяется проводниками, а, значит, есть хотя бы один вывод). Доступ к свойствам того или иного класса нужно также осуществлять через методы, а не напрямую.

Тем, кто мне скажет, типа "чего ты мучаешься? Поставь себе PCAD или другую подобную прогу и не думай об ООП", отвечаю сразу. Во-первых, место на харде все же не резиновое: может не хватить для файла подкачки (да у нас в фирме и без того возникают ситуации, когда нужно было бы установить ту ли иную прогу, но мы этому сопротивляемся, т.к. проги нынче не маленькие); во-вторых, это совершенно другие проги, их придется изучать, а это время; в-третьих, у них нет (или может не быть) VBA, чтобы их можно было как-то слить в единую оболочку с другими прогами, которые у меня используются. К тому же я пользуюсь Автокадом не только для рисования плат, но и для чертежей. Поэтому PCAD и ему подобное мне не катит.

Изменено пользователем avb_constructor
Ссылка на комментарий
Поделиться на другие сайты

Народ, дайте, пожалуйста, хотя бы ссылочку на какой-нибудь сайт, где можно почитать о программировании классов в VB. А то очень надо.

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

ХМ... задачи не понял.

Зачем тебе нужны классы?

Если можешь пришли планы, цели и другу инфу. Если конечно она не секретна). И если можешь отправь свои наработки.

Изменено пользователем neic
Ссылка на комментарий
Поделиться на другие сайты

ХМ... задачи не понял.

Зачем тебе нужны классы?

Если можешь пришли планы, цели и другу инфу. Если конечно она не секретна). И если можешь отправь свои наработки.

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

Теперь о целях и задачах этого модуля (а у меня их будет несколько). Он должен заниматься генерированием схем электрических принципиальных, а также разводкой печатных плат на основе этих схем. Предполагается, что модуль будет написан для AutoCAD'a. Но вся бяка в том, что AutoCAD сам по себе работает только с геометрическими фигурами (прямыми, кривыми и их отрезками, круговыми и эллиптическими дугами, окружностями, эллипсами? прямоугольниками, многоугольниками и т.д.), а не с элементами электрических схем (кнопка, контакт на разъеме, вывод, проводник и т.д.) И потому непонятно, как можно, что называется, "в лоб" написать программу, чтобы она "понимала", к какому выводу какого элемента надо подключить тот или иной проводник, где находятся запрещенные зоны (в которых прокладывание проводников не допускается), и что разные проводники друг с другом в определенных зонах электрически пересекаться не должны. Поэтому я и пришел к выводу, что придется создавать классы, которые будут разработаны на базе геометрических элементов AutoCAD'a. Они просто будут вызывать методы для создания нужной геометрии, но при этом прога их уже будет воспринимать, как электрические элементы.

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

Забыл самое важное: для чего все делается. Все эти схемы и разводки применяются в чертежах и при создании фотошаблонов. Автокадовская графика очень хорошо импортируется в CorelDraw и Adobe Illustrator. И в этих прогах я уже доделываю свою работу над печатными платами (перевожу цвета у разводки из RGB в CMYK, группирую графику по фотошаблонам, разношу ее на пространстве листа и т.д.), а потом отдаю файлы в типографию на фотовывод.

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

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

Кстати, на счет наработок. Я сказал, что их нет, но на самом деле есть наработки, никак не связанные именно с созданием трассировки (разводки) печатных плат. У меня уже отработаны алгоритмы для создания гравировки, для настройки автокадовских файлов (слои, типы и толщины линий). По разводке печатных плат у меня пока еще ничего нет. Я программу составляю после некоторого анализа поставленной задачи и выбора направления решения.

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

Это файл (макрос) для создания гравировки в приспособлении (в CorelDraw, сохранен в формате .txt)

Это файл (макрос) настройки автокадовского файла (в формате .bas)

Для работы понадобятся CorelDraw X3 и AutoCAD 2006.

Есть еще формы, которые еще до конца не готовы, но уже можно по некоторым из них "прогуляться" вперед и назад.

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

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

А не проще воспользоваться программой Electronic Work Bench?

Вся фишка в том, что надо обойтись имеющимися программами, теми, в которых я выполняю свою повседневную работу. И я уже писал выше, что это связано с тем, что во-первых, место на диске - не резиновое (нам итак заказчики и поставщики норовят прислать файлы в каких-нибудь неизвестных нам форматах, а проги, в которых они создаются, тоже не маленькие, как и те, которыми постоянно пользуемся мы, в смысле наш отдел). Во-вторых, изучать новые проги - дело неблагодарное, т.к. можно, как говорится, "с катушек" съехать, да и желания изучать новое нет - нам работать надо, а не новый софт изучать. В-третьих, новая программа - это новые "подводные камни", т.к. у нее может не оказаться VBA. Для меня это принципиальное условие, т.к. я хочу создать программную оболочку, использующую Визуальный Бейсик для Приложений, чтобы полностью автоматизировать свою работу и чтобы импорт/экспорт файлов был также автоматизирован. Т.е. я хочу сделать программу, в которой бы я задавал данные, установленные заказчиком, а на выходе моя программа выдавала готовый результат: чертежи, фотошаблоны и т.д. Это вполне реально, т.к. я работаю с типовыми конструкциями и мне приходится каждый раз при новом заказе выполнять массу одних и тех операций.

Изменено пользователем avb_constructor
Ссылка на комментарий
Поделиться на другие сайты

Увы ничем помочь немогу :) С электроникой умея плохо, да ещё и передачей инфы для других программ.

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

Увы ничем помочь немогу :) С электроникой умея плохо, да ещё и передачей инфы для других программ.

neic, так тут проблема не с электроникой, а с самими классами и коллекциями. У меня есть книжка по VB, но в ней ничего не говорится о том, как они создаются, по каким правилам даются им имена, как пишутся методы классов и коллекций и т.д. Меня это прежде всего интересует, а с электроникой я как-нибудь сам управлюсь :) .

Изменено пользователем avb_constructor
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...