2P Posted March 1, 2009 Report Share Posted March 1, 2009 Witam. Czy ktoś spotkał się może z poniższym problemem przy pisaniu programów w LISP: Mój program LISP modyfikuje dane wybranych, istniejących warstw. Konkretnie dla części robi Freez dla części Thaw. Z pewnych powodów zrealizowane to jest NIE za pomocą (command "_-layer" [....] a modyfikacji bazy danych poprzez (entmod layer) Na początek efekt był taki, że dla dużej ilości warstw operacja trwa dość długo (parę sekund). Z obserwacji wynika, że rysunek jest odświeżany po każdym (entmod) i do tego na pasku statusu, po lewej na dole za każdym (entmod) przewija się pasek postępu (jak np. przy SAVE). Mimo że nie byłem do końca zadowolony z takiego tempa wykonywania mojego programu, nawet to zaakceptowałem, a myślenie o ewentualnej zmianie algorytmu odłożyłem na potem. Jednak w pewnym momencie, bez jakiejś przyczyny program zaczął wykonywać się błyskawicznie!!! Pasek postępu już się nie pojawiał (nie mrugał) a przełączanie warstw nie trwało nawet ułamek sekundy. Dla testów ponownie wczytałem ten sam rysunek do ZWCADa i ponownie dzałało wszystko błyskawicznie. Kolejnym krokiem było ponowne uruchomienie ZWCADa i wczytanie testowego rysunku. I tu zdziwienie... znów powolne działanie programu... Moje podejrzenie jest takie, że zmiana paska postępu opóźnia mi wykonywanie programu. Może można go jakś wyłączyć z poziomu LISPa?? Inne podejrzenie to różne tryby dostępu do bazy danych rysunku przez (entmod)... Czy ktoś się spotkał z takim problemem? Może niekoniecznie dotyczącym modyfikacji warstw, ale ogólnie (entmod) *** Druga sprawa, którą traktuję jako jakiś wewnętrzny bug ZWCada - mało istotny na szczęscie: Przy zmianie parametrów warstw za pomocą "-layer" (color freez itp) dla grup warstw, czyli z wykorzystaniem przy podawaniu nazw "*" Część elementów leżących na części warstw nie zmienia koloru zgodnie z oczekiwaniem! Nie pomaga REGEN itp. A wystarczy zapisać i otworzyć rysunek ponownie i kolor elementów jest prawidłowy. Dla jasności elementy mają kolor ByLayer. I dodtyczy to tylko (małej) części elementów na danej warstwie, zawsze tych samych dla danego rysunku... W większości bloków, ale i Linii... Może to problem ZWCADa, a może np. mojej karty graficznej..... hmmmm Pozdrawiam Paweł Link to comment Share on other sites More sharing options...
2P Posted March 1, 2009 Author Report Share Posted March 1, 2009 Właśnie odkryłem zależność dotycząca problemu j.w. z (entmod) Mój program działa wolno jeśli po uruchomieniu ZWCada nie wyświetlę przynajmniej raz okienka ustawiania warstw. Wystarczy otworzyć okienko LAYER i go zamknąć, a zmiany parametrów warstw przez (entmod) śmigają błyskawicznie! Czyli to wygląda na bug ZWCada... :( Paweł Link to comment Share on other sites More sharing options...
dmatusz3 Posted March 2, 2009 Report Share Posted March 2, 2009 Witam, czy mógłby Pan przesłać na maila fragment kodu? Pomogłoby nam to bardzo. Pozdrawiam Link to comment Share on other sites More sharing options...
2P Posted March 3, 2009 Author Report Share Posted March 3, 2009 OK. Przyślę, fragment kodu, tylko wypreparuję istotę sprawy. Prowadziłem równolegle inne testy tego zagadnienia: 1. Przedstawiony błąd (nie uaktualnienie koloru części elementów po zmianie koloru warstwy) nie występuje w wersji 2008PL - działa tam to poprawnie. 2. W 2008PL występuje inny błąd nie występujący już w 2009: Jeżeli freez i lock warstwy wykonujemy za pomocą modyfikacji bazy danych (entmod) to wszystkie bloki z tej warstwy nie są ukrywane na ekranie (pozostają) ale nie można ich wskazać, nie usuwa ich regen itd. Dopiero ponowne wykorzystanie -layer powoduje, że wszystko wraca do normy. 3. Jeśli chodzi o powolne modyfikowanie ustawień warstw jeśli wcześniej nie zostało otwarte (przynajmniej raz) okno layer - to taka sama sytuacja występuje w wersji 2008PL. Pozdrawiam Paweł Pijanowski Link to comment Share on other sites More sharing options...
Recommended Posts