Desvirar textos de cabeça para baixo

Uma rotininha que já existe no civil 3d para as “labels” que eu imitei para funcionar com textos… É assim: você desenha os textos e tal, mas no layout, devido ao formato do desenho, rotaciona a viewport e os textos ficam de cabeça pra baixo (ou de ponta-cabeça, dependendo de onde tu mora, tchê!!!)… na mão ia demorar um bocado, mas assim é covardia:

Deixa eu ver!!!

(defun c:rottxt (/ ss rot ent)
;controle de erros:
(tbn:error-init (list (list “cmdecho” 0) t))
;seleciona textos:
(setq ss (ssget ((0 . “TEXT,MTEXT”))))
(
repeat (if ss (sslength ss) 0)
(
setq ent (ssname ss 0)
rot (dxf 50 ent);rotação em radianos
rot (if (= “MTEXT” (dxf 0 ent));rotação em UCS
(angle (trans (0 0) 1 0)
(
trans (polar (0 0) rot 1) 1 0))
rot));text tem rotação em WCS
;| se a rotação encontrada é
diferenta daquela que o texto tem:|;

(if (/= rot (rot-of-ucs rot))
(
progn
;assim é mais facil obter o ponto do centro do texto:
(setq box (textbox2 ent))
;rotaciona em 180º:
(vla-rotate
(vlax-ename->vla-object ent)
(
vlax-3d-point (media (car box) (caddr box)))
pi)))
;contador na barra inferior:
(grtext -2 (itoa (sslength ss)))
(
ssdel ent ss))
;restaura sem erros:
(tbn:error-restore t))

Link(s) da(s) subrotina(s) usada(s):
tbn:error-init, dxf, rot-of-ucs, textbox2, media, tbn:error-restore

Atenção, ela não muda a rotação para 0, mas sim vê se o texto ficou de cabeça pra baixo, se ficar, rotaciona em 180 graus!!

Deixe um comentário

Carrinho de compras
Rolar para cima