gdje bi mogao naći više informacija o dodatnim naredbama unutar .cps datoteka
konkretno koji sve parametri se koriste kod naredbe LoadParentedElement, ili što radi elm.childdaska?
hvala
Trebate imati na umu da je fronta element unutar elementa.
Zato prvo treba provjeravati elemente unutar elementa, a ne daske. Provjerava se da li je element tipa VRE (vrata elementa). Ako je, onda se gledaju njegove daske. Zbog jednostavnosti, pretpostavit ćemo da fronta ima samo jednu dasku u sebi pa ćemo pročitati samo prvu. Toj se dasci u naziv dodaju ime njezinog parenta (element fronte) i onda još ime osnovnog elementa.
Evo koda.
Program FrontName;
var
i:integer;
d:tDaska;
imeparenta: string; // neka varijabla koja bi detektirala naziv elementa koji ima frontu
elm:telement;
// nazivdaske: string;
begin
imeparenta:=e.naziv; // naziv elementa koji je u editoru elemenata
// prolazak kroz daske elementa
writeln('');
writeln('daske:');
for i := 0 to e.childdaska.count-1 do begin
// daska u elementu
d:=e.childdaska.daska[i];
// ispis naziva
writeln(d.naziv);
end;
// prolazak kroz elemente unutar elementa
writeln('');
writeln('elementi:');
for i:=0 to e.ElmList.Count-1 do begin
// element u elementu
elm:=tElement(e.ElmList.Items[i]);
// ispis naziva
writeln(elm.naziv);
// traži se fronta
if elm.tipelementa=VRE then
begin
writeln(elm.naziv+' je fronta!');
// prva daska unutar elementa
d:=elm.childdaska.daska[0];
writeln(d.naziv+' je prva daska u fronti!');
// promjena naziva daske
d.naziv:=imeparenta+'_'+elm.naziv+'_'+d.naziv;
writeln('Novo ime je: '+d.naziv);
end;
end;
end.
možda bi bilo mudrije tražiti dasku unutar elementa koja je definirana kao fronta a ne kao vrata elementa… tad bi “filter” dasaka zahvatio sve…
Samo smo zagrebali površinu 😉
Element tipa “fronta” može u sebi imati i druge daske, a ne samo one koje su tip “fronta”. Na primjer okvir ili uklada.
Da, točno je da to može biti i u nekom podelementu koji je malo dublje “zakopan” kao što je to slučaj s ladicama.
Ako se radi o ormarima koji u sebi imaju ladičare, a ladičari imaju ladice, a ladice imaju svoje fronte, to je još dublje zakopano.
Tu skriptu bi trebalo izvršavati iz projekta tako da odradi cijeli projekt, ali tu su neki potpuno novi izazovi jer nemate editora koji bi javljao greške.
I na kraju, probajte skriptu izvršiti više puta i pogledajte onda nazive 🙂
razumijem… bilo bi super kad bi bilo još uputa o specifičnim naredbama Corpusa… osnovno programiranje mislim da ne stvara problem…
pokušat ću napraviti da se pretražuju daske i njihov smjer za detekciju fronte….
evo sad mi je sinulo nešto… skripta koja dodaje kao PREFIX imenu elementa redni broj elementa iz Corpusa – tako se možda još lakše razvrstavanju daske nakon izrade u drvnom centru….
ovo je odlično! toliko perspektive vidim u daljnjem radu s ovim.
Modificirao sam kod tako da se ujedno promjeni i naziv elementa koji sadrži frontu (ako sam se dobro izrazio). Međutim ovo ne radi u slučajevima kad se radi o ladicama. Mislim da bi trebalo ići “dublje” u raščlanjivanje elementa s ladicama da bi stvar proradila.
modificirani kod:
Program FrontName;
var
i:integer;
d:tDaska;
imeparenta: string; // neka varijabla koja bi detektirala naziv elementa koji ima frontu
elm:telement;
// nazivdaske: string;
begin
imeparenta:=e.naziv; // naziv elementa koji je u editoru elemenata
// prolazak kroz daske elementa
writeln(”);
writeln(‘daske:’);
for i := 0 to e.childdaska.count-1 do begin
// daska u elementu
d:=e.childdaska.daska[i];
// ispis naziva
writeln(d.naziv);
end;
// prolazak kroz elemente unutar elementa
writeln(”);
writeln(‘elementi:’);
for i:=0 to e.ElmList.Count-1 do begin
// element u elementu
elm:=tElement(e.ElmList.Items[i]);
// ispis naziva
writeln(elm.naziv);
// traži se fronta
if elm.tipelementa=VRE then
begin
writeln(elm.naziv+’ je fronta!’);
// prva daska unutar elementa
d:=elm.childdaska.daska[0];
writeln(d.naziv+’ je prva daska u fronti!’);
// promjena naziva daske
d.naziv:=imeparenta+’_’+elm.naziv+’_’+d.naziv;
writeln(‘Novo ime je: ‘+d.naziv);
// promjena naziva elemena koji sadrži frontu
elm.naziv:=imeparenta+’_’+elm.naziv;
writeln(‘Novo ime elementa daske je: ‘+elm.naziv);
end;
end;
end.