_

Elevation tekstów

Forum poświęcone flagowemu produktowi oraz aplikacjom pochodnym Autodesku. To jedyne forum mające w tytule nazwę programu, a to ze względu na jego olbrzymią popularność w Polsce. Można tutaj umieszczać również posty z ogólnie pojętej tematyki "Kreślarskie 2D".

Elevation tekstów

Postprzez MS_MS » paź 29, 2017 00:13

Witam

Mam sytuację następującą:
Text1 - współrzędna Z = 0
Text2 - współrzędna Z= np. 3.21

Text1 i Text2 są na innych warstwach, inne kolory, itp.

Czy jest jakaś opcja lub lisp, która nada współrzędną Z tekstowi 1 taką samą jaką ma tekst 2? Coś jak match properities tylko dla jednej współrzędnej.

Mam takich ze 250, więc robienie tego mechanicznie zajmie długo czasu.
MS_MS
 
Posty: 17
Dołączył(a): wrz 24, 2017 11:42

Re: Elevation tekstów

Postprzez akor » paź 29, 2017 12:16

A to nie wystarczy:
1.jpg

akor
akor
 
Posty: 561
Dołączył(a): cze 25, 2010 21:17

Re: Elevation tekstów

Postprzez MS_MS » paź 29, 2017 20:30

Niestety nie wystarczy, bo każdy text1 ma mieć wysokość text2, a ta jest zawsze inna.
MS_MS
 
Posty: 17
Dołączył(a): wrz 24, 2017 11:42

Re: Elevation tekstów

Postprzez kojacek » paź 29, 2017 21:50

Takie coś. Zmienia współrzędne X, Y, Z albo XYZ dla zbioru wskazań tekstów i tekstów wielowierszowych, na pobrane z obiektu źródłowego (TEXT/MTEXT). Wymaga CADPL-Pack'a.

Kod: Zaznacz cały
; ------------------------------------------------------------------ ;
; Polecenie CHELT ustawia dla zbioru wskazan TEXT/MTEXT wspolrzedna  ;
; X / Y / Z lub XYZ z pobranego tekstu zrodlowego                    ;
; kojacek 2017                                                       ;
; ------------------------------------------------------------------ ;
(defun C:CHELT (/ e d s c v l -ch10)
  (defun -ch10 (e i v / d n)
    (setq d (cdr (assoc 10 (entget e))))
    (setq n
      (cond
        ( (= "X" i)(list v (cadr d)(caddr d)))
        ( (= "Y" i)(list (car d) v (caddr d)))
        ( (= "Z" i)(list (car d)(cadr d) v))
        (t v)
      )
    )
    (cd:ENT_SetDXF e 10 n)
  )
  (if
    (and
      (setq e (entsel "\nWybierz źródłowy TEXT lub MTEXT: "))
      (wcmatch (cdr (assoc 0 (setq d (entget (car e))))) "*TEXT")
    )
    (progn
      (redraw (car e) 3)
      (setq v (cdr (assoc 10 d)))
      (princ
        (strcat "\nZmiana współrzędnej wstawienia"
                " [X=" (cd:CON_Real2Str (car v) 2 nil)
                ", Y=" (cd:CON_Real2Str (cadr v) 2 nil)
                ", Z=" (cd:CON_Real2Str (caddr v) 2 nil)
                "]"
         
        )
      )
      (if
        (setq s (ssget ":L" '((0 . "*TEXT"))))
        (if
          (setq c
            (cd:USR_GetKeyWord
              "\nUstal składową współrzędnej obiektów"
              '("X" "Y" "Z" "Wszystkie" "Koniec") "Z")
          )
          (if
            (= c "Koniec")
            (princ "\nAnulowano. ")
            (progn
              (setq l (cd:SSX_Convert s 0))
              (cd:SYS_UndoBegin)
              (foreach % l
                (cond
                  ( (= c "X")(-ch10 % c (car v)))
                  ( (= c "Y")(-ch10 % c (cadr v)))
                  ( (= c "Z")(-ch10 % c (caddr v)))
                  ( (= c "Wszystkie")(-ch10 % "W" v))
                  (t nil)
                )
              )
              (cd:SYS_UndoEnd)
            )
          )
          (princ "\nAnulowano. ")
        )
        (princ "\nNie wybrano obiektów. ")
      )   
    )
    (princ "\nNie wskazano prawidłowego obiektu. ")
  )
  (redraw (car e) 4)
  (princ)
)
Avatar użytkownika
kojacek
 
Posty: 5453
Dołączył(a): paź 03, 2005 20:17

Re: Elevation tekstów

Postprzez MS_MS » paź 29, 2017 23:00

Dzięki wielkie. To jest idealne. Nawet robi więcej niż prosiłem.
MS_MS
 
Posty: 17
Dołączył(a): wrz 24, 2017 11:42

Re: Elevation tekstów

Postprzez kojacek » paź 30, 2017 12:49

MS_MS napisał(a):Dzięki wielkie. To jest idealne. Nawet robi więcej niż prosiłem.


Pozwoliłem sobie szerzej opisać rozwiązanie problemu:
https://kojacek.wordpress.com/2017/10/30/uzgodnij-punkt-wstawienia-tekstu/
Avatar użytkownika
kojacek
 
Posty: 5453
Dołączył(a): paź 03, 2005 20:17

Re: Elevation tekstów

Postprzez MS_MS » lis 30, 2018 17:07

Można dopisać do tego lispa polecenie, które użyle punkt wstawienia bloku jako źródło współrzędnych?
MS_MS
 
Posty: 17
Dołączył(a): wrz 24, 2017 11:42

Re: Elevation tekstów

Postprzez ziele_o2k » lis 30, 2018 18:28

MS_MS napisał(a):Można dopisać do tego lispa polecenie, które użyle punkt wstawienia bloku jako źródło współrzędnych?

Pozwoliłem sobie zmienić polecenie kojacka:
Kod: Zaznacz cały
; ------------------------------------------------------------------ ;
; Polecenie CHELT ustawia dla zbioru wskazan TEXT/MTEXT wspolrzedna  ;
; X / Y / Z lub XYZ z pobranego tekstu/bloku zrodlowego              ;
; kojacek 2017                                                       ;
; ------------------------------------------------------------------ ;
; zmiana ziele_o2k 30-11-2018                                        ;
; ------------------------------------------------------------------ ;
(defun C:CHELT (/ e d s c v l -ch10)
  (defun -ch10 (e i v / d n)
    (setq d (cdr (assoc 10 (entget e))))
    (setq n
      (cond
        ( (= "X" i)(list v (cadr d)(caddr d)))
        ( (= "Y" i)(list (car d) v (caddr d)))
        ( (= "Z" i)(list (car d)(cadr d) v))
        (t v)
      )
    )
    (cd:ENT_SetDXF e 10 n)
  )
  (if
    (and
      (setq e (entsel "\nWybierz źródłowy TEXT, MTEXT lub BLOK: "))
      (wcmatch (cdr (assoc 0 (setq d (entget (car e))))) "*TEXT,INSERT")
    )
    (progn
      (redraw (car e) 3)
      (setq v (cdr (assoc 10 d)))
      (princ
        (strcat "\nZmiana współrzędnej wstawienia"
                " [X=" (cd:CON_Real2Str (car v) 2 nil)
                ", Y=" (cd:CON_Real2Str (cadr v) 2 nil)
                ", Z=" (cd:CON_Real2Str (caddr v) 2 nil)
                "]"
         
        )
      )
      (if
        (setq s (ssget ":L" '((0 . "*TEXT"))))
        (if
          (setq c
            (cd:USR_GetKeyWord
              "\nUstal składową współrzędnej obiektów"
              '("X" "Y" "Z" "Wszystkie" "Koniec") "Z")
          )
          (if
            (= c "Koniec")
            (princ "\nAnulowano. ")
            (progn
              (setq l (cd:SSX_Convert s 0))
              (cd:SYS_UndoBegin)
              (foreach % l
                (cond
                  ( (= c "X")(-ch10 % c (car v)))
                  ( (= c "Y")(-ch10 % c (cadr v)))
                  ( (= c "Z")(-ch10 % c (caddr v)))
                  ( (= c "Wszystkie")(-ch10 % "W" v))
                  (t nil)
                )
              )
              (cd:SYS_UndoEnd)
            )
          )
          (princ "\nAnulowano. ")
        )
        (princ "\nNie wybrano obiektów. ")
      )   
    )
    (princ "\nNie wskazano prawidłowego obiektu. ")
  )
  (redraw (car e) 4)
  (princ)
)

Obrazek
Ziele
Avatar użytkownika
ziele_o2k
 
Posty: 735
Dołączył(a): mar 18, 2014 11:33
Lokalizacja: Poznań


Powrót do AutoCAD

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników