FixError Method (ActiveX/CSP)

Applies the property values of a fix object to those same properties of an error object.

Supported platforms: Windows only

Namespace: AcStMgr

Assembly: AcStMgr.tlb

Signature

VB.NET:

Public Sub FixError(pError, pFix[, pFailedReason]) _
                    Implements IAcStPlugin2.FixError
    ...
End Sub

C#:

public void FixError(pError, pFix[, out pFailedReason])
{
    ...;
}
object

Type: AcStErrorIterator object

The object this method applies to.

pError

Access: Input-only

Type: AcStError object

The error object that does not match the established CAD standards.

pFix

Access: Input-only

Type: AcStFix object

The fix object that will be used to correct the properties of the error object.

pFailedReason

Access: Output-only

Type: String

The error value that represents the reason why the fix failed. The value returned should align with one of those in the AcStResultStatus enumeration.

The default return value is "0".

Return Value (RetVal)

No return value.

Remarks

No additional remarks.

Release Information

Releases: AutoCAD 2004 and later

Examples

VB.NET:

Public Sub FixError(ByVal pError As AcStError, _
                    ByVal pFix As AcStFix, _
                    Optional ByRef pFailedReason As String = "0") _
                    Implements IAcStPlugin2.FixError

    ' << Change based on standards implementation >>
    If IsNothing(pError) = False Then

        Dim sFixClrVal As ACAD_COLOR
        Dim sFixLWVal As ACAD_COLOR

        ' Get the drawing object to fix
        Dim badObjID As Long = pError.BadObjectId
        Dim badObj As AcadLayer = m_pCheckDatabase.ObjectIdToObject(badObjID)

        ' If no fix is provided, try the recommended fix
        If IsNothing(pFix) Then
            Dim tmpFix As New AcStFix()
            tmpFix = GetRecommendedFix(pError)

            If IsNothing(tmpFix) Then
                ' Set the result status of the error to Failed and No Recommended Fix
                pError.ResultStatus = AcStResultStatus.acStResFixFailed + AcStResultStatus.acStResNoRecommendedFix
            Else
                ' Fix the bad object
                pFix = tmpFix
                tmpFix = Nothing

                ' Fix the color of the layer
                pFix.PropertyValueGet("Color", sFixClrVal)
                Try
                    badObj.color = sFixClrVal
                    pError.ResultStatus = AcStResultStatus.acStResFixed
                Catch m_ex As Exception
                    pError.ResultStatus = AcStResultStatus.acStResFixFailed
                End Try

                ' Fix the Lineweight of the layer
                pFix.PropertyValueGet("Lineweight", sFixLWVal)
                Try
                    badObj.Lineweight = sFixLWVal
                    pError.ResultStatus = AcStResultStatus.acStResFixed
                Catch m_ex As Exception
                    pError.ResultStatus = AcStResultStatus.acStResFixFailed
                End Try
            End If

            tmpFix = Nothing
        Else
            ' Fix the color of the layer
            pFix.PropertyValueGet("Color", sFixClrVal)
            Try
                badObj.color = sFixClrVal
                pError.ResultStatus = AcStResultStatus.acStResFixed
            Catch m_ex As Exception
                pError.ResultStatus = AcStResultStatus.acStResFixFailed
            End Try

            ' Fix the Lineweight of the layer
            pFix.PropertyValueGet("Lineweight", sFixLWVal)
            Try
                badObj.Lineweight = sFixLWVal
                pError.ResultStatus = AcStResultStatus.acStResFixed
            Catch m_ex As Exception
                pError.ResultStatus = AcStResultStatus.acStResFixFailed
            End Try
        End If
    End If
End Sub

C#:

public void FixError(AcStError pError, AcStFix pFix, out string pFailedReason)
{
    // << Change based on standards implementation >>
    if ((pError == null) == false)
    {
        object sFixClrVal = default(ACAD_COLOR);
        object sFixLWVal = default(ACAD_LWEIGHT);

        // Get the drawing object to fix
        long badObjID = pError.BadObjectId;
        AcadLayer badObj = (AcadLayer)m_pCheckDatabase.ObjectIdToObject(badObjID);

        // If no fix is provided, try the recommended fix
        if (pFix == null)
        {
            AcStFix tmpFix = new AcStFix();
            tmpFix = GetRecommendedFix(pError);

            if (tmpFix == null)
            {
                // Set the result status of the error to Failed and No Recommended Fix
                pError.ResultStatus = AcStResultStatus.acStResFixFailed | AcStResultStatus.acStResNoRecommendedFix;
            }
            else
            {
                // Fix the bad object
                pFix = tmpFix;
                tmpFix = null;

                // Fix the color of the layer
                pFix.PropertyValueGet("Color", ref sFixClrVal);
                try
                {
                    badObj.color = (AcColor)sFixClrVal;
                    pError.ResultStatus = AcStResultStatus.acStResFixed;
                }
                catch (Exception m_ex)
                {
                    pError.ResultStatus = AcStResultStatus.acStResFixFailed;
                }

                // Fix the Lineweight of the layer
                pFix.PropertyValueGet("Lineweight", ref sFixLWVal);
                try
                {
                    badObj.Lineweight = (ACAD_LWEIGHT)sFixLWVal;
                    pError.ResultStatus = AcStResultStatus.acStResFixed;
                }
                catch (Exception m_ex)
                {
                    pError.ResultStatus = AcStResultStatus.acStResFixFailed;
                }
            }
        }
        else
        {
            // Fix the color of the layer
            pFix.PropertyValueGet("Color", ref sFixClrVal);
            try
            {
                badObj.color = (AcColor)sFixClrVal;
                pError.ResultStatus = AcStResultStatus.acStResFixed;
            }
            catch (Exception m_ex)
            {
                pError.ResultStatus = AcStResultStatus.acStResFixFailed;
            }

            // Fix the Lineweight of the layer
            pFix.PropertyValueGet("Lineweight", ref sFixLWVal);
            try
            {
                badObj.Lineweight = (ACAD_LWEIGHT)sFixLWVal;
                pError.ResultStatus = AcStResultStatus.acStResFixed;
            }
            catch (Exception m_ex)
            {
                pError.ResultStatus = AcStResultStatus.acStResFixFailed;
            }
        }
    }

    pFailedReason = "0";
}