Script
ConStructOr
By Graph · 2011-01-05
- Version
- 0.4
- Date updated
- 2011-01-05
- Votes
- 14
Description
This is a WIP function collection to make the working with structs in maxScript easier.
It's kinda inspired by: 1.Garp's Primitive maker in that you can quickly reDefine structs and 2.the lack of functions provided by maxScript.
The only functions in it so far are:
- addVar - add a property to a struct
- gotProperty - the equivalent of hasProperty or isProperty functions for a struct
Let me know what kind of functions you'd like to see in here
Additional Info
(
clearlistener()
struct constructorStr
(
addVar = fn AddVar str var2Add val2Add name isGlobal:false =
(
local name = if classOf name == string then name else "conStructorTempStr"
local propNames = getPropNames str
local temp = str()
local props = for prop in propNames collect getProperty temp prop
local stri = ""
for i = 1 to propNames.count do
(
case i of
(
1 :
(
stri += "struct "+ name + "(\n"
stri += propNames[i] as string + " = " + props[i] as string + ",\n"
)
default :
(
stri += propNames[i] as string + " = " + props[i] as string + ",\n"
)
(propNames.count) :
(
stri += propNames[i] as string + " = " + props[i] as string + ",\n"
stri += var2Add as string + " = " + val2Add as string + ")\n"
)
)
)
local tStruct = if not isGlobal then copy (execute stri) else execute stri
if not isGlobal do execute (name + " = undefined")
return tStruct
),--END addVar FN
gotProperty = fn gotProperty str propName =
(
local propNames = for o in (getPropNames str) collect o as string
findItem propNames (propName as string) != 0
)--END gotProperty FN
)
global constructor = constructorStr()
/***************************************************************************************************************/
/***************************************************************************************************************/
struct personC
(
age, sex, job
)
local personClass = constructor.AddVar personC #skills #() "humanClass"
local raphael = personClass age:23 sex:#male job:#TechnicalArtist skills:#(#MaxScript, #WorkflowImprovement, #Ect)
print raphael
format "personClass.gotProperty #skills % \n" (constructor.gotProperty personClass #skills)
format "personClass.gotProperty #height % \n" (constructor.gotProperty personClass #height)
OK
)--END local
Tags: Check, work, with, structs, redefine, add