kruszynski

Moderatorzy
  • Postów

    1482
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    94

Treść opublikowana przez kruszynski

  1. Ogólnie dobrze, ale trochę chaos zaczyna się wkradać. (setq nazwa (sslength zb1) i 0) Może przemawia przeze mnie obsesja ale bardzo ważne jest nadawanie zmiennym odpowiednich nazw . Nazwy mają być znaczące a nie mylące. Bardzo dobrze jest to wytłumaczone w książce "Czysty kod. Podręcznik dobrego programisty" Autor: Robert C. Martin . Cały niewielki rozdział jest temu poświęcony. sslength zwraca ilość i nazywanie tego "nazwa" to zły pomysł warto też stosować zmienne lokalne. np (defun C:raport ( / nazwa_warstwy zb1 nazwa i ) W wielu miejscach w programie może pojawić się zmienna "i", jeśli mamy funkcję wewnątrz funkcji, w obu wykorzystujemy i jako licznik pętli to funkcja wewnętrzna nadpisze stan zmiennej z funkcji zewnętrznej i takiego błędu można szukać godzinami. (setq wsk (ssname zb1 i) lista_dxf (entget wsk)) Moim zdaniem bardziej czytelne byłoby (setq lista_dxf (entget (ssname zb1 i))) (princ "\n") (princ "Liczba elementow w zbiorze wyboru: ") (princ (sslength zb1)) (princ "\n") można uprościć do: (princ (strcat "\nLiczba elementow w zbiorze wyboru: " (itoa (sslength zb1) ) "\n" ) Teraz najważniejsze : (setq lista_dxf (entget (ssname zb1 i))) tutaj mamy zapisany cały element. (setq EntName (cdr (assoc 0 lista_dxf ) ) ) daje nam nazwę elementu np INSERT Trzeba wykorzystać cond i rozdzielić działanie programu na odpowiednie dla każdego typu obiektów. (cond ((= EntName "INSERT") (progn (print "blok") (print (cdr (assoc 2 lista_dxf ) ) ) ; nazwa bloku )) ((or(= EntName "LIGHTWEIGHTPOLYLINE")(= EntName "POLYLINE")) (progn (print "polilinia ") )) ((= EntName "CIRCLE")(progn (print "okrąg") ) ) ((= EntName "ARC") (progn (print "łuk") )) ((= EntName "LINE") (progn (print "linia") )) (t (print "Wybrałeś coś innego") ) ) odczytanie poszczególnych parametrów typu punkty początku, końca, środek itp to tylko kwestia odczytania odpowiedniej pozycji z list_dxf. (punkty to najczęściej kod: 10) pełną listę kodów można bez problemu znaleźć w Internecie. Można też zamienić element jako ENAME na VLA-OBJECT (setq element (vlax-ename->vla-object (ssname zb1 i) )) Wtedy to już pełna kultura obiektowości. Nazwę bloku możemy pobrać tak: (vlax-get-property element 'Name ) środek okręgu: (vlax-get-property element 'Center ) albo nawet tak: (vla-get-Center element ) tylko trzeba pamiętać, że punkty są typu variant, czyli trzeba je zamienić na czytelną postać zanim się je wyświetli: (vlax-safearray->list (vlax-variant-value (vlax-get-property element 'Center ) ) ) Powodzenia. W razie dalszych trudności proszę pisać
  2. No tak, i taki problem przekazałem do ZWSOFT po Pana wczorajszym zgłoszeniu.
  3. Sprawdziłem i działa.
  4. Potwierdzam, pobierając element z grupy otrzymujemy błąd.
  5. kruszynski

    ZWTraffic

    ok, zmienię to przy najbliższej aktualizacji
  6. kruszynski

    ZWTraffic

    Znalazłem w rozporządzeniu jakie wymiary powinna mieć tablica znaku E-4 zawierająca 2 wiersze. Natomiast w Pana przykładzie są 4 wiersze. Może Pan wskazać gdzie znaleźć wytyczne jakie wymiary powinna mieć taka tablica? Problem ze znakiem P-13 wynika z problemu w samym ZWCADzie. odpowiednie zgłoszenie przesłałem już do ZWSOFT.
  7. +. oznacza wybór przez wskazanie punktu ( nie przez okno) analogicznie jakby ustawić zmienną systemową PICKAUTO na 0. :S pozwala na wybór tylko jednego elementu. Nie wiem czy jest to opisane gdzieś po polsku, ale dokumentację w języku angielskim może Pan znaleźć np tutaj: http://www.lee-mac.com/ssget.html
  8. kruszynski

    ZWTraffic

    Witam Poblem z plinegen został zgłoszony do ZWSOFT już jakiś czas temu, postaram się skłonić twórców programu, żeby podnieśli priorytet tego zgłoszenia. Tematy znaków E-4 i P-13 postaram się rozwiązać najszybciej jak się da. Pozdrawiam
  9. Wystarczy: (setq e (ssget "_+.:s" '((0 . "*POLYLINE")))) zamienić na: (setq e (ssget "_:s" '((0 . "*POLYLINE"))))
  10. kruszynski

    ZWTraffic

    Witam Ta wersja powstała na vernum 2016.09.30 więc powinno działać poprawnie. Być może problem wynika z samej ścieżki po której sprawdzał Pan przejezdność. Czy mógłby Pan przesłać plik z tą ścieżką na adres pomoc@dobrycad.pl postaram się ustalić z czego wynika problem. Pozdrawiam
  11. Witam Funkcjonalność API jest w każdej wersji coraz bardziej dopracowane, niestety nie mam deklaracji ze strony producenta kiedy uda się osiągnąć 100 % oczekiwanej funkcjonalności. Design Center będzie dostępny w ZWCAD 2017, ale będziemy musieli na to jeszcze poczekać, w najbliższej wersji raczej jeszcze tego nie będzie. W temacie brakujących funkcji i możliwości tworzenia bloków dynamicznych niestety na chwile obecną nie znam żadnych alternatywnych rozwiązań. Pozdrawiam.
  12. Rzeczywiście teraz wstawia się w różnych skalach. Postaram się ustalić co zrobić, żeby obiektowo wstawiało tak samo jak przez command
  13. Witam Sprawdzam ten temat i nie udaje mi się powtórzyć opisanego przez Pana przypadku. Wstawiając zarówno przez command jak i przez vla-insertblock wynik mam taki sam. Jednostki rysunku do którego wstawiam bloki to metry lub cale . Może jeszcze coś innego mamy inaczej. Proszę przesłać informację jaki ma Pan vernum ZWCADa? jeśli to możliwe proszę też przykładowy projekt, do którego wstawia Pan blok. Czy blok jest już zdefiniowany w projekcie? czy wstawia go Pan bezpośrednio z zewnętrznego pliku?
  14. Witam Skrypt nie był przygotowywany ani testowany na programie AutoCad.
  15. kruszynski

    ZWTraffic

    Dzień dobry 1. Na temat linii po łuku chyba musimy jeszcze porozmawiać, u mnie to działa tak jak się spodziewam. 2. OK, dodam, taką możliwość 3. Czy pojawia się jakiś komunikat błędu? czy po zrestartowaniu programu dalej występuje problem? 4. Jako rozwiązanie doraźne może Pan zmienić w szablonie. A w kolejnej aktualizacji zwrócę na to uwagę 5. OK, dodam taką możliwość W temacie przedłużenia testowania wyślę Panu więcej informacji w wiadomości prywatnej.
  16. kruszynski

    ZWTraffic

    Witam Wprowadziłem kilka zmian w programie. tym razem nie ma nowości funkcjonalnych a jedynie poprawki błędów i usprawnienia zaproponowane przez Użytkowników. między innymi są tu wskazane na forum: - Podgląd opisu pod wskaźnikiem , przy znakach poziomych Enter przesuwa w złe miejsce - Znaki, nie są wstawiane i pojawia się komunikat o braku pliku, kiedy w oknie zaznaczamy jako szare. - Problem z rysowaniem linii krawędziowych i segregacyjnych po łuku - długość oznakowania P-1e nie jest aktualizowana jeśli zaznaczymy oś a nie opis - Znaki poziome (osie) przyjmują kolor wybranej osi, powinny jak warstwa. - usunąć atrybut znaku D-15 Zapraszam do testowania i przekazywania pomysłów zmian i usprawnień Linki pozostaną takie same jak powyżej. Za około 2 godziny będą podmienione Pozdrawiam
  17. kruszynski

    ZWTraffic

    Dziękuję za przekazane informacje, postaram się wprowadzić zmiany najszybciej, jak tylko mi się uda. W sprawie problemu ze wstawianiem znaków D-6 D-15 na przesłanym przez Pana przykładzie znaki się wstawiają. Być może mógłbym połączyć się z Pana komputerem i zdiagnozować problem. w mailu wysłałem do Pana link do programu pozwalającego na takie połączenie.
  18. Wychodzi na to, że nie działa funkcja action_tile . (action_tile "accept" "(done_dialog ) (setq zamkniecie 1) ") Wykonuje (done_dialog), ale już zamkniecie zawsze jest nil. Z tym można sobie poradzić: (action_tile "accept" "(done_dialog 1 )") ... (setq zamkniecie (start_dialog) ) Kolejna sprawa to przypisanie działania do edit_box (action_tile % (strcat "(setq " % " $value)")) nie przypisuje wartości do zmiennej To już poważniejszy temat. można się ratować odczytywaniem zmiennych z kontrolek analogicznie , z użyciem: (get_tile % ) ale zdaję sobie sprawę, że to byłoby pracochłonne. Zgłoszę do ZWSOFT co udało mi się ustalić .
  19. Myślę, że to kwestia ścieżki do pliku DCL. czy zmienił Pan ścieżkę w linii 8 na taką, w jakiej u Pana jest zapisany plik? To chyba dlatego że nie zadziałało set_tile a dalej nie wykonało się start_dialog. Proszę dla testu zakomentować linijkę (set_tile % (eval (read %))) Nie przypisze wartości domyślnej, ale sprawdzimy czy reszta zadziała.
  20. Na podstawie przesłanego przez Pan przykładu nie mogę potwierdzić że edit_box nie działa. Kiedy chce Pan wpisać coś do pola, kursor pojawia się w polu? Okno jest aktywne? można wyłączyć okno ? Czy w pasku poleceń pojawiają się jakieś komunikaty?
  21. Wydaje mi się, że temat jest głębszy. W załączniku mój przykład najprostszego okna, zawierającego 2 kontrolki typu "edit_box". Moim zdaniem to działa poprawnie. Natomiast próbując uruchomić Pana przykład, wyświetla się okno, kontrolki są puste, a w pasku poleceń komunikat błędu: Error: incorrect type - nil happened in: #<Subr SET_TILE> Nie da się nic wpisać w kontrolki ani zamknąć okna. Czy takie objawy występują też u Pana? czy jeszcze coś innego? #<Subr SET_TILE> naprowadza, na to, że błąd jest przy wprowadzaniu wartości do kontrolki edit_box a komunikat: "incorrect type - nil" świadczy że wprowadzana wartość jest "nil". tak jakby zmienna nie miała przypisanej wartości. Tylko jak to możliwe skoro linijkę wcześniej ustawia Pan wartość zmiennej ? Postaram się dowiedzieć czegoś więcej, tylko proszę o potwierdzenie że mówimy o tym samym problemie. TestDCL.ZIP
  22. Palety narzędzi mają pojawić się w wersji , która zostanie opublikowana w tym miesiącu, albo na początku przyszłego. Na Centrum Projektanta przyjdzie nam poczekać dłużej, niestety na chwilę obecną nie mam deklaracji kiedy uda się to wprowadzić.
  23. OK, teraz widzę różnicę . Przekażę temat do ZWSOFT. Proszę mnie poprawić jeśli się mylę. Do wprowadzania wartości odpowiednią "kontrolką" jest : edit_box Nie ma ona parametru, który zapewniałby ograniczenie wprowadzane wartości tylko do liczb. Czy może jest inaczej? Jak mogę sprawdzić i udowodnić twórcom ZWCADa że "nie działają"
  24. To co zgłaszał Pan wcześniej że okna DCL wieszają program działa, sprawdziłem też temat zawartości list rozwijalnych i też wyświetlają się poprawnie. Proszę podać więcej szczegółów czego jeszcze brakuje. Właśnie to sprawdziłem i spotkała mnie miła niespodzianka. na tym przykładzie jaki sprawdziłem, bloki dynamiczne są obsługiwane, co prawda nie ma jeszcze edycji, ale działa to tak, jak było wersji +2015. Sprawdziłem na takim przykładzie: Zapisuję aktualny widok w zmiennych: (setq wyswidoku (getvar "VIEWSIZE") ) (setq widok (trans (getpoint ) 1 0 ) ) zmieniam widok przez zwykłe funkcje ZWCADa, następnie chce go przywrócić: (command "_.zoom" "_c" (trans widok 0 1) wyswidoku) Nie zgłosiło żadnego komunikatu błędu, i widok ustawiło tak, jak przed zmianami. Żeby sprawdzić działanie funkcji trans na początku zmieniłem układ współrzędnych? Może jeszcze coś pominąłem, ale moim zdaniem to działa poprawnie.
  25. kruszynski

    ZWTraffic

    Witam Próbowałem wstawiać znaki przy podłożonych XRefach i udało się bez problemu. Czy mógłby Pan podesłać przykładowy projekt wraz z podłożonymi XRefami na mail (pomoc@dobrycad.pl) żebym mógł sprawdzić to na tym samym przykładzie? Główna zmiana jaką chciałem wprowadzić to taka, żeby widoczne były podglądy słupków, opisów przy ich wstawianiu. Czy to więcej parametrów? Wcześniej było tak, że wskazywaliśmy 2 punkty równoległe do osi drogi , punkt wstawienia znaku i prowadziliśmy strzałkę z opisem. Teraz jest tak, że wskazujemy najpierw miejsce wstawienia znaku, i możemy nim "pokręcić" żeby był równolegle do drogi mając cały czas jego podgląd a następnie prowadzimy strzałkę z opisem Możemy też wstawiać znaki wzdłuż trasy z parametrem odległości . Być może w znakach innych niż te z biblioteki znaków pionowych , np w strzałkach może więcej trzeba klikać, ale też daje nam to dodatkowe możliwości wprowadzania strzałek w szyku co zadaną odległość. Z opisami oznakowania poziomego jest tak, że opisy wstawiają się w "dziwnych miejscach" jeśli zakończymy działanie funkcji przez Enter. To taki "efekt uboczny" uzyskany przy okazji tego, że chciałem dodać podgląd opisu przy jego wstawianiu, może Pan spróbować zakończyć działanie funkcji klawiszem [ESC]. Wtedy opis powinien wstawić się w ostatnim wskazanym punkcie. Aktualizacja opisów znaków poziomych ma poprosić o wskazanie bloku opisowego i zmieni powierzchnię i długość jeśli np linia została przycięta albo wydłużona. Jak to jest w Pana przypadku? wyświetla komunikat typu "nieznane polecenie"? czy jak powinienem rozumieć "nie bardzo chce się odpalić"? Największym wyzwaniem dla mnie była funkcjonalność malowania powierzchni wyłączonych z ruchu, czy sprawdzał Pan jak to działa?