Fórum témák
» Több friss téma |
Fórum » Eagle 3D segítség, POV-Ray
Témaindító: Thomas10100, idő: Jún 5, 2006
Témakörök:
Üdv! Olvasom mit tervezel
Ahogy visszaemlékszem az ulp-re, magának, az adatok beállítására szolgáló párbeszédablaknak az elkészítése nem olyan bonyolult, az adatok átadása már érdekeseb lesz. Úgy rémlik - és a beemelt LED-es rész alapján is így látom -, hogy azokkal a sprintf és printf utasításokkal magát a pov fájlt készíti az ulp. Ott azt kellene pontosan tudni, hogy melyik változó, mit jelent, de ez gondolom az ulp elején a deklarációknál megjegyzésben le van írja és egy pov fájl tanulmányozása is segíthet az azonosításban. Ezt valóban jobban meg kellene néznem, de csak megint otthon... (Tegnap is így volt, aztán mire hazaértem, már megoldottad. )
Nos igen...
Azt nem tudom megcsinálni, hogy beteszek egy legördülő menüt és az ott kiválasztott értéket 'kivigye' a makróba. Jobban sajnos nem tudom megfogalmazni. Például van ez a két sor:
A "dlgCell" után lévő zárójelben a négy szám azt jelenti, hogy a cucc az ablak melyik részében legyen. Például a "(3,0,3,1)" azt jelenti, hogy a harmadik sor legelejétől (0-tól) a harmadik sor 1. részéig írja ki a cuccot. (Mintha tabulátor lenne.) A "dlgLabel" utáni zárólejben lévő cuccot egyszerűen kiírja. A "lang[147]" gyakorlatilag egy hivatkozás a nyelvi fájlok 147. sorára. Ha magyarra van állítva az Eagle3D, akkor a 147. sor ez: "Távolság a paneltöl:" A következő sorban a "dlgRealEdit" egy beíró ablakot jelent, amibe számot lehet beírni. Ez után a zárójelben három érték van. A második a beírható szám minimuma, a harmadik érték pedig a beírható szám maximuma. A zárójel első része, a "led_height" nem tudom hogy pontosan mi. Szerintem ezen a néven definiálódik el a beírt szám az OK-gombra való kattintás után. A gond csak az, hogy nem tudom hogy ez az érték hogyan jut el a LED makrójába. Ráadásul a LED makróját ha megnézi az ember, abban nem "led_height" név van definiálva, hanem csak "height". Szóval nem értem... Idézet: „LED makróját ha megnézi az ember, abban nem "led_height" név van definiálva,” Azért mert a "led_height" egy változó. dlgRealEdit(real &érték, real Min, real Max) Ha az érték kezdetben a tartományon kívül van, meghatároz egy Min és Max értéket Ezután jön a sprintf() függvény még...stb Idézet: „Azért mert a "led_height" egy változó.” Oké, de a LED makrójában is van egy változó, ami a LED paneltól mért távolságát hivatott beállítani. De ez a makróban "height" néven van megadva. Tehát a makróban is változó, csak más a neve. Idézet: „Ezután jön a sprintf() függvény még...stb” Azt a részt nem értem sajnos. Tehát hogy ez mit csinál:
Szerintem ez a "pov_pack" lesz a dolog nyitja, de nem tudok rájönni hogy mit jelent.
Formázott adatátviteli művelet egyik fele a sprintf() függvény ami a formázott stringbe való kiírást valósítja meg.
Az, hogy mi az a pov_pack valójában nem tudom, mert csak annyit látok amennyit ide másoltál Idézet: „Az, hogy mi az a pov_pack valójában nem tudom, mert csak annyit látok amennyit ide másoltál” Megtaláltam neten a 3d41.ulp-t: Bővebben: Link Itt az 1847. sortól ír a LED-ek tulajdonságait beállító ablakról.
Bocsánat, hogy "belevaú", nem is értek annyira hozzá, ezért lehet, hogy marhaság is amit írok, de...
Attila egy félmondata szöget ütött a fejemben, miszerint lehet, hogy ebben a titokzatos "pov-pack"-ban vannak letárolva olyan, előre definiált szövegdobozok, mint amilyenek a Visual Basic-ben pl. a mentésnél-megnyitásnál használatos mappakiválasztó (tallózó) ablak, és hasonlók. Simán el tudom képzelni, hogy ez is valami ilyesféle.
Üdv!
Idézet: „Megtaláltam neten a 3d41.ulp-t:” Nem látom, hogy ez több lenne, mint az 3DEagle könyvtárban rendelkezésre álló. pov_pack-ról (mint jeleztem) az ulp eljen van információ: "string_pack //Hier werden alle Packages reingeschrieben landet in .pov und .mpd" (Én a németet nem értem Frankye is előnyben. ) A lényeg, hogy az ulp a beállításoknak megfelelően a panelről beolvasott adatok (ezt nem néztem, hogy csinálja ) , a párbeszédablakban kapott paraméterek alapján sprintf függvényekkel állítja össze a pov fájlt, ami egy szövegfájl. Ha megnézed pl. az alkatrészeket leíró rész: (Pl.: #ifndef(pack_C3) #declare global_pack_C3=yes; object {CAP_DIS_CERAMIC_25MM_50MM(...) bizonyos része szöveges formában ott van az ulp-ben egy sprintf utasításban. Az ilyen részt megkeresve pl. vissza lehetne fejteni, hogy az általad is mutatott sprintf utasításban melyik "paraméter", mit jelent, abból hogy lesz az alkatrész makrójának neve, paramétere a pov fájl-ban. Segítségül c-ben a sprintf-ben maga a kiirásra kerülő rész az idézőjelek közé kerül. Ide kerülnek a %-lel kezdődő ún. formátumspecifikáció, ami típuskarakterekkel zárul. Pl. az 's' karakterláncot, az 'f' lebegőpontos paramétert jelöl (tizedes tört alakban) Az idézőjelek után vesszővel elválasztva a kiírásra kerülő változók kerülnek felsorolásra, amik a formátumspecifikációnak megfelelően a típuskarakterek helyére kerül. (remélem érthető) Az idézőjeleken belül vezérlőkarakterek is lehetnek. Ilyen a '\n', ami új sort jelent.
Üdv.!
Idézet: „Nem látom, hogy ez több lenne, mint az 3DEagle könyvtárban rendelkezésre álló.” Csak azért linkeltem be, hogy Niedziela-nak segítsek. Idézet: „... Az ilyen részt megkeresve pl. vissza lehetne fejteni, hogy az általad ismutatott sprintf utasításban melyik "paraméter", mit jelent, abból hogy lesz az alkatrész makrójának neve, paramétere a pov fájl-ban. ...” Ez nekem sajnos nem megy. Már ez is csoda hogy ennyire sikerült rájönnöm zéró programozói tudással. Amit még nem írtam az az, hogy ha van például ez a sor:
Itt a "led_height"-et átírom valami másra, például "belso_atmero"-re és így futtatom le a 3d41-ulp-t az Eagle-ben, akkor az Eagle3D ablaka nem jelenik meg, hanem feldob egy hubaüzenetet az Eagle, melyben ezt írja: Idézet: „C:/Program Files/EAGLE-4.15/ulp/Eagle3D/3d41.ulp(2016) parse error” (A "2016" a fájlnak azt a sorát jelöli, amelyiket átírtam.)
Legördülő menű: dlgComboBox(megjelenítendő karakterek tömbben, az a változó, ami tárolja a kiválasztott értéket);
A karakter tömb létrehozása így: string irany[] = {"Jobbra","Balra", "Fel", "Le"};
Kapásbol arra gondolok, hogy az általad megadott "belso_atmero" nevű változót nem deklaráltad Ha megnézed a led_height ott van: real led_height =0; Itt egyből nulla értéket is kapott. (Azt én sem tudom, hogy a real milyen típus.)
Ha küldesz valami kiindulási alapot megpróbálhatok segíteni.
Üdv!
Basszus, idáig jutottam most el én is!
A gond most azzal van, hogy a létrehozott .pov fájlt a POV-Ray nem tudja renderelni mert valami hibát jelez. Mindjárt összeszedem a dolgokat és feltöltöm ide. Úgy néz ki ma is későn lesz alvás.
Itt vannak azok amikkel most operálok:
3d41.ulp 3dlang_hu.dat user.inc valtozo21proba.pov A 3dpack.dat (vagy a 3dusrpack.dat) fájl végére ezt kell beírni:
Azt hiszem mindent odaadtam ami kell hozzá. Ha mégsem, akkor majd szólsz.
Szóval, akkor csak ennyi jellemző: Gyűrű adatai: Belsőátmérő, Éleinek sugara,Szín;
Tekercs adatai: Huzalvastagság, Menetszám, Szín? És azok a korlátozások jók a jellemzőkre, amik az ulp-ben vannak? Színre ugyanaz, legördülő menüben, mint a lednél jó? Közben látom, hogy az ulp-ben benne van!
Igen, az ulp-be igyekeztem beleírni mindent amit tudok.
Pár sor előtt azért van "//" jel, mert ha azokat a jeleket kiveszem, akkor nem fut le az ulp (hibaüzenet). A gyűrű külső átmérőjét és a vastagságát azért hagytam ki, mert felesleges. Ugyanis ez a makróban szerepel és 'összhangban van' a tokozás rajzával. Tehát felesleges a pov-fájl generálásakor megadni, mivel az alkatrész lerakásakor a felhasználó úgyis azt teszi le ami neki kell (a boardban). A huzal színénél jó lenne ha más színek (is) lennének mint amiket az Eagle3D alapból tud. De lehet hogy ezt nehéz lenne megvalósítani, ezért egyenlőre ezt a problémát hagyhatjuk. Amit viszont mindenképpen szeretnék az az, hogy a menetszám csak egész szám lehessen. A makrót nem 'készítettem fel' arra hogy a menetszám tizedes tört, valószínűleg szétesne tőle a 3D-s alakzat.
A huzal színét majd később lőjjük be. Itt az ulp a működő párbeszédpanellal. Ez még nem rakja össze a pov fájlt.
Kellene a makró, hogy lássam a szükséges paramétereket. Ha nem akarod ide feltenni, küld mail-ben.
Eddig szuper!
Pont így gondoltam az ablakot. Most arra próbálok rájönni hogy hogyan lehetne 'kijuttatni' ezeket az adatokat a pov fájlba. Az a baj, hogy a pov fájl hibaüzenetet ír ki még mindig. Nálad is?
Feltettem azt is! Az user.inc-ben van.
Nem titkolom, egyszer úgyis publikussá teszem az egészet.
Persze Fáradok Még nem kezdtem el a pov fájlt, majd most.
Ez a makró : #macro TJ5_U2_PROBA() !
Nincsennek paraméterek "fogadásához" a változók megadva a zárójelek között!
Azt hiszem így kellene:
#macro TJ5_U2_PROBA (,dbelso,,,gyleke,gyszin,menetsz,dhuzal,hszin). Így már összerak valami hosszabb pov fájlt.
Én is erre a következtetésre jutottam, de így sem jó sajnos.
Így most azok a változók szerepelnek a zárójelben amiket a 3d41.ulp-be írtunk.
Ezt nem hiszem el...
Vergődésemben próbaképp beírtam a zárójelbe még ezt "abcd". Csak úgy. Tehát ez lett belőle:
Így már nem ír ki hibaüzenetet a POV-Ray és megrajzolja a gyűrűt! De az értékek nem azok amiket beállítunk a generáláskor. Ha az objektum hívásának sorában is átírom a zárójelben lévő értéket, mondjuk a menetszámot meghatározó "14"-et "menetsz"-ra, akkor is megrajzolja a gyűrűt, de tekercs nélkül. Tehát ha ezt:
Ezzé írom át:
MPi-c! SIKERÜLT!!!
A beállított értékek igenis átkerülnek a makróba!! Pontosabban eddig még csak a huzalvastagsággal próbálkoztam, de az gyönyörűen működik! Itt van az ulp: 3d41_felig_mukodo.ulp
Így juttattam ki az adatokat:
A menetszám értékét 'kiküldő' sor elejére tettem két per jelet, mert az a sor nem tetszik az Eagle3D-nak. Azt a részét kifogásolja amelyiket pirossal kiemeltem. Illetve szerintem a színek tuti hogy nem fognak így kikerülni mint a számszerű értékek.
OK! Akkor ez már összejön. Én most kiszálltam :unalmas:
|
Bejelentkezés
Hirdetés |