AutoCad - AutoLISP: Crear un punto con dos variables

   
Vista:
Imágen de perfil de Nicolás

AutoLISP: Crear un punto con dos variables

Publicado por Nicolás (21 intervenciones) el 04/05/2015 04:48:05
Quisiera saber si es posible a partir de dos variables numéricas, usarlas como coordenadas X e Y

Es decir yo pido un valor de X e Y: (este es un ejemplo, realmente no es tan sencillo sino ingresaría el punto directamente)

(setq x (getreal "Introduca coordenada X: "))
(setq y (getreal "Introduca coordenada Y: "))

Ahora quiero crear el punto con las variables "x" e "y", cual sería el comando? es posible?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

AutoLISP: Crear un punto con dos variables

Publicado por Gerardo (444 intervenciones) el 04/05/2015 08:27:20
Hola

Te refieres a un objeto tipo point? Si es eso hay muchas formas de hacerlo

creo que las mas simples serian

1
(command "_point" (list x y))

y

1
(entmake (list '(0 . "POINT")(list 10 x y)))


en ambos casos como no estamos indicando z el cad asumira el valor de esta coordenada igual al plano actual.

Entre ambas opciones es mucho mas recomendable la del entmake, por motivos como que tu función se puede deshacer con un solo "undo", que el command puede ser sensible a versiones, que entmake es unas 20 veces mas rapido que command y que puedes agregar propiedades de una vez, por ejemplo
1
(entmake (list '(0 . "POINT") (list 10 x y 0.0) (8 . "Puntos") (62 . 5)))

Ademas de crear el punto en las coordenadas x,y,0 lo dejaria en la capa puntos y en color 5, incluso si la capa puntos no existe previamente se creará una con este nombre automaticamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Nicolás

AutoLISP: Crear un punto con dos variables

Publicado por Nicolás (21 intervenciones) el 04/05/2015 13:56:12
Muchas gracias, es justo lo que necesitaba, al igual que lo de en que capa ponerlo así que me diste el bonus perfecto

Sin embargo recién probé y me salio este error (tengo AutoCAD 2013):

Yo puse:
(entmake (list '(0 . "POINT") (list 10 x y 0.0) (8 . "TEXTO")))

Y me salio:
; error: tipo de argumento erróneo: consp "TEXTO"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Nicolás

AutoLISP: Crear un punto con dos variables

Publicado por Nicolás (21 intervenciones) el 04/05/2015 14:34:28
Uf, me salió

Este funciona:
(entmake (list '(0 . "POINT")(list 10 x y)'(8 . "TEXTO")))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

AutoLISP: Crear un punto con dos variables

Publicado por Gerardo (444 intervenciones) el 04/05/2015 17:53:48
Asi es. Yo cometi el error de no poner los apostrofes.

No poner el apostrofe es un error muy común. De la misma forma que las asignaciones que hiciste con setq (set + quote) en vez de set, para que el primer argumento no se evalue, en toda lista o cons ya armada hay que poner el apostrofe o el quote porque sino el CAD tomara esto (8 . "TEXTO") como una función donde 8 es un operador y el punto y la cadena sus operandos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar