Creating ICE Trees after you create a cluster


In brief: don’t click Create ICE Tree immediately after you create a cluster that you want to use in your ICE tree, because the ICE tree will be created on the cluster. And the ICE tree will be in the wrong place in the operator stack.

Check this out: in the ICE Tree view expolorer, I have two ICETree operators with the same name.

So, how did this happen? Like this:

  • Create a polygon cluster.
  • In the ICE Tree view, click Create ICE Tree (this creates an ICETree on the cluster, not on the mesh).
  • Select the mesh object.
  • In the ICE Tree view, click Create ICE Tree (this ICETree is on the mesh).

This can lead to problems when you use the cluster in the ICE tree. For example, if you use IsElement, it will return False for everything, and NbElements will return 0.

To understand why, take a look at the dump of the connection stack.

Line 6 is the ICETree on the cluster. That ICETree is below the ops that create the cluster, so you cannot use IsElement in that ICETree.

# sphere1.polymsh.modelingmarker
# sphere1.polymsh.ICETree (out)
# sphere1.polymsh.ICETree (in)
# sphere1.polymsh.cls.poly.clslist.Polygon.AddToClsOp (out)
# sphere1.polymsh.cls.poly.default_Polygon.SetClsOp (out)
# sphere1.polymsh.ICETree (in)
# Unnamed Operator (out)
# sphere1.polymsh.geom (in)