WWW CAD PL VBA dla AutoCAD a kurs podstawowy20




WWW.CAD.PL -- VBA dla AutoCAD-a -- kurs podstawowy




TEXTAREA {
FONT-FAMILY: verdana; FONT-SIZE: 10pt
}
INPUT {
FONT-FAMILY: verdana; FONT-SIZE: 10pt
}
SELECT {
FONT-FAMILY: verdana; FONT-SIZE: 10pt
}
OPTION {
FONT-FAMILY: verdana; FONT-SIZE: 10pt
}
PRE {
FONT-FAMILY: Courier; FONT-SIZE: 8pt
}
H2 {
FONT-FAMILY: Verdana, sans-serif; FONT-SIZE: 13pt
}
H3 {
FONT-FAMILY: Verdana, sans-serif; FONT-SIZE: 12pt
}
H4 {
FONT-FAMILY: Verdana, sans-serif; FONT-SIZE: 10pt
}
P {
FONT-FAMILY: Verdana, sans-serif; FONT-SIZE: 9pt
}
TD {
FONT-FAMILY: Verdana, sans-serif; FONT-SIZE: 9pt
}
XMP {
FONT-FAMILY: monospace; FONT-SIZE: 8pt
}
.ks {
FONT-FAMILY: Verdana, sans-serif; FONT-SIZE: 9pt
}
P.user {
COLOR: black; FONT-FAMILY: Verdana, sans-serif; FONT-SIZE: 8pt; TEXT-ALIGN: center
}
P.user A {
COLOR: black; FONT-FAMILY: Verdana, sans-serif; FONT-SIZE: 8pt; TEXT-ALIGN: center
}
LI {
COLOR: black; FONT-FAMILY: Verdana, sans-serif; FONT-SIZE: 8pt
}
.ll {
FONT-FAMILY: Verdana, sans-serif; FONT-SIZE: 8pt; MARGIN-BOTTOM: 3pt
}
.lll {
FONT-FAMILY: Verdana, sans-serif; FONT-SIZE: 8pt; MARGIN-BOTTOM: 0pt
}
.llll {
COLOR: black; FONT-FAMILY: Verdana, sans-serif; FONT-SIZE: 8pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: right
}
.lllll {
FONT-FAMILY: Verdana, sans-serif; FONT-SIZE: 8pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 15pt
}





























VBA dla AutoCAD-a -- kurs dla początkujących
Lekcja 20 -- Menu w VBA w AutoCAD-zie





Menu w VBA w AutoCAD-zie
Z poziomu VBA możemy tworzyć i edytować dwa rodzaje menu: listę
rozwijaną oraz menu kursora. Do listy rozwijanej mamy dostęp poprzez
menu górne w AutoCAD-zie. Do menu kursora z kolei uzyskujemy dostęp
poprzez jednoczesne wciśnięcie klawisza SHIFT oraz prawego klawisza
myszy.
Struktura listy rozwijanej jest ograniczona do 999 elementów.
Struktura menu kursora jest ograniczona do 499 elementów. Po
przekroczeniu tych wielkości następne elementy menu są ignorowane.

Poniższy rysunek obrazuje, w jaki sposób są numerowane elementy w
menu. Indeksy menu są liczone od 0 do n. Proszę również zwrócić
uwagę, że separator jest także liczony jako osobny element menu.

Rys. 1 Struktura listy rozwijanej
Poniższy przykład ilustruje, w jaki sposób za pomocą VBA można
stworzyć w AutoCAD-zie nowe menu i dodać to menu do istniejącej
listy rozwijanej. 'Definiujemy nazwę nowej procedury.

Public Sub HelionMenu()
'Deklarujemy zmienną objMenus
'jako nową listę rozwijaną AutoCAD-a.

Dim objMenus As AcadPopupMenus
'Deklarujemy zmienną
'objHelionMenu jako nową listę

Dim objHelionMenu As AcadPopupMenu
'Deklarujemy zmienną strNewMenuName
'jako zmienną typu string

Dim strNewMenuName As String
'Tworzymy za pomocą instrukcji Set
'skojarzenie nazwy ze zmienną (tworzymy nową listę)

Set objMenus = ThisDrawing.Application.
MenuGroups.Item(0).Menus

'Jeżeli AutoCAD zwróci błąd, to przechodzimy dalej

On Error Resume Next
'Tworzymy listę rozwijaną o nazwie Helion.
Set objHelionMenu = objMenus("&Helion")

'Sprawdzamy warunek logiczny.
'Jeżeli obiekt menu o tej nazwie już istnieje, to:
If Not objHelionMenu Is Nothing Then

'Wyświetlamy okno informacyjne

MsgBox "Menu already exists"

'I opuszczamy bieżącą procedurę

Exit Sub

'Koniec instrukcji warunkowej IF

End If

'Dodajemy element menu

Set objHelionMenu = objMenus.Add("&Helion")
objHelionMenu.InsertInMenuBar
ThisDrawing.Application.MenuBar.Count

'Kończymy procedurę

End Sub

Poniższy przykład ilustruje sposób dodawania elementów do
stworzonego przez nas menu. Dodany przez nas element menu ma za
zadanie uruchomienie makra napisanego w VBA, korzystając z polecenia
AutoCAD-a -VBARUN. 'Definiujemy nową nazwę procedury.

Public Sub HelionMenu2()
'Deklarujemy zmienną objMenus
'jako listę rozwijaną AutoCAD-a.

Dim objMenus As AcadPopupMenus
'Deklarujemy zmienną objHelionMenu
'jako nową listę rozwijaną AutoCAD-a.

Dim objHelionMenu As AcadPopupMenu
'Deklarujemy zmienną strNewMenuName
'jako zmienną typu string.

Dim strNewMenuName As String
'Deklarujemy zmienną objHelionMenuItem
'jako nowy element listy rozwijanej.

Dim objHelionMenuItem As AcadPopupMenuItem
'Za pomocą instrukcji Set dokonujemy
'skojarzenia obiektu ze zmienną.

Set objMenus = ThisDrawing.Application.MenuGroups.Item(0).Menus

'W wypadku zwrócenia błędu
'przechodzimy do następnej linii.

On Error Resume Next

'Tworzymy nowy obiekt listy o nazwie Helion.
Set objHelionMenu = objMenus("&Helion")
'Sprawdzamy warunek logiczny:
'Jeżeli obiekt listy o danej nazwie nie istnieje to:

If objHelionMenu Is Nothing Then

'Dodajemy go.

Set objHelionMenu = objMenus.Add("&Helion")

'Koniec instrukcji warunkowej IF
End If

'Sprawdzamy, czy utworzony przez nas element
'menu został wyświetlony w menu górnym.

If Not objHelionMenu.OnMenuBar Then
'Jeżeli nie, to go wyświetlamy

objHelionMenu.InsertInMenuBar
ThisDrawing.Application.MenuBar.Count

'Koniec instrukcji warunkowej IF

End If

'Umieszczamy w naszym menu
'wywołanie makra AddCircle.

Set objHelionMenuItem =
objHelionMenu.AddMenuItem(0, "Add &Circle", _
"-vbarun AddCircle ")

'Tworzymy podpowiedź dla
'tego elementu menu.

objHelionMenuItem.HelpString =
"This adds a circle at the origin"

'Koniec procedury
End Sub
Sub rysOkrąg2()
Dim ObOkrag As AcadCircle

'Deklaracja zmiennej jako obiekt AutoCAD-a
Dim PtSrodek(0 To 2) As Double

'Deklaracja zmiennej dla punktu środka okręgu

Dim dblPromien As Double
'Deklaracja zmiennej dla promienia
'Dane okręgu:
PtSrodek(0) = 100#

'Współrzędna X środka okręgu

PtSrodek(1) = 200#
'Współrzędna Y środka okręgu

PtSrodek(2) = 0#
'Współrzędna Z środka okręgu

dblPromien = 50#

'Wartość promienia
'Tworzenie okręgu w przestrzeni modelu

Set ObOkrag = ThisDrawing.ModelSpace.AddCircle
(PtSrodek, dblPromien)
End Sub

Rys. 2 Efekt działania procedury
HelionMenu2
Rys. 3 Helpstring widoczny, gdy zatrzymamy
kursor myszy na elemencie menu Rys Okrąg
Przy umieszczaniu elementów w menu stworzonym przy pomocy VBA
musimy zwrócić uwagę na jeszcze jedną ważną różnicę: zamiast znaków
sterujących w menu np. ; musimy używać ich odpowiedników ASCII
chr(59)
'przypisanie makra otwórz

(Odpowiednik VBA dla wpisania: "ESC ESC _open ")
openMacro = Chr(3) & Chr(3) & Chr(95)
& "open" & Chr(32)

Poniżej umieściłem tabelę, zawierającą najczęściej używane w menu
znaki sterujące oraz ich odpowiedniki w ASCII.
Rys. 4
[Poprzednia
lekcja] [Spis
treści] [Przykłady w postaci
elektroniczej]
Piotr Głębicki, ©
Wydawnictwo Helion
2001.




Wyszukiwarka

Podobne podstrony:
WWW?D PL AutoCAD kurs dla średniozaawansowanych14
WWW?D PL AutoCAD kurs dla średniozaawansowanych12
WWW?D PL
WWW?D PL
WWW?D PL AutoCAD kurs dla średniozaawansowanych6
WWW?D PL
WWW?D PL
WWW?D PL AutoCAD kurs dla średniozaawansowanych4
WWW?D PL
WWW?D PL AutoCAD kurs dla średniozaawansowanych8
WWW?D PL CATIA V5 Modelowanie kurs dla początkujący
WWW?D PL AutoCAD kurs dla średniozaawansowanych1
WWW?D PL
WWW?D PL
WWW?D PL
WWW?D PL AutoCAD kurs dla średniozaawansowanych11
WWW?D PL AutoLISP FAQ

więcej podobnych podstron