Zobrazit plnou verzi příspěvku: exceeded maximum number of selection sets

PetrKonecny
23.10.2008, 08:39
Zdravím. Mám problém s AutoCADem...Po cca hodinové práci v AutoCADu mi to vyhodí tuto hlášku "exceeded maximum number of selection sets" (překročen maximální počet výběrů) a pak už nemůžu používat nějaké příkazy (jako například izolace hladiny), pokud něco vyberu, tak ve vlostnostech mám "no selection"...Na anglickým fóru jsem se dočetl, že problém je v tom, že je omezen maximální počet výběrů na 128. Byl tam nějaký lisp (od DotSoftu) na vymazání výběrů, ale ten bohužel nefunguje.  Nevíte někdo, jak to vyřešit - resetovat každou hodinu CAD je fakt otravný PS: Mám WinXP, ACAD 2007 SP2 ENPSS: Omlouvám se za anglické výrazy - v CZ CADu jsem nikdy nedělal, tak přesné české ekvivalenty neznám...

alfred
23.10.2008, 09:08
Asi nejaka utilita, ktera neustale pridava selekce. V napovede k funkci (ssget) je:

If the maximum number of selection sets is reached, you must call the (gc) function to free unused memory before another ssget will work.

Takze, neni treba restartovat AutoCad, staci spustit
(gc)

Jinak, pokud zjistite jaka utilita to dela a mate od ni zdrojovy kod tak to muzete zkusit opravit tak, ze se bud promena pro selekci po pouziti nastavi jako nil a nebo ze se promenne se selekci nastavi pouze jako lokalni a budou zapomenuty po skonceni funkce.

PetrKonecny
23.10.2008, 12:31
On to nejspíš dělá prográmek, co jsem psal já... Zkusil bych nastavit proměnné jako lokální, jen nevím, jak se to dělá - pokud to teda není to, že mám vypsané proměnné za defun C:xxx ( / proměnná1 proměnná2) - v tom případě jsem asi nějakou zapoměl vymazat...

alfred
23.10.2008, 13:10
Presne tak, musi byt v
(defun c:xxx ( / lokalni promenne)
)
za lomitkem.

Mozna jste na neco zapomnel. Nepredpokladam, ze by jste v jedne rutine mel vice nez 128 vyberu.
Take by slo po pouziti vyberu nastavit hodnotu promenne na nil.

Ferdinand
23.10.2008, 13:14
To by nemělo vadit, když je uvedeno více proměnných za lomítkem než jsou ve skutečnosti v lispu použity. Myslím, že to nevadí ani opačně - pokud za lomítkem nejsou napsány žádné proměnné, i když jsou použity.
ED: ...A není tomu náhodou ve Vašem případě naopak? Že by byla použita jako globální proměnná (tj. uvedeno před lomítkem)?Ferdinand2008-10-23 13:17:17

PetrKonecny
23.10.2008, 13:35
Tak jsem si kontroloval prográmek a všechny proměnné mám napsané za lomítkem). Tak to asi bude dělat nějaká jiná - což je problém, páč aktivně používám velkou spoustu lispů - nedá se nějak zjistit které proměnné jsou ve výběru?

PetrKonecny
23.10.2008, 14:23
Tak mi o5 AutoCAD hlásí vyčerpání výběrů a (gc) bohužel vůbec nepomáhá.Když zadám (mem), tak mi to vypíše toto..."; GC calls: "104"; GC run time: "393" ms""\nDynamic memory segments statistic:\n""PgSz  Used  Free  FMCL  Segs  Type\n"  512    14   494   123     4  lisp stacks 256  6329   982   291    17  bytecode area4096   598     2     2    40  CONS memory  32  1278   705   351     1  ::new4096   104   346    14    30  DM Str4096   620    10     2    42  DMxx memory 128     4   507   506     1  bstack body"Segment size: "65536", total used: "135", free: "3

Vladimír Michl
23.10.2008, 17:08
Zřejmě nerušíte proměnné/symboly vašich výběrových množin (setq SS nil) nebo neuzavíráte a nerušíte vaše soubory otevřené z LISPu.
Viz: http://www.cadforum.cz/cadforum/qaID.asp?tip=3418
Pokud ale vzhledem k profesi používáte AutoCAD Civil (ne AutoCAD), může být příčina ještě v nějaké doplňkové nadstavbě.

alfred
23.10.2008, 18:05
To jsem nevěděl, že "selection sets" je i pro otevřené soubory.Když otevřu soubor, tak ho samozřejmě musím zavřít (close file)jinak zůstane otevřený a nemají na to lokální/globální proměnné nemají vliv. Ale selekce se chová jinak, nebo ne? Na tu by stačilo použít lokální proměnnou, pouze když bych měl v jenom lispu mnoho výběrů, tak bych na limit narazil a musel bych ho rušit tím (setq SS nil). Nebo se pletu?

Vladimír Michl
23.10.2008, 19:35
Výběrové množiny i soubory sdílejí stejnou sadu "slotů". Proměnné (popisovače) souborů je potřeba uzavřít a ještě uvolnit přiřazením na prázdnou hodnotu (nil) - pokud tedy nejsou uvolněny automaticky v rámci ukončení procedury.

PetrKonecny
07.11.2008, 09:53
Dá se podle nějakého výpisu (např: (mem) ) zjistit kde je chyba? Lispů používám velkou spoustu a všechny je procházet a kontrolovat je prakticky nemožný (už jen kvůli tomu, že jsem většinou nepsal já a moc se v nich nevyznávám).

Vladimír Michl
07.11.2008, 10:19
Kde je chyba asi nezjistíte, ale že se chyba "blíží" (nebo po jaké funkci se stav zhorší), to z výpisu poznáte. Třeba z (mem) - lispstack/Used.

PetrKonecny
07.11.2008, 10:26
OK. Děkuji. Zkusím se podívat jak se mění hodnota lisp stacks - used po jednotlivých lispech...

PetrKonecny
07.11.2008, 12:32
Tak to moc nechápu. Po startu ACADu 2007 mi (mem) vypíše toto:"; GC calls: "21"; GC run time: "32" ms""\nDynamic memory segments statistic:\n""PgSz  Used  Free  FMCL  Segs  Type\n"  512    51   203   105     2  lisp stacks 256  2201   718   291     9  bytecode area4096   230    10    10    16  CONS memory  32   840  1143  1108     1  ::new4096   165    90    10    17  DM Str4096   275    10    10    19  DMxx memory 128     4   507   506     1  bstack body"Segment size: "65536", total used: "65", free: "0a ve chvíli, kdy mi to píše přečerpání "exceeded maximum number of selection sets", tam mi (mem) vypíše toto:"; GC calls: "21"; GC run time: "32" ms""\nDynamic memory segments statistic:\n""PgSz  Used  Free  FMCL  Segs  Type\n" 512     8   119    86     1  lisp stacks 256  2178   741   291     9  bytecode area4096   231     9     9    16  CONS memory  32   840  1143  1108     1  ::new4096    80   175    14    17  DM Str4096   280     5     3    19  DMxx memory 128     4   507   506     1  bstack body"Segment size: "65536", total used: "64", free: "1Buď jsem buď úplně blbej, nebo nevím, ale nevidím v tom nic, co by mi říkalo, že jsem přečerpal "selection sets". Začínám mít pocit, že je to chyba AutoCADu 2007, páč si neuvědomuji, že by mi to někdy udělalo ve verzi ACAD 2006...

Vladimír Michl
07.11.2008, 13:19
Nevím - můžete ještě zkusit uvolnit globální symboly pomocí funkce SSCLEAN z tipu 3418.

PetrKonecny
07.11.2008, 13:26
To jsem už taky zkoušel. :-( Ale díky moc za pomoc. Zkusím zas testovat který lisp to dělá a uvidím...