Crea presentaciones/Layouts automáticamente

Dudas y consultas sobre CAD. AutoCAD, Microstation y resto de aplicaciones CAD

Moderador: Moderadores

Responder
Avatar de Usuario
javi lapina
Auxiliar
Mensajes: 51
Registrado: Sab Abr 14, 2018 7:33 pm
Contactar:

Crea presentaciones/Layouts automáticamente

Mensaje por javi lapina »

Con esta aplicación en LISP creada por mi, puedes generar de forma automática presentacione/Layouts

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)
) 
Adjuntos
Crea_Presentaciones.zip
(2.08 KiB) Descargado 479 veces
Master en AutoCad y sigo aprendiendo.....

Plannerly ™ La plataforma de gestión BIM ™ SmartLeanBIM® © 2021
Plantillas para crear el Plan de Ejecución BIM (BEP). Cumplimiento de la norma ISO-19650
Plan gratuito en el que puedes acceder a todas las plantillas y si al comprarlo introduces el código DELINEACION obtendrás un 10% de descuento
Juan F
En prácticas
Mensajes: 2
Registrado: Vie Jun 05, 2020 1:07 pm
Contactar:

Re: Crea presentaciones/Layouts automáticamente

Mensaje por Juan F »

Buenas Javi.
Muchas gracias por el lisp, es muy interesante pero no logro hacerle funcionar en Bricscad. Me da el siguiente error:

: PRESENTA
Seleccionar bloque con el recuadro :
Altura del recuadro :
Numero de orden con el que comienzan las presentaciones : 1

; ----- LISP : Call Stack -----
; [0]...C:PRESENTA <<--
;
; ----- Error around expression -----
; (VLA-put......-DISPLAYLOCKED (VLAX-ENAME->VLA-OBJECT (SSNAME CONJUNTO 0)) 0)
; in file :
; \Desktop\presenta.lsp
;error: no function definition <VLA-put......-DISPLAYLOCKED> ; expected FUNCTION at [eval]

Tienes idea a qué se puede deber? :roll:
Muchas gracias
Avatar de Usuario
javi lapina
Auxiliar
Mensajes: 51
Registrado: Sab Abr 14, 2018 7:33 pm
Contactar:

Re: Crea presentaciones/Layouts automáticamente

Mensaje por javi lapina »

No tengo el programa instalado, pero voy hacer una consulta a un compi que trabaja con el, y con lo que sea ya te digo algo....
Master en AutoCad y sigo aprendiendo.....
Juan F
En prácticas
Mensajes: 2
Registrado: Vie Jun 05, 2020 1:07 pm
Contactar:

Re: Crea presentaciones/Layouts automáticamente

Mensaje por Juan F »

Perfecto Javi. Muchísimas gracias por tu interés.
Un saludo
Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 9 invitados