I'm using .ini files to do this. Now my scripts are heavily weighted to work only in my setup, but the general flow is to collect all of the values of each render element, then set them to my config file. For example this one collects the 'essential' element:
setINISetting masterFilePath txt_rlLayerName.text "element essential" ((cbx_reRenderElementEssentialDirect.checked as string) + " " + (cbx_reRenderElementEssentialIndirect.checked as string) + " " + (cbx_reRenderElementEssentialReflect.checked as string) + " " + (cbx_reRenderElementEssentialRefract.checked as string) + " " + (cbx_reRenderElementEssentialTranslucency.checked as string) + " " + (cbx_reRenderElementEssentialEmission.checked as string) + " " + (cbx_reRenderElementEssentialVolumetrics.checked as string) + " " + (cbx_reRenderElementEssentialDenoise.checked as string))
I can read the render setting in an example like this:
if filteredElement[1] == "essential" then
(
elementData = GetINISetting masterFilePath ddl_rmCurrentRenderLayers.selected ("element essential")
elementComponents = filterstring elementData " "
cbx_reRenderElementEssentialDirect.checked = elementComponents[1] as booleanClass
cbx_reRenderElementEssentialIndirect.checked = elementComponents[2] as booleanClass
cbx_reRenderElementEssentialReflect.checked = elementComponents[3] as booleanClass
cbx_reRenderElementEssentialRefract.checked = elementComponents[4] as booleanClass
cbx_reRenderElementEssentialTranslucency.checked = elementComponents[5] as booleanClass
cbx_reRenderElementEssentialEmission.checked = elementComponents[6] as booleanClass
cbx_reRenderElementEssentialVolumetrics.checked = elementComponents[7] as booleanClass
cbx_reRenderElementEssentialDenoise.checked = elementComponents[8] as booleanClass
)
then I use a function to create the actual element:
fn addRenderElementsPerLayer elementList sel =
(
for i = 1 to elementList.count do
(
elementFiltered = filterString elementList[i] "_"
if elementFiltered[1] == "essential" then
(
elementLayerData = GetINISetting masterFilePath sel ("element essential")
elementComponents = filterstring elementLayerData " "
if elementComponents[8] == "true" then
(
denoise = true
)
else
(
denoise = false
)
if elementComponents[1] == "true" do re.addrenderelement (CESSENTIAL_Direct elementName:"essentialDirect" useDenoise:denoise)
if elementComponents[2] == "true" do re.addrenderelement (CESSENTIAL_Indirect elementName:"essentialIndirect" useDenoise:denoise)
if elementComponents[3] == "true" do re.addrenderelement (CESSENTIAL_Reflect elementName:"essentialReflect" useDenoise:denoise)
if elementComponents[4] == "true" do re.addrenderelement (CESSENTIAL_Refract elementName:"essentialRefract" useDenoise:denoise)
if elementComponents[5] == "true" do re.addrenderelement (CESSENTIAL_Translucency elementName:"essentialTranslucency" useDenoise:denoise)
if elementComponents[6] == "true" do re.addrenderelement (CESSENTIAL_Emission elementName:"essentialEmission" useDenoise:denoise)
if elementComponents[7] == "true" do re.addrenderelement (CESSENTIAL_Volumetrics elementName:"essentialVolumetrics" useDenoise:denoise)
)
)
)
I know it's not the one button approach you are after, but maybe it's something that can point you in the right direction.