przez:
admin
czytany 25879 razy.
Poniższy opis dotyczy uruchamiania makr VBA w środowisku AutoCADa
2000 oraz wersji wyższych, jednakże pod Autocadem R14 wyglada to podobnie.
Uruchamianie makr VBA dla AutoCADa to nie jest wcale taka prosta
sprawa.
Po pierwsze przed uruchomieniem plik z makrami należy załadować. Można to
zrobić na kilka sposobów.
- Poprzez wybranie z menu Tools/Load macro,
- Wpisanie w linii poleceń AutoCADa komendy VBALOAD,
- Uruchomienie menedżera makr VBA: w linii poleceń wpisujemy komendę VBAMAN lub
wymieramy z menu Tools/VBA Manager.
Po pojawieniu się okna dialogowego wskazujemy położenie pliku
*.dvb, zawieraj?cego makra.
4. Wpisanie komendy -VBALOAD (poprzedzonej "minusem")
nie otworzy okna dialogowego. Wówczas trzeba wpisać pełna ?cieżkę dostępu do
pliku *.dvb. Jeżeli katalog, w którym się plik *.dvb znajduje jest
wyszczególniony w ?cieżce poszukiwań AutoCADa wystarczy wpisać samą nazwę pliku
projektu.
5. Jeżeli makro ma być często używane, najwygodniej jest żeby plik *.dvb
ładował się automatycznie przy uruchamianiu AutoCADa.
Wówczas w pliku acad.lsp (znajdującym się w przypadku AutoCADa2000 w katalogu
acad200/support) należy umie?cić następujący wiersz:
(vl-vbload
pelna_sciezka_dostepu) lub (vl-vbload
nazwa_pliku) jeżeli katalog jest wyszczególniony w ?cieżce
poszukiwań AutoCADa.
można także zamiast komendy vl-vbload użyć instrukcji command:
(command
"_-vbload" pelna_sciezka_dostepu) lub
(command "_-vbload" nazwa_pliku).
Innym, znacznie wygodniejszym sposobem jest jest skorzystanie ze StartupSite -
makra VBA, a także programy LISP umieszczone na tej liscie ładowane sa
automatycznie w czasie uruchamania AutoCADa. W tym celu należy w linii komend
napisać polecenie _appload.
Pojawi się wówczas okno dialogowe, gdzie wewnatrz ramki z napisem StartupSite
jest przycist z etykietka "Contents...", po jego kliknięciu pojawi
się okno dialogowe, w dzięki któremu (po nacinięciu na przycisk
"Add...") można wybrać pliki z makrami.
To dopiero połowa sukcesu - załadowane makra trzeba jeszcze
uruchomić. Tego również można dokonać na wiele sposobów:
- Wybranie z menu Tools/macros (skrót klawiaturowy to ALT+F8),
- Uruchomienie menedżera makr VBA (VBAMANa) i kliknięcia przycisku
"macros..."
Pojawi się wówczas okienko dialogowe, w którym wybiera się makro do
uruchomienia.
- Wpisanie komendy -VBARUN (poprzedzonej "minusem") nie otworzy okna
dialogowego. Wówczas trzeba wpisać nazwę makra w linii komend.
(Uwaga! Jeżeli w projekcie są w różnych modułach makra o takich samych nazwach
to dodatkowo wpisywana w linii komend nazwa makra musi być poprzedzona nazwą
modułu w którym się mieści oraz kropka.
-vbarun nazwa_makra lub
-vbarun nazwa_modulu.nazwamakra
Jeżeli natomiast otwarty jest więcej niż jeden projekt (tzn plik *.dvb)
instrukcja VBARUN powinna wyglądać następująco:
-vbarun project.dvb!nazwa_modulu.nazwamakra
|cieżka do pliku project.dvb powinna być wyszczególniona w ścieżce poszukiwań
AutoCADa.
Jeżeli nie jest wówczas komenda powinna wyglądać następująco:
-vbarun
sciezka_do_projektu\project.dvb!nazwa_modulu.nazwamakra
Uwaga.
Jeżeli podajemy pełna ścieżkę do pliku *.dvb nie jest konieczne uprzednie jego
ładowanie. Projekt zostanie automatycznie załadowany przed pierwszym użyciem.
Jeżeli makro ma być często używane wygodnie jest umieścić
uruchamiający to makro przycisk na pasku narzędzi. (menu View->Toolbars... a
potem przycisk "Customize...")
Szczytem wygody będzie natomiast powtórne uruchamianie ostatnio użytego makra
po kliknięciu na prawy klawisz myszy.
I tutaj zaczynają się schody. Po kliknięciu prawym klawiszem myszy do linii
komend zostanie wysłana tylko instrukcja -VBARUN. AutoCAD zapyta się następnie
o nazwę makra, które chcemy uruchomić i czeka. Jedynym rozwiązaniem tej
niedogodności wydaje mi się użycie procedury LISPowej, uruchamiającej makro
VBA.:
(defun c:nazwa_procedury()
(vl-vbarun nazwa_makra)
)
lub
(defun c:nazwa_procedury()
(command "-vbarun" "nazwa_makra")
)
Procedurę tę należy umieścić np. w pliku acad.lsp.
Jednakże korzystanie z procedur w ten sposób uruchamianych ma jedna wadę:
w momencie uruchamiania znika zaznaczenie elementów na rysunku. Jest to
problem, gdy chcemy najpierw obiekt (np. tekst) zaznaczyć, a potem dopiero go
edytować. (Innymi słowy kolekcja PickfirstSelectionSet
jest "czyszczona").
Jeżeli ktoś poradził sobie z tym problemem, bardzo proszę o kontakt.
wstecz