рефераты курсовые

Технологическая реализация системы подготовки обработки детали станка с числовым программным управлением

p align="left">В процессе проектирования был получен программный модуль, отвечающий всем заявленным требованиям. Этот модуль может проводить сложные математические расчеты неявным образом, отображать в графическом представлении введенные исходные данные. В результате использования модуля можно получить готовую управляющую программу для системы ЧПУ.

Для упрощения задачи создания модуля, в нем применен принцип внешнего управления работой пакета 3D моделирования. За счет этого была реализована возможность анимированной имитации обработки на станке, с получением твердотельной математической модели изделия, очень близкой к реальному изделию, которое могло бы получиться на станке, в результате использования этой управляющей программы.

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

Данный программный модуль предназначен для применения в группе шлифовальных станков с ЧПУ Walter, оснащенными 4 - 6 осями. С помощью этого модуля могут быть смоделированы большинство традиционных осевых инструментов, которые применяются в производстве, а также может быть осуществлена переточка затупившегося инструмента.

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

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

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

Список литературы

1. Автоматизация проектно-конструкторских работ и технологической подготовки производства в машиностроении. Т. 1/Под ред. О. И. Семенкова.- Минск: Высшая школа, 2005.

2. Волков Д.И., Скляренко В.К.. Экономика предприятия. Курс лекций.- М.: Инфра-м, 2004.

3. Гольдштейн А.И., Молочник В.И. О внутренней структуре постпроцессоров. -- В кн.: Повышение эффективности использования станков с ЧПУ. - Киев: Знание, 2006.

4. ГОСТ 886-77 "Свёрла спиральные с цилиндрическим хвостовиком. Длинная серия".

5. ГОСТ 2092-77 "Свёрла спиральные удлиненные с коническим хвостовиком".

6. ГОСТ 10079-71 "Развертки конические с коническим хвостовиком".

7. ГОСТ 14952-75 "Свёрла центровочные комбинированные".

8. ГОСТ 18121-72 "Развёртки котельные машинные".

9. ГОСТ 19267-73 "Развертки машинные цилиндрические с цилиндрическим хвостовиком для легких сплавов".

10. ГОСТ 21579-76 "Зенкеры с цилиндрическим хвостовиком для легких сплавов".

11. Делфи 4. Библия разработчика. Том Сван. Киев/Москва/Санкт-Петербург: Диалектика, 1998.

12. Ендовицкий Д.А., Коменденко С.Н. Организация анализа и контроля инновационной деятельности хозяйствующего субъекта. Под ред. Л.Т. Гимеровской. М.: Финансы и статистика, 2004.

13. Знакомство с Delphi 7. Архангельский А.Я. Москва: издательство Бином, 2004.

14. Инструменты программирования в Delphi 7. Фаронов В.В. СПб.: Питер, 2006.

15. Инструкция по программированию. Издание 03.96. SINUMERIK 840D/810D/FM-NC.

16. Ильенкова С.Д., Гохберг Л.М., Ягудин С.Ю. и др.Инновационный менеджмент. Учебник для вузов./ под ред. С.Д. Ильенковой. М.: Банки и биржи, Юнити, 1997.

17. Механика промышленных роботов: Учеб. Пособие для вузов: В 3 кн. / Под ред. К. В. Фролова, Е. И. Воробьева. Кн.2: расчет и проектирование механизмов / Е. И. Воробьев, О. Д. Егоров, С. А. Попов. - М: Высш. шк., 1988.

18. Инвестиции. Учебное пособие/Г.П. Подшиваленко, Н.И. Лахметкина, М.В. Макарова и др. М.:Кнорус,2004.

19. Оборудование машиностроительных предприятий / Схиртладзе А. Г Выходец., В. И., Никифоров Н. И., Отений Я. Н. ? ВолгГТУ, Волгоград, 2005.

20. СанПиН 2.2.2/2.4.1340-03 "Гигиенические требования к персональным электронно-вычислительным машинам и организации работы".

21. Системная интеграция/Машиностроение СТА 3/2002 Николай Панышев, Дмитрий Ялымов "Система числового программного управления технологическим оборудованием".

22. Интернет источник. CALS-технологии. www.calscenter.com.

23. Интернет источник. Всемирная интернет энциклопедия. www.wikipedia.ru.

24. Интернет источник. Информационные системы. http://revolution.allbest.ru/programming.

25. Интернет источник. Уфимский государственный авиационный технический университет. www.twirpx.com.

26. Интернет источник. Siemens Sinumerik 840D. www.chipmaker.ru.

27. Интернет источник. Филиппович К.В. "Идеология постпроцессирования в современных CAD/CAM-системах" Россия, ООО Евразия Лимитед, 2000. www.sapr2000.ru

Приложение А

Исходный текст программного модуля:

program Project2; //Имя программы

uses //Объявление прикрепленных к проекту файлов

Forms,

Unit1 in 'Unit1.pas' {Form1},

Unit2 in 'Unit2.pas' {Form2},

Unit3 in 'Unit3.pas' {Form3},

Unit4 in 'Unit4.pas' {Form4},

Unit5 in 'Unit5.pas' {Form5},

Unit6 in 'Unit6.pas',

Unit7 in 'Unit7.pas' {Form7},

Unit8 in 'Unit8.pas' {Form8},

Unit9 in 'Unit9.pas' {Form9},

Unit10 in 'Unit10.pas',

Unit11 in 'Unit11.pas' {Form11},

Unit12 in 'Unit12.pas' {Form12},

Unit13 in 'Unit13.pas' {Form13},

Unit14 in 'Unit14.pas' {Form14},

Unit15 in 'Unit15.pas' {Form15},

Unit16 in 'Unit16.pas' {Form16},

Unit17 in 'Unit17.pas' {Form17};

var //объявление переменных

s:string; //назначение и присвоение типа переменных

ff:textfile;

{$R *.res} // директива компилятору подключить файл ресурсов

procedure Init_All; //объявление процедуры, относящейся ко всему проекту

begin

N_Ses:=1;

Init_Form2;

Form2.Caption:='Операция N 1';

Init_St_Det_Kr;

AssignFile(ff,path+'DAT\Stanok.dat'); //все параметры в проекта сохраняются в файл

reset(ff);

readln(ff,Xst[0]);

readln(ff,Yst[0]);

readln(ff,Zst[0]);

readln(ff,Ast[0]);

readln(ff,Bst[0]);

readln(ff,Cst[0]);

CloseFile(ff);

Init_Zag; //инициализация пользовательских функций

Init_Poly;

Init_Chk_Box;

Init_Traect(1);

Traect(1);

//Profile;

Init_Moving;

//Moving_9484;

Load_Op;

N_St:=0; N_Fin:=N_Pos[N_Act]; N_Last:=0;

Init_Data3('DAT\9484.txt'); //чтение данных из файла

Form3.Caption:='Начапьные установки';

Fill_Str_Grid1_3; //вставка стандартный элементов Windows

Init_Data4;

Fill_Str_Grid1_4;

Init_BitMap;

Draw_All;

Init_Data5;

Init_Data12;

Init_BitMap12;

Fill_Str_Grid3_12(1);

Fill_Str_Grid1_5;

Init_Data7;

Fill_Str_Grid1_7;

Step:=1;

str(Step:1:3,s);

Form8.Memo1.Text:=s;

Form8.Button17.Caption:='';

Nst_Act:=0;

Init_Zag;

Init_Data8;

Fill_Str_Grid1_8;

Fill_Str_Grid2_8;

Init_BitMap8;

Nkr_Edit:=1;

Init_BitMap9;

Cooling;

Fill_Str_Grid1_13;

N_Buff:=1;

Put_Buff(N_Buff);

Form3.Visible:=true;

Write_Zag;

Init_Data14;

Init_Data_15;

Init_Data_16;

end;

begin

Application.Initialize;

Application.CreateForm(TForm1, Form1); //создание вспомогательных окон

Application.CreateForm(TForm2, Form2);

Application.CreateForm(TForm3, Form3);

Application.CreateForm(TForm4, Form4);

Application.CreateForm(TForm5, Form5);

Application.CreateForm(TForm7, Form7);

Application.CreateForm(TForm8, Form8);

Application.CreateForm(TForm9, Form9);

Application.CreateForm(TForm11, Form11);

Application.CreateForm(TForm12, Form12);

Application.CreateForm(TForm13, Form13);

Application.CreateForm(TForm14, Form14);

Application.CreateForm(TForm15, Form15);

Application.CreateForm(TForm16, Form16);

Application.CreateForm(TForm17, Form17);

Init_All;

Application.Run;

end.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ComCtrls, Buttons, CheckLst, Grids,Math;

type

TForm1 = class(TForm)

Button1: TButton;

Memo1: TMemo;

Button8: TButton;

CheckListBox1: TCheckListBox;

Button2: TButton;

Button3: TButton;

StringGrid1: TStringGrid;

Button4: TButton;

Button5: TButton;

CheckListBox2: TCheckListBox;

Button6: TButton;

Button7: TButton;

Button9: TButton;

CheckListBox3: TCheckListBox;

Button10: TButton;

Button11: TButton;

Button12: TButton;

Button13: TButton;

Button14: TButton;

Button15: TButton;

Button16: TButton;

procedure Button3Click(Sender: TObject); //функции нажатия кнопок

procedure Button2Click(Sender: TObject);

procedure Button8Click(Sender: TObject);

procedure CheckListBox1ClickCheck(Sender: TObject);

procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);

procedure Button4Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure CheckListBox2ClickCheck(Sender: TObject);

procedure Button7Click(Sender: TObject);

procedure Button9Click(Sender: TObject);

procedure CheckListBox3ClickCheck(Sender: TObject);

procedure Button10Click(Sender: TObject);

procedure Button12Click(Sender: TObject);

procedure Button13Click(Sender: TObject);

procedure Button14Click(Sender: TObject);

procedure CheckListBox1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure Button15Click(Sender: TObject);

procedure Button16Click(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

private

{ Private declarations }

public

{ Public declarations }

end;

type

XYZ=record

x:real;

y:real;

Z:real;

end;

var

Form1: TForm1;

XYZ_D:XYZ;

X,Y,Z,A,B,C:real;

//start

Type_Tool:integer;

SM_X,SM_Y,SM_Z,POV_A,POV_B,SM_C:array[0..500] of real; //объявление массивов

Dkr,Rkr,Skr,Akr:array [1..11] of real; //для хранения вводимых параметров в сетке

Xkr,Ykr,Zkr,X1,Y1,Z1,dX,dY,dZ,XB1,YB1,ZB1,XB,YB,ZB:real;

{Ddet,}Rdet,Zst_B,Obr_Kon,FPL,Alf1,Alf2,Apodt,Dpodt,Wdet:real;

U_X,U_Y,U_Z1,U_Z2,UB_X,dRdet:array [1..11] of real;

N_Zub:integer;

Rvp,Lz,Lo,Lzt,Arp,Rp:real;

Zp_Kr:array [1..6,1..2] of real;

Np_Kr,Sb_Int:array [1..11] of integer;

FiC,Ftr,Teta,Ltr_P,Ltr_R,LC,X0,Y0,Z0:array[0..11] of real;

XC,YC,ZC,XT,YT,ZT,XD,YD,ZD,dA,dB,dC,V_D:real;

Xst,Yst,Zst,Ast,Bst,Cst:array [0..500] of real;

Xst_Old,Yst_Old,Zst_Old,Ast_Old,Bst_Old,Cst_Old:real;

N_Act,N_St,N_Fin,N_Last,Obr:integer;

FTime:real;

F,Feed:integer;

Nt,N_Pos:array [0..500] of integer; //заполнение массивов

Com:array [0..500] of string[20];

ff1:textfile;

FName,ABS_OTN:string;

Xtr,Ytr,Ztr,X0det,Y0det,Z0det:array [0..10] of real;

dXC1,dYC1,dZC1,dX_PR,dY_PR,dZ_PR,Atr,Btr:real;

Rpr:array[1..10,1..2] of real;

Num_Op,Nex,N_C,N_Op,Nop:integer;

OutMet:array [0..500] of integer;

dFiex,dYex, dZex:array [0..100] of real;

Rex,A0ex,A1ex,Yex,dRex,Hstr,Akan:real;

{D_Auto_Calc,}Ds,Hrk,Xrk:array [1..10] of real;

Gp,Gs:array [1..2,1..10] of real;

//N_Cycl:array [1..10,1..2] of integer;

//Amin,Amax,AStep:array [1..7] of integer;

Num_Check:integer;

Zel,Yel:real;

ddZ,ddY:real;

N_Ses:integer;

Beta,X_P1,Y_P1,X_P2,Y_P2,Ld1,Ld2:real;

XXtr,YYtr,ZZtr:real;

rad:real;

N_Kr:integer;

Nkr,N_Razb,N_Sech,N_Sech_X:array [1..11] of integer;

Z0_Kr,Ust_D,Ust_VD:real;

path:string;

W,Hv,Fit_Init:array [1..11] of real;

Xv,Yv,Zv,Xv1,Yv1,Zv1,XvT,YvT,ZvT,Y_X,Z_X:array [0..50,0..2,0..5,0..100] of real;

N_Tr:integer;

Cut_Kr:array [0..20] of integer;

N_Cut,Vozvr:array [0..500] of integer;

Xkr4,Ykr4:array [1..4,0..4,0..100] of real;

Name_Op:array [1..20] of string;

Viz_Vt,Viz_Dim,Auto_Calc:array [1..20] of integer;

A_Hrk:real;

dy_Ex,dz_Ex:array [0..100] of real;

Comp_Y,Comp_Z:array [0..100] of real;

x_Out,y_Out,z_Out:array [0..100] of real;

Move_Out:integer;

dfex:array [1..11] of real;

Cool:integer;

dotv_Cool,D_Cool,Fi_Cool,Sm_Kan,Fos_Kan,Frad_Kan,A_Cool:real;

Opt_Surf:array [0..3] of string;

N_Opt:array [1..11] of integer;

NC_Act:integer;

X_NC,Y_NC,Z_NC,A_NC,B_NC,C_NC,DX_NC,DY_NC,DZ_NC,DA_NC:array [1..10] of real;

N_Dop_Act:integer;

Adov:array [1..11] of real;

N_Feed:integer;

Napr:array [0..11] of integer;

S_Napr:array[0..11] of string;

Name_Napr:array [1..3] of string;

X_Arc,Y_Arc,Z_Arc: real;

XC1_0,YC1_0,ZC1_0,XC2_0,YC2_0,ZC2_0,XP_0,YP_0,ZP_0,XR_0,YR_0,ZR_0:real;

Nz_Act:array [1..20,1..20] of integer;

Nz_Fi:array [0..20] of real;

X_Dop,Y_Dop,Z_Dop,A_Dop,B_Dop,C_Dop:array [1..10] of real;

FX_Dop,FY_Dop,FZ_Dop,FA_Dop,FB_Dop,FC_Dop:array [1..10] of real;

X_Pr,Y_Pr,Z_Pr,A_Pr,B_Pr,C_Pr:array [1..10,1..3] of real;

FX_Pr,FY_Pr,FZ_Pr,FA_Pr,FB_Pr,FC_Pr:array [1..10,1..3] of real;

X_Otv,Y_Otv,Z_Otv,A_Otv,B_Otv,C_Otv:array [1..10] of real;

FX_Otv,FY_Otv,FZ_Otv,FA_Otv,FB_Otv,FC_Otv:array [1..10] of real;

X_Cst,Y_Cst,Z_Cst,A_Cst,B_Cst,C_Cst:array [1..10] of real;

X_Cfin,Y_Cfin,Z_Cfin,A_Cfin,B_Cfin,C_Cfin:array [1..10] of real;

X_Cex,Y_Cex,Z_Cex,A_Cex,B_Cex,C_Cex:array [1..10] of real;

FX_C,FY_C,FZ_C,FA_C,FB_C,FC_C:array [1..10] of real;

Num_C:array [1..10] of integer;

X_Vix,Y_Vix,Z_Vix,A_Vix,B_Vix,C_Vix:array [1..10] of real;

FX_Vix,FY_Vix,FZ_Vix,FA_Vix,FB_Vix,FC_Vix:array [1..10] of real;

FX_Kor,FY_Kor,FZ_Kor,FA_Kor,FB_Kor,FC_Kor:real;

FX_Ust,FY_Ust,FZ_Ust,FA_Ust,FB_Ust,FC_Ust:real;

PosTime:array [1..10] of real;

Num_Vix:array [1..10] of integer;

AutoCalc:boolean;

AHrk,Av,Ak,Ap,Sp:array [1..2,1..10] of real;

Avt,AHrkt:array [1..10] of real;

Xpx,Ypx:array [1..3,0..50] of real;

N_Proection,N_Profile,XSect:integer;

CrsAlfa:array [1..2] of real;

RminX,RminY:array [1..10] of real;

TwoFi:real;

FiRmin:array [1..2,1..10] of real;

CrsFiBeg,CrsFiEnd:array [1..10,1..2] of real;

CrsXbeg,CrsYbeg,CrsXend,CrsYend,CrsZend:array [1..10,1..2] of real;

x_Pol,y_Pol,z_Pol,R_Pol,Fit_Pol:array [1..10,1..2,0..300] of real;

N_Pol:integer;

NBeg,NEnd:array [1..10,1..2] of integer;

AsectK,RminS:array [1..10] of real;

NsectK,N_PolK:array [1..10] of integer;

N_Auto,Auto_Tang:array[1..10] of integer;

Lzat1,Lzat2,Rzat,Hzat:array [1..10] of real;

ExtdY:array [1..50,1..10] of real;

Xzat_c,Yzat_c:array [1..10,1..50] of real;

CrossSect,Ntr,Ntr1:integer;

Zcont,Ycont:array [0..50,1..2,0..3] of real;

LpS,LpR:real;

N_ZP_PL:integer;

HkZP,HfZP,SfZP,RfZP,FiZp:array [1..10] of real;

SLent,SnLent,ALent,APovL,BPovL,XPovL,YPovL,ZPovL:array [1..10] of real;

N_Sect:boolean;

Edit_Op:integer;

N_OpGr,N_Link:array [1..10] of integer;

X_ZP_PL,Y_ZP_PL,dY_ZP_PL,A_ZP_PL:array [1..10] of real;

Z_ZP_PL:array [1..2,1..10] of real;

Nop_ZP_PL:integer;

GlDv:array [1..6,1..10] of integer;

fiAmax:real;

procedure Init_Chk_Box; //описание процедур построцессора

procedure Init_St_Det_Kr;

procedure Init_Moving;

procedure Zatilok;

Procedure Init_Traect(i:integer);

procedure Traect(N_Act:integer);

procedure Memo_Out;

procedure W_Str(com:string);

function w_r(val:real;f1,f2:integer):string;

procedure G90;

procedure G91;

procedure G01;

procedure Profile;

procedure Load_Op_All;

procedure Load_Op;

procedure Fix_Det(V_D,UB_X,Ddet:real);

procedure Make_Krug(N_kr,m:integer);

procedure UpDate_ChkBox2;

procedure Make_Spind;

procedure Init_All;

implementation

uses Unit2,Unit3,Unit4,Unit5,Unit6,Unit10,Unit14, Unit8,Unit13,Unit12,

Unit7,Unit9,Unit15,Unit16,Unit17;

{$R *.dfm} //процедура реализации

var

Str_Rel:array [0..500] of string;

ff:text;

procedure Init_All;

var

s:string;

begin

path:=GetCurrentDir+'\';

N_Ses:=1;

Init_Form2;

Form2.Caption:='Операция N 1';

Init_St_Det_Kr;

Init_Zag;

Init_Poly;

Init_Chk_Box;

Init_Traect(1);

Traect(1);

//Profile;

Init_Moving;

//Moving_9484;

Load_Op;

N_St:=0; N_Fin:=N_Pos[N_Act]; N_Last:=0;

//Init_Data3('DAT\9484.txt');

Form3.Caption:='Начальные установки';

Fill_Str_Grid1_3;

Init_Data4;

Fill_Str_Grid1_4;

Init_BitMap;

Draw_All;

Init_Data5;

Init_Data12;

Init_BitMap12;

Fill_Str_Grid3_12(1);

Fill_Str_Grid1_5;

Init_Data7;

Fill_Str_Grid1_7;

Step:=1;

//str(Step:1:3,s);

Form8.Memo1.Text:=s;

Form8.Button17.Caption:='';

Nst_Act:=0;

Init_Zag;

Init_Data8;

Fill_Str_Grid1_8;

Fill_Str_Grid2_8;

Init_BitMap8;

//Nkr_Edit:=1;

Init_BitMap9;

Cooling;

Fill_Str_Grid1_13;

N_Buff:=1;

Put_Buff(N_Buff);

Form3.Visible:=true;

Write_Zag;

Init_Data14;

Init_Data_15;

Init_Data_16;

end;

procedure W_Str(com:string);

begin

Form1.Memo1.Lines.Add(com);

end;

function w_r(val:real;f1,f2:integer):string;

var

s:string;

begin

str(val:f1:f2,s);

w_r:=s;

end;

function w_i(val:integer;f1:integer):string;

var

s:string;

begin

str(val:f1,s);

w_i:=s;

end;

procedure Memo_Out;

var

s:string;

i,j:integer;

TotTime:real;

begin

Form1.Memo1.Clear;

Form1.Memo1.Visible:=false;

str(N_Pos[N_Act]:2,s);

W_Str('Кол-во позиций:0-'+s);

for i:=0 to N_Pos[N_Act] do

begin

W_Str('');

if i=0 then s:='';

if i>0 then s:='G01 '+Str_Rel[i];

W_Str('Поз.'+w_i(i,2)+':'+s);

W_Str(' Абс Отн');

W_Str('X='+w_r(Xst[i],9,3)+' '+w_r(SM_X[i],9,3));

W_Str('Y='+w_r(Yst[i],9,3)+' '+w_r(SM_Y[i],9,3));

W_Str('Z='+w_r(Zst[i],9,3)+' '+w_r(SM_Z[i],9,3));

W_Str('A='+w_r(Ast[i],9,3)+' '+w_r(POV_A[i],9,3));

W_Str('B='+w_r(Bst[i],9,3)+' '+w_r(POV_B[i],9,3));

W_Str('C='+w_r(Cst[i],9,3)+' '+w_r(SM_C[i],9,3));

end;

W_Str('**********************');

str(N_Act:1,s);

W_Str('Время оп.'+s+' :'+w_i(trunc(PosTime[N_Act]),1)+''''+

w_r(frac(PosTime[N_Act])*60,2,0)+'"');

TotTime:=0;

for j:=1 to N_op do

TotTime:=TotTime+PosTime[j];

W_Str('Время общее:'+w_r(TotTime,2,3));

Form1.Memo1.Visible:=true;

end;

procedure Move(Os:char;len:real;part_name:string); //создание структуры кадра

begin

writeln(ff1,'(position_pa :part_assembly :start ','"',part_name,'" ',

':select_done :translate :dir_len :',Os,' :len ',len:8:6,' :done ',

':pos_dynamic :dynamo-done)');

writeln(ff1,'(redraw_vp "vport1")');

end;

procedure Rotate(Os:char;angle:real;part_name:string);

begin

writeln(ff1,'(position_pa :part_assembly :start ','"',part_name,'" ',

':select_done :rotate :axis :',Os,' :rotation_angle ',angle:8:6,' :done ',

':pos_dynamic :dynamo-done)');

writeln(ff1,'(redraw_vp "vport1")');

end;

procedure XX(len:real);

begin

Move('x',len,'/CIP6/N_S');

end;

procedure YY(len:real);

begin

Move('y',len,'/CIP6/Krug');

end;

procedure ZZ(len:real);

begin

Move('z',len,'/CIP6/Krug');

end;

procedure AA(ang:real);

begin

writeln(ff1,'(current_wp "/CIP6/N_S/V_S/C_Sys/Det/w_A")');

Rotate('w',ang,'/CIP6/N_S/V_S/C_Sys/Det');

end;

procedure BB(ang:real);

begin

writeln(ff1,'(current_wp "/CIP6/N_S/V_S/w_B")');

Rotate('w',ang,'/CIP6/N_S/V_S');

end;

procedure CC(len:real);

begin

writeln(ff1,'(current_wp "/CIP6/N_S/V_S/w_C")');

Move('w',len,'/CIP6/N_S/V_S/C_Sys');

end;

procedure AddToFile(Fn:string;N_Pos:integer);

begin

AssignFile(ff1,Fn); //запись файла связи с 3D пакетом

Append(ff1);

Nt[N_Pos]:=F;

writeln(ff1,'(dotimes ( n ',Nt[N_Pos]:2,')');

if abs(SM_X[N_Pos])>=0.001 then

begin

XX(SM_X[N_Pos]/Nt[N_Pos]);

Xst[N_Pos]:=Xst[N_Pos-1]+SM_X[N_Pos];

end;

if abs(SM_Y[N_Pos])>=0.001 then

begin

YY(SM_Y[N_Pos]/Nt[N_Pos]);

Yst[N_Pos]:=Yst[N_Pos-1]+SM_Y[N_Pos];

end;

if abs(SM_Z[N_Pos])>=0.001 then

begin

ZZ(-SM_Z[N_Pos]/Nt[N_Pos]);

Zst[N_Pos]:=Zst[N_Pos-1]+SM_Z[N_Pos];

end;

if abs(POV_B[N_Pos])>=0.001 then

begin

BB(POV_B[N_Pos]/Nt[N_Pos]);

Bst[N_Pos]:=Bst[N_Pos-1]+POV_B[N_Pos];

end;

if abs(Pov_A[N_Pos])>=0.001 then

begin

AA(POV_A[N_Pos]/Nt[N_Pos]);

Ast[N_Pos]:=Ast[N_Pos-1]+POV_A[N_Pos];

end;

if abs(SM_C[N_Pos])>=0.001 then

begin

CC(SM_C[N_Pos]/Nt[N_Pos]);

Cst[N_Pos]:=Cst[N_Pos-1]+SM_C[N_Pos];

end;

writeln(ff1,')');

Flush(ff1);

CloseFile(ff1);

end;

procedure G90;

begin

ABS_OTN:='G90';

X:=Xst[N_Pos[N_Act]];

Y:=Yst[N_Pos[N_Act]];

Z:=Zst[N_Pos[N_Act]];

A:=Ast[N_Pos[N_Act]];

B:=Bst[N_Pos[N_Act]];

C:=Cst[N_Pos[N_Act]];

end;

procedure G91;

begin

ABS_OTN:='G91';

X:=0; Y:=0; Z:=0;

A:=0; B:=0; C:=0;

end;

procedure G01;

var

ss,ss1:string;

begin

inc(N_Pos[N_Act]);

PosTime[N_Act]:=PosTime[N_Act]+abs(FTime);

FTime:=0;

OutMet[N_Pos[N_Act]]:=Obr;

Obr:=0;

Str_Rel[N_Pos[N_Act]]:=ABS_OTN;

if pos('G91',ABS_OTN)>0 then

begin

SM_X[N_Pos[N_Act]]:=X;

SM_Y[N_Pos[N_Act]]:=Y;

SM_Z[N_Pos[N_Act]]:=Z;

POV_B[N_Pos[N_Act]]:=B;

POV_A[N_Pos[N_Act]]:=A;

SM_C[N_Pos[N_Act]]:=C;

end;

if pos('G90',ABS_OTN)>0 then

begin

SM_X[N_Pos[N_Act]]:=X-Xst[N_Pos[N_Act]-1];

SM_Y[N_Pos[N_Act]]:=Y-Yst[N_Pos[N_Act]-1];

SM_Z[N_Pos[N_Act]]:=Z-Zst[N_Pos[N_Act]-1];

POV_B[N_Pos[N_Act]]:=B-Bst[N_Pos[N_Act]-1];

POV_A[N_Pos[N_Act]]:=A-Ast[N_Pos[N_Act]-1];

SM_C[N_Pos[N_Act]]:=C-Cst[N_Pos[N_Act]-1];

end;

Xst[N_Pos[N_Act]]:=Xst[N_Pos[N_Act]-1];

Yst[N_Pos[N_Act]]:=Yst[N_Pos[N_Act]-1];

Zst[N_Pos[N_Act]]:=Zst[N_Pos[N_Act]-1];

Ast[N_Pos[N_Act]]:=Ast[N_Pos[N_Act]-1];

Bst[N_Pos[N_Act]]:=Bst[N_Pos[N_Act]-1];

Cst[N_Pos[N_Act]]:=Cst[N_Pos[N_Act]-1];

str(N_Pos[N_Act]:1,ss);

if NC_ACt=0 then

begin

str(N_Pos[N_Act]:1,ss1);

Form1.CheckListBox1.Items.Add(ss+':'+Com[N_Pos[N_Act]]);

if N_Pos[N_Act]>1 then

Form1.CheckListBox1.State[N_Pos[N_Act]-1]:=cbUnChecked;

Form1.CheckListBox1.State[N_Pos[N_Act]]:=cbChecked;

AddToFile(Path+'LSP\Hod.lsp',N_Pos[N_Act]);

end;

end;

procedure Profile;

var

RF:real;

ff:textfile;

X3,Y3,Z3,X31,Y31,Z31,X32,Y32,Z32,Mu_YZ,Mu_YZ1,Mu_YX,Mu_XZ:real;

Xin,Yin,Zin,Xex,Yex,Zex,Muin,Muex:real;

Xin1,Yin1,Zin1,Xex1,Yex1,Zex1,Muin1,Muex1:real;

Ang,Rs,Rd,Ksi,Ksi1,Xc,Yc,Zc1,Xc1,Yc1,F0,F1,Ficx:real;

N_Uch,N_Point,Np1,i,j,N_Half:integer;

dTeta,R_Limit1,R_Limit2,xL1,yL1,zL1,xL2,yL2,zL2,xL3,yL3,zL3,

fex,Alf1,Alf2,Alf3,L1,L2,L3,Step:real;

xL1f,yL1f,zL1f,xL2f,yL2f,zL2f,xL3f,yL3f,zL3f:real;

N_Break:array [1..2,0..4,0..100] of integer;

N_SpL:integer;

//LtrR,LtrP:extended;

fiA{,fiAmax},Vfi,fit_max,dX,dY,dZ:real;

Xv03,Yv03,Zv03:real;

K_Razb:real;

Fex_Min,Fex_Max:array [1..3] of real;

fit0,{fit_st,fit_fin,}dS_Min:real;

Empt:array [1..12] of integer;

a1_p,an_p,Sn_p,r_p,Ltr_Pfin:real;

NSect:integer;

procedure Sil(N_Tr:integer);

var

i:integer;

ff1:textfile;

fixX,fixY,fixZ:real;

fixX1,fixY1,fixZ1:real;

fixX2,fixY2,fixZ2:real;

procedure Vint(N_Tr,N_Half,N_Uch,j:integer);

begin

XvT[N_Tr,N_Half,N_Uch,j]:=Xv[N_Tr,N_Half,N_Uch,j];

YvT[N_Tr,N_Half,N_Uch,j]:=Yv[N_Tr,N_Half,N_Uch,j]*cos({FiA}0)+

Zv[N_Tr,N_Half,N_Uch,j]*sin({FiA}0);

ZvT[N_Tr,N_Half,N_Uch,j]:=-Yv[N_Tr,N_Half,N_Uch,j]*sin({FiA}0)+

Zv[N_Tr,N_Half,N_Uch,j]*cos({FiA}0);

fixX:=XvT[N_Tr,N_Half,N_Uch,j];

fixY:=YvT[N_Tr,N_Half,N_Uch,j];

fixZ:=ZvT[N_Tr,N_Half,N_Uch,j];

writeln(ff1,XvT[N_Tr,N_Half,N_Uch,j]:8:5,',',

YvT[N_Tr,N_Half,N_Uch,j]:1:5,',',

ZvT[N_Tr,N_Half,N_Uch,j]:1:5);

end;

procedure Create_Bspline(N_Tr,N_Sp,N_Uch,N_Half:integer);

var

j:integer;

x3,y3,z3:real;

begin

inc(N_Spl);

case N_Sp of

begin

writeln(ff1,'(create_curve_on_surface :wire_part "/Sil_',N_Tr:1,'.',N_Spl:1,'" ',

':start :selected_part "/a1/Krug" :face_3d :by_feature ',

':full_name :start_name "/a1/Krug" :feature "feat1" ',

':end_name :select_done ');

for j:=0 to N_Razb[N_Act] do

if (N_Break[N_Half,N_Uch,j]=0) then

begin

Empt[N_Sp]:=1;

Vint(N_Tr,N_Half,N_Uch,j);

if (N_Spl=4) and (j=N_Razb[N_Act]) then

Vint(N_Tr,1,1,j);

if (N_Spl=6) and (j=N_Razb[N_Act]) then

Vint(N_Tr,1,3,j);

end;

writeln(ff1,')');

writeln(ff1,'(remove_from_vp_drawlist "vport1" :with-wp ',

' "/Sil_',N_Tr:1,'.',N_Spl:1,'")');

end;

begin

{ Vint(N_Tr,1,1,N_Razb[N_Act]);

fixX1:=fixX; fixY1:=fixY; fixZ1:=fixZ;

Vint(N_Tr,1,3,N_Razb[N_Act]);

fixX2:=fixX; fixY2:=fixY; fixZ2:=fixZ;

x3:=(fixX1+fixX2)/2;

z3:=(fixZ1+fixZ2)/2;

y3:=(fixY1+fixY2)/2+Ddet;

writeln(ff1,'(create_bspline :wire_part "/Sil_',N_Tr:1,'.',N_Spl:1,'" ',

':input_mode :control ');

Vint(N_Tr,1,1,N_Razb[N_Act]);

writeln(ff1,x3:8:8,',',y3:1:8,',',z3:1:8);

Vint(N_Tr,1,3,N_Razb[N_Act]);}

writeln(ff1,'(create_bspline :wire_part "/Sil_',N_Tr:1,'.',N_Spl:1,'" ',

':start_condition :edge :cv_edge ',

':start :selected_part "/Sil_',N_Tr:1,'.',1:1,'" :edge_3d :by_vertex_3d');

Empt[N_Sp]:=1;

Vint(N_Tr,1,1,N_Razb[N_Act]);

writeln(ff1,':select_done ');

Vint(N_Tr,1,1,N_Razb[N_Act]);

writeln(ff1,':tangent 0.2 :accept ',

':end_condition :edge :cv_edge ',

':start :selected_part "/Sil_',N_Tr:1,'.',3:1,'" :edge_3d :by_vertex_3d');

Vint(N_Tr,1,3,N_Razb[N_Act]);

writeln(ff1,':select_done ');

Vint(N_Tr,1,3,N_Razb[N_Act]);

writeln(ff1,':tangent 0.2 :accept ');

writeln(ff1,')');

writeln(ff1,'(remove_from_vp_drawlist "vport1" :with-wp ',

' "/Sil_',N_Tr:1,'.',N_Spl:1,'")');

end;

begin

writeln(ff1,'(create_bspline :wire_part "/Sil_',N_Tr:1,'.',N_Spl:1,'" ',

':start_condition :edge :cv_edge ',

':start :selected_part "/Sil_',N_Tr:1,'.',5:1,'" :edge_3d :by_vertex_3d ');

Empt[N_Sp]:=1;

Vint(N_Tr,2,1,N_Razb[N_Act]);

fixX1:=fixX; fixY1:=fixY; fixZ1:=fixZ;

writeln(ff1,':select_done ');

Vint(N_Tr,2,1,N_Razb[N_Act]);

writeln(ff1,':accept ',

':end_condition :edge :cv_edge ',

':start :selected_part "/Sil_',N_Tr:1,'.',7:1,'" :edge_3d :by_vertex_3d ');

Vint(N_Tr,2,3,N_Razb[N_Act]);

fixX2:=fixX; fixY2:=fixY; fixZ2:=fixZ;

writeln(ff1,':select_done ');

Vint(N_Tr,2,3,N_Razb[N_Act]);

writeln(ff1,':accept )');

writeln(ff1,'(modify_bspline :curve :start :selected_part "/Sil_',N_Tr:1,'.8" ',

':all_3d :select_done ',

':insert_point ',fixX1:8:5,',',

fixY1:1:5,',',

fixZ1:1:5,' ',

(fixX1+fixX2)/2:8:5,',',

(fixY1+fixY2)/2:1:5,',',

(fixZ1+fixZ2)/2:1:5,' ');

writeln(ff1,')');

end;

end;

end;

begin

for i:=1 to 10 do

Empt[i]:=0;

AssignFile(ff1,Path+'LSP\Sil.lsp');

Append(ff1);

N_Spl:=0;

writeln(ff1,'(position_pa :part_assembly :start "/a1/Krug" :select_done ',

':translate :x ',dX:8:5,')');

writeln(ff1,'(position_pa :part_assembly :start "/a1/Krug" :select_done ',

':translate :y ',dY:8:5,')');

writeln(ff1,'(position_pa :part_assembly :start "/a1/Krug" :select_done ',

':translate :z ',dZ:8:5,')');

{ if N_Tr=N_Sech[N_Act] then

writeln(ff1,'(position_pa :part_assembly :start "/a1/Krug.1" :select_done ',

':rotate :axis :x :rotation_angle ',-fiA/pi*180:8:5,' :done :translate :x ',

-dX:8:5,')');

}

{ if N_Tr=N_Sech[N_Act] then

begin

writeln(ff1,'(create_multiple_pa :copy :source "/a1/surf1" :owner "/" )');

writeln(ff1,'(create_multiple_pa :copy :source "/a1/surf2" :owner "/" )');

writeln(ff1,'(create_multiple_pa :copy :source "/a1/surf3" :owner "/" )');

end; }

Create_Bspline(N_Tr,1,1,1);

Create_Bspline(N_Tr,2,2,1);

Create_Bspline(N_Tr,3,3,1);

Create_Bspline(N_Tr,4,1,3);

for i:=1 to N_Spl do

writeln(ff1,'(position_pa :part_assembly :start "/Sil_',N_Tr:1,'.',i:1,'" ',

':select_done ',

':rotate :axis :x :rotation_angle ',(fiAmax-fiA)/pi*180:8:5,')');

if N_Tr<N_Sech[N_Act] then

begin

// writeln(ff1,'(position_pa :part_assembly :start "/a1/Krug" :select_done ',

// ':rotate :axis :x :rotation_angle ',fiA/pi*180:8:5,')');

writeln(ff1,'(position_pa :part_assembly :start "/a1/Krug" :select_done ',

':translate :x ',-dX:8:5,')');

writeln(ff1,'(position_pa :part_assembly :start "/a1/Krug" :select_done ',

':translate :y ',-dY:8:5,')');

writeln(ff1,'(position_pa :part_assembly :start "/a1/Krug" :select_done ',

':translate :z ',-dZ:8:5,')');

end;

//W_Str1('N_spl='+w_i(N_Spl,1));

Flush(ff1);

CloseFile(ff1);

end;

Приложение Б

Параметры проекта Delphi:

-$A8

-$B-

-$C+

-$D+

-$E-

-$F-

-$G+

-$H+

-$I+

-$J-

-$K-

-$L+

-$M-

-$N+

-$O+

-$P+

-$Q-

-$R-

-$S-

-$T-

-$U-

-$V+

-$W-

-$X+

-$YD

-$Z1

-cg

-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;

-H+

-W+

-M

-$M16384,1048576

-K$00400000

-LE"c:\program files\borland\delphi7\Projects\Bpl"

-LN"c:\program files\borland\delphi7\Projects\Bpl"

-w-UNSAFE_TYPE

-w-UNSAFE_CODE

-w-UNSAFE_CAST

[FileVersion]

Version=7.0 //версия файла

[Compiler]

A=8 //начальные параметры

B=0

C=1

D=1

E=0

F=0

G=1

H=1

I=1

J=0

K=0

L=1

M=0

N=1

O=1

P=1

Q=1

R=1

S=0

T=0

U=0

V=1

W=1

X=1

Y=1

Z=1

ShowHints=1

ShowWarnings=1

UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;

NamespacePrefix=

SymbolDeprecated=1

SymbolLibrary=1

SymbolPlatform=1

UnitLibrary=1

UnitPlatform=1

UnitDeprecated=1

HResultCompat=1

HidingMember=1

HiddenVirtual=1

Garbage=1

BoundsError=1

ZeroNilCompat=1

StringConstTruncated=1

ForLoopVarVarPar=1

TypedConstVarPar=1

AsgToTypedConst=1

CaseLabelRange=1

ForVariable=1

ConstructingAbstract=1

ComparisonFalse=1

ComparisonTrue=1

ComparingSignedUnsigned=1

CombiningSignedUnsigned=1

UnsupportedConstruct=1

FileOpen=1

FileOpenUnitSrc=1

BadGlobalSymbol=1

DuplicateConstructorDestructor=1

InvalidDirective=1

PackageNoLink=1

PackageThreadVar=1

ImplicitImport=1

HPPEMITIgnored=1

NoRetVal=1

UseBeforeDef=1

ForLoopVarUndef=1

UnitNameMismatch=1

NoCFGFileFound=1

MessageDirective=1

ImplicitVariants=1

UnicodeToLocale=1

LocaleToUnicode=1

ImagebaseMultiple=1

SuspiciousTypecast=1

PrivatePropAccessor=1

UnsafeType=1

UnsafeCode=1

UnsafeCast=1

[Linker]

MapFile=0

OutputObjs=0

ConsoleApp=1

DebugInfo=0

RemoteSymbols=0

MinStackSize=16384

MaxStackSize=1048576

ImageBase=4194304

ExeDescription=

[Directories] //параметры проекта

OutputDir=

UnitOutputDir=

PackageDLLOutputDir=

PackageDCPOutputDir=

SearchPath=

Packages=vcl;rtl;dbrtl;adortl;vcldb;vclx;bdertl;vcldbx;ibxpress;dsnap;cds;bdecds;qrpt;teeui;teedb;tee;dss;teeqr;visualclx;visualdbclx;dsnapcrba;dsnapcon;VclSmp;vclshlctrls;inetdb;inet;nmfast;vclie;dbexpress;dbxcds;indy;dclOffice2k

Conditionals=

DebugSourceDirs=

UsePackages=0

[Parameters]

RunParams=

HostApplication=

Launcher=

UseLauncher=0

DebugCWD=

[Language]

ActiveLang=

ProjectLang=

RootDir=

[Version Info]

IncludeVerInfo=0

AutoIncBuild=0

MajorVer=1

MinorVer=0

Release=0

Build=0

Debug=0

PreRelease=0

Special=0

Private=0

DLL=0

Locale=1049

CodePage=1251

[Version Info Keys] //информация о проекте

CompanyName=

FileDescription=

FileVersion=1.0.0.0

InternalName=

LegalCopyright=

LegalTrademarks=

OriginalFilename=

ProductName=

ProductVersion=1.0.0.0

Comments=

[HistoryLists\hlUnitAliases]

Count=1

Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;

Приложение B

Текст настроечного файла программного модуля:

3

2

5.260 5.000 105.000 1.000 1.250

0.700 0.900 7.410 0.350 120.000

10.000 25.000 0.900 30.000 0.200

85.000 1.300 50.000 71.000 0.060 3

3

99.86600 9.70600 90.00000

0.45000 0.20000 50.78000

-58.71300 53.29000 -196.78000 -180.36000

125.06600 4.05600 90.00000

1.95000 1.95000 50.73000

-71.26300 65.89000 -147.21000 -136.44000

100.16600 9.97300 90.00000

0.10000 1.10000 50.69000

-58.77300 53.44000 -105.12700 -88.44000

130.00000 88.00000 6.71400

6

Канавка

0.000 0.00000 40.00000 53.50000 1 1 0.00000 0.71966 0.85300 -0.2000 99999999.000 0 2.000 2 0.000 0 1 1 1 1 20 0.0100 1

0.000 0.000 0.000 0.000 0.000 0.000

Затылок

0.000 -0.01719 40.00000 47.00000 1 1 0.00000 5.14988 -4.85300 -1.0000 999999.000 0 1.000 2 0.000 0 1 1 1 1 20 0.0100 1

0.000 0.000 0.000 421.303 0.000 0.000

1 задний угол

58.525 0.00000 80.00000 80.00000 3 2 0.25000 -30.00000 0.00000 0.5000 999999.000 0 2.000 2 0.000 0 1 1 1 1 20 0.0100 1

0.000 0.000 0.000 -70.110 0.000 0.000

2 задний угол

51.710 0.00000 80.00000 80.00000 3 2 -0.65000 -30.00000 -1.26552 0.5000 999999.000 0 2.000 2 0.000 0 0 1 1 1 20 0.0100 1

0.000 0.000 0.000 -46.533 0.000 0.000

Подточка

30.000 40.00000 25.00000 24.00000 2 1 1.00000 -0.80000 -0.24500 -9.0000 999999.000 0 2.000 2 0.000 0 0 1 1 0 20 0.0100 1

0.000 0.000 0.000 -45.000 0.000 0.000

Канавка под СОЖ

14.767 79.65473 25.00000 20.00000 3 2 -3.21700 2.11332 -1.94988 0.5000 999999.000 0 2.000 2 0.000 0 0 0 0 0 20 0.0100 1

0.000 0.000 0.000 0.000 0.000 0.000

4

0.000 0.000 90.000 0.000

10.520 0.000 -0.016 0.000

10.477 77.000 45.246 0.000

12.000 77.755 0.000 0.000

12.000 130.000 0.000 0.000

39.000 19.000 59.000 40.000

1 1.900 6.000 45.000 1.000 15.000 45.000

1

1

1

1

0

0

0

0

0

0

0

0

0.000

180.000

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0.000 0.000 0.000 -15.000 0.000 0.000

0.000 0.000 0.000 -7.500 0.000 0.000

0 0 0 20 0 0

2

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

0

0.000 0.000 0.000 421.303 0.000 0.000

0 0 0 20 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0.000 0.000 0.000 -50.512 0.000 0.000

0.000 -0.240 0.000 -25.256 0.000 0.000

0 20 0 20 0 0

7

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

0

0.000 0.000 0.000 -70.110 0.000 0.000

0 0 0 20 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0.000 0.000 0.000 0.000 0.000 0.000

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

1

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

0

0.000 0.000 0.000 -46.533 0.000 0.000

0 0 0 20 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0.000 0.000 0.000 0.000 0.000 0.000

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

1

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

0

0.000 0.000 0.000 -45.000 0.000 0.000

0 0 0 20 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0.000 0.000 0.000 0.000 0.000 0.000

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

1

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

0

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0.000 0.000 0.000 0.000 0.000 0.000

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

1

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

0

0.000 0.000 0.000 0.000 0.000 0.000

0 20 0 0 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0 20 0 0 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0 20 0 0 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0 20 0 0 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0 20 0 0 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0 20 0 0 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

0.000 0.000 0.000 0.000 0.000 0.000

0 0 0 0 0 0

1 1 1 1

15.00000 2

0.500 2.500 2.475 2.550 30.000

0.000 0.00000

0.100 0.100 7.500 0.500

1 2 2 1

50.51161 7

0.500 2.500 2.475 2.550 30.000

0.000 0.00000

0.700 0.900 7.419 0.350

1 3 3 1

0.00000 1

0.000 0.000 5.260 0.000 30.000

0.000 10.00000

0.100 0.100 7.500 0.500

1 3 3 1

0.00000 1

0.500 2.500 2.475 2.550 30.000

4.000 25.00000

0.100 0.100 7.500 0.500

0 0 5 1

0.00000 1

0.500 2.500 2.475 2.550 30.000

0.000 0.00000

0.100 0.100 7.500 0.500

0 0 6 1

0.00000 1

0.500 2.500 2.475 2.550 30.000

0.000 0.00000

0.100 0.100 7.500 0.500

Приложение Г

Текст файлов связи с пакетом 3D моделирования:

(create_workplane :new)

(bspline_int

0.00000,-49.48300 :tangent -90.00000 //точки сплайна

0.00139,-49.51831 :tangent -85.50000

0.00554,-49.55340 :tangent -81.00000

0.01243,-49.58805 :tangent -76.50000

0.02202,-49.62206 :tangent -72.00000

0.03425,-49.65521 :tangent -67.50000

0.04905,-49.68730 :tangent -63.00000

0.06631,-49.71812 :tangent -58.50000

0.08594,-49.74750 :tangent -54.00000

0.10782,-49.77525 :tangent -49.50000

0.13180,-49.80120 :tangent -45.00000

0.15775,-49.82518 :tangent -40.50000

0.18550,-49.84706 :tangent -36.00000

0.21488,-49.86669 :tangent -31.50000

0.24570,-49.88395 :tangent -27.00000

0.27779,-49.89875 :tangent -22.50000

0.31094,-49.91098 :tangent -18.00000

0.34495,-49.92057 :tangent -13.50000

0.37960,-49.92746 :tangent -9.00000

0.41469,-49.93161 :tangent -4.50000

0.45000,-49.93300 :tangent 0.00000

0.90280,-49.93300 :tangent 0.00000

1.35560,-49.93300 :tangent 0.00000

1.80840,-49.93300 :tangent 0.00000

2.26120,-49.93300 :tangent 0.00000

2.71400,-49.93300 :tangent 0.00000

3.16680,-49.93300 :tangent 0.00000

3.61960,-49.93300 :tangent 0.00000

4.07240,-49.93300 :tangent 0.00000

4.52520,-49.93300 :tangent 0.00000

4.97800,-49.93300 :tangent 0.00000

5.43080,-49.93300 :tangent 0.00000

5.88360,-49.93300 :tangent 0.00000

6.33640,-49.93300 :tangent 0.00000

6.78920,-49.93300 :tangent 0.00000

7.24200,-49.93300 :tangent 0.00000

7.69480,-49.93300 :tangent 0.00000

8.14760,-49.93300 :tangent 0.00000

8.60040,-49.93300 :tangent 0.00000

9.05320,-49.93300 :tangent 0.00000

9.50600,-49.93300 :tangent 0.00000

9.52169,-49.93238 :tangent 4.50000

9.53729,-49.93054 :tangent 9.00000

9.55269,-49.92747 :tangent 13.50000

9.56780,-49.92321 :tangent 18.00000

9.58254,-49.91778 :tangent 22.50000

9.59680,-49.91120 :tangent 27.00000

9.61050,-49.90353 :tangent 31.50000

9.62356,-49.89480 :tangent 36.00000

9.63589,-49.88508 :tangent 40.50000

9.64742,-49.87442 :tangent 45.00000

9.65808,-49.86289 :tangent 49.50000

9.66780,-49.85056 :tangent 54.00000

9.67653,-49.83750 :tangent 58.50000

9.68420,-49.82380 :tangent 63.00000

9.69078,-49.80954 :tangent 67.50000

9.69621,-49.79480 :tangent 72.00000

9.70047,-49.77969 :tangent 76.50000

9.70354,-49.76429 :tangent 81.00000

9.70538,-49.74869 :tangent 85.50000

9.70600,-49.73300 :tangent 90.00000

)

(polygon 0.00000,-49.48300 0.00000,0.00000 9.70600,0.00000 9.70600,-49.73300)

(rotate_2d :select :start :all_2d :select_done :angle -90.0)

( turn :sel_part "/Krug" :keep_wp :yes :keep_profile :no :axis :v :rotation_angle 360.0)

(define_feature :selection :start :selected_part "/Krug" :spline_sf :all_3d :select_done)

(create_assembly)

(change_pa_owner :new_owner "/a1" :parts_assemblies :start "/Krug" :select_done)

(position_pa :part_assembly :start "/a1" :select_done :rotate :axis :x :rotation_angle -90.0 :done :translate :y 50.65266000 :rotate :axis :y :rotation_angle -0.00000000)

(position_pa :part_assembly :start "/a1" :select_done :translate :x 40.00000000)

(position_pa :part_assembly :start "/a1" :select_done :translate :z 0.85300000)

(position_pa :part_assembly "/a1/Krug" :rotate :axis :two_pta 40.00000000,0.71966000,0.85300000 40.00000000,50.65266000,0.85300000 :rotation_angle -0.20000000)

(create_multiple_pa :copy :source "/a1/Krug")

(remove_from_vp_drawlist "vport1" :with-wp "/a1/Krug" )

(remove_from_vp_drawlist "vport1" :with-wp "/a1/Krug.1" )

( delete_3d "/w1")

Приложение Д

Текст управляющей программы ЧПУ:

%_N_CIP6\Emul\Bdd\9013_MPF

;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD

DEF INT OP1,OP2,OP3,OP4,OP5,OP6

OP1=1

OP2=1

OP3=1

OP4=1

OP5=1

OP6=1

IF OP1==1

Op_1

ENDIF

IF OP2==1

Op_2

ENDIF

IF OP3==1

Op_3

ENDIF

IF OP4==1

Op_4

ENDIF

IF OP5==1

Op_5

ENDIF

IF OP6==1

Op_6

ENDIF

M10 M19

M02

%_N_NACH_UST_SPF

;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD

G01 G90 Y176.080 F5000 G09

G01 G90 A=0 F5000 G09

G01 G90 B=0 F5000 G09

G01 G90 Z=0 F5000 G09

G01 G90 X-496.007 F5000 G09

G01 G90 C=0 F5000 G09

M17

%_N_Op_1_SPF

;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD

;======= Канавка =======

EXTERN GLAV_DVIG_Op1(INT,REAL)

EXTERN OTVOD_Op1(INT)

EXTERN PRIPUSK_Op1(INT,INT)

EXTERN CYCLOBR_Op1(INT)

EXTERN VIX_Op1

DEF REAL X_KOR,Z_KOR,B_KOR,A_KOR,Y_KOR,C_KOR

DEF REAL NZ_FI[3],FPR[4]

DEF INT NZ_ACT[3]

DEF INT I_1,I_2

R306=0

MSG(" ")

NACH_UST

Коррекция:

X_KOR=0;

Z_KOR=0;

B_KOR=0;

A_KOR=0;

Y_KOR=0;

C_KOR=0;

Подвод:

DISPOUT_Op1

G01 G91 X= 405.225+X_KOR G09 F=5000

DISPOUT_Op1

G01 G91 Z=-193.959+Z_KOR G09 F=5000

DISPOUT_Op1

G01 G91 B= 0.200+B_KOR G09 F=5000

DISPOUT_Op1

G01 G91 Y=-125.427+Y_KOR G09 F=5000

DISPOUT_Op1

G01 G91 A= -0.000+A_KOR G09 F=5000

DISPOUT_Op1

G01 G91 C= 0.000+C_KOR G09 F=5000

Перемещения гл. движения:

R298= 93.499;X

R299= 0.000;Y

R300= -0.326;Z

R301= 0.000;A

; ПОЛОЖЕНИЕ ЗУБЬЕВ

; У Г О Л Акт.зуб

NZ_FI[1]= 0.000 NZ_ACT[1]=1

NZ_FI[2]= 180.000 NZ_ACT[2]=1

; П Р И П У С К И

; 1проход Подача 2проход Подача 3проход Подача

R213=0.000 R231= 20 R219=0.000 R237= 0 R225=0.000 R243= 0 ;Y

FPR[1]=R231

FPR[2]=R237

FPR[3]=R243

; ЦИКЛИЧЕСКАЯ ОБРАБОТКА

; СТАРТ Экстрем. ФИНИШ Подача

R264= 0.000 R270= -7.500 R276= -15.000 R282= 20 ;A

R260=2;Кол-во циклов обработки

; О Б Р А Б О Т К А

R306=0

FOR I_1=1 TO 3

R307=0

IF FPR[I_1]>0

PRIPUSK_Op1(I_1,1)

FOR I_2=1 TO 2

DISPOUT_Op1

G01 G91 A=NZ_FI[I_2] F=5000

IF NZ_ACT[I_2]==1

R308=I_2

CYCLOBR_Op1(R260,FPR[I_1])

ENDIF

ENDFOR

DISPOUT_Op1

G01 G91 A=360-NZ_FI[2] F=5000

PRIPUSK_Op1(I_1,-1)

ENDIF

ENDFOR

M17

%_N_GLAV_DVIG_Op1_SPF

;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD

PROC GLAV_DVIG_Op1(INT NAPR,REAL FGLDV)

DISPOUT_OP1

G01 G91 X=NAPR*R298 Z=NAPR*R300 F=FGLDV

M17

%_N_PRIPUSK_Op1_SPF

;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD

PROC PRIPUSK_Op1(INT NUM_PR,INT NAPR_PR, REAL FPR)

IF (NUM_PR==1) AND (FPR>0)

R307=NUM_PR

DISPOUT_Op1

G01 G91 Y=NAPR_PR*R213 F=200

ENDIF

IF (NUM_PR==2) AND (FPR>0)

R307=NUM_PR

DISPOUT_Op1

G01 G91 Y=NAPR_PR*R219 F=200

ENDIF

IF (NUM_PR==3) AND (FPR>0)

R307=NUM_PR

DISPOUT_Op1

G01 G91 Y=NAPR_PR*R225 F=200

ENDIF

M17

%_N_OTVOD_Op1_SPF

;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD

PROC OTVOD_Op1(INT NAPR_OTV)

M17

%_N_CYCLOBR_Op1_SPF

;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD

PROC CYCLOBR_Op1(INT N_CYCL,REAL FPR)

EXTERN GLAV_DVIG_Op1(INT,REAL)

EXTERN OTVOD_Op1(INT)

DEF INT I_1,I_2

DEF REAL STEP1,STEP2

FOR I_1=1 TO N_CYCL

R309=I_1

IF R282>0

IF N_CYCL==2

G01 G91 A=(I_1-1)*(R276-R264)

ENDIF

IF N_CYCL>2

STEP1=2*(R270-R264)/(N_CYCL-1)

STEP2=2*(R276-R270)/(N_CYCL-1)

I_2=ROUND((N_CYCL-1)/2)

IF I_1<=I_2

IF I_1>1

G01 G91 A=STEP1

ENDIF

ENDIF

IF I_1>I_2

G01 G91 A=STEP2

ENDIF

ENDIF

ENDIF

GLAV_DVIG_Op1(1,FPR)

OTVOD_Op1(1)

GLAV_DVIG_Op1(-1,500)

OTVOD_Op1(-1)

ENDFOR

IF R282>0

DISPOUT_OP1

G01 G91 A=-(R276-R264) F=R282

ENDIF

M17

%_N_DISPOUT_Op1_SPF

;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD

R306=R306+1

MSG (" Поз. N " <<R306<< " Прип.N " <<R307<< " Зуб.N " <<R308<< "Цикл.N " <<R309)

M17

%_N_Op_2_SPF

;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD

;======= Затылок =======

EXTERN GLAV_DVIG_Op2(INT,REAL)

EXTERN OTVOD_Op2(INT)

EXTERN PRIPUSK_Op2(INT,INT)

EXTERN CYCLOBR_Op2(INT)

EXTERN VIX_Op2

DEF REAL X_KOR,Z_KOR,B_KOR,A_KOR,Y_KOR,C_KOR

DEF REAL NZ_FI[3],FPR[4]

DEF INT NZ_ACT[3]

DEF INT I_1,I_2

R306=0

MSG(" ")

NACH_UST

Коррекция:

X_KOR=0;

Z_KOR=0;

B_KOR=0;

A_KOR=0;

Y_KOR=0;

C_KOR=0;

Подвод:

DISPOUT_Op2

G01 G91 X= 405.341+X_KOR G09 F=5000

DISPOUT_Op2

G01 G91 Z=-186.986+Z_KOR G09 F=5000

DISPOUT_Op2

G01 G91 B= 1.000+B_KOR G09 F=5000

DISPOUT_Op2

G01 G91 Y=-120.985+Y_KOR G09 F=5000

DISPOUT_Op2

G01 G91 A= 0.000+A_KOR G09 F=5000

DISPOUT_Op2

G01 G91 C= 0.000+C_KOR G09 F=5000

Перемещения гл. движения:

R298= 86.987;X

R299= -0.026;Y

R300= -1.518;Z

R301= 0.000;A

; ПОЛОЖЕНИЕ ЗУБЬЕВ

; У Г О Л Акт.зуб

NZ_FI[1]= 0.000 NZ_ACT[1]=1

NZ_FI[2]= 180.000 NZ_ACT[2]=1

; ДОПОЛНИТЕЛЬНЫЕ СМЕЩЕНИЯ

; Смещение Подача

R203= 421.303 R209= 20 ;A

; П Р И П У С К И

; 1проход Подача 2проход Подача 3проход Подача

R213=0.000 R231= 20 R219=0.000 R237= 0 R225=0.000 R243= 0 ;Y

FPR[1]=R231

FPR[2]=R237

FPR[3]=R243

; ЦИКЛИЧЕСКАЯ ОБРАБОТКА

; СТАРТ Экстрем. ФИНИШ Подача

R262= 0.000 R268= -0.240 R274= 0.000 R280= 20 ;Y

R264= 0.000 R270= -25.256 R276= -50.512 R282= 20 ;A

R260=7;Кол-во циклов обработки

; О Б Р А Б О Т К А

R306=0

DOPSM_Op2

FOR I_1=1 TO 3

R307=0

IF FPR[I_1]>0

PRIPUSK_Op2(I_1,1)

FOR I_2=1 TO 2

DISPOUT_Op2

G01 G91 A=NZ_FI[I_2] F=5000

IF NZ_ACT[I_2]==1

R308=I_2

CYCLOBR_Op2(R260,FPR[I_1])

ENDIF

ENDFOR

DISPOUT_Op2

G01 G91 A=360-NZ_FI[2] F=5000

PRIPUSK_Op2(I_1,-1)

ENDIF

ENDFOR

M17

%_N_GLAV_DVIG_Op2_SPF

;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD

PROC GLAV_DVIG_Op2(INT NAPR,REAL FGLDV)

DISPOUT_OP2

G01 G91 X=NAPR*R298 Y=NAPR*R299 Z=NAPR*R300 F=FGLDV

M17

%_N_DOPSM_Op2_SPF

;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD

PROC DOPSM_Op2

IF R209>0

DISPOUT_Op2

G01 G91 A=R203 F=R209

ENDIF

M17

%_N_PRIPUSK_Op2_SPF

;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD

PROC PRIPUSK_Op2(INT NUM_PR,INT NAPR_PR, REAL FPR)

IF (NUM_PR==1) AND (FPR>0)

R307=NUM_PR

DISPOUT_Op2

G01 G91 Y=NAPR_PR*R213 F=200

ENDIF

IF (NUM_PR==2) AND (FPR>0)

R307=NUM_PR

DISPOUT_Op2

G01 G91 Y=NAPR_PR*R219 F=200

ENDIF

IF (NUM_PR==3) AND (FPR>0)

R307=NUM_PR

DISPOUT_Op2

G01 G91 Y=NAPR_PR*R225 F=200

ENDIF

M17

%_N_OTVOD_Op2_SPF

;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD

PROC OTVOD_Op2(INT NAPR_OTV)

M17

%_N_CYCLOBR_Op2_SPF

;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD

PROC CYCLOBR_Op2(INT N_CYCL,REAL FPR)

EXTERN GLAV_DVIG_Op2(INT,REAL)

EXTERN OTVOD_Op2(INT)

DEF INT I_1,I_2

DEF REAL STEP1,STEP2

FOR I_1=1 TO N_CYCL

R309=I_1

IF R280>0

IF N_CYCL==2

G01 G91 Y=(I_1-1)*(R274-R262)

ENDIF

IF N_CYCL>2

STEP1=2*(R268-R262)/(N_CYCL-1)

STEP2=2*(R274-R268)/(N_CYCL-1)

I_2=ROUND((N_CYCL-1)/2)

IF I_1<=I_2

IF I_1>1

G01 G91 Y=STEP1

ENDIF

ENDIF

IF I_1>I_2

G01 G91 Y=STEP2

ENDIF

ENDIF

ENDIF

IF R282>0

IF N_CYCL==2

G01 G91 A=(I_1-1)*(R276-R264)

ENDIF

IF N_CYCL>2

STEP1=2*(R270-R264)/(N_CYCL-1)

STEP2=2*(R276-R270)/(N_CYCL-1)

I_2=ROUND((N_CYCL-1)/2)

IF I_1<=I_2

IF I_1>1

G01 G91 A=STEP1

ENDIF

ENDIF

IF I_1>I_2

G01 G91 A=STEP2

ENDIF

ENDIF

ENDIF

GLAV_DVIG_Op2(1,FPR)

OTVOD_Op2(1)

GLAV_DVIG_Op2(-1,500)

OTVOD_Op2(-1)

ENDFOR

IF R280>0

DISPOUT_OP2

G01 G91 Y=-(R274-R262) F=R280

ENDIF

IF R282>0

DISPOUT_OP2

G01 G91 A=-(R276-R264) F=R282

ENDIF

M17

%_N_DISPOUT_Op2_SPF

;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD

R306=R306+1

MSG (" Поз. N " <<R306<< " Прип.N " <<R307<< " Зуб.N " <<R308<< "Цикл.N " <<R309)

M17

Страницы: 1, 2, 3, 4


© 2010 Рефераты