moje makra - frezowanie wielu okręgów...

eduCAD
Awatar użytkownika

Autor tematu
mitek
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 3
Posty: 744
Rejestracja: 09 cze 2009, 22:06
Lokalizacja: k/Krakowa
Kontakt:

moje makra - frezowanie wielu okręgów...

#1

Post napisał: mitek » 15 cze 2010, 00:21

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



Tagi:

Awatar użytkownika

Piotr Rakowski
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 3
Posty: 2173
Rejestracja: 29 lip 2005, 15:07
Lokalizacja: Warszawa
Kontakt:

#2

Post napisał: Piotr Rakowski » 15 cze 2010, 21:04

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.
Maszyny i oprogramowanie CNC: eduCAD, STEP2CNC, LynxCUT, Styro3D, Tapper, cncCAD, Image2CAM, Turn3D, TERMCUT, LynxNEST (Nesting)

Awatar użytkownika

Autor tematu
mitek
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 3
Posty: 744
Rejestracja: 09 cze 2009, 22:06
Lokalizacja: k/Krakowa
Kontakt:

#3

Post napisał: mitek » 15 cze 2010, 23:14

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

Awatar użytkownika

Piotr Rakowski
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 3
Posty: 2173
Rejestracja: 29 lip 2005, 15:07
Lokalizacja: Warszawa
Kontakt:

#4

Post napisał: Piotr Rakowski » 16 cze 2010, 05:21

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;
Maszyny i oprogramowanie CNC: eduCAD, STEP2CNC, LynxCUT, Styro3D, Tapper, cncCAD, Image2CAM, Turn3D, TERMCUT, LynxNEST (Nesting)

Awatar użytkownika

Autor tematu
mitek
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 3
Posty: 744
Rejestracja: 09 cze 2009, 22:06
Lokalizacja: k/Krakowa
Kontakt:

#5

Post napisał: mitek » 16 cze 2010, 11:35

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....

Awatar użytkownika

Piotr Rakowski
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 3
Posty: 2173
Rejestracja: 29 lip 2005, 15:07
Lokalizacja: Warszawa
Kontakt:

#6

Post napisał: Piotr Rakowski » 17 cze 2010, 05:06

Użycie pętli masz w niejednym przykładzie makr w eduCADzie.
Maszyny i oprogramowanie CNC: eduCAD, STEP2CNC, LynxCUT, Styro3D, Tapper, cncCAD, Image2CAM, Turn3D, TERMCUT, LynxNEST (Nesting)

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „eduCAD”