2P Opublikowano 1 Marca 2009 Zgłoś Udostępnij Opublikowano 1 Marca 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ł Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
2P Opublikowano 1 Marca 2009 Autor Zgłoś Udostępnij Opublikowano 1 Marca 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ł Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
dmatusz3 Opublikowano 2 Marca 2009 Zgłoś Udostępnij Opublikowano 2 Marca 2009 Witam, czy mógłby Pan przesłać na maila fragment kodu? Pomogłoby nam to bardzo. Pozdrawiam Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
2P Opublikowano 3 Marca 2009 Autor Zgłoś Udostępnij Opublikowano 3 Marca 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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi