kruszynski

Moderatorzy
  • Postów

    1 427
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    83

Odpowiedzi opublikowane przez kruszynski

  1. 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.

  2. 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.

  3. 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.

  4. 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ć

  5. 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

  6. 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ć.

  7. Numer seryjny można odczytac z ze zmiennej systemowej _PKSER:

    (getvar "_PKSER") 

    zmienna ta zawiera wartosć dopiero po zarejestrowanii ZWCADa. Nie znam sposobu na odczytanie numeru klucza. Sposób odczytania tej wartosci z klucza jest w jakiś sposób zaszyty w programie i nie ma do tego łatwego dostępu

  8. Niestety nie ma takiej możliwości. Plik geomcal nie jest plikiem ZWCADowym. nie można go też przekopiować z AutoCADa, ponieważ AutoCAD operuje na plikach *.arx natomiast ZWCAD analogicznie używa plików *.drx. Te pliki nie są takie same.

  9. HKEY_CURRENT_USER\Software\Chinaweal Longteng\ZWCAD 2008i Plk\Profile\zwprofil\Config

    to tylko przykład

    gdzie:

    'ZWCAD 2008i Plk' to wersja zainstalowanego ZWCADa

    'zwprofil' to profil użytkownika dla którego wprowadzamy zmiany, domyślnie jest to Default, (tylko przez przypadek skopiowałem to co mam u siebie)

    Profile - to też sie może różnić. np dla ZWCAD2009 to jest 'Profiles'

    w Pańskim przypadku będzie to:

    HKEY_CURRENT_USER\Software\Chinaweal Longteng\ZWCAD 2008i Plk\Profile\Default\Config

    Po otwarciu tego rejestru w tabelce po prawej stronie, w kolumnie 'Nazwa' proszę znaleźć 'Blocks' i ten wpis modyfikować

    Proszę pamiętać o tym, że nieostrożne obchodzenie z rejestrami może grozić trwałym kalectwem systemu.

  10. Instalator można zrobić uzywając programu Inno setup. Dostępny na stronie http://www.innosetup.prv.pl/ Program jest darmowy, również do użytku komercyjnego

    1) Żeby programy uruchamiały się autoamtycznie przy starcie, należy edytować plik zwcad.lsp

    Pojawiają się tu dwie ważne kwestie

    a)plik ten jest umieszczony w głównym katalogu ZWCADa domyśnie jest to

    c:\Program Files\ZWCAD 2008i Plk\

    ale ścieżka ta może się różnić

    B) inne aplikacje również mogą edytować ten plik, nie można więc instalować swojego pliku zwcad.lsp, należy go edytować dodając do niego linię (vl-load-all "sciezka dostępu do pańskich plików *.lsp")

    2)ścieżka wyszukiwania bloków jest zapisana w rejestrze, więc żeby dodać Pański katalog, należy wpisać do odpowiedniego rejesttru ścieżkę do Pańskich bloków.

    rejestr w którym zapisano ścieżki to:

    HKEY_CURRENT_USER\Software\Chinaweal Longteng\ZWCAD 2008i Plk\Profile\zwprofil\Config

    Rejestr może się różnić w zależności od wersji ZWcada

    Key = Blocks

    przykładowa wartosć = C:\ABC;C:\AAC

    czyli kolejne ścieżki wpisuje się po średnikach

    przy zapisie należy pamiętać o pozostawieniu tam wcześniejszych wartości, czyli dopisujemy do rejestru a nie wstawiamy tam własne ścieżki (chyba że celowo chcemy usunąć poprzednie)

    3) żeby stworzyć menu z własnymi ikonkami należy stworzyć plik *.mnu. w nim definiujemy wszystkie ikonki.

    taki plik musimy wczytać do zwcada - tylko raz, przy kolejnych uruchomieniach programu menu będzie juz wczytane.

    Reasumująć

    1) Wszystkie pliki łączymy w jeden instalator setup.exe. Oprucz naszych plików dodajemy tam również plik np: setup.lsp

    2) W ZWCADzie wczytujemy (_appload) plik setup.lsp

    plik setup.lsp

    - ustawia potrzebne rejestry (to można również robić w instalatorze)

    - edytuje plik zwcad.lsp (nie znam prostego sposobu na edycje pliku w czasie działania instalatora)

    - wczytuje plik *.mnu (to jest konieczne w czasie działania zwcada, więc nie może być w instalatorze, musi być w pliku setup.lsp

    Po zainstalowaniu naszego programu z instalatora stworzonego przy użyciu Inno Setup automatycznie powstanie też plik uninstal.exe

  11. Witam

    Jestem tym nowym pracownikiem i postaram się w miarę moich możliwości pomóc w rozwiązywaniu takich problemów.

    Aktualny stan osnapów zapisany jest w zmiennej systemowej "osmode" więc jedno z możliwych rozwiązań pańskiego problemu jet następujące

    1. zapisujemy do zmiennej aktualne ustawienia osnapów

    2. zmieniamy aktualne ustawienia

    3. na końcu procedury przywracamy stan początkowy

    przykład:

    (setq LastOSNAPs (getvar "osmode" ))

    ; tutaj piszemy własne procedury, mogące również zmieniac ustawienia osnapów

    .

    .

    .

    ;----------------------------------------------

    (setvar "osmode" LastOSNAPs) ; przywraca początkową konfigurację.

    Jeśli to nie pomoże to proszę o przesłanie kodu pańskiej procdury. Interesują mnie tylko te linijki, w których zmienia Pan osnapy.

    Co do zmiennych systemowych to ich listę można znaleźć helpie

    Niestety nie ma narazie żadnego narzędzia do tworzenia procedur lispowych (poza podstawowymi programami do edycji plików tekstowych).

    Można jedynie rejestrować makra [Narzędzia -> Rejestruj skrypt ] -> Wpiać nazwę pliku. Po zakończeniu rysowania [Narzędzia -> Stop..]. Powstanie plik z rozszerzeniem scr, który można edytować jak plik tekstowy. Plik w którym zarejestrowane zostanie makro zawiera jedynie polecenia rysowania obiektów oraz listę wskazanych współrzędnych. Jeśli w czasie rejestracji makra zostaną zmienione np ustawienia osnapów informacja ta nie zostanie zapisana w makrze.

    Jeśli w którejś z nowych wersji ZWCADa zostanie dodany edytor zamieszczę tu odpowiedią informację.