Parsing scene tree


  • scene.getRoot()
  • scene.getChildren(occurrence)
  • scene.getParent(occurrence)
  • scene.hasComponent(occurrence, scene.ComponentType.Part)
  • scene.getComponent(occurrence, scene.ComponentType.Part)


Parsing scene tree example

def traverseTree(occurrence):

       print("Occurrence " + str(occurrence))

        if scene.hasComponent(occurrence, scene.ComponentType.Part):

                   print("-> has part")

       for child in scene.getChildren(occurrence):

               traverseTree(child)


traverseTree(scene.getRoot())


Node creation

  • scene.createOccurrence()
  • scene.addComponent(occurrence, componentType)
  • scene.prototypeSubTree(occurrence)
  • scene.setParent(occurrence, parent)
  • scene.setLocalMatrix(occurrence, matrix)


Node creation example

  • part = scene.createOccurrence("Part1")
  • scene.addComponent(part, scene.ComponentType.Part)
  • instance1 = scene.prototypeSubTree(part)
  • instance2 = scene. prototypeSubTree(part)
  • assembly = scene. createOccurrence("Assembly")
  • scene.setParent(instance1, assembly)
  • scene.setParent(instance2, assembly)
  • scene.setParent(assembly, scene.getRoot())



Accessing part geometry

  • scene.getPartActiveShape(part)
  • For TessellatedShape type :
    • tessellation = scene.getTessellatedShapeMesh(shape)
    • polygonal.getMeshDefinitions(tessellation)
    • polygonal. createMeshFromDefinition(meshDefinition)
  • For BRepShape type
    • scene.getBRepShapeModel(shape)


Simple CAD geometry example

torus = cad.createTorusSurface(100, 10)

face = cad.createFace(torus)

model = cad.createModel()

cad.addToModel(face, model)

occurrence = scene.createOccurrence("Torus")

part = scene.addComponent(occurrence, scene.ComponentType.Part)  

scene.setPartModel(part, model)

scene.setParent(occurrence, scene.getRoot())


Custom properties

Not all entity types support custom properties

  • core.supportCustomProperties(entity)
  • core.addCustomProperty(node, « propertyName », « propertyValue »)
  • core.getProperty(node, « property ») like any other built-in property


Find nodes by properties

  • scene.findByActiveMaterial()
  • scene.findByProperty(« propertyName », « regex »)
  • scene.findMaterialByProperty(« propertyName », « regex »)
  • ECMAScript type regex