ModelSpaceのエンティティを確実に処理しようとしていますが、COMオブジェクトなので問題が何もないというヒントは得られません。誰かが私が間違っていることを知っていますか?私がその行(とズームのエクステント行)を取り除くと、残りのコードはうまく動作するので、ドキュメントオブジェクトが正しく設定されていることがわかります。AutoCAD ActiveSpaceをModelSpaceに設定する
Dim acDWG As AutoCAD.AcadDocument
' open the drawing
acDWG = acApp.Documents.Open(dgvr.Cells("FullName").Value.ToString)
' ensure the drawing has the modelspace tab activated (doesnt work)
acDWG.ActiveSpace = AutoCAD.AcActiveSpace.acModelSpace
' zoom to extents (sometimes works, sometimes not) '
acApp.ZoomExtents()
' build a selectionset of all blocks named 'Solid1' and then delete them all
Dim ss As AutoCAD.AcadSelectionSet = acDWG.SelectionSets.Add("DELETE")
Dim gpCode(1) As Int16
Dim dataValue(1) As Object
gpCode(0) = 0 : dataValue(0) = "Insert"
gpCode(1) = 2 : dataValue(1) = "Solid1"
ss.Select(AutoCAD.AcSelect.acSelectionSetAll,,, gpCode, dataValue)
ss.Erase()
ss.Delete()
ss = Nothing
アップデート:エラーが発生する理由を発見しました。コードは正しいですが、問題は図面がまだ開かれていないことです。 Open
行の直後に「5秒待つ」コード行を置くとうまくいきます。だから私の質問は、図面を開き、VB.Netは、COMオブジェクトからの信号を待って "続ける"準備ができているようですか? (どのように言葉にそれをするかわからない)
をあなたはこのコードを実行しているから? –
内部Visual Studio .NET 2017 – Joe
もっと具体的には... WinForms – Joe