kruszynski

Moderatorzy
  • Postów

    1488
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    96

Treść opublikowana przez kruszynski

  1. Ja też się dziwiłem kiedy pierwszy raz się z tym spotkałem ;)
  2. 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ć
  3. No tak, i taki problem przekazałem do ZWSOFT po Pana wczorajszym zgłoszeniu.
  4. Sprawdziłem i działa.
  5. Potwierdzam, pobierając element z grupy otrzymujemy błąd.
  6. kruszynski

    ZWTraffic

    ok, zmienię to przy najbliższej aktualizacji
  7. 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.
  8. +. 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
  9. 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
  10. Wystarczy: (setq e (ssget "_+.:s" '((0 . "*POLYLINE")))) zamienić na: (setq e (ssget "_:s" '((0 . "*POLYLINE"))))
  11. 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
  12. 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.
  13. Rzeczywiście teraz wstawia się w różnych skalach. Postaram się ustalić co zrobić, żeby obiektowo wstawiało tak samo jak przez command
  14. 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?
  15. Witam Skrypt nie był przygotowywany ani testowany na programie AutoCad.
  16. 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.
  17. 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
  18. 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.
  19. 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ć .
  20. 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.
  21. 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?
  22. 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
  23. 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ć.
  24. 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ą"