CONSOLUS-MAXIMUS

MaxScript Beta 0.1.7 (04/26/2003) for 3ds max 4.x and higher

Copyright (c) 2003 by Borislav Petrov
SHORT DESCRIPTION
Consolus-Maximus (C-M) is a CAD-Style command line interface for quick access to some operations including 
  • Creating Objects
  • Editing Properties
  • Selecting Objects
  • Filtering Selection by Classes
  • Renaming Objects
  • Deleting Objects, 
  • Adding Modifiers 
  • Moving Objects, 
  • Creating Splines using Absolute and Relative input

and more.

In a way, it is like mini MAXScript Listener on steroids - while it supports only a small set of commands, it is blazingly fast as it features auto-completion logic and usually calls commands with a single keystroke!

For example, just typing 'C G B ' causes the command "Create GeometryClass Box" to be expanded and executed in the Console, thus creating a new Box in the scene with just few keystrokes!

 
PREVIEW MOVIES!!!
The following short Camtasia movies show some basic workflow in C-M. Please note that the movies were recorded in real time without any time compression. C-M could work even faster, but you wouldn't see a thing ;o)

For best results, you can install the TechSmith CODEC which is also part of the Camtasia package. The DivX versions are lower quality and larger.

VERSION HISTORY
  
  • v.0.1.7- 04/26/2003 - First public download version. Added access to Modifier properties.
  • v.0.1.5- 04/25/2003 - WorldPolar and PolarIncrement modes for Knot Input implemented.
  • v.0.1.4- 04/24/2003 - Basic Toolset implemented and stabilized. First documentation.
  • v.0.1.0- 04/22/2003 - Proof of concept (works!)
FEATURES (W.I.P.)
USER INTERFACE 
C-M has a floating dialog UI containing 
  • a large text field displaying the results of the console typing, 
  • a line to type in the commands, 
  • a list showing command hints, 
  • a button for displaying and picking the Current Object 
  • a button for displaying and picking the User Coordinate System Origin Offset.
WORKFLOW 
C-M lets you either 
  • type shortcuts in the command line, or 
  • double-click in the Hints list to the right to copy complete commands to the command line. 

In addition, you can 

  • double-click command sentences in the console output to copy them to the command line for editing
  • double-click the result report in the console output to repeat the execution of the code directly. 

Every time you type in a character, the command line is evaluated and the first matching command appears in the command line (blue) of the console prefixed by ">". 

If there are multiple commands starting with the same character(s), you should keep on typing until the desired command is recognized. 

If you type in an invalid character, it will be usually removed to avoid mistakes.

The Hints list will also update dynamically to show you the possible commands and parameters at any stage of the input.

When entering values, you can use any valid mathematical operations by enclosing the input in brackets, for example you can type in (10*10) instead of 100. 

Commands and parameters are separated by spaces. When the expected number of parameters has been detected, pressing Space  key again will evaluate the line.

After successful evaluation, a new line prefixed by "+" will appear reporting the results.

After an unsuccessful evaluation a new line prefixed by "--" will appear reporting the failure.

 

CREATE
The Create command lets you create new objects.
It requires two parameters:
  • SuperClass (Category) of the object. Can be GeometryClass, Light, Camera, Helper, Modifier, Shape
  • Class (Type) of the object. Can be any sub-class of the above SuperClass. 
    For example, Box is a sub-class of the GeometryClass, while OmniLight is from the Light SuperClass.


For Example :

  • 'c g b ' -Creates a new Box with default parameters.
  • 'c h p ' -Creates a new Point Helper
  • 'c l o ' -Creates a new Omni light
PROPERTY
The Property command lets you change properties of the Current Object and its modifier stack.

It requires the following parameters:

  • ObjectToEdit  Can be BaseObject or a Modifier from the stack. Currently, if there are two modifiers of the same class on the stack, only the top one will be accessible. For complex stack editing, use the Max UI.  
  • PropertyName to edit. Can be any property available in the object to edit.
  • Value to assign to the property. Should be a compatible value type.

For Example, after typing 'c g s ' to create a new Sphere, you can type

  • 'p b r 112 ' to change the radius of the Sphere to 112.0 units
  • 'p b s false ' to set Smoothing to false
  • 'p b se 6 ' to set the number of segments to 6. Note that since Smooth and Segs both start with 's', you need to type 'se' to access the latter.
  • 'a p t ' to add a Taper modifier to the current object.
  • 'p t a 2 ' to set the Amount of the Taper modifier to 2.0.
SELECT
The Select command lets you select scene objects by different criteria.
It requires two parameters:
  • SelectMode Can be one of the following: Previous, Objects, Hidden, Geometry, Lights, Cameras, Shapes, Helpers, None, Invert, All, Named
  • NamePattern . Only when Named is specified. In all other cases, just hit space twice to enter a blank name. 

For Example :

  • 's a  ' -Selects all scene object.
  • 's l  ' -Selects only Lights
  • 's n ' -Deselects all
  • 's na sph ' -Selects all objects whose name starts with "Sph"
FILTER
The Filter command is similar to Select but gives you controls to select by SuperClass and Class.
It requires two parameters:
  • SuperClass (Category) of the objects to select. Can be GeometryClass, Light, Camera, Helper, Modifier, Shape
  • Class (Type) of the object. Can be any sub-class of the above SuperClass. 
    For example, Box is a sub-class of the GeometryClass, while OmniLight is from the Light SuperClass.

For Example :

  • 'f g b ' -Selects all GeometryClass - Box objects.
  • 'f h d ' -Selects all Helper Dummy objects.
  • 'f l o ' -Selects all Omni Lights.
GETCURRENT
In addition to being able to work with selections, C-M keeps track of object creation and stores the last created object in the so-called "Current Object".

C-M lets you apply further operations on the last created object which is accessed through  the keyword "Previous". Using the GetCurrent command, you can also get any scene object as the Current Object, for example to apply series of modifiers on top of it or to move it around. 

The Current Object is displayed on a button just below the entry field. You can use this button to pick any scene object with the mouse.

Using the GetCurrent command, you can:

  • Get any scene object by name:  'g n SomeName'
  • Get an object by name from the current selection, 'g s SomeName' . Note that you can enter any object name, but only names that are actually in the current selection will be accepted. If the typed name isn't currently in the selection, the first object in the selection will be used instead!
  • Get the first object in the current selection without providing a name but just pressing Space instead. 'g s  ' This can be used to quickly select a single selected object.
NAME
The Name command lets you rename the Current Object or the whole Selection by specifying a base name. A unique number will be added to the base name to ensure no duplicate names will occur. 

Name requires two parameters:

  • ObjectsToRename. Can be either Previous or Selection.
  • NewName. Any valid name string.

For Example, after typing 'c g c ' to create a new Cylinder, you can type

  • 'n p Bobo' to rename the Cylinder to Bobo01 where 01 is a unique number. 
  • 's a ' to select all objects in the scene
  • 'n s Test ' to rename all objects in the scene to TestNN where NN is a unique number
  • 's na Test ' to select all objects whose name starts with Test
  • 'n s OtherTest ' to rename all selected TestNN objects to OtherTestNN...
MOVE
The Move command lets you reposition the Current Object or Selection to an absolute coordinate, or move relatively by a specified distance in orthogonal or polar coordinates.

Note that the absolute coordinate is relative to the Current Origin which is identical to World [0,0,0] by default but can be offset using the UCS command.

Move requires the following parameters:

  • ObjectsToMove. Can be either Previous or Selection.
  • MoveMode. Can be either Absolute, Relative, WorldPolar or PolarIncrement.
  • Values. 3 Integers or Floats for X, Y and Z position or offset depending on MoveMode. Only spaces required between the 3 values!

For Example, after typing 'c g c ' to create a new Cylinder, you can type

  • 'm p a 0 0 100 ' to reposition the last created object to 0,0,100 
  • 'm p r 100 0 0 ' to move the same object relatively by 100 units along X.
  • 's a ' to select all objects in the scene
  • 'm s a 0 0 0 ' to move all selected objects to the Origin.
  • 'm p w 100 45 0 ' to move the current object 100 units along a vector at 45 degrees to the X axis and 0 degrees to  the XY plane.
  • 'm p p 10 5 0 ' to move the current object 10 units more and 5 degrees more to the X than the last polar move while keeping the same angle to the XY plane. (This will move at 110 units and 50 degrees, repeating the command will further increment the distance and angle)
ADDMODIFIER
The AddModifier command lets you add a modifier to the Current Object or Selection . 

It requires the following parameters:

  • TargetObjects. Can be either Previous or Selection.
  • Modifier. Any supported Modifier class.

For Example, 

  • 'c g c ' to create a Cylinder 
  • 'a p b ' to add a Bend modifier to the Cylinder.
  • 'a s t ' to add a Taper modifier to all selected objects
DELETE
The Delete command lets you delete the Current Object or the Selection. 

It requires only one parameter:

  • ObjectsToDelete. Can be either Previous or Selection.

For Example, you can type

  • 's na box ' to select all objects whose Name starts with "box". ('n' is used by 'None')
  • 'd s ' to delete the selected objects.
KNOT
The Knot command lets you add Knots (Vertices) to the Current Object when it is a SplineShape. This is probably the main reason for the existence of C-M!

Knot requires the following parameters:

  • InputMode. Can be Absolute, Relative, WorldPolar or PolarIncrement
  • KnotCoordinates or KnotOffset Values - Expects 3 Floats or Integers separated by spaces. 

For Example, you can type

  • 'c s s ' to create a new SplineShape.
  • 'k a 0 0 0' to add a new knot to position 0,0,0
  • 'k r 100 50 0 ' to add a next knot relatively to the first one with offset 100 along X and 50 along Y axis.
  • 'k w 200 45 0 ' to add a new knot at distance of 200 at 45 degrees to the X axis and 0 degrees to the XY plane
  • 'k w 100 30 5 ' to add a new knot at distance of 100 at 30 degrees to the X axis and 5 degrees to the XY plane
  • 'k p 0 10 0 ' to add a new knot at the last Polar distance (100) at 10 degrees more than the last Polar Knot command and the last angle to the XY plane. Each time you call PolarIncrement, the values are added to the last known Polar values set by WorldPolar or PolarIncrement. Repeating the PolarIncrement command, for example by double-clicking an existing one in the Console window, lets you create complex shapes like Curve, Circle, Helix and more.

Note that currently all knots are added as Corners with Linear segments to the first spline in the SplineShape. You can add knots to the first spline of any SplineShape by making it the Current Object using the GetCurrent command. You can also quickly close the first spline of the SplineShape using the CloseSpline command (see below)

CLOSESPLINE
The CloseSpline command lets you Close the Current Object when it is a SplineShape. 

It requires no parameters!

For Example, you can type

  • 'c s s ' to create a new SplineShape.
  • 'k a 0 0 0' to add a new knot to position 0,0,0
  • 'k r 100 0 0 ' to add a next knot relatively to the first one with offset 100 along X.
  • 'k r 0 100 0 ' to add a next knot relatively to the second one with offset 100 along Y.
  • 'cl ' to close the SplineShape. 
  • 'k a 20 20 0 ' to add a new knot with absolute coordinates - it will refine the last segment of the SplineShape.
UCS
The UCS command lets you specify the Origin Offset for object creation. 

It requires 3 Floats separated by spaces defining the Offset. Note that the Offset can also be set by picking a scene object using the button below the console edit field. The button also displays the current Offset value.

For Example, you can type

  • 'c g b ' to create a new Box - it will appear at 0,0,0
  • 'u 100 0 0' to change the Origin to 100,0,0
  • 'c h p' to create a new Point Helper. Note that it will be created at 100,0,0
LASTCOMMAND
The LastCommand command lets you repeat the last line type in the command line. You can always use the mouse to repeat older commands from the console, but this is a quick shortcut especially when using PolarIncrement or Move Relative commands. Just type in L and Space and the last command will be executed immediately.   

For Example, you can type

  • 'm s r 0 0 10 ' to move the current selection 10 units along Z
  • 'l ' to repeat the same and move the current selection 10 more units along Z
FUTURE FEATURES TO DO
  • Rotate and Scale commands
  • Lots more...
PUBLIC BETA DOWNLOAD
CONSOLUS-MAXIMUS v.0.1.7
INSTALLATION
  • Download the file
  • Unzip to your \Scripts directory, 
  • Select MAXScript>Run from the main menu, run the file.
  • Go to Customize UI...>Toolbar, select the script from "Bobo_s Tools" Category
  • Drag to a toolbar.
  • Press the button to launch the Console...
Copyright 2003 by Borislav Petrov