Hm. Well, I am guessing a bit at what you need, but, if you get the instance’s transformation matrix and apply that to the WorldXY plane, then there is a chance, assuming the block was created alinged to the orgin and world plane, that the resulting plane’s axes will have some useful relation to the block instance - as far as I know there is no inherent plane or axis in a block instance…

for instance:

Call Main()

Sub Main()

Dim sBlock: sBlock = Rhino.GetObject(, 4096, True, True)

Dim xform: xform = Rhino.BlockInstanceXform(sBlock)

Dim tempPlane: tempPlane = Rhino.PlaneTransform(Rhino.WorldXYPlane(), xform)

’ next bit is all one line

Dim sAxisLIne: sAxisLIne = Rhino.AddLine(tempPlane(0), Rhino.PointAdd(tempPlane(0), Rhino.VectorScale(tempPlane(2), 20)))

’ end all one line.

End Sub

More completely-

```
Sub Main()
Dim sBlock: sBlock = Rhino.GetObject(, 4096, True, True)
If isNull(sBlock) Then Exit Sub
'the block instance's transform
Dim xform
xform = Rhino.BlockInstanceXform(sBlock)
'Find a plane transformed like the block instance
Dim tempPlane
tempPlane = Rhino.PlaneTransform(Rhino.WorldXYPlane(), xform)
'find a point on the block's Y axis.
Dim py
py = Rhino.PointAdd(tempPlane(0), tempPLane(2))
'find the center of rotation
Dim p1
p1 = Rhino.LinePlaneIntersection(array(tempPlane(0), py), Rhino.WorldYZPlane())
'Get a point on the YZ plane
Dim p2
p2 = Rhino.PlaneClosestPoint(Rhino.WorldYZPlane(), py)
'The block Y vector projected to the World YZ plane
Dim vecDir
vecDir = Rhino.VectorCreate(p1, p2)
Dim ang
ang = Rhino.VectorAngle(tempPLane(2), vecDir)
'Right to left use - angle, left to right use + angle
Rhino.RotateObject sBlock, p1, -ang * 2, tempPlane(3), True
```

End Sub

-Pascal