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
;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!!
Nenhum comentário:
Postar um comentário