Hi @Anonymous
The following will add a drawing dimension to a specified view using work points found at the referenced document level.
'
Public Sub Main()
Dim viewNo As Integer = 1
Dim dimPt1 As String = "Work Point1"
Dim dimPt2 As String = "Work Point2"
Dim dimType As String = "Aligned"
Dim dimText As String = "I made a dimension"
Dim DimYOffset As Integer = 1
Call AddLinearDim(viewNo, dimPt1, dimPt2, dimText, dimType,,DimYOffset)
End Sub
Private Sub AddLinearDim(viewNo As Integer,
dimPt1 As String,
dimPt2 As String,
dimText As String,
Optional dimType As String = "Aligned",
Optional DimXOffset As Integer = 0,
Optional DimYOffset As Integer = 0)
Dim sDimText As String = dimText & " <DimensionValue/>"
'Set reference to drawing document
Dim oDoc As DrawingDocument = ThisApplication.ActiveDocument
'Set reference to view and sheet
Dim oView As DrawingView = oDoc.ActiveSheet.DrawingViews(viewNo)
Dim oSheet As Sheet = oDoc.ActiveSheet
'Get reference to document in view
Dim viewDoc As Document = oView.ReferencedDocumentDescriptor.ReferencedDocument
Dim viewDocDef As ComponentDefinition = viewDoc.ComponentDefinition
'Get workpoints from the assembly document
Dim oWP1 As WorkPoint = viewDocDef.WorkPoints.Item(dimPt1)
Dim oWP2 As WorkPoint = viewDocDef.WorkPoints.Item(dimPt2)
'Place Centermarks where the Work Points reside
Dim oCM1 As Centermark = oSheet.Centermarks.AddByWorkFeature(oWP1, oView)
Dim oCM2 As Centermark = oSheet.Centermarks.AddByWorkFeature(oWP2, oView)
oCM1.Visible = False
oCM2.Visible = False
'Create Geometry Intent of the Centermarks
Dim oGeomIntent1 As GeometryIntent = oSheet.CreateGeometryIntent(oCM1)
Dim oGeomIntent2 As GeometryIntent = oSheet.CreateGeometryIntent(oCM2)
'Define Dimension Orientation variables
Dim dimTypeEnum As DimensionTypeEnum = Nothing
'Filter by dimension type
Select Case dimType
Case "Vertical"
dimTypeEnum = 60163
Case "Horizontal"
dimTypeEnum = 60162
Case "Aligned"
dimTypeEnum = 60161
Case Else
dimTypeEnum = 60161
End Select
Dim oTG As TransientGeometry = ThisApplication.TransientGeometry
'Declare variables for dimension endpoints
Dim oShtPt1 As Point2d = oView.ModelToSheetSpace(oWP1.Point)
Dim oShtPt2 As Point2d = oView.ModelToSheetSpace(oWP2.Point)
'*** Control where the Dimension Text is located
Dim oDimX As Double = oShtPt1.X + DimXOffset
Dim oDimY As Double = oShtPt1.Y + DimYOffset
Dim oPtText As Point2d = oTG.CreatePoint2d(oDimX, oDimY)
'*** Create the Dimension
Dim oDimension As DrawingDimension
oDimension = oSheet.DrawingDimensions.GeneralDimensions.AddLinear(oPtText, oGeomIntent1, oGeomIntent2, dimTypeEnum)
oDimension.CenterText
'Add text to dimension
Dim MyDimText As DimensionText = oDimension.Text
MyDimText.FormattedText = sDimText
End Sub