This topic will give you a quick overview of the MAXScript language changes and improvements in 3ds Max 2017. For details on each feature, please follow the links to the respective documentation pages.
The new Boolean3 : GeometryClass implements a boolean object with a modern and easier to use interface.
The new Interface:BooleanExplorerManager Core Interface provides MAXScript access to the Boolean Explorer dialog.
The new Interface:BooleanObjectManager Core Interface exposes new Boolean3-related management methods.
The new Preset_Maker : modifier is used by the new Animation Presets functionality.
The new offset: floatController allows the shifting of selected animation tracks in time.
The new Interface:OffsetManager exposes methods for creating and applying Animation Presets and Offset Animations to scene objects.
The new Bezier_Point2 : Point2Controller is used to store Point2 animation keys. It derives from a new Point2Controller superclass.
The following new functions can be used to set, restore, and commit value changes in animation controllers:
The following new functions can be used to construct a new controller using the default class customized by the user via the Assign Controller dialog:
The following new properties can be used to enable/disable the default key creation when animating a previously not animated property, as well as set the default keyframe time, which is not limited to frames 0 or 1 anymore:
The new animateMode System Global variable can be used to enable animation without changing the Auto Key button state in the UI.
The new ART_Renderer : RendererClass exposes the new advanced renderer to MAXScript.
The new ART_Renderer_Noise_Filter : RenderElement allows the noise removal from ART_Render output images via a post process.
The new Sun_Positioner : light implements the light and control gizmo of the new Physical Sun and Sky system that integrates with the ART_Renderer.
The new Physical_Sun___Sky_Environment : textureMap implements the environment map which renders the Physical Sun and Sky system based on the Sun_Positioner's settings.
The new PhysicalMaterial : Material was designed for use with the new ART_Renderer raytracer.
The new colorMap : textureMap offers a simple way to pass a solid color into any map slot, allowing for example the instancing of a color value among independent Materials and Maps.
The new textMap : textureMap allows the procedural creation of texture maps from one or more TextPlus geometry objects.
The new shapeMap : textureMap allows the procedural creation of texture maps from one or more Spline objects, including the legacy Text shape.
The new MultiTile : textureMap implements support for UDIM, custom, Z-Brush and Mudbox-compatible multi-tile textures.
The new TextureObjMask : textureMap implements a texture for controlling inside/outside or above/below masking based on basic geometry primitives.
The new Interface:NVIDIARenderersHelper Core Interface exposes a function to check for the existence of the mental ray and iRay DLLs which are now an installer option.
The new max_Shapemap : textureMap implements the shapeMap texture map as a mental ray shader.
The new TextureObjMasktextureMap : textureMap implements the textureObjMask texture map as a mental ray shader.
The Interface: colorMan has new functions: getColorTheme() and setColorTheme(). The getColorSchemeType() and setColorSchemeType() functions are removed.
Button UI Control, Checkbox UI Control, Mapbutton UI Control, and Materialbutton UI Control – all now support a simpler syntax for displaying images: iconName and iconSize creation parameters.
Several functions in the windows structure and systemTools structure now take a new applyUIScaling parameter to deal with HDPI displays.
There are new "unscaled" versions of these System Globals:
New function to get the scale factor for High DPI displays: GetUIScaleFactor monitorID:<int>.
New arguments have been added to the existing function to get the size of a string in pixels if it was displayed on a command panel: <point2> getTextExtent <string> removeUiScaling:<true> useQtTextWidth:<true>.
The getProperty() and setProperty() functions now have optional removeUIScaling:<bool>/applyUIScaling:<bool> parameters.
The Bitmap and imgTag classes have new iconName:<filename> and iconSize:<point2> parameters.
The new getIconAsBitmap() function in imgTag gets a bitmap from a loaded icon.
The dotNet Struct has a new dotNet.loadIcon() function to load icons.
The getColorSchemeType() and setColorSchemeType() functions are removed from the Interface: colorMan.
The new Interface:MaxThumbnailMgr Core Interface exposes the saving of viewport thumbnails with the saved .MAX file.
The new Interface:IAutoCamMax Core Interface exposes the new viewport navigation Pivot Ball to MAXScript.
The new Interface:SceneConverter Core Interface exposes properties and methods for setting up the scene converter system and its rules.
The following new functions can be used to control the FBX settings dialog:
The following new functions can be used to control the display of the Game Exporter dialog represented by the GameExporter: UtilityPlugin:
The following new functions have been added to the systemTools struct:
The following functions have been removed from the systemTools struct since the respective platforms are not supported by 3ds Max anymore:
New MXSCallstackCaptureEnabled context allows you to better control how the MAXScript callstack is captured.
New function <array>getLastMergedNodes() - returns an array of merged nodes after a merge operation.
The Stack() function has a new exlcudeOwner:<bool> parameter.
The globalVars.gather function in globalVars Structure now has an optional filter function parameter.
Several new Miscellaneous Functions to support advanced debugging:
The new getMaxExtensionVersion() function returns the version number of the current Extension, or 0 if no Extension is installed.
The new isValidValue() function returns False if a value has been deleted, True if it is still valid.
The new refs.getAddr() method can be used to acquire the memory address of any MaxObject as a Pointer value.
The following new System Globals and functions are used internally to control the dependency notification optimizations, and collect related statistics:
OpenEXR : BitmapIO has new functions:
<maxObject>fopenxr.getRenderElementByLayer <integer>layer
<bool>fopenxr.getLayerEnabled <integer>layer
The Interface: AssetManager has a new function:
<IObject>GetAssetById <&TSTR>assetid
It returns the AssetUser object of the asset with the given asset ID.
The following FFD functions now support FFD Spacewarp objects:
Tooltips are now supported for MultiListBox, Listbox, Colorpicker, EditText, ComboBox and Label UI Controls.
The Slider UI Control has a new height creation parameter.
The filename being imported/exported is now returned in callbacks.notificationParam() for callbacskaddScript #postImport and #postExport.
The new convertKelvinToRGB() function returns the RGB color corresponding to black body radiation at the specified temperature in Kelvin.
The new mesh_weld_overlapping_vertices() function welds overlapping vertices in the TriMesh of an Editable_Mesh base object.
The new Scripted Animation Controller Plug-ins allow you to write scripted plug-ins in MAXScript for several controller types.