Accessing Civil 3D Abbreviation settings

By Augusto Goncalves

Under the Drawing Settings we have a list of abbreviations that Civil 3D will use on its reports, for instance. It is possible access that information from the CivilDocument Settings properties. The following code show, first, how list all abbreviations for Alignment Geometry Point Text and, second, access a specific one from the enumeration list. To change a abbreviation, simply use SetAlignmentAbbreviation instead.

<CommandMethod("listAbbrev")> _

Public Sub CmdListAbbreviations()

  Dim ed As Editor = Application. _

    DocumentManager.MdiActiveDocument.Editor

  Dim civilDoc As CivilDocument = _

    CivilApplication.ActiveDocument

 

  Dim abbrev As SettingsAbbreviationAlignment = _

    civilDoc.Settings.DrawingSettings. _

    AbbreviationsSettings.AlignmentGeoPointText

 

  ‘ list all abbreviations for

  ‘ Alignment Geometry Point Text

  Dim tpAbbrev As Type = GetType(AbbreviationAlignmentType)

  Dim typesAbbrev As Array = [Enum].GetValues(tpAbbrev)

 

  For Each tp In typesAbbrev

    Dim value As String = abbrev.GetAlignmentAbbreviation(tp)

    ed.WriteMessage("{0}{1}: {2}", _

                    vbNewLine, _

                    [Enum].GetName(tpAbbrev, tp), _

                    value)

  Next

 

  ‘ so to access a specific one, let’s

  ‘ say TangentSpiralIntersect, use:

  Dim tsi As String = abbrev.GetAlignmentAbbreviation( _

    AbbreviationAlignmentType.TangentSpiralIntersect)

End Sub


Comments

2 responses to “Accessing Civil 3D Abbreviation settings”

  1. Rod Wing Avatar
    Rod Wing

    I am using Civil 3D 2014 and trying to use the SetAlignmentAbbreviation method. On the first run through it works fine. On subsequent runs I get a Null Exception using the method. On checking both arguments they are valid, non-null, values.
    I have included my code below.
    Any ideas?
    Thanks.
    Rod
    Private Function UpdateAbbreviationSettings(ByRef civDoc As Autodesk.Civil.ApplicationServices.CivilDocument) As Boolean
    Dim i As Integer
    Dim iStart As Integer
    Dim iEnd As Integer
    Dim strValue As String
    UpdateAbbreviationSettings = False
    Try
    Dim abAlgET() As Autodesk.Civil.Settings.AbbreviationAlignmentEnhancedType
    abAlgET = {Autodesk.Civil.Settings.AbbreviationAlignmentEnhancedType.AlignmentBeginningPoint, _
    Autodesk.Civil.Settings.AbbreviationAlignmentEnhancedType.AlignmentEndPoint, _
    Autodesk.Civil.Settings.AbbreviationAlignmentEnhancedType.CompoundSpiralLargeRadiusAtBeginning, _
    Autodesk.Civil.Settings.AbbreviationAlignmentEnhancedType.CompoundSpiralLargeRadiusAtEnd, _
    Autodesk.Civil.Settings.AbbreviationAlignmentEnhancedType.CompoundSpiralSmallRadiusAtBeginning, _
    Autodesk.Civil.Settings.AbbreviationAlignmentEnhancedType.CompoundSpiralSmallRadiusAtEnd, _
    Autodesk.Civil.Settings.AbbreviationAlignmentEnhancedType.CurveBeginning, _
    Autodesk.Civil.Settings.AbbreviationAlignmentEnhancedType.CurveEnd, _
    Autodesk.Civil.Settings.AbbreviationAlignmentEnhancedType.LineBeginning, _
    Autodesk.Civil.Settings.AbbreviationAlignmentEnhancedType.LineEnd, _
    Autodesk.Civil.Settings.AbbreviationAlignmentEnhancedType.SimpleSpiralLargeRadiusAtBeginning, _
    Autodesk.Civil.Settings.AbbreviationAlignmentEnhancedType.SimpleSpiralLargeRadiusAtEnd, _
    Autodesk.Civil.Settings.AbbreviationAlignmentEnhancedType.SimpleSpiralSmallRadiusAtBeginning, _
    Autodesk.Civil.Settings.AbbreviationAlignmentEnhancedType.SimpleSpiralSmallRadiusAtEnd _
    }
    iStart = LBound(abAlgET)
    iEnd = UBound(abAlgET)
    For i = iStart To iEnd
    strValue = civDoc.Settings.DrawingSettings.AbbreviationsSettings.AlignmentGeoPointEntityData.GetAlignmentEnhancedAbbreviation(abAlgET(i))
    civDoc.Settings.DrawingSettings.AbbreviationsSettings.AlignmentGeoPointEntityData.SetAlignmentEnhancedAbbreviation(abAlgET(i), strValue & “ABC”)
    Next
    UpdateAbbreviationSettings = True
    Catch ex As Exception
    End Try
    End Function

  2. Hi Rod,
    I tried the code and worked fine… maybe the problem is somewhere else.
    My suggestion is remove the ‘ByRef’ on the parameter, this is not needed in this case.
    Regards,
    Augusto Goncalves

Leave a Reply