MAXSCRIPT: Hide license username from UI // delayed startup
by piro
Recently (since 2020 or so) Autodesk made 3DS max display username on frontend of 3DS max, which made me and few other people, who share / record lot of materials, bit unhappy. After no clear solution except for "just change it", I've wrote this script that should get rid of the license name owner, as well do some startup - actions when you open max. Copy below code, put it in maxscript editor, save and evaluate, you can put it in delayedExecution.ms file, and copy that file in your startup folder of 3ds max
( For example: C:\Program Files\Autodesk\3ds Max 2024\scripts\Startup
or
C:\Users\piro\AppData\Local\Autodesk\3dsMax\2024 - 64bit\ENU\scripts\startup
It may depend on your installation and account settings.) to run every time you open 3dsmax.exe.
Get it from github delayedExecution.ms:
-- put me into startup folder clearListener() try (destroyDialog delayedExecutionDialog) catch() curMaxVersion = ((maxversion())[1] / 1000) print "Max version: " + curMaxVersion as string -- various functions you might want to run at start of 3ds max fn fn_hideLicence = -- hides licence owner name from 3ds max interface ( qtMax = (python.import "qtmax") (((((qtMax.GetQMaxMainWindow()).menuBar()).children())[2].children())[3]).setFixedHeight 0 --messageBox "Licence Name should be hidden" --sleep (3) ) fn fn_openLayerExplorer = -- opens layer explorer (preferably docked or tabbed to scene explorer) ( macros.run "Scene Explorer" "SELayerExplorer" ) fn fn_displayStats = -- toggles displaying viewport statistics ( ( struct view (id, tm) local prev = viewport.activeViewport with redraw off local views = for v = 1 to viewport.numViews collect ( viewport.activeViewport = v actionMan.executeAction 0 "40829" -- Tools: Show Statistics Toggle view id:v tm:(viewport.GetTM()) ) viewport.activeViewport = prev views ) ) timerValUp = 0 Rollout delayedExecutionDialog "Delayed Exectution v0.01" ( label lbl1 "Delayed execution::" align:#center enabled:false label lbl2 "Executing in 5" align:#center enabled:false height:70 timer clock20 "testClock" interval:1000 -- 1st-5th ticks delay, 6th tick execution, 7th-9th ticks exit delay, 10th tick exit and dialog destroy -- 500ms means whole operation will take 500ms * 10 ticks = 5 seconds on clock20 tick do ( timerValUp = timerValUp+1 case timerValUp of ( 1: ( lbl2.text = ("Executing in 5")) 2: ( lbl2.text = ("Executing in 4")) 3: ( lbl2.text = ("Executing in 3")) 4: ( lbl2.text = ("Executing in 2")) 5: ( lbl2.text = ("Executing in 1")) 6: ( lbl2.text = ("Executing commands:") lbl2.text = lbl2.text + "\nHiding licence owner UID." fn_hideLicence() --fn_setStatistics() lbl2.text = lbl2.text + "\nToggling stats on all viewports." fn_displayStats() lbl2.text = lbl2.text + "\nEnabling Layer Explorer." fn_openLayerExplorer() ) 7: ( lbl2.text) 8: ( lbl2.text = ("Commands Executed.")) 9: ( lbl2.text = ("Exiting.")) 10:((try (destroyDialog delayedExecutionDialog) catch() )) ) ) ) createDialog delayedExecutionDialog 200 100