kruszynski

Moderatorzy
  • Postów

    1474
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    93

Treść opublikowana przez kruszynski

  1. Może zapis w formacie MNU zamiast XML pomoże
  2. W pasku stanu na przycisku "DYN".
  3. Przepraszam, mój błąd, pisałem to z pamięci. ssetObj.Select mode, , , Ftype, Fdata Tak powinno być dobrze. Różnica jest tylko w 2 przecinkach, ale bez nich kompilator traktuje zmienne filtrów jako pukty.
  4. ssetObj.SelectOnScreen Ftype, Fdata proszę zamienić na : ssetObj.Select zcSelectionSetAll Ftype, Fdata jeśli to nie zadziała, to problem może być w ustawieniach fitrów, wtedy nie będzie wyświetlało błędu, ale może nic nie selekcjonować np jeśli filtry ustawią selekcje wszystkich czerwonych linii a w rysunku będą tylko niebieskie
  5. kruszynski

    LISPY

    Nabrałem wątpliwości co do tego, że polilinia musi być zamknięta, być może niezamknięta też może być. Nie znam zmiennej w której zapisywane są długości linii, łuków i innych typów obiektów. Szukałem alternatywnych rozwiązań, i jedyne co znalazłem to obliczanie długosci dla każdego typu obiektu. W przypadku linii to jest dośc proste wystarczy użyć funkcji (distance) i jako parametry podać współrzędne punktów początku i końca, które odczytać można z linii (DXF kod 10 i 11 jeśli sie nie mylę) dla łuków to jest troche bardziej skomplikowane. Cała procedura jest opisana na forum www.cad.pl, np tu: http://www.cad.pl/wwwboard/about68297.html&highlight=liczlin+lsp
  6. kruszynski

    LISPY

    Procedura "chodzi" (oprócz Attedit) tylko robi coś innego niż Pan zamierza nią zrobić. Wartość zmiennej PERIMETER nie zmienia się, bo funkcjia "lengthen" jej nie zmienia Polecam lekturę helpa do zmiennej PERIMETER. Jeśli udało się Panu użyć tej procedury, to przed zakomentowaniem linijki "(command "list" pause)". Zmienna systemowa "Perimeter" określa obwód ostatnio zmierzonego obiektu. Jej wartość zmienia się tylko w wypadku użycia funkcji "LIST" i "AREA", a wskazany obiekt musi być zamkniętą polilinią, lub okręgiem, w przypadku innych niezamkniętych obiektów, ta zmienna nie zmieni wartości.
  7. W czasie instalacji użytkownik zostaje zapytany, czy zainstalować aliasy. Jeśli zaznaczy że tak, to zostatną zmienione.
  8. Dziękuję za uwagi. Poprawimy to w kolejnej wersji
  9. kruszynski

    kody DXF

    W DXF'ach nie jestem biegły, ale jeśli miałbym używać warstw z lispa, szukałbym sposobu na wykorzystanie funkcji tblnext, (tblnext "layer" T) gdzie: - tblnext używane w pętli pobiera kolejne definicje z kolekcji, - kolekcja to nazwa kolekcji do przeszukiwania, - ostatni parametr jest opcjonalny i powoduje "przesunięcie wskaźnika na początek" dziwnie to brzmi, ale chodzi o to, że na początku należy wywołać funkcję z tym parametrem (wtedy odczytana zostanie pierwsza wartość), a przy kolejnych wywołaniach nie mozna tego parametru ustawiać, ponieważ zawsze czytałoby pierwszy element. Ta funkcja zwraca informację w postaci ((0 . "LAYER") (2 . "0") (70 . 0) (62 . 7) (6 . "CONTINUOUS")) lub nil, na końcu Dodam jeszcze, że kolekcje dostępne, to: "LAYER", "LTYPE", "VIEW", "STYLE", "BLOCK", "UCS", "APPID", "DIMSTYLE", and "VPORT".
  10. Może uda się po zainstalowaniu bibliotek z załącznika vba6en.zip
  11. Już mam czcionke. Jak w ZWCADzie stworzyłem sobie text i do to jego stylu tekstu wpisałem tą czcionkę, to zadziałało. A czy Pan tą czcionkę kopiuje do katalogu Fonts ZWCADa? czy Windowsa? powinno być do ZWCADa.
  12. A gdzie ten załącznik?
  13. kruszynski

    kody DXF

    Kody DXF są trochę bardziej skomplikowane. Ich znaczenie nie zależy tylko od numerum ale jeszcze od typu obiektu jakiego dotyczy. Np 41 to dla atrybutów skala X, a dla kreskowań to jest skala kreskowania, dla strzałki to szerokość tekstu opisu, dla polilini to szerokosc końca określonego segmentu. A dla stylu wymiaru wielkość strzałki. Więc do wyjaśnienia jaki kod ma jakie znaczenie, proszę o sprecyzowanie jakiego typu obiektu to dotyczy. Jeśli sie nie mylę, to kąt raczej nie będzie podany w entycji linii, ( nie mam opisanej takiej pozycji w helpie).
  14. Czy mógłby Pan wysłać nam tą czcionkę? Powinno wystarczyć skopiowanie czcionki do katalogu Fonts, ale jeśli nie działa, postaramy się sprawdzić przyczynę.
  15. kruszynski

    Polecenie

    -insert nnnn \x y; gdzie: nnnn - nazwa bloku x - skala x y - skala y punkt wstawienia i kąt obrotu określa użytkownik
  16. Witam Z ustawieniem kamery w punkcie można sobie poradzić przez zapisanie widoków. Robi sie to przez polecenie: "view" następnie opcja "S" i wpisanie nazwy identyfikującej widok. Można w ten sposób zdefiniować kilka widoków. następnie można wczytać te widoki analogicznie przez polecenie "View" opcja "R" i nazwa. Co do słoneczka, to ze współrzędnymi mam wątpliwość. Nie można określić współrzędych kartezjańskich położenia źródła tego typu światła. Dla świateł typy distant określa się Azimuth i Elevation, to są współrzędne sferyczne jeśli sie nie myle. współrzędne kartezjańskie można określać tylko dla świateł typu punktowego. Co do tego że ich nie widać to niestety ale nie jest to widoczne, a przynajmniej nie znam sposobu jak można to włączyć. Mam nadzieję że w późniejszych wersjach się pojawi.
  17. Może "-" przy wartosci pomoże, u mnie działa
  18. A może tak: Dim SS As ZwcadSelectionSet Set SS = Thisdocument.SelectionSets.Add("NazwaSelekcji") ' Tego brakowało w Pańskim kodzie a jest to niezbędne Dim FilterType() As Integer Dim FilterData() As Variant ReDim FilterType(0) ReDim FilterData(0) FilterType(0) = 0 FilterData(0) = "INSERT" ' dla bloków Mode = zcSelectionSetAll SS.Select Mode, , , FilterType, FilterData Jednym z ograniczeń SelectionSets jest to, że selekcjonowane mogą być tylko te obiekty, które są widoczne na ekranie. Umieszczenie obiektów na niewidocznych warstwach, lub poza wyświetlanym obszarem może powodować że część obiektów nie będzie zaznaczona. Nie jestem pewnie jak te cechy ograniczają tryb "zcSelectionSetAll", ale może to byc powodem Pańskich problemów. Jeśli te informacje nie rozwiążą Pańskich problemów, proszę bliżej opisac w czym jest problem ( czy nic nie wybiera? czy jest jakis komunikat błędu, jeśli jest to jaki? ). Ewentualnie proszę przekopiować dokładnie fragment kodu (włącznie z definicją filtrów). PS. Napisał Pan że chce zaznaczyć wszystkie obiekty, w tym wypadku określanie jakichkolwiek filtrów nie jest konieczne.
  19. Stworzenie filtrów warstw w LISPie jest dość skomplikowane. Zamierzamy opracować coś podobnego w niedalekiej przyszłości. W AutoCADzie żeby stworzyć filtry warstw, musimy pobrać słowniki z warstw ("vla-GetExtensionDictionary") i poszczególne filtry dodawać przez "AddXRecord". Oddzielną sprawą jest ustawianie filtru jako aktywnego, w tej kwestii narazie nie potrafię pomóc.
  20. kruszynski

    LISPY

    Niestety nie wiem jakie są plany twórców ZWCADa, ale obiecuje że kiedy pojawią się te funkcje zamieszcze tę informację na forum.
  21. kruszynski

    LISPY

    To z punktem środkowym jest bardzo proste, wystarczy policzyć srednie między poszczególnymi współrzędnymi (defun midpoint (p1 p2 /) (list (/ (+ (car p1) (car p2))2) (/ (+ (cadr p1) (cadr p2))2) (/ (+ (caddr p1) (caddr p2))2)) ) (setq mid(midpoint x1 x2)) Z funkcjami vlax- jest znacznie poważniejszy problem. Producenci zwcada pracują nad tymi funkcjami, ale nie są one jeszcze dostępne. Nie znam sposobu jak można to inaczej zapisać
  22. kruszynski

    LISPY

    Ale przykłady czego Pana interesują? w ZWCADzie nie da sie używać geomcal. a w AutoCADzie to jest dosyć dobrze opisane z przykładami w helpie użytkownika AutoCADa (nie w helpie VisualLISP). Część funkcji z biblioteki geomcal można w miarę prosto napisać w LISPie, dlatego pytałem co Pana interesuje
  23. kruszynski

    LISPY

    Tak wprost nie ma. A przynajmniej nie instaluje się automatycznie z ZWCADem. Które funkcje Pana interesją?
  24. kruszynski

    LISPY

    Jak już rozmawiamy o programowaniu w lispie, to niedawno znalazłem dobrą stronę wyjaśniającą wiele mechanizmów lispowych. Polecam: http://www.afralisp.net/
  25. kruszynski

    Set_tile

    Nie wiem czy dobrze zrozumiałem problem, ale jeśli tak to: Przez "Set_tile" ustawia się to co ma być wyświetlone w górnym pasku okienka Być może wystarczy tak zdefiniować kontrolkę "edit_box": (w pliku DCL) : edit_box { label = "Wyświetlana etykieta"; key = "Identyfikator"; edit_width = 6;// to jest szerokość value="1"; // to jest domyślna wartość } Jeśli to nie wyjaśnia problemów proszę zamieścić jakieś dodatkowe informacje o tym jaki efekt chce pan uzyskać.