copy object with unique name + only 2 digits

Hi Guys,

Really confused with this one. Tried lots of varients now, but cant seem to work out what's going wrong. Say you have a Box (it's name "Box_01", only 2 digits not the normal 3). I have written a few lines of code to copy this node and give it a unique name but I only want to stick to the original 2 digit suffix i.e "Box_02, Box_03" etc.

Please can you have a quick look and see if there are any obvious mistakes. Currently the new copy jumps from "Box_01" to "Box_03 then "Box_05" etc!!!!

newObj = copy $
newObj.name = uniquename $.name numDigits:2
select newObj

Many thanks in advance!!! :-)

Comments

Comment viewing options

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

Swordslayer, Your ideas lead

Swordslayer,

Your ideas lead me to try this which works perfectly, Thanks!

newObj = copy $ name:$.name
newObj.name = uniquename $.name numDigits:2
select newObj

barigazy's picture

...

You can try this one also

--main function
fn uniqueNodeName node = if isValidNode node do
(
	fn filtername nodeName suffix = (e = filterstring nodeName "_" ; e[2] = suffix ; e)
	local oldName = filtername node.name "01", newName = oldName[1]+"_01"
	while (getNodeByName newname) != undefined do
	(
		newName = oldName[1] + "_" + (string = formattedPrint ((trimleft oldName[2] "0") as integer + 1) format:"02d")
		oldName = filtername newName string
	)
	newName
)
select (copy $ name:(uniqueNodeName $))

bga

BenjyvC's picture

Q: editing MEL script

Excuse my noobness, but I'm running into a similar situation, believe this code from barigazy would do the trick, please confirm. I'm running a script to import multiple fbx's from a folder, here's that script: When I load macro_batch_exporter_importer.mcr I see 3DS finding and trying to open each the fbx's, but at the end I find but a single mesh with the generic name, meshNode. It would appear 3DS sees all these mesh parts with the same generic name and loads just one. So barigazy, that's what your code addresses? If so, how would I implement it with this .mse script that I can't open to see/edit the code? Thanks!

ce89's picture

Thanks Barigazy, Just tried

Thanks Barigazy,

Just tried your script and this works great too. Always intresting seeing more advanced options!

ce89's picture

Hi Barigazy, Appolgies I just

Hi Barigazy,

Appolgies I just tried it with another test name "Geometry_Box_v01" (chances are my names will have a few underscores at least) and when I run it creates a copy called "Geometry_v01", removing the middle section of the name. Is it posible to remove anything after the last instance of "_" and then add on the "v01" to create "Geometry_Box_v01", "Geometry_Box_v02", "Geometry_Box_v03" etc.

Thank you for your help!

barigazy's picture

...

Both fn's are only for your example only. You need to adjust theses for every different case. Anyway ...

fn uniqueNodeName node = if isValidNode node do
(
	fn filtername nodeName suffix = (e = filterstring (substituteString nodeName "_v" "#") "#" ; e[2] = suffix ; e)
	local oldName = filtername node.name "01", newName = oldName[1]+"_v01"
	while (getNodeByName newname) != undefined do
	(
		newName = oldName[1] + "_v" + (string = formattedPrint ((trimleft oldName[2] "0") as integer + 1) format:"02d")
		oldName = filtername newName string
	)
	newName
)
select (copy $ name:(uniqueNodeName $))

bga

barigazy's picture

...

Also I did'nt test this if you have on the scene 99 objects. What happens then?

;)

bga

ce89's picture

Barigazy, This is perfect,

Barigazy,

This is perfect, thank you very much for your help!!! For my needs the count will never go over 99 so no worries.

Thanks again!

Swordslayer's picture

.

Looks like the plus one increase is from the copy command, and you're incrementing it another time with uniqueName. Try using a placeholder name for the copied object instead (sth. like copy $ name:"temp" or copy $ prefix:#placeholder).

fajar's picture

mine working correctly

mine working correctly

Comment viewing options

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