Toggle on/off

Ver el tema anterior Ver el tema siguiente Ir abajo

Toggle on/off

Mensaje por amc.dicsac el Lun Abr 04, 2016 11:52 pm

Hola que tal:

Alguien me podria dar un ejemplo de como puedo crear un toggle que cuando este con check me active un edit_box y a la vez desactive un popup_list cuando se le quite el check haga la viceversa.
avatar
amc.dicsac

Mensajes : 80
Fecha de inscripción : 17/03/2016
Edad : 27
Localización : Lima - Perú

Ver perfil de usuario http://axprogramlisp.blogspot.pe/

Volver arriba Ir abajo

Re: Toggle on/off

Mensaje por nolo el Mar Abr 05, 2016 4:25 pm

Con un bucle del que solo se pueda salir con los valores que asignes al 0k/cancel.
Si entiendo bien, solo quieres que con toggle cambie el modo de visualización, no que se oculte el edit_box/popup_list que son cosas muy distintas.

¿Vas a crear el dcl con el lisp o lo tienes aparte?
Por favor, muestra un trozo suficiente de la rutina, (en su caso, con el dcl en las versiones con el toggle activo e inactivo ) y te podremos completar la explicación sobre ella.

Un saludo

nolo

Mensajes : 136
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Toggle on/off

Mensaje por amc.dicsac el Mar Abr 05, 2016 6:00 pm

Ya tengon el toggle funcionando pero por algun motivo no se queda guardado el valor por defecto me sale un error

https://www.dropbox.com/sh/nzeyisvcy0pgn95/AADEUejcdwFIu7ChiRh_yxFra?dl=0
avatar
amc.dicsac

Mensajes : 80
Fecha de inscripción : 17/03/2016
Edad : 27
Localización : Lima - Perú

Ver perfil de usuario http://axprogramlisp.blogspot.pe/

Volver arriba Ir abajo

Re: Toggle on/off

Mensaje por nolo el Mar Abr 05, 2016 10:56 pm

A ver, lo que te he contado antes sobre el bucle es esto
Código:
;;;;el truco viene aqui
(setq ddiag 12)       
( while (> ddiag 1)
      
(if (not (new_dialog "INSERTA" dch "" (cond (*screenpointE1*) ('(-1 -1)))))
(progn
(alert "\nCuadro de dialogo NO ENCONTRADO")
(exit)))

(foreach image images16 (LM:DisplayBitmap (car image) (cdr image)))

;, aqui llegaba *tog1* como número y no como string
(if (or(null *tog1*)(/=(type *tog1*)'str)) (setq *tog1* "0"))

(if (null *opcion2*) (setq *opcion2* "0"))
(if (null *opcion1*) (setq *opcion1* "0"))
;;(if (null *opcion3*) (setq *opcion3* "1:20"))
(1-edi-copiarapido_16 "img_editblock")
;; Use your global variable and build the default path and filename.
(setq path (strcat Path:2DAMobBasico"bloques/")) ;;; "AutoCAD 2008/"))
(setq folder (GetDwgsMob "Bloques"));;"AutoCAD 2008"))

;;--------------Asignar valores por defecto---------------------------------------
(setq f1 "1-DWG-ALUMBRADO")
(If (or(null bloList)(null (listp bloList)))(setq bloList (blokinf (strcat path f1 ".txt"))) )
(setq bloqxlist (nth (atoi *opcion1*) bloList))

;;--------------------------- _addlist -----------------------------------------
;;Agregamos la lista con su propio "key"
;;------------------------------------------------------------------------------
(_ax:start "infolist" folder)
(_ax:start "bloqlist" bloList)

(setq ListEscala '("1:20" "1:25" "1:50" "1:75" "1:100" "1:125" "1:200" "1:250" "1:500" "MS:PS"))
(_ax:start "key_list_escala" ListEscala)
;; aqui la condición de nuevas vueltas del bucle
(if (/= *tog1* "0") (mode_tile "key_list_escala" 1)(mode_tile "key_list_escala" 0))



;;(set_tile "key_list_escala" *opcion3*)
;;(action_tile "key_list_escala" "(setq *escalaopcion3* (nth (atoi (setq *opcion3* $value)) ListEscala))")

;;-------------- Toggle accion---------------------------------------

;;; aqui estaba el error, ponía *tog1* (atoi $value)
(action_tile "key_tog" "(setq *tog1* $value) (mode_tile \"key_list_escala\" (atoi *tog1*)) (mode_tile \"key_escala1\" (- 1 (atoi *tog1*)))")
(set_tile "key_tog" *tog1*)

;;--------------------------- set_tile / action_tile "infolist"-----------------------------------------
;;Definimos la lista de archivos en la carpte previamente especificada
;;para guardarlo en la varibale *opcion2*
;;------------------------------------------------------------------------------------------------------
(set_tile "infolist" *opcion2*)
(action_tile "infolist" "(_ax:start \"bloqlist\" (setq bloList (blokinf (strcat path (nth (atoi (setq *opcion2* $value)) folder) \".txt\"))))")
;;--------------------------- set_tile / action_tile "bloqlist"-----------------------------------------
;;Definimos la lista de bloques dependiento de la lista .txt seleccionada previamente
;;para guardarlo en la varibale *opcion1*
;;------------------------------------------------------------------------------------------------------
(set_tile "bloqlist" *opcion1*)
(action_tile "bloqlist" "(setq bloqxlist (nth (atoi (setq *opcion1* $value)) bloList))")
;;--------------------------- *AX:Escala1* ----------------------------------------
;; Variable para la escala del bloque a insertar por defecto "1.00"
;;---------------------------------------------------------------------------------
(if (= *AX:Escala1* nil) (set_tile "key_escala1" "1.00") (set_tile "key_escala1" (rtos *AX:Escala1* 2 2)))
(mode_tile "key_escala1" 1)
(action_tile "key_escala1"  "(setq *AX:Escala1* (atof $value))")


;;---------------------------------------------------------------------------------
(action_tile "cancel" "(setq *screenpointE1* (done_dialog 1))")
(action_tile "accept" "(setq *screenpointE1* (done_dialog 2))")
(action_tile "img_editblock" "(setq *screenpointE1* (done_dialog 3)) (setq bloqxlist (nth (atoi (setq *opcion1* $value)) bloList))")
(setq ddiag (start_dialog))

) ;; fin de while



(setq dch (unload_dialog dch))
(if (and dcl (findfile dcl))
    (vl-file-delete dcl))
    (if (< 0 dch)
        (unload_dialog dch)
    )
    (princ)
(if (= ddiag 1) (prompt "\nPrograma Cancelado..."))
(if (= ddiag 2) (insertax))
(if (= ddiag 3) (open_dwg))
(setvar "cmdecho" 1)
(princ))

(defun insertax ()
(setvar "cmdecho" 0)
;;(setq unitblock (getvar "insunits"))
;;(setvar "insunits" 4)
(setq msxb (strcat  "\n>> Punto de Inserción del bloque [ " bloqxlist " ]: "))
(princ msxb)

;;;(cond ((= *opcion3* "1:20") (setq opcion3 0.4))
;;;      ((= *opcion3* "1:25") (setq opcion3 0.5))
;;;      ((= *opcion3* "1:50") (setq opcion3 1))
;;;      ((= *opcion3* "1:100") (setq opcion3 2))
;;;      ((= *opcion3* "1:125") (setq opcion3 2.5))
;;;      ((= *opcion3* "1:200") (setq opcion3 4))
;;;      ((= *opcion3* "1:250") (setq opcion3 5))
;;;      ((= *opcion3* "1:500") (setq opcion3 10))
;;;      ((= *opcion3* "MS:PS") (setq opcion3 20)))

;;;  (cond ((= key_tog T) (command "._insert" bloqxlist "_s" *AX:Escala1*))
;;;      ((= key_tog nil) (command "._insert" bloqxlist "_s" opcion3)))
;;; 
(command "._insert" bloqxlist "_s" *AX:Escala1*)
(while (= (logand (getvar "cmdactive") 1) 1)
      (command pause)
   )
(vl-cmdf "_.explode" "_l")
;;(setvar "insunits" unitblock)
(setvar "cmdecho" 1)
(princ))

Deberías hacer la operaciones de insertar dentro del bucle para que vuelva a aparecer el diálogo por si quieres seguir insertando cosas, o cambiar los valores de las acciones.
Como antes, he cambiado la ruta a c:/bloques para que funcione en mi máquina.
Por cierto, lo del atoi *tog1* que te fallaba lo he corregido pero lo de la inserción no entiendo como tienes previsto que funcione...

Un saludo


nolo

Mensajes : 136
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Toggle on/off

Mensaje por amc.dicsac el Mar Abr 05, 2016 11:34 pm

Te agradesco nolo por la respuesta pero no logro salir del bucle ni me permite hacer nada, la otra era porque pones (setq ddiag 12)
avatar
amc.dicsac

Mensajes : 80
Fecha de inscripción : 17/03/2016
Edad : 27
Localización : Lima - Perú

Ver perfil de usuario http://axprogramlisp.blogspot.pe/

Volver arriba Ir abajo

Re: Toggle on/off

Mensaje por nolo el Miér Abr 06, 2016 12:00 am

Por poner algo, un número mayor que las posibles respuestas y 12 me pareció bastante.
Tocando en cancel se hace (done_dialog 1) con lo que sale del bucle ( while (> ddiag 1) ya no se cumple
Ese valor lo manejas a tu antojo y lo recuperas con (setq ddiag (start_dialog))

Un saludo

nolo

Mensajes : 136
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Toggle on/off

Mensaje por amc.dicsac el Jue Abr 07, 2016 3:08 am

Hola que tal:

Nolo tengo este codigo que quiero agregarle a mi lisp pero me da error sigo con lo del valor por defecto del toggle que hasta ahora no me funciona.

Código:
(setq *op* (list (cons 'key_tog1 "0") (cons 'key_list_escala "0")))
(set_tile "key_tog1" key_tog1)
((setq key_tog1_fun
 (lambda ( value )
 (if (eq "1" value)
   (progn (mode_tile "key_list_escala" 0) (mode_tile "key_escala1" 0))
   (progn (mode_tile "key_list_escala" 1) (mode_tile "key_escala1" 1))))) key_tog1)
  
 (action_tile "key_tog1" "(key_tog1_fun (setq key_tog1 $value))")

------------------------------------------------------------------------------------------------------------------------------------------

Si derrepente el codigo te parece que no tiene por donde encajar te dejo un link donde el maestro LeeMac muestra una parte de lo que quiero pero sin el valor por defecto guardado.

https://www.dropbox.com/sh/1dkijg0tilfdoos/AAB7WkT8II7Ze5I2Eb75nqb-a?dl=0
avatar
amc.dicsac

Mensajes : 80
Fecha de inscripción : 17/03/2016
Edad : 27
Localización : Lima - Perú

Ver perfil de usuario http://axprogramlisp.blogspot.pe/

Volver arriba Ir abajo

Re: Toggle on/off

Mensaje por nolo el Vie Abr 08, 2016 12:50 am

No se puede ayudar si no te explicas detalladamente que quieres hacer.
¿Para que quieres que sirva ese código que adjuntas ahora ??
El código que te puse antes funciona hasta el insert (que no que que quieres hacer) y si quieres que salga con el 2, pues comienza el bucle con < 2.
Un saludo

nolo

Mensajes : 136
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Toggle on/off

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.