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….
Na žalost, ne postoji manual za skripte. Unatoč tome, dosta možete naučiti pretraživanjem skripti koje se nalaze u mapi Skripte i njezinim podmapama.
Program “Notepad++” kojeg možete pronaći u mapi “Extra” ima odlično pretraživanje unutar datoteka (Ctrl+Shift+F).
Ako ne možete pronaći, pitajte ovdje.
Konkretno,
LoadParentedElement(e,FileName)
će učitati element s diska i postaviti ga u element.
Evo i konkretnog primjera koji iz osnovne mape elemenata učitava element Fronta0.e3d u tekući element iz kojeg se pokreće skripta.
var
elm:telement;
begin
elm:=LoadParentedElement(e,ElementFolder+'FRONTA0.e3d');
end.
elm.childdaska je objekt koji označava daske iz elementa.
Na primjer, za pretraživanje svih dasaka u nekom elementu se radi:
var
i:integer;
d:tdaska;
elm:telement;
begin
for i := 0 to elm.childdaska.count-1 do begin
d:=elm.childdaska.daska[i];
if d.visina>1200 then nekaObrada(d);
end
odlično! pozabavit ću se s tim.
ideja je napraviti skriptu koja ima zadatak dodati nazivu fronte naziv “parent” objekta.
hodogram bi išao ovako:
1. odabere se cijeli element
2. makro uzima naziv elementa – npr. VisokiElement1
3. prolazi se kroz sve daske odabranog elementa
4. ako je daske = fronta onda je novi naziv fronte = originalni naziv+”_VisokiElement1″
5. po završetku javi da je broj naziva fronta koji je promijenjen
Možda nakon toga napraviti globalnu skriptu koja bi to napravila svim elementima u projektu.
Nije potrebno pregledavati daske jer je fronta element i ima tip elementa “fronta”. Ponekad daske unutar fronte nemaju svoj tip “fronta”. Mogu biti “okvir” ili “uklada”.
Inače, ako je potrebna informacija o roditelju fronte, može se dobiti i bez skripti. Može se u šifru elementa fronta staviti %NE%/%TPNE%.
Tada će šifra fronte glasiti naziv fronte/naziv roditelja. Na primjer, ako se element zove “Podni_obicni”, a njegova fronta “Vrata_obicna”, šifra će glasiti “Vrata_obicna/Podni_obicni”. Šifra elementa se lako postavlja u bilo koji ispis ili etiketu za dasku.
ok, kako bi onda mogao napraviti da mi se nazivu fronte doda naziv parent objekta?
var
i:integer;
d:tdaska;
imeparenta: string; // neka varijabla koja bi detektirala naziv elementa koji ima frontu
elm:telement;
nazivdaske: string
imeparenta=telement.naziv // prije petlje ne bi bilo loše povući ime trenutno odabranog elementa?
begin
for i := 0 to elm.childdaska.count-1 do begin
d:=elm.childdaska.daska[i];
if d.tipdaske=fronta then naziv(d)=naziv(d)+imeparenta;
// kako zapisujem nazad novi naziv daske?
end
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.