Технологическая реализация системы подготовки обработки детали станка с числовым программным управлением — страница 5
Обновлено
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
