El proceso para cambiar el sistema de coordenadas de usuario (SCP) y la vista en autocad es simple:
- Llamar al comando "SCP" (_UCS) y utilizar "3P" (3 puntos) o "Z"(rotar sobre el eje Z).
- Llamar al comando "PLANTA" (_PLAN) para cambiar a la vista del nuevo SCP.
Nota: Esto no es necesario si la variable "UCSFOLLOW" esta con un valor de 1, ya que con la variable en este modo la vista cambiará automáticamente al cambiar el SCP. - Hacer "ZOOM" y "ENCUADRES" hasta situarnos de nuevo en la zona de trabajo, ya que al cambio de vista se visualiza el dibujo en toda su extensión.
|
Lo que hacemos con estas utilidades es intentar eliminar pasos que nos ralenticen el trabajo en autocad.
Nuestra orientación de SCP lo acortamos a dos puntos, el primer punto sera el origen de nuestro nuevo SCP y el segundo la dirección X y el tercero (dirección Y) la calculamos por código. De esta manera y como es para dibujo en 2d eliminamos el paso de selección del tercer punto. Pasamos los datos al comando "SCP". La vista la cambiamos por código y por último restablecemos el centro de la vista y el zoom al nivel con el que estábamos trabajando anteriormente. |
|
|
|
UCs2P_Vw: | Automático. Cambia el SCP indicando dos puntos, cambia la vista al nuevo SCP(UCS) y restaura el factor de zoon al que teníamos. |
|
|
UCs2P_N: | Solo SCP(UCS). Cambia el SCP indicando dos puntos. |
|
|
UCs2P_?: | Pregunta. Cambia el SCP indicando dos puntos y muestra un mensaje para que indiquemos si queremos o no cambiar a la vista del nuevo SCP. Si la respuesta es afirmativa, cambia la vista al nuevo SCP(UCS) y restaura el factor de zoon al que teníamos. |
|
|
UCsW_Zoom: | Cambia el SCP a Universal, cambia la vista al SCU y restaura el factor de zoon al que teníamos anteriormente. |
Select all
Configuración.
Los archivos han de estar en una ruta de AutoCAD valida (ver Ordenación y carga de nuestros archivos de programación en AutoCAD)
;;*************************** 2d UCS Auxiliares ********************************
;;
;;Revisiones:
;; Versión LaMarmita
;; José Luis García Galán 24/08/15
;; Versión 1.0.0
;; José Luis García Galán 27/09/05
;;******************************************************************************
;;-------------------------------- 2D-UCs2P ------------------------------------
;;Función principal
;;Argument: bChgView : 0 = Auto, 1 = preguntar, nil = No cambiar vista
;;------------------------------------------------------------------------------
(defun 2D-UCs2P ( bChgView / PCent Size pt1 pt2 pt3
;|Functions|; *error* Get-2dPt)
;;---------------------------- *error* ----------------------------------
;; chequeo de *error*
;;-----------------------------------------------------------------------
(defun *error* (msg / funC)
(while (/= (getvar "CMDNAMES") "") (vl-cmdf))
(if (= 8 (logand 8 (getvar "UNDOCTL")))
(progn
(vl-cmdf "_.undo" "_e")
(vl-cmdf "_u")
)
)
(if msg
(if (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*,interrup*"))
(princ (strcat "\nUCs2P Error: " msg))
)
)
(jlgg-Res_Vars)
(princ)
);c.defun
;;-------------------------------------------------------
(defun Get-2dPt (pt) (list (car pt)(cadr pt) 0.0)) ; 2D coords
;;-------------------------- MAIN ----------------------------------------
(jlgg-init_vars (list (list "OSOPTIONS" (boole 7 (getvar 'OSOPTIONS) 4))
'("ELEVATION" 0.0)
'("SNAPANG" 0)
'("UCSFOLLOW" 0)
'("osnapcoord" 1)
'("cmdecho" 0)))
(setq PCent (Get-2dPt (trans (getvar "VIEWCTR") 1 0))
Size (getvar "VIEWSIZE"))
(prompt "\nAlineacion de SCP(UCS) con 2 Puntos: ")
(if (setq pt1 (getpoint ">> Primer punto: "))
(if (setq pt2 (getpoint pt1 ">> Dirección X: "))
(progn
;;Option 1:
;;(setq pt1 (Get-2dPt pt1) pt2 (Get-2dPt pt2))
;;(vl-cmdf "_.UCS" "_O" pt1 "_.UCS" "_Z" pt1 pt2)
;;Option 2:
(setq pt1 (Get-2dPt (trans pt1 1 0)) pt2 (Get-2dPt (trans pt2 1 0))) ;puntos a ucs Universal y 2D
(setq pt3 (polar pt1 (+ (angle pt1 pt2)(/ pi 2)) 1.0)) ;obtenemos el punto 3 en ucsW
(vl-cmdf "_.UNDO" "_BE")
(vl-cmdf "_.UCS" "_W" "_.UCS" "_3P" pt1 pt2 pt3)
;;__________________________________________________________
;bChgView : 0 = Auto, 1 = preguntar, nil = No cambiar vista
(cond
((not bChgView))
((= bChgView 0)
(vl-cmdf "_.PLAN" "_C")
(vl-cmdf "_.ZOOM" "_C" (trans PCent 0 1) Size)
)
((and (= bChgView 1)
(= 6 (jlgg-LispMsg "¿Cambiar La Vista al nuevo\nSistema de Coordenadas Indicado?" 36 "Nuevo SCP (UCS)")))
(vl-cmdf "_.PLAN" "_C")
(setq PCent (trans PCent 0 1))
(vl-cmdf "_.ZOOM" "_C" PCent Size)
)
);c.cond
(vl-cmdf "_.UNDO" "_E")
);c.prg
);c.if
);c.if
(*error* nil)
);c.defun
;;------------------------------ C:UCs2P_Vw ------------------------------------
;;Función en automático
;;Cambia el SCP en 2D por dos puntos y Restaura a la vista del nuevo SCP(UCS)
;;con el el factor de zoon actual con la misma medida de "VIEWSIZE"
;;------------------------------------------------------------------------------
(defun C:UCs2P_Vw ()
(2D-UCs2P 0)
(princ)
);c.defun
;;------------------------------- c:UCs2P_N ------------------------------------
;;Función solo SCP(UCS)
;;Cambia el SCP en 2D por dos puntos (no cambia la vista)
;;------------------------------------------------------------------------------
(defun c:UCs2P_N ()
(2D-UCs2P nil)
(princ)
);c.defun
;;------------------------------- c:UCs2P_? ------------------------------------
;;Función como en automático, pero preguntando
;;Cambia el SCP en 2D y pregunta si cambia a la vista del SCP(UCS)
;;------------------------------------------------------------------------------
(defun c:UCs2P_? ()
(2D-UCs2P 1)
(princ)
);c.defun
;;------------------------------- c:UCsW_Zoom ----------------------------------
;;SCU(WCS)
;;Restaura el SCP Universal (UCS Word) con el el factor de zoon actual con la
;;misma medida de "VIEWSIZE"
;;------------------------------------------------------------------------------
(defun c:UCsW_Zoom ( / PCent Size
;|Functions|; *error* Get-2dPt)
;;---------------------------- *error* ----------------------------------
;; chequeo de *error*
;;-----------------------------------------------------------------------
(defun *error* (msg / funC)
(while (/= (getvar "CMDNAMES") "") (vl-cmdf))
(if (= 8 (logand 8 (getvar "UNDOCTL")))
(progn
(vl-cmdf "_.undo" "_e")
(vl-cmdf "_u")
)
)
(if msg
(if (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*,interrup*"))
(princ (strcat "\nUCsW_Zoom Error: " msg))
)
)
(jlgg-Res_Vars)
(princ)
);c.defun
;;---------------------------------------------------------------
(defun Get-2dPt (pt) (list (car pt)(cadr pt) 0.0)) ; 2D coords
;;-------------------------- MAIN ----------------------------------------
(jlgg-init_vars (list (list "OSOPTIONS" (boole 7 (getvar 'OSOPTIONS) 4))
'("ELEVATION" 0.0)
'("SNAPANG" 0)
'("UCSFOLLOW" 1)
'("osnapcoord" 1)
'("cmdecho" 0)))
(vl-cmdf "_.UNDO" "_BE")
(setq PCent (Get-2dPt (trans (getvar "VIEWCTR") 1 0))
Size (getvar "VIEWSIZE"))
(if (= (getvar "WORLDUCS") 0) ;no esta en el usc universal
(vl-cmdf "_.UCS" "_world" "_.ZOOM" "_C" PCent Size)
(if (not (zerop (getvar "VIEWTWIST"))) ;esta en el Wcs pero la vista esta girada
(vl-cmdf "_.PLAN" "_world" "_.ZOOM" "_C" PCent Size)
)
);c.if
(vl-cmdf "_.UNDO" "_E")
(*error* nil)
(princ)
);c.defun
(princ)
En nuestro caso la ruta para estas utilidades la hemos colocado en el directorio "Utiles" dentro de nuestro proyecto: "LaMarmita\Utiles", y he añadido la ruta parcial de carga al código de "LaMarmita.mnl":
;;Carga de funciones de La Marmita:
(setq MiListLISP
'("jlgg_Auxiliares.lsp"
;;simbolos:
"Simbolos\\InsertEscalasGRP.lsp"
"Simbolos\\SimbDetallesSecciones.lsp"
;;Utiles:
"Utiles\\UCSAux.lsp"
)
)
Actualizaciones necesarias.
El programa necesitará que estén cargadas y actualizadas las funciones comunes para los programas publicados en VisualLisp
en La Marmita.
Descargar actualización: funciones Auxiliares Para usarlo con el proyecto global de "La Marmita" se necesitan los archivos actualizados de menú de autocad.
Descargar actualización: Archivos de menú de La Marmita Descarga.
Descargar actualización: funciones Auxiliares Para usarlo con el proyecto global de "La Marmita" se necesitan los archivos actualizados de menú de autocad.
Descargar actualización: Archivos de menú de La Marmita Descarga.
Como siempre, espero sea de utilidad.
Un saludo a tod@s desde España.
No hay comentarios:
Publicar un comentario