Undocumented MAXScript Features

Every now and then, I stumbled upon an undocumented command or optional keyword. Some of them were later added to the documentation, many of them are still undocumented. Some of those are listed in this article (I'm skipping a lot of stuff I don't find useful like the non-creatable MEditBkgnd texture map, creatable PFlow related classes etc).

Box3 Values
Just like the documented Box2 class, only in 3D. Pretty handy, using Box3 returned by the getNodeBBox method is much more flexible than the min+max array that's usually used instead. Edit: now documented, see Box3 Values.

Box3() -- returns new 'empty' Box3 value
Box3 <min_point3> <max_point3>
<Box3>.min: Point3
<Box3>.max: Point3
<Box3>.center: Point3
contains <Box3> <point3>
intersects <Box3> <Box3>

translate <Box3> <point3>
scale <Box3> <point3>
enlargeBy <Box3> <float>

rectify <Box3>
makeCube <Box3> <point3> <float>

empty <Box3>
isEmpty <Box3>

getNodeBBox <node>
getModContextBBox <node> <modifier>
-- bool test for contained position
-- bool test for overlapping boxes

-- move box coords by offset
-- scale from the center of the box
-- expand box coords by offset

-- doesn't work
-- cube by center and size

-- set the box to a special 'empty' state
-- bool test for the special 'empty' state

-- node bounding box as a Box3 value
-- modContext bounding box as a Box3 value
Missing Render Dialog Variables
The following variables are missing from the Render Scene Dialog Global System Variables listing.
rendLockImageAspectRatio: Boolean
rendImageAspectRatio: Float
rendPixelAspectRatio: Float
rendUseImgSeq: Boolean
rendImgSeqType: Integer
rendViewID: Integer
Multiplier Curve and Ease Curve Access
Edit: now documented, see Controller Ease and Multiplier Curves.
getMultiplierCurve <controller> <index>
getEaseCurve <controller> <index>
High-precision Matrix Inverse
Used for example by the CreateCameraFromView function.
inverseHighPrecision <matrix3>
Xref Scene Overlay
As mentioned by Eric Craft in the Undocumented MAXScript Features thread.
<XRefScene>.overlay Boolean default:false
Primitive -> BodyObject Conversion
Sphere, Torus, Cylinder etc. convert nicely, Teapot doesn't.
convertToBody <node>
convertToJoinBodies <node>
convertToBodyCutter <node>
Editable Poly Current CommandMode
See the corresponding method in the Edit Poly chapter.
Edit Poly Ready to Bridge
Similar to <EditablePoly>.ReadyToBridgeFlagged(), only for Edit Poly modifier.
Edit Poly Methods
A categorized index of some of these with descriptions and sample code is available on the IllusionCatalyst website. For sample usage and a wrapper in the style of polyop methods, see the polyModOp struct.
<void>setVert <&bitArray>vertSet <&point3>point node:<node>

<void>getVertsUsingFace <&bitArray>vertSet <&bitArray>faceSet node:<node>
<void>getVertsUsingEdge <&bitArray>vertSet <&bitArray>edgeSet node:<node>
<void>getFacesUsingEdge <&bitArray>faceSet <&bitArray>edgeSet node:<node>
<void>getEdgesUsingVert <&bitArray>edgeSet <&bitArray>vertSet node:<node>
<void>getFacesUsingVert <&bitArray>faceSet <&bitArray>vertSet node:<node>
<void>getElementsUsingFace <&bitArray>elementSet <&bitArray>faceSet <&bitArray>fenceSet node:<node>

<point3 by value>GetFaceNormal <index>faceID node:<node>
<point3 by value>GetFaceCenter <index>faceID node:<node>
<float>GetFaceArea <index>faceID node:<node>
<bitArray>GetOpenEdges node:<node>

<integer>getVertexFlags <index>vertexID node:<node>
<integer>getEdgeFlags <index>edgeID node:<node>
<integer>getFaceFlags <index>faceID node:<node>
<void>setVertexFlags <&bitArray>vertexSet <DWORD>flagsToSet flagMask:<DWORD> generateUndoRecord:<bool> node:<node>
<void>setEdgeFlags <&bitArray>edgeSet <DWORD>flagsToSet flagMask:<DWORD> generateUndoRecord:<bool> node:<node>
<void>setFaceFlags <&bitArray>faceSet <DWORD>flagsToSet flagMask:<DWORD> generateUndoRecord:<bool> node:<node>
<bool>getVerticesByFlag <&bitArray>vertexSet <DWORD>flagsRequested flagMask:<DWORD> node:<node>
<bool>getEdgesByFlag <&bitArray>edgeSet <DWORD>flagsRequested flagMask:<DWORD> node:<node>
<bool>getFacesByFlag <&bitArray>faceSet <DWORD>flagsRequested flagMask:<DWORD> node:<node>




There's also a method that's listed with no description:

<void>List node:<node>

It outputs the complete printout of the operations stored by the Edit Poly into the Macro Recorder window. To use it, open the MAXScript Listener window, make sure Macro Recorder is active, and with the Edit Poly modifier active in the stack run:


An example printout in the MacroRecorder window might look like this:

-- Describing all Edit Poly Operations:
subobjectLevel = 2
$.modifiers[#Edit_Poly].SetSelection #Edge #{1, 5, 13, 20, 25, 29, 35, 40, 44, 50, 56, 59, 64, 70, 74, 77, 83, 88, 93, 96, 99, 104, 107, 110, 141, 145, 149, 152, 159, 163, 166..167}
$.modifiers[#Edit_Poly].extrudeEdgeHeight = 1.8
$.modifiers[#Edit_Poly].extrudeEdgeWidth = 0.49
$.modifiers[#Edit_Poly].ButtonOp #ExtrudeEdge
subobjectLevel = 2
$.modifiers[#Edit_Poly].SetSelection #Edge #{1, 5, 13, 20, 25, 29, 35, 40, 44, 50, 56, 59, 64, 70, 74, 77, 83, 88, 93, 96, 99, 104, 107, 110, 141, 145, 149, 152, 159, 163, 166..167}
$.modifiers[#Edit_Poly].chamferEdgeAmount = 1
$.modifiers[#Edit_Poly].chamferEdgeOpen = off
$.modifiers[#Edit_Poly].edgeChamferSegments = 1
$.modifiers[#Edit_Poly].edgeChamferTension = 0.5
$.modifiers[#Edit_Poly].edgeChamferInvert = off
$.modifiers[#Edit_Poly].edgeChamferType = 0
$.modifiers[#Edit_Poly].edgeChamferSmooth = off
$.modifiers[#Edit_Poly].edgeChamferSmoothType = 0
$.modifiers[#Edit_Poly].edgeChamferSmoothThreshold = 30
$.modifiers[#Edit_Poly].edgeChamferQuadIntersections = off
$.modifiers[#Edit_Poly].ButtonOp #ChamferEdge
subobjectLevel = 1
$.modifiers[#Edit_Poly].SetSelection #Vertex #{1, 3, 5, 7, 15, 22, 24, 26..28, 30, 33, 36, 39, 41..42, 45..46, 49..50, 53, 56, 60, 70, 77..78, 80..81, 84..85, 91, 94, 163..194}
$.modifiers[#Edit_Poly].relaxAmount = 0.5
$.modifiers[#Edit_Poly].relaxIterations = 5
$.modifiers[#Edit_Poly].relaxHoldBoundaryPoints = off
$.modifiers[#Edit_Poly].relaxHoldOuterPoints = off
$.modifiers[#Edit_Poly].ButtonOp #Relax
MeshOp Methods
Per-vertex velocity data and isolated texture verts removal.
meshop.getNumVelocity <mesh>
meshop.getVelocity <mesh> <vertex>
meshop.deleteIsoMapVerts <mesh> <mapChannel>
MeshOps Methods
meshOps.clearAllSG <editable_mesh_node_or_modifier>
meshOps.selectBySG <editable_mesh_node_or_modifier>
meshOps.selectByColor <editable_mesh_node_or_modifier>
meshOps.showNormal <editable_mesh_node_or_modifier>
meshOps.autoSmooth <editable_mesh_node_or_modifier>
meshOps.selectByID <editable_mesh_node_or_modifier>
meshOps.attachList <editable_mesh_node_or_modifier>
PolyOp Methods
polyop.checkTriangulation <poly>
polyop.makeVertsPlanar <poly> <vertlist>
PolyOps Methods
Methods corresponding to pushing buttons in the Command Panel, applicable only to Editable Poly scene node.
polyOps.startDivideFace <editable_poly_node>
polyOps.makePlanar <editable_poly_node>
polyOps.startCreateFace <editable_poly_node>
polyOps.weld <editable_poly_node>
polyOps.startCreateVertex <editable_poly_node>
polyOps.resetPlane <editable_poly_node>
polyOps.startWeldTarget <editable_poly_node>
polyOps.autoSmooth <editable_poly_node>
polyOps.break <editable_poly_node>
polyOps.delete <editable_poly_node>
polyOps.startCutEdge <editable_poly_node>
polyOps.selectByID <editable_poly_node>
polyOps.attachList <editable_poly_node>
polyOps.startSlicePlane <editable_poly_node>
polyOps.retriangulate <editable_poly_node>
polyOps.cap <editable_poly_node>
polyOps.startChamferEdge <editable_poly_node>
polyOps.tessellate <editable_poly_node>
polyOps.namedSelCopy <editable_poly_node>
polyOps.startExtrudeFace <editable_poly_node>
polyOps.removeIsolatedVerts <editable_poly_node>
polyOps.hide <editable_poly_node>
polyOps.startEditTri <editable_poly_node>
polyOps.startExtrudeVertex <editable_poly_node>
polyOps.gridAlign <editable_poly_node>
polyOps.startDivideEdge <editable_poly_node>
polyOps.createShapeFromEdges <editable_poly_node>
polyOps.startCreateEdge <editable_poly_node>
polyOps.slice <editable_poly_node>
polyOps.clearAllSG <editable_poly_node>
polyOps.collapse <editable_poly_node>
polyOps.startCutFace <editable_poly_node>
polyOps.selectBySG <editable_poly_node>
polyOps.split <editable_poly_node>
polyOps.startCutVertex <editable_poly_node>
polyOps.flipNormal <editable_poly_node>
polyOps.detach <editable_poly_node>
polyOps.startBevel <editable_poly_node>
polyOps.selectByColor <editable_poly_node>
polyOps.update <editable_poly_node>
polyOps.namedSelPaste <editable_poly_node>
polyOps.startChamferVertex <editable_poly_node>
polyOps.meshSmooth <editable_poly_node>
polyOps.unhide <editable_poly_node>
polyOps.startExtrudeEdge <editable_poly_node>
polyOps.viewAlign <editable_poly_node>
SplineOps Missing Methods
splineOps.startCrossSection <editable_spline_or_line_node_or_modifier>
splineOps.startIntersect <editable_spline_or_line_node_or_modifier>
MaxOps Methods and Properties
<void>maxOps.activateSetKeyMode <void>onOff

<TSTR by value>maxOps.incrementFileName <TSTR by value>fileName versionSeparatorString:<TSTR by value="">
<TSTR by value>maxOps.incrementSceneFileName <TSTR by value>fileName
<TSTR by value>maxOps.incrementImageFileName <TSTR by value>fileName

<enum>maxOps.languageToUseForFileIO -- enums: {#current|#English|#German|#French|#Japanese|#Korean|#Chinese}
RayMeshGridIntersect Methods
<point3><RayMeshGridIntersect>.getHitPoint <integer>index

Returns the hit position for the indexed hit in world space.

<integer><RayMeshGridIntersect>.closestFaceThreshold <point3>p <float>threshold

Similar to closestFace but with a distance limit. The threshold is the farthest distance before it gives up and stops trying to find intersections.

GUID Generator
Next time you need a UUID, you know what to use:
genGUID() --> "{F2FBBC06-1A6B-49C8-9FD6-31C597BA3265}"
ToolTip Customization
See 2 small cookies in 3ds Max 2017 for more details.
viewport.appendTooltip <tooltip_def>
tipSystem.showTip <integer>elapsedTime <string>tipContent <float>xRatio <float>yRatio <HWND>hParent
Other Viewport Methods
viewport.setClipScale <float>scale
Display Manager
Waveform Controller
Both the properties and mixin interface methods of Waveform_Float are undocumented:
<boolean><Waveform_Float>.Insert <index>waveIndex
<boolean><Waveform_Float>.Delete <index>waveIndex
<string><Waveform_Float>.GetName <index>waveIndex
<void><Waveform_Float>.SetName <index>waveIndex <string>name
<float><Waveform_Float>.GetPeriod <index>waveIndex
<void><Waveform_Float>.SetPeriod <index>waveIndex <float>period
<float><Waveform_Float>.GetDutyCycle <index>waveIndex
<void><Waveform_Float>.SetDutyCycle <index>waveIndex <float>duty cycle
<float><Waveform_Float>.GetAmplitude <index>waveIndex
<void><Waveform_Float>.SetAmplitude <index>waveIndex <float>amplitude
<float><Waveform_Float>.GetPhase <index>waveIndex
<void><Waveform_Float>.SetPhase <index>waveIndex <float>phase
<enum><Waveform_Float>.GetBiasType <index>waveIndex -- enums: {#centered|#positive|#negative|#manual}
<void><Waveform_Float>.SetBiasType <index>waveIndex <enum>bias type -- enums: {#centered|#positive|#negative|#manual}
<float><Waveform_Float>.GetBias <index>waveIndex
<void><Waveform_Float>.SetBias <index>waveIndex <float>bias
<enum><Waveform_Float>.GetType <index>waveIndex -- enums: {#square|#sine|#sawtooth|#triangle|#halfsine}
<void><Waveform_Float>.SetType <index>waveIndex <enum>effect type -- enums: {#square|#sine|#sawtooth|#triangle|#halfsine}
<enum><Waveform_Float>.GetEffect <index>waveIndex -- enums: {#add|#multiply|#clamp_above|#clamp_below}
<void><Waveform_Float>.SetEffect <index>waveIndex <enum>effect type -- enums: {#add|#multiply|#clamp_above|#clamp_below}
<boolean><Waveform_Float>.IsEnabled <index>waveIndex
<void><Waveform_Float>.Enable <index>waveIndex <boolean>enabled state
<boolean><Waveform_Float>.GetInverted <index>waveIndex
<void><Waveform_Float>.SetInverted <index>waveIndex <boolean>inverted
<boolean><Waveform_Float>.GetFlipped <index>waveIndex
<void><Waveform_Float>.SetFlipped <index>waveIndex <boolean>flipped
The Painter Interface Spline Constraint
Methods related to setting a spline used for constraining the brush.
<bool>thePainterInterface.setSplineConstraintNode <node>node
SceneExplorerManager Methods
Mentioned in passing inside the What's New section, missing from the Interface: SceneExplorerManager chapter.
SceneExplorerManager.SetActiveExplorer <&TSTR>explorerName
SceneExplorerManager.CreateLayerManager <&TSTR>explorerName
SceneExplorerManager.IsDefaultLayer <RefTarget>layer
SimpleManipulator Flags
The addGizmoMesh method accepts an additional undocumented gizmoScaleToViewport flag. Mesh gizmo added with this flag will try and scale itself to have a constant size in the viewport. This size in pixels is given by the private ManipulatorGizmo::mGizmoSize variable which is not accessible from MAXScript (although there's getGizmoSize/setGizmoSize function ID pair, the property is not published).

Missing and Deprecated colorMan Flags
#BackgroundOdd -- background of odd layers
#BackgroundEven -- background of even layers
#Button -- button background
#ButtonText -- button text
#Background -- deprecated since 3ds Max 2017, use #BackgroundOdd instead
#Window -- deprecated since 3ds Max 2017, use #BackgroundOdd instead
#WindowText -- deprecated since 3ds Max 2017, use #Text instead
#Hilight -- deprecated since 3ds Max 2017, won't be used any more
#Shadow -- deprecated since 3ds Max 2017, won't be used any more
Missing Callback Event Names

Profiler Methods
Missing from the reference, see the Improving Animation Performance using Maya's Profiler knowledge network article.
Custom Attributes Version Handling
Controls whether custom attributes that are merged/loaded should be updated in case of version conflict.
custAttributes.setSceneLoadVersionHandlingBehavior <behavior_name>
custAttributes.setSceneMergeVersionHandlingBehavior <behavior_name>
Valid behavior_name values are:
Schematic View Missing Methods
schematicView.getSchematicViewName <int>index <string>name
schematicView.zoomSelected <string>name
schematicView.close <string>name
Assert Display Getter
Another of the getter/setter pairs that are not mentioned at all or just one of the pair. See 3ds Max Assert Display Functions for its counterpart and more information.
Assert Equal for Point2 & Point4
See assert_point3_equal.
assert_point2_equal <point2>expected <expression>actual [tolerance:<float>] [message:<string>]
assert_point4_equal <point4>expected <expression>actual [tolerance:<float>] [message:<string>]
Probably only related to internal unit test results.
<string>MxsUnitResults.GetAssertFailure <index>index
<string>MxsUnitResults.GetExceptionFailure <index>index
<string>MxsUnitResults.GetMessage <index>index
TMCache Switch
If you ever noticed your scripted rigs breaking in 2017 while they work perfectly well in 2016, be sure to check this. For more information about TMCache, see Fixing IK solver animation editing in 3ds Max 2017.
preferences.enableTMCache = off
DontRepeatMessages Context
Legacy setting, see preferences.dontRepeatRefMsg.
with dontRepeatMessages off ...
Convert to Integer
Unlike the as integer cast, thiw one will error out when a string is passed to it.
int <number>
See RefTargContainer, same constructor and methods apply. For example usage, check the source of my Advanced Sweep scripted modifier where the RefTargContainer is used to store CurveCtl as a maxObject parameter.
Similar to the NodeTransformMonitor but doesn't pass transform messages. Searching cgtalk and looking for denisT's posts and sample code will tell you more, for example Using controllers with scripted plugins - "this node".
nodeMonitor <node>
SnapshotAsMesh Optional RenderMesh Keyword
See the cgtalk thread. Still missing from the official documentation.
snapshotAsMesh <node> [ renderMesh:<boolean> ] 
RenderPresets Optional loadNodes Argument
As mentioned in 3ds max 7 release notes, loading presets that contain node associations displays a dialog requiring user interaction. To bypass the dialog, you can use the following syntax:
<boolean>renderPresets.Load <integer>which <filename>file <bitArray>categories [ loadNodes:<enum: {#Yes|#No|#Cancel|#Prompt}> ]
Specifying loadNodes with #Yes, #No or #Cancel will not display the Prompt window and will perform the same actions as pressing the respective buttons in the prompt. Specifying #Prompt will display the dialog and require user input. If you do not specify loadNodes and the file contains nodes associated, the prompt window will be displayed.

Optional Keyword Arguments for Cloned Objects
Just like with the createInstance function, you can pass any of the constructor arguments when creating a cloned object (say copy obj transform:TM).
copy <MAXWrapper_object> [ keyarg1:v ] [ keyarg2:v ] ..
instance <MAXWrapper_object> [ keyarg1:v ] [ keyarg2:v ] ..
reference <MAXWrapper_object> [ keyarg1:v ] [ keyarg2:v ] ..
CreateInstance Optional ForceCreate Argument
Allows creation of classes that otherwise return Runtime error: Not creatable.
createInstance <MAXClass> forceCreate:<boolean=false> [ keyarg1:v ] [ keyarg2:v ] ...
Scripted SimpleSpline Plug-in
Similar to Scripted SimpleObject Plug-ins, instead of a predefined mesh variable, a bezierShape one is used. See for example my Arrow spline primitive script for example usage.
plugin simpleSpline ...
on buildShape do <expr>
Similar Nodes
Same criteria as used by Edit > Select Similar.
getSimilarNodes <node>
Current Selection Set Name
As displayed in the main menu bar, i.e. returns "Create Selection" if empty.
FromattedPrint String Type
As spotted by Martin Breidt, not only you can pad numbers using formattedPrint, by using the 's' character to indicate the passed argument is a string you can also pad strings:
formattedPrint "string" format:"10s"
--> "    string"
There are other undocumented types used by the format literal, such as c/C (wide/single-byte char), a/A ([−]0xh.hhhh p/P±dd hexadecimal double) or p (hexadecimal pointer address). For more details see the '_snwprintf' function documentation.

Display Filter
Similar to the documented registerSelectFilterCallback.
registerDisplayFilterCallback <filterFunction> <name>
unregisterDisplayFilterCallback <filterFunction>
SkinOps Missing Arguments and Methods
See Anybody know a workaround for the DQ skinning bug?.
skinOps.getVertexDQWeight <Skin> <vertexID>
skinOps.setVertexDQWeight <Skin> <vertexID> <weight>
skinOps.WeightTable <Skin>
Unwrap Globals
mapPath : path to Texture Checker map used in Unwrap UVW
uvChecker_mtl : standard material using the texture in mapPath
Network Render
Is Undo Disabled
Companion function for the enableUndo function.
TheHold Methods
Same as isUndoDisabled above, and a counter for of the nested theHold.Begin() calls.
Other Aliases
productAppID : same as maxOps.productAppID
playbackLoop : same as timeConfiguration.PlaybackLoop
Animatable Pointer
Same as refs.getAddr.
getAnimPointer <MAXWrapper_object>
Hide/show existing dialog without destroying it.
showDialog <rollout> <boolean>
Dialog Visibility
Useful whenever you want to test if the dialog is displayed (for example in the isChecked macroScript event handler). Similar to <rollout>.inDialog.
isDialogVisible <rollout>
Windows Struct Methods
windows.getParentHWND <IntegerPtr>hWnd
Numbered String
Used by Render to Texture to produce a filename with frame number, adds a 4-character zero-padded suffix (or more, if the string representation of number is longer).
createNumberedFilename <name> <frameNr>
Biped Methods
As posted to For those of you still stuck using biped and copy-collections.
<integer>biped.numCopies <collection_value> (#pose|#posture|#track)
<ICP_MXBipedCopy>biped.getCopy <collection_value> (#pose|#posture|#track) <index>
biped.deleteCopy <collection_value> (#pose|#posture|#track) <index>
biped.deleteAllCopies <collection_value> (#pose|#posture|#track)
Is Particle System
isParticleSystem <node>
Direct 3D Cache Allocation
For related methods, check the Direct 3D Cache Allocation Query Functions chapter.
setD3DMeshCacheSize <number>
And related Editable Poly methods:
<void><EditablePoly>.SetCache_SystemOn <bool>on
<void><EditablePoly>.SetCache_SuspendDXCache <bool>suspend
<void><EditablePoly>.SetCache_Cutoff <integer>count
Link Constraint Methods
These used to be erroneously filed under Link_Control and were later removed as a part of the cleanup. They belong to the Link_Constraint chapter.
LinkCtrl.getLinkCount <controller>
LinkCtrl.getLinkTime <controller> <index>
LinkCtrl.setLinkTime <controller> <index> <time>
LinkCtrl.getLinkNode <controller> <index>
LinkCtrl.setLinkNode <controller> <index> <node>
LinkCtrl.addLink <controller> <node> <time>
LinkCtrl.deleteLink <controller> <index>
Commiting/Reverting Temporary 'Set Key animation mode' Buffers
SetKey.commitBuffer <MAXWrapper_object>
SetKey.bufferPresent <MAXWrapper_object>
SetKey.revertBuffer <MAXWrapper_object>
SetKey.subAnimRevertBuffer <MAXWrapper_object> <index>
SetKey.subAnimCommitBuffer <MAXWrapper_object> <index>
SetKey.subAnimBufferPresent <MAXWrapper_object> <index>
Visual Leak Detector
VLD.EnableModule <unused> -- just returns OK
VLD.DisableModule <unused> -- just returns OK
VLD.TestLeakMemory <int_amount>
Exchange Store Plugin Paths
pathConfig.getExchangeStorePlugInInstallPath <string>plugin
Templates and Workspaces
StartupTemplate.Activate <string>
StartupTemplate.GetWorkspace <string>
StartupTemplate.SetWorkspace <string> <string>
StartupTemplate.GetScene <string>
StartupTemplate.GetName <string>
StartupTemplate.GetDescription <string>
StartupTemplate.GetProjectFolder <string>
StartupTemplate.GetThumbnail <string>
StartupTemplate.SelectProjectFolder <string>
StartupTemplate.SelectThumbnail <string>
StartupTemplate.SelectScene <string>
StartupTemplate.SetScene <string> <string>
StartupTemplate.SetName <string> <string>
StartupTemplate.SetDescription <string> <string>
StartupTemplate.SetProjectFolder <string> <string>
StartupTemplate.GetViewSettings <string>
StartupTemplate.GetViewCubeConfig <string>
StartupTemplate.GetRollupConfig <string>
StartupTemplate.GetUIColorSettings <string>
StartupTemplate.GetUserPaths <string>
StartupTemplate.SnapshotViewSettings <string>
StartupTemplate.SnapshotViewCubeConfig <string>
StartupTemplate.SnapshotRollupConfig <string>
StartupTemplate.SnapshotUIColorSettings <string>
StartupTemplate.SnapshotUserPaths <string>
StartupTemplate.Delete <string>
StartupTemplate.Import <filename>
StartupTemplate.Export <string> <filename>
StartupTemplate.Load <filename>
StartupTemplate.LoadAll <???>
StartupTemplate.Save <string> <filename>
StartupTemplate.SaveAll <???>
There are of course many more, like the numerous PolyB* methods, and then a whole lot of global scripted structs like uvwManipUtils, PolyBoost, PolyToolsUI, Ribbon_Modeling, Main_Ribbon and heaps of others but while not documented, those are easy to find and study in the stdscripts folder.

DISCLAIMER: All scripts and snippets are provided as is under Creative Commons Zero (public domain, no restrictions) license. The author and this blog cannot be held liable for any loss caused as a result of inaccuracy or error within these web pages. Use at your own risk.

This Post needs Your Comment!


Thank you!!!
this is valuable resources...i got some solution from this.

Joe Scarr

This rocks! Thanks!


But why is AD not adding it to their doc?

Return to top