The PolyBoolean Interface is exposed by the ProBoolean class andprovides methods to create and manage ProBoolean Compound Objects.Available in 3ds Max 9 and higher.
To access the methods listed below, you can use
ProBoolean.PolyBoolean.methodName()
or simply
ProBoolean.methodName()
Methods:
<void>CreateBooleanObjects <node>boolnode <&node array>nodes <integer>op <integer>addMethod <integer>matMethod
nodes is In and Out parameter
Creates a new ProBoolean object with two or more operands using the first argument as operand A and the array of nodes passed as second argument as multiple operands B.
The third argument is an integer controlling the operation to be performed and corresponding to the radio button state in the UI. Possible values are:
0 - Union
1 - Intersection
2 - Subtraction
3 - Merge
The fourth argument is an integer defining the method to add operands B, corresponding to the radio button state in the UI. Possible values are:
0 - Reference
1 - Copy
2 - Move
3 - Instance
The fifth argument is an integer controlling the material mdethod and corresponding to the radio button state in the UI. Possible values are:
0 - Apply Operand Method
1 - Retain Original Material
<void>CreateBooleanObject <node>boolnode <node>node <integer>op <integer>addMethod <integer>matMethod
Creates a new ProBoolean object with two operands using the first argument as operand A the second argument as operand B.
The third argument is an integer controlling the operation to be performed and corresponding to the radio button state in the UI. Possible values are:
0 - Union
1 - Intersection
2 - Subtraction
3 - Merge
The fourth argument is an integer defining the method to add operands B, corresponding to the radio button state in the UI. Possible values are:
0 - Reference
1 - Copy
2 - Move
3 - Instance
The fifth argument is an integer controlling the material mdethod and corresponding to the radio button state in the UI. Possible values are:
0 - Apply Operand Method
1 - Retain Original Material
<void>SetOperandA <node>boolnode
Creates a new ProBoolean object with one operand using the argument as operand A. This method can be used to start the creation of a ProBoolean compound object and then switch settings and add operand B using the methods described below.
<void>SetOperandB <node>boolnode <node>node <integer>addMethod <integer>matMethod
Adds operand B to the ProBoolean compound object. This is equivalent to using the Start Picking button in the UI to add more operands.
<boolean>GetOperandSel <node>node <integer>sel
Returns true if the indexed operand is selected in the UI, false otherwise.
<void>SetOperandSel <node>node <integer>sel <boolean>flag
Sets the selected state of the indexed operand in the given ProBoolean compound object to the specified boolean value.
<integer>GetBoolOp <node>node
Returns the current boolean operation set in the ProBoolean compound object.
<void>SetBoolOp <node>node <integer>op
Sets the current boolean operation in the ProBoolean compound object to the given value corresponding to the 0-based radio button state. Possible values are:
0 - Union
1 - Intersection
2 - Subtraction
3 - Merge
<boolean>GetDisplayResult <node>node
Returns the display result mode. When true, the result will be displayed. When false, the Operands will be displayed.
<void>SetDisplayResult <node>node <boolean>flag
Sets the display result mode. When true, the result will be displayed. When false, the Operands will be displayed.
<boolean>GetShowHiddenOps <node>node
Returns the state of the Show Hidden Operands option.
<void>SetShowHiddenOps <node>node <boolean>flag
Sets the state of the Show Hidden Operands option to the specified value.
<integer>GetUpdateMode <node>node
Returns the update mode. Possible values are:
0 - Always
1 - When Selected
2 - When Rendering
3 - Manually
<void>SetUpdateMode <node>node <integer>mode
Sets the update mode. Possible values are:
0 - Always
1 - When Selected
2 - When Rendering
3 - Manually
<boolean>GetOptimize <node>node
Returns the state of the Optimize option.
<void>SetOptimize <node>node <boolean>flag
Sets the state of the Optimize option to the specified value.
<boolean>GetCookieCut <node>node
Returns true if Cookie cut is enabled, false otherwise.
<void>SetCookieCut <node>node <boolean>flag
Sets the Cookie cut option to the specified state.
<boolean>GetImprint <node>node
Returns true if Imprint option is enabled, false otherwise.
<void>SetImprint <node>node <boolean>flag
Sets the Imprint option to the specified state.
<float>GetDecimationPercent <node>node
Returns the decimation percentage.
<void>SetDecimationPercent <node>boolnode <float>percent
percentValidated by Range: 0 to 1120403456
Sets the decimation percentage.
<boolean>GetMakeQuad <node>node
Returns true if the Make Quadrilaterals option is enabled, false otherwise.
<void>SetMakeQuad <node>boolnode <boolean>flag
Sets the Make Quadrilaterals option to the specified state.
<float>GetQuadSizePercent <node>node
Returns the Quad Size percentage.
<void>SetQuadSizePercent <node>boolnode <float>percent
percentValidated by Range: 0 to 1120403456
Sets the Quad Size percentage.
<integer>GetPlanarEdgeRemoval <node>node
Returns the Planar Edge Removal mode. Possible values are:
1 - Remove All 2 - Remove Only Invisible 3 - No Edge Removal
<void>SetPlanarEdgeRemoval <node>node <integer>mode
Sets the Planar Edge Removal mode. Possible values are:
1 - Remove All 2 - Remove Only Invisible 3 - No Edge Removal
EXAMPLE 1
--Creating a match using two consecutive boolean operations between --a box, a cone and a sphere: theBox = box height:100 width:10 length:10--create a box theCone = cone radius1:4 radius2:15 height:110--create a cone theSphere = sphere radius:6--create a sphere xf = xform()--create an XForm modifier addModifier theSphere xf--add the XForm to the sphere xf.gizmo.scale = [1,1,2]--scale the sphere along Z --create an intersection of the box as operand A and the cone as operand B: ProBoolean.createBooleanObject theBox theCone 1 0 0 --assign materials to the box and to the sphere: theBox.material = standard diffuse:(color 255 200 100) theSphere.material = standard diffuse:brown ProBoolean.SetBoolOp theBox 0--set the boolean operation to union ProBoolean.setOperandB theBox theSphere 0 0--add the sphere asnewoperand B
EXAMPLE 2
--Creating a Pencil using multiple boolean subtractions --of a box, two cones and a cylinder: --Step 1: create a box and two cones, assign materials: theBox = box height:50 width:50 length:50 pos:[0,0,-2] theCone1 = cone radius1:3 radius2:20 height:80 heightsegs:1 pos:[0,0,15] theCone2 = cone radius1:0 radius2:15 height:80 heightsegs:1 theCone1.material = standard diffuse:(color 255 220 200) theCone2.material = standard diffuse:black
--Step 2: Subtract both cones from the box ProBoolean.createBooleanObjects theBox #(theCone2,theCone1) 2 0 0
--Step 3: Create a 6-sided cylinder and assign a material theCyl = cylinder radius:10 sides:6 height:150 smooth:false pos:[0,0,1] theCyl.material = standard diffuse:(color 255 200 100)
--Step 4: "sharpen" the cylinder using the box with the conical hole ProBoolean.createBooleanObject theCyl theBox 2 0 0