This topic describes new items and changes that affect the 3ds Max 2018 C++ SDK.
The Developer's Guide has a new Icon Reference that lists all the standard system icons, their paths, and resolutions, available in
UI_ln/IconsDark.rcc and UI_ln/IconsLight.rcc. See Using Multi-Res Icons in Max and Qt for information about how to load and use these icons
in your plug-ins.
3ds Max 2018 is not binary compatible with previous versions. This means that plug-ins must be recompiled using the 3ds Max 2018 SDK and the Microsoft Visual C/C++ version 14.0 compiler. See the SDK Requirements to know the platform requirements for building plug-ins in 3ds Max 2018.
3ds Max 2018 now uses Qt 5.6.2, and plug-ins can build UIs in Qt using the standard GPL Qt 5.6.2 distribution, and the Visual Studio 2015 Qt add-on. See Using Qt with 3ds Max Plug-ins for more information.
In preparation of deprecating the Parameter Block 1 system in the future, plug-in developers should start migrating projects to use Parameter Block 2. All samples in the SDK have been migrated, and the Developer Guide now has a Porting Guide.
These headers contain some small changes due to this migration: include\iparamb.h include\iparamb2.h include\iparamb2.inline.h include\iparamm2.h
Note: Parameter Block 1 is not deprecated in this release, but will be in a future release.
PBAccessor now has new PreSet() and PostSet() methods, which guarantee the state of the value returned by GetValue() to be either the original or new value, respectively. In general, plug-ins should now use PreSet() instead of Set().
ParamBlock2 now supports Point2 and IParamBlock2 value types.
PB2Value has some new helper methods for handling strings, Initialize() and ReplaceString().
The new maxsdk\include\IMNMeshDataChannel.h contains classes and enums that allow you to create additional operators ("engines") to be used by the Data Channel Modifier.
The new IAdjustTangents class (istdplug.h) supports tangent adjustment.
Actiontables::IconSize - adds new sizes (to support HDPI) 30x30, 36x36, 46x48QmaxDockingWinHostDelegate bool SetUserDlgProc(ParamBlockDesc2* pbd, ParamMap2UserDlgProc* proc=NULL); - Previously was void typeInterface17 - addedShowProductHelp* - all return bool now to indicate the help was displayedMCGFILE_DROPTYPE for MCGQMenuBarINotificationManager::NotifyRenderSettingsEvent and INotificationManager::NotifyEnvironmentEventIRendParams2 interface with new methodsTranslator::Translate – added paramTranslator::TranslateKeyframeTranslator::InvalidateParentsThe ClassDesc::InternalName() returns a fixed, parsable internal name for the plug-in.
By default, Plug-in names exposed to MAXScript are generated using both the strings from ClassName() and InternalName(). You can change this behavior by returning true from ClassDesc::UseOnlyInternalNameForMAXScriptExposure(), in which case the plug-in exposes only its InternalName(). We recommend that new plugins implement this method and return true.
LinearShape::CreateTriObjRep(TimeValue t)SimpleShape::CreateTriObjRep(TimeValue t)SimpleSpline::CreateTriObjRepSplineShape::CreateTriObjRepTriObj::CreateTriObjRepMaxSDK::QmaxMainWindow* GetQmaxMainWindow()Get/SetEnableTMCache, NonInteractiveMode, SecureMode, SelectedKeyTangent, PathColoringType, Trajectory methodsaligned_malloc, aligned_free, aligned_reallocIMNMeshLegacySnapNOTIFY_SCENE_EXPLORER_NEEDS_UPDATEHIT_MIRROREDTMControlType2::TYPE_POINT2LISTBOX, TYPE_FLOAT_EDITABLE_COMBOBOXIParameterManager::kPType_Point3SimpleObject cleanup, added new base.SNAP_OVERRIDE_UNSEL_OBJS_ONLY, SNAP_DURING_CREATIONADJTAN_ABSOLUTE, ADJTAN_ANGLE, ADJTAN_LENGTHThe SDK property sheets (maxsdk\ProjectSettings\propertySheets\3dsmax.general.project.settings.props) have been updated with software security settings. Existing projects should be updated to use this property sheet.
Elements of the CUIFrame system have been removed as part of the migration to a native Qt UI for 3ds Max. The following classes are removed:
CUIPosDataCUIFrameMsgHandlerICUIFrameThe CUIFrameMgr::GetCount() method is removed.
The CreateCUIFrameWindow() method is also removed. To create a
new window frame for a toolbar, use MaxSDK::QmaxToolBar() instead. See the maxsdk/howto/ui/cuitest sample for an
example.
See the C++ API Reference > Topics > Deprecated List for more deprecated items.