Applying a transformation to all the entities of a group
-
[EDIT]: in Sim4Life 4.0 (and above), the steps below are no longer necessary. The
ApplyTransform()
function can be directly used on an EntityGroup object:# Select "Duke" entity group duke_group = model.AllEntities()["Duke"] # apply transformation to each entity of the group x = 10.0 y = 5.0 z = 12.0 duke_group.ApplyTransform( Translation(Vec3(x,y,z)) )
[ORIGINAL POST]
To apply a given transformation on a whole group of entities with Python, you have to use the ApplyTransform() function on each element of the EntityGroup object. What you can do is write a recursive function that does exactly that. Here is an example of such function:def ApplyTransformRecursively(entity_group, transformation): if isinstance(entity_group, core.EntityGroup): for entity in entity_group.Entities: ApplyTransformRecursively(entity, transformation) else: entity_group.ApplyTransform(transformation)
You can use it like this:
# Select "Duke" entity group duke_group = model.AllEntities()["Duke"] # apply transformation to each entity of the group x = 10.0 y = 5.0 z = 12.0 ApplyTransformRecursively(duke_group, Translation(Vec3(x,y,z)))