Scripts
Bake object transforms
Copy and paste
Emailer
Flush
Implode explode
Instantiate
Make names unique
Poly counter
Print selection
Reset viewport
Selector
Implode & explode
Implode : Collapse the selected objects into a single object.
Explode : Break the selected object's elements into individual objects.
--The following script explodes an EditablePoly object to elements, --each polygon becomes one element macroScript Selection_implode icon:#("implode_explode", 2) category:"MaxPack" buttonText:"Implode" tooltip:"Implode" ( on isEnabled do ( return selection.count != 0 ) on execute do ( objs = selection as array if(objs.count == 0) then ( return false ) suspendEditing which:#modify disableSceneRedraw() undo off ( meditIsOpen = false if(MatEditor.isOpen()) then ( meditIsOpen = true MatEditor.Close() ) tempMedit = #() for d = 1 to meditMaterials.count do --flush materialeditor ( append tempMedit meditMaterials[d] meditMaterials[d] = standardMaterial() ) head_obj = editable_mesh() -- first object in array convertTo head_obj Editable_Poly for i = 1 to objs.count do ( obj = objs[i] if isValidNode obj and obj != head_obj and classOf obj != Targetobject and obj.renderable == true then ( if superclassOf obj == GeometryClass or superclassOf obj == Shape then ( InstanceMgr.MakeObjectsUnique obj #group if obj.modifiers.count != 0 then maxOps.CollapseNodeTo obj 1 off if obj.material == undefined then ( obj.material = standardMaterial name:obj.name ) if canConvertTo obj Editable_poly then ( addModifier obj (poly_Select()) ) else ( addModifier obj (mesh_Select()) addModifier obj (poly_Select()) ) if obj.scale.x < 0 or obj.scale.y < 0 or obj.scale.z < 0 then ( if obj.modifiers.count != 0 then maxOps.CollapseNodeTo obj 1 off addModifier obj (normalModifier flip:true) ResetXForm obj ) if obj.modifiers.count != 0 then maxOps.CollapseNodeTo obj 1 off polyOp.attach head_obj obj ) ) ) ResetTransform head_obj ResetScale head_obj ResetPivot head_obj centerpivot head_obj ResetXForm head_obj if head_obj.modifiers.count != 0 then maxOps.CollapseNodeTo head_obj 1 off convertToMesh head_obj ) enableSceneRedraw() resumeEditing which:#modify -- Re-open materail editor if(meditIsOpen) then ( MatEditor.Open() ) for d = 1 to tempMedit.count do --flush materialeditor ( meditMaterials[d] = tempMedit[d] ) select head_obj ) ) macroScript Selection_explode icon:#("implode_explode", 1) category:"MaxPack" buttonText:"Explode" tooltip:"Explode" ( on isEnabled do ( return selection.count != 0 ) on execute do ( ele_array = #() disableSceneRedraw() suspendEditing() for obj in selection as array do ( head_obj = editable_mesh() -- first object in array convertTo head_obj Editable_Poly if superclassOf obj == GeometryClass or superclassOf obj == Shape then ( InstanceMgr.MakeObjectsUnique obj #group if obj.modifiers.count != 0 then maxOps.CollapseNodeTo obj 1 off if canConvertTo obj Editable_poly then ( addModifier obj (poly_Select()) ) else ( addModifier obj (mesh_Select()) addModifier obj (poly_Select()) ) if obj.scale.x < 0 or obj.scale.y < 0 or obj.scale.z < 0 then ( if obj.modifiers.count != 0 then maxOps.CollapseNodeTo obj 1 off addModifier obj (normalModifier flip:true) ResetXForm obj ) if obj.modifiers.count != 0 then maxOps.CollapseNodeTo obj 1 off polyOp.attach head_obj obj ) else continue obj = head_obj convertToMesh obj for p = 1 to meshop.getNumFaces obj do ( if meshop.getNumFaces obj > 0 then ( face_array = meshop.getElementsUsingFace obj #{1} if classOf face_array == bitArray then ( new_emesh = Editable_mesh() new_emesh.name = (uniqueName obj.name) new_emesh.mesh = meshop.detachFaces obj face_array delete:true asMesh:true new_emesh.material = obj.material in coordsys world ( new_emesh.transform = obj.transform ) ResetTransform new_emesh ResetScale new_emesh ResetPivot new_emesh centerpivot new_emesh ResetXForm new_emesh if new_emesh.modifiers.count != 0 then maxOps.CollapseNodeTo new_emesh 1 off append ele_array new_emesh ) ) ) delete obj ) select ele_array resumeEditing() enableSceneRedraw() ) )