Kako mogu dobiti neku vrijednost pojedine ODABRANE daske?
Najbliži slični primjer bi bio da želim da stavim garderobnu cijev za vješanje u visoki ormar.
Odaberem fiksnu policu i želim podatak Y o položaju odabrane daske kako bi mogao ubaciti garderobnu cijev.
Kako dobiti vrijednost Y i “prenjeti” taj podatak dalje u objekt koji se zove npr. gaderobna_cijev.e3d?
Hvala svima
Evo i odgovora za poziciju garederobne cijevi koja se mora nalaziti, na primjer, 100mm ispod prve gornje daske.
Pozicija Y treba glasiti:
OverlapPoint.YP-100
Parafrazirat ću Vaše pitanje:
“Kako neki objekt (element ili daska) mogu znati detalje nekog budućeg elementa?”
Recimo da je neki element učitan u drugi element. Pošto tek učitani element nezna unaprijed imena dasaka, ne može samostalno pročitati i upotrijebiti njihove karakteristike.
Zapravo, može! Postoje specijalne funkcije koje koje čitaju vrijednosti bliskih objekata. Mogu se pročitati vrijednosti prvog lijevog, desnog, gornjeg i donjeg objekta bez da znamo njihova imena.
OverlapXL (ili OverlapPoint.XM) – vrijednost koju ima desni rub daske koja se nalazi lijevo od centra elementa
OverlapXR (ili OverlapPoint.XP) – vrijednost koju ima lijevi rub daske koja se nalazi desno od centra elementa
OverlapPoint.YM – vrijednost koju ima gornji rub daske ispod centra elementa
OverlapPoint.YP – vrijednost koju ima donji rub daske iznad centra elementa
OverlapPoint.ZM – vrijednost koju ima prednji rub daske iza centra elementa
OverlapPoint.ZP – vrijednost koju ima zadnji rub daske ispred centra elementa
Na primjer, ako trebamo izračunati dužinu cijevi za vješanje u ormaru, treba nam x pozicija lijeve i desne daske i debljina lijeve daske. Ako znamo kako se daske zovu, to bi onda bilo (na primjer:
DesniBok.x-LijeviBok.x-LijeviBok.debljina.
Međutim, ako želimo napraviti element koji će znati svoju širinu i prije nego što ga učitamo, onda ne znamo imena dasaka pa ne možemo napraviti formulu na klasični način. Tada se mogu koristiti OverlapXL i OverlapXR. Formula za širinu elementa će glasiti:
OverlapXR – OverlapXM
Formula za X poziciju elementa će glasiti:
OverlapXM
Postoji još i varijanta funkcije koja daje vrijednosti vanjskih objekata u odnosu na rubove elementa (a ne na njegov centar):
OverlapBox.XM – vrijednost koju ima desni rub daske koja se nalazi lijevo od ruba elementa
OverlapBoxXR – vrijednost koju ima lijevi rub daske koja se nalazi desno od ruba elementa
OverlapBox.YM – vrijednost koju ima gornji rub daske ispod ruba elementa
OverlapBox.YP – vrijednost koju ima donji rub daske iznad ruba elementa
OverlapBox.ZM – vrijednost koju ima prednji rub daske iza ruba elementa
OverlapBox.ZP – vrijednost koju ima zadnji rub daske ispred ruba elementa
Napomena:
Najbolji način za korištenje ovih funkcija je pozicioniranje elementa u svijetli otvor (kao kad se učitavaju ladice), a daske unutar tog elementa onda neka koriste overlap funkcije.
OverlapBox računa i skrivene elemente i daske, ako se takve slučajno nađu na putu.
Postoje elementi u Corpusu koji nebi mogli normalno funkcionirati bez ovih funkcija. Radi se o ladicama. Ladice su u naprijed napravljene i ne može se u naprijed znati širina svijetlog otvora jer ne znamo imena ni debljine rubnih dasaka. Zato se koriste Overlap funkcije kojima se izračuna širina poda.
Generalno , za dodavanje traženog objekta treba napraviti skriptu na isti način kako i funcionira sistemska skripta dodaj police, pregradu ,ladice……
te kada dodajete nekakav objekat koji je u vašem slučaji štap za vješanje tad prepoznaje zadanu širinu ( širinu možete svakako riješit pomoću overlap funkcije) a Y poziciju da prepoznaje gornji odabrani element minus pomak zadan u objektu ,
ostali info o korištenju i vašoj zamisli kako bi eljeli koristiti pošaljite na pa vam ponudimo moguće rješenje
Ako želite promijeniti širinu elementa GarderobnaCijev koja mora biti jednaka visini police Polica1, treba u širinu od GarderobnaCijev upisati
Polica1.visina
Postupak bi se mogao napraviti i pomoću pascal skripte, ali bi bio vezan samo za konkretni primjer odnosno objekt.
Općenito skripte nisu pogodne za pojedinačna rješenja jer se ne mogu jednostavno pokretati bez da se za njih napravi ikona u nekom izborniku.
Slobodno me ispravite ako nisam dobro shvatio o čemu se radi.
hvala na ovome međutim ovo se već zna…
Da pokušam biti još jasniji na primjeru dodavanja ladica. Kad se dodaje ladica označi se svijetli otvor te program iz odabranog računa prostor u koji dodaje ladicu.
Kako odabrati neku (bilo koju) dasku u editoru (u mom slučaju neku policu) i proslijediti npr vrijednost Y u neki e3d objekt?
Recimo da imamo dasku koja zove Polica1 i element koje se zove Ladica3.
Ako želimo da pozicija Ladice3 po Y osi bude jednaka Y vrijednosti od Polica1, onda u Y vrijednost od Ladica3 treba upisati “Polica1.y”. Ako , na primjer, želimo da Y vrijednost od “Polica1” diktira visinu ladice, onda treba u visinu od Ladica3 upisati “Polica1.Y-Pod1.Y”
hvala na odgovoru ali…
ime daske je varijabla i ovisi o trenutno odabranoj dasci na elementu… ono što želim je odgovor nešto poput:
u formuli koja definira visinu Y napišite obj2.y-obj1.visina…
isto je pitanje i kako “semafor” pročita visinu elementa i kasnije ju promjeni?
Napisao sam cijeli odgovor i malo promijenio
pitanje. Mislim da može mnogima biti korisno,
hm… meni ovo ne radi.
ako pogledate sliku na kojoj sam stavio policu u sred elementa (ne dodiruje niti jedan bok) i koristio funkciju overlappoint.zm vrijednost koju sam dobio je -560 (to je dubina cijelog elementa, tj. desnog ili lijevog boka)
a ono što bi prema vašem opisu funkcije overlappoint.zm trebao dobiti je vrijednost -543 (što odgovara Z vrijednosti leđa)
Overlapi se trebaju koristiti unutar novog elementa.
Grupirajte policu tako da postana član novog elementa. taj, novonastali element postavite na Z=0.
Uđite u novi element i u Z od police upišite “-overlappoint.zm”.
Polica će otići na položaj leđa.
hvala vam, radi!
samo da dopunim da ne bi želio koristiti opciju “uređivanje” nakon što ubacim objekt već kombinacijom .cps i .cmk
… zapravo tražim pascal rješenje unutar cps datoteke