Often when dealing with complex effects it’s necessary to split those into smaller parts. Isn’t only better to render specific elements separately but also working with particular portion is a straight way to get work done more quickly.  

Script below let you quickly turn off/on Particle Flow systems:

for o in objects where classOf o == PF_Source do


o.Enable_Particles = not o.Enable_Particles



This can be pretty usefull, when you want just quick turn off/on all particle flow systems. But what if you want manage not all PFlow systems at the time?


Problem was how to mark some PFlow system wich I don’t wanna work with and use this everytime when turning off/on specifically branch. My solution was to use 3dsmax user defined Object Properties (Right click –> Object Properties –> User Defined).  

You can add this manually or by script below:

 — Add PFlow State Exception to SELECTED PFLOW systems

 for o in $ where classOf o == PF_Source do


setUserProp o “pf_State_Except” True

print (“Exception Added: ” + o.name)



Now our main MacroScript will look like:

macroScript pFlowstate category:”deko.lt” toolTip:”Turn On/Off PFlow” buttonText:”PFlow On/Off” Icon:#(“Particles”,6)


global pf_state=true

on isChecked return not pf_state

on execute do 


for o in objects where classOf o == PF_Source and getUserProp o “pf_State_Except” == undefined do


o.Enable_Particles = pf_state


pf_state = not pf_state



*Tip: Try to add this as toolbar button, it can be checked, so you can always know what state is



In above archive there is also 3 additional macroscript to ADD exception, CLEAR exception and List/Select marked PFlow systems as exceptions. Just Drag&Drop those macros to 3dsmax and add to toolbar, menu or hotkey from deko.lt category.



2 Responses to “mxs: PFlow State”

  1. deko, Reply

    Alternately you can try pFlow Control script by John Random:

  2. JohnnyRandom, Reply

    Ha! That is pretty slick, good thinking outside the box. Gives me an idea :-)

Leave a Reply