你當前的位置>>主頁>>AutoCAD知識>>專題教程
 

Autocad VBA初級教程 (第八課:圖層操作)

    先簡單介紹兩條命令:

1、這條語句可以建立圖層:
ThisDrawing.Layers.Add("新建圖層")
在括號中填寫圖層的名稱。

2、設置為當前的圖層
ThisDrawing.ActiveLayer=圖層對象
注意,等號右邊的變量不能用圖層名稱,必須使用一個有效的圖層變量

以下一些屬性在圖層比較常用:
LayerOn 打開關閉
Freeze 凍結
Lock鎖定
Color 顏色
Linetype 線型


看一個例題:
1、先在已有的圖層中尋找一個名為“新建圖層”的圖層
2、如果找到這個圖層,顯示該圖層的信息,并提示用戶是否需要設置為當前圖層,如果用戶確認,則設置為當前圖層。
3、如果圖層沒有找到,新建一個名為“新建圖層”的圖層,設置為黃色,HIDDEN線型,并把這個圖層設置為當前圖層

Sub mylay()

Dim lay0 As AcadLayer '定義作為圖層的變量
Dim lay1 As AcadLayer

findlay = 0 '尋找圖層的結果的變量,0沒有找到,1找到

For Each lay0 In ThisDrawing.Layers '在所有的圖層中進行循環(huán)

  If lay0.Name = "新建圖層" Then '如果找到圖層名
    findlay = 1 '把變量改為1標志著圖層已經找到
    msgstr = lay0.Name + "已經存在" + vbCrLf
    msgstr = msgstr + "圖層狀態(tài):" + IIf(lay0.LayerOn = True, "打開", "關閉") + vbCrLf
    msgstr = msgstr + "圖層" + IIf(lay0.Freeze = True, "已經", "沒有") + "凍結" + vbCrLf
    msgstr = msgstr + "圖層" + IIf(lay0.Lock = True, "已經", "沒有") + "鎖定" + vbCrLf
    msgstr = msgstr + "圖層顏色號:" + CStr(lay0.Color) + vbCrLf
    msgstr = msgstr + "圖層線型:" + lay0.Linetype + vbCrLf
    msgstr = msgstr + "圖層線寬:" + CStr(lay0.Lineweight) + vbCrLf
    msgstr = msgstr + "打印開關" + IIf(lay0.Plottable = False, "關閉", "打開") + vbCrLf + vbCrLf
    msgstr = msgstr + "是否設置為當前圖層?"
    If MsgBox(msgstr, 1) = 1 Then '如果用戶點擊確定
       If Not lay0.LayerOn Then lay0.LayerOn = True '打開
       ThisDrawing.ActiveLayer = lay0 '把當前圖層設為已經存在的圖層
    End If
    Exit For '結束尋找
  End If
Next lay0

If findlay = 0 Then '沒有找到圖層
  Set lay1 = ThisDrawing.Layers.Add("新建圖層") '增加一個名為“臨時圖層”的圖層
  lay1.Color = 2 '圖層設置為黃色
 
  ltfind = 0 '找到線型的標志,0沒有找到,1找到
  For Each entry In ThisDrawing.Linetypes '在現(xiàn)有的線型中進行循環(huán)
    If StrComp(entry.Name, "HIDDEN") = 0 Then '如果線型名為"HIDDEN"
      ltfind = 1 '標志為已找到線型
      Exit For '退出循環(huán)
    End If
  Next entry '結束循環(huán)

  If ltfind = 0 Then '沒有找到線型
    ThisDrawing.Linetypes.Load "HIDDEN", "acadiso.lin" '加載線型
  End If
  lay1.Linetype = "HIDDEN" '設置線型

  ThisDrawing.ActiveLayer = lay1 '將當前圖層設置為新建圖層
End If

End Sub

在尋找圖時時我們用到for each……next 語句
它的語法是這樣的:
For Each 變量 In 數組或集合對象
……
exit for
……
next 變量
它的作用是在數組或集合對象中進行循環(huán),每循環(huán)一次,變量就成為數組或集合對象中的一個元素。本例在所有的圖層對象中進行循環(huán),每循環(huán)一次layo變量就代表一個圖層
在循環(huán)體中遇到exit for 語句則退出循環(huán),如果沒有 exit for,循環(huán)將在所有的元素都操作一遍后結束。

If lay0.Name = "新建圖層" Then
lay0.name代表這處圖層的圖層名

IIf(lay0.LayerOn = True, "打開", "關閉")
這是一個簡單判斷語句,語法如下:
iif(判斷表達式,返回值1,返回值2)
當判斷表達式成立,函數值=返回值1,如果表達式不成立,函數值=2

MsgBox(msgstr, 1)
Mgbox顯示一個對話框,第一個參數是對話框顯示的內容
第二個參數可以控制對話框上的按鈕。
0 只有確認按鈕
1 確認、取消
2 終止、重試、忽略
3 是、否、取消
4 是、否
MsgBox獲得值如下:
確認:1
取消:2
終止:3
重試:4
忽略:5
是:6
否7
初學者不需要死記硬背,能有所了解就行了

ACAD圖層中最麻煩的就是線型問題了,本例先尋找一個HIDDEN線型,如果找不到就加載這個線型,用這條語句:
ThisDrawing.Linetypes.Load "HIDDEN", "acadiso.lin"
ThisDrawing.Linetypes.Load后需要兩個參數,一個是線型的名稱,另外一個是線型文件的名稱。

本教程共13頁    第  [1]  [2] [3] [4] [5] [6] [7]  8  [9] [10] [11]  [12]  [13]  頁
民眾工作室.制作      版權所有