maxscript/maxscript.h File Reference

#include "../WindowsDefines.h"
#include <stdlib.h>
#include <stdio.h>
#include <float.h>
#include <math.h>
#include "ScripterExport.h"
#include "kernel/exceptions.h"
#include "kernel/interupts.h"
#include "../strbasic.h"
#include "../ref.h"
#include "../DefaultActions.h"
#include "../dllutilities.h"
#include "../iFnPub.h"
#include "../IParamm2.h"
#include "kernel/value.h"
#include "util/sceneio.h"
#include "foundation/arrays.h"
#include "foundation/hashtable.h"
#include "foundation/name.h"
#include "foundation/streams.h"
#include "foundation/strings.h"
#include "foundation/functions.h"
#include "compiler/thunks.h"
#include "kernel/MAXScript_TLS.h"
#include "macros/value_locals.h"
#include "kernel/MaxscriptTypedefs.h"

Classes

struct  message_box_data
 
class  mxs_notify_ref_data
 
class  ScopedErrorTracebackDisable
 Class that uses the RAII idiom to push/pop the error traceback disable state. More...
 
class  MAXScriptPrefs
 
class  ActiveXLicensor
 
class  TempQuietMode
 
class  TempBitmapManagerSilentMode
 
struct  mxs_value_id_pair
 

Namespaces

 MAXScript
 

Macros

#define WIN32_LEAN_AND_MEAN
 
#define NOT_SUPPORTED_BY_PRODUCT(fn)   throw RuntimeError (_M("Feature not available: "), _M(#fn));
 
#define END   NULL
 
#define MAXSCRIPT_UTILITY_CLASS_ID   Class_ID(0x4d64858, 0x16d1751d)
 
#define MAX_SCRIPT_DIR   _M("scripts")
 
#define SCRIPT_AUTOLOAD_DIR   _M("Startup\\")
 
#define no_mb_chars   (MB_CUR_MAX == 1)
 
#define bytelen(s)   strlen(s)
 
#define MXS_ADD_ROLLOUT_PAGE   (WM_USER + 0x100)
 
#define MXS_DELETE_ROLLOUT_PAGE   (WM_USER + 0x101)
 
#define MXS_REDRAW_VIEWS   (WM_USER + 0x102)
 
#define MXS_EDIT_SCRIPT   (WM_USER + 0x103)
 
#define MXS_NEW_SCRIPT   (WM_USER + 0x104)
 
#define MXS_DISPLAY_BITMAP   (WM_USER + 0x105)
 
#define MXS_ERROR_MESSAGE_BOX   (WM_USER + 0x106)
 
#define MXS_PRINT_STRING   (WM_USER + 0x107)
 
#define MXS_LISTENER_EVAL   (WM_USER + 0x108)
 
#define MXS_MESSAGE_BOX   (WM_USER + 0x109)
 
#define MXS_INITIALIZE_MAXSCRIPT   (WM_USER + 0x10A)
 
#define MXS_KEYBOARD_INPUT   (WM_USER + 0x10B)
 
#define MXS_SHOW_SOURCE   (WM_USER + 0x10C)
 
#define MXS_TAKE_FOCUS   (WM_USER + 0x10D)
 
#define MXS_STOP_CREATING   (WM_USER + 0x10E)
 
#define MXS_CLOSE_DOWN   (WM_USER + 0x10F)
 
#define MXS_STOP_EDITING   (WM_USER + 0x110)
 
#define MXS_LOAD_STARTUP_SCRIPTS   (WM_USER + 0x111)
 
#define MXS_EXECUTE_MACRO   (WM_USER + 0x112)
 
#define MXS_RESTART_EDITING   (WM_USER + 0x113)
 
#define MXS_NOTIFY_REF_DEPENDENTS   (WM_USER + 0x114)
 
#define MSPLUGINCLASS_STOPEDITING   (WM_USER + 0x115)
 
#define MSPLUGINCLASS_RESTARTEDITING   (WM_USER + 0x116)
 
#define key_arg(key)   _get_key_arg(arg_list, count, n_##key)
 
#define key_arg_or_default(key, def)   _get_key_arg_or_default(arg_list, count, n_##key##, def)
 
#define int_key_arg(key, var, def)   ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_int())
 
#define intptr_key_arg(key, var, def)   ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_intptr())
 
#define float_key_arg(key, var, def)   ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_float())
 
#define bool_key_arg(key, var, def)   ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_bool())
 
#define interval_key_arg(key, var, def)   ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_interval())
 
#define timevalue_key_arg(key, var, def)   ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_timevalue())
 
#define node_key_arg(key, var, def)   ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_node())
 
#define string_key_arg(key, var, def)   ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_string())
 
#define check_arg_count(fn, w, g)   if ((w) != (g)) throw ArgCountError (_M(#fn), w, g)
 
#define check_gen_arg_count(fn, w, g)   if ((w) != (g + 1)) throw ArgCountError (_M(#fn), w, g + 1)
 
#define check_arg_count_with_keys(fn, w, g)   if (!(g == w || (g > w && arg_list[w] == &keyarg_marker))) throw ArgCountError (_M(#fn), w, count_with_keys())
 
#define check_gen_arg_count_with_keys(fn, w, g)   if (!(g == w || (g > w && arg_list[w-1] == &keyarg_marker))) throw ArgCountError (_M(#fn), w, count_with_keys() + 1)
 
#define count_with_keys()   _count_with_keys(arg_list, count)
 
#define bool_result(val)   ((val) ? &true_value : &false_value)
 
#define MXS_range_check(_val, _lowerLimit, _upperLimit, _desc)
 
#define mputs   thread_local(current_stdout)->puts /* current MAXScript stdout output... */
 
#define mputch   thread_local(current_stdout)->putch /* current MAXScript stdout output... */
 
#define mprintf   thread_local(current_stdout)->printf
 
#define mflush   thread_local(current_stdout)->flush
 
#define INTERRUPT_EVAL   0x0001
 
#define type_check(val, cl, where)   if (val->tag != class_tag(cl)) throw TypeError (where, val, &cl##_class);
 
#define set_english_numerics()
 
#define reset_numerics()
 
#define SOURCE_STREAM_ENCRYPTED_FLAG   1 /* flag set in thread local source_flags when source is encrypted */
 

Typedefs

typedef void(* utility_installer) (Rollout *ro)
 
typedef Value *(* autocad_point_reader) (MCHAR *str)
 

Functions

double EPS (float v)
 
double EPS (double v)
 
double EPS (int v)
 
double EPS (INT64 v)
 
double EPS (DWORD v)
 
double EPS (short v)
 
void out_of_memory ()
 
void bad_delete ()
 
ScripterExport Value_get_key_arg (Value **arg_list, int count, Value *key_name)
 
ScripterExport Value_get_key_arg_or_default (Value **arg_list, int count, Value *key_name, Value *def)
 
ScripterExport MCHARsave_string (const MCHAR *str)
 
MCHAR wputch (HWND w, const MCHAR *buf, const MCHAR *bufp, const MCHAR c)
 
MCHARwputs (HWND w, const MCHAR *buf, const MCHAR *bufp, const MCHAR *str)
 
int wprintf (HWND w, const MCHAR *buf, const MCHAR *bufp, const MCHAR *format,...)
 
void wflush (HWND w, const MCHAR *buf, const MCHAR *bufp)
 
ScripterExport ObjectGet_Object_Or_XRef_BaseObject (Object *obj)
 
ScripterExport int namify (MCHAR *n, int type, bool bStripTrailing=true)
 
ScripterExport void install_utility_page (Rollout *rollout)
 
ScripterExport int mxs_rand ()
 
ScripterExport INT64 mxs_rand64 ()
 
ScripterExport void mxs_seed (int)
 
ScripterExport int random_range (int from, int to)
 
ScripterExport INT64 random_range (INT64 from, INT64 to)
 
ScripterExport float random_range (float from, float to)
 
ScripterExport double random_range (double from, double to)
 
ScripterExport void dlx_detaching (HINSTANCE hinstance)
 
ScripterExport void define_system_global (const MCHAR *name, Value *(*getter)(), Value *(*setter)(Value *))
 
ScripterExport void define_system_global_replace (const MCHAR *name, Value *(*getter)(), Value *(*setter)(Value *))
 
ScripterExport void define_struct_global (const MCHAR *name, const MCHAR *struct_name, Value *(*getter)(), Value *(*setter)(Value *))
 
ScripterExport void printable_name (MSTR &name)
 
ScripterExport void show_source_pos ()
 
ScripterExport void show_listener ()
 
ScripterExport void init_MAXScript ()
 
ScripterExport void set_utility_installer (utility_installer ui)
 
ScripterExport void reset_utility_installer ()
 
ScripterExport void error_message_box (MAXScriptException &e, const MCHAR *caption)
 
ScripterExport void set_autocad_point_reader (autocad_point_reader apr)
 
ScripterExport BOOL get_error_trace_back_disabled ()
 
ScripterExport void set_error_trace_back_disabled (BOOL isTraceBackDisabled)
 
ScripterExport BOOL ExecuteMAXScriptScript (const MCHAR *s, BOOL quietErrors=FALSE, FPValue *fpv=NULL)
 Function compiles and evaluates the specified string. More...
 
ScripterExport ValueExecuteScript (CharStream *source, bool *res)
 Functions compiles and evaluates a CharStream Maxscript expression. More...
 
ScripterExport void filein_script (const MCHAR *filename=NULL)
 Executes the given Maxscript file. More...
 
ScripterExport BOOL filein_script_ex (const MCHAR *filename, MCHAR *error_message)
 Executes the given Maxscript file. More...
 
ScripterExport void open_script_editor (const MCHAR *filename=NULL)
 Opens the specified file in the Maxscript editor. More...
 
ScripterExport DWORD ProcessDefaultActionVal (Value *inpActionVal, DWORD defaultAction=DEFAULTACTIONS_LOGMSG)
 
ScripterExport void listener_message (UINT iMsg, WPARAM wParam, LPARAM lParam, BOOL block_flag)
 
int _count_with_keys (Value **arg_list, int count)
 
ScripterExport BOOL GetPrintAllElements ()
 
ScripterExport BOOL SetPrintAllElements (BOOL)
 
ScripterExport bool GetDontRepeatMessages ()
 
ScripterExport bool SetDontRepeatMessages (bool)
 
ScripterExport bool CanChangeGroupFlags (INode *node)
 
ScripterExport BOOL Find_MXS_Name_For_Obj (Animatable *obj, MSTR &name, BOOL explicitName=TRUE)
 
ScripterExport void Replace_LF_with_CRLF (MSTR &string)
 
ScripterExport void Replace_CRLF_with_LF (MSTR &string)
 
ScripterExport void checkFileOpenModeValidity (const MCHAR *mode)
 
ScripterExport BOOL max_name_match (const MCHAR *max_name, const MCHAR *pattern, bool caseSensitive=false)
 
ScripterExport BitmapCreateBitmapFromBitmapInfo (BitmapInfo &bitmapInfo)
 
ScripterExport int GetStorableBitmapInfoTypeForBitmapInfoType (int type)
 
ScripterExport int ConvertValueToID (mxs_value_id_pair pairs[], int count, Value *val, int def_id=-1)
 
ScripterExport ValueConvertIDToValue (mxs_value_id_pair pairs[], int count, int id, Value *def_val=NULL)
 
ScripterExport int GetUIScaledValue (int value)
 
ScripterExport int GetValueUIUnscaled (int value)
 

Variables

static const int PROPNAME = 1
 
static const int CLASSNAME = 2
 
static const int DROPSPACES = 3
 
ScripterExport HashTableenglish_to_local
 
ScripterExport HashTablelocal_to_english
 
ScripterExport BOOL non_english_numerics
 
ScripterExport InterfaceMAXScript_interface
 
ScripterExport Interface7MAXScript_interface7
 
ScripterExport Interface8MAXScript_interface8
 
ScripterExport Interface9MAXScript_interface9
 
ScripterExport Interface11MAXScript_interface11
 
ScripterExport Interface13MAXScript_interface13
 
ScripterExport Interface14MAXScript_interface14
 
ScripterExport BOOL escape_enabled
 
ScripterExport BOOL MAXScript_detaching
 
ScripterExport BOOL MAXScript_running
 
ScripterExport HWND main_thread_window
 
ScripterExport BOOL progress_bar_up
 
ScripterExport IMXSDebuggertheMXSDebugger
 The MXS debugger interface. A Singleton. More...
 
ScripterExport HashTableglobals
 
ScripterExport HashTablepersistents
 
ScripterExport Listenerthe_listener
 
ScripterExport HWND the_listener_window
 
ScripterExport RandGeneratorClassIDRandGenerator
 

Macro Definition Documentation

#define WIN32_LEAN_AND_MEAN
#define NOT_SUPPORTED_BY_PRODUCT (   fn)    throw RuntimeError (_M("Feature not available: "), _M(#fn));
#define END   NULL
#define MAXSCRIPT_UTILITY_CLASS_ID   Class_ID(0x4d64858, 0x16d1751d)
#define MAX_SCRIPT_DIR   _M("scripts")
#define SCRIPT_AUTOLOAD_DIR   _M("Startup\\")
#define no_mb_chars   (MB_CUR_MAX == 1)
#define bytelen (   s)    strlen(s)
#define MXS_ADD_ROLLOUT_PAGE   (WM_USER + 0x100)
#define MXS_DELETE_ROLLOUT_PAGE   (WM_USER + 0x101)
#define MXS_REDRAW_VIEWS   (WM_USER + 0x102)
#define MXS_EDIT_SCRIPT   (WM_USER + 0x103)
#define MXS_NEW_SCRIPT   (WM_USER + 0x104)
#define MXS_DISPLAY_BITMAP   (WM_USER + 0x105)
#define MXS_ERROR_MESSAGE_BOX   (WM_USER + 0x106)
#define MXS_PRINT_STRING   (WM_USER + 0x107)
#define MXS_LISTENER_EVAL   (WM_USER + 0x108)
#define MXS_MESSAGE_BOX   (WM_USER + 0x109)
#define MXS_INITIALIZE_MAXSCRIPT   (WM_USER + 0x10A)
#define MXS_KEYBOARD_INPUT   (WM_USER + 0x10B)
#define MXS_SHOW_SOURCE   (WM_USER + 0x10C)
#define MXS_TAKE_FOCUS   (WM_USER + 0x10D)
#define MXS_STOP_CREATING   (WM_USER + 0x10E)
#define MXS_CLOSE_DOWN   (WM_USER + 0x10F)
#define MXS_STOP_EDITING   (WM_USER + 0x110)
#define MXS_LOAD_STARTUP_SCRIPTS   (WM_USER + 0x111)
#define MXS_EXECUTE_MACRO   (WM_USER + 0x112)
#define MXS_RESTART_EDITING   (WM_USER + 0x113)
#define MXS_NOTIFY_REF_DEPENDENTS   (WM_USER + 0x114)
#define MSPLUGINCLASS_STOPEDITING   (WM_USER + 0x115)
#define MSPLUGINCLASS_RESTARTEDITING   (WM_USER + 0x116)
#define key_arg (   key)    _get_key_arg(arg_list, count, n_##key)
#define key_arg_or_default (   key,
  def 
)    _get_key_arg_or_default(arg_list, count, n_##key##, def)
#define int_key_arg (   key,
  var,
  def 
)    ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_int())
#define intptr_key_arg (   key,
  var,
  def 
)    ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_intptr())
#define float_key_arg (   key,
  var,
  def 
)    ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_float())
#define bool_key_arg (   key,
  var,
  def 
)    ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_bool())
#define interval_key_arg (   key,
  var,
  def 
)    ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_interval())
#define timevalue_key_arg (   key,
  var,
  def 
)    ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_timevalue())
#define node_key_arg (   key,
  var,
  def 
)    ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_node())
#define string_key_arg (   key,
  var,
  def 
)    ((var = _get_key_arg(arg_list, count, n_##key)) == &unsupplied ? def : var->to_string())
#define check_arg_count (   fn,
  w,
 
)    if ((w) != (g)) throw ArgCountError (_M(#fn), w, g)
#define check_gen_arg_count (   fn,
  w,
 
)    if ((w) != (g + 1)) throw ArgCountError (_M(#fn), w, g + 1)
#define check_arg_count_with_keys (   fn,
  w,
 
)    if (!(g == w || (g > w && arg_list[w] == &keyarg_marker))) throw ArgCountError (_M(#fn), w, count_with_keys())
#define check_gen_arg_count_with_keys (   fn,
  w,
 
)    if (!(g == w || (g > w && arg_list[w-1] == &keyarg_marker))) throw ArgCountError (_M(#fn), w, count_with_keys() + 1)
#define count_with_keys ( )    _count_with_keys(arg_list, count)
#define bool_result (   val)    ((val) ? &true_value : &false_value)
#define MXS_range_check (   _val,
  _lowerLimit,
  _upperLimit,
  _desc 
)
Value:
if (_val < _lowerLimit || _val > _upperLimit) { \
MCHAR buf[256]; \
MCHAR buf2[128]; \
_tcscpy(buf,_desc); \
_tcscat(buf,_M(" < ")); \
_sntprintf(buf2, 128, _M("%g"), EPS(_lowerLimit)); \
_tcscat(buf,buf2); \
_tcscat(buf,_M(" or > ")); \
_sntprintf(buf2, 128, _M("%g"), EPS(_upperLimit)); \
_tcscat(buf,buf2); \
_tcscat(buf,_M(": ")); \
_sntprintf(buf2, 128, _M("%g"), EPS(_val)); \
_tcscat(buf,buf2); \
throw RuntimeError (buf); \
}
double EPS(float v)
Definition: maxscript.h:83
#define MCHAR
MBCS/Unicode helper defines std::wofstream doesn't mix well with Unicode.
Definition: strbasic.h:42
#define _M(x)
Used to wrap string literals.
Definition: strbasic.h:67
Definition: exceptions.h:235
#define mputs   thread_local(current_stdout)->puts /* current MAXScript stdout output... */
#define mputch   thread_local(current_stdout)->putch /* current MAXScript stdout output... */
#define mprintf   thread_local(current_stdout)->printf
#define mflush   thread_local(current_stdout)->flush
#define INTERRUPT_EVAL   0x0001
#define type_check (   val,
  cl,
  where 
)    if (val->tag != class_tag(cl)) throw TypeError (where, val, &cl##_class);
#define set_english_numerics ( )
Value:
MCHAR* locale; \
MCHAR slocale[256]; \
{ \
locale = _tsetlocale(LC_NUMERIC, NULL); \
_tcsncpy(slocale, locale, sizeof(slocale)/sizeof(slocale[0])); \
_tsetlocale(LC_NUMERIC, _M("C")); \
}
#define NULL
Definition: autoptr.h:18
#define MCHAR
MBCS/Unicode helper defines std::wofstream doesn't mix well with Unicode.
Definition: strbasic.h:42
ScripterExport BOOL non_english_numerics
#define _M(x)
Used to wrap string literals.
Definition: strbasic.h:67
#define reset_numerics ( )
Value:
_tsetlocale(LC_NUMERIC, slocale);
#define NULL
Definition: autoptr.h:18
ScripterExport BOOL non_english_numerics
#define SOURCE_STREAM_ENCRYPTED_FLAG   1 /* flag set in thread local source_flags when source is encrypted */

Typedef Documentation

typedef void(* utility_installer) (Rollout *ro)
typedef Value*(* autocad_point_reader) (MCHAR *str)

Function Documentation

double EPS ( float  v)
inline
83 { return _isnan(v) ? (v) : fabs(v) < FLT_EPSILON ? 0.0 : (v); } // small number round down for %g float printing
double EPS ( double  v)
inline
84 { return _isnan(v) ? (v) : fabs(v) < DBL_EPSILON ? 0.0 : (v); } // small number round down for %g double printing
double EPS ( int  v)
inline
85 { return (double)v; }
double EPS ( INT64  v)
inline
86 { return (double)v; }
double EPS ( DWORD  v)
inline
87 { return (double)v; }
double EPS ( short  v)
inline
88 { return (double)v; }
void out_of_memory ( )
void bad_delete ( )
ScripterExport Value* _get_key_arg ( Value **  arg_list,
int  count,
Value key_name 
)
ScripterExport Value* _get_key_arg_or_default ( Value **  arg_list,
int  count,
Value key_name,
Value def 
)
ScripterExport MCHAR* save_string ( const MCHAR str)
MCHAR wputch ( HWND  w,
const MCHAR buf,
const MCHAR bufp,
const MCHAR  c 
)
MCHAR* wputs ( HWND  w,
const MCHAR buf,
const MCHAR bufp,
const MCHAR str 
)
int wprintf ( HWND  w,
const MCHAR buf,
const MCHAR bufp,
const MCHAR format,
  ... 
)
void wflush ( HWND  w,
const MCHAR buf,
const MCHAR bufp 
)
ScripterExport Object* Get_Object_Or_XRef_BaseObject ( Object obj)
ScripterExport int namify ( MCHAR n,
int  type,
bool  bStripTrailing = true 
)
ScripterExport void install_utility_page ( Rollout rollout)
ScripterExport int mxs_rand ( )
ScripterExport INT64 mxs_rand64 ( )
ScripterExport void mxs_seed ( int  )
ScripterExport int random_range ( int  from,
int  to 
)
ScripterExport INT64 random_range ( INT64  from,
INT64  to 
)
ScripterExport float random_range ( float  from,
float  to 
)
ScripterExport double random_range ( double  from,
double  to 
)
ScripterExport void dlx_detaching ( HINSTANCE  hinstance)
ScripterExport void define_system_global ( const MCHAR name,
Value *(*)()  getter,
Value *(*)(Value *)  setter 
)
ScripterExport void define_system_global_replace ( const MCHAR name,
Value *(*)()  getter,
Value *(*)(Value *)  setter 
)
ScripterExport void define_struct_global ( const MCHAR name,
const MCHAR struct_name,
Value *(*)()  getter,
Value *(*)(Value *)  setter 
)
ScripterExport void printable_name ( MSTR name)
ScripterExport void show_source_pos ( )
ScripterExport void show_listener ( )
ScripterExport void init_MAXScript ( )
ScripterExport void set_utility_installer ( utility_installer  ui)
ScripterExport void reset_utility_installer ( )
ScripterExport void error_message_box ( MAXScriptException e,
const MCHAR caption 
)
ScripterExport void set_autocad_point_reader ( autocad_point_reader  apr)
ScripterExport BOOL get_error_trace_back_disabled ( )
ScripterExport void set_error_trace_back_disabled ( BOOL  isTraceBackDisabled)
ScripterExport BOOL ExecuteMAXScriptScript ( const MCHAR s,
BOOL  quietErrors = FALSE,
FPValue fpv = NULL 
)

Function compiles and evaluates the specified string.

If the string is successfully compiled and evaluated, and a pointer to an FPValue is provided, the return value is converted to an FPValue and returned through the referenced FPValue. If the string is not successfully compiled and evaluated, error messages are logged to LogSys if net rendering. If not net rendering, error messages are written to Listener or logged to LogSys. Note: This must be called from the main max thread (That contains UI Controls). This is due to the possibility that results from the Maxscript actions can cause the UI to be updated. And since Much of the UI contains WPF Elements which will throw an exception if NOT updated from the main thread.

Parameters
s- Points to a null-terminated string that specifies the MAXScript commands to compile and evaluate. This expects a string containing Maxscript expressions, NOT a file path.
quietErrors- If TRUE, or net rendering, errors are logged to LogSys. If FALSE and not net rendering, errors are logged to Listener.
fpv- Optionally points to an FPValue. If not NULL, the result of the script evaluation is converted to an FPValue and stored in the specified FPValue.
Returns
Returns TRUE if script was executed successfully.
Note
As of 3ds Max 2016, if the result of the script evaluation cannot be converted to an FPValue, the FPValue is set to TYPE_VALUE and the Value* is stored in it. The Value* is guaranteed to be protected from garbage collection only until a new Value* is created or a new expression is evaluated in the calling thread. So the calling code must protect the Value* from garbage collection as soon as possible. Typically this is done via value local storage (for example, one_value_local), a ValueHolder, or a ValueHolderMember. For example:
1 FPValue result;
2 if (!ExecuteMAXScriptScript(fileReader.ReadFull().ToMCHAR(), false, &result))
3  return;
4 if (result.type != TYPE_VALUE)
5  return;
6 ValueHolderMember res(result.v);
ScripterExport Value* ExecuteScript ( CharStream source,
bool *  res 
)

Functions compiles and evaluates a CharStream Maxscript expression.

Returns Value* resulting from evaluating source. If res is non-NULL, will contain TRUE on return if script was executed successfully, FALSE if not. Evaluation is within a try/catch, so this function will not throw.

ScripterExport void filein_script ( const MCHAR filename = NULL)

Executes the given Maxscript file.

Internally this calls filein_script_ex.

Parameters
filename- If filename is NULL, this will open a dialog prompting the user to choose a file path to an existing script. If the parameter is non-null, then the given file will be evaluated and compiled.
ScripterExport BOOL filein_script_ex ( const MCHAR filename,
MCHAR error_message 
)

Executes the given Maxscript file.

Parameters
[in]filename- The fully qualified path to the existing file. This can be either maxscript files (*.ms), or maxscript zip files (*.mzp), or encrypted maxscript files (*.mse).
[out]error_message- String containing error messages if any.
Returns
- TRUE if the script was successfully evaluated and compiled, FALSE otherwise.
ScripterExport void open_script_editor ( const MCHAR filename = NULL)

Opens the specified file in the Maxscript editor.

Parameters
filename- If filename is NULL, this will open a dialog prompting the user to choose a file path to an existing script. If the filename is not found, and empty script is opened in the script editor with the specified filename. If the parameter is non-null, then the given file will be opened in the Maxscript editor.
ScripterExport DWORD ProcessDefaultActionVal ( Value inpActionVal,
DWORD  defaultAction = DEFAULTACTIONS_LOGMSG 
)
ScripterExport void listener_message ( UINT  iMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL  block_flag 
)
int _count_with_keys ( Value **  arg_list,
int  count 
)
inline
393 {
394  // compute # args before any key-args
395  for (int i = 0; i < count; i++)
396  if (arg_list[i] == (Value*)&keyarg_marker)
397  return i;
398  return count;
399 }
Definition: value.h:106
ScripterExport BOOL GetPrintAllElements ( )
ScripterExport BOOL SetPrintAllElements ( BOOL  )
ScripterExport bool GetDontRepeatMessages ( )
ScripterExport bool SetDontRepeatMessages ( bool  )
ScripterExport bool CanChangeGroupFlags ( INode node)
ScripterExport BOOL Find_MXS_Name_For_Obj ( Animatable obj,
MSTR name,
BOOL  explicitName = TRUE 
)
ScripterExport void Replace_LF_with_CRLF ( MSTR string)
ScripterExport void Replace_CRLF_with_LF ( MSTR string)
ScripterExport void checkFileOpenModeValidity ( const MCHAR mode)
ScripterExport BOOL max_name_match ( const MCHAR max_name,
const MCHAR pattern,
bool  caseSensitive = false 
)
ScripterExport Bitmap* CreateBitmapFromBitmapInfo ( BitmapInfo bitmapInfo)
ScripterExport int GetStorableBitmapInfoTypeForBitmapInfoType ( int  type)
ScripterExport int ConvertValueToID ( mxs_value_id_pair  pairs[],
int  count,
Value val,
int  def_id = -1 
)
ScripterExport Value* ConvertIDToValue ( mxs_value_id_pair  pairs[],
int  count,
int  id,
Value def_val = NULL 
)

Variable Documentation

const int PROPNAME = 1
static
const int CLASSNAME = 2
static
const int DROPSPACES = 3
static
ScripterExport HashTable* english_to_local
ScripterExport HashTable* local_to_english
ScripterExport BOOL non_english_numerics
ScripterExport Interface* MAXScript_interface
ScripterExport Interface7* MAXScript_interface7
ScripterExport Interface8* MAXScript_interface8
ScripterExport Interface9* MAXScript_interface9
ScripterExport Interface11* MAXScript_interface11
ScripterExport Interface13* MAXScript_interface13
ScripterExport Interface14* MAXScript_interface14
ScripterExport BOOL escape_enabled
ScripterExport BOOL MAXScript_detaching
ScripterExport BOOL MAXScript_running
ScripterExport HWND main_thread_window
ScripterExport BOOL progress_bar_up
ScripterExport IMXSDebugger* theMXSDebugger

The MXS debugger interface. A Singleton.

ScripterExport HashTable* persistents
ScripterExport Listener* the_listener
ScripterExport HWND the_listener_window
ScripterExport RandGenerator* ClassIDRandGenerator