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