通過設置各圖層的不同屬性,調(diào)用圖層的方法,可對不同類的圖形對象分組編輯和管理,例如,可以創(chuàng)建一個專門畫中心線的圖層,將圖層顏色屬性設置為藍色,線性定義為中心線,當需要畫中心線時,就轉(zhuǎn)到該層即可,而不是每次畫中心線時都重新設置線型和顏色。
- 創(chuàng)建并命名圖層
新的圖形文件建立時,系統(tǒng)自動創(chuàng)建一個名為”0“的圖層,用Add方法可以創(chuàng)建新圖層,也可同時給它命名。下面代碼創(chuàng)建一個testlayer的圖層,并將一個圓置于該圖層。
Private Sub Command1_Click()
Dim testlayer As AcadLayer
Set testlayer = acadapp.ActiveDocument.Layers.Add("test")
testlayer.Color = acBlue
Dim circleobj As AcadCircle
Dim centerpoint(0 To 2) As Double
Dim radius As Double
centerpoint(0) = 0#: centerpoint(1) = 0#: centerpoint(2) = 0#
radius = 5#
Set circleobj = acadapp.ActiveDocument.ModelSpace.AddCircle(centerpoint, radius)
circleobj.Layer = "test"
circleobj.Color = acByLayer
circleobj.Update
End Sub
- 設置當前圖層
當有幾個圖層時,總是在激活的當前圖層上繪圖,若為指定當前圖層,將在默認的0圖層上繪圖,文檔對象的ActiveLayer屬性可以將某圖層設置為當前圖層。
下面的程序創(chuàng)建名為A、B的兩個圖層,顏色一為藍色,一為黃色,依次設置為當前圖層,并在上面各繪制一個圓,顏色默認值acByLayer,一藍一紅,與所在圖層顏色相同。
Private Sub Command1_Click()
Dim testlayer1 As AcadLayer
Dim testlayer2 As AcadLayer
Set testlayer1 = acadapp.ActiveDocument.Layers.Add("A")
Set testlayer2 = acadapp.ActiveDocument.Layers.Add("B")
testlayer1.Color = acBlue
testlayer2.Color = acRed
Dim circleobj1 As AcadCircle
Dim circleobj2 As AcadCircle
Dim centerpoint(0 To 2) As Double
Dim radius As Double
centerpoint(0) = 0#: centerpoint(1) = 0#: centerpoint(2) = 0#
radius = 5#
acadapp.ActiveDocument.ActiveLayer = testlayer1
Set circleobj1 = acadapp.ActiveDocument.ModelSpace.AddCircle(centerpoint, radius)
acadapp.ActiveDocument.ActiveLayer = testlayer2
Set circle2 = acadapp.ActiveDocument.ModelSpace.AddCircle(centerpoint, radius / 2)
ZoomExtents
End Sub
- 開關(guān)圖層
將圖層的LayerOn屬性設置為False,關(guān)閉圖層,設置為True,打開圖層。
關(guān)閉圖層上的對象不顯示,但是可以在其上創(chuàng)建新對象,但當時不能顯示出來,當在可見圖層和非可見圖層之間頻繁切換時,關(guān)閉圖層比凍結(jié)圖層更好些。下面的圖層創(chuàng)建一個圖層A,其上創(chuàng)建一個圓,然后關(guān)閉該圖層并在其上添加一個圓,最后打開圖層。
程序運行后先顯示為一個黑色的圓,然后隨著圖層的關(guān)閉,雖然又添加了一個圓,但看不見任何圓,打開圖層后,圖層A上將顯示兩個圓。
Private Sub Command1_Click()
Dim testlayer As AcadLayer
Set testlayer = acadapp.ActiveDocument.Layers.Add("A")
acadapp.ActiveDocument.ActiveLayer = testlayer
Dim circleobj1 As AcadCircle
Dim circleobj2 As AcadCircle
Dim centerpoint(0 To 2) As Double
centerpoint(0) = 0#: centerpoint(1) = 0#: centerpoint(2) = 0#
Set circleobj1 = acadapp.ActiveDocument.ModelSpace.AddCircle(centerpoint, 1)
circleobj1.Update
ZoomExtents
MsgBox "將關(guān)閉圖層并在其上添加一個圓"
testlayer.LayerOn = False
Set circle2 = acadapp.ActiveDocument.ModelSpace.AddCircle(centerpoint, 3)
ZoomExtents
AppActivate acadapp.Caption
MsgBox "將打開圖層"
testlayer.LayerOn = True
acadapp.ActiveDocument.Regen acActiveViewport
End Sub
- 凍結(jié)和解凍圖層
將圖層的Freeze屬性設置為True,將凍結(jié)圖層,設置為False,將解凍圖層。
在凍結(jié)狀態(tài),圖層上對象不顯示,不能創(chuàng)建新對象,但可以編輯已有對象,當前圖層不能凍結(jié)凍結(jié)圖層可以加快顯示變化,對于復雜的圖形可以減少重新生成的次數(shù)。下面的程序創(chuàng)建兩個圖層:A和B在圖層A上創(chuàng)建一個圓,然后將當前圖層設置為B,凍結(jié)圖層A,修改圓的顏色,再解凍圖層A。
程序運行后,先顯示一個黑色的圓,然后隨著該圖層的凍結(jié)而不可見,解凍后該圓又可見,且顯示為紅色。
Private Sub Command1_Click()
Dim testlayer1 As AcadLayer
Dim testlayer2 As AcadLayer
Set testlayer1 = acadapp.ActiveDocument.Layers.Add("A")
Set testlayer2 = acadapp.ActiveDocument.Layers.Add("B")
acadapp.ActiveDocument.ActiveLayer = testlayer1
Dim circleobj As AcadCircle
Dim centerpoint(0 To 2) As Double
Dim radius As Double
centerpoint(0) = 0#: centerpoint(1) = 0#: centerpoint(2) = 0#
radius = 5#
Set circleobj = acadapp.ActiveDocument.ModelSpace.AddCircle(centerpoint, radius)
circleobj.Update
acadapp.ActiveDocument.ActiveLayer = testlayer2
MsgBox "將凍結(jié)圖層,并修改圓的顏色"
testlayer1.Freeze = True
circleobj.Update
circleobj.Color = acRed
MsgBox "將凍結(jié)圖層"
testlayer1.Freeze = False
circleobj.Update
End Sub
- 鎖住和解鎖圖層
將圖層的Lock屬性設置為True,將鎖住圖層,設置為False,可將圖層解鎖。被鎖住的圖層上可以顯示對象,也可以將其設置為當前圖層并在上面常見對象,但不可以編輯或修改被鎖住的圖層上的對象,當需要顯示圖層作為參照,有希望圖層上的圖形不被誤修改,可以將該圖層設置為鎖住狀態(tài)。
下面的程序在當前圖層繪制一些圖層,然后運行下面的程序?qū)斍皥D層鎖住,此時圖層上的圖形均可見,但不能用鼠標拖動或編輯圖層上的圖形,開鎖圖層后,就可以編輯圖層上的圖形了。
Private Sub Command1_Click()
Dim layerobj As AcadLayer
Set layerobj = acadapp.ActiveDocument.ActiveLayer
layerobj.Lock = True
MsgBox "當前圖層已經(jīng)開鎖,可以編輯"
layerobj.Lock = False
AppActivate acadapp.Caption
End Sub
- 刪除圖層
用Delete方法可以刪除圖層,但是,當前圖層為0圖層不能被刪除,包含有對象的圖層也不能被刪除,只能刪除空圖層,語法格式:object.Delete。