125556 (593128), страница 12
Текст из файла (страница 12)
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 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-
Приложение Б
Характеристики
Список файлов ВКР