Text Using Client Graphics (Multiple fonts and lines)
Description
This sample demonstrates creating text using client graphics. It illustrates the more complex case of changes in font and more than one line.Code Samples
To run the sample have a part or assembly document open.
Public Sub ClientGraphicsTextMultipleFonts()
' Set a reference to the document. This will work with
' either a part or assembly document.
Dim oDoc As Document
Set oDoc = ThisApplication.ActiveDocument
' Set a reference to the component definition.
Dim oCompDef As ComponentDefinition
Set oCompDef = oDoc.ComponentDefinition
' Attempt to get the existing client graphics object. If it exists
' delete it so the rest of the code can continue as if it never existed.
Dim oClientGraphics As ClientGraphics
On Error Resume Next
Set oClientGraphics = oCompDef.ClientGraphicsCollection.Item("Text Test")
If Err.Number = 0 Then
oClientGraphics.Delete
End If
On Error GoTo 0
ThisApplication.ActiveView.Update
' Create a new ClientGraphics object.
Set oClientGraphics = oCompDef.ClientGraphicsCollection.Add("Text Test")
' Create a graphics node.
Dim oNode As GraphicsNode
Set oNode = oClientGraphics.AddNode(1)
Dim oTG As TransientGeometry
Set oTG = ThisApplication.TransientGeometry
Dim oModelAnchorPoint As Point
Set oModelAnchorPoint = oTG.CreatePoint(50, 0, 0)
' Create several text graphics objects, one for each font change. The anchor of the
' TextGraphics object defines the position of each text element relative to each other.
' Because they're all drawn with pixel scaling behavior these coordinates are in
' pixel space. They all use the same point as input for the SetTransformBehavior call.
' This point is in model space and defines their anchor within the model.
' Draw the first character which is the diameter symbol.
Dim oTextGraphics(1 To 4) As TextGraphics
Set oTextGraphics(1) = oNode.AddTextGraphics
oTextGraphics(1).Text = "n "
' Because this text will have pixel scaling behavior these coordinates are in pixel space.
oTextGraphics(1).Anchor = oTG.CreatePoint(0, 0, 0)
oTextGraphics(1).Font = "AIGDT"
oTextGraphics(1).FontSize = 25
oTextGraphics(1).HorizontalAlignment = kAlignTextLeft
Call oTextGraphics(1).PutTextColor(0, 255, 255)
oTextGraphics(1).VerticalAlignment = kAlignTextMiddle
Call oTextGraphics(1).SetTransformBehavior(oModelAnchorPoint, kFrontFacingAndPixelScaling)
Dim oBox As Box
Set oBox = oTextGraphics(1).RangeBox
' Draw the next section of the string relative to the first section.
Set oTextGraphics(2) = oNode.AddTextGraphics
oTextGraphics(2).Text = "9.4 - 9.8"
' The range of the previous character is used to determine where to position
' the next string. The range is returned in pixels.
oTextGraphics(2).Anchor = oTG.CreatePoint(oModelAnchorPoint.X + oBox.MaxPoint.X, 0, 0)
oTextGraphics(2).Font = "Arial"
oTextGraphics(2).FontSize = 25
oTextGraphics(2).HorizontalAlignment = kAlignTextLeft
Call oTextGraphics(2).PutTextColor(0, 255, 255)
oTextGraphics(2).VerticalAlignment = kAlignTextMiddle
Call oTextGraphics(2).SetTransformBehavior(oModelAnchorPoint, kFrontFacingAndPixelScaling)
' Draw a depth symbol on the next line.
Set oTextGraphics(3) = oNode.AddTextGraphics
oTextGraphics(3).Text = "x "
' Using the range of the first text graphics determine the position for a string that
' is immediately below. This defines the next line of text.
oTextGraphics(3).Anchor = oTG.CreatePoint(oModelAnchorPoint.X + oBox.MinPoint.X, oBox.MinPoint.Y - ((oBox.MaxPoint.Y - oBox.MinPoint.Y) * 1.5), 0)
oTextGraphics(3).Font = "AIGDT"
oTextGraphics(3).FontSize = 25
oTextGraphics(3).HorizontalAlignment = kAlignTextLeft
Call oTextGraphics(3).PutTextColor(0, 255, 255)
oTextGraphics(3).VerticalAlignment = kAlignTextMiddle
Call oTextGraphics(3).SetTransformBehavior(oModelAnchorPoint, kFrontFacingAndPixelScaling)
Set oBox = oTextGraphics(3).RangeBox
' Draw the last set of text.s
Set oTextGraphics(4) = oNode.AddTextGraphics
oTextGraphics(4).Text = "20"
oTextGraphics(4).Anchor = oTG.CreatePoint(oModelAnchorPoint.X + oBox.MaxPoint.X, oTextGraphics(3).Anchor.Y, 0)
oTextGraphics(4).Font = "Arial"
oTextGraphics(4).FontSize = 25
oTextGraphics(4).HorizontalAlignment = kAlignTextLeft
Call oTextGraphics(4).PutTextColor(0, 255, 255)
oTextGraphics(4).VerticalAlignment = kAlignTextMiddle
Call oTextGraphics(4).SetTransformBehavior(oModelAnchorPoint, kFrontFacingAndPixelScaling)
' Update the view to see the text.
ThisApplication.ActiveView.Update
End Sub
