Ok, i can reproduce the problem. It happens because the script removes unused objects from the "forest_templates" layer, which is used to store billboard templates and library objects.
Forest also runs its own cleanup process on save, so probably there is a conflict between them.
It can be fixed excluding the forest layer in the script :
fn deleteEmptyLayers = (
print "execute deleteEmptyLayers()"
debug = false
trennersign = "---" --internal sign to seperate layers in groups, so this layer stays in the scene even if empty
emptyLayers =#()
defaultlayer = layerManager.getLayerFromName "0"
defaultlayer.current = true
for i = 0 to layerManager.count-1 do (
ilayer = layerManager.getLayer i
layerName = ilayer.name as string
if layerName != "forest_templates" then (
if debug then print layerName
layer = ILayerManager.getLayerObject i
layerNodes = refs.dependents layer
layer.Nodes &theNodesTemp
if theNodesTemp.count == 0 and findString layerName trennersign == undefined do (
append emptyLayers layerName
)
)
)
for i = 1 to emptyLayers.count do ( layermanager.deleteLayerByName emptyLayers[i] )
if LayerManager.isDialogOpen() == true then (
LayerManager.closeDialog()
layermanager.editlayerbyname ""
)
)
callbacks.addScript #filePostOpen "deleteEmptyLayers()" id:#deleteEmtyLayers_filePostOpen persistent:false
Additionally i suggest to not rename this layer, or move the objects from it. It nof, other unexpected problems would happen.