vlr-command-reactor


perlon

Rekomendowane odpowiedzi

Witam.

Pytanie dotyczy reaktora jak w temacie wersja 2010.11.25(16241). W dokumentacji znalazłem taki oto przykład:

(vl-load-com)

(vlr-command-reactor nil '((:vlr-commandWillStart . commandWillStart)))

;;;define the callback function

(defun commandWillStart(reactor_object list)

(alert (vl-princ-to-string list))

)

Niestety nie działa :-(

Dodanie po (vl-load-com) jeszcze (vl-load-reactors) nic nie poprawia.

Inne reaktory działają np. vlr-acdb-reactor a na command bez sukcesów.

Czy ma ktoś jakieś doświadczenia z tym reaktorem. Z góry dziękuję za każdą podpowiedź.

Przy okazji. Czy da się zdefiniować reaktory w VBA?

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Próbowałem uruchomić ten reaktor i u mnie działa bez problemów w LISP.

Może dopisał Pan tam coś więcej niż było w przykładzie i stąd problem.

W zasadzie wystarczy:

(vl-load-com) 
(vlr-command-reactor nil '((:vlr-commandWillStart . commandWillStart))) 
(defun commandWillStart(reactor_object lista) 
(alert (vl-princ-to-string lista))
)

po uruchomieniu dowolnego polecenia, jego nazwa wyświetli się w dodatkowym okienku na ekranie.

W vba jest to jeszcze łatwiejsze, wystarczy w oknie kodu ThisDocument, wybrać "BeginCommand" jak na załączonym obrazku,

post-127-1348487299,9435_thumb.jpg

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki za podpowiedź.

Niestety w lisp'ie mi nie działa :( Nie wiem o co chodzi.

Czy to, że mam jednocześnie zainstalowaną werję POL i ENG może mieć jakieś znaczenie?

Mój zwcad.lsp

(vl-load-com)

(vlr-command-reactor nil '((:vlr-commandWillStart . commandWillStart)))

(defun commandWillStart(reactor_object lista)

(alert (vl-princ-to-string lista))

)

(princ "zwcad.lsp zaladowany")

Czysty dokument bez żadnych lispów, VBA etc. Zaraz po uruchomieniu ZwCAD'a ( wersja z kluczem nie avaluacyjna ) Nie powinno być innych śmieci. I nie chodzi.

Spod VBA oczywiście działa nawet na kolejnych otwieranych rysunkach.

Odnośnik do komentarza
Udostępnij na innych stronach

Odinstalowałem oba ZwCAD'y instalacja z płyty, czysty ZwCAD EN

reactor.lsp

(vl-load-com)

(vlr-command-reactor nil '((:vlr-commandWillStart . commandWillStart)))

(defun commandWillStart(reactor_object lista)

(alert (vl-princ-to-string lista))

)

Command: _NEW

Command:

Command: (load "reactor.lsp")

COMMANDWILLSTART

Command:

Command: _line

i nic :-(

brak reakcji tzn. pyta o punkt startowy zamiast wyświetlić okno.

Odnośnik do komentarza
Udostępnij na innych stronach

W pracy przeprowadziłem test na produkcie Autodesku.

mój reaktor.lsp

(vl-load-com)
(vl-load-reactors)
(setq *ObslugaStartuKomendy* nil)
(vlr-remove-all :VLR-Command-Reactor)
(defun ObslugaStartuKomendy(obiekt_reaktora lista) (alert (vl-princ-to-string lista)))
(vlr-command-reactor nil '((:vlr-commandWillStart . ObslugaStartuKomendy)))

Na AutoCAD'zie działa jak należy, Na ZwCAD'zie bez reakcji :(

Po mojemu ten reaktor w ZwCAD'zie nie działa chyba że trzeba włączyć jakiś pstryczek żeby zadziałał.Sprawdziłem reaktor vlr-acdb-reactor. Ten działa.

Odnośnik do komentarza
Udostępnij na innych stronach

Kiedyś dawno była w ZWCAD taka zmienna systemowa:

(setvar "_ZW_UUIDOFUSERMODULE" 1 )

Dokładnie jej sensu nie pamiętam, ale pamiętam że miała jakiś związek z reaktorami, proszę sprawdzić, czy jej ustawienie na 1 nie spowoduje jakiejś poprawy.

Zapytam również ZWSOFT o wyjaśnienie co może powodować Pana problemy.

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.