
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
