Как получить узлы из слоя, используя pymxs, а не MaxPlus - PullRequest
0 голосов
/ 28 марта 2019

Я использую pymxs, чтобы получить узлы из любого конкретного слоя.Я не хочу использовать MaxPlus

В настоящее время использую refs.dependents с pymxs и фильтрую список по геометрии, но просто хочу использовать возможность узлов и узлов, которую использует Maxscript.

import pymxs
rt = pymxs.runtime

def get_all_layers():
    """Retrieve all layers except layer 0 (zero)"""
    for i in range(1 , rt.LayerManager.count):
        the_layer = rt.LayerManager.GetLayer(i)
        the_layers.append(the_layer)        
    return the_layers

def get_all_layer_nodes():
    """Collect all the nodes on a given layer"""    
    all_layers = get_all_layers()
    for i in range(0, len(all_layers)):
        layer_nodes = rt.refs.dependents(all_layers[i].layerAsRefTarg)
    return layer_nodes

for each in layer_nodes:
    if rt.superClassOf(each) == rt.GeometryClass:
    """Need to collect in array/list/tuple"""
    print each.name 

get_all_layer_nodes()

Вышеработает, но не лучшим образом, я видел на форуме Autodesk (https://forums.autodesk.com/t5/3ds-max-programming/pymxs-documentation/m-p/8690351#M23242), что можно использовать следующее, но в нем не говорится, в каком контексте или должно ли оно быть частью другой строки кода:

rt.layer.nodes (pymxs.mxsreference (theNodes)) *

Документация pymxs меньше страницы и находится в постоянном развитии, поэтому нет никакой помощи, чтобы перейти к этому или практическилюбая другая функциональность pymxs

...