1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Выделение ноды в свитке treeview при выделении объекта в сцене

Тема в разделе "MAXScript", создана пользователем astron, 27 дек 2014.

Модераторы: Savin Denis
  1. astron

    astron Пользователь сайта

    С нами с:
    15.12.2006
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    2
    Как выбрать ноду(подсветить) в свитке TreeView когда выбран соответствующий объект в сцене
     
  2. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
    Код:
    (--start
    fn tvChildOfRootNodes nd selObj tv= 
    (
    for i=0 to nd.nodes.count-1 do
    (
    if selObj==nd.nodes.item[i].tag.value then tv.selectedNode=nd.nodes.item[i]
    tvChildOfRootNodes nd.nodes.item[i] selObj tv --recursive
    )--for i=0 to nd.nodes.count-1 do
    )--fn tvChildOfRootNodes nd selObj tv= 
    try(destroyDialog treeview_rollout)catch()
    rollout treeview_rollout "TreeView Scene Browser"
    (
    fn initTreeView tv = (tv.Indent= 28)
    fn addChildren theNode theChildren tv =
    (
    for c in theChildren do
    (
    newNode = theNode.Nodes.add c.name --add to the parent!
    if c.isselected then tv.selectedNode=newNode
    newNode.tag = dotNetMXSValue c --.tag can contain a MXS value
    addChildren newNode c.children tv --recursive call for new node
    )--for c in theChildren do
    )--fn addChildren theNode theChildren =
    fn fillInTreeView tv =
    (
    theRoot = tv.Nodes.add "WORLD ROOT" --add parent node
    tv.selectedNode=theRoot
    rootNodes = for o in objects where o.parent == undefined collect o
    addChildren theRoot rootNodes tv --no need to pass the TreeView
    )
    dotNetControl tv "TreeView" width: 190 height:290 align:#center
    spinner spn_indent "Indentation" range:[0,100,28] type:#integer fieldwidth:40
    on tv Click arg do 
    (
    hitNode = tv.GetNodeAt (dotNetObject "System.Drawing.Point" arg.x arg.y)
    if hitNode != undefined do --if a TreeView node was clicked,
    try(select hitNode.tag.value)catch(max select none) 
    )
    on spn_indent changed val do tv.indent = val
    on treeview_rollout open do (initTreeView tv;fillInTreeView tv; tv.HideSelection = false)
    ); createDialog treeview_rollout 200 320
    
    deleteAllChangeHandlers id:#igorznag_treeview_select_node
    when  select objects change id:#igorznag_treeview_select_node handleAt:#redrawViews obj do
    try (
        treeview_rollout.tv.selectedNode=treeview_rollout.tv.nodes.item[0]; obj=selection[1]; 
        for i=0 to (treeview_rollout.tv.nodes.count-1) do tvChildOfRootNodes treeview_rollout.tv.nodes.item[i] obj treeview_rollout.tv) catch()
    )--end
     
    astron нравится это.
  3. astron

    astron Пользователь сайта

    С нами с:
    15.12.2006
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    2
    Спасибо!! спасибо огромное !!!
     
Модераторы: Savin Denis

Поделиться этой страницей