You can give this a go:
Sub Main()
Dim doc As DrawingDocument = ThisDoc.Document
Dim sheet As Sheet = doc.ActiveSheet
Dim dimension As LinearGeneralDimension = 'sheet.DrawingDimensions.GeneralDimensions.Item(1)
ThisApplication.CommandManager.Pick(SelectionFilterEnum.kDrawingDimensionFilter, "Pick a Linear dimansion")
Dim inside As Boolean = dimensionTextIsInside(dimension)
MsgBox("Dimension text is inside = " & inside)
placeTextOutside(dimension)
End Sub
Public Function dimensionTextIsInside(dimension As LinearGeneralDimension) As Boolean
Dim textAboveLine As Double = 0.4 'Cm
Dim lineSegment As LineSegment2d = dimension.DimensionLine
Dim p1 As Point2d = lineSegment.StartPoint
Dim p2 As Point2d = lineSegment.EndPoint
Dim pText As Point2d = dimension.Text.Origin
' pythagoras at work but without taking the root as it is not needed here
Dim lengthLineSegment As Double = (p2.X - p1.X) ^ 2 + (p2.Y - p1.Y) ^ 2
lengthLineSegment = lengthLineSegment + textAboveLine ^ 2
Dim p1ToText As Double = (pText.X - p1.X) ^ 2 + (pText.Y - p1.Y) ^ 2
Dim p2ToText As Double = (pText.X - p2.X) ^ 2 + (pText.Y - p2.Y) ^ 2
Return (p1ToText + p2ToText < lengthLineSegment)
End Function
Public Sub placeTextOutside(dimension As LinearGeneralDimension)
Dim dinstanceOutside As Double = 1 ' Cm
Dim textAboveLine As Double = 0.4 'Cm
Dim lineSegment As LineSegment2d = dimension.DimensionLine
Dim p1 As Point2d = lineSegment.StartPoint
Dim p2 As Point2d = lineSegment.EndPoint
Dim angle = Math.Atan((p2.X - p1.X) / (p2.Y - p1.Y))
Dim diffX As Double = dinstanceOutside * Math.Sin(angle) + textAboveLine * Math.Cos(angle)
Dim diffY As Double = dinstanceOutside * Math.Cos(angle) + textAboveLine * Math.Sin(angle)
Dim oTg = ThisApplication.TransientGeometry
dimension.Text.Origin = oTg.CreatePoint2d(p2.X + diffX, p2.Y + diffY)
If (dimensionTextIsInside(dimension)) Then
dimension.Text.Origin = oTg.CreatePoint2d(p2.X - diffX, p2.Y - diffY)
End If
End Sub
Jelte de Jong
Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.

Blog: hjalte.nl - github.com