CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ActiveX 开发指南

相关分类

GetPropertyDiffs Method (ActiveX/CSP)

2023-1-2 20:55| 发布者: admin| 查看: 161| 评论: 0|来自: AutoCAD

摘要: 获取属性的名称并修复指定错误的对象。

获取属性的名称并修复指定错误的对象。

支持的平台:仅窗口

Namespace:AcStMgr

集会:AcStMgr.tlb

签名 - AcStError 对象

VB.NET:

object.GetPropertyDiffs(pFix, pPropNames, pErrorValues, pFixValues, pFixableStatuses)

C#:

object.GetPropertyDiffs(pFix, ref pPropNames, ref pErrorValues, ref pFixValues, ref pFixableStatuses);
对象

类型:AcStError对象

此方法适用的对象。

pFix

访问:仅输入

类型:AcStFix对象

要与错误进行比较的修复对象。

p道具名称

访问:输入/输出

类型:变体(字符串数组)

要比较的属性名称的数组。

p错误值

访问:输入/输出

类型:变体(变体数组)

当前分配给错误对象的属性值数组。

pFixValues

访问:输入/输出

类型:变体(变体数组)

当前分配给定位对象的属性值数组。

p可修复状态

访问:输入/输出

类型:变体(布尔数组)

错误对象的可修复状态代码数组(按属性)。

签名 - IAcStPlugin2 接口

VB.NET:

Public Sub GetPropertyDiffs(pError, pFix, pPropNames, pErrorValues, pFixValues, pFixableStatuses) _
              Implements IAcStPlugin2.GetPropertyDiffs
    ...
End Sub

C#:

public void GetPropertyDiffs(pError, pFix, ref pPropNames, ref pErrorValues, ref pFixValues, ref pFixableStatuses)
{
    ...;
}
对象

类型:IAcSt插件2接口

此方法适用的接口。

p错误

Access: Input-only

Type: AcStError object

The error object to compare.

pFix

Access: Input-only

Type: AcStFix object

The fix object to compare against the error.

pPropNames

Access: Input/Output

Type: Variant (Array of Strings)

The array of property names to compare.

pErrorValues

Access: Input/Output

Type: Variant (Array of Variants)

The array of property values currently assign to the error object.

pFixValues

Access: Input/Output

Type: Variant (Array of Variants)

The array of property values currently assign to the fix object.

pFixableStatuses

Access: Input/Output

Type: Variant (Array of Booleans)

The array of fixable status codes by property for the error object.

Return Value (RetVal)

No return value.

Remarks

No additional remarks.

Release Information

Releases: AutoCAD 2004 and later

  • AcStMgr.tlb - AutoCAD 2004 and later

Examples - AcStError object

VB.NET:

Not available

C#:

Not available

Examples - IAcStPlugin2 interface

VB.NET:

Public Sub GetPropertyDiffs(ByVal pError As AcStError, _
                            ByVal pFix As AcStFix, _
                            ByRef pPropNames As Object, _
                            ByRef pErrorValues As Object, _
                            ByRef pFixValues As Object, _
                            ByRef pFixableStatuses As Object) _
                            Implements IAcStPlugin2.GetPropertyDiffs

    If IsNothing(pError) = False And IsNothing(pFix) = False Then

        ' Define the arrays that will hold the property values to compare
        Dim sPropNames(0) As String
        Dim sErrorValues(0) As String
        Dim sFixValues(0) As String
        Dim bFixableStatuses(0) As Boolean

        Dim sPropName As String = ""
        Dim vErrorVal As Object = Nothing
        Dim vFixVal As Object = Nothing
        Dim i As Integer, nPropCnt As Integer = 0

        ' Iterate the properties of the error object
        For i = 0 To pError.PropertyCount - 1
            ' Get a property name and value from the error
            pError.PropertyGetAt(i, sPropName, vErrorVal)
            m_sPropName = sPropName

            Try
                ' Retrieve the corresponding property value for the fix object
                pFix.PropertyValueGet(sPropName, vFixVal)

                ' Compare the value of the error and fix objects
                If (vErrorVal.CompareTo(vFixVal) <> 0) Then
                    ' Resize the arrays and add the new values
                    ReDim Preserve sPropNames(nPropCnt + 1)
                    ReDim Preserve sErrorValues(nPropCnt + 1)
                    ReDim Preserve sFixValues(nPropCnt + 1)
                    ReDim Preserve bFixableStatuses(nPropCnt + 1)

                    ' Store the property names and values in arrays
                    sPropNames(nPropCnt) = sPropName
                    sErrorValues(nPropCnt) = vErrorVal.ToString
                    sFixValues(nPropCnt) = vFixVal.ToString
                    bFixableStatuses(nPropCnt) = True

                    ' Increment the property counter
                    nPropCnt = nPropCnt + 1
                End If
            Catch
                ' Catch and handle the error as needed
            End Try
        Next

        ' Return the arrays
        pPropNames = sPropNames
        pErrorValues = sErrorValues
        pFixValues = sFixValues
        pFixableStatuses = bFixableStatuses

        ' Clear the local arrays
        Erase sPropNames
        Erase sErrorValues
        Erase sFixValues
        Erase bFixableStatuses

        ' Increment the number of fixes
        m_FixCnt = m_FixCnt + 1
    End If
End Sub

C#:

public void GetPropertyDiffs(AcStError pError, AcStFix pFix, ref object pPropNames, 
                             ref object pErrorValues, ref object pFixValues, ref object pFixableStatuses)
{
    if ((pError == null) == false & (pFix == null) == false)
    {
        // Define the arrays that will hold the property values to compare
        string[] sPropNames = new string[0];
        string[] sErrorValues = new string[0];
        string[] sFixValues = new string[0];
        bool[] bFixableStatuses = new bool[0];

        string sPropName = "";
        object vErrorVal = null;
        object vFixVal = null;
        int nPropCnt = 0;

        // Iterate the properties of the error object
        for (int i = 0; i <= pError.PropertyCount - 1; i++)
        {
            // Get a property name and value from the error
            pError.PropertyGetAt(i, ref sPropName, ref vErrorVal);
            m_sPropName = sPropName;

            try
            {
                // Retrieve the corresponding property value for the fix object
                pFix.PropertyValueGet(sPropName, ref vFixVal);

                // Compare the value of the error and fix objects
                if ((vErrorVal.Equals(vFixVal) == false))
                {
                    // Resize the arrays and add the new values
                    Array.Resize<string>(ref sPropNames, nPropCnt + 1);
                    Array.Resize<string>(ref sErrorValues, nPropCnt + 1);
                    Array.Resize<string>(ref sFixValues, nPropCnt + 1);
                    Array.Resize<bool>(ref bFixableStatuses, nPropCnt + 1);

                    // Store the property names and values in arrays
                    sPropNames[nPropCnt] = sPropName;
                    sErrorValues[nPropCnt] = vErrorVal.ToString();
                    sFixValues[nPropCnt] = vFixVal.ToString();
                    bFixableStatuses[nPropCnt] = true;

                    // Increment the property counter
                    nPropCnt = nPropCnt + 1;
                }
            }
            catch
            {
                // Catch and handle the error as needed
            }
        }

        // Return the arrays
        pPropNames = sPropNames;
        pErrorValues = sErrorValues;
        pFixValues = sFixValues;
        pFixableStatuses = bFixableStatuses;

        // Clear the local arrays
        sPropNames = null;
        sErrorValues = null;
        sFixValues = null;
        bFixableStatuses = null;

        // Increment the number of fixes
        m_FixCnt = m_FixCnt + 1;
    }
}

路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-11 13:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部