MXSEditor global utility pugin
This 3ds Max plugin provides a powerful Maxscript interface to the maxscript editor (MXSE) and the underlying Scintilla/SciTE editor component. Additionally it enables the Maxscript Editor to be used as an extended viewport.
FEATURES:
- Maxscript Editor as Extended Viewport
- Extensive control over the Maxscript Editor via maxscript
- Access to the Scintilla/SciTE internal command set (see Scintilla Docs )
- Callback mechanism to get notified about changes and events occuring in the maxscript editor
To make use of the maxscript exposure of the SciTE interface, knowledge of the SciTE interal API is a plus. It’s important to read the accompanying documentation, as well as the references to the SciTE online documentation. There is also a better formatted PDF documentation in the download package.
MXSEditor Global Utility Plugin V1.0
Author: Josef Wienerroither
Created: August 2011
Modified: September 30th, 2018
HISTORY:
- Version: V1.0, RELEASE DC20180930,
Added Max 2018 and Max 2019 versions - Version: V1.0, RELEASE DC20170720
First public final release version
Added documentation - Version: V1.0, DC20160606,
Updated to Unicode, Compatible with Max 2008 - Max2017, x86 and x64
Implemented, fixed callback functionality
Lots of other fixes and updates - Version: V0.50 - Beta 1, DC20120214,
First public release
AUTHOR:
Josef Wienerroither aka "spacefrog" www.frogsinspace.at | [email protected]
INSTALL:
Copy the appropiate file according to your 3ds Max version into your plugins folder
restart 3ds Max. The plugin should now be operational
You simply can check this by typeing "showinterface MXSEditor" in the listener
If you get the public properties and functions listed, the plugin was loaded successfully
FEATURES:
Use Maxscript Editor as Extended Viewport ( enabled right after install )
Access various basic Maxscript Editor functionality via maxscript not available before
Extensive maxscript control of the Maxscript Editor using SciTE's internal command interface
For detailed usage, read the PDF documentation, or the online documentation
USAGE NOTES ( PLEASE REFER TO THE PDF FOR DETAILED USAGE ! )
If you just want to use the maxscript editor in an extended viewport, you can do so right after installation
There are some limitations to that though, which are also true for the 3ds Max built in Listener in an extended viewport though. eg. if you close the Maxscript editor while it's in the extended viewport via the 3ds Max "Maxscript" menu, or via keyboard shortcut, you well end up with a blank viewport that seems to be dead. Actually the Maxscript editor just gets hidden in this case, so you simply can reopen it and everything will keep working.
So it's better to end the extended viewport by switching the viewport to a standard view like "Top" etc.., using the
right mousebutton menu while hovering the mouse cursor over the maxscript editors menu area. This is essentially standard behavior for extended viewports in Max.
MAXSCRIPT INTERFACES & STRUCTS
Right after installation you will get several addional Maxscript interfaces and structs at your disposal
The functionality is documented in the accompanying PDF or on the plugin's website.
Here are just the basic maxscript interfaces and structs listed :
Interface: MXSEditor
Properties:
.x : integer : Read|Write
.y : integer : Read|Write
.width : integer : Read|Write
.height : integer : Read|Write
.enableCallbacks : boolean : Read|Write
.isVisible : boolean : Read|Write
.verbose : boolean : Read|Write
.isExtendedVP : boolean : Read
.mainHWND : HWND : Read
.editHWND : HWND : Read
.documentCount : integer : Read
.currentDocument : string : Read
Methods:
<void>redraw()
<void>show()
<boolean>endExtendedVP()
<void>reloadOptions()
<boolean>editFile <string>filename quiet:<boolean>
quiet default value: false
<string>documentAtNumber <integer>index
<void>menuCommand <string>menucode
<boolean>setWindowPosition <integer>x <integer>y <integer>width <integer>height
<string>getConfigProperty <string>name
<integer>getConfigIntProperty <string>name
<void>setConfigProperty <string>name <string>value
<integer>listFunctions()
<integer>listConstants()
<integer>listProperties()
<integer>listMenucodes()
Interface: MXSEFuncs
interface to MXS Editor's Scintilla edit component functionionality. Functions are called using the internal Scintilla
messaging system, see some more docs here http://www.scintilla.org/ScintillaDoc.html or find the most complete
info by studying the scintilla source code ;-)
mxsefuncs.list() ... list all scintilla internal functions, including parameter types and return type (function signature)
mxsefuncs.call() ... call a scintilla internal function, function name is passed as string value ( without braces
followed by parameters. Function parameters/return values are past as their respective maxscript equivalents
eg.: set the background color of selected text, mxsefuncs.list() returns the following function signature:
void SetSelBack(bool, color)
thus to set the background color for selected text to some random color we enter the following in the listener:
mxsefuncs.call "SetSelBack" true new (color 100 200 30 128)
see http://www.scintilla.org/ScintillaDoc.html#SCI_SETSELBACK what the boolean parameter does...
you can pass maxscript variables by reference on functions that require data to be returned ( eg. the selected text)
so if you do this:
mxsefuncs.call "GetSelText" &myText
the Maxscript variable myText will recieve the currently selected text ( selected text in the Maxscript editor )
Best way to find out how those functions work, is by experiment and study of the docs at
http://www.scintilla.org/ScintillaDoc.html
Interface:MXSEProps
struct to get, set and list all current scintilla config properties, essentially the internal settings of the editor component
see Scintilla documentation ->http://www.scintilla.org/ScintillaDoc.html
mxseprops.list() ... list all the available properties and their signature ( mxseprops.dump() is exactly the same )
... Note: those are not properties defined in the external scintilla "options" files
mxseprops.get()
mxseprops.set() ... Set or get a property, see mxsefuncs.call() for examples how parameters and names are passed
Interface: MXSECallback
struct to allow you to hook maxscript functions onto specific editor events ( eg. an entered character etc.. )
See the comprehensive PDF or online documentation for further details
Comments
Nice post.
“玩现代育儿的油画肖像是非常好的帖子,我非常欣赏法国讽刺作家代写招聘 的努力。我实际上是通过写作服务论坛这个链接,我真的很喜欢它。”
Added 3ds Max 2018 and 3ds Max 2019 versions
Just a wink that i added builds for the current 3ds Max versions to the zip package. Simply download again and you'll find builds for Max 2018/2019 in the zip
is it possible to add or
is it possible to add or activated auto complete including all function or struct function in current doc with this extension?
An annoying bug slipped into the release...
Thanks for the vote, barigazy
looks like a bug slipped into the release with the extended viewport functionality:
You can't close a tab/file using the File->Close menu or using RMB->Close on a tab. As i always use Ctrl->w or Ctrl->F4 to close the current window, i did'nt catch this. This bug is especially annoying as you don't have a close button while the editor is in an extended viewport. Will fix this in the next release.
...+1
Thank you Josef for sharing this plugin.
MXS Editor as extended view is great idea.
Nice work!
bga