Discussion:
[acad] skrót klawiszowy do makra
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
Lagod
2009-12-16 12:19:42 UTC
Permalink
Cześć
Jak przypisać skrót klawiszowy do makra?
Ewentualnie do przycisku pod którym mam makro.
bo w pliku pgp się nie udaje, tam chyba tylko komendy proste.
--
____________________________________________________________MAT_______
Lukasz Kozicki
2009-12-17 23:22:23 UTC
Permalink
Post by Lagod
Cześć
Jak przypisać skrót klawiszowy do makra?
Ewentualnie do przycisku pod którym mam makro.
bo w pliku pgp się nie udaje, tam chyba tylko komendy proste.
Musisz makro przerobić na komendę - i po sprawie. Komendy maja
w definicji (defun) przedrostek c:, czyli jeśli masz makro
"mojemakro" definiowane np. tak (defun mojemakro () ....... )
to robisz z tego komendę tak (defun c:mojemakro () (mojemakro))
i już możesz dopisać na końcu pliku acad.pgp np
MM, *MOJEMAKRO

HTH :)
Pozdr,
--
ŁK
Lagod
2009-12-28 13:11:21 UTC
Permalink
Post by Lukasz Kozicki
Musisz makro przerobić na komendę - i po sprawie. Komendy maja
w definicji (defun) przedrostek c:, czyli jeśli masz makro
"mojemakro" definiowane np. tak (defun mojemakro () ....... )
to robisz z tego komendę tak (defun c:mojemakro () (mojemakro))
i już możesz dopisać na końcu pliku acad.pgp np
MM, *MOJEMAKRO
To ja nie rozumiem.
Mi chodzi o takie np makro, które jest pod przycieskiem Layer Properties
Manager:

$M=$(if,$(and,$(>,$(getvar,LayerManagerState),0)),^C^C'_LayerClose,^C^C'_Layer)
--
____________________________________________________________MAT_______
Lukasz Kozicki
2009-12-28 23:51:46 UTC
Permalink
Post by Lagod
To ja nie rozumiem.
Mi chodzi o takie np makro, które jest pod przycieskiem Layer Properties
$M=$(if,$(and,$(>,$(getvar,LayerManagerState),0)),^C^C'_LayerClose,^C^C'_Layer)
A, przepraszam. Myślałem, że chodzi o makro w AutoLispie.
To co przytaczasz powyżej - nie da się. $M= oznacza definicję
makra tylko i wyłącznie do potrzeb menu i jest napisane w Dieslu.
Przez $M= można nawet podmieniać polecenia w menu - ale nie ma to
żadnego przełożenia na komendy wydawane z linii poleceń, bo
wyrażenia Diesla są ewaluowane w momencie wywołania i nie są
przez autocada pamiętane. Jednym z zastosowań diesla jest zmienna
MODEMACRO - możesz zmienić rodzaj i ilosć informacji wyświetlanych
w pasku statusu.
http://docs.autodesk.com/ACD/2010/ENU/AutoCAD%202010%20User%20Documentation/index.html?url=WS73099cc142f4875513fb5cd10c4aa30d6b-7b45.htm,topicNumber=d0e393548

Pozdr,
--
ŁK
Lagod
2009-12-29 12:22:03 UTC
Permalink
Post by Lukasz Kozicki
A, przepraszam. Myślałem, że chodzi o makro w AutoLispie.
To co przytaczasz powyżej - nie da się. $M= oznacza definicję
makra tylko i wyłącznie do potrzeb menu i jest napisane w Dieslu.
Kumam.
A nie da się przypisać klawisza skrótu do przycisku w pasku narzędzi?
W starszych acadach się dało (prawie na pewno), a teraz nie umiem.
--
____________________________________________________________MAT_______
Lukasz Kozicki
2009-12-29 12:48:27 UTC
Permalink
Post by Lagod
A nie da się przypisać klawisza skrótu do przycisku w pasku narzędzi?
W starszych acadach się dało (prawie na pewno), a teraz nie umiem.
Chyba też nie było można, w każdym razie nie przypominam sobie, by była
możliwość przypisania skrótu do makra w dieslu albo do polecenia menu,
chyba że to polecenie było w lispie.

Ale może nic straconego. Może to co chcesz dałoby się zrobić w lispie -
w takim wypadku możesz dopisać takie makro jako nową komendę do plików
startowych i skrót do acad.pgp. Napisz co konkretnie potrzebujesz, może
razem coś wymyślimy :)

Pozdr,
--
ŁK
Lagod
2009-12-29 15:33:23 UTC
Permalink
Post by Lukasz Kozicki
Ale może nic straconego. Może to co chcesz dałoby się zrobić w lispie -
w takim wypadku możesz dopisać takie makro jako nową komendę do plików
startowych
To znaczy konkretnie gdzie?
Post by Lukasz Kozicki
i skrót do acad.pgp. Napisz co konkretnie potrzebujesz, może
razem coś wymyślimy :)
No właśnie to:
(if,$(and,$(>,$(getvar,LayerManagerState),0)),^C^C'_LayerClose,^C^C'_Layer)

Chcę żeby ten sam skrót służył zarówno do zamykania jak i otwierania
layermanagera. Czyli Makro które najpierw sprawdza: jeśli layermanager
jest otwarty to ma go zamknąć a jeśli zamknięty to otworzyć.
Chyba proste.
--
____________________________________________________________MAT_______
Lukasz Kozicki
2009-12-29 20:36:26 UTC
Permalink
Post by Lagod
(if,$(and,$(>,$(getvar,LayerManagerState),0)),^C^C'_LayerClose,^C^C'_Layer)
OK. Zrób tak. W katalogu C:\Documents and Settings\%USERNAME%\Dane
aplikacji\Autodesk\AutoCAD 2010\R18.0\enu\Support (lub podobnym)
zapisz plik acad.lsp (plik o takiej nazwie, jeśli istnieje, jest
automatycznie wczytywany przez AutoCADA przy uruchamianiu). W tym
pliku zdefiniuj nową komendę LAYONOFF:

==[ acad.lsp ]===================================================

(defun c:layonoff ()
(if (> (getvar "LayerManagerState") 0)
(command "'_LayerClose")
(command "'_LayerPalette")
)
(princ)
)

==================================================================

Następnie do pliku acad.pgp, który powinien znajdować w tym samym
katalogu, dopisz na końcu linijkę np. taką

==[ acad.pgp ]===================================================
; -- User Defined Command Aliases --
[...]

LL, *LAYONOFF

==================================================================

Zrestartuj AutoCADA'a - i voila! - masz skrót LL do włączania i
wyłączania palety Layers. BTW, do pliku acad.lsp możesz też wkleić
inne funkcje z których często korzystasz.

Pozdr,
--
ŁK
Lagod
2009-12-30 10:41:42 UTC
Permalink
Post by Lukasz Kozicki
OK. Zrób tak. W katalogu C:\Documents and Settings\%USERNAME%\Dane
aplikacji\Autodesk\AutoCAD 2010\R18.0\enu\Support (lub podobnym)
zapisz plik acad.lsp (plik o takiej nazwie, jeśli istnieje, jest
automatycznie wczytywany przez AutoCADA przy uruchamianiu). W tym
Doskonale-działa.
Właśnie chciałem LL :-)
BArdzo dziękuje. Pozdrawiam starorocznie.
--
____________________________________________________________MAT_______
Loading...