Zobrazit plnou verzi příspěvku: ikona vs. lisp

Ferdinand
13.11.2008, 10:02
Lze někde najít koncepci sestavení řetězců (pravidla + vysvětlení syntaxu) pro ikony? Pro tento případ bych potřeboval "přeložit" do lispu:
$M=$(if,$(getvar,cmdactive),_all,^P_ai_selall ^P)
V Helpu jsem našel (v tématu Use Special Control Characters in Menu Macros) pouze vysvětlení pro ^P - Turns MENUECHO on or off
Pokud chci použít v lispu příkaz _AI_SELALL např.
(command "_move" _AI_SELALL "" "0,0" "1000,1000")
tak odezva na p.ř. je_moveSelect objects:Command: _AI_SELALL Unknown command "AI_SELALL".  Press F1 for help.
Command: 0,0 Unknown command "0,0".  Press F1 for help.
Command: 1000,1000 Unknown command "1000,1000".  Press F1 for help.
Command: nil
Je to někdy potřeba, protože "obyčejný" výběr ... "_All" "" ... "nechytne" úplně všechny entity ve výkresu (samozřejmě při rozmražených/odemknutých/zviditelněných hladinách).
 
 Ferdinand2008-11-13 10:14:21

Seiner
13.11.2008, 12:36
No, trochu smíchaný dotaz ;-)
 
Syntaxi hledejte v části nápovědy věhované DIESELu
Důvod je IMHO ten, že AI_SELALL je definovaný lispem v souboru Acad2008doc.lsp (nebo odpovídající verze). Takto definované příkazy. domnívám se, nejdou volat příkazem command lispu. Pokud to chcete mermomocí do lispu, okopírujte si to z toho Acad2***doc.lsp. Není to nic složitého.

Ferdinand
13.11.2008, 16:45
Nefunguje mi to ani když před použitím načtu acad2004doc.lsp...

Seiner
14.11.2008, 08:37
A nebude. Já se domnívám, že příkazy definované v lispu nejdou přímo volat lispem pomocí command.
Já jsem Vám doporučil okopírovat do Vašeho lispu těch pár řádek, ktreré provádějí příkaz.

Ferdinand
19.11.2008, 13:47
Jasně. Jinak pokud volám v lispu externě (tj. zvlášť, v samostatném lispu nadefinovaný vlastní) PRIKAZ, tak píšu
(C:PRIKAZ)
a PRIKAZ se vykoná. Dělám to běžně a bez problému to funguje - proto jsem předpokládal, že pokud acad2004doc.lsp načtu do výkresu, mohu volat kteroukoli jeho funkci... V acad2004doc.lsp je ai_selall sice jen na 20 řádků (s komentářem 23), ale odkazuje to na další funkci ai_notrans...
 

Seiner
19.11.2008, 14:33
Nojo - ten odkaz jsem přehlédnul - tím se to komplikuje :-(
Taky mi něco říká, že by mělo jít volat funkci definovanou v lispu, ale jistý si nejsem.

Vladimír Michl
20.11.2008, 10:11
Pokud chcete z LISPu jen vybrat všechny objekty, stačí (ssget"_X").
 
Pro inspiraci výběru objektů (uvnitř příkazu a samostatně/grips) z LISPu se můžete podívat na naši funkci SelLay (viz Download).