function Foamcutter_demo % % Forrit sem býr til G-kóða fyrir frauðplastskera sem staðsettur % er í vindgangarými Háskólans í Reykjavík. % Úttaksbreyta: G-kóði sem skrifaður er í skránna 'filename.gcode' % Höfundur: ISR, Háskólinn í Reykjavík, Vor 2013 % Þessi kóði gerir ráð fyrir að hlutur hafi eins lögun í sitt hvorum enda % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % clear all % Nafn úttaksskráar. Endingin skal vera .gcode. filename='test.gcode'; % %Upphafsstaða x0 = 0; y0 = 0; % Skali sem skalar mm yfir í færslueiningar frauðplastskera skali = 8.889; ns=40; %fjöldi skrefa í ferli x(1) = x0; %Fyrsti punktur í ferli er upphafsstaða y(1) = y0; % Allir punktar í ferli eru reiknaðir út og skrifaðir í réttri röð % inn í vektorana x og y. Punktarnir verða að vera í sömu röð og % skerinn á að skera því annars kemur stökk í skurðinn. % Hér er formúlur fyrir ferilinn. Þessu þarf að breyta ef á að skera út % annað form. h = 100; %tölur sem ákvarða stærð á demohlut b = 50; % Þvermál boga ii = 1; % teiknar beina línu í ns skrefum lina(x(1),y(1),-b/2,h,ns); %teiknar hálfhring í ns skrefum með miðju í (0,h) og radíus b/2 bogi(x(ii),y(ii),0,h,pi,-1,ns); % teiknar aðra beina línu í ns skrefum lina(x(ii),y(ii),x0,y0,ns); %Ferill plottaður skoðið vel hvort hann hefur rétt form áður en % G-kóðinn er keyrður á kutterinn. plot(x,y,'r') axis equal grid on hold off l = length(x); % GCODE táknbreytir -> breytir línuvigrum í færslulínur G-kóða. % Fyrst er vigrum breytt úr staðsetningarvigrum yfir í færsuvigra % í færslueiningum frauðplastskera. for i=1:l-1 xx(i)=(x(i+1)-x(i))*skali; yy(i)=(y(i+1)-y(i))*skali; end %Svo er skráin opnuð fid=fopen(filename,'wt'); %Og g-kóðinn skrifaður í hana % Upphafspunktur ath. að x - y hliðin hefur viðsnúin y ás fprintf(fid,['G1 X' num2str(x0*skali) ' Y' num2str(-y0*skali) ' F2000\n']); fprintf(fid,['G1 A' num2str(x0*skali) ' B' num2str(y0*skali) ' F2000\n']); % Ferill for i=1: l-1 fprintf(fid,['G1 X' num2str(xx(i)) ' Y' num2str(-yy(i)) ' F2000\n']); fprintf(fid,['G1 A' num2str(xx(i)) ' B' num2str(yy(i)) ' F2000\n']); end %Setur skerhausa aftur í núllpunkt fprintf(fid,['G1 X' num2str(-x0*skali) ' Y' num2str(y0*skali) ' F2000\n']); fprintf(fid,['G1 A' num2str(-x0*skali) ' B' num2str(-y0*skali) ' F2000\n']); % föll til að teikna línur og boga function lina(x1,y1,x2,y2,n) dx = (x2 -x1)/n; dy = (y2 - y1)/n; %Færsluhnit for i = 1:n ii = ii+1; x(ii)=x1 + dx*i; y(ii)=y1 + dy*i; end end function bogi(x1,y1,x0,y0,horn,k,n) r = sqrt((x1-x0)^2+(y1-y0)^2); fi = atan2((y1-y0),(x1-x0)); for i = 1:n ii = ii+1; theta = k*i*horn/n; x(ii) = x0 + r*cos(theta+fi); y(ii) = y0+r*sin(theta+fi); end end end