Strona 1 z 1
moje makra - frezowanie wielu okręgów...
: 15 cze 2010, 00:21
autor: mitek
var x, y, z, k, r, ox, oy, oxx, oyy, i: integer;
begin
clear;
x:= 110;//polozenie pierwszego dolnegio x
y:= 100;//polozenie pierwszego dolnegio y
k:= 5;//ilosc kolumn
ox:= 120; //odleglosc miedzy okregami x
oy:= 100; //odleglosc miedzy okregami y
r:= 30; //promien
//
oxx:= x;
oyy:= y;
for i:=k downto 1 do begin
elipsa(oxx,y,r,r,0);
oxx:= ox+oxx;
end;
oxx:= x;
for i:=k downto 1 do begin
elipsa(oxx,y+oy,r,r,0);
oxx:= ox+oxx;
end;
oxx:= x;
for i:=k downto 1 do begin
elipsa(oxx,y+oy+oy,r,r,0);
oxx:= ox+oxx;
end;
oxx:= x;
for i:=k downto 1 do begin
elipsa(oxx,y+oy+oy+oy,r,r,0);
oxx:= ox+oxx;
end;
oxx:= x;
for i:=k downto 1 do begin
elipsa(oxx,y+oy+oy+oy+oy,r,r,0);
oxx:= ox+oxx;
end;
selectall;
refresh;
end.
mi przydało się przy robieniu zasłon na grzejniki

by zwiększyć ilość wierszy trzeba skopiować kilka linji
: 15 cze 2010, 21:04
autor: Piotr Rakowski
Moje gratulacje! Nadal podziwiam Cię kol. Mitek za inwencję. Bardzo fajnie sobie poradziłeś. Ponieważ nie jesteś programistą (co można poznać po kodzie

)podaję Ci drugą, znacznie prostszą wersję powyższego kodu - wykonuje to samo: (!)
var x, y, z, k, r, ox, oy, oxx, oyy, i: integer;
begin
clear;
x:= 110; //polozenie pierwszego dolnego x
y:= 100; //polozenie pierwszego dolnego y
k:= 5; //ilosc kolumn
ox:= 120; //odleglosc miedzy okregami x
oy:= 100; //odleglosc miedzy okregami y
r:= 30; //promien
circle(x,y,r);
selectall;
arrayrectselection(ox,oy,k,k);
selectall;
refresh;
end.
: 15 cze 2010, 23:14
autor: mitek
arrayrectselection(ox,oy,k,k);
kurcze ta funkcja mi umknęła a szukałem czegoś takiego choć to chyba jeden z moich pierwszych programów później sobie rodziłem pętlami
programistom nie jestem wiec pewnie sporo robiłem w koło ale cel dla mnie się liczył a zmniejszanie kodu dla przyśpieszenia ... nie w takich małych skrypcikach
: 16 cze 2010, 05:21
autor: Piotr Rakowski
Ale jest bardzo fajnie. Widziałem w innych skryptach, że później zacząłeś sobie radzić też z podwójnymi pętlami (dla X i Y jednocześnie). Jest także funkcja:
arraypolarselection(dx, dx, kąt);
albo
matrycakolowa(...)
Umozliwia to np, "dziurkowanie" po okręgu, tworzenie różnych dziwnych kształtów, typu zęby kół itd.
Uwaga moja do programowania jest taka:
nie musisz w pętlach zawsze używać polecenia "downto", bo ono zmniejsza licznik. Możesz licznik zwiększać poleceniem "to", czyli:
for x:=1 to 100 do
begin
...
end;
A jeśli licznik ma być wartością nie stałą, bądź ułamkową możesz używać:
repeat
...
x := x + 0.5;
...
until x = 100.5;
: 16 cze 2010, 11:35
autor: mitek
oj już nie pamiętam jak to pisałem bo jak działało to zostawiałem ale wiem że chciałem zrobić przy pomocy
for x:=1 to 100 do
begin
...
end;
ale coś tam miałem problem z umieszczeniem pentli w pentli bo end mi kończyło ją przed zakończeniem że tak powiem zewnętrznej pentli....
: 17 cze 2010, 05:06
autor: Piotr Rakowski
Użycie pętli masz w niejednym przykładzie makr w eduCADzie.