A Patch Panel that can be 1U too

Microsoft Visio 2007 Professional and 2010 Professional and Premium includes the Network / Rack Diagram template, which opens the Rack-mounted equipment stencil. This stencil includes the Patch Panel master which can be stretched from 2U to 25U high. However, I have often required a 1U patch Panel, so I decided to look into the Microsoft shape to see if it could be modified to allow it to be reduced to 1U without looking ridiculous.


I opened up the ShapeSheet of the Patch Panel master and found that the formula in the Prop.UCount.Value cell is imposing 2 as a minimum value with the BOUND() function.

I changed the formula to =BOUND(2,0,FALSE,1,25), and was then able to change the UHeight to 1U, but the 24 ports remained visible:


I actually wanted the number of ports to be halved to 12, so I set about exploring the sub-shapes in the master. I found that Sheet.18 contains the port shapes, and that its height is fixed at 2 Us. All of its sub-shapes have a height formula referencing this height, so I decided to modify the PinY formula to =Sheet.5!Height*0.5*(IF(Sheet.5!Prop.UCount=1,2,1)) so that it would move the lower bank of ports up into the correct position if the Prop.UCount equals 1.


Then it was just necessary to go through each of the sub-shapes of Sheet.18 to modify the GeometryX.NoShow formula to =Sheet.5!Prop.UCount=1 for each Geometry section which is in the upper half of the shape.


At this point, I could see that I had to put this formula into 12 geometry sections of 4 shapes, which is 48 copy and pastes! Therefore, I decided to write some VBA code to do this instead. This has the advantage that you can run the code on existing documents that already have the Patch panel master in it. In fact, the Patch panel master must be in the local document stencil for this code to work.

 1: Public Sub UpdatePatchPanelMaster()
 2: Dim mst As Visio.Master
 3: Dim mstCopy As Visio.Master
 4: Dim shpPatchPanel As Visio.Shape
 5: Dim shpPortGroup As Visio.Shape
 6: Dim shpPortGraphics As Visio.Shape
 7: Dim i As Integer
 8: Dim iSect As Integer
 9: Dim dHeight As Double
 11:     For Each mst In Visio.ActiveDocument.Masters
 12:         If mst.Name = "Patch panel" Then
 13:             Set mstCopy = mst.Open
 14:             Set shpPatchPanel = mstCopy.Shapes(1)
 15:             For Each shpPortGroup In shpPatchPanel.Shapes
 16:                 If shpPortGroup.Cells("Height").FormulaU = _
 17:                         "Sheet.5!User.OneUHeight*2" Then
 18:                     shpPortGroup.Cells("PinY").FormulaU = _
 19:                         "=Sheet.5!Height*0.5*(IF(Sheet.5!Prop.UCount=1,2,1))"
 20:                     For Each shpPortGraphics In shpPortGroup.Shapes
 21:                         dHeight = shpPortGraphics.Cells("Height").ResultIU
 22:                         For i = 0 To shpPortGraphics.GeometryCount - 1
 23:                             iSect = Visio.visSectionFirstComponent + i
 24:                             If shpPortGraphics.CellsSRC(iSect, _
 25:                                     Visio.visRowComponent + 1, _
 26:                                     Visio.visY).ResultIU > dHeight * 0.5 Then
 27:                                 shpPortGraphics.CellsSRC(iSect, 0, _
 28:                                     Visio.visCompNoShow).Formula = _
 29:                                     "=Sheet.5!Prop.UCount=1"
 30:                             End If
 31:                         Next i
 32:                     Next shpPortGraphics
 33:                     Exit For
 34:                 End If
 35:             Next shpPortGroup
 36:             mstCopy.Close
 37:             mst.MatchByName = True
 38:             Exit For
 39:         End If
 40:     Next mst
 42: End Sub

And there you have it … the Patch panel can now be reduced to 1 U and it looks OK!


If you cannot be bothered to run the code, you can download the updated Patch panel and the code from here :  http://cid-3350d61bc93733a9.office.live.com/self.aspx/Blogs/PatchPanelUpdate.vsd

Posted in Visio. 23 Comments »

Holiday in Akbuk, Turkey

Time for a break from work, so we went to Turkey for the third time. Our previous trips have been to Icmeler, so we decided to try somewhere different. Akbuk is not as pretty as Icmeler, and we were a longer walk from the beach, but much closer for a visit to Ephesus.

It is hard to believe that Ephesus was a bustling port in Roman times because the coast is 7 kilometres away now, however it is an extremely interesting place to visit.

This first panorama was taken inside the theatre at Ephesus, with a 360 degree sweep. Again I used Microsoft Image Composite Editor ( see http://research.microsoft.com/en-us/um/redmond/groups/ivm/ice/ ) to piece these images together.

imageHD View : http://www.bvisual.net/views/EphesusAmphitheatre_stitch.html

This second panorama was taken from near the top of the seating looking back towards the sea in the far distance.


HD View : http://www.bvisual.net/views/ViewFromEphesusAmphitheatre_stitch.html

The coach trip to Ephesus from Akbuk was a little spoilt by the three retail opportunities (leather, ceramics and jewellery ) forced on us afterwards.

Ephesus in Bing Maps:

Map picture

We stayed in self-catering apartments at Mandalya Gardens (see http://www.mandalyaproperty.com/ ), where the accommodation and staff were very good. It would have been useful to have air-con in all rooms, since the bedrooms were just too hot to sleep in.

My family and me … sweltering in the heat!


Posted in Travel. 1 Comment »

Get every new post delivered to your Inbox.

Join 218 other followers