Диплом: Разработка дополнительного функционала в САПР с помощью функционала "E3.Series" для предприятия АО "Оzelectroapparat-electrkshield"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
52
maincl и devclass_flag. Эта функция ведет проверку параметра maincl с
внутренним перечнем классов, в случае совпадения которых не будет
учитываться позиционные обозначения.
If dev_flag_class = "1" Then
DevNames(n) = "Z_"
Else
DevNames(n) = Dev.GetName
End If
CompNames(n) = Dev.GetComponentName
Call divide(DevNames(n),DevName1,DevName2)
SortField(n)=Shift_Text_Left(DevName1,10)&Shift_Text_Right(DevName2,10
) & Shift_Text_Left(CompNames(n),entry_len)
FinalCount(n) = 0
DevCount(n) = 1
else
DevIds(n) = 0
end if
next
Листинг 6.2 – цикл отбора изделий из проекта в массивы
(продолжение)
Теперь нужно подготовить массив к сортировке. Будут использованы
функции «Left» и «Right» (подробней об этих функциях в приложении Г, в
этом приложении полный код скрипта, в конце есть функции Left и Right).
В листинге 7 можно увидеть, как через цикл обмениваемся между
массивами данными в новом порядке (nNew), также тут формируется
массив, по которому остальные массивы будут сортироваться.
Чтобы вывести в порядке возрастания на форматку в проекте
найденную информацию нужно выполнить сортировку. Воспользуемся
сортировкой с помощью прямого обмена, быстрым вариантом для
53
небольших массивов. Сортировка с помощью прямого обмена (сортировка
стандартным обменом, сортировка пузырька) перемещает один элемент
массива в соответствующую позицию при каждом просмотре [23, c.107]. В
приложении И можно увидеть код сортировки.
nNew = 0
for n = 1 to nAlls
if DevIds(n) <> 0 then
nNew = nNew + 1
DevNamesNew(nNew) = DevNames(n)
CompNamesNew(nNew) = CompNames(n)
DevIdsNew(nNew) = DevIds(n)
DevCountNew(nNew) = DevCount(n)
PrimeNew(nNew) = Prime(n)
SortField(nNew) = left(SortField(n),10) &
right(SortField(n),Entry_len)
end if
next
if nNew = 0 then
App.PutInfo 1, "В проекте нет нужных изделий, выход ..."
wscript.quit
end if
Листинг 7 – подготовка к сортировке и проверка на найденные
изделия
Осталось выгрузить все на форматку. С помощью циклов
проходимся по массивам и выгружаем на форматку найденную и
отсортированную информацию. В приложении Г можно ознакомиться с
полным кодом работающего скрипта. На рисунке 12 можно увидеть
результат выполнения скрипта.
54
Рисунок 12 – результат выполнения скрипта
Данный скрипт решает проблему вывода перечней элементов для АО
«O`zelectroapparat-electroshield». Также этот скрипт легко модифицировать
под разные форматки и способы выдачи информации на эти форматки. К
примеру, написанный скрипт выдает изделия без учета места и устройств в
шкафу, можно модифицировать скрипт так, чтобы он мог выгружать на
форматку найденные изделия согласно месту и устройству в шкафу. Также
можно доработать до полноценной спецификации. Скрипт можно
использовать и в других предприятиях, где установлен E3.Series, но с
учетом того, что нужно будет немного переработать изделия в БД, так как
скрипт снимает с изделий информацию по нестандартным атрибутам.
Скрипты можно писать не только в простых текстовых редакторов, типа
«блокнота», но и в Visual Studio (подробнее в [39])
55
3.2 Дополнительный функционал с помощью Visual Studio
Во второй главе был рассмотрен недостаток E3.Series, заключался он
в том, что нельзя стандартным функционалом вывести таблицу клемм с
двух боковин, а также магистральных и силовых клемм в один лист.
Устраним этот недостаток с помощью разработки дополнительного
функционала.
Напишем программу в среде Visual Studio для вывода таблиц клемм
со всего шкафа на один лист. Разработка введется в Microsoft Visual Studio
2010.
Для начала подготовим проект в E3.Series. Возьмем проект, который
использовался для тестирования скрипта «перечень элементов». Оставим
тот же набор изделий, но теперь установим связи для некоторых клемм и
изделий (рис. 13) (Для оформления схем и изделия использованы ГОСТ
2.710-87 [1] и ГОСТ 2.729-68 [2]). Вытащим на компоновку связанные
изделия и проведем «авто трассировку», чтобы появились провода в
проекте (рис. 14). Для тестирования в программе вывод кабелей вынесем в
проект из БД любые кабеля и также привяжем к клеммам. Расположение
на компоновке не важно (важно расположение на din-рейке – по порядку),
в программе разработаем возможность выбирать пользователю, с какой
стороны будет клеммный блок, но магистральный и силовой клеммный
блок строго расположены так: сверху магистральный, снизу силовой.
Теперь можно приступать к работе в Visual Studio.
Для начала нужно подключить библиотеку классов E3.Series
(рис.15). После подключения, ссылка на библиотеку появится в окне
«обозреватель решений» в папке Ссылки (можно увидеть на рисунке 15).
56
Рисунок 13 – установка связей изделий
Первичным и важнейшим объектом визуального программирования
является форма. Форма – это контейнер для элементов управления,
входящих в состав пользовательского интерфейса. При создании нового
проекта в него автоматически добавляется новая форма [10, с.3].
Смоделируем простую форму. Нам нужно, чтобы программа
предоставляла выбор пользователю, с какой стороны листа, опираясь на
реальное расположение клемм в шкафу (в нашем случае, в проекте все
расположено для теста программы, поэтому расположение будем выбирать
сами), выводить клеммные блоки.
На рисунке 16 можно посмотреть получившуюся форму. На форме
имеется кнопки «Подключить», «Отключить», «Считать», «Выделенный»,
«Перенос», «Магистрал», «Силовые». Также есть области текста
«CheckedListBox», куда будут выгружаться найденные в проекте
клеммные блоки. Также на форме имеется «TabControl» - вкладки и
прогрессбар.
57
Рисунок 14 – лист компоновка и установленная связь между
клеммами, где 1 – разные клеммы; 2 – магистральные клеммы; 3 –
силовые клеммы
Каждую кнопку на форме необходимо запрограммировать на
выполнение определенной функции или множества функций.
Рисунок 15 – добавление ссылки на библиотеку классов E3.Series
Кнопку «подключить» запрограммируем на подключение к E3.Series.
Код этой кнопки можно увидеть в листинге 8. Кнопку «отключить»
запрограммируем на отсоединение от проекта и САПР в целом.
58
Рисунок 16 – главное окно (форма) программы
Private Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click ' кнопка "подключить"
app = ConnectToE3() ' Сам САПР
job = app.CreateJobObject ' Проект в САПРЕ
Label1.Text = job.GetName
ComboBox1.Visible = True
Label3.Visible = True
Dim index As Integer
index = ComboBox1.FindString("A3x4")
ComboBox1.SelectedIndex = index 'Ставим в комбобокс выбора
форматок формат "А3х4" по умолчанию
index = ComboBox2.FindString("Снизу")
ComboBox2.SelectedIndex = index 'Ставим в комбобокс выбора
способа отображения кабелей "снизу" по умолчанию
End Sub
Листинг 8 – кнопка «подключить»
59
Подключение к САПР E3.Series здесь отличается от того, как это
было сделано в скрипте. В кнопке «Подключить» это сделано с помощью
функции ConnectToE3, которая проверяет на наличие запущенных
нескольких окон с САПР и проектов. Если в операционной системе
установлен модуль «DispatcherViewer», который позволяет переключать
взаимодействие программы между проектами, то отобразится окно выбора
проектов, в противном случае программа прекратит подключение,
отобразив предупреждение: «Открыто несколько окон E3.Series. Закройте
'лишние' окна или установите E3.Dispatcher. Выход из программы »
(функцию можно отыскать в приложении Д - ConnectToE3()).
Теперь нужно снять всю информацию с проекта и распределить в
столбцах. На это действие запрограммируем кнопку «Считать» (код в
приложении Д - Button3). Результат выполнения этой кнопки на созданном
нами проекте можно увидеть на рисунке 17.
Рисунок 17 – результат выполнения кнопки «Считать»
Как видно из рисунка 17, клеммные блоки выгрузились в левую
таблицу. Отдельные клеммы, в проекте у которых атрибут
"Function_of_device" изменен на «магистральные» или «Силовые» (по
умолчанию этот атрибут пустой), попадают в соответствующие таблицы:
60
магистральные под кнопкой «Магистрал», а силовые под кнопкой
«Силовые».
Теперь нужно запрограммировать главную кнопку «Выгрузить». Она
будет отвечать за вывод найденной информации на форматку в проекте,
согласно распределению в главной форме и настройкам во вкладке
«настройки». На рисунке 18 можно посмотреть вкладку «настройки»
Рисунок 19 – вкладка «настройки»
Код кнопки «выгрузить» можно посмотреть в приложении Д
(Button5_Click). Прежде чем нажать на кнопку «выгрузить», расположим
клеммные блоки на главной форме так, как показано в рисунке 20.
Действие кнопки «выгрузить» состоит в следующем:
- сначала идет сбор данных из вкладки настройки (выбирается форматка)
- выполняется процедура «GO_CLB_MASS_1()»
61
Рисунок 20 – изменение расположения клеммных блоков
Процедура «GO_CLB_MASS_1()» (приложение Д -
GO_CLB_MASS_1()) считывает информацию с проекта по всем изделиям
и выводит на форматку найденную и отсортированную информацию в
проект E3.Series. Включает в себя две функции: «all_wire(mass_wire,
count)» и «sbros». Функция «all_wire» собирает информацию об адресах
проводов и кабелей, а также считает сами провода и кабеля. Из-за
особенности строения изделия «клемма» в БД E3.Series (несколько пинов
на один вывод) нужно с помощью оператора CASE по пинам писать для
каждой клеммы особенную строку данных с полной информацией (ид
клеммы, кол-во пинов, ид пинов, адреса, адреса перемычки). Сделано это
для того, что нужно показывать графически перемычки на клеммах
(требования наладки и монтажных цехов АО «O`zelectroapparat-
electroshield»). Отрывок кода, где расписывается клемма с 4 пинами,
можно увидеть в листинге 9.
Во многих функциях использовалась программная сортировка
данных в E3.Series [26]. Использовался метод SortArrayByIndex(ArrData,
intRows, intColumns, intSortNumberColumn1, intSortNumberColumn2). Этот

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)
Value-based education: ценности в системе образования и способы их реализации на уроке английского языка. Опыт Европейских стран