ScriptSpot

Forum topic · General Scripting

Unknown property: "addNode" in "<MixinInterface:LayerProperties>"

By Any · 2015-12-18

Description

Try to clone some objects in scene and put it on NEW layer

******************************************************************
a=#()
b=#()
s=#()
layer2=undefined
rollout test_buttons "CloneObjects" width:200 height:96
(
button SelectObjects "Select" pos:[24,24] width:62 height:21
button CloneObjects "Clone" pos:[24,64] width:62 height:20
edittext edtNewName "New Name" pos:[24,48] width:144 height:16 enabled:true text:"FFF"
groupBox grp1 "GroupBox" pos:[5,4] width:179 height:84

on SelectObjects pressed do
(
s=$ as array
)
on CloneObjects pressed do
(
maxops.clonenodes s actualNodeList:&a newNodes:&b
for i=1 to b.count do
(
b[i].name = edtNewName.text as string + "_"+b[i].name
)
layer2 = layermanager.newLayerFromName edtNewName.text as string
for t=1 to b.count do
(
layer2.addNode b[t]
)
max hide inv
)
)
createDialog test_buttons 200 96
*****************************************************************************

The system show messagу

****************************************************
>> MAXScript Rollout Handler Exception: -- Unknown property: "addNode" in "" <<
********************************************************

Why ?????

Comments (3)

Any · 2015-12-18

BARIGAZY!!!!
NO COMENT!!!!

barigazy · 2015-12-18


rollout test_buttons "CloneObjects" width:200 height:96
(
local s=#(), newlayer = layermanager.newLayerFromName
button SelectObjects "Select" pos:[24,24] width:62 height:21
button CloneObjects "Clone" pos:[24,64] width:62 height:20
edittext edtNewName "New Name" pos:[24,48] width:144 height:16 text:"FFF"
groupBox grp1 "GroupBox" pos:[5,4] width:179 height:84

on SelectObjects pressed do (s = getCurrentSelection())
on CloneObjects pressed do if s.count > 0 do
(
if edtNewName.text == "" then messageBox "Enter Some text" title:"Warning" beep:off else
(
local a=#(), b=#(), layer2 = newlayer edtNewName.text
maxops.clonenodes s actualNodeList:&a newNodes:&b
for i = 1 to b.count do
(
b[i].name = edtNewName.text + "_" + b[i].name
layer2.addNode b[i]
)
max hide inv
)
)
)
createDialog test_buttons 200 96

barigazy · 2015-12-18

One more solution. This way you can preserve prefix + original name

try(DestroyDialog ::test_buttons)catch()
rollout test_buttons "CloneObjects" width:200 height:96
(
local s=#(), newlayer = layermanager.newLayerFromName, getlayer = layerManager.getLayer
fn checkLayerName string =
(
state = false
for i = 0 to layerManager.count-1 where (getlayer i).name == string do state = true
state
)
button SelectObjects "Select" pos:[24,24] width:62 height:21
button CloneObjects "Clone" pos:[24,64] width:62 height:20
edittext edtNewName "New Name" pos:[24,48] width:144 height:16 text:"FFF"
groupBox grp1 "GroupBox" pos:[5,4] width:179 height:84

on SelectObjects pressed do (s = getCurrentSelection() ; clearSelection())
on CloneObjects pressed do if s.count > 0 do
(
if edtNewName.text == "" then messageBox "Enter Some text" title:"Warning" beep:off else
(
if checkLayerName edtNewName.text then messageBox "This Layer Already Exists!\nEnter new name" title:"Warning" beep:off else
(
local a=#(), b=#(), layer2 = newlayer edtNewName.text ; layer2.current = on
for o in s do
(
copy o name:(edtNewName.text + "_" + o.name) ishidden:on
)
)
)
)
)
createDialog test_buttons 200 96