jueves 25 de marzo de 2010

Rota Dimensiones

;;;---------------------------------------------------------------------------------------------
;;;RotDIM
;;;Mcommands 2010, Guadalajara, Jalisco México
;;;Autor: Marco Antonio Jacinto Pérez
;;;---------------------------------------------------------------------------------------------
;;;El comando RotDim permite cambiar el UCS de las cotas para que coincidan con el UCS
;;;actual y evita asi que aparezcan giradas.
;;;---------------------------------------------------------------------------------------------
(DEFUN c:rotdim (/ ss ent ANG0 )
(
OR MU:THISDRAWING
(SETQ MU:THISDRAWING (VLA-GET-ACTIVEDOCUMENT (VLAX-GET-ACAD-OBJECT)))
)
;;;Si ya existe una marca para undo se termina, ya que en ocasiones el crear
;;;una nueva marca puede hacer que AutoCAD se termine abruptamente
(IF (= 8 (LOGAND 8 (GETVAR "UNDOCTL")))
(
vla-EndUndoMark MU:THISDRAWING)
)
(
vla-StartUndoMark MU:THISDRAWING)
(
princ
"\n Selecciona las cotas a orientar segun el UCS actual:"
)
(
SETQ ss (SSGET '((0 . "DIMENSION")))
;;; Se trasladan los puntos 0,0 y 1,0 al Ucs Actual, y se obtiene despues el
;;; angulo que forman entre ellas
ang0 (ANGLE (TRANS '(0 0) 0 1) (TRANS '(1 0) 0 1))
)
(
foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
(
VLA-PUT-ROTATION
(VLAX-ENAME->VLA-OBJECT ent)
ang0
)
)
(
vla-EndUndoMark MU:THISDRAWING)
(
PRINC)
)

1 comentarios:

Jorge dijo...

Hola Marco Jacinto

En febrero me cansé de buscar una rutina que hiciese lo mismo que ROTADIMENSIONES y no la encontré (para unos planos que me llegaron). Lo solucioné a los ponchazos, con varios lisp que hacían parte del trabajo y deshacían otras.
Muchas gracias por la tuya, que hace maravillas.
Saludos