我那個批量標(biāo)準(zhǔn)頁碼的小工具,是新建了個頁碼圖層,然后刷新頁碼(或者重新調(diào)整頁碼)的時候,會把頁碼圖層中的圖元都刪除,然后重新編排頁碼,當(dāng)時是為了偷個懶這樣寫的,但是我還把頁碼圖層設(shè)置為了當(dāng)前圖層,“一小撮不明真相”的同事于是在頁碼圖層中畫畫,然后再插入頁碼~~~~~~結(jié)果就是都被刪啦。罪過啊,
于是想到了個方法就是:如果在當(dāng)前層(頁碼圖層)中寫入任何圖元,然后馬上刪除,看上去就像不能輸入一樣,哈哈。找了下幫助,看到兩個事件:EndCommand:完成命令之后立即觸發(fā)。BeginCommand:緊接著命令發(fā)出之后但在完成之前觸發(fā)。
在命令前得到圖元總數(shù)目,再得到命令后的數(shù)目,就得到了最后這個命令寫入的圖元,然后把這些圖元刪掉就OK了。但是突然有了更好的想法,何必那么麻煩呢,我只要設(shè)置頁碼圖層不能設(shè)置為當(dāng)前圖層就OK了。哈哈。但是代碼寫下了就貼著,留著以后看看
Dim startN As Integer
Private Sub AcadDocument_BeginCommand(ByVal CommandName As String)
startN = ThisDrawing.ModelSpace.Count - 1
End Sub
Private Sub AcadDocument_EndCommand(ByVal CommandName As String)
Dim layer As AcadLayer, EndN As Integer, i As Integer
Set layer = ThisDrawing.Layers("TK")
EndN = ThisDrawing.ModelSpace.Count - 1
If ThisDrawing.ActiveLayer Is layer Then
ReDim InsertBlock(EndN - startN - 1) As Object
For i = 0 To EndN - startN - 1
Set InsertBlock(i) = ThisDrawing.ModelSpace.Item(EndN - i)
Next
'刪除
For i = 0 To EndN - startN - 1
InsertBlock(i).Erase
Next
End If
End Sub
---------------
但是在寫的過程中發(fā)現(xiàn)有好多問題。也不去弄了,(嘿嘿,有新方法了么),如上面你弄了個數(shù)組,原因是之前發(fā)現(xiàn)如用line命令畫了N條線后,我一開始的時候是ThisDrawing.ModelSpace.Count - 1來刪除最后一個圖元,但是循環(huán)一下后ThisDrawing.ModelSpace.Count - 1就變了,不是原來第2個圖元,方法可以用上面的,一次性設(shè)置好增加的圖元,然后刪除,或者也可以一直刪除最后一個圖元,循環(huán)次數(shù)就是增加的圖元個數(shù)(好像這個比較好。額)。還有就是運行erase命令的時候就不應(yīng)該用上面的Erase刪除圖元了,應(yīng)該把Erase的圖元恢復(fù)啊,還有就是畫line的時候如果畫了幾條然后中途按esc了,則沒有激發(fā)EndCommand==,哈哈,總之好像問題挺多了。哈哈,弄了個爛尾樓
-----------------------------
相關(guān)文章
- 2021-08-04中文版AutoCAD2010快捷命令一冊通 [康士廷 劉昌麗 王
- 2021-08-01Visual Basic與AutoCAD二次開發(fā)PDF下載
- 2021-08-01Mastering AutoCAD Civil 3D 2010PDF下載
- 2021-05-28iLike就業(yè)AutoCAD 2010中文版實用教程PDF下載
- 2021-05-27iLike就業(yè)AutoCAD 2010中文版實用教程PDF下載
- 2021-01-01AUTOCAD 2000命令參考手冊PDF下載
- 2016-02-22VisualBasic與AutoCAD二次開發(fā)教程下載
- 2016-02-17AutoCAD2010中文版入門與提高PDF高清版下載
- 2014-01-16真正實用精選CAD填充圖 不要太多,實用就好
- 2012-05-27一套小型別墅的CAD施工圖免費下載