kruszynski

Moderatorzy
  • Postów

    1457
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    87

Treść opublikowana przez kruszynski

  1. Obie funkcje Obrót3d i Lustro3d powinny być dostępne w wersji kolejnej aktualizacji.
  2. Dziękuję za zgłoszenie przekazałem do ZWSOFT
  3. W najbliższej wersji jeszcze nie będzie to obsługiwane, ale widać że coś przy tym majstrują.
  4. jeszcze taki bonus: Jeśli ma Pan problem typu: może Pan sprawdzić poszczególne paramtery i ich wartości : (entget(car(entsel)))
  5. Poszczególne kody DXF może Pan znaleźć np tutaj: http://www.autodesk.com/techpubs/autocad/acad2000/dxf/ Błędna wartość w linii: (setq sel1 (ssget "X" (list (cons 0 TEXT)(cons 1 stary_napis)(cons 8 warstwa))))) to TEXT. Użyte w ten sposób znaczy że TEXT to zmienna. Powinno być "TEXT" (setq nazwa_napisu (ssname napis 1)) ; Informole liczą od 0 a nie od 1. prosze uważać. podmiana wartości tekstu powinna wyglądać tak: (setq nowy_napis2 (subst (cons 1 nowy_napis) (assoc 1 zmiana) zmiana))
  6. może to dlatego, że są dwie pętle (repeat ) W pierwszej przypisywana jest kolejno wartość do zmiennej lista_dxf. Druga pętla przechodzi tyle samo razy przez zmienną, której wartość nie jest nigdzie aktualizowana.
  7. 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ć
  8. No tak, i taki problem przekazałem do ZWSOFT po Pana wczorajszym zgłoszeniu.
  9. Potwierdzam, pobierając element z grupy otrzymujemy błąd.
  10. kruszynski

    ZWTraffic

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