Ayuda con rutina lisp de Coordenadas

Ir abajo

Ayuda con rutina lisp de Coordenadas Empty Ayuda con rutina lisp de Coordenadas

Mensaje por José Francisco el Vie Mayo 10, 2019 12:49 am

Buen día a todos.
Espero se encuentren pura vida.
Estoy tratando de programar un lisp que dibuja en pantalla el perímetro que forma un listado de coordenadas X,Y. Ese listado lo tengo ya sea en la pantalla o en un archivo físico, por lo que la rutina me da la opción de seleccionar los datos o de introducirlos.( Si tienen el tiempo de correr el lisp lo entenderán mejor.)
La rutina más o menos ya la tengo pero al correrla, la primera vez, me presenta el siguiente mensaje:
Application ERROR: Invalid type sent as command input "0"
ERROR en la aplicación: Tipo no válido enviado como entrada de comando "0"
Si utilizo de nuevo la rutina, el mensaje ya no aparece.
Por favor, pueden revisar este lisp y darme una idea de cuál es el problema?.
Les agradezco desde ya la ayuda que puedan brindarme.
Saludos.

Código:
(defun c:PC (/ cx cy pd lista cont nx ny xy)
    (vl-load-com)
    (setvar "CMDECHO" 0)
    (vl-cmdf "_UNITS" "2" "3" "2" "3" "90" "_Y")
    (vl-cmdf "_setvar" "angdir" "1")
    (vl-cmdf "_setvar" "angbase" "270")
    (vl-cmdf "_color" "bylayer")
    (setvar "OSMODE" 45)
    (setvar "clayer" "0")
    (setvar "pdmode" 32)
;********************************************************************
    (if (= esc nil)
        (setq esc 1000)
    )
    (setq hn (rtos esc 2 0))
    (setq rotu (strcat "Escala 1:" hn " "))
    (setq hn (getreal rotu))
    (if (/= hn nil)
        (setq ESC hn)
    )
    (setq msc (/ 1000 esc))
    (setq ht (/ 2 msc))
    (setq tp (/ 1.5 msc))
    (setq xd (* (/ esc 1000) 1.5))
    (setvar "pdsize" tp)
;********************************************************************
    (setq plano (getstring "\nNumero de Plano :"))
    (vl-cmdf "_LAYER" "_M" Plano "_C" "204" "" "")
    (vl-cmdf "_LAYER" "_M" "Puntos" "_C" "1" "" "")
    (vl-cmdf "_layer" "_M" "ID" "_c" "3" "" "")
    (setq vi (getint "\nVertice Inicial : "))
    (setq vert vi)
    (setq vt (rtos vi 2 0))
;*********************************************************************
    (initget "Selec Intr")
    (setq STRDC (getkword
          "\nSeleccionar Coordenadas de Pantalla o Introducir Coordenadas ? [S/I]: "))
    (if (= STRDC "Selec")
      (sc)
    )
;********************************************************************
    (if (= STRDC "Intr")
      (ic)
    )
;*********************************************
  (setq nv (length lista))
  (setq control (- nv 1))
  (setq cont 0) (setq cont1 1)
  (setq lista (reverse lista))
  (repeat (length lista)
    (setq nx (car (nth cont lista)))
    (setq ny (cadr (nth cont lista)))
    (setq nx1 (+ nx xd))
    (setq xy (list nx ny))
    (setq xy1 (list nx1 ny))
    (setvar "clayer" "ID")
    (vl-cmdf "_text" xy1 ht "90" vi)
    (setvar "clayer" "Puntos")
    ;(vl-cmdf "_circle" xy tp)
    (vl-cmdf "_point" xy)
    (princ)
    (setq cont (+ cont 1))
    (setq vi (+ vi 1))
  );fin del repeat
  (setvar "clayer" Plano)
  (setq cont 0) (setq cont1 1)
  (repeat (length lista)
    (setq nx (car (nth cont lista)))
    (setq ny (cadr (nth cont lista)))
    (setq npxy (list nx ny))
    (if (> cont1 control)
        (setq cont1 0)
    )
    (setq nx (car (nth cont1 lista)))
    (setq ny (cadr (nth cont1 lista)))
    (setq npxy1 (list nx ny))

    (vl-cmdf "_pline" npxy npxy1 "")
    (vl-cmdf "_PEDIT" "_L" "J" Sl "" "")
    (setq Sl (ssget "L"))
    (setq cont (+ cont 1)) (setq cont1 (+ cont1 1))
  );fin del repeat
  (setvar "clayer" "0")   
);fin del defun
;**************************************************************
(defun sc ()
  (princ "\nVertice < ")
  (princ (strcat vt " >"))
  (setq p 1)
  (setq entx (car (entsel "\nSeleccione la Coordenada X :")))
  (while (/= p nil)
    (setq enty (car (entsel "\nSeleccione la Coordenada Y :")))
    (setq cx (atof (cdr (assoc 1 (entget entx)))))
    (setq cy (atof (cdr (assoc 1 (entget enty)))))
    (setq pd (list cx cy))
    (setq lista (cons pd lista))
    (setq vert (+ vert 1))
    (setq vt (rtos vert 2 0))
    (princ "\nVertice < ")
    (princ (strcat vt " >"))
    (setq entx (car (entsel "\nSeleccione la Coordenada X :")))
    (if (null entx)
      (setq p nil)
    )
  );fin del while
);fin del defun
;***************************************************************
(defun ic ()
  (princ "\nVertice < ")
  (princ (strcat vt " >"))
  (setq cx (getreal "\nCoordenada X: "))
  (while (/= cx nil)
    (setq cy (getreal "\nCoordenada Y: "))
    (setq pd (list cx cy))
    (setq lista (cons pd lista))
    (setq vert (+ vert 1))
    (setq vt (rtos vert 2 0))
    (princ "\nVertice < ")
    (princ (strcat vt " >"))
    (setq cx (getreal "\nCoordenada X: "))
  );fin del while
);fin del defun

 
 

José Francisco

Mensajes : 30
Fecha de inscripción : 30/03/2016

Volver arriba Ir abajo

Ayuda con rutina lisp de Coordenadas Empty Re: Ayuda con rutina lisp de Coordenadas

Mensaje por nolo el Miér Mayo 15, 2019 12:09 am

Complicadillo lo pones sin un dwg pero vamos a ver si he acertado.

El resultado del error 0 es porque la rutina continua hasta el final que es poner a cero cmdecho. El error creo que viene del ultimo repeat, o al capturar la última entidad (igual no hay¿?) o al sobrepasar la longitud de la lista con las variables de control

Yo te aconsejo:

1º Todos las variables de entorno que toques se deben recuperar al acabar la rutina
(yo lo hago con el mapcar pero se pueden hacer de una en una guardando el estado al principio)
2º la subrutinas conviene guardarlas con el archivo principal añadiendo su nombre en la definición de variables locales
3º Para asegurarte dos entradas paralelas lo mejor es utilizar la función and en el condicional del while
4º Para evitar errores en el initget es mejor utilizar el 1 al final de la lista de selección para evitar el return involuntario o direccionar la selección con un cond poniendo como ultima opción el valor T (no coincide con nada) para hacer que se salga del programa
5º Para trabajar con una lista lo mejor es utilizar la función foreach x en lista, es secuencial y te quitas de las variables de control del repeat
6º En el caso de operar con puntos iniciales y finales, en mi opinión, lo mejor es utilizar un mapcar con dos listas, una de los puntos iniciales y otra de los finales (en tu caso el cdr de lista)
7º La última entidad la recuperas con la función (entlas) mejor que con el ssget "L"

Un saludo
Código:
(defun c:PC ();;/ cx cy pd lista cont nx ny xy sc ic)
(vl-load-com)
;;******************************* variables de entorno
(setq variables '(CMDECHO angdir angbase OSMODE clayer pdmode CECOLOR )
   old (mapcar 'getvar variables))
(mapcar 'setvar variables '(0 1 270 45 "0" 32 "bylayer"))

;;*********************************** funciones
(defun sc (/ cx cy)
(princ (strcat "\nVertice < " vt " >"))
(setq    lista nil)
(while  (and
   (setq entx (entsel "\nSeleccione la Coordenada X :"))
    (setq enty (entsel "\nSeleccione la Coordenada Y :"))
   )
    (setq cx (atof (cdr (assoc 1  (entget (car entx)))))
   cy (atof (cdr (assoc 1 (entget (car enty)))))
   )
    (setq lista (cons (list cx cy) lista))
    (setq vert (+ vert 1)
   vt (rtos vert 2 0)
   )
    (princ (strcat "\nVertice < " vt " >"))
  );fin del while
);fin del defun
;;*****************************************
(defun ic ( / cx cy)
(princ (strcat "\nVertice < " vt " >"))
(while  (and
   (setq cx (getreal "\nCoordenada X: "))
   (setq cy (getreal "\nCoordenada Y: "))
   )
   (setq lista (cons (list cx cy) lista))
   (setq vert (1+ vert)
   vt (rtos vert 2 0)
   )
    (princ (strcat "\nVertice < " vt " >"))
  );fin del while
);fin del defun
;; *************************************** iniciar variables locales

(vl-cmdf "_UNITS" "2" "3" "2" "3" "90" "_Y")
(or esc (setq esc 1000))
(setq    rotu (strcat "Escala 1:" (rtos esc 2 0) " ")
   msc (/ 1000 esc)
   ht (/ 2 msc)
   tp (/ 1.5 msc)
   xd (* (/ esc 1000) 1.5)
)
(setvar "pdsize" tp)
;*********************************************** entrada datos
(setq plano (getstring "\nNumero de Plano :"))

    (vl-cmdf "_LAYER" "_M" Plano "_C" "204" "" "")
    (vl-cmdf "_LAYER" "_M" "Puntos" "_C" "1" "" "")
    (vl-cmdf "_layer" "_M" "ID" "_c" "3" "" "")

(setq vi (getint "\nVertice Inicial : "))
    (setq vert vi
         vt (rtos vi 2 0)
   )
;; ************************ seleccion del modo de trabajo
    (initget "Selec Intr" 1) ;; 1 alternativo
    (setq STRDC (getkword
          "\nSeleccionar Coordenadas de Pantalla o Introducir Coordenadas ? [S/I]: "))
    (cond
   ((= STRDC "Selec")(sc))
       ((= STRDC "Intr")(ic))
   (T     (princ "/nNo hay selección")
      (mapcar 'setvar variables old)
      (exit))
    )

;*********************************************
(setq    lista (reverse lista))
;;; foreach cuando se trabaja con una sola lista
(foreach a lista
   (setq xy1(list (+ (car a) xd)(cadr a)))
   (setvar "clayer" "ID")
   (vl-cmdf "_text" xy1 ht "90" vi)
   (setvar "clayer" "Puntos")
   (vl-cmdf "_point" a)
   (setq vi (+ vi 1))
)

(setvar "clayer" Plano)
;; mapcar cuando trabajas con dos listas en paralelo
;;;, puntos iniciales y puntos finales
(mapcar '(lambda(a b)
   (setq sl (entlast))
   (vl-cmdf "_pline" a b "")
   (vl-cmdf "_PEDIT" (entlast) "_J" Sl "" "")
)lista (cdr lista))

(mapcar 'setvar (reverse variables)(reverse old));; cmdecho al final  
(princ)  ;; evitar el cero
);fin del defun

nolo

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

Volver arriba Ir abajo

Ayuda con rutina lisp de Coordenadas Empty Re: Ayuda con rutina lisp de Coordenadas

Mensaje por José Francisco el Miér Mayo 15, 2019 6:30 pm

Buenos días a todos.
Nolo, muchas gracias por su respuesta.
Tiene usted razón, sin un dwg, es complicado, se me fue, disculpen.
El lisp que usted a corregido está bien, dibuja una polilinea con las coordenadas que se ingresan pero la deja abierta.
Busco que se genere una polilinea que inicie en un punto y termine en ese mismo punto
Con respecto al mensaje Application ERROR: Invalid type sent as command input "0" que aparece al finalizar el lisp, en esta pagina:

https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/what-is-wrong-with-this-vl-cmdf/td-p/2053537

me dan una idea de cual es el error, aunque la verdad no lo entendí del todo.
Lo que he hecho es cambiar todos los vl-cmdf por command y el mensaje ya no aparece, pero....
Siempre hay un pero más. Ahora al finalizar el lisp me aprece este otro mensaje: Unknown command "PC". Press F1 for help.

En alguna parte leí que se debe a un enter ("") de más, lo busco y no lo encuentro.
No consigo, no encuentro como subir un dwg por lo que puede ser que con la imagen se entienda un poco lo que quiero que el lisp haga.
Desde ya, muchas gracias por la ayuda que me pueda dar.

Este el el nuevo codigo:
Código:
(defun c:PC (/ cx cy pd lista cont nx ny xy)
    (vl-load-com)
    (setvar "CMDECHO" 0)
    (command "_UNITS" "2" "3" "2" "3" "90" "_Y")
    (command "_setvar" "angdir" "1")
    (command "_setvar" "angbase" "270")
    (command "_color" "bylayer")
    (setq osm (getvar "osmode"))
    (setvar "OSMODE" 45)
    (setvar "clayer" "0")
    (setvar "pdmode" 32)
;********************************************************************
    (if (= esc nil)
        (setq esc 1000)
    )
    (setq hn (rtos esc 2 0))
    (setq rotu (strcat "Escala 1:" hn " "))
    (setq hn (getreal rotu))
    (if (/= hn nil)
        (setq ESC hn)
    )
    (setq msc (/ 1000 esc))
    (setq ht (/ 2.0 msc))
    (setq tp (/ 1.5 msc))
    (setq xd (* (/ esc 1000) 1.5))
    (setq np "Plano")
    (setvar "pdsize" tp)
;********************************************************************
    (setq Plano (getstring "\nNumero de Plano :"))
    (if (= Plano "")
      (setq Plano np)
    )
    (command "_LAYER" "_M" Plano "_C" "204" "" "")
    (command "_LAYER" "_M" "Puntos" "_C" "1" "" "")
    (command "_layer" "_M" "ID" "_c" "3" "" "")
    (setq vi (getint "\nVertice Inicial : "))
    (if (null vi) (setq vi 1) vi )
    (setq vert vi)
    (setq vt (rtos vi 2 0))
;*********************************************************************
    (setq metodo (strcase (getstring "Datos <S>eleccionar Coordenadas o <I>ntroducir Coordenadas: [S/I] ")))
    (if (= metodo "I")
    (ic)
    )
    (if (= metodo "S")
    (sc)
    )
;*********************************************
  (command "_osnap" "_off")
  (setq nv (length lista))
  (setq control (- nv 1))
  (setq cont 0) (setq cont1 1)
;*********************************************
  (setq lista (reverse lista))
  (repeat (length lista)
    (setq nx (car (nth cont lista)))
    (setq ny (cadr (nth cont lista)))
    (setq nx1 (+ nx xd))
    (setq xy (list nx ny))
    (setq xy1 (list nx1 ny))
    (setvar "clayer" "ID")
    (command "_text" xy1 ht "90" vi)
    (setvar "clayer" "Puntos")
    ;(command "_circle" xy tp)
    (command "_point" xy)
    (princ)
    (setq cont (+ cont 1))
    (setq vi (+ vi 1))
  );fin del repeat
  (setvar "clayer" Plano)
  (setq cont 0) (setq cont1 1)
  (repeat (length lista)
    (setq nx (car (nth cont lista)))
    (setq ny (cadr (nth cont lista)))
    (setq npxy (list nx ny))
    (if (> cont1 control)
        (setq cont1 0)
    )
    (setq nx (car (nth cont1 lista)))
    (setq ny (cadr (nth cont1 lista)))
    (setq npxy1 (list nx ny))

    (command "_pline" npxy npxy1 "")
    (command "_PEDIT" "_L" "J" Sl "" "")
    (setq Sl (ssget "L"))
    (setq cont (+ cont 1)) (setq cont1 (+ cont1 1))
  );fin del repeat
  (setvar "OSMODE" osm)
  (setvar "clayer" "0")
  (prin1)
);fin del defun
;********************************************************************
(defun sc ()
  (princ "\nVertice < ")
  (princ (strcat vt " >"))
  (setq p 1)
  (setq entx (car (entsel "\nSeleccione la Coordenada X :")))
  (while (/= p nil)
    (setq enty (car (entsel "\nSeleccione la Coordenada Y :")))
    (setq cx (atof (cdr (assoc 1 (entget entx)))))
    (setq cy (atof (cdr (assoc 1 (entget enty)))))
    (setq pd (list cx cy))
    (setq lista (cons pd lista))
    (setq vert (+ vert 1))
    (setq vt (rtos vert 2 0))
    (princ "\nVertice < ")
    (princ (strcat vt " >"))
    (setq entx (car (entsel "\nSeleccione la Coordenada X :")))
    (if (null entx)
      (setq p nil)
    )
  );fin del while
);fin del defun
;*********************************************************************
(defun ic ()
  (princ "\nVertice < ")
  (princ (strcat vt " >"))
  (setq cx (getreal "\nCoordenada X: "))
  (while (/= cx nil)
    (setq cy (getreal "\nCoordenada Y: "))
    (setq pd (list cx cy))
    (setq lista (cons pd lista))
    (setq vert (+ vert 1))
    (setq vt (rtos vert 2 0))
    (princ "\nVertice < ")
    (princ (strcat vt " >"))
    (setq cx (getreal "\nCoordenada X: "))
  );fin del while
);fin del defun

 
 
Ayuda con rutina lisp de Coordenadas Ejempl10

José Francisco

Mensajes : 30
Fecha de inscripción : 30/03/2016

Volver arriba Ir abajo

Ayuda con rutina lisp de Coordenadas Empty Re: Ayuda con rutina lisp de Coordenadas

Mensaje por nolo el Jue Mayo 16, 2019 10:38 pm

No es que falle el vlcmdf o comand es que por la forma que tienes de crear las líneas en casos determinados subministras un valor nulo no se si en la variable cotnt o cont1. Ya te dije que es muy complicada la forma que tienes de trabajar con las listas.
Cometí un error que luego no me dejo corregir la web porque me negaba el acceso. El cero venía por acabar la rutina con celayer "0" no con cmdecho como yo escribí.

En el caso del mapcar, Si quieres que se cierre, no tienes mas que añadir el punto inicial a la lista de puntos finales.

Por ejemplo, si cambias
Código:
)lista (cdr lista))
por
Código:
)lista (append (cdr lista)(list(car lista))) )

Ya debe cerrar

Un saludo

PD. El dwg te ilustra de otras cosas como el alto de texto que el jpg no dice. En este caso, no se porque me salen los textos al revés y a ti no, utilizando el angbase 270 y el 90 del comando text que propones. La próxima vez sube un dwg, por favor.

nolo

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

Volver arriba Ir abajo

Ayuda con rutina lisp de Coordenadas Empty Re: Ayuda con rutina lisp de Coordenadas

Mensaje por José Francisco el Vie Mayo 17, 2019 6:34 pm

Buen día a todos.
Nolo, muchas gracias por su ayuda y más que eso, por su valioso tiempo.
Con las correcciones que usted le ha hecho al lisp, trabaja de maravilla.
Cambié (vl-cmdf "_UNITS" "2" "3" "2" "3" "90" "_Y") por (vl-cmdf "_UNITS" "2" "3" "2" "3" "90" "_N") y el texto está horientado al norte y al inicio del lisp (defun c:PC (/ lista) porque de lo contrario la lista se conserva y se agrega a una nueva lista al ejecutar una vez más el lisp.
De nuevo, muchas gracias.
En el siguiente enlace subo un dwg con un ejemplo:

https://www.dropbox.com/s/6i4zvf667o3nvd1/Ejemplo.dwg?dl=0

Y este es el codigo final:
Código:
    (defun c:PC (/ lista);;/ cx cy pd lista cont nx ny xy sc ic)
    (vl-load-com)
    ;;******************************* variables de entorno
    (setq variables '(CMDECHO angdir angbase OSMODE clayer pdmode CECOLOR )
      old (mapcar 'getvar variables))
    (mapcar 'setvar variables '(0 1 270 45 "0" 32 "bylayer"))

    ;;*********************************** funciones
    (defun sc (/ cx cy)
    (princ (strcat "\nVertice < " vt " >"))
    (setq    lista nil)
    (while  (and
      (setq entx (entsel "\nSeleccione la Coordenada X :"))
        (setq enty (entsel "\nSeleccione la Coordenada Y :"))
      )
        (setq cx (atof (cdr (assoc 1  (entget (car entx)))))
      cy (atof (cdr (assoc 1 (entget (car enty)))))
      )
        (setq lista (cons (list cx cy) lista))
        (setq vert (+ vert 1)
      vt (rtos vert 2 0)
      )
        (princ (strcat "\nVertice < " vt " >"))
      );fin del while
    );fin del defun
    ;;*****************************************
    (defun ic ( / cx cy)
    (princ (strcat "\nVertice < " vt " >"))
    (while  (and
      (setq cx (getreal "\nCoordenada X: "))
      (setq cy (getreal "\nCoordenada Y: "))
      )
      (setq lista (cons (list cx cy) lista))
      (setq vert (1+ vert)
      vt (rtos vert 2 0)
      )
        (princ (strcat "\nVertice < " vt " >"))
      );fin del while
    );fin del defun
    ;; *************************************** iniciar variables locales

    (vl-cmdf "_UNITS" "2" "3" "2" "3" "90" "_N")
    (or esc (setq esc 1000))
    (setq    rotu (strcat "Escala 1:" (rtos esc 2 0) " ")
      msc (/ 1000 esc)
      ht (/ 2 msc)
      tp (/ 1.5 msc)
      xd (* (/ esc 1000) 1.5)
    )
    (setvar "pdsize" tp)
    ;*********************************************** entrada datos
    (setq plano (getstring "\nNumero de Plano :"))

        (vl-cmdf "_LAYER" "_M" Plano "_C" "204" "" "")
        (vl-cmdf "_LAYER" "_M" "Puntos" "_C" "1" "" "")
        (vl-cmdf "_layer" "_M" "ID" "_c" "3" "" "")

    (setq vi (getint "\nVertice Inicial : "))
        (setq vert vi
            vt (rtos vi 2 0)
      )
    ;; ************************ seleccion del modo de trabajo
        (initget "Selec Intr" 1) ;; 1 alternativo
        (setq STRDC (getkword
              "\nSeleccionar Coordenadas de Pantalla o Introducir Coordenadas ? [S/I]: "))
        (cond
      ((= STRDC "Selec")(sc))
          ((= STRDC "Intr")(ic))
      (T    (princ "/nNo hay selección")
          (mapcar 'setvar variables old)
          (exit))
        )

    ;*********************************************
    (setq    lista (reverse lista))
    ;;; foreach cuando se trabaja con una sola lista
    (foreach a lista
      (setq xy1 (list (+ (car a) xd)(cadr a)))
      (setvar "clayer" "ID")
      (vl-cmdf "_text" xy1 ht "90" vi)
      (setvar "clayer" "Puntos")
      (vl-cmdf "_point" a)
      (setq vi (+ vi 1))
    )

    (setvar "clayer" Plano)
    ;; mapcar cuando trabajas con dos listas en paralelo
    ;;;, puntos iniciales y puntos finales
    (mapcar '(lambda(a b)
      (setq sl (entlast))
      (vl-cmdf "_pline" a b "")
      (vl-cmdf "_PEDIT" (entlast) "_J" Sl "" "")
    )lista (append (cdr lista)(list(car lista))) )

    (mapcar 'setvar (reverse variables)(reverse old));; cmdecho al final 
    (princ)  ;; evitar el cero
    );fin del defun

José Francisco

Mensajes : 30
Fecha de inscripción : 30/03/2016

Volver arriba Ir abajo

Ayuda con rutina lisp de Coordenadas Empty Re: Ayuda con rutina lisp de Coordenadas

Mensaje por nolo el Sáb Mayo 18, 2019 11:54 am

No hay de que, me alegro te sirva
Tienes que repasar todas las variables que utilizas para ponerlas en la definición de la función, si no, te puede fallar por compatibilidad con otras rutinas.
Yo las dejé comentadas para poder seguir sus valores al desarrollar el lisp
Código:
(defun c:PC (/ lista);;/ cx cy pd lista cont nx ny xy sc ic)
Creo que debe quedar así, pero repasa ....
Código:
(defun c:PC (/ cx cy pd lista cont nx ny xy sc ic)

Un saludo

nolo

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

Volver arriba Ir abajo

Ayuda con rutina lisp de Coordenadas Empty Re: Ayuda con rutina lisp de Coordenadas

Mensaje por José Francisco el Sáb Mayo 18, 2019 9:50 pm

Buen día.
Nolo, pura vida.
Muchas gracias

José Francisco

Mensajes : 30
Fecha de inscripción : 30/03/2016

Volver arriba Ir abajo

Ayuda con rutina lisp de Coordenadas Empty Re: Ayuda con rutina lisp de Coordenadas

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba

- Temas similares

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