perlon Opublikowano 9 Lutego 2011 Zgłoś Opublikowano 9 Lutego 2011 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
kruszynski Opublikowano 10 Lutego 2011 Zgłoś Opublikowano 10 Lutego 2011 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,
perlon Opublikowano 10 Lutego 2011 Autor Zgłoś Opublikowano 10 Lutego 2011 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.
perlon Opublikowano 10 Lutego 2011 Autor Zgłoś Opublikowano 10 Lutego 2011 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.
perlon Opublikowano 11 Lutego 2011 Autor Zgłoś Opublikowano 11 Lutego 2011 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.
kruszynski Opublikowano 11 Lutego 2011 Zgłoś Opublikowano 11 Lutego 2011 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.
perlon Opublikowano 11 Lutego 2011 Autor Zgłoś Opublikowano 11 Lutego 2011 Niestety nie znalazłem opisu tej zmiennej w System Variables. W ogóle zmiennych _ZW_* nie ma w dokumentacji. Google też milczy. Niemniej pomogło. Dzięki bardzo :) Punkcik się należy.
Rekomendowane odpowiedzi