MAXScript Support (Pencil+ 4)

We updated the MaxScript interface in Pencil+ 4, greatly improving its usability compared to Pencil+ 3. Please consult the section [MAXScript Help] in the 3ds Max Help for details about using MAXScript.

Pencil+ 4 Line / Properties - Methods

linesets
Array for getting and setting Line Sets.
This used to be a method in Pencil+ 3, but it has now been changed to a property.


solveDuplicatedMtlsByName (Method)
Performs the same operation as the button [Update Materials]. Replaces materials in Line Sets that are not allocated to an object in the scene with materials that have the same names and exist in the scene.

Return value: Number of materials replaced.
Parameter: None.


removeUnusedMtls (Method)
Removes from the material list materials in Line Sets that are not allocated to an object.

Return value: Number of materials removed.
Parameter: None.

Pencil+ 4 Line set / Properties

objects
Array for getting and setting objects.


mtls
Array for getting and setting materials.

[Access all the Brush Settings in Pencil+ 4 Line Sets]

  • brush
  • brushOutline
  • brushObject
  • brushIntersection
  • brushSmoothingGroup
  • brushMaterialID
  • brushNormalAngle
  • brushWire
  • brushSelectedEdge
  • brush_Hidden
  • brushOutline_Hidden
  • brushObject_Hidden
  • brushIntersection_Hidden
  • brushSmoothingGroup_Hidden
  • brushMaterialID_Hidden
  • brushNormalAngle_Hidden
  • brushWire_Hidden
  • brushSelectedEdge_Hidden

Pencil+ 4 Material / Properties

zones
Array for getting and setting Zones.
This used to be a method in Pencil+ 3, but it has now been changed to a property.

Pencil+ 4 Material / Line Related Function / Properties

maskingOffObjects
Array for getting and setting the objects of [Draw Hidden Lines of Targets as Visible Lines].
This used to be a method in Pencil+ 3, but it has now been changed to a property. 


maskingOffMtls
Array for getting and setting the materials of [Draw Hidden Lines of Targets as Visible Lines].
This used to be a method in Pencil+ 3, but it has now been changed to a property.


maskHiddenLinesObjects
Array for getting and setting the objects of [Mask Hidden Lines of Targets].
This used to be a method in Pencil+ 3, but it has now been changed to a property.


maskHiddenLinesMtls
Array for getting and setting the materials of [Mask Hidden Lines of Targets].
This used to be a method in Pencil+ 3, but it has now been changed to a property.

Get/Set Curve Values

The class Pencil_4_Curve_Control_Interface was defined to manipulate curve controls.
Properties to retrieve the class above were also added to the following locations.

  • Pencil_4_LineReduction: curveIF
  • Pencil_4_BrushDetail: sizeCurveIF
  • Pencil_4_BrushDetail: alphaCurveIF
  • Pencil_4_Stroke: sizeCurveIF
  • Pencil_4_Stroke: alphaCurveIF

For example, you can use the following script to access curves of a Pencil+ 4 Line that is set first to effects.

ccif1 = (getEffect 1).linesets[1].sizeReduction.curveIF
ccif2 = (getEffect 1).linesets[1].brush.detail.alphaCurveIF

Pencil_4_Curve_Control_Interface / Properties - Methods

curveControl
Get/Set the target curve control. The curve control is set beforehand when the instance is acquired from a property such as Pencil_4_LineReduction.curveIF.


controlCurveIndex
Get/Set the index of the curve manipulated by this interface class. Initialized to 0.


numPoints
Get/Set the number of points on the curve.


pointsX
Get/Set the X coordinates of the curve points as a float array.


pointsY
Get/Set the Y coordinates of the curve points as a float array.


inTangentsX
Get/Set the X coordinates of the in tangents for the curve points as a float array.


inTangentsY
Get/Set the Y coordinates of the in tangents for the curve points as a float array.


outTangentsX
Get/Set the X coordinates of the out tangents for the curve points as a float array.


outTangentsY
Get/Set the Y coordinates of the out tangents for the curve points as a float array.


flags
Get/Set the flags of the curve points as an integer array.
Please refer to the 3ds Max SDK documentation for details about the flags.
http://help.autodesk.com/view/3DSMAX/2015/ENU/?guid=__cpp_ref_class_curve_point_html


getValues (Method)
Get the curve values.
Return value: Float array containing the curve values for the X coordinates specified as parameter.
Parameter: Float array containing the X coordinates for which we want values.


Sample script changing a curve to a decreasing linear curve.

ccif1.numPoints = 2
ccif1.pointsY = #(1.0, 0.0)
ccif1.flags[1] = ccif1.flags[1] - (bit.and ccif1.flags[1] 3) + 2  -- +1 Bezier / +2 Corner / +3 BezierCorner 
ccif1.flags[2] = ccif1.flags[2] - (bit.and ccif1.flags[2] 3) + 2

-- Clear the tangents
ccif1.inTangentsX= #(0.0, 0.0)
ccif1.inTangentsY= #(0.0, 0.0)
ccif1.outTangentsX= #(0.0, 0.0)
ccif1.outTangentsY= #(0.0, 0.0)

-- Get values
values = ccif1.getValues #(0.0, 0.25, 0.5, 0.75, 1.0)

Tips!

Sample Scripts

  • Allocate Pencil+ 4 Materials containing a single zone to the scene objects.
    pcl4mtl_0.ms
  • Return the Zones of the Pencil+ 4 Materials in the scene to their default values.
    pcl4mtl_1.ms
  • Allocate a Pencil+ 4 Line to Effects and add a Line set.
    pcl4line.ms
  • Copy the Pencil+ 4 Line Sets registered in the effects.
    pcl4lineset_copy.ms
  • Add a Pencil+ 4 Material element to Render Elements.
    pcl4mtl_elem.ms
  • Add a Pencil+ 4 Line element to Render Elements.
    pcl4line_elem.ms

Pencil+ for 3ds Max Tutorials