Home Technical Talk

Maxscript Custom Attributes

Offline / Send Message
Pinned
Hello!
I have tried to use custom attributes for tools that I want to make but I get a undefined function or class when I open the scene that has a object with my custom attributes.

Usually I add all the function by hand inside the custom attributes but I started to learn about FileIn() that seem really usefull to me.

Thanks in advance for the big help :)

Here is my code:


Global newAttrib = attributes posAttribs
(
fn addFunction FolderName vArray=
(
/*
1) Get the root position of the installed position of 3ds max
2) Get in the script file and then in the FolderName of the function
3) Add all the function inside the vArray in a FileIn Loop
*/
for i = 1 to vArray.count do
(
FolderPosition =  ((GetDir #maxroot)+"\scripts\\" +FolderName + "\\")
FileIn(FolderPosition + vArray[i])
)
)
parameters Param0 rollout:General
(
pPreset0 type:#String ui:ddl_Preset0 default:"..."
pTableHeight type:#Float ui:spn_Height default:100
)--end Param1
parameters Param1 rollout:TopPart
(
pPreset1 type:#String ui:ddl_Preset1 default:"..."
defaultArray1 type:#stringTab tabSize:1 tabSizeVariable:true
defaultExist1 type:#boolean default:False
)--end Param1
parameters Param2 rollout:BottomPart
(
pPreset2 type:#String ui:ddl_Preset2 default:"..."
pLegEndShape type:#String ui:ddl_LegEnd default:"..."
defaultArray2 type:#stringTab tabSize:1 tabSizeVariable:true
defaultExist2 type:#boolean default:False
)--end Param2
parameters Param3 rollout:Supports
(
pPreset3 type:#String ui:ddl_Preset3 default:"..."
defaultArray3 type:#stringTab tabSize:1 tabSizeVariable:true
defaultExist3 type:#boolean default:False
)--end Param3

Local externalFn = #("UI_CaptionChange.ms", "UI_ControlVisible.ms", "UI_MoveVisible.ms")
Local externalMod = #("MOD_Extrude.ms", "MOD_Taper.ms", "MOD_QuadChamfer.ms", "MOD_SweepModifier.ms")
Local TableTypes = sort(#("...", "Dining", "Workbench", "Coffee", "Round"))
Local TopTypes = sort(#("...", "Square", "Rectangle", "Round","Oval","Triangle", "NGon", "Semi Circle", "Quarter Circle"))
Local LegTypes = sort(#("...", "Straight", "Taper", "Cross","U","MultiEnd", "X", "Curve", "T"))
Local LegEndTypes = sort(#("...", "Square", "Rectangular", "Circle","NGon"))
Local SupportTypes = sort(#("...", "CopyTop", "PTP"))
Rollout General "General"
(
dropdownlist ddl_Preset0 "Presets:" items:TableTypes
spinner spn_Height "Height" range:[0,1000,100] type:#float
button btn_Random "Random All" border:True
on General open do
(
addFunction "Mal_Functions" externalFn --Adding all the external function
addFunction "Mal_Modifiers" externalMod --Adding all the external modifiers
ddl_Preset0.selection = findItem ddl_Preset0.items pPreset0
UICaptionChange General 2 "Test"
)
on ddl_Preset0 selected val do
(
pPreset0 = ddl_Preset0.selected
)
)--end TopPart Rollout

Rollout TopPart "Top Part"
(
dropdownlist ddl_Preset1 "Presets:" items:TopTypes
spinner spn_Thickness "Height" range:[0,1000,2] type:#float
spinner spn_Length "Length" range:[0,1000,2] type:#float
spinner spn_Width "Width" range:[0,1000,2] type:#float
on TopPart open do
(
ddl_Preset1.selection = findItem ddl_Preset1.items pPreset1
if defaultExist == False then
(
--defaultArray = UIDefault Testing
--defaultExist = True
)
)
on ddl_Preset1 selected val do
(
pPreset1 = ddl_Preset1.selected
)
)--end TopPart Rollout
Rollout BottomPart "Bottom Part"
(
dropdownlist ddl_Preset2 "Presets:" items:LegTypes
dropdownlist ddl_LegEnd "Leg End Shape:" items:LegEndTypes
on BottomPart open do
(
ddl_Preset2.selection = findItem ddl_Preset2.items pPreset2
ddl_LegEnd.selection = findItem ddl_LegEnd.items pLegEndShape
)
on ddl_Preset2 selected val do
(
pPreset2 = ddl_Preset2.selected
)

on ddl_LegEnd selected val do
(
pLegEndShape = ddl_LegEnd.selected
)
)--end BottomPart Rollout
Rollout Supports "Supports"
(
dropdownlist ddl_Preset3 "Presets:" items:SupportTypes
on Supports open do
(
ddl_Preset3.selection = findItem ddl_Preset3.items pPreset3
)
on ddl_Preset3 selected val do
(
pPreset3 = ddl_Preset3.selected
)
)--end Supports Rollout
)--end posAttribs
modPanel.addModToSelection (EmptyModifier ()) ui:on
custAttributes.add $.modifiers[1] newAttrib --add the attribute in the first modifier
Sign In or Register to comment.