LSP se sekne na příkazu LIMITS
Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: Mechanical, Electrical
Popis fóra: Otázky ke strojařským verzím AutoCADu - AutoCAD Mechanical, AutoCAD Electrical, ECSCAD a Mechanical Desktop
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=22852
Datum vytištění: 18.čer.2026 v 05:29
Téma: LSP se sekne na příkazu LIMITS
Odeslal: Kubeczka
Předmět: LSP se sekne na příkazu LIMITS
Datum odeslání: 07.čer.2016 v 14:27
|
Zdravím. Mám hodně programů v LISPu, které používají příkaz LIMITS. Na některých CAD stanicích ať už s Windows 7 nebo 10 tyto programy havarují právě na tomto příkazu. Tyto LISPy už chodí spolehlivě od verze 2002 do 2014 (2015 jsme přeskočili). Zkusil jsem smazat uživatelům jejich profily a znova je vytvořit - zafungovalo to, ale jen dočasně. Po několika dnech se problém objevil znova. Už mě nic nenapadá. Prosím, pomozte. Děkuji.
|
Odpovědi:
Odeslal: Vladimír Michl
Datum odeslání: 07.čer.2016 v 16:31
Co konkrétně to hlásí? Jakým způsoben je příkaz volán? Pošlete okolní kus kódu.
------------- Vladimír Michl (moderátor) ARKANCE CZ - https://arkance.world - arkance.world (podpora viz emea.support.arkance.world)
|
Odeslal: Kubeczka
Datum odeslání: 08.čer.2016 v 08:16
|
Přikládám koncovou sekci programu: ;******************************************** (setq nfile (getvar "DWGNAME")) (setq cesta (getvar "DWGPREFIX")) (setq scrfile (strcat cesta "DWG-PDF.scr")) (setq dlns (strlen nfile)) (setq nfile (substr nfile 1 (- dlns 4))) (setq zn (chr 34)) (PrintFileName) (if (= (findfile scrfile) nil) (setq f (open scrfile "w")) (setq f (open scrfile "a")) ) (write-line "-PLOT" f) (write-line "_Y" f) ;Detailní konfigurace vykreslování? [Ano/Ne] <Ne>: _Y (write-line "Model" f) ;Zadejte název rozvržení nebo [?] <Model>: Model (write-line "DWG-PDF.pc3" f) ;Zadejte název výstupního zařízení nebo [?] <DWG-PDF.pc3>: (write-line FormPDF f) ;Zadejte velikost papíru nebo [?] <TZA1 (594.00 x 841.00 MM)>: (write-line "_M" f) ;Zadejte rozměry papíru [Palce/Milimetry] <Milimetry>: (write-line natoc f) ;Zadejte orientaci výkresu [na Výšku/na šířKu] <šířKu>: _L (write-line "_N" f) ;Kreslit vzhůru nohama? [Ano/Ne] <Ne>: _N (write-line "_W" f) ;Zadejte vykreslovanou plochu [Displej/Maximálně/meZe/Pohled/Okno] <meZe>: _W (write-line (strcat (rtos (car pt1)) "," (rtos (cadr pt1))) f) (write-line (strcat (rtos (car pt2)) "," (rtos (cadr pt2))) f) (write-line "_F" f) ;Zadejte měřítko vykreslování (Vykreslené Pixely=Kreslící jednotky) nebo [Maximálně] <Maximálně>: _F (write-line "_C" f) ;Zadejte odsazení vykreslování (x,y) nebo [Centrovat] <Centrovat>: _C (write-line "_Y" f) ;Vykreslit se styly vykreslování? [Ano/Ne] <Ano>: _Y (write-line "TZ_SV_BTk_Ploter.ctb" f) ;Zadejte název tabulky stylu vykreslování nebo [?] (zadejte . pro žádnou) <TZ_SV_BTk_TIFF.ctb>: (write-line "_Y" f) ;Vykreslovat s tloušťkou čar? [Ano/Ne] <Ano>: _Y (write-line "_W" f) ;Zadejte nastavení stínovaného výkresu [dle Zobrazení/Drátový/Skrytý/Rendering] <Drátový>: _W (write-line nfile f) (write-line "_N" f) ;Uložit změny do nastavení stránky [Ano/Ne]? <N> _Y (write-line "_Y" f) ;Pokračovat s vykreslováním [Ano/Ne] <A>: _Y (write-line "_Delay" f) (write-line "1000" f) (close f) (if (= i (- dl 1)) (progn (setq f (open scrfile "a")) (write-line "(ukonceni)" f) (close f) ) (setq i (1+ i)) ) ) ) ) (setq pt1max (list xpt1max ypt1max 0.0)) (setq pt2max (list xpt2max ypt2max 0.0)) (command "_LIMITS" pt1max pt2max) (command "_ZOOM" "_W" pt1max pt2max) ;******************************************** ; Spuštění tisku ;******************************************** (setvar "FILEDIA" 0) (command "_SCRIPT" scrfile) ;*************************************************************************** ; Ukončení ;*************************************************************************** (defun ukonceni () (setq prikaz (strcat "del " (chr 34) scrfile (chr 34))) (command "_SHELL" prikaz) (command "_REGENALL") (setvar "CMDDIA" 1) (setvar "FILEDIA" 1) (setvar "CMDECHO" 1) (setvar "ATTDIA" 1) (setvar "OSMODE" 255) (princ) ) ;*************************************************************************** ) Program si nejprve ošahá modelový prostor, najde v něm bloky rámečků (musí být stejné - více listů jednoho výkresu) a zjistí maximální rozměry, tedy levý dolní a pravý horní bod. Pak vygeneruje skriptovací soubor s posloupností příkazů _-plot a následně jej spustí. Po dokončení pak pomocí příkazu SHELL skriptovací soubor vymaže. Program zhavaruje na příkazu LIMITS, kde očekává vstupní body. Tedy buď čeká na příkazu LIMITS nebo skript projede celý i LISP, ale v Podrobnostech publikování a vykreslování vypíše hlášku: Chyby nevykresleny - Neplatné okno. Problém je v tom, že skript je vygenerován správně, včetně správně zadaných souřadnic rohů vykreslení. Aby toho nebylo málo, tak se k tomu druží problém s textovým oknem, které sice po zmáčknutí F2 se aktivuje, ale okamžitě zmizí za oknem AutoCADu, takže je nemožné se k němu dostat. Jedině přes druhý monitor nebo zmenšením oken.
|
Odeslal: Kubeczka
Datum odeslání: 08.čer.2016 v 09:13
|
Jen pro pořádek: AutoCAD Mechanical 2016 SP1 Windows 7 Windows 10 jen na některých CAD stanicích (na větší polovině to chodí)
|
Odeslal: Vladimír Michl
Datum odeslání: 08.čer.2016 v 09:13
Asi bude záležet jakou hodnotu mají symboly xpt1max, atd. - možná si je těsně před tím LIMITS vypište (PRINT). Ale hlavně nechápu, k čemu tam ten LIMITS (a i ten ZOOM) je - následné vykreslení se stejně děje na volbu Okno (s jinými body pt1 a pt2).
------------- Vladimír Michl (moderátor) ARKANCE CZ - https://arkance.world - arkance.world (podpora viz emea.support.arkance.world)
|
Odeslal: Vladimír Michl
Datum odeslání: 08.čer.2016 v 09:40
|
F2 ale standardně není na textové okno - viz tip: http://www.cadforum.cz/cadforum/klavesa-f2-mi-neotevre-textove-okno-autocadu-tip10949 - http://www.cadforum.cz/cadforum/klavesa-f2-mi-neotevre-textove-okno-autocadu-tip10949
------------- Vladimír Michl (moderátor) ARKANCE CZ - https://arkance.world - arkance.world (podpora viz emea.support.arkance.world)
|
Odeslal: Kubeczka
Datum odeslání: 08.čer.2016 v 10:19
|
LIMITS je tam od dob, kdy to někteří zákazníci vysloveně požadovali a ZOOM jsem přidal pro kontrolu výkresu. Není to úplně zbytečné. Hodněkrát to upozornilo na chyby konstruktérů ve výkresech.
|
Odeslal: Kubeczka
Datum odeslání: 08.čer.2016 v 10:24
|
Hodnoty xpt1max atd. jsem kontroloval - jsou v pořádku a také jsou správně vloženy do skriptu. Vzpomínám si, že když začaly tyhle problémy, tak tyto hodnoty byly nilové. Přitom ve všech nižších verzích AutoCADu tyto programy pracovaly spolehlivě. Neměli by v Autodesku prověřit proměnné, jestli nedochází k přepisu?
|
Odeslal: Vladimír Michl
Datum odeslání: 08.čer.2016 v 10:57
To ale nejsou proměnné Autodesku, nýbrž vaše - pokud mají hodnotu nil, program je zřejmě někde nenastavuje správně (to v poskytnuté části kódu není). LIMITS a ZOOM jsou zde zbytečné pro účely vykreslování - pokud ale program dělá ještě něco jiného, pak je tam nechte.
------------- Vladimír Michl (moderátor) ARKANCE CZ - https://arkance.world - arkance.world (podpora viz emea.support.arkance.world)
|
Odeslal: Kubeczka
Datum odeslání: 08.čer.2016 v 11:38
|
Neměl jsem na mysli svoje proměnné. Na některých stanicích tento program nenastavil moje proměnné a zasekl se pak zákonitě na příkazu LIMITS, na stejných dnes proměnné nastavil, zapsal do skriptu, ale ve výsledku vyhodil chybu v Podrobnostech. A na větší polovině CAD stanic funguje. Chcete říct, že když mi programy běží spolehlivě 10 let a pak najednou ve verzi 2016 havarují za stejných podmínek (rozuměj stejné výkresy), tak je to moje chyba? Napište mi, prosím, v čem. Rád bych ten problém vyřešil. Děkuji.
|
Odeslal: Kubeczka
Datum odeslání: 08.čer.2016 v 12:35
|
Provedl jsem jeden test: Body limity jsou vypočteny a zadány správně, ale příkaz LIMITS zahlásil - Neplatné meze, chyba, funkce zrušena. Příkaz LIMITS přesto chce zadat levý dolní roh a nabízí souřadnice přesně vypočítané programem, po odklepnutí chce zadat pravý horní roh a nabízí souřadnice přesně vypočítané programem, pak úspěšně skončí. Když však chci na příkazový řádek zadat: (command "_LIMITS" pt1max pt2max), tak zahlásí chybu (viz. výše). Následně vložím řádek: (command "_ZOOM" "_W" pt1max pt2max), který úspěšně provede. Tak, a teď "babo" raď. Prošel jsem dalších pár stanic, ale u nich to funguje dobře.
|
Odeslal: Kubeczka
Datum odeslání: 08.čer.2016 v 12:43
|
Další test: Vyhodil jsem z programu řádek s příkazem LIMITS a spustil ho. Program proběhl, ale v Podrobnostech publikování a vykreslování vypíše hlášku: Chyby nevykresleny - Neplatné okno. Přičemž souřadnice jsou vypočteny správně.
|
Odeslal: Kubeczka
Datum odeslání: 08.čer.2016 v 13:31
|
Na jedné stanici jeden den to fungovalo dobře, na druhý už nikoliv. Co je v AutoCADu Mechanical 2016 nestabilního? A nebo nestíhá vykonávat řádky LISPu interpreterem? Zkusím dát za každý řádek příkaz DELAY. Pane Michl, můžete zareagovat? Děkuji
|
Odeslal: Vladimír Michl
Datum odeslání: 08.čer.2016 v 14:02
|
Pošlete asi nejlépe plný program na Helpdesk - z kusů kódu se nedá poznat kde se může "nepovést" nastavení některé z oněch uživatelských proměnných - programový kód z nějakého důvodu používá různé proměnné na určení rohů okna. Příkaz LIMITS (a asi tedy i ten PLOT W) nejspíše selže proto, že ony uživatelské proměnné určující okno mají v ten okamžik nesprávně nastavenou hodnotu.
------------- Vladimír Michl (moderátor) ARKANCE CZ - https://arkance.world - arkance.world (podpora viz emea.support.arkance.world)
|
Odeslal: Kubeczka
Datum odeslání: 09.čer.2016 v 07:40
|
Bohužel, nejsem zákazníkem CAD Studia, proto se nemohu přihlásit do Helpdesku. Testoval jsem program ve VisualLISPu krokováním a sledováním proměnných.Vše proběhlo naprosto korektně, skriptovací soubor byl korektně vytvořen, uzavřen a pak spuštěn. Výkres obsahuje dva listy - u prvního listu se objevilo okénko s průběhem operace, u druhého už ne. Skončilo to hlášením v Podrobnostech publikování a vykreslování: Chyby nevykresleny - Neplatné okno. Přičemž souřadnice byly naprosto přesné atd. Přikládám výpis skriptu: -PLOT _Y Model DWG-PDF.pc3 TZA0 (1189.00 x 841.00 MM) _M _L _N _W 5945,0 11890,4205 _F _C _Y TZ_SV_BTk_Ploter.ctb _Y _W "K:\DATA_ALL\NohalP\2016\Danieli-podvesny manipulator\Manipulator-1504\04-Mezitraverza\91600009__.02.pdf" _N _Y _Delay 1000 -PLOT _Y Model DWG-PDF.pc3 TZA0 (1189.00 x 841.00 MM) _M _L _N _W 0,0 5945,4205 _F _C _Y TZ_SV_BTk_Ploter.ctb _Y _W "K:\DATA_ALL\NohalP\2016\Danieli-podvesny manipulator\Manipulator-1504\04-Mezitraverza\91600009__.01.pdf" _N _Y _Delay 1000 (ukonceni)
|
Odeslal: Kubeczka
Datum odeslání: 09.čer.2016 v 07:49
|
Proč to funguje na 8 z 10 stanic, přičemž všechny mají stejné nastavení, stejný profil uživatele, stejný profil v AutoCADu Mechanical, stejné nastavení tiskáren, jak systémových tak AutoCADových, pracovní adresáře i cesty k podpůrným souborům jsou nastaveny stejně, spouští stejné LISPy, všichni používají stejnou šablonu se stejně nastavenými systémovými proměnnými AutoCADu Mechanical atd.? Ladění proběhlo úspěšně až na konečný tisk. Proč to fungovalo bezmála 10 let a teď najednou ne? Podle staré moudrosti (nejen IT) je 99,9% chyb mezi klávesnicí a židlí. Jen najít tu pravou. Stále méně jsem přesvědčen, že je to ta moje.
|
Odeslal: Vladimír Michl
Datum odeslání: 09.čer.2016 v 08:05
Těch důvodů selhání může být celá řada (namátkou třeba nastavení LIMCHECK nebo priority uchopování). Bez konkrétního výkresu a celého kódu to asi neodhalíme (Helpdesk je i pro "cizí" zákazníky - jako placená služba).
------------- Vladimír Michl (moderátor) ARKANCE CZ - https://arkance.world - arkance.world (podpora viz emea.support.arkance.world)
|
Odeslal: Kubeczka
Datum odeslání: 09.čer.2016 v 08:14
|
Po dobu běhu programu je uchopování vypnuto - OSMODE=0
|
Odeslal: Kubeczka
Datum odeslání: 16.čer.2016 v 07:25
|
Vypadá to, že se do AutoCADu přihrávají nezávisle nějaké pluginy, ale jestli ony způsobují havárie při odesílání dat na tiskárny, to nedokážu říct. Na radu kolegů jsem porovnal extrahované registry s korektním nastavením a špatným.
|
|