Source code for paraview.web.vtkjs_helper

from paraview import simple
import os, json

# -----------------------------------------------------------------------------

[docs]def getAllNames(): actorNameMapping = {} srcs = simple.GetSources() duplicates = {} for key, val in srcs.items(): # Prevent name duplication nameToUse = key[0] if nameToUse in duplicates: count = 1 newName = '%s (%d)' % (nameToUse, count) while newName in duplicates: count += 1 newName = '%s (%d)' % (nameToUse, count) nameToUse = newName duplicates[nameToUse] = True representation = simple.GetRepresentation(val) if representation: vtkRepInstance = representation.GetClientSideObject() if 'GetActiveRepresentation' in dir(vtkRepInstance): actorRep = vtkRepInstance.GetActiveRepresentation().GetActor() actorNameMapping[nameToUse] = actorRep return actorNameMapping
# -----------------------------------------------------------------------------
[docs]def findName(names, actor, defaultName): for name in names: if actor == names[name]: return name return defaultName
# -----------------------------------------------------------------------------
[docs]def getRenameMap(): renameMap = {} names = getAllNames() view = simple.GetActiveView() renderer = view.GetClientSideObject().GetRenderer() viewProps = renderer.GetViewProps() idx = 1 for viewProp in viewProps: if not viewProp.GetVisibility(): continue if not viewProp.IsA('vtkActor'): continue bounds = viewProp.GetBounds() if bounds[0] > bounds[1]: continue # The mapping will fail for multiblock that are composed of several blocks # Merge block should be used to solve the renaming issue for now # as the id is based on the a valid block vs representation. strIdx = '%s' % idx renameMap[strIdx] = findName(names, viewProp, strIdx) idx += 1 return renameMap
# -----------------------------------------------------------------------------
[docs]def applyParaViewNaming(directoryPath): renameMap = getRenameMap() scene = None filePath = os.path.join(directoryPath, 'index.json') with open(filePath) as file: scene = json.load(file) for item in scene['scene']: if item['name'] in renameMap: item['name'] = renameMap[item['name']] with open(filePath, 'w') as file: file.write(json.dumps(scene, indent=2))