WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   GEODE Names (https://forum.worldviz.com/showthread.php?t=3062)

nige777 11-05-2010 08:25 AM

GEODE Names
 
Ok so I'm getting myself al tied in knots here :o

I'm trying to extract the GEODE name (as assigned in max) from all the nodes in an IVE file and reassign them them back to the objects so I can access them through viz.pick(1) like this:
Code:

#Fill components list with model child nodes and then sort it
components = model.getNodeNames()
#components.sort
print components #DEBUG

#Traverse through scene graph children one by one and assign Node Names to respective child nodes
for a in range(len(components)):
        if components[a] == "__VIZARD_NODE__": #Ignore root node
                break
        else:
                model.getChild(components[a]) == components[a]

Firstly I get a load of warnings like this:
Code:


** ERROR: Could not find child with name 'Ceiling Tile 600 x 600'
** ERROR: Could not find child with name 'Concrete - Cast In Situ'
** ERROR: Could not find child with name 'Concrete - Cast-in-Place Concrete'

(which I presume is because Vizard is trying to find child nodes which are in fact materials??)

Secondly all I get returned from the pick routine is the lowest transform on the Node, which in most cases is the material. I've poured over the forum and the help manual but after two days trying to sort this I've only succeeded in tying myself up in knots :confused:


Confusingly (for me!) this technique worked with an OBJ file from sketchup but the files I need to work with are Revit files I'm bringing in through Max (as fbx to IVE) -

Could someone please help me out of my friday night hole and suggest a way of achieving this - Thanks :cool:

nige777 11-07-2010 10:14 AM

By the way 3d files are chosen by the user at runtime which is why I'm struggling to get a handle on the geode name :eek:


I've a feeling this is probably a lot simpler than I'm imagining it to be (these things quite often are :D)

nige777 11-07-2010 03:49 PM

Solved
 
Just in case someone else has a mental blockage over this (like me :D) and just to close the thread,

I solved this by creating a dictionary that mapped the node id to the geode name, then its a simple matter of indexing to retrieve the GEODE name -

Code:

#Fill components list with model child nodes and then sort it
components = model.getNodeNames()
components.sort

#Traverse through scene graph children one by one and create dictionary map
for a in range(len(components)):
        if components[a] == "__VIZARD_NODE__": #finish loop at root node
                break
               
        elif components[a][-5:] == "GEODE":
                k = model.getChild(components[a])
                dict[k] = [components[a]]    #Create dictionary
                continue

The second condition statement checks the node name refers to geometry before creating a dictionary entry


All times are GMT -7. The time now is 07:11 PM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Copyright 2002-2023 WorldViz LLC