Lisp i zmiana danych Layerów


2P

Rekomendowane odpowiedzi

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

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

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

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.