Исследование механизмов построения интегрированной инструментальной среды на базе КОМПАС-3D
Направления развития САПР. Технологии интеграции инструментальных приложений. Схемы взаимодействия КОМПАС-3D и MathCAD на основе механизмов интеграции. Разработка интерфейсных модулей и механизма связывания переменных, апробация программного решения.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | диссертация |
Язык | русский |
Дата добавления | 15.04.2013 |
Размер файла | 6,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
iExtrusionParam = iDefinition.ExtrusionParam()
iExtrusionParam.depthNormal = 50.0
iExtrusionParam.depthReverse = 10.0
iExtrusionParam.direction = LDefin3D.dtNormal
iExtrusionParam.draftOutwardNormal = False
iExtrusionParam.draftOutwardReverse = False
iExtrusionParam.draftValueNormal = 0.0
iExtrusionParam.draftValueReverse = 0.0
iExtrusionParam.typeNormal = LDefin3D.etBlind
iExtrusionParam.typeReverse = LDefin3D.etBlind
iThinParam = iDefinition.ThinParam()
iThinParam.thin = False
iThinParam.normalThickness = 1.0
iThinParam.reverseThickness = 1.0
iThinParam.thinType = LDefin3D.dtNormal
obj.name = " Операция выдавливания:1"
iColorParam = obj.ColorParam()
iColorParam.ambient = 0.5
iColorParam.color = 9474192
iColorParam.diffuse = 0.6
iColorParam.emission = 0.5
iColorParam.shininess = 0.8
iColorParam.specularity = 0.8
iColorParam.transparency = 1.0
obj.Create()
Приложение 2
Задание на Международную олимпиаду по САПР и компьютерному моделированию (приводится в оригинале).
РАЗРАБОТАТЬ САПР ШПОНОЧНЫХ ПРОТЯЖЕК С ВЫДАЧЕЙ РЕЗУЛЬТАТА В ВИДЕ РАСПЕЧАТКИ РАБОЧЕГО ЧЕРТЕЖА ШПОНОЧНОЙ ПРОТЯЖКИ.
Провести расчет для данных, которые приведены ниже.
1. ПОРЯДОК РАСЧЕТА ПРОТЯЖКИ
1.1. Исходные данные для расчета:
1. Диаметр отверстия заготовки D.
2. Длина отверстия L .
3. Ширина b и глубина шпоночного паза t1 .
4. Материал заготовок и протяжки.
Последовательность расчета:
1. Рассчитывается величина стрелки C по формуле:
С=0,5(D-)
.
2. Устанавливается припуск А, который срезается протяжкой
A=t1 - D + C,
3. Конструктивная подача или подъем на зуб на сторону Sz выбирается по таблице 1 (Сначала вибирают максимальную подачу из диапазона).
Таблица 1 Величина подъема Sz на сторону, мм
№ п.п |
Материал, который обрабатывается |
, МПа |
Подъем на зуб Sz, мм |
|
1 |
Сталь |
< 750 |
0,05-0,20 |
|
2 |
Сталь |
>= 750 |
0,05-0,12 |
|
3 |
Чугун |
- |
0,06-0,20 |
|
4 |
Алюминий |
- |
0,05-0,08 |
|
5 |
Латунь, бронза |
- |
0,08-0,20 |
4. Глубина впадины зуба протяжки (высота первого зуба)
,
где k - коэффициент заполнения стружечной канавки (табл.2).
L - длина обрабатываемой поверхности, мм
Sz - величина подъема на зуб.
Таблица 2 Коэффициенты заполнения стружечной канавки при обработке металлов
Sz, мм |
СТАЛЬ до 400 МПа |
СТАЛЬ от. 400 до 700 МПа |
СТАЛЬ более 700 МПа |
Медь, латунь, алюминий |
Чугун, Бронза |
|
о 0,03 |
3,0 |
2,5 |
3,0 |
2,5 |
2,5 |
|
от 0,03 до 0,07 |
4,0 |
3,0 |
3,5 |
3,0 |
2,5 |
|
более 0,07 |
4,5 |
3,5 |
4,0 |
3,5 |
2,0 |
5. Предварительно определяется шаг режущих и калибрующих зубьев
,
который рекомендуется округлять к ближайшим значениям из нормального ряда шагов зубьев протяжек:
4, 5, 6, 8, 10, 12, 14, 18, 20, 22, 25.
6. Проверка шага по наибольшему числу зубьев, которые одновременно берут участие в работе
Zmax=.
У полученной при расчете величины Zmax дробная часть отбрасывается, но в любом случае необходимо, чтобы Zmax 3. В противном случае шаг уменьшают, рассчитывая по формуле:
,
а потом опять округляют к стандартному меньшему значению.
7. Проверка соотношения между шагом и глубиной стружечной канавки:
;
в случае, когда это неравенство не выпонляется, умельшают величину Sz с шагом 0,01мм до меншего значения из диапазона, указанного в табл.1, и повторяют расчет, начиная с п.п.4. Если м при этом решение не найдено, увеличивают шаг , выбирая следующее большее значение из стандартного ряда.
8. Определяется высота направляющей части. У шпонковой протяжки она равна высоте хвостовика H1 (таблица 3). По этой таблице определяются и все остальные размеры хвостовика.
9. Площадь опасного сечения хвостовика необходимо также выбрать из таблицы 3 в зависимости от размера шпонкового паза.
Таблица 3 Размеры хвостовиков под кулачковые патроны для шпонковых протяжек
Размеры хвостовика, мм |
Площадь опасного сечения |
||||||||
b |
l1 |
B1 |
H1 |
a1 |
a |
f |
b1 |
Fхв. мм2 |
|
6 |
70 |
10 |
15 |
15 |
20 |
4 |
6 |
49,4 |
|
8 |
70 |
12 |
18 |
15 |
20 |
6 |
8 |
143,6 |
|
10 |
70 |
15 |
22 |
15 |
20 |
6 |
10 |
219,6 |
|
12 |
80 |
- |
28 |
18 |
20 |
6 |
8 |
224 |
Примечание. l1 - длина захода хвостовика в тяговый патрон. Dотв. - диаметр отверстия.
10. Площадь опасного сечения по канавке первого зуба рассчитывается согласно формул (табл.3):
11. Подсчитывается наибольшая сила протягивания в Н по формуле
,
где , х=0,85
12. Проверка протяжки на прочность. На проочность протяжки проверяются по впадине первого зуба по формуле
;
и по хвостовику
;
где - допустимое напряжение на разрыв (для быстрорежущей стали =200 МПа, для легированной стали =150 МПа).
У протяжек с хвостовиками под клиновой зажим (табл.3) выполняют еще проверочный расчет на смятие клина по формуле:
.
Тут площадь смятия
где b1 - ширина паза под клин, мм;
b - ширина шпоночного паза, мм.
Допустимое напряжение смятия :
- для легированной стали - =(400-450) МПа ;
- для быстрорежущей стали - =600 МПа;
В случае, когда какое-либо условие прочности не выполняется, уменьшают величину Sz с шагом 0,01мм до меншего значения из диапазона, указанного в табл.1 и повторяют расчет, начиная с п.п.4. Если и в этом случае решение не найдено, увеличивают шаг , выбирая следующее большее значение из стандартного ряда и повторяют расчет, начиная з п.п.№6.
13. Определяется высота калибрующих зубьев
Hк = Hхв +A ,
где Hхв - высота хвостовика, мм;
A - припуск на протягивание, мм.
14. Определяется число режущих зубьев
15. Рассчитываются размеры режущих зубьев. Высота первого режущего зуба H1 принимается равной высоте хвостовика:
H1 =Hхв
Высота следующих зубьев увеличивается на величину подъема на зуб Sz :
H2=H1+Sz ; H3=H2+ Sz ; H4=H3+ Sz i т.д.
Последние два режущих зуба рассматриваются как переходные, а их высота определяется суммироваанием 0,6 Sz i 0,4 Sz
Необходимо проверить, чтобы высота последнего режущего зуба равнялась высоте калибровочных:
Hpi=Hк=Нхв+А
Если это условие не выполняется, корректируют высоту последнего режщего зуба.
16. Формируется таблица размеров режущих зубьев по форме:
Тип зубьев |
Режущие |
Калибрующие |
||||||||
Допуск, мм |
0,01мм |
0,005мм |
||||||||
Высота зуба H, мм |
||||||||||
Номер зуба |
1 |
2 |
3 |
4 |
17. Число каалибрующих зубьев принимают
Zk=4
18. Суммарная длина протяжки
,
где l - расстояние от торца хвостовика до первого зуба, которая составляет 160мм и выбирается в зависимости от длины передней направляющей, длины направляющей втулки (адаптера), длины хвостовика, который входит в патрон и толщины упорной плиты станка;
l1 -длина рабочей части протяжки. Она равна сумме длин режущей и калибрующей частей:
l1=lр+lk .
Длина режущей части
,
а калибрующей
У шпоночных протяжек задней направляющей части не делают. Ее функцию выполняет последний калибрующий зуб с шагом 1,5 Рк . Поэтому
Тут Рк - шаг калибровочных зубьев.
19. Выполняется проверка на то, чтобы суммарная длина протяжки была не больше допустимой величины, которая приведена в таблице 5.
Таблица 5 Наибольшая допустимая величина шпоночных протяжек
Площадь сечения хвостовика , мм2 |
L доп., мм |
|
35 |
500 |
|
50 |
700 |
|
190 |
900 |
|
240 |
1000 |
Если общая длина шпоночной протяжки превышает длину Lдоп., тогда припуск A делится на принятое число проходов n. При этом расчет протяжки проводится для припуска А/n.
Рис. 1. Форма и размеры стружечных канавок черновых зубьев протяжки
20. Определяются элементы профиля зубьев протяжки в осевом сечении (рис.1):
ширина спинки ; радиус дна впадины r= 0,50X h; радиус спинки .
21. Определяем величины углов: переднего и заднего согласно табл.6.
Таблица 6 Величины переднего угла у протяжек
Обрабатываемый материал |
Угол g , град. |
|
Сталь в МПа 600 |
16 |
|
Сталь в МПа 600 до 1000 |
14 |
|
Сталь в МПа > 1000 |
10 |
|
Чугун НВ 150 |
10 |
|
Чугун НВ > 150 |
6 |
|
Алюминий |
13 |
|
Бронза |
3 |
Выбирается задний угол :
- для режущих зубьев ;
- для калибрующих зубьев .
Величина фаски f на режущих зубьях не более 0,05мм, на калибрующих - 0,2-1мм.
22. Ширина режущей части протяжки равна:
23. Выводятся на экран (по запросу) все рассчитанные результаты, которые относятся к параметрам протяжки.
3.РАЗРАБОТКА РАБОЧЕГО ЧЕРТЕЖА ШПОНОЧНОЙ ПРОТЯЖКИ:
Вычерчивается профиль стружечной впадины между двумя соседними зубьями (рис.1), который состоит из:
· задней поверхности предыдущего зуба шириной С;
· передней поверхности следующего зуба, размещенной под углом , вершина которого находится выше предыдущего на величину подъема на зуб Sz.
· дуги окружности, касательной к передней поверхности и линии, которая определяет глубину канавки h.
· дуги окружности спинки зуба, которая проходит через конец линии задней оверхности, касательно к дуге впадины стружечной канавки.
Проводится копирование этого профиля в количестве, равном числу режущих и калибровочных зубьев. При этом обеспечивается сдвиг каждого профиля по отношению к предыдущему на величину шага в горизонтальном направлении и на заданную величину подъема на зуб - в вертикальном (для переходных подъем уменьшенный, а для калибровочных - равен нулю). Дочерчивается хвостовик, на расстоянии 160мм от первого зуба до левого торца хвостовика. Линия нижней поверхности хвостовика продолжается на полную длину протяжки и оформляется задняя часть, как показано на рис.2.
Рис.2.Протяжка шпоночная обыкновенная: 1 - для протяжек, работающих в один проход; 2 - для протяжек, работающих в несколько проходов.
Приложение 3
РАСЧЕТ РАДИАТОРА ПОЛУПРОВОДНИКОВОГО ПРИБОРА
(по материалам [3,21])
Исходные данные
tп.max - максимальная температура перехода;
Rвн - внутреннее тепловое сопротивление прибора;
Ррас - мощность рассеиваемая прибором;
tc - температура окружающей среды;
Rкт - контактное сопротивление прибор - теплосток (величина Rкт лежит в пределах 0,1-1,0 град/Вт).
Последовательность расчета
1. Мощность рассеяния прибора при заданных условиях
,
где Rтс - тепловое сопротивление теплосток (радиатор)-среда. Необходимо выполнить условие Рmax > Ррас.
2. Тепловое сопротивление теплосток - среда
,
где q - коэффициент, учитывающий неравномерность распределения температуры по радиатору (q » 0,9).
3. Среднеповерхностная температура перегрева радиатора (рис. 2.8)
tT - tc =Ppac · Rтс
4. По D t (рис. 2.9) находят минимальную высоту радиатора Lmin.
5. Задаются габаритами радиатора: l - ширина радиатора, b - расстояние между ребрами, h - высота ребра, d - толщина основания. Рекомендуется придерживаться следующих соотношений: при основании радиатора 90ґ 90 мм; d = 3мм; d = 5 мм; h = 20 мм; b = 12 мм (естественная конвекция) и b = 6 мм (принудительное движение воздуха).
6. Расстояние между ребрами
,
где n и d - число и толщина ребра.
Расстояние между ребрами определяют из условия b і А, где А толщина пограничного слоя (при естественной конвекции А = 8-10 мм, вынужденной - А » 2,5 мм).
Толщина и высота ребра выбираются из условия
,
где h - высота ребра; a - суммарный коэффициент теплоотвода; l - теплопроводность материала радиатора. Ширину радиатора l определяют из конструктивных соображений, считая l » 0,9 Lmin:
l = n (b + d ) - b.
Материалы для радиаторов
|
g , кг/м3 |
l , Вт/(м· ° С) |
|
Медь Сплавы алюминия Сплавы магния Сталь Нержавеющая сталь |
8960 2660 1760 7840 7840 |
370 160 170 55 14 |
Степень черноты поверхностей некоторых материалов
Алюминиевый сплав с шероховатой поверхностью Алюминиевый сплав окисленный Алюминиевый сплав анодированный (черный) Медь окисленная |
0,06-0,07 0,20-0,30 0,80-0,85 0,80-0,88 |
7. Целесообразность оребрения радиатора определяется по критерию Био
Bi = 0,5ad/l,
Bi < 1 (ребро охлаждается), Bi >1 (ребро изолятор), Bi = 1 (ребро не влияет).
8. Всю поверхность радиатора разбивают на части:
S1 - поверхность между ребрами;
S2 - поверхность ребер, обращенная друг к другу;
S3 - поверхность крайних ребер;
S4 - поверхность торцов ребер;
S5 - неоребренная поверхность.
Неоребренная поверхность S5 = l· L
Оребренная поверхность
Sореб= S1+ S2+ S3+ S4=(n-1)· (bLmin)+ 2hl(n-1)+2(h +d)Lmin+ n[ 2hd +d Lmin] .
9. Полные коэффициенты теплоотдачи оребренной и неоребренной поверхностей
a гл = a л.гл + a к.гл; a ореб = a л.ореб + a к.ореб; a л = e п· j ij· f(tт,tс).
Для поверхностей S1 и S2 коэффициенты взаимной облученности определяются из графика (рис. 2.10) или рассчитываются
.
Конвективный коэффициент теплоотдачи, Вт/(см2· ? С)
aк = 5,62A(tм)· B,
где tм = 0,5(tт + tc);
Величина А(tм) учитывает свойства среды и находится по графику (рис. 2.11).
Влияние атмосферного давления на величину А(tм) находят из графика рис. 2.12.
10. Мощность, рассеиваемая гладкой поверхностью радиатора, Вт,
Pгл = aгл · Sгл · (tт - tc).
11. Величина теплового сопротивления гладкой поверхности, ? C/Вт,
.
12. Мощность, рассеиваемая оребренной поверхностью
,
где Рi - мощность, рассеиваемая i-й поверхностью; tic - температура среды между ребрами.
Температура воздуха вблизи поверхностей S3; S4 и S5 равна tc.
Температура воздуха вблизи поверхностей S1 и S2 (между ребрами) равна
tic = tт - (tт - tc)· H,
где H - относительный температурный напор, tт - среднеповерхностная температура теплостока.
Если ребра располагаются вертикально, то
Н = f(h ),
где h = А4(tм)bC, tм = 0,5(tт + tc), C= (tт - tc)1/4/(L)1/4 (рис. 2.13 и 2.14).
tci = tc для S3, S4, S5. tci = tic для S1 и S2 (конвективный коэффициент торцевых поверхностей ребер принимается равным крайним ребрам).
Тепловое сопротивление оребренной поверхности, °--C/Вт
.
Общее тепловое сопротивление
.
Мощность, рассеиваемая радиатором, Вт
Робщ.расч= Ргл + Рореб.
Необходимо выполнить условие Робщ.расч ? Рисх (расч).
Приложение 4
ЛИСТИНГИ ПРОГРАММНОГО КОДА (C#)
ОСНОВНЫХ ФУНКЦИЙ РАЗРАБОТАННЫХ МОДУЛЕЙ
ExVarCompass3D
//Подключение библиотек для работы с КОМПАС-3D
using Kompas6Constants;
using Kompas6Constants3D;
//В зависимости от установленной версии подключаються разные библиотеки
#if (__LIGHT_VERSION__)
using Kompas6LTAPI5;
#else
using Kompas6API5;
#endif
using KAPITypes;
// Создаём объекты для работы с КОМПАС-3D
private KompasObject kompas; // Объект КОМПАС-3D
private ksDocument3D doc3D; // 3D-Документ КОМПАС-3D
private string LastPathCompass; Путь к файлу КОМПАС-3D
// Активируем КОМПАС-3D
private void ActiveCompass()
{
if (kompas == null)
{
#if __LIGHT_VERSION__
Type t = Type.GetTypeFromProgID("KOMPASLT.Application.5");
#else
Type t = Type.GetTypeFromProgID("KOMPAS.Application.5");
#endif
kompas = (KompasObject)Activator.CreateInstance(t);
}
}
// Открываем файл Компас-3D
private void OpenFileCompass()
{
if (kompas != null)
{
OpenFileDialog OpenFileDialog = new OpenFileDialog();
OpenFileDialog.Filter = "КОМПАС-3D Документы (*.m3d;*.a3d)|*.m3d;*.a3d";
if (OpenFileDialog.ShowDialog() == DialogResult.OK)
{
CompassPath.Text = OpenFileDialog.FileName;
LastPathCompass = CompassPath.Text;
doc3D = (ksDocument3D)kompas.Document3D();
if (doc3D != null) doc3D.Open(OpenFileDialog.FileName, false);
// Делаем Компас-3D видимым
kompas.Visible = true;
}
}
else
{
MessageBox.Show(this, "Объект не захвачен", "Сообщение");
}
}
// Активируем КОМПАС-3D и открываем файл
private void StartCompass_Click(object sender, EventArgs e)
{
ActiveCompass();
OpenFileCompass();
}
// Закрываем Компас-3D, закрываем форму
private void Exit_Click(object sender, EventArgs e)
{
if (kompas != null)
{
kompas.Quit();
Marshal.ReleaseComObject(kompas);
}
Close();
}
// Считываем значение внешних переменных КОМПАС-3D
private void Compass_EV_Read_Click(object sender, EventArgs e)
{
if (kompas != null)
{
kompas.Visible = true;
if (doc3D != null)
{
if (doc3D.IsDetail())
{
kompas.ksError("Текущий документ должен быть сборкой");
return;
}
// Выбор компонента -1 главный(сама сборка),0 первый(первая деталь)
ksPart part = (ksPart)doc3D.GetPart(-1);
if (part != null)
{
// Работа с массивом внешних переменных
ksVariableCollection varCol =
(ksVariableCollection)part.VariableCollection();
if (varCol != null)
{
ksVariable var = (ksVariable)kompas.GetParamStruct
((short)StructType2DEnum.ko_VariableParam);
if (var == null) return;
this.TableCompassEV.Rows.Clear();
for (int j = 0; j < varCol.GetCount(); j++)
{
// Считывание переменных с записью в таблицу
var = (ksVariable)varCol.GetByIndex(j);
this.TableCompassEV.Rows.Add(var.name, var.value, var.note);
}
}
}
}
}
}
// Запись значения внешних переменных в КОМПАС-3D
private void Compass_EV_Write_Click(object sender, EventArgs e)
{
if (kompas != null)
{
if (doc3D != null)
{
if (doc3D.IsDetail())
{
kompas.ksError("Текущий документ должен быть сборкой");
return;
}
// Выбор компонента -1 главный(сама сборка),0 первый(первая деталь)
ksPart part = (ksPart)doc3D.GetPart(-1);
if (part != null)
{
// Работа с массивом внешних переменных
ksVariableCollection varCol =
(ksVariableCollection)part.VariableCollection();
if (varCol != null)
{
// Запись внешних переменных в компас
ksVariable var = (ksVariable)kompas.GetParamStruct
((short)StructType2DEnum.ko_VariableParam);
if (var == null) return;
string d;
double g;
for (int i = 0; i < varCol.GetCount(); i++)
{
var = (ksVariable)varCol.GetByIndex(i);
d = (string)(this.TableCompassEV.Rows[i].Cells[1].Value.ToString());
g = Convert.ToDouble(d);
var.value = g;
}
//Перестроение сборки, почемуто не работает
part.RebuildModel();
}
}
}
}
}
VarMathCAD_API
//Подключение библиотек для работы с MathCAD
using Mathcad;
//Создание объектов для работы с MathCAD
private string LastMathCadPath = "";
private Mathcad.Application MC; //Объектов MathCAD
private Mathcad.Worksheets WK; //Объект для списка рабочих листов MathCAD
private Mathcad.Worksheet WS; //Объект для рабочего листа MathCAD
// Активируем MathCAD
private void InitMathCad()
{
if (MC == null)
{
try
{
MC = new Mathcad.Application();
}
catch
{
MessageBox.Show("MathCAD не установлен.", "Ошибка",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
// Открываем файл MathCAD
private void OpenFileMathCad(string filename)
{
if (MC != null)
{
WK = MC.Worksheets;
for (int i = 0; i < WK.Count; i++)
{
WS = WK.Item(i);
if (WS.FullName == filename)
WS.Close(MCSaveOption.mcSaveChanges);
}
if (WK != null) WS = WK.Open(filename);
MC.Visible = true;
}
else
{
MessageBox.Show(this, "Объект не захвачен", "Сообщение");
}
}
// Считываем значение входных и выходных переменных MathCAD
private void MathCadRead()
{
if (MC != null)
if (WS != null)
{
for (int j = 0; j < 50; j++)
{
{
string name;
name = "in" + j; // Считываем значение входных переменных MathCAD
string value;
try
{
value = (WS.GetValue(name) as NumericValue).Real.ToString();
this.TableMathCad_IN.Rows.Add(name, value);
}
catch(Exception)
{
continue;
}
}
}
for (int j = 0; j < 50; j++)
{
string name;
name = "out" + j;//Считываем значение выходных переменныхMathCAD
string value;
try
{
value = (WS.GetValue(name) as NumericValue).Real.ToString();
this.TableMathCad_OUT.Rows.Add(name, value);
}
catch(Exception)
{
continue;
}
}
}
else
{
MessageBox.Show(this, "Объект не захвачен", "Сообщение");
}
}
// Записываем значение входных переменных и считываем новые значения выходных // переменных MathCAD
private void MathCadWrite()
{
if (MC != null)
if (WS != null)
{
for (int j = 0; j < this.TableMathCad_IN.Rows.Count; j++)
{
try
{
string name;
name = this.TableMathCad_IN.Rows[j].Cells[0].Value.ToString();
string value;
value = this.TableMathCad_IN.Rows[j].Cells[1].Value.ToString();
double var;
var = ConverToDouble(value);
// Записываем значение входных переменных MathCAD
WS.SetValue(name, var);
}
catch (Exception)
{
continue;
}
}
WS.Recalculate();
WS.Save();
for (int i = 0; i < this.TableMathCad_OUT.Rows.Count; i++)
{
try
{
string name1;
name1 = this.TableMathCad_OUT.Rows[i].Cells[0].Value.ToString();
string value1;
// Cчитываем новые значения выходных переменных MathCAD
value1 = (WS.GetValue(name1) as NumericValue).Real.ToString();
this.TableMathCad_OUT.Rows[i].Cells[1].Value = value1;
}
catch (Exception)
{
continue;
}
}
}
else
{
MessageBox.Show(this, "Объект не захвачен", "Сообщение");
}
}
VarMathCAD_XML
// Считываем или записываем значения переменных в файл MathCAD
private void MathCadParser(string MathPath, bool save)
{
// Обновляем таблицу Маткада
int i = 0;
string region_id;
XmlDocument xd = new XmlDocument();
try{
xd.Load(MathPath); // Открываем файл MathCAD
}
catch
{
return;
}
XmlNodeList xnl = xd.DocumentElement.ChildNodes;
XmlNode ml_id, ml_real;
if (save == false) this.TableMathCad.Rows.Clear();
foreach (XmlNode xn in xnl)
if (xn.Name == "regions")
foreach (XmlNode region in xn.ChildNodes)
{
region_id = region.Attributes[0].Value;
foreach (XmlNode math in region.ChildNodes)
foreach (XmlNode ml_define in math.ChildNodes)
{
if (ml_define.Name == "ml:define") // Присвоенные переменные MathCAD
{
ml_id = ml_define.FirstChild;
ml_real = ml_define.LastChild;
if (ml_real.Name == "ml:real")
{
if (save == true)
ml_real.InnerText =
this.TableMathCad.Rows[i].Cells[1].Value.ToString();
else
this.TableMathCad.Rows.Add (ml_id.InnerText,
ml_real.InnerText, "Присвоенная", region_id, "define");
i++;
}
}
if (ml_define.Name == "ml:eval") // Вычисленные переменные MathCAD
{
ml_id = ml_define.FirstChild;
foreach (XmlNode result in ml_define.ChildNodes)
if (result.Name == "result")
{
ml_real = result.FirstChild;
if (save == true)ml_real.InnerText = this.TableMathCad.Rows[i].Cells[1].Value.ToString();
else
this.TableMathCad.Rows.Add(ml_id.InnerText,
ml_real.InnerText, "Вычисленная", region_id, "eval");
}
i++;
}
}
}
try
{
if (save) xd.Save(MathPath);
}
catch
{
MessageBox.Show("Не могу сохранить! Возможно файл открыт только для чтения!", "Ошибка",MessageBoxButtons.OK, MessageBoxIcon.Error);
}
IntegratorKM_Lite
// Заполняем комбобокс у таблицы MathCAD и выбираем нулевой элемент
private void AddMathCadCombo()
{
//заполняем комбобокс у таблицы MathCAD
this.KompasName_ComboBox.Items.Clear();
this.KompasName_ComboBox.Items.Add("empty");
for (int j = 0; j < TableKompas3D.Rows.Count; j++)
{
this.KompasName_ComboBox.Items.Add
(this.TableKompas3D.Rows[j].Cells[0].Value.ToString());
}
// Выбираем нулевой элемент для каждой ячейки в комбо-бокс-столбце в таблице внешних переменных Маткада
for (int i = 0; i < TableMathCad.Rows.Count; i++)
{
this.KompasName_ComboBox.DataGridView.Rows[i].Cells[5].Value =
this.KompasName_ComboBox.Items[0];
}
}
// Заполняем комбобокс у таблицы КОМПАС-3D и выбираем нулевой элемент
private void AddKompasCombo()
{
//заполняем комбобокс у таблицы КОМПАС-3D
this.MathCadName_ComboBox.Items.Clear();
this.MathCadName_ComboBox.Items.Add("empty");
for (int j = 0; j < TableMathCad.Rows.Count; j++)
{
this.MathCadName_ComboBox.Items.Add
(this.TableMathCad.Rows[j].Cells[0].Value.ToString());
}
// Выбираем нулевой элемент для каждой ячейки в комбо-бокс-столбце в таблице внешних переменных КОМПАС-3D
for (int i = 0; i < TableKompas3D.Rows.Count; i++)
{
this.MathCadName_ComboBox.DataGridView.Rows[i].Cells[3].Value =
this.MathCadName_ComboBox.Items[0];
}
}
// Присваиваем переменной КОМПАС-3D значение переменной MathCAD
// выбранной в комбо-бокс-столбце
void EndEdit_TableKompas3D(object sender, DataGridViewCellEventArgs e)
{
try
{
if (e.ColumnIndex == 3)
this.TableKompas3D.Rows[e.RowIndex].Cells[1].Value =
this.TableMathCad.Rows[MathCadName_ComboBox.Items.IndexOf
(this.TableKompas3D.Rows[e.RowIndex].Cells[3].Value)
- 1].Cells[1].Value;
}
catch
{
MessageBox.Show("Error");
return;
}
finally
{
this.TableKompas3D.Update();
}
}
// Присваиваем переменной MathCad значение переменной КОМПАС-3D
// выбранной в комбо-бокс-столбце
void TableMathCadCellEndEdit(object sender, DataGridViewCellEventArgs e)
{
try
{
if (e.ColumnIndex == 5)
this.TableMathCad.Rows[e.RowIndex].Cells[1].Value =
this.TableKompas3D.Rows[KompasName_ComboBox.Items.IndexOf
(this.TableMathCad.Rows[e.RowIndex].Cells[5].Value)
- 1].Cells[1].Value;
}
catch
{
MessageBox.Show("Error");
return;
}
finally
{
this.TableMathCad.Update();
}
}
Размещено на Allbest.ru
Подобные документы
Общие сведения о системе Компас 3D, предназначенной для графического ввода и редактирования чертежей на ПК. Ее основные функции, типы объектов, единицы измерения. Принципы работы в Компас-График LT. Пример создания файла трехмерной модели сборки детали.
курсовая работа [1,1 M], добавлен 03.11.2014Последовательность разработки чертежа и модели с типоразмерами из параметрического ряда. Построение таблицы переменных в соответствии с исходными данными. Проектирование параметрической модели в системе Компас-3D, внешние переменные для чертежа детали.
практическая работа [5,9 M], добавлен 14.04.2016Анализ объектно-ориентированной технологии программирования на примере языка Java. Методы, инструменты разработки web-приложений. Применение их при создании Интернет-магазина для ООО "Компас". Разработка апплета для его страницы в виде стрелочных часов.
курсовая работа [2,7 M], добавлен 31.01.2014Изучение системы КОМПАС-ГРАФИК, ее структура и основные возможности, типы файлов. Рабочий чертеж детали с простановкой размеров, оформлением технических требований и заполнением основной надписи. Проверочный прочностной расчет узла автомобиля в САПР-АВТО.
курсовая работа [68,8 K], добавлен 14.05.2015Изучение интерфейса и основных инструментов программы Компас. Обзор инструментов моделирования, используемых при создании модели материнской платы. Анализ программных и технических средств, объединенных в единый технологический процесс проектирования.
курсовая работа [2,7 M], добавлен 05.04.2012Компас-3D как универсальная система трехмерного проектирования. Классический процесс трехмерного параметрического проектирования. Особенности универсальной системы автоматизированного проектирования Компас-График. Преимущества и недостатки системы Компас.
реферат [2,8 M], добавлен 30.05.2010Создание, редактирование, выбор штриховок и заливок 3D детали с целью наглядности представления изготовленной детали в программе Компас 3D. Изучение и порядок работы с программой, знакомство с ее особенностями, область применения программы Компас.
курсовая работа [1,4 M], добавлен 16.07.2012Жизненный цикл программного продукта. Современные среды разработки приложений. Защита информации в базах данных. Особенности разработки приложения с помощью среды Delphi 7. Проверка программного модуля на предмет соответствия стандартам кодирования.
отчет по практике [589,0 K], добавлен 18.05.2017Создание сложных двумерных и трехмерных моделей в среде AutoCAD, КОМПАС-3D и Autodesk Inventor. Построение эскизов на плоскости, порядок создания чертежей. Способы построения моделей и особенности их применения в той или иной ситуации на практике.
контрольная работа [1,2 M], добавлен 30.05.2015Точность чертежей и документации. Использование собственного математического ядра и параметрических технологий как ключевая особенность "Компас-3D". Основной инструментарий трехмерного моделирования. Моделирование деталей из листового материала.
реферат [16,4 K], добавлен 20.06.2013