Компьютерное моделирование и анализ кинематики плоских рычажных механизмов, страница 11

st1,st2,st3,st4                    : string;

Procedure Postpara(x,y: integer; fi: real);

Var

z1,z2,z3,z4,z5,z6        : integer; w1,w2,w3,w4,w5,w6 : integer;

sfi,cfi                         : real;

begin

sfi := sin(fi); cfi := cos(fi);

z1 := x + round(10*cfi - 5*sfi); w1:= y - round(10*sfi + 5*cfi); z2 := x + round(-10*cfi - 5*sfi); w2      := y - round(-10*sfi + 5*cfi); z3 := x + round(-10*cfi + 5*sfi); w3:= y - round(-10*sfi - 5*cfi); z4 := x + round(10*cfi + 5*sfi); w4       := y - round(10*sfi - 5*cfi); z5 := x - round(10*cfi); w5 := y + round(10*sfi); z6 := x + round(10*cfi); w6 := y - round(10*sfi);

SetColor(lightgray);

Setlinestyle(0,0,3); line(z5,w5,z6,w6); SetColor(white); Setlinestyle(0,0,1);

line(z1,w1,z2,w2); line(z2,w2,z3,w3); line(z3,w3,z4,w4); line(z4,w4,z1,w1); circle(x,y,3);

end;    {Postpara}

Procedure Opora(x,y: integer);

Begin

circle(x,y,3);

Lineto(x - 7,y + 7); Lineto(x - 9,y + 7);

lineto(x + 9,y + 7); lineto(x + 7,y + 7); lineto(x,y);   SetFillStyle(1,GetColor); Bar(x - 9,y + 7,x + 9,y + 10); End;

Procedure CoordXY(x,y: integer);

Begin

SetColor(magenta);

line(x - 10,y,x + 100,y); line(x + 100,y,x + 90,y - 5);  line(x + 100,y,x + 90,y + 5); OutTextXY(x + 105,y - 7,'X'); line(x,y + 10,x,y - 100); line(x,y - 100,x - 5,y - 90); line(x,y - 100,x + 5,y - 90); OutTextXY(x + 5,y - 107,'Y'); SetColor(white);

End; Begin

clrscr;

l1 := 0.3; l30 := 1.4; lcd := 0.5; l4 := 1.25; cx :=0.0; cy := - 1.0; ox := 100; oy := 200; kl := 150; kv := 350; ka := 350;

pvx := 450; pvy := 125; pax := 450; pay := 275; d := Detect; InitGraph(d,r,'...\bgi'); SetBkColor(lightgray); start: for i := 0 to nc do begin

setfillstyle(9,green); bar(20,380,620,455); fi1 := 2*pi/nc*i; bx := l1*cos(fi1); by := l1*sin(fi1); vbx := - by;   {- l1*sin(fi1);} vby := bx;     {l1*cos(fi1);} abx := - bx;   {- l1*cos(fi1);} aby := - by;   {-l1*sin(fi1);}

diada3v(bx,by,vbx,vby,abx,aby,cx,cy,0,0,0,0,0,fi3,om3,epsi3,lcb,v3,a3); dx := lcd*cos(fi3); dy := cy + lcd*sin(fi3); vdx:=lcd*sin(fi3)*om3; vdy:=lcd*cos(fi3)*om3; adx := - lcd*(cos(fi3)*sqr(om3) + sin(fi3)*epsi3); ady := lcd*(cos(fi3)*epsi3 - sin(fi3)*sqr(om3));

diada2v(dx,dy,vdx,vdy,adx,ady,cx,cy,0,0,0,0,0,0,0,l4,0,fi4,om4,epsi4,l5,v5,a5); CoordXY(100,200);

x1 := ox + round(kl*bx);  y1 := oy - round(kl*by);

OutTextXY(100,10,'Схема механизма');

OutTextXY(30,440,'Esc - конец работы программы'); str(fi1*180/pi:6:2,st1); str(fi3*180/pi:6:2,st2); str(fi4*180/pi:6:2,st3); str(l5:6:4,st4); OutTextXY(30,395,'Fi1=' + st1 + ' град.'+ ' Fi3= ' + st2 + ' град.'); OutTextXY(310,395,'Fi4= ' + st3 + ' град.' + ' L5= ' + st4 + ' м.'); circle(ox,oy,3);

Opora(ox,oy);

OutTextXY(ox + 10,oy + 10,'A');

MoveTo(ox,oy); LineTo(x1,y1);

OutTextXY(x1 + 10,y1 - 10,'B'); circle(x1,y1,3);

MoveTo(ox,oy - round(kl*cy)); circle(ox,oy - round(kl*cy),3);

OutTextXY(ox - 10,oy - round(kl*cy) - 10,'C');

Opora(ox,oy - round(kl*cy)); x1 := ox + round(kl*l30*cos(fi3));

y1 := oy - round(kl*cy) - round(kl*l30*sin(fi3)); lineto(x1,y1);

x1 := ox + round(kl*lcb*cos(fi3));

y1 := oy - round(kl*cy) - round(kl*lcb*sin(fi3)); Postpara(ox + round(kl*bx),oy - round(kl*by),fi3); x1 := ox + round(kl*dx); y1 := oy - round(kl*dy); OutTextXY(x1 - 10,y1 - 10,'D'); circle(x1,y1,3); moveto(x1,y1);

x2 := x1 + round(kl*l4*cos(fi4)); y2 := y1 - round(kl*l4*sin(fi4)); lineto(x2,y2);

line(ox + 50, y2, ox + 250, y2); Postpara(x2,y2,0); circle(x2,y2,3);

OutTextXY(x2,y2 - 15,'E');

{План скоростей}

SetColor(red); OutTextXY(400,10,'План скоростей'); str(om3:6:2,st2); str(om4:6:2,st3); str(v5:6:4,st4); OutTextXY(30,410,'Om1=  1.00' + '       Om3= ' + st2); OutTextXY(310,410,'Om4= ' + st3 + '       V5= ' + st4); OutTextXY(pvx +

5,pvy + 5,'Pv'); x1 := pvx + round(kv*vbx); y1 := pvy - round(kv*vby);