SetupForAudit メソッド(ActiveX/CSP)

プラグインが動作するコンテキストを定義します。具体的には、チェックするデータベースと確認に使用する標準仕様図面(DWS)ファイルを定義します。

サポートされているプラットフォーム: Windows のみ

名前空間: AcStMgr

アセンブリ: AcStMgr.tlb

構文と要素

VB.NET:

Public Sub SetupForAudit(pDb, szPathName, stdNameArray, stdPathArray, stdDbArray) _
                               Implements IAcStPlugin2.SetupForAudit
    ...
End Sub

C#:

public void SetupForAudit(pDb, szPathName, stdNameArray, stdPathArray, stdDbArray)
{
    ...;
}
object

タイプ: IAcStPlugin2 インタフェース

このメソッドが適用されるインタフェース。

pDb

アクセス: 入力のみ

タイプ: AcadDatabase オブジェクト

チェックする図面ファイルのデータベース オブジェクト。

szPathName

アクセス: 入力のみ

タイプ: 文字列

チェックするデータベースを含んでいる図面ファイルのパスとファイル名。

stdNameArray

アクセス: 入力のみ

タイプ: バリアント型(文字列の配列)

データベースのチェック時に使用する各標準仕様図面(DWS)の名前の配列。

stdPathArray

アクセス: 入力のみ

タイプ: バリアント型(文字列の配列)

標準仕様図面(DWS)ファイルのパスの配列。

stdDbArray

アクセス: 入力のみ

Type: バリアント型(AcadDatabase オブジェクトの配列)

データベースのチェック時に使用するデータベース オブジェクトの配列。

戻り値(RetVal)

戻り値はありません。

注意

照合するオブジェクトは、IAcStPlugin2 インタフェースの SetContext メソッドによって指定されます。これは、編集セッション中に時々変化する場合があります。

このメソッドに渡される AcadDatabase オブジェクトは、プラグインのライフタイム中は有効となるように保証されます。プラグインは、プラグインのメンバー変数にこのオブジェクトをキャッシュして、他のプラグイン メソッドからこのオブジェクトにアクセスできるようにする必要があります。

プラグインは、stdDbArray パラメータに渡される AcadDatabase オブジェクトはキャッシュするべきではありません。標準仕様のホスト アプリケーションは、繰り返し子の取得後に自由に DWS ファイルを閉じることができます。その結果、データベース オブジェクトを無効にしてしまいます。DWS ファイルからの情報を必要とするプラグインは、このメソッドで、DWS ファイルからの情報をキャッシュする必要があります(たとえば必要なデータをメモリ内のキャッシュにコピーする)。

バージョン情報

バージョン: AutoCAD 2004 以降

VB.NET:

Public Sub SetupForAudit(ByVal pDb As AcadDatabase, _
                         ByVal szPathName As String, _
                         ByVal stdNameArray As Object, _
                         ByVal stdPathArray As Object, _
                         ByVal stdDbArray As Object) _
                               Implements IAcStPlugin2.SetupForAudit

    ' Used to define the context which the plug-in will operate.

    ' The drawing to be checked and the DWS files being used are passed
    ' to the plug-in at this point. Store the DWS standards definitions
    ' and the objects to be checked. The GetObjectFilter() method is used
    ' to specify the object type that the plug-in should check for errors.

    ' WARNING!: Do not save a reference to the database object,
    ' as it may not be valid going forward.

    If Not IsNothing(pDb) Then
        ' Store a reference to the DWG to be checked
        m_pCheckDatabase = pDb

        ' Verify the reference to the DWG is valid object
        If Not IsNothing(m_pCheckDatabase) Then
            ' << Change based on standards implementation >>
            For Each acObj As AcadObject In m_pCheckDatabase.Layers
                If acObj.ObjectName = "AcDbLayerTableRecord" Then
                    m_ContextList.Add(acObj.ObjectID, True)
                End If
            Next
        End If

        Dim iDWS As Integer

        ' Iterate each of the DWS files and cache the objects to use to fix errors
        For iDWS = 0 To UBound(stdDbArray)
            ' Get the DWS database
            m_pDWSDatabase = stdDbArray(iDWS)

            ' << Change based on standards implementation >>
            Dim pStdLayer As AcadLayer

            ' Iterate the layers in the database
            Dim i As Integer = 0
            For Each pStdLayer In m_pDWSDatabase.Layers
                Dim layerCache As New LayerCache()
                ' Cache the properties of the layers in the DWS database
                layerCache.Name = pStdLayer.Name
                layerCache.Color = pStdLayer.color
                layerCache.Lineweight = pStdLayer.Lineweight

                layerCache.StandardFileName = stdNameArray(iDWS)

                ' Create a fix object to be used later to correct a standards violation
                Dim pFix As New AcStFix()
                pFix.Description = "Layer fix"
                pFix.StandardFileName = layerCache.StandardFileName
                pFix.FixObjectName = pStdLayer.Name

                If pFix.PropertyCount = 0 Then
                    pFix.PropertyValuePut("Color", pStdLayer.color)
                    pFix.PropertyValuePut("Lineweight", pStdLayer.Lineweight)
                End If

                layerCache.StandardsFix = pFix
                ReDim Preserve m_LayerCacheArray(i)
                m_LayerCacheArray(i) = layerCache
                layerCache = Nothing
                pFix = Nothing
                i = i + 1
            Next

            m_pDWSDatabase = Nothing
        Next
    End If
End Sub

C#:

public void SetupForAudit(AcadDatabase pDb, string szPathName, object stdNameArray, 
                          object stdPathArray, object stdDbArray)
{

    // Used to define the context which the plug-in will operate.

    // The drawing to be checked and the DWS files being used are passed
    // to the plug-in at this point. Store the DWS standards definitions
    // and the objects to be checked. The GetObjectFilter() method is used
    // to specify the object type that the plug-in should check for errors.

    // WARNING!: Do not save a reference to the database object,
    // as it may not be valid going forward.
    if (pDb != null)
    {
        // Store a reference to the DWG to be checked
        m_pCheckDatabase = pDb;

        // Verify the reference to the DWG is valid object
        if ((m_pCheckDatabase != null))
        {
            // << Change based on standards implementation >>
            foreach (AcadObject acObj in m_pCheckDatabase.Layers)
            {
                if (acObj.ObjectName == "AcDbLayerTableRecord")
                {
                    m_ContextList.Add(acObj.ObjectID, true);
                }
            }
        }

        int i = 0;
        int iDWS = 0;

        int nLBound = ((Array)stdDbArray).GetLowerBound(0);
        int nUBound = ((Array)stdDbArray).GetUpperBound(0);

        // Iterate each of the DWS files and cache the objects to use to fix errors
        for (iDWS = 0; iDWS <= nUBound; iDWS++)
        {
            // Get the DWS database
            m_pDWSDatabase = (AcadDatabase)((Array)stdDbArray).GetValue(iDWS);

            // << Change based on standards implementation >>
            // Iterate the layers in the database
            foreach (AcadLayer pStdLayer in m_pDWSDatabase.Layers)
            {
                AdskLayersPlugin.StandardsHelpers.LayerCache oLayerCache = new AdskLayersPlugin.StandardsHelpers.LayerCache();

                // Cache the properties of the layers in the DWS database
                oLayerCache.Name = pStdLayer.Name;

                oLayerCache.Color = (ACAD_COLOR)pStdLayer.color;
                oLayerCache.Lineweight = (ACAD_LWEIGHT)pStdLayer.Lineweight;

                oLayerCache.StandardFileName = (String)((Array)stdNameArray).GetValue(iDWS);
                oLayerCache.ObjectId = pStdLayer.ObjectID;

                // Create a fix object to be used later to correct a standards violation
                AcStFix pFix = new AcStFix();

                pFix.Description = "Layer fix";
                pFix.StandardFileName = oLayerCache.StandardFileName;
                pFix.FixObjectName = pStdLayer.Name;
                pFix.FixObjectId = oLayerCache.ObjectId;

                if (pFix.PropertyCount == 0)
                {
                    pFix.PropertyValuePut("Color", (ACAD_COLOR)pStdLayer.color);
                    pFix.PropertyValuePut("Lineweight", (ACAD_LWEIGHT)pStdLayer.Lineweight);
                }

                oLayerCache.StandardsFix = pFix;

                Array.Resize(ref m_LayerCacheArray, i + 1);
                m_LayerCacheArray[i] = oLayerCache;
                oLayerCache = null;
                pFix = null;
                i = i + 1;
            }

            m_pDWSDatabase = null;
        }
    }
}