Betekintés a MAXScript
MAXScript kifejlesztett eszköz introspekció, azaz lehet meghatározni, hogy milyen típusú és szerkezete a tárgy végrehajtása során a program, vagy ha működik a konzol (figyelő).
Az igazolás MAXScript funkció és metdy felelős önvizsgálat, szétszórva különböző szakaszok, ami nem túl kényelmes.
Ezt követően, amikor az átviteli módszer lesz említett csak módszerekkel kapcsolatos önvizsgálatra. Ez nem azt jelenti, hogy az osztály nincs más mód.
Írásban ezt a cikket nem az a célja, hogy a teljes leírását az egyes funkciók említik. A részletek megtalálhatók a súgórendszerében MAXScript.
Egyes részei a cikk egy magyar nyelvű fordítást anyagokat a támogatási rendszer MAXScript.
apropó
A függvény megkeresi és üzeneteket jelenít meg a globális változók alapján megadott sablon nevét változók és osztály értékeket. A szinonimája apropó () egy help ().
Meg kell jegyezni, hogy minden MAXScript nevét beépített függvények, osztályok, és egyéb állandó szervezetek globális változók.
Meg kell jegyezni, hogy bár ez a funkció ígéretes alias «segítséget», néhány információ a telepített tárgytői (azaz egy globális változó), a funkció nem ad ki. Azonban ez segíthet felismerni tárgyakat, amelynek létezéséről még nem is tudott.
showClass
Funkció megjelenik a konzol ablakban információt az osztály (vagy osztályok) MAXScript. Az első érv kell ahhoz, hogy keressen egy sablont (a karakterlánc helyettesítők) osztály nevét, nevét superclasses és / vagy nevét tulajdonságait. A sablon néz ki:
"
ahol
Az egyik leghasznosabb alkalmazás, a funkciók, hogy egy listát a tulajdonságok az érdekeit az osztály. Ie ha van egy olyan ismert objektum (kap objektum osztály mindig keresztül lehetséges classOf () függvény), és meg akarja változtatni az egyik tulajdonságait, de a neve az ingatlan nem ismert, akkor a showClass () függvény, meg lehet tanulni a tulajdonság nevét és típusát.
Például megtekintheti az összes tulajdonságait az osztály Box:
getPropertyController
setPropertyController
Jut az adatkezelő, amely hozzá van rendelve egy objektum tulajdonság, akkor getPropertyController () és setPropertyController (). Ha az ingatlan nem rendelt a vezérlő, getPropertyController () függvény a megadott értéket definiálatlan.
hasProperty
hasProperty () funkció lehetővé teszi, hogy ellenőrizze, hogy a megadott tulajdonság az objektum. Érvként, a függvény sablon szöveg helyettesítő karakterekkel.
Függvényhívás belsőleg használ showProperties (), és ezért ugyanolyan tulajdonságokkal munkát.
isProperty
isProperty () funkció lehetővé teszi annak ellenőrzését, hogy egy objektum egy meghatározott tulajdonság. Érvként, a függvény nevét a vonal vagy helyettesítő karakterek nélkül.
hasProperty () és isProperty () hasonló, de néhány esetben, különböző eredményeket adnak:
hasProperty b "név"
isProperty b "név"
Az a tény, hogy a hasProperty () eredményét használja showProperties () függvény hívás, amely ellenőrzi a minta a tulajdonság nevét. isProperty () függvény megpróbálja elérni a megadott tulajdonság az objektum. Box osztály az objektum funkció showProperties () csak ad egy listát a Box osztály tulajdonságait. de nincs szülő osztályok. A name tulajdonság tulajdonában Node osztály. így hasProperty () függvény nem látja, és isProperty () - lát.
isPropertyAnimatable
A függvény igaz értékkel tér vissza. Ha a megadott tulajdonság létezik, és ez lehet animált.
-- nyomtassa ki a listát az összes körét tulajdonságok
-- lehetőségére utal animált
for i in getPropNames s ezt formázza "% tulajdon:% - animálható:% \ n" s.name i (isPropertyAnimatable s i)
Sphere01 tulajdon: #smooth - animálható: true
Sphere01 tulajdon: #radius - animálható: true
Sphere01 tulajdon: #mapCoords - animálható: false
Sphere01 tulajdon: #segs - animálható: true
Sphere01 tulajdon: #slice - animálható: false
Sphere01 tulajdon: #hemisphere - animálható: true
Sphere01 tulajdon: #sliceFrom - animálható: true
Sphere01 tulajdon: #sliceTo - animálható: true
Sphere01 tulajdon: #chop - animálható: false
Sphere01 tulajdon: #recenter - animálható: false
Ha létrehozunk egy Box objektumot, és nézd végig a listát tulajdonságok showClass () és showProperties (). azt találjuk, hogy a szolgáltatást meghatározott más:
A tulajdonságok az objektum (osztály például) megjelent realWorldMapSize tulajdonság. Ez adunk az interfész realWorldMapSizeInterface. Interface mechanizmus MAXScript lényegében megvalósítja az ötletet a többszörös öröklődés. Például, az említett interfész mind a standard geometriai primitívek és nektoroye módosítók.
Ez a terület nagyon rosszul dokumentált súgórendszerében MAXScript. Ha nem megy bele a részletekbe az építészet 3ds Max, az interfészek tekintetében MAXScript, olyan osztályok, ahol egyes funkciók elemet. Így minden osztálynak nem csak a saját tulajdonságok és módszerek, hanem a tulajdonságok és módszerek interfészek, valamint örökölt a szülő osztály tulajdonságait, módszerek és az interfészeket.
Class Box realWorldMapSizeInterface felület. Class Box leszármazottja osztályok (öröklődési hierarchia) GeometryClass. csomópontot. MAXWrapper. Value. Ezeknek a szülő osztály egyetlen osztály csomópont több hálózati kártyával. Így, ha létrehoz egy példányt a Box osztály. Az objektum örökli a tulajdonságait, és a Box osztály interfészeket. és az összes szülő osztályok.
Meg kell jegyezni, hogy a showProperties () funkció csak a legújabb szintre öröklés. Például a Box osztály fokon INodeLayerProperties felület. örökölt csomópont osztályának. Ez az interfész, többek között képes displayByLayer. A következő kód működik hiba nélkül:
Ez a példa is mutatja, hogy akkor megy minden tulajdon bármilyen felület (amely az objektum) egy hierarchikus dot-jelölést interfész neve. Ugyanazt a műveletet a legtöbb esetben lehet könnyíteni:
Ez a módszer akkor működik, ha az interfész neve az ingatlan nem ismételjük nevei között az objektum tulajdonságait és / vagy nevek között, más tulajdonságai a felület.
A listát a tárgy interfészek segítségével érhetők showInterfaces () funkció:
Visszaadja a superclass az érvelés. Ie osztály örökli az osztály érv. Expression superClassOf arg ténylegesen egyenértékű kifejezési classOf (classOf arg).
isKindOf
A függvény igaz értékkel tér vissza. ha az objektum egy példányát az osztály vagy objektumpéldányt örökölt az alkalmazás.
Ezzel a funkcióval célszerű ellenőrizni az objektum tartozik egy bizonyos osztály. Például, meg kell csinálni néhány műveletet az összes kiválasztott kamerák a jelenetet. A legegyszerűbb esetben a probléma triviálisan megoldható. De ha feltételezzük, hogy lehetnek elszigetelt nemcsak a kamera és a jelenet különböző típusú kamera, a döntés sokkal bonyolultabb. Ezt a problémát meg lehet oldani a segítségével classOf () függvényt. de ebben az esetben ellenőrizni fogják csak egyezik egy adott osztály és meg kell csinálni néhány ellenőrzés. Egyszerűen kezelhető isKindOf () függvényt:
A obj kiválasztási do (
ha isKindOf obj fényképezőgépre (
-- Tesszük ezt a műveletet a tárgy a kamera
-- pl kinyomtatja az objektum nevét
Itt a feltétel ellenőrzésére objektum egy osztályába tartozó fényképezőgép. vagy egy osztályt, amely származik kamera osztályban. Minden típusú kamerák 3ds Max kell örökölt osztály kamera. Ez vonatkozik mind a beépített típusok (Free kamera és a Target kamera) és típusú kamerákat, add plug-inek a harmadik fél (pl VRayPhysicalCamera). Így a művelet elvégezhető csak a kamerák és fényképezőgépek.
Ez igaz értékkel tér vissza. ha az érvelés - meghatározása a szerkezet.
Ez igaz értékkel tér vissza. ha az érvelés - a része a struktúrának.
Ez igaz értékkel tér vissza. ha az érvelés - a vezérlő.
Ez igaz értékkel tér vissza. ha az érvelés - egy plugin írt MAXScript.
Ez igaz értékkel tér vissza. ha az érvelés - a plugin osztály írt MAXScript.
Ez igaz értékkel tér vissza. ha az érvelés - egyéni attribútumot MAXScript (MAXScript egyéni attribútum).
Megjegyzés. Mivel a felhasználó által definiált attribútumok egy speciális esete a plug-in, írt MAXScript, isMSPlugin () függvény is visszatér igaz.
True értékkel tér vissza, ha az érv - egy egyéni attribútum osztály MAXScript.
Introspektsionnye MAXWrapper tulajdonságok és módszerek az osztály
MAXWrapper osztály az alap osztály minden osztály, amely képviseli tárgyak 3ds Max, mint például geometriai objektumok módosítók, anyagok, stb Példányainak osztályok örökölt MAXWrapper. tartalmaz utalásokat a kapcsolódó objektumok 3ds Max, amely lehetővé teszi számukra, hogy kövesse az objektumot. Ez lehetővé teszi, MAXScript tudom, ha a tárgy átalakították a távoli felhasználók számára, vagy megváltoztak a tulajdonságai.
Ahogy talán már észre, sokan introspektsionnye funkciókat veszi érvként MAXWrapper típusú objektumokat.
MAXWrapper osztály több tulajdonsággal kapcsolatos önvizsgálat, de ezek nagyon speciális és ritkán használják a gyakorlati munka MAXScript.
MAXClass vissza egy tömbben értékeket (vagyis, osztály), amelyek ehhez mikrotörzs.
Az ingatlan tartalmaz egy belső azonosítót (ID) 3ds Max osztály osztályok és objektumok örökölt MAXWrapper osztályban. Van egy sor két egész szám, amely egyértelműen azonosítja az osztályban.
Az ingatlan tartalmaz egy belső azonosítót (ID) a mikrotörzs 3DS Max osztályok és objektumok.
A teljes listát a MAXWrapper osztály tulajdonságok - lásd: Támogatás MAXScript rendszer ..
Visszaadja az érv egy osztály nevét, mint egy húr.
A 3ds Max sok tárgy függ más tárgyakat. Az anyagot függ térképeket, mértani objektum függ a mögöttes tárgy, stb A belső mechanizmus 3DS Max határozza meg a kapcsolat közötti függőségeket tárgyak.
A MAXScript ott refs szerkezetét. amely meghatározza a négy funkciót dolgozni függőségek:
refs.dependents
Vissza egy tömbben más objektumok (vagy inkább, hivatkozásokat ezeket a tárgyakat) 3ds Max, amelyek függnek egy adott objektum (minden objektum leszármazottai MAXWrapper osztály). Ha az opcionális argumentum immediateOnly igaz, akkor azt vissza csak függő objektumok közvetlenül.
Például, a következő kifejezés azt jelzi, hogy a diffúz térképet hozzárendelt anyag foo objektumot. használt anyagok Material_ # 1, # 2 Material_, Material_ # 3 a textúra térkép illeszkednek a map_ # 2: Zaj.
# (Material_ # 3, Material_ # 2, illeszkednek a map_ # 2: Zaj, Material_ # 1)
Funkciók MaxScripttakzhe objektumok. Meghatározása funkció a kifejezés, amely az eredménye egy objektum típusú MAXScriptFunction. Alapértelmezésben a nevét ez az objektum lesz a neve a függvény definiálja. Azonban a kifejezés meghatározó függvény egy értéket lehet rendelni egy másik változó:
FP1 = fn func1 a b = (a - b)
Ebben az esetben a változó func1 FP1 és olvassa el ugyanazt a tárgyat, de a változók különböznek és függetlenek egymástól.
Ha figyelembe vesszük a klasszikus C-stílusú rendszert, a fenti példában, func1 egy függvény nevét, és FP1 - függvény pointer. És ez úgy értendő, hogy func1 - ez állandó, FP1 - változó. Azonban, mindkét MAXScript azonosítót úgynevezett egy objektum referenciát és azonosítók változók. Így, func1 változó felülírható bármikor hozzárendelésével bármilyen más tárgy (függvény, szám, stb), és a funkciót keresztül elérhető a variábilis FP1. Ha FP1 változó szintén felülbírálja, vagyis A függvény objektum nem hivatkozhat egyetlen variábilis, a függvény objektum visszaveszi a szemétgyűjtő.
következtetés
Ebben a cikkben, megpróbáltam, hogy információkat gyűjtsön a legfontosabb és upotrebimykh (a saját szemszögéből) funkciók, tulajdonságok és módszerek kapcsolatos önvizsgálatra MAXScript. Lehetséges, hogy az e cikk hatálya volt néhány fontos és érdekes pontokat. Elképzelhető, hogy bizonyos dolgokat nem fordítanak kellő figyelmet. MAXScript Hivatkozás segítségével - ott szinte mindent.