Render.ru

Как удалить instance объекты из массива

astron

Пользователь сайта
Рейтинг
2
#1
Нужно собирать массив объектов на которых наложен TurboSmooth
В получившемся массиве на ряду с уникальными объектами, присутствую instance объекты, как их удалить, оставив лишь один объект instance

вот моя функция но работает через раз. не могу понять почему.
function objectCollector =
( ObjArrTbs=#()
dirtinctarr=#()
for i in geometry where i.isHiddenInVpt!=true do
(
if ( classof i.modifiers[1]==TurboSmooth ) then append ObjArrTbs #(i,1,(i.modifiers[1].iterations),(i.modifiers[1].enabled),if (InstanceMgr.GetInstances i &instances)==1 then true else false)
else
for j=1 to i.modifiers.count do
(
if (classof i.modifiers[j]==TurboSmooth and isHiddenInVpt!=true) then (append ObjArrTbs #(i,j,i.modifiers[j].iterations,i.modifiers[j].enabled, if (InstanceMgr.GetInstances i &instances)==1 then true else false) ; exit() )
else
if classof i.modifiers[j]==Edit_Poly do exit()
)
)

global Dirtarr=ObjArrTbs.count
objcount= ObjArrTbs.count
while objcount>=1 do
( if InstanceMgr.GetInstances ObjArrTbs[objcount][1] &instances != undefined then inst=instances.count else exit()

while inst>=2 do
(
tempvar=objcount
while tempvar >=1 do
(
if finditem ObjArrTbs[tempvar] instances[inst] > 0 do deleteitem ObjArrTbs tempvar; exit()
tempvar-=1
)
inst-=1
)
objcount-=1
)
)
 

igorznag

Мастер
Рейтинг
103
#2
Нужно собирать массив объектов на которых наложен TurboSmooth
В получившемся массиве на ряду с уникальными объектами, присутствую instance объекты, как их удалить, оставив лишь один объект instance
Пример:
Код:
ObjArrTbs=#(); g=geometry as array; while g.count>0 do 
( 
have_ts=false; i=g[1]
for j=1 to i.modifiers.count where classof i.modifiers[j]==TurboSmooth do have_ts=true
if have_ts==true then append ObjArrTbs i; InstanceMgr.GetInstances i &instances
for k in instances do (ind=finditem g k;if ind>0 do deleteitem g ind)
)
print ObjArrTbs
 
Сверху