Echa un ojo al vídeo para ver como funciona
https://youtu.be/udkCNQUP1tM
También os dejo el código del LISP por si alguien lo quiere retocar y adecuar a sus necesidades
Código: Seleccionar todo
;-------------------------------------- crea presentaciones ------------------------------
(princ "\nEjecuta la aplicacion con la oreden: presenta")
(defun c:presenta (/)
(setvar "cmdecho" 0)
(vl-load-com)
(setq i 0)
(setq cuanta 0)
(setq titu 0)
(setq total 0
minimo-list
(list)
maximo-list
(list))
(defun *error* (msg)
(setvar "osmode" osmode-ant)
(setvar "aperture" aperture-ant)
(setvar "pickbox" pickbox-ant)
(princ "error: ")
(princ msg)
(princ)
)
(setq osmode-ant (getvar "osmode"))
(setq aperture-ant (getvar "aperture"))
(setq pickbox-ant (getvar "pickbox"))
(setvar "osmode" 0)
(command "_ucs" "_w")
(alert "Tienes que tener una presentacion creada con el nombre 00
Un BLOQUE con el mismo tamaño que el hueco de la ventana
y su origen debe de ser la esquina inferior izquierda.
Recomendacion:
Poner numero de hoja con CAMPO <variable de sistema CTAB> para numeracion automatica
Dudas a javilapina@gmail.com")
(setq ent (car (entsel "\nSeleccionar bloque con el recuadro : ")))
(setq pt0 (cdr (assoc 10 (entget ent))))
(setvar "osmode" 32)
(setq altu (getdist pt0 "\nAltura del recuadro : "))
(setvar "osmode" 0)
(setq altu (rtos altu))
(setq titu (getstring "\nNumero de orden con el que comienzan las presentaciones : "))
(setq titu (atoi titu))
(setq conjunto (ssget "_X" '((0 . "VIEWPORT"))))
(vla-put...-DisplayLocked (vlax-ename->vla-object (SSNAME conjunto 0)) 0)
(setq vle (vlax-ename->vla-object ent))
(setq nomb (vlax-get vle "name"))
(setq lista (ssget "_x" (list (cons 2 nomb))))
(if (/= lista nil)
(progn
(setq policon (sslength lista))
(setq total (+ policon titu))
(setq total (- total 1))
(setq cont 0)
(repeat policon
(setq blo (ssname lista cont))
(setq total (rtos total 2 0))
(command "_layout" "_c" "00" total)
(command "_layout" "_s" total)
(command "_mview" "_L" "_off" "_L" "")
(command "_mspace")
(command "_ucs" "_OB" blo)
(command "_plan" "")
(vla-GetBoundingBox
(vlax-ename->vla-object blo)
'minimo
'maximo
)
(setq
minimo-list
(cons (vlax-safearray->list minimo) minimo-list)
maximo-list
(cons (vlax-safearray->list maximo) maximo-list)
)
(setq pto (mapcar '/ (mapcar '+ (car minimo-list) (car maximo-list)) (list 2.0 2.0 2.0)))
(command "_ucs" "_w")
(command "_Zoom" "_c" pto altu)
(command "_ucs" "_p")
(command "_pspace")
(command "_Zoom" "_e")
(setq total (atof total))
(setq total (- total 1))
(setq cont (+ cont 1))
)
)
)
(setq bloquear -1)
(vl-load-com)
(setq conjunto (ssget "_X" '((0 . "VIEWPORT"))) i 0)
(repeat (sslength conjunto)
(vla-put...-DisplayLocked
(vlax-ename->vla-object (SSNAME conjunto i)) bloquear)
(vla-put...-color
(vlax-ename->vla-object (SSNAME conjunto i))
acByLayer)
(setq i (1+ i)))
(setvar "osmode" osmode-ant)
(setvar "aperture" aperture-ant)
(setvar "pickbox" pickbox-ant)
)