Wymiar z dodaną stałą wartością


justyha

Recommended Posts

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

Link to comment
Share on other sites

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ść)

Link to comment
Share on other sites

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 )

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

@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).

Edited by Martin_S
Link to comment
Share on other sites

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ł ;)

Link to comment
Share on other sites

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

Link to comment
Share on other sites

hehe  :D  działa!

 

- jak się wybiera pierwszy i drugi punkt to pisze >Invalid point input<  ale działa poprawnie

- dało by się jeszcze ustawić żeby wyświetlało tylko 2 zaokrąglone miejsca po przecinku?

Edited by justyha
Link to comment
Share on other sites

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)
)

Link to comment
Share on other sites

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 ;)

Edited by justyha
Link to comment
Share on other sites

Procedura działa nieźle.

Ja zrobiłem dwa warianty żeby można było wstawić od nowa stałe.

Pewnym mankamentem jednak jest to , że wymiar nie jest dynamiczny i przy zmianach trzeba wymiarować od nowa, gorzej jak się zapomni.

Link to comment
Share on other sites

@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?   

Edited by justyha
Link to comment
Share on other sites

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

Edited by kojacek
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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?

Edited by kojacek
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...