Aplicaciones para MOVER+ROTAR y COPIAR+ROTAR múltiple
Publicado: Lun Mar 05, 2007 9:54 pm
Wenas a todos,
Os dejo un par de aplicaciones muy sencillitas, pero a la vez muy útiles en ciertas ocasiones cuando estamos trabajando con AutoCAD, las cuales ejecutan dos ordenes en una y además de modo múltiple, como son las ordenas "desplazar y girar" y las ordenes "copiar y girar".
Función para desplazar+rotar múltiple;
Comando que la ejecuta -> MYG (MG en método abreviado).
;; ///////////////////////////////////////////////////////////////////////////////////////
(defun err_myg (msg)
(if msg
(princ (strcat " Error - " msg))
)
(setq *error* mygerr mygerr nil)
(princ)
(princ "\n\n* Teclee MYG o ENTER para volver a ejecutar el comando *")
) ;_end defun errcsup
;; ///////////////////////////////////////////////////////////////////////////////////////
(defun c:myg (/ pt1 pt2 sset mygerr)
(setq mygerr *error* *error* err_myg)
(command "_undo" "_begin")
(prompt "Seleccione entidades a mover y rotar")(terpri)
(while
(setq sset (ssget))
(setq pt1 (getpoint "\nDesigne el primer PUNTO:"))
(command "_move" sset "" pt1 pause)
(setq pt2 (getvar "LASTPOINT"))
(command "_rotate" sset "" pt2 pause)
);_end while
(command "_undo" "_end")
(princ "\n\n* Teclee MYG o ENTER para volver a ejecutar el comando *")
(princ)
);_end defun c:myg
(princ "\n\n* Nuevo comando \"MYG\" cargado - Designed by J.S.R./santos_jsr@hotmail.com *")
(princ)
;; //////////////////////////////////////////////////////////////////////////////////
(defun c:MG ()
(c:myg)
)
Función para copiar+rotar múltiple;
Comando que la ejecuita -> CYG (CG en método abreviado).
;; ///////////////////////////////////////////////////////////////////////////////////////
(defun err_cyg (msg)
(if msg
(princ (strcat " Error - " msg))
)
(setq *error* cygerr cygerr nil)
(princ)
(princ "\n\n* Teclee CYG o ENTER para volver a ejecutar el comando *")
) ;_end defun errcsup
;; ///////////////////////////////////////////////////////////////
(defun c:cyg (/ pt1 sset sset2 ptend copy_ent cygerr)
(setq cygerr *error* *error* err_cyg)
(while
(princ "\nSeleccione entidades a copiar y rotar")(terpri)
(setq sset (ssget))
(if (/= sset nil) (setq pt1 (getpoint "\nDesigne el primer PUNTO:")) (progn (err_cyg) (exit)))
(command "_-block" "CYG" pt1 sset "")
(command "_-insert" "CYG" pt1 "" "" "0")
(setq sset2 (ssget "X" (list (cons 0 "INSERT") (cons 2 "CYG"))))
;;(command "_undo" "_begin")
(while
(setq ptend (getpoint "\nDesigne el PUNTO donde copiar objetos:" pt1 ))
(command "_copy" sset2 "" pt1 ptend)
;;(setq pt2 (getvar "LASTPOINT"))
(setq copy_ent (cdr (assoc -1 (entget (entlast)))))
(command "_rotate" copy_ent "" ptend pause)
(command "_explode" copy_ent)
(command "_-purge" "_blocks" "*" "_n")
);_end while
;;(command "_undo" "end")
(command "_explode" sset2)
(command "_-purge" "_blocks" "*" "_n")
);_end while
(princ "\n\n* Teclee CYG o ENTER para volver a ejecutar el comando *")
(princ)
);_end defun c:cyg
(princ "\n\n* Nuevo comando \"CYG\" cargado - Designed by J.S.R./santos_jsr@hotmail.com *")
(princ)
;; //////////////////////////////////////////////////////////////////////////////////
(defun c:CG ()
(c:cyg)
)
Un saludo a todos.
Os dejo un par de aplicaciones muy sencillitas, pero a la vez muy útiles en ciertas ocasiones cuando estamos trabajando con AutoCAD, las cuales ejecutan dos ordenes en una y además de modo múltiple, como son las ordenas "desplazar y girar" y las ordenes "copiar y girar".
Función para desplazar+rotar múltiple;
Comando que la ejecuta -> MYG (MG en método abreviado).
;; ///////////////////////////////////////////////////////////////////////////////////////
(defun err_myg (msg)
(if msg
(princ (strcat " Error - " msg))
)
(setq *error* mygerr mygerr nil)
(princ)
(princ "\n\n* Teclee MYG o ENTER para volver a ejecutar el comando *")
) ;_end defun errcsup
;; ///////////////////////////////////////////////////////////////////////////////////////
(defun c:myg (/ pt1 pt2 sset mygerr)
(setq mygerr *error* *error* err_myg)
(command "_undo" "_begin")
(prompt "Seleccione entidades a mover y rotar")(terpri)
(while
(setq sset (ssget))
(setq pt1 (getpoint "\nDesigne el primer PUNTO:"))
(command "_move" sset "" pt1 pause)
(setq pt2 (getvar "LASTPOINT"))
(command "_rotate" sset "" pt2 pause)
);_end while
(command "_undo" "_end")
(princ "\n\n* Teclee MYG o ENTER para volver a ejecutar el comando *")
(princ)
);_end defun c:myg
(princ "\n\n* Nuevo comando \"MYG\" cargado - Designed by J.S.R./santos_jsr@hotmail.com *")
(princ)
;; //////////////////////////////////////////////////////////////////////////////////
(defun c:MG ()
(c:myg)
)
Función para copiar+rotar múltiple;
Comando que la ejecuita -> CYG (CG en método abreviado).
;; ///////////////////////////////////////////////////////////////////////////////////////
(defun err_cyg (msg)
(if msg
(princ (strcat " Error - " msg))
)
(setq *error* cygerr cygerr nil)
(princ)
(princ "\n\n* Teclee CYG o ENTER para volver a ejecutar el comando *")
) ;_end defun errcsup
;; ///////////////////////////////////////////////////////////////
(defun c:cyg (/ pt1 sset sset2 ptend copy_ent cygerr)
(setq cygerr *error* *error* err_cyg)
(while
(princ "\nSeleccione entidades a copiar y rotar")(terpri)
(setq sset (ssget))
(if (/= sset nil) (setq pt1 (getpoint "\nDesigne el primer PUNTO:")) (progn (err_cyg) (exit)))
(command "_-block" "CYG" pt1 sset "")
(command "_-insert" "CYG" pt1 "" "" "0")
(setq sset2 (ssget "X" (list (cons 0 "INSERT") (cons 2 "CYG"))))
;;(command "_undo" "_begin")
(while
(setq ptend (getpoint "\nDesigne el PUNTO donde copiar objetos:" pt1 ))
(command "_copy" sset2 "" pt1 ptend)
;;(setq pt2 (getvar "LASTPOINT"))
(setq copy_ent (cdr (assoc -1 (entget (entlast)))))
(command "_rotate" copy_ent "" ptend pause)
(command "_explode" copy_ent)
(command "_-purge" "_blocks" "*" "_n")
);_end while
;;(command "_undo" "end")
(command "_explode" sset2)
(command "_-purge" "_blocks" "*" "_n")
);_end while
(princ "\n\n* Teclee CYG o ENTER para volver a ejecutar el comando *")
(princ)
);_end defun c:cyg
(princ "\n\n* Nuevo comando \"CYG\" cargado - Designed by J.S.R./santos_jsr@hotmail.com *")
(princ)
;; //////////////////////////////////////////////////////////////////////////////////
(defun c:CG ()
(c:cyg)
)
Un saludo a todos.