ZWCAD - synchroniczne przesuwanie (pan), zoomowanie w 2 rzutniach (plikach)


BKW

Rekomendowane odpowiedzi

Czy istnieje jakaś funkcja, skrypt, program pozwalający na synchroniczne przesuwanie (zoomowanie) na dwóch rzutniach jednocześnie ?
W samym AutoCadzie nie udało mi się odnaleźć czegoś takiego. Istnieją natomiast aplikacje, których zainstalowanie w Autocadzie pozwala na taką funkcjonalność - poniżej podaje przykład.

https://apps.autodesk.com/ACD/en/Detail/Index?id=2788892389049910944&appLang=en&os=Win32_64

Chodzi mi o działanie takiej funkcji w "czasie rzeczywistym". 
Napisałem sobie procedurę w lispie, której wywołanie pozwala na takie działanie czyli wyświetlenie w każdym oknie tego samego widoku lub w jednym z okien widoku przesuniętego po współrzędnych X (lub Y) o jakąś wartość. Wszystko to jednak nie dzieje się w czasie rzeczywistym - aby użyć skryptu należy skończyć (przerwać) wykonywane polecenie.

Odnośnik do komentarza
Udostępnij na innych stronach

Nie spotkałem się z takim rozwiązaniem.

Do czego może się ono przydać?

Aplikacja, która znajduje się pod linkiem pozwala (jeśli dobrze rozumiem) na otwarcie dwóch plików dwg (raczej nie rzutni).

Na filmie otwierają ten sam plik dwg. Myślę, że większe zastosowanie takiego mechanizmu byłoby przy porównywaniu dwóch osobnych plików.

Wtedy w dwóch plikach dwg możemy patrzeć na ten sam obszar rysunkowy.

Odnośnik do komentarza
Udostępnij na innych stronach

33 minuty temu, dmatusz3 napisał:

Nie spotkałem się z takim rozwiązaniem.

Ja też nie, chociaż już od paru lat zastanawiam się dlaczego nie ma takiej funkcjonalności. 

23 minuty temu, dmatusz3 napisał:

Do czego może się ono przydać?

Do jednoczesnego podglądania np. rzutów kondygnacji "0" i "+1".
Działając w jednym oknie (rzutni) na kondygnacji niższej chciałbym mieć podgląd co jest na kondygnacji wyższej.
Uprzedzając od razu pomysły i rady - wykorzystuje wiele sposobów na pracę na wielu kondygnacjach, począwszy od xrefów po nakładanie rzutów itp.

26 minut temu, dmatusz3 napisał:

Aplikacja, która znajduje się pod linkiem pozwala (jeśli dobrze rozumiem) na otwarcie dwóch plików dwg (raczej nie rzutni).

Mam tego pełną świadomość i wkleiłem to tylko po to, aby moje pytanie było lepiej zrozumiane.

28 minut temu, dmatusz3 napisał:

Na filmie otwierają ten sam plik dwg. Myślę, że większe zastosowanie takiego mechanizmu byłoby przy porównywaniu dwóch osobnych plików.

Wtedy w dwóch plikach dwg możemy patrzeć na ten sam obszar rysunkowy.

Zgodzę się z Panem gdy np. rzuty branżowe są rysowane każde na osobnym rysunku. 
Czasami jednak lepiej pracuje się, gdy ja swoje rysunki robię na jednym pliku - stąd pytanie o rzutnie.

Przerobiliśmy w biurze prace z rzutami na różny sposób - teraz padł pomysł na taki sposób pracy.

Odnośnik do komentarza
Udostępnij na innych stronach

40 minut temu, BKW napisał:

Do jednoczesnego podglądania np. rzutów kondygnacji "0" i "+1".

Ten skrypt z linku powoduje, że widzielibyśmy dokładnie taki sam fragment rysunku w rzutniach. Czyli nie możemy mieć różnych kondygnacji.

Jeśli mamy widzieć różne kondygnacje, to oznacza że skrypt nie ma pokazywać tego samego fragmentu, tylko przesuwać i zoomować o tę samą wartość?

Np. na początku ustawiamy 2 rzutnie - na jednej pierwsza kondygnacja, na drugiej druga kondygnacja. Wtedy po włączeniu synchronizacji przesuwalibyśmy widok o tę samą wartość, ale widoczne byłby różne kondygnacje.

Nie wiem czy dobrze to interpretuje.

Odnośnik do komentarza
Udostępnij na innych stronach

58 minut temu, BKW napisał:

Do jednoczesnego podglądania np. rzutów kondygnacji "0" i "+1".

Powinienem tutaj dodać - "przesuniętych względem siebie na rysunku o jakąś wartość w poziomie lub pionie" - wtedy wszystko byłoby jasne.

11 minut temu, dmatusz3 napisał:

Ten skrypt z linku powoduje, że widzielibyśmy dokładnie taki sam fragment rysunku w rzutniach. Czyli nie możemy mieć różnych kondygnacji.

Zgadza się - mój błąd w opisaniu funkcji. Powyżej jest informacja czego zabrakło w moim opisie.

12 minut temu, dmatusz3 napisał:

Jeśli mamy widzieć różne kondygnacje, to oznacza że skrypt nie ma pokazywać tego samego fragmentu, tylko przesuwać i zoomować o tę samą wartość?

Dokładnie tak

14 minut temu, dmatusz3 napisał:

Np. na początku ustawiamy 2 rzutnie - na jednej pierwsza kondygnacja, na drugiej druga kondygnacja. Wtedy po włączeniu synchronizacji przesuwalibyśmy widok o tę samą wartość, ale widoczne byłby różne kondygnacje.

Nie wiem czy dobrze to interpretuje.

Bardzo dobrze Pan to interpretuje.

Ogólnie chodzi o to co opisał Pan powyżej. Nie ma znaczenia co jest na jednej i drugiej rzutni. Chodzi o to, żeby po włączeniu funkcji synchronizacji widok na jednej i drugiej rzutni przesuwał się synchronicznie oraz powiększał się również synchronicznie.

Odnośnik do komentarza
Udostępnij na innych stronach

Poniżej wklejam na szybko napisany fragment kodu lisp, który pozwala na wykonanie tego o czym piszę powyżej, ale nie w czasie rzeczywistym.
Ja przypisałem sobie to polecenia skrót klawiaturowy, dzięki czemu całkiem sprawnie ustawiam na dwóch rzutniach to co chcę uzyskać.
Kod oczywiście trzeba "owarunkować" itp.

Cytat

(DEFUN C:-+ ( / px) 
  (setq px (getvar "USERR1"))
    (if px 
      (setq px (getreal (strcat "\nPodaj wartość przesunięcia POZIOMEGO X <" (rtos (getvar "USERR1") 2 2) ">: ")))
      (setq px 0)
    )
   (setvar "USERR1" px)
)

(DEFUN C:zsaa ( / c h zasosnap px c1)
  (setvar "CVPORT" 2)
  (setq c (getvar "viewctr")
        h (getvar "viewsize")
        zasosnap (getvar "OSMODE")
        px (getvar "USERR1")  
  )
  (setvar "OSMODE" 0)
  (setvar "CVPORT" 3)
  (setq c1 (list (+ (car c) px)(car (cdr c))))

  (command "_zoom" "_c" c1 h)
  (setvar "OSMODE" zasosnap)
  (setvar "CVPORT" 2)
  
  (princ (strcat "\nViewctr: " (rtos (car c) 2 2) " , " (rtos (car (cdr c)) 2 2) "   -    " (rtos (car c1) 2 2) " , " (rtos (car (cdr c1)) 2 2)))
  (princ (strcat "\nViewsize: " (rtos h 2 2) "   -    " (rtos h 2 2)))
  (princ)

)

 

Odnośnik do komentarza
Udostępnij na innych stronach

7 minut temu, dmatusz3 napisał:

Po wstępnym rozeznaniu doszliśmy do wniosku, że zrobienie takiego Lispa będzie raczej niemożliwe.

Dziękuję za zainteresowanie. Byłem pewny na 99%, że takiej funkcjonalności nie da się uzyskać za pomocą LISPa.
Chociaż tak na prawdę patrząc na procedury jakie piszą użytkownicy programów CAD (chociażby Kojacek lub Lee Mac) zawsze zostaje ten 1% ...

10 minut temu, dmatusz3 napisał:

czy wystarczające będą 2 rzutnie?

Mi wystarczą w zupełności. Nie śmiałbym prosić o więcej.
Ogólnie, z użytkowego pkt widzenia pewnie maksymalnie 4 by wystarczyły (chociażby z uwagi na wielkość monitorów - im więcej rzutni, tym mniejsze okno i mniej szczegółowy ogląd na to co się rysuje i na co się patrzy). Oczywiście to moje zdanie.

13 minut temu, dmatusz3 napisał:

co będzie się działo jak będziemy przełączać się pomiędzy rzutniami?

Nie do końca wiem o co Pan pyta.
Jeżeli dobrze rozumiem to chyba najlepszym rozwiązaniem byłoby, gdyby w momencie przejścia na drugą rzutnię ta pierwsza zaczęłaby reagować tak samo jak ta druga przed jej aktywacją.
 

Oczywiście wszelkie inne pomysły, sposoby działania itp. itd. będą jak najbardziej mile widziane

Odnośnik do komentarza
Udostępnij na innych stronach

Dziękujemy za uznanie :)

Oto skrypt do załadowania do synchronizacji widoków w rzutni w przestrzeni modelu ViewChanged.dll

Bibliotekę trzeba załadować poleceniem netload, uprzednio odblokowując plik .dll.

image.png

 

Po załadowaniu pliku ViewChanged.dll ZWCAD wyświetli komunikat z dostępną listą poleceń,

image.png

czyli dostępne są 2 nowe polecenia:

  • VIEWSYNCHROSTART - włącza synchronizacje,
  • VIEWSYNCHROSTOP - wyłącza synchronizacje.
     

Skrypt działa w taki sposób, że przesuwanie widoku w rzutniach jest ustawione względem pozycji początkowej, natomiast zoom jest jednakowy.

image.gif

Odnośnik do komentarza
Udostępnij na innych stronach

Potestowałem troszkę skrypt na nowym ZWCadzie 2025 i niestety na moim przypadku nie działa on poprawnie.

Poniżej zamieszczam film z zachowania wraz z zrzutem, na którym widać wyświetlany błąd.

 

 

2024-11-12 13 31 43.png

 

EDIT: dodam jeszcze, że lokalne układy nie mają znaczenia gdyż przy globalnych skrypt zachowuje się tak samo.

Edytowane przez BKW
Odnośnik do komentarza
Udostępnij na innych stronach

16 godzin temu, dmatusz3 napisał:

Czy może Pan podesłać nam w wiadomości prywatnej ten rysunek?

Jak najbardziej

16 godzin temu, dmatusz3 napisał:

Czy sprawdzał Pan działanie skryptu na innych rysunkach?

Tak, sprawdzałem. Na kilku plikach mam podobne zachowanie.

Potestowałem skrypt na czystym pliku i wyniki na filmie poniżej.
Skrypt poprawnie działa gdy używamy do nawigacji i zoomowania scrolla myszki. Gdy używamy polecenia "_zoom" to zawartość drugiego okna przesuwa się w pionie względem pierwszego okna (widać to po poziomej linii).
Gdy przełączymy na drugi plik jest podobnie plus dodatkowo w linii komend pojawiają się błędy.

 

 

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie