Ayuda con DCL

Ir abajo

Ayuda con DCL

Mensaje por carlosmgilp el Vie Mar 23, 2018 2:09 pm

Hola muchachos como están.
Quería pedirles un favor para ver si termino esto.

Estoy tratando de hacer un lisp con cuadro de dialogo, algo parecido al comando Quick Select.
Lo que pasa es que con ese comando se me hace muy largo seleccionar una entidad, darle ok y después volver al comando, seleccionar otra entidad y así sucesivamente.

Que quiero? poder seleccionar varias entidades a la vez y quede seleccionado todo en pantalla como lo hace el Quick select.
No necesito seleccionar por tantos filtros como el comando, solo por entidad.

Aqui adjunto el codigo del lisp que llevo.

Código:
(defun c:xxx  (/)
  (setq all (ssget "_X"))
  (setq lst-org nil)
  (setq i -1)
  (while (setq ent-uni (ssname all (setq i (1+ i))))
    (setq lst-org (cons (valor-cod 0 ent-uni) lst-org)))
  (reduce-conjunto lst-org)
  ;;
  (cmd-dcl)
  ;;
  )

;;; Listado 10.9. Extracción del valor asociado a un código DXF

(defun valor-cod (clave ename) (cdr (assoc clave (entget ename))))

;;; Elimina atomos repetidos de una lista
;;; Por Jose A. Alonso Jimenez
;;; jalonso@us.es

(defun reduce-conjunto (l)
  (cond ((atom l) l)
 ((member (car l) (cdr l)) (reduce-conjunto (cdr l)))
 (t (cons (reduce-conjunto (car l)) (reduce-conjunto (cdr l))))))

;;; Ejecucion del cuadro DCL

(defun cmd-dcl (/)
  (setq dcl_id (load_dialog "SelectObj.DCL"))
  (new_dialog "SelectObj" dcl_id)
  (start_list "txtobjorg" 3)
  (mapcar 'add_list (reduce-conjunto lst-org))
  (end_list)
  (start_dialog)
  (unload_dialog dcl_id))

Y este es el codigo del dcl

Código:
SelectObj : dialog
 {label="  Quick select Person";
 spacer;
 spacer;
 :row {
 :boxed_column {
 label=" Object type: ";
 :list_box {
 key="txtobjorg";
 is_enabled = true;
 width=18;
 height=13;
 }
 spacer;
 }
 :boxed_column {
 label=" Apply select to: ";
 :list_box {
 key="txtd";
 is_enabled = false;
 width=18;
 height=13;
 }
 spacer;
 }
 }
 spacer;
 :row {
 :button {
 key="selobj";
 label="Select";
 is_default=false;
 }
 :button {
 key="resselobj";
 label="Reset select";
 is_default=false;
 }
 :button {
 key="canselobj";
 label="Cancel";
 is_default=true;
 }
 }
 spacer;
 }

En el dcl quiero lograr lo siguiente.
En el cuadro izquierdo que muestre el listado de todas las entidades que hay.
Luego poder darle doble click a una de esas entidades y se vaya pasando al lado derecho en el otro cuadro y se va borrando del lado izquierdo.
el botón de select que seleccione todo lo que este en el cuadro derecho.
el botón reset que limpie el cuadro derecho y restablece el cuadro izquierdo y el botón cancelar pues cancela y cierra el dialogo.

Otra cosa hay alguna manera de saber todas las entidades que hay en el dibujo, pero que no sea de la manera que lo estoy haciendo yo.
Es que cuando es mucho se tarda demasiado, de la manera que lo estoy haciendo yo.

Mil gracias y espero puedan ayudarme.

carlosmgilp

Mensajes : 124
Fecha de inscripción : 17/03/2016
Edad : 36
Localización : Venezuela

Ver perfil de usuario

Volver arriba Ir abajo

Volver arriba

- Temas similares

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