Notifications
Clear all

[Closed] grouping similar/duplicate named objects

Hi.

i’ve written a script to import 3ds files into max and rename objects within each file to correspond to the file name, which is simple enough.

now i want to group all the objects of the same name as they come into max (for easier selection) but i can’t figure out how to. here’s the script (quite rudimentary):

impath="E:\\DI\\DI ConstructionAnimation\\3ds\\"
  impcount= impath.count+3
  
  --change the import file type as needed
  impext="*.3ds"
  
  impfile=impath+impext
  
  igsfiles = getFiles impfile
  nof = igsfiles.count
  
  for f = 1 to nof  do
  (
      importfile igsfiles[f] #noPrompt
      impname = substring igsfiles[f] impcount 100
      max select all
      $.name = impname
      group selection name: impname
      max freeze selection
  )
  max unfreeze all
  

the problem is that the current script ends up grouping everything in the scene with the same name.

also, is there a workaround script that can select similarly named objects and group them by that same name?

thanks very much.

3 Replies

for f = 1 to nof do
(
importfile igsfiles[f] #noPrompt
impname = substring igsfiles[f] impcount 100
max select all
$.name = impname
group selection name: impname
max freeze selection
)
Okay, this seems to be wrong (for what you want to do). Basically it is saying,

Import file, select ALL the objects in the scene, rename them (to the name of the file), group them and repeat…which will then rename and group all the objects already in the scene with those you have just imported…messy

Okay, firstly, I would take a look at getMaxFileObjectNames. This will allow you to get the names of all the objects in a max file without having to open it. You could then use this information to group objects together once you have imported the file.

I would next suggest you take a look at matchPattern. It provides you a means to match string values based on a wildcard pattern. This will allow you to find like named objects, based on your requirements as “simular” is very subjective.

Shane

i looked at the getMaxFileObjectNames andmatchPattern funcitons and managed to acquire arrays of duplicate named objects. but i don’t know how to select objects in the array and then group them.

how do you select objects in max from an array?

thanks.

hey. nvm i figured it out, pretty simple solution in hindsight:

x = $*
select x[1]

i=1
j=i+1

while x[i].name == x[j].name do
(
selectmore x[j]
j+=1
)
group selection name: x[i].name

thanks for the help.