ADN Club > Организация проектирования

Помогите! Не понимаю, что мне нужно VBA, C#....

(1/3) > >>

Archiceraptor:
Здравствуйте!

Помогите пожалуйста с осознанием правильной концепции построения моего проекта.

На сегодня у меня есть свой модуль который написан в файле XLS в макросе VBA.
Задача этого модуля собрать данные из исходных файлов, из таблиц, из БД, формировать необходимые массивы, на основании этих массивов вставить необходимое количество динамических блоков на чертёж с изменением необходимых атрибутов и т.д..
Моя программа сама открывала Автокад, открывала нужные документы и вставляла туда данные, сохраняла, закрывала.
В VBA всё работает, но в нём нет нормального редактора и других удобств. Моя программа достаточно сильно разрослась, ориентироваться всё сложнее, а расширения ещё нужны.
По этому я задумался о переезде например в VisualStudio, а за одно попробовать изучить C# и современные методы программирования.

Проанализировав ветки форумов стало ясно, что такими методами не пользуются (COM API), а создают DLL (.NET API), и запускают всё из Автокада. Это мне кажется не подходящим для меня.
 
Подскажите пожалуйста как мне правильно (где, на основании каких технологий) построить программу которая будет делать следующее:

Брать данные из БД.
Анализировать и подготавливать данные.
На основании полученных данных генерировать чертежи которые будут состоять из динамических блоков (например 3000 блоков).
Сохранять файлы.
Пакетная печать в один файл PDF чертежей DWG, Visio, Word.


В школе и один год в универсистете изучал TurboPascal. VBA осваивал сам по необходимости, т.к. ненавижу рутинную работу )))).





Александр Ривилис:

--- Цитата: Archiceraptor от 26-11-2020, 12:48:12 ---Проанализировав ветки форумов стало ясно, что такими методами не пользуются (COM API), а создают DLL (.NET API), и запускают всё из Автокада. Это мне кажется не подходящим для меня.
--- Конец цитаты ---
Это не совсем так, но я бы не рекомендовал использовать COM API. В силу его ограничений и проблемности. Не вижу причины не создавать плагин (DLL в вашей терминологии), загружать его в AutoCAD и проделывать всё необходимое. Возможно и разделение - отдельно exe-модуль, запускающий AutoCAD и работающий с ним через COM и плагин (DLL) загружаемый внутрь AutoCAD. Так же перспективным в свете этой задачи является использование accoreconsole.exe, что обеспечит большую быстроту загрузки и обработки чертежей и позволит параллельно запустить несколько заданий.

Archiceraptor:

--- Цитата: Александр Ривилис от 26-11-2020, 13:02:01 ---accoreconsole.exe
--- Конец цитаты ---

--- Цитата: Александр Ривилис от 26-11-2020, 13:02:01 ---Это не совсем так, но я бы не рекомендовал использовать COM API. В силу его ограничений и проблемности. Не вижу причины не создавать плагин (DLL в вашей терминологии), загружать его в AutoCAD и проделывать всё необходимое. Возможно и разделение - отдельно exe-модуль, запускающий AutoCAD и работающий с ним через COM и плагин (DLL) загружаемый внутрь AutoCAD. Так же перспективным в свете этой задачи является использование accoreconsole.exe, что обеспечит большую быстроту загрузки и обработки чертежей и позволит параллельно запустить несколько заданий.
--- Конец цитаты ---
Честно говоря, Вы не добавили понимания в мою голову )))), может быть я так написал, ну и уровень мой конечно далёк от профессионального программиста.

Как я работал, заполнял БД, запускал редактор VBA, от туда запускал нужную процедуру, смотрел, что отрисовывается, правил, запускал заново и т.д., активно пользовался отладкой, чтоб посмотреть, откуда возникают ошибки в чертежах. По сути мне даже EXE не нужен. Если только для утилиты пакетной печати, но эта часть на самом последнем месте по важности.

Сейчас мне неясен начальный вопрос, как допустим передавать полученные массивы в процедуру DLL Autocad, которые подготовит внешний модуль? Действовать через промежуточный CSV, мне кажется костылём.

Александр Ривилис:

--- Цитата: Archiceraptor от 26-11-2020, 13:27:49 ---Сейчас мне неясен начальный вопрос, как допустим передавать полученные массивы в процедуру DLL Autocad, которые подготовит внешний модуль? Действовать через промежуточный CSV, мне кажется костылём.

--- Конец цитаты ---
Полученные каким образом массивы? Я это понимал так, что вы собираетесь отказаться от VBA и переписать всё (!!!) на C#.  exe-файл только для запуска AutoCAD или accoreconsole в пакетном режиме.
Соответственно массивы будет создавать DLL в AutoCAD'е и никуда их передавать не нужно. Если же оставлять VBA - то и оставайтесь на нём. Не нужно скрещивать собаку с кошкой...

Archiceraptor:

--- Цитата: Archiceraptor от 26-11-2020, 14:56:17 ---что вы собираетесь отказаться от VBA и переписать всё (!!!) на C#
--- Конец цитаты ---
Да, я хочу переписать всё.


--- Цитата: Александр Ривилис от 26-11-2020, 14:08:03 ---Полученные каким образом массивы?
--- Конец цитаты ---

Массивы нужно получать из БД (например MySQL).

В специфике моего проектирования (а это АСУТП), проект ведётся в таблицах.
Крупные АСУТП состоят из однотипных электрических цепей, например типов 10, а всего цепей тысячи. Они отличаются друг от друга описанием сигнала, названием, маркировками и т.д., схемка одна, а надписи разные.
Кроме того из БД ещё и ПО для контроллеров генерируется.
По этому все данные изначально заносятся в БД, после полного причёсывания исходных данных генерируются чертежи, текстовые документы и ПО.

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

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии