On Error Resume Next
DecimalPlaces = 3
Set acadApp = GetObject(,"AutoCAD.Application")
'ACADVER values:
'ACA 2010 = "18.0s (LMS Tech)"
'ACA 2011 = "18.1s (LMS Tech)"
'ACA 2012 = "18.2s (LMS Tech)"
'ACA 2013 = "19.0s (LMS Tech)"
'ACA 2014 = "19.1s (LMS Tech)" 'ACA 2015 = "19.2s (LMS Tech)"
acadVerString = acadApp.ActiveDocument.GetVariable("ACADVER")
'Set ACA application string, based on version running:
Select Case acadVerString
Case "18.0s (LMS Tech)" 'ACA-2010
aecBaseVer = "AecX.AecBaseApplication.6.0"
Case "18.1s (LMS Tech)" 'ACA-2011
aecBaseVer = "AecX.AecBaseApplication.6.5"
Case "18.2s (LMS Tech)" 'ACA-2012
aecBaseVer = "AecX.AecBaseApplication.6.7"
Case "19.0s (LMS Tech)" 'ACA-2013
aecBaseVer = "AecX.AecBaseApplication.7.0"
Case "19.1s (LMS Tech)" 'ACA-2014
aecBaseVer = "AecX.AecBaseApplication.7.5"
Case "19.2s (LMS Tech)" 'ACA-2015
aecBaseVer = "AecX.AecBaseApplication.7.7"
Case Else
aecBaseVer = "Unknown"
End Select
If aecBaseVer = "Unknown" Then
RESULT = "Unknown Version"
Else
Set aecBase = acadApp.GetInterfaceObject(aecBaseVer)
aecBase.Init acadApp
Set DuctFittingObject = acadApp.ActiveDocument.ObjectIDToObject([ObjectID])
Set UtilityObject = aecBase.ActiveDocument.Utility
' Get the Normal of the Object and break down into individual X, Y, and Z parts
DuctFittingObjectNormal = UtilityObject.ConvertToVariantArray(DuctFittingObject.Normal)
NormalX = Round(DuctFittingObjectNormal(0), DecimalPlaces)
NormalY = Round(DuctFittingObjectNormal(1), DecimalPlaces)
NormalZ = Round(DuctFittingObjectNormal(2), DecimalPlaces)
'Return the results
RESULT = CStr(NormalX & ";" & NormalY & ";" & NormalZ)
End If