Fórum témák

» Több friss téma
Fórum » Eagle 3D segítség, POV-Ray
Lapozás: OK   24 / 42
(#) Attila86 válasza brezinajanika hozzászólására (») Márc 5, 2009 /
 
Azért van elcsúszva a csati, mert valószínűleg másmilyen csatlakozót tettél le a nyákra az Eagle-ben, de nem a hozzá való 3D-s alkatrészt rendelted hozzá.

Vagy pedig az alkatrész 3D-s makrója gyárilag hibás. Ez is könnyen előfordulhat, én már több gyári makrót kijavítgattam emiatt.
(#) brezinajanika válasza Attila86 hozzászólására (») Márc 5, 2009 /
 
Igen makróhibás...kétfélével néztem meg ami ugyanúgy néz ki a lib-ben, de mind a kettővel el van csúszva.
(#) MPi-c válasza brezinajanika hozzászólására (») Márc 5, 2009 /
 
A lib-ben könnyen ki lehet javítani és akkor nem kell a makrókhoz nyúlni.
(#) Attila86 válasza brezinajanika hozzászólására (») Márc 5, 2009 /
 
Ahogy MPi-c is írja, a legegyszerűbb átrajzolni a .lib-et, mert így nem kell beletúrni a makróba. Viszont így ha vannak korábbi nyákterveid amikben szerepel ez a csatlakozó és frissíted őket, akkor az összes csatlakozó a nyákterven el fog 'ugrani'. De akkor is ez a legegyszerűbb.

Én egyébként nem találtam 'hajszálpontosan' ilyen csatit az Eagle alkatrészlistájában, ezért rajzoltam egyet és rendeltem hozzá makrót.

(Más alkatrészeknél is van gyárilag ilyen hiba egyébként.
Például más csatlakozóknál és trimmereknél is. Amelyekkel eddig összefutottam azokat kijavítottam és majd közzé teszem az oldalamon valamikor.)
(#) brezinajanika hozzászólása Márc 8, 2009 /
 
Attila86
Csak egy kérdés.Régóta szemezek az oldaladon lévő alkatrészekkel és azt szeretném kérdezni,hogy mikor teszed őket letölthetővé?
(#) Attila86 válasza brezinajanika hozzászólására (») Márc 8, 2009 /
 
Az oldalamon is írtam hogy még megrajzolok pár alkatrészt és utána. Illetve még szeretnék pár dolgot hozzáadni az Eagle3D-hez.
(#) Attila86 hozzászólása Márc 8, 2009 /
 
A POV-Ray-ben milyen paranccsal lehet lekerekíteni egy számot? Például hogy 14,438-ból csináljon 14-et.
(#) Attila86 válasza Attila86 hozzászólására (») Márc 8, 2009 /
 
Meg is van:

  1. floor([color=red]szám[/color])
(#) Attila86 hozzászólása Márc 8, 2009 /
 
Na erre már sajnos nem találtam meg a választ:

Azt tudom, hogy hogyan tudok másolni agymás mellé objektumokat. Így:
Bővebben: Link
Ez eddig oké, mert itt az objektum után lévő 'translate' vagy 'rotate' parancs egyik értékét tudom megadni úgy hogy növekedjen egy értéktől egy másik értékig (például a linkelt oldalon az első makróban a piros gömböket -5-től +5-ig másolgatja).

De én nem a 'translate' vagy a 'rotate' parancsokba szeretnék definiálni ilyen magától növekvő változókat, hanem egy objektumhoz definiált értéket szeretnék ilyen magától növekedővé tenni. Na aki érti ezt a mondatot...

Szóval van nekem például egy ilyenem:

  1. #macro ellenallas(labtavolsag)
  2. union{
  3. ...
  4. }#end


Az "ellenallas" a makró neve, a "labtavolsag" pedig egy hozzá definiált érték amire a makró szövegében (amit most "..."-al jelöltem) bármikor hivatkozhatok.
Na én azt szeretném hogy ez a "labtavolsag" változzon úgy ahogy én szeretném. Mondjuk nullától 10-ig, egyesével. Ezt megtehetném persze úgy hogy tízszer egymás alá másolom a makrót, de ez egyrészt hülyén néz ki, másrészt pedig a 10 az nem egy konstans szám lenne hanem az is egy definíció (pl "huzalvastagsag"), ami mindig változhat ha én azt akarom.

Érthetőbben nem igazán tudom megfogalmazni a problémát sajnos.
Legfeljebb mutatok pár képet...
(#) MPi-c válasza Attila86 hozzászólására (») Márc 9, 2009 /
 
A translate és a rotate utasításokban nem maguktól növekednek a változók, hanem attól az utasítástól, aminek az ún. ciklusmagjában vannak. Általában a programzási nyelvekben vannak olyan utasítások, amelyek egy feltételtől függően többször is végrehajtják ugyanazt az utasítást vagy utasítás sorozatot. Az általad mutatott példában ez a (pov-ray szintaxis szerint):
#while ( Cond ) TOKENS... #end általános formátumú utasítás.
Hasonlatos a c-ben használt while ciklushoz. Amig a Cond kifejezés igaz, vagyis nem nulla, addig végrehajtódnak a ciklusmag utasításai.
Szerintem ezt tudod használni a makrón belül, úgy hogy a ciklusmagba teszed az objektumodat, meg azokat változókat, amiket minden egyes végrehajtás után valamilyen általad meghatározott szabály, sorozat szerint változtatni akarsz:
  1. #macro ellenallas(labtavolsag)
  2.    
  3.    #declare Szamlalo=0;
  4.    ...
  5.    #while(Szamlalo<10) //ciklus kezdete a feltétellel
  6.       union{                   //ciklusmag
  7.            ...
  8.            }
  9.       ...
  10.       #declare Szamlalo=Szamlalo+1;
  11.    #end      //ciklus vége 'ugrás vissza' a feltételvizsgálathoz
  12.    
  13. #end

(#) Attila86 válasza MPi-c hozzászólására (») Márc 9, 2009 /
 
Köszönöm! Az a baj, hogy én nem ismerek semmilyen programozó nyelvet. Legfeljebb a POV-Ray-t, de azt is csak minimális szinten. Az pedig inkább csak matematika.
Megpróbáltam megcsinálni úgy ahogy írtad:
  1. [color=indigo]#macro[/color] proba(a)
  2. [color=indigo]#declare[/color] a [color=red]=[/color] [color=darkblue]0[/color];
  3. [color=indigo]#while[/color] (a [color=red]<[/color] [color=darkblue]10[/color])
  4. [color=indigo]union[/color][color=blue]{[/color]
  5. [color=indigo]torus[/color][color=blue]{[/color]a,[color=darkblue]1[/color][color=blue]}[/color]
  6. [color=blue]}[/color] [color=green]//union vége[/color]
  7. [color=indigo]#declare[/color] a [color=red]=[/color] a[color=red]+[/color][color=darkblue]1[/color];
  8. [color=indigo]#end[/color]  [color=green]//ciklus vége[/color]
  9. [color=indigo]#end[/color]  [color=green]//"proba" makró vége[/color]
  10.  
  11. [color=indigo]object[/color][color=blue]{[/color]proba([color=darkblue]4[/color]) [color=indigo]pigment[/color][color=blue]{[/color]Blue[color=blue]}} [/color] [color=green]//"proba" makró hívása[/color]

Az utolsó sorban az "object" paranccsal meghívtam a makrót, ugye ezt meg kell tenni? Mert amit te írtál abban nincs benne, ezért nem vagyok benne biztos.

Na most, ez a kis makró nagyjából szemlélteti azt a dolgot amit én meg szeretnék valósítani. (De az ennél sokkal bonyolultabb makró.)
A "torus" parancs egy gyűrűt rajzol. A kapcsos zárójelben lévő két érték vesszővel van elválasztva. Az első érték a gyűrű major sugara, a második érték pedig a minor sugarat adja meg. (Bővebben: Link)

Én azt szeretném, hogy rajzoljon a POV-Ray egy gyűrűt "a" major átmérővel, majd rajzoljon ezen a gyűrűn belülre egy másikat ami kisebb nála. Aztán még egyet és még egyet mindaddig, amíg a major átmérő nulla lesz, mert ennél kisebb gyűrű ugyebár nem rajzolható.
Azt majd én kiszámoltatom a POV-Ray-el hogy mekkorával kell a következő gyűrűnek kisebbnek lennie, de most ezzel nem akartam bonyolítani a makrót.
(#) niedziela válasza MPi-c hozzászólására (») Márc 9, 2009 /
 
Csak kérdezem.
while ciklus ebben az esetben is

while() do end: ?

(#) Attila86 hozzászólása Márc 9, 2009 /
 
Úgy írtam meg a makrót, hogy egyszerűen csak be kell írni hogy milyen vastag a huzal. Utána a POV-Ray kiszámolja hogy hány menet és hány rétegnyi vezeték fél el a csévetesten és úgy rajzolja meg a cuccot:
Bővebben: KÉP1
Bővebben: KÉP2


Kicsit csaltam, mert a menetek önmagukban végződnek. Ha teljesen reálisan rajzoltam volna meg, ahhoz megint elő kellene venni a trigonometriát és azt utálom.
A menetek számát tudom 'dinamikusan' változtatni, de hogy ezt a rétegekkel is meg tudjam tenni, ahhoz kellene a fentebb említett probléma megoldása. Jelenleg a menetek ugyanis egymás fölé vannak másolgatva a sima "translate" paranccsal. A belső vezetékrétegek megrajzolásához viszont már nem jó a "translate" parancs.

A belső rétegeket nem akarom megrazoltatni hiszen úgysem látszódnak. De legfelül sajnos látszik, ezért csak a legfelsőt szeretném. Mert itt felül be lehet látni a tekercsbe.
Ha kikapcsolom a vasmagot és kékre színezem a csévét akkor jobban látszik a dolog:
Bővebben: KÉP3
Ugyan ez felülnézetből:
Bővebben: KÉP4
Talán így a legszembetűnőbb:
Bővebben: KÉP5
(#) MPi-c válasza niedziela hozzászólására (») Márc 9, 2009 /
 
Nem, a helpben benne van a szintaxis:
#while ( Cond ) TOKENS... #end, do, ':' vagy ';' nélkül.
(#) MPi-c válasza Attila86 hozzászólására (») Márc 9, 2009 /
 
Attila! Dolgozom a válaszon, de most már itt a munkaidő vége, majd otthonról írok.
(#) Attila86 válasza Attila86 hozzászólására (») Márc 9, 2009 /
 
Csak sikerült végre összehozni.
Bővebben: Link

Még nem értem teljesen, de azt hiszem az volt a baja hogy makróba 'ágyaztam' az egészet. De ez nem biztos...
(#) Attila86 válasza Attila86 hozzászólására (») Márc 9, 2009 /
 
Juppíííí!!!
Bővebben: KÉP

Szerk.:
És már meg is van amit szerettem volna
Bővebben: KÉP1
Bővebben: KÉP2
Bővebben: KÉP3
(#) MPi-c válasza Attila86 hozzászólására (») Márc 9, 2009 /
 
Attila! Jobban "vágod" te ezt az egészet, mint itt a megszólalók bármelyike.
Ilyen pepecs dolgokkal egyáltalán nem foglalkoztam, amit mondtam, (vagy mondani fogok ) soha nem próbáltam. Közben, azért mégis megírtam a választ, de most látom, hogy sikerült megoldani a kérdést. Azért beszúrom, amit írtam:
Én úgy csinálnám, hogy a makrón belül menetnek deklarálnék egy objektumot ( de ezt te jobban tudod)
  1. #declare menet=
  2.  union{
  3.   torus{r_major,r_minor...}
  4.  }

Ezután egy ciklusban a transleta-tel raknám egymásra a meneteket. A 2*r_minor-ral kellene az eltolást módosítani a kívánt magasságig:
  1. #declare menetszam = 20;
  2. #declare szamlalo = 0;
  3. #while(szamlalo < menetszam)
  4.  object{menet ... translate<0,szamlalo*2*r_minor,0>...}
  5.  #declare szamlalo=szamlalo+1;
  6. #end

Ha tudnám, hogy az összehasonlításban milyen operátorokat lehet használni máshogy is lehetne írni, mondjuk csökkenteni a menetszámot, amíg el nem éri a nullát.)
Ezután egy újabb ciklussal csinálnám meg a lezáró tekercsrészt kb. így:
  1. #declare lezaro_menetszam = 15;
  2. #declare szamlalo = 0;
  3. #while(szamlalo < lezaro_menetszam)
  4.  object{menet ... }
  5. #declare r_major = r_major-(2*r_minor);
  6.  #declare szamlalo=szamlalo+1;
  7. #end

(#) brezinajanika hozzászólása Márc 9, 2009 /
 
Az MPi-c által tervezett hd-h101-es 7szegmenses kijelzőjét beraktam és gondoltam gyorsan csinálok is vele 1 képet,de ezt írja ki:
#ifndef(pack_DIS1) #declare global_pack_DIS1=yes; object {DIODE_LED_7SEG("HD-H101",)translate<0,0,0> rotate<0,0.000000,0>rotate<0,0.000000,0> rotate<0,0,0> translate<7.620000,0.000000,19.050000>}#end // DIS1 HD-H101 HDSP-M

Mi lehet a probléma?
(#) MPi-c válasza brezinajanika hozzászólására (») Márc 9, 2009 /
 
Ez nem hibaüzenet, ebből nem tudok mondani semmit.
(#) brezinajanika válasza MPi-c hozzászólására (») Márc 9, 2009 /
 
Nem hibaüzenet.Csak kifesti sárgával a sort és az object mellé rakja a karakter izét .De ha kell lefotózom,hátha tud mondani valaki valamit.
(#) Attila86 válasza brezinajanika hozzászólására (») Márc 9, 2009 /
 
A POV-Ray ablakának bal alsó sarkába írja ki hogy mi baja van az adott sorral. Ha ezt látnánk akkor talán többet tudnánk mondani.
(#) MPi-c válasza brezinajanika hozzászólására (») Márc 9, 2009 /
 
Egy PNG ablakkép segítene. Amikor egy sárgával jelzett sorral megáll, alul kiírja a hibát és ez a Messages fülön is elolvasható.
(#) brezinajanika hozzászólása Márc 9, 2009 /
 
Tessék.

névtelen.PNG
    
(#) niedziela válasza brezinajanika hozzászólására (») Márc 9, 2009 /
 
DIODE_LED_7SEG nincs dekralálva ( makro nincs meg....rossz helyen van...stb)

(#) Attila86 hozzászólása Márc 10, 2009 /
 
A LED-eknél az Eagle3D feldob egy kis ablakot melyben megkérdezi, hogy hány mm-re legyen a LED a paneltól és hogy milyen legyen a színe illetve mennyire legyen átlátszó.

Ilyen ablakot szeretnék én is egyes alkatrészekhez. Például a toroid gyűrűmhöz, amelynél jó lenne ha be lehetne ugyan így (a LED-ekhez hasonlóan) állítani a tekercs tulajdonságait. Például a színét, a huzal vastagságát vagy a menetek számát.
Megpróbáltam beletúrni az Eagle3D fájljaiba hogy hátha megértem hogy hogyan lehet egy ilyen ablakot létrehozni, de nem sikerült kiderítenem. Csak arra jöttem rá, hogy a LED-ek tulajdonságait beállító ablakot hogyan tudom előhívni bármelyik alkatrésznél. (A 3dpack.dat-fájlban a hozzárendeléseknél az egyik változót 0-ról 1-re kell átírni.)

De hogyan lehetne egy ilyen kis ablakot létrehozni? Én sajnos a programozáshoz még mindig nem értek, ezért az Eagle3D fájljait olvasgatva nem lettem sokkal okosabb.

Tulajdonképpen a LED-ek tulajdonságait beállító ablakot is fel tudnám használni ahhoz, hogy három változót beállítsak egy adott alkatrésznél. De így a kis ablak feliratai megmaradnak. Mondjuk a szín megadásánál beállítódhat a gyűrű színe, a "Távolság a paneltól" pedig lehetne a menetszám, az "Átlátszóság" pedig a huzalvastagság. De az eredeti feliratokkal ez elég idétlenül nézne ki...

Azért lenne jó ezt így ilyen 'elegánsan' megoldani, mert nem biztos hogy mindenki bele tud túrni a makrókba és ott átírni a változókat.



Szerk.:

MPi-c!
Úgy rémlik, hogy te fordítottad le az Eagle3D-t magyarra. Ezért gondolom jól értesz a programozáshoz, és biztos bele kellett túrnod az Eagle3D programfájljaiba. Nincs esetleg ötleted erre?
(#) Attila86 válasza Attila86 hozzászólására (») Márc 10, 2009 /
 
Hmm... A 3dpack.dat fájlban a harminc változó közül a 21-28-asok nincsenek használatban. Gondolom az Eagle3D készítői direkt meghagyták hogy oda még lehessen tenni valamit...
(#) Attila86 válasza Attila86 hozzászólására (») Márc 10, 2009 /
 
Megtaláltam!
A 3d41.ulp fájl 1888- sorától írja le hogy miket csináljon a program ha az egyes változók ilyenek és olyanok...
És a 20. váltózótól valóban ki is vannak hagyva, tehát oda lehetne beírni akármit!
Viszont itt már tényleg tudni kellene programozni.
Például a LED-ek tulajdonságait megkérdező ablak így néz ki:
  1. if(pack_tra[5] == "1")                                                                                                                                                                  //LED-Optionen
  2.                                 {
  3.                                         real led_height=0;
  4.  
  5.                                         dlgDialog(lang[81])
  6.                                         {
  7.                                                 dlgGridLayout
  8.                                                 {
  9.                                                         dlgCell(0,0) dlgLabel("Név:");
  10.                                                         dlgCell(0,1) dlgLabel(E.name);
  11.                                                         dlgCell(0,2) dlgLabel("-rték:");
  12.                                                         dlgCell(0,3) dlgLabel(E.value);
  13.                                                         dlgCell(1,0,1,3) dlgComboBox(color_lgt,col_inf[5]);
  14.                                                         dlgCell(2,0,2,1) dlgCheckBox(lang[82],col_inf[6]);
  15.                                                         dlgCell(2,2,2,3) dlgSpinBox(col_inf[7],0,10);
  16.                                                         dlgCell(3,0,3,1) dlgLabel(lang[147]);
  17.                                                     dlgCell(3,2,3,3) dlgRealEdit(led_height,0,40);
  18.                                                 }
  19.                                                 dlgPushButton("+OK") dlgAccept();
  20.                                         };
  21.  
  22.                                         sprintf(pov_pack,"%s%s,",pov_pack,color_lgtp[col_inf[5]]);
  23.                                         if(col_inf[6]==1) sprintf(pov_pack,"%s%f,",pov_pack,real(col_inf[7])/10);
  24.                                         else sprintf(pov_pack,"%s0,",pov_pack);
  25.                                         sprintf(pov_pack,"%s%f,",pov_pack,led_height);
  26.                                 }


Ért ebből valaki valamit?
(#) niedziela válasza Attila86 hozzászólására (») Márc 10, 2009 /
 
Kicsit foglalkoznod kellene a "c" nyelvel és utána visszatérni ezekhez a dolgokhoz.
Ezen a szinten már nehéz lesz minden ismeret nélkül.
(#) Attila86 válasza niedziela hozzászólására (») Márc 10, 2009 /
 
Pedig megy ez programozói ismeretek nélkül is.
Bővebben: KÉP

Az egyes jellemzőket beállító legördülő menüket illetve "beíró ablakokat" is tudok elvileg varázsolni, csak ott még van egy kis gond...
Következő: »»   24 / 42
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem