vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest niedziela, 26 maja 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
Artykuły
Uruchamianie makr VBA w AutoCADzie 2000
zamieszczony: 20 października 2003
przez: admin
czytany 19991 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