Autocad VBA初級(jí)教程 (第九課:創(chuàng)建選擇集)
1.在創(chuàng)建對(duì)象的同時(shí)可以直接引用.以前的例程中已經(jīng)做過(guò)多次了,現(xiàn)在復(fù)習(xí)一下,看例程:先隨機(jī)畫(huà)300個(gè)圓,在畫(huà)圓時(shí)直接引用,然后再把這些圓根本大小修改顏色.
Sub c300()
Dim myselect(0 To 300) As AcadEntity '定義選擇集數(shù)組
Dim pp(0 To 2) As Double '圓心坐標(biāo)
For i = 0 To 300 '循環(huán)300次
pp(0) = 3000 * Rnd: pp(1) = 3000 * Rnd: pp(2) = 0 '設(shè)置圓心坐標(biāo)
Set myselect(i) = ThisDrawing.ModelSpace.AddCircle(pp, Rnd * 30 + 1) '畫(huà)不同大小的圓
Next i
For i = 1 To 300
If myselect(i).Radius > 10 Then '判斷圓的直徑是否大于10
myselect(i).color = Int(255 * Rnd + 1) '大圓顏色改為隨機(jī)數(shù)
Else
myselect(i).color = 0 '小圓改為白色
End If
Next i
ZoomExtents '縮放到顯示全部對(duì)象
End Sub
pp(0) = 3000 * Rnd: pp(1) = 3000 * Rnd: pp(2) = 0
這一行實(shí)際上應(yīng)該是三條語(yǔ)句,用三行合并為一行,用冒號(hào)分開(kāi)
rnd是隨機(jī)數(shù)函數(shù),它的數(shù)值為0-1之間的小數(shù),3000*rnd得到的數(shù)值就是在0-3000之間的隨機(jī)數(shù)
Set myselect(i) = ThisDrawing.ModelSpace.AddCircle(pp, Rnd * 30 + 1)
這條語(yǔ)句的作用是以pp點(diǎn)坐標(biāo)為圓心,畫(huà)一個(gè)圓,半徑是1-30之間的隨機(jī)數(shù),賦值給myselect選擇集.
2.提標(biāo)用戶(hù)在屏幕中選取
選擇語(yǔ)句這樣寫(xiě):Set sset = ThisDrawing.SelectionSets.Add("ss1"),其中”ss1”是一個(gè)選擇集名稱(chēng),這個(gè)參數(shù)可以隨意寫(xiě)一個(gè),注意不要重復(fù)就可以了.
下面的例程是讓用戶(hù)選擇對(duì)象,然后把選中的對(duì)象改為綠色,最后把選擇集刪除
Sub mysel()
Dim sset As AcadSelectionSet '定義選擇集對(duì)象
Dim element As AcadEntity '定義選擇集中的元素對(duì)象
Set sset = ThisDrawing.SelectionSets.Add("ss1") '新建一個(gè)選擇集
sset.SelectOnScreen '提示用戶(hù)選擇
For Each element In sset '在選擇集中進(jìn)行循環(huán)
element.color = acGreen '改為綠色
Next
sset.Delete '刪除選擇集
End Sub
3.選擇全部對(duì)象
用select方法,參數(shù)為acSelectionSetAll ,看例程,這個(gè)程序選擇全部對(duì)象,顯示選中的對(duì)象,并計(jì)算對(duì)象數(shù).
Sub allsel()
Dim sel1 As AcadSelectionSet '定義選擇集對(duì)象
Set sel1 = ThisDrawing.SelectionSets.Add("s") '新建一個(gè)選擇集
Call sel1.Select(acSelectionSetAll) '全部選中
sel1.Highlight (True) '顯示選擇的對(duì)象
sco= sel1.Count '計(jì)算選擇集中的對(duì)象數(shù)
MsgBox "選中對(duì)象數(shù):" & CStr(sco) '顯示對(duì)話框
End Sub
3.運(yùn)用select方法
上面的例題已經(jīng)運(yùn)用了select方法,下面講一下select的5種選擇方式:
1:擇全部對(duì)象(acselectionsetall)
2.選擇上次創(chuàng)建的對(duì)象(acselectionsetlast)
3.選擇上次選擇的對(duì)象(acselectionsetprevious)
4.選擇矩形窗口內(nèi)對(duì)象(acselectionsetwindow)
5.選擇矩形窗口內(nèi)以及與邊界相交的對(duì)象(acselectionsetcrossing)
還是看代碼來(lái)學(xué)習(xí).其中選擇語(yǔ)句是:
Call sel1.Select(Mode, p1, p2)
Mode已經(jīng)定義為5,也就是選擇矩形窗口內(nèi)以及與邊界相交的對(duì)象,p1和p2是兩個(gè)點(diǎn)坐標(biāo),
Sub selnew()
Dim sel1 As AcadSelectionSet '定義選擇集對(duì)象
Dim p1(0 To 2) As Double '坐標(biāo)1
Dim p2(0 To 2) As Double '坐標(biāo)2
p1(0) = 0: p1(1) = 0: p1(2) = 0 '設(shè)置坐標(biāo)1
p2(0) = 300: p2(1) = 300: p2(2) = 0 '設(shè)置坐標(biāo)1
Mode = 5 '把選擇模式存入mode變量中
Set sel1 = ThisDrawing.SelectionSets.Add("sel3") '新建一個(gè)選擇集
Call sel1.Select(Mode, p1, p2) '選擇對(duì)象
sel1.Highlight (ture) '顯示已選中的對(duì)象
End Sub
|