Wymiar z dodaną stałą wartością


justyha

Rekomendowane odpowiedzi

Witam

Czy ktoś z Was wie może jak ustawić wymiarowanie obiektu tak żeby pokazywał daną wartość po dodaniu do wymiaru jakiejś stałej liczby?. Np.  linia ma 5.5m natomiast stała wartość to np 132. Chciałabym aby wyświetlało mi finalnie wartość 137.5 (czyli 5.5+132). Da się to jakoś zrobić?

 

Z góry dziękuje

Pozdrawiam

Justyna

Odnośnik do komentarza
Udostępnij na innych stronach

Nie chodzi mi o nadpisanie wymiaru.

Bardziej o narzędzie do wymiarowania, że każdy wymiar będzie mi powiększał/pomniejszał o wartość stałą jaką wybiorę i interesuje mnie tylko wynik. Czyli mierzę linię która ma 5,5m, a wyświetla mi 137.5m (przy narzuconej wcześniej wartości stałej 132).

Przy stylach wymiarowania w ZWC mogę sobie pomnożyć lub podzielić o jakiś współczynnik. A mi potrzebny jest taki styl wymiaru albo coś który powiększy/pomniejszy wymiar o jakąś stałą wartość)

Odnośnik do komentarza
Udostępnij na innych stronach

Obawiam się, że chodzi o to żeby wymiar zmieniał się dynamicznie i aktualizował się np przy zmianie. Zdaje się, że wtdy potrzebny będzie reaktor obsługujący obiekt typu "wymiar" i podpięta pod niego funkcja np. w lispie która na bieżąco wyliczy sumę jakiejś wartości i rzeczywistego wymiaru. Generalnie chyba nie takie proste, a i ZwCAD chyba reaktorów na wymiarach nie obsługuje ( tego nie jestem pewien, nie sprawdzałem )

Odnośnik do komentarza
Udostępnij na innych stronach

Nie chodzi mi o nadpisanie wymiaru.

Bardziej o narzędzie do wymiarowania, że każdy wymiar będzie mi powiększał/pomniejszał o wartość stałą jaką wybiorę i interesuje mnie tylko wynik. Czyli mierzę linię która ma 5,5m, a wyświetla mi 137.5m (przy narzuconej wcześniej wartości stałej 132).

Przy stylach wymiarowania w ZWC mogę sobie pomnożyć lub podzielić o jakiś współczynnik. A mi potrzebny jest taki styl wymiaru albo coś który powiększy/pomniejszy wymiar o jakąś stałą wartość)

 

Witam

Obawiam się, że ustawienie tego z automatu nie będzie możliwe. Rysunki tworzymy zazwyczaj w 1:1 lub w skali. W przypadku tworzenia rysunków w konkretnej skali, w razie potrzeby można wtedy przemnożyć wartości wymiarów.

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Witam

Obawiam się, że ustawienie tego z automatu nie będzie możliwe. Rysunki tworzymy zazwyczaj w 1:1 lub w skali. W przypadku tworzenia rysunków w konkretnej skali, w razie potrzeby można wtedy przemnożyć wartości wymiarów.

Pozdrawiam

Jeśli ZwCAD obsługuje obiekty typu FIELD, jest to jak najbardziej możliwe. W AutoCAD zrobiłem to tak: Utworzyłem obiekt tekstowy typu field, z przypisaną formułą typu 100 + <wartość wskazanego wymiaru>. Następnie, edytując ten wymiar, zamiast <> wprowadzam field z wartością tego tekstu. W efekcie wartość pokazywana przez wymiar pokazuje owe 100 + jego długość. Oczywiście edycja wymiaru uchwytami (rozciągnięcie) i regeneracja, nadążają za zmianami.

post-451-0-17772100-1400857899.png

Odnośnik do komentarza
Udostępnij na innych stronach

Witam

ZWCAD obsługuje obiekty FIELD, ale do przedstawionego sposobu byłaby potrzebna jeszcze obsługa formuł. Jeśli dobrze zrozumiałem post @justyha, to chodzi o proste narzędzie, w którym można zdefiniować jakąś wartość, która ma być za każdym razem dodawana do tworzonego wymiaru.  

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Witam

ZWCAD obsługuje obiekty FIELD, ale do przedstawionego sposobu byłaby potrzebna jeszcze obsługa formuł. Jeśli dobrze zrozumiałem post @justyha, to chodzi o proste narzędzie, w którym można zdefiniować jakąś wartość, która ma być za każdym razem dodawana do tworzonego wymiaru.  

Pozdrawiam

 

Jeśli dobrze zrozumiałem ZwCAD obsługuje FIELD-y ale (jednocześnie) nie obsługuje formuł? Jeśli zaś obsługuje, to proste narzędzie można przecież wykrzesać lisp-em, nieszczególnie skomplikowanym. Rozwiązanie które proponuję, właśnie dodaje dowolną wartość do (rzeczywistego) tekstu wymiarowego, w sposób dynamiczny (rozciągnięcie wymiaru nadąża za zmianami).

Odnośnik do komentarza
Udostępnij na innych stronach

Jeżeli mogę troszkę skomplikować sprawę to pomocna by była taka opcja aby ten rzeczywisty wymiar móc przeskalować dodatkowo. Po mojemu to by wyglądało mniej więcej tak:

1. Wybieram polecenie X

2. Wybieram współczynnik do przeskalowania np. 0.01

3. Wybieram wartość stałą np.130

Czyli wychodzi tak:

Odmierzony wymiar rzeczywisty mam np 660, zeskalowany ( *0.01) wychodzi w domyśle 6.6, a wyświetla mi 136.6.

Odnośnik do komentarza
Udostępnij na innych stronach

@justyha ... Do jakiego i czego jest potrzeba taka specyficzna, niestandardowa metoda ... może coś innego by dało radę wymysleć by to "obejść", ale nie wiem do czego ta idea ma służyć, proszę o przykłady , jeśli można.  Bo to nie jest standardowe kreslenie CAD 1:1 i lokalne skalowania (np. 1:50 1:20 w rzutniach na obszarze papieru).

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

Prosta sprawa ta funkcja przydałaby mi się do sprawdzania profili sieci zewnętrznych. Jak się rozgrzebuje zaczętą wcześniej pracę lub kończy po kimś. Szybkie przelecenie rzędnych bez dodawania pojedynczo każdego wymiaru do rzędnej odniesienia eliminuje też ryzyko błędu. Tak opcja przyśpieszyłaby znacznie pracę. 

Jeżeli ktoś ma jakiś myk ciekawy na to, byłoby fajnie jakby się podzielił ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Pobadajcie takiego lispa. Działa w ten sposób:

Jeśli nie ma zdefiniowanej zmiennej globalnej *XDIMDATA*, prosi o podanie stałej (dodawanej do wymiaru) oraz współczynnika skalowania długości (tutaj można dać ENTER (wtedy bez współczynnika). Potem należy wskazać pierwszy punkt wymiaru, potem drugi. W konsekwencji malowany jest wymiar z nadpisanym tekstem wymiarowym o wartości WYMIAR x WSPÓŁCZYNNIK + STAŁA. Po załadowaniu lisp-a, polecenie XDIM  

; ------------------------------------------------------------------------------------------- ;
; by kojacek 2014
; ------------------------------------------------------------------------------------------- ;
(defun C:XDIM (/ pt Cmd v1 v2 e el d n nd)
  (if
    (not *XDIMDATA*)
    (progn
      (initget (+ 1 2 4))
      (setq v1 (getreal "\nPodaj stałą wymiaru: ")
            v2 (getreal "\nPodaj współczynnik (lub ENTER): ")
      )
      (setq *XDIMDATA* (list v1 v2))
    )
  )
  (if
    (setq pt
      (getpoint "\nOkreśl początek pierwszej pomocniczej linii wymiarowej: ")
    )
    (progn
      (setq Cmd (getvar "CmdEcho")
            e (entlast)
      )
      (setvar "CmdEcho" 0)
      (command "_.DimLinear" pt)
      (command "'_.SetVar" "CmdEcho" Cmd)
      (while
        (= 1 (logand (getvar "CmdActive") 1))
        (command "\\")
      )
      (if
        (eq (setq el (entlast)) e)
        (princ "\nAnulowano. ")
        (progn
          (setq d (entget el)
                n (cdr (assoc 42 d))
                n (* (if (not (cadr *XDIMDATA*)) 1 (cadr *XDIMDATA*)) n)
                n (+ (car *XDIMDATA*) n)
                nd (subst (cons 1 (rtos n))(assoc 1 d) d)
          )
          (entmod nd)
        )
      )
    )
    (princ "\nAnulowano. ")
  )
  (princ)
)

Sprawdźcie czy działa...

Odnośnik do komentarza
Udostępnij na innych stronach

Zmień kod na poniższy i sprawdź teraz:

; ------------------------------------------------------------------------------------------- ;
; by kojacek 2014
; ------------------------------------------------------------------------------------------- ;
(defun C:XDIM (/ pt Cmd v1 v2 e el d n nd)
  (if
    (not *XDIMDATA*)
    (progn
      (initget (+ 1 2 4))
      (setq v1 (getreal "\nPodaj stałą wymiaru: ")
            v2 (getreal "\nPodaj współczynnik (lub ENTER): ")
      )
      (setq *XDIMDATA* (list v1 v2))
    )
  )
  (if
    (setq pt
      (getpoint "\nOkreśl początek pierwszej pomocniczej linii wymiarowej: ")
    )
    (progn
      (setq Cmd (getvar "CmdEcho")
            e (entlast)
      )
      (setvar "CmdEcho" 0)
      (command "_.DimLinear" pt)
      (setvar "CmdEcho" Cmd)
      ; (command "'_.SetVar" "CmdEcho" Cmd)
      (while
        (= 1 (logand (getvar "CmdActive") 1))
        (command "\\")
      )
      (if
        (eq (setq el (entlast)) e)
        (princ "\nAnulowano. ")
        (progn
          (setq d (entget el)
                n (cdr (assoc 42 d))
                n (* (if (not (cadr *XDIMDATA*)) 1 (cadr *XDIMDATA*)) n)
                n (+ (car *XDIMDATA*) n)
                nd (subst (cons 1 (rtos n 2 2))(assoc 1 d) d)
          )
          (entmod nd)
        )
      )
    )
    (princ "\nAnulowano. ")
  )
  (princ)
)

Odnośnik do komentarza
Udostępnij na innych stronach

Również potwierdzam działa elegancko  :good:

Bardzo dziękuje! 

Pozdrawiam

 

PS: Dodatkowo fajnie, że jest sprzężone ze stylami wymiarów, więc można sobie dowolnie modyfikować pod względem wizualnym, ale najlepiej stworzyć oddzielny styl dla tego narzędzia, bo można przeskalować sobie coś podwójnie niechcący ;)

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

@KBR możesz rozwinąć jak dokładniej działają u Ciebie te dwa warianty?

Zastanawiam się też jak można zmienić stałą lub współczynnik podczas gdy narzędzie jest już załadowane? Czy da się jakoś zresetować to narzędzie?   

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

Zastanawiam się też jak można zmienić stałą lub współczynnik podczas gdy narzędzie jest już załadowane? Czy da się jakoś zresetować to narzędzie?   

Tak. Wystarczy w linii poleceń wpisać:

(setq *XDIMDATA* nil)

Ponowne wywołanie polecenia XDIM, odpyta o nowe dane. Oczywiście nowe ustawienia zadziałają tylko dla nowych wymiarów,

Można pomysleć o jakimś reaktorze, dla takich wymiarów (aby nadać im dynamiki), ale chyba narzędzie jest zbyt niszowe, by się w to bawić (?)

Edyta: Inna opcja to "przywiązanie" danych (współczynnika i stałej) do wymiaru. Taki zabieg pozwoliłby sprawdzić wartości i nawet je modyfikować.

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

Ja zrobiłem wariant z którego usunąłem if i za każdy razem pyta o wartości i nazwałem XDIM1.

Narzędzie nie jest takie całkiem niszowe bo bardzo przydatne do rysowania profili (np w hydrotechnice profili cieku, wałów ale i przekroje poprzeczne, podobnie dla dróg) rzędne można podawać w formie wymiaru.  Ja czasem tak robię wtedy początek wymiarów ustawiam w przyjętym "0" bezwzględny dla układu,  a nie w poziomie porównawczym.

Odnośnik do komentarza
Udostępnij na innych stronach

Ja zrobiłem wariant z którego usunąłem if i za każdy razem pyta o wartości i nazwałem XDIM1.

Narzędzie nie jest takie całkiem niszowe bo bardzo przydatne do rysowania profili (np w hydrotechnice profili cieku, wałów ale i przekroje poprzeczne, podobnie dla dróg) rzędne można podawać w formie wymiaru.  Ja czasem tak robię wtedy początek wymiarów ustawiam w przyjętym "0" bezwzględny dla układu,  a nie w poziomie porównawczym.

Nie ma potrzeby tworzenia wariantu polegającego na usuwaniu czekokolwiek. Wystarczy zdefiniować nowe polecenie np. XDIM2, w taki sposób:

(defun C:XDIM2 ()(setq *XDIMDATA* nil)(C:XDIM)(princ))

Zaletą takiego rozwiązania jest wykorzystywanie wcześniej zdefiniowanej funkcji (polecenia) C:XDIM, bez niepotrzebnego kopiowania (w efekcie dublowania) kodu. Wbrew pozorom (rzekomej nieszkodliwości) ma to głęboki sens, w utrzymaniu spójności i "czystości" rozwiązań. 

Odnośnik do komentarza
Udostępnij na innych stronach

A co powiecie na coś takiego? Rysując wymiar skażony dane (stała i współczynnik) przypisane są do wymiaru. Pozwala to mieć w rysunku różne wymiary z różnymi danymi. I teraz, takie polecenie -XDIM, ma następujące opcje:

post-451-0-00843800-1401434009_thumb.png

Rysuj - rysuje wymiar zmieniając tekst (tak jak wcześniejsze XDIM)
Uzgodnij - przypisuje dowolnie wskazanym wymiarom ustawienia (stała i współczynnik) z wymiaru źródłowego.
Aktualizuj - po rozciągnięciu wymiaru skażonego, pozwala go zaktualizować.
Przywróć - usuwa "skażenie" - przywraca wymiar o długości normalnej
Ustawienia - ustawienia współczynnika i skali

Idziemy w tym kierunku?

Edytowane przez kojacek
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