2010-11-24 48 views
0

私はこれを使用して別の外部DWGファイルを挿入しています:これは外部のブロックとして挿入されたので、私は私の図面にバインドされAutoCADの2011 VBAや外部参照

Set xrefInserted = ThisDrawing.ModelSpace.AttachExternalReference(refDwgName, refDwgName, insertionPnt, 1, 1, 1, 0, False) 
xrefInserted.Update 

を:

 For Each tempBlock In ThisDrawing.Blocks 
      If tempBlock.IsXRef Then 
       If (InStr(1, UCase(tempBlock.name), "MAJ_MATRICE", vbTextCompare)) Then 
        tempBlock.Bind (False) 
        Exit For 
       End If 
      End If 
     Next 

今、私はそれを爆発させたい、まずAcadBlockは、AcadBlockReferenceだけを持ち、メソッドを爆発させていないようだ。

は、だから私は、参照を探します

Dim ent As AcadEntity 
Dim blockRefObj As AcadBlockReference 

    For Each ent In ThisDrawing.ModelSpace 
     If TypeOf ent Is AcadBlockReference Then 
      If (InStr(1, UCase(ent.name), "MAJ_MATRICE", vbTextCompare)) Then 
       Set blockRefObj = ent 
       blockRefObj.Explode 
       Exit For 
      End If 
     End If 
    Next 

問題は、それが "有効ではありません-2145386494" を私に語っ

が失敗した

blockRefObj.Explodeです。

コードをデバッグしましたが、AcadBlockReferenceがまだAcadExternalReferenceタイプで、外部参照を破棄することができないため、この問題を認識しました。

図面に戻って(関数呼び出しが終了した)コードを再実行し、AcadBlockReferenceを探すと、AcadBlockReferenceタイプになり、正しく爆発することができます。

私は、同じ関数内でそれをバインドするのと同じ実行で行うことはできないようです。

+0

** blockRefObj **および** ent **のDimステートメントはどこですか? –

+0

Ok宣言を追加しました – Enriquev

+0

Bind(True)で試しましたか? (ちょうどデバッグする) –

答えて

0

なぜthisdrawing.modelspace.insertblockを使用して始めないのか分からないのですか? 最初にacadblockreferenceオブジェクトを返します。