Rename object query

Hi All,

I have written a clumsy script to rename objects, within the script there are 4 edittext boxes that allow the user to add custom text to the name of the object. The thing is if some of the fields are left empty the script doesnt work as it returns an unable to add undefined error message which is understandable as there is nothing in the array to add to the text string. Any help on making this script more efficient and resolving this issue would be much appreciated.

macroScript Macro4
category:"DragAndDrop"
toolTip:""
(
rollout Rename_Objects_1 "SublimeCGI: Rename Objects"
(
local TheName =#()
Group "Level"
(
checkbox ckbx0 "Level_00" checked:false
checkbox ckbx1 "Level_01" checked:false
checkbox ckbx2 "Level_02" checked:false
checkbox ckbx3 "Level_03" checked:false
checkbox ckbx4 "Level_04" checked:false
checkbox ckbx5 "Level_05" checked:false
)
Group "Zones"
(
checkbox ckbxXX "Zone_XX" checked:false
checkbox ckbxZ0 "Zone_00" checked:false
checkbox ckbxZ1 "Zone_01" checked:false
checkbox ckbxZ2 "Zone_02" checked:false
checkbox ckbxZ3 "Zone_03" checked:false
checkbox ckbxZ4 "Zone_04" checked:false
checkbox ckbxZ5 "Zone_05" checked:false
checkbox ckbxZ6 "Zone_06" checked:false
)
Group "Category"
(
checkbox ckbxC0 "Windows" checked:false
checkbox ckbxC1 "Doors"
checkbox ckbxC2 "Walls" checked:false
checkbox ckbxC3 "Furniture" checked:false
checkbox ckbxC4 "Services" checked:false
checkbox ckbxC5 "Floors" checked:false
checkbox ckbxC6 "Roof" checked:false
checkbox ckbxC7 "Appliances" checked:false
checkbox ckbxC8 "Extras" checked:false
checkbox ckbxC9 "Casework" checked:false
)
Group "Custom_Field"
(
edittext Suffix1 "Suffix Custom Description:"
edittext Suffix2 "Suffix Custom Description:"
edittext Suffix3 "Suffix Custom Description:"
edittext Suffix4 "Suffix Custom Description:"
)
Group "Finalise"
(
button theReset "Reset" across:2 width:80 align:#center
on theReset pressed do
(
ckbx0.state=false
ckbx1.state=false
ckbx2.state=false
ckbx3.state=false
ckbx4.state=false
ckbx5.state=false
ckbxXX.state=false
ckbxZ0.state=false
ckbxZ1.state=false
ckbxZ2.state=false
ckbxZ3.state=false
ckbxZ4.state=false
ckbxZ5.state=false
ckbxZ6.state=false
ckbxC0.state=false
ckbxC1.state=false
ckbxC2.state=false
ckbxC3.state=false
ckbxC4.state=false
ckbxC5.state=false
ckbxC6.state=false
ckbxC7.state=false
ckbxC8.state=false
ckbxC9.state=false
Suffix1.text = ""
Suffix2.text = ""
Suffix3.text = ""
Suffix4.text = ""
)

button theApply "Apply" width:80 align:#center

-----button theOk "Ok" width:80 across:2 align:#center
)
-------------------Levels---------------------------------------------------------
on ckbx0 changed state do
(
if state == on then
LevelName = "Level_00_"
print LevelName
insertItem LevelName TheName 1
print TheName[1]

)

on ckbx1 changed state do
(
if state == on then
LevelName = "Level_01_"
print LevelName
insertItem LevelName TheName 1
print TheName[1]
)

on ckbx2 changed state do
(
if state == on then
LevelName = "Level_02_"
print LevelName
insertItem LevelName TheName 1
print TheName[1]
)

on ckbx3 changed state do
(
if state == on then
LevelName = "Level_03_"
print LevelName
insertItem LevelName TheName 1
print TheName[1]
)

on ckbx4 changed state do
(
if state == on then
LevelName = "Level_04_"
print LevelName
insertItem LevelName TheName 1
print TheName[1]
)

on ckbx5 changed state do
(
if state == on then
LevelName = "Level_05_"
print LevelName
insertItem LevelName TheName 1
print TheName[1]
)

-------------------Zones---------------------------------------------------------
on ckbxXX changed state do
(
if state == on then
ZoneName = "ZXX_"
print ZoneName
insertItem ZoneName TheName 2
print TheName[2]
)

on ckbxZ0 changed state do
(
if state == on then
ZoneName = "Z00_"
print ZoneName
insertItem ZoneName TheName 2
print TheName[2]
)

on ckbxZ1 changed state do
(
if state == on then
ZoneName = "Z01_"
print ZoneName
insertItem ZoneName TheName 2
print TheName[2]
)

on ckbxZ2 changed state do
(
if state == on then
ZoneName = "Z02_"
print ZoneName
insertItem ZoneName TheName 2
print TheName[2]
)

on ckbxZ3 changed state do
(
if state == on then
ZoneName = "Z03_"
print ZoneName
insertItem ZoneName TheName 2
print TheName[2]
)

on ckbxZ4 changed state do
(
if state == on then
ZoneName = "Z04_"
print ZoneName
insertItem ZoneName TheName 2
print TheName[2]
)

on ckbxZ5 changed state do
(
if state == on then
ZoneName = "Z05_"
print ZoneName
insertItem ZoneName TheName 2
print TheName[2]
)

on ckbxZ6 changed state do
(
if state == on then
ZoneName = "Z06_"
print ZoneName
insertItem ZoneName TheName 2
print TheName[2]
)

--------------------------------Category------------------------------------

on ckbxC0 changed state do
(
if state == on then
CategoryName = "Window_"
print CategoryName
insertItem CategoryName TheName 3
print TheName[3]
)

on ckbxC1 changed state do
(
if state == on then
CategoryName = "Door_"
print CategoryName
insertItem CategoryName TheName 3
print TheName[3]
)

on ckbxC2 changed state do
(
if state == on then
CategoryName = "Wall_"
print CategoryName
insertItem CategoryName TheName 3
print TheName[3]
)

on ckbxC3 changed state do
(
if state == on then
CategoryName = "Furniture_"
print CategoryName
insertItem CategoryName TheName 3
print TheName[3]
)

on ckbxC4 changed state do
(
if state == on then
CategoryName = "Services_"
print CategoryName
insertItem CategoryName TheName 3
print TheName[3]
)

on ckbxC5 changed state do
(
if state == on then
CategoryName = "Floor_"
print CategoryName
insertItem CategoryName TheName 3
print TheName[3]
)

on ckbxC6 changed state do
(
if state == on then
CategoryName = "Roof_"
print CategoryName
insertItem CategoryName TheName 3
print TheName[3]
)

on ckbxC7 changed state do
(
if state == on then
CategoryName = "Appliances_"
print CategoryName
)

on ckbxC8 changed state do
(
if state == on then
CategoryName = "Extras_"
print CategoryName
insertItem CategoryName TheName 3
print TheName[3]
)

on ckbxC9 changed state do
(
if state == on then
CategoryName = "Casework_"
print CategoryName
insertItem CategoryName TheName 3
print TheName[3]
)
-------------------------------Custom_Field

on Suffix1 entered txt do
(
Suffix1Text = txt
print Suffix1Text
insertItem Suffix1Text TheName 4
print TheName[4]
)

on Suffix2 entered txt do
(
Suffix2Text = txt
print Suffix2Text
insertItem Suffix2Text TheName 5
print TheName[5]
)

on Suffix3 entered txt do
(
Suffix3Text = txt
print Suffix3Text
insertItem Suffix3Text TheName 6
print TheName[6]
)

on Suffix4 entered txt do
(
Suffix4Text = txt
print Suffix4Text
insertItem Suffix4Text TheName 7
print TheName[7]
)

on theApply pressed do
(
For i in selection do i.name = TheName[1] + TheName[2] + TheName[3] + TheName[4] +"_"+ TheName[5] +"_"+ TheName[6] +"_"+ TheName[7]
)

)
createDialog Rename_Objects_1 350 750

)

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
miauu's picture

.

Here is how to solve your problem.

-- macroScript Macro4
-- category:"DragAndDrop"
-- toolTip:""
(
	rollout Rename_Objects_1 "SublimeCGI: Rename Objects"
	(
		local TheName = #("","","","","","","")
		Group "Level"
		(
			checkbox ckbx0 "Level_00" checked:false
			checkbox ckbx1 "Level_01" checked:false
			checkbox ckbx2 "Level_02" checked:false
			checkbox ckbx3 "Level_03" checked:false
			checkbox ckbx4 "Level_04" checked:false
			checkbox ckbx5 "Level_05" checked:false
		)
 
		Group "Zones"
		(
			checkbox ckbxXX "Zone_XX" checked:false
			checkbox ckbxZ0 "Zone_00" checked:false
			checkbox ckbxZ1 "Zone_01" checked:false
			checkbox ckbxZ2 "Zone_02" checked:false
			checkbox ckbxZ3 "Zone_03" checked:false
			checkbox ckbxZ4 "Zone_04" checked:false
			checkbox ckbxZ5 "Zone_05" checked:false
			checkbox ckbxZ6 "Zone_06" checked:false
		)
 
		Group "Category"
		(
			checkbox ckbxC0 "Windows" checked:false
			checkbox ckbxC1 "Doors"
			checkbox ckbxC2 "Walls" checked:false
			checkbox ckbxC3 "Furniture" checked:false
			checkbox ckbxC4 "Services" checked:false
			checkbox ckbxC5 "Floors" checked:false
			checkbox ckbxC6 "Roof" checked:false
			checkbox ckbxC7 "Appliances" checked:false
			checkbox ckbxC8 "Extras" checked:false
			checkbox ckbxC9 "Casework" checked:false
		)
 
		Group "Custom_Field"
		(
			edittext Suffix1 "Suffix Custom Description:"
			edittext Suffix2 "Suffix Custom Description:"
			edittext Suffix3 "Suffix Custom Description:"
			edittext Suffix4 "Suffix Custom Description:"
		)
 
		Group "Finalise"
		(
			button theReset "Reset" across:2 width:80 align:#center	
			button theApply "Apply" width:80 align:#center
		-----button theOk "Ok" width:80 across:2 align:#center
		)
 
		on theReset pressed do
		(
			ckbx0.state=false
			ckbx1.state=false
			ckbx2.state=false
			ckbx3.state=false
			ckbx4.state=false
			ckbx5.state=false
			ckbxXX.state=false
			ckbxZ0.state=false
			ckbxZ1.state=false
			ckbxZ2.state=false
			ckbxZ3.state=false
			ckbxZ4.state=false
			ckbxZ5.state=false
			ckbxZ6.state=false
			ckbxC0.state=false
			ckbxC1.state=false
			ckbxC2.state=false
			ckbxC3.state=false
			ckbxC4.state=false
			ckbxC5.state=false
			ckbxC6.state=false
			ckbxC7.state=false
			ckbxC8.state=false
			ckbxC9.state=false
			Suffix1.text = ""
			Suffix2.text = ""
			Suffix3.text = ""
			Suffix4.text = ""
		)
 
 
 
		-------------------Levels---------------------------------------------------------
		on ckbx0 changed state do
		(
			if state == on then
			LevelName = "Level_00_"
			print LevelName
			TheName[1] = LevelName
			-- insertItem LevelName TheName 1
			print TheName[1]
 
		)
 
		on ckbx1 changed state do
		(
			if state == on then
			LevelName = "Level_01_"
			print LevelName
			TheName[1] = LevelName
			-- insertItem LevelName TheName 1
			print TheName[1]
		)
 
		on ckbx2 changed state do
		(
			if state == on then
			LevelName = "Level_02_"
			print LevelName
			TheName[1] = LevelName
			-- insertItem LevelName TheName 1
			print TheName[1]
		)
 
		on ckbx3 changed state do
		(
			if state == on then
			LevelName = "Level_03_"
			print LevelName
			TheName[1] = LevelName
			-- insertItem LevelName TheName 1
			print TheName[1]
		)
 
		on ckbx4 changed state do
		(
			if state == on then
			LevelName = "Level_04_"
			print LevelName
			TheName[1] = LevelName
			-- insertItem LevelName TheName 1
			print TheName[1]
		)
 
		on ckbx5 changed state do
		(
			if state == on then
			LevelName = "Level_05_"
			print LevelName
			TheName[1] = LevelName
			-- insertItem LevelName TheName 1
			print TheName[1]
		)
 
		-------------------Zones---------------------------------------------------------
		on ckbxXX changed state do
		(
			if state == on then
			ZoneName = "ZXX_"
			print ZoneName
			TheName[2] = ZoneName
			-- insertItem ZoneName TheName 2
			print TheName[2]
		)
 
		on ckbxZ0 changed state do
		(
			if state == on then
			ZoneName = "Z00_"
			print ZoneName
			TheName[2] = ZoneName
			-- insertItem ZoneName TheName 2
			print TheName[2]
		)
 
		on ckbxZ1 changed state do
		(
			if state == on then
			ZoneName = "Z01_"
			print ZoneName
			TheName[2] = ZoneName
			-- insertItem ZoneName TheName 2
			print TheName[2]
		)
 
		on ckbxZ2 changed state do
		(
			if state == on then
			ZoneName = "Z02_"
			print ZoneName
			TheName[2] = ZoneName
			-- insertItem ZoneName TheName 2
			print TheName[2]
		)
 
		on ckbxZ3 changed state do
		(
			if state == on then
			ZoneName = "Z03_"
			print ZoneName
			TheName[2] = ZoneName
			-- insertItem ZoneName TheName 2
			print TheName[2]
		)
 
		on ckbxZ4 changed state do
		(
			if state == on then
			ZoneName = "Z04_"
			print ZoneName
			TheName[2] = ZoneName
			-- insertItem ZoneName TheName 2
			print TheName[2]
		)
 
		on ckbxZ5 changed state do
		(
			if state == on then
			ZoneName = "Z05_"
			print ZoneName
			TheName[2] = ZoneName
			-- insertItem ZoneName TheName 2
			print TheName[2]
		)
 
		on ckbxZ6 changed state do
		(
			if state == on then
			ZoneName = "Z06_"
			print ZoneName
			TheName[2] = ZoneName
			-- insertItem ZoneName TheName 2
			print TheName[2]
		)
 
		--------------------------------Category------------------------------------
 
		on ckbxC0 changed state do
		(
			if state == on then
			CategoryName = "Window_"
			print CategoryName
			TheName[3] = CategoryName
			-- insertItem CategoryName TheName 3
			print TheName[3]
		)
 
		on ckbxC1 changed state do
		(
			if state == on then
			CategoryName = "Door_"
			print CategoryName
			TheName[3] = CategoryName
			-- insertItem CategoryName TheName 3
			print TheName[3]
		)
 
		on ckbxC2 changed state do
		(
			if state == on then
			CategoryName = "Wall_"
			print CategoryName
			TheName[3] = CategoryName
			-- insertItem CategoryName TheName 3
			print TheName[3]
		)
 
		on ckbxC3 changed state do
		(
			if state == on then
			CategoryName = "Furniture_"
			print CategoryName
			TheName[3] = CategoryName
			-- insertItem CategoryName TheName 3
			print TheName[3]
		)
 
		on ckbxC4 changed state do
		(
			if state == on then
			CategoryName = "Services_"
			print CategoryName
			TheName[3] = CategoryName
			-- insertItem CategoryName TheName 3
			print TheName[3]
		)
 
		on ckbxC5 changed state do
		(
			if state == on then
			CategoryName = "Floor_"
			print CategoryName
			TheName[3] = CategoryName
			-- insertItem CategoryName TheName 3
			print TheName[3]
		)
 
		on ckbxC6 changed state do
		(
			if state == on then
			CategoryName = "Roof_"
			print CategoryName
			TheName[3] = CategoryName
			-- insertItem CategoryName TheName 3
			print TheName[3]
		)
 
		on ckbxC7 changed state do
		(
			if state == on then
			CategoryName = "Appliances_"
			print CategoryName
			TheName[3] = CategoryName
		)
 
		on ckbxC8 changed state do
		(
			if state == on then
			CategoryName = "Extras_"
			print CategoryName
			TheName[3] = CategoryName
			-- insertItem CategoryName TheName 3
			print TheName[3]
		)
 
		on ckbxC9 changed state do
		(
			if state == on then
			CategoryName = "Casework_"
			print CategoryName
			TheName[3] = CategoryName
			-- insertItem CategoryName TheName 3
			print TheName[3]
		)
		-------------------------------Custom_Field
 
		on Suffix1 entered txt do
		(
			if txt != "" do TheName[4] = txt
 
			-- 	Suffix1Text = txt
			-- 	print Suffix1Text
			-- 	insertItem Suffix1Text TheName 4
			-- 	print TheName[4]
 
		)
 
		on Suffix2 entered txt do
		(
			if txt != "" do TheName[5] = txt
			-- Suffix2Text = txt
			-- print Suffix2Text
			-- insertItem Suffix2Text TheName 5
			-- print TheName[5]
		)
 
		on Suffix3 entered txt do
		(
			if txt != "" do TheName[6] = txt
			-- Suffix3Text = txt
			-- print Suffix3Text
			-- insertItem Suffix3Text TheName 6
			-- print TheName[6]
		)
 
		on Suffix4 entered txt do
		(
			if txt != "" do TheName[7] = txt
			-- Suffix4Text = txt
			-- print Suffix4Text
			-- insertItem Suffix4Text TheName 7
			-- print TheName[7]
		)
 
		on theApply pressed do
		(
			newName = ""
			for str in TheName do
			(
				if str != "" do newName += str
			)
			For i in selection do i.name = newName
-- 			For i in selection do i.name = TheName[1] + TheName[2] + TheName[3] + TheName[4] +"_"+ TheName[5] +"_"+ TheName[6] +"_"+ TheName[7]
		)
 
	)
	createDialog Rename_Objects_1 350 750
 
)

If you want to have "_" between the custom sufixes add them in the text boxes.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.