I am trying to write a VB RhinoScript that finds objects with certain usertext associated with my Weight Estimating system, then show and select them. That part is easy. I also look through each block definition for a qualifying object, then show and select all instances of that block. So far so good. BUT, a qualifying block instance could itself be buried inside another block definition, which could be shown by another instance! The tree of block definitions and instances can get so convoluted I can’t seem to figure out how to get them all shown and selected. Is there a way to do this with VB?
arrBlocks = Rhino.BlockIds 'these are block definitions, not instances!
If Isarray(arrBlocks) Then
For Each strBlock In arrBlocks
If Rhino.IsBlock(strBlock) Then boolHasWtObjects = False 'default arrObjects = Rhino.BlockObjects(strBlock) If IsArray(arrObjects) Then 'Determine If any objects with weight Userdata are In the block definition For Each strObject In arrObjects If Rhino.IsObject(strObject) Then If WeightObjectType(strObject) <> 0 Then boolHasWtObjects = True End If Next If boolHasWtObjects Then 'Turn on all layers of objects in the block definition For Each strObject In arrObjects If Rhino.IsObject(strObject) Then strLayer = Rhino.ObjectLayer(strObject) Call LayerOnOff(strLayer, True, True) 'parents too Rhino.ShowObject strObject End If Next 'Show all the block instances that use this block arrBlockInstances = Rhino.BlockInstances(strBlock) If isarray(arrBlockInstances) Then For Each strBlockInstance In arrBlockInstances strLayer = Rhino.ObjectLayer(strBlockInstance) Call LayerOnOff(strLayer, True, True) 'parents too Rhino.ShowObject strBlockInstance Next End If THIS IS WHERE I GET STUCK What about qualifying objects inside blocks inside blocks inside blocks! End If End If End if Next