Outro dia estava precisando desenhar um retângulo tal que circunscrevesse um TEXT ou MTEXT… pois bem, existe a função textbox no autolisp, mas esta so funciona com TEXT… e ainda, ele devolve uma lista com a diagonal do retângulo ocupado pelo texto, como se ele estivesse na origem (0,0) e tivesse rotação zero…
aí desenvolvi esta rotinazinha:
(defun textbox2 (ent / box w h pt ang al)
(if (setq ent (ename-of ent))
(progn
(setq pt (3d-of-vla
(vla-get-insertionpoint
(vlax-ename->vla-object ent)))
ang (dxf 50 ent))
(if (= (dxf 0 ent) “TEXT”)
(setq box (textbox (list (cons -1 ent)))
w (– (caadr box) (caar box))
h (– (cadadr box) (cadar box)))
(setq w (dxf 42 ent)
h (dxf 43 ent)
ang (angle (trans ‘(0 0) 1 0)
(trans
(polar ‘(0 0) ang 1)
1 0))
al (1- (dxf 71 ent))
pt (polar
(polar pt ang
(* w -0.5 (rem al 3)))
(– ang (/ pi 2))
(* h 0.5 (– 2 (/ al 3))))))
(list pt
(polar pt ang w)
(polar pt
(+ ang (atan (/ h w)))
(sqrt (+ (expt h 2)
(expt w 2))))
(polar pt (+ ang (/ pi 2)) h)))))
ela devolve uma lista com os quatro vértices do retângulo, esteja o texto onde estiver e a rotação que for… serve para TEXT e MTEXT…
Neyton, não abusando, tem como postar as sub-funções?
ex.: ename-of
Valeu e obrigado,
Rogério Z.
teste