Comunidad
AutoCAD - Todos los productos - Español
Bienvenido/a al foro de los productos de la familia AutoCAD de Autodesk! Comparte tu conocimiento, haz preguntas y explora los temas populares de AutoCAD.
cancelar
Mostrando los resultados de 
Mostrar  solo  | Buscar en lugar de 
Quiere decir: 

Cómo usar las funciones VL y VLX?

2 RESPUESTAS 2
RESUELTAS
Responder
Mensaje 1 de 3
gustavosanmartin
1450 Vistas, 2 Respuestas

Cómo usar las funciones VL y VLX?

gustavosanmartin
Advocate
Advocate

Hola, alguien me podría orientar sobre que son y como se utilizan las funciones VL y VLX. Y si es posible de donde se pueden obtener todos los comandos asociados a estas funciones. Estoy comenzando a programar en LISP y me encontrado con muchas rutinas que utilizan estas funciones pero no tengo mas información al respecto.

 

Muchas gracias de ante mano

 

 @gustavosanmartin para mayor claridad @joaquim.moral ha editado el título original: VL y VLX

0 Me gusta

Cómo usar las funciones VL y VLX?

Hola, alguien me podría orientar sobre que son y como se utilizan las funciones VL y VLX. Y si es posible de donde se pueden obtener todos los comandos asociados a estas funciones. Estoy comenzando a programar en LISP y me encontrado con muchas rutinas que utilizan estas funciones pero no tengo mas información al respecto.

 

Muchas gracias de ante mano

 

 @gustavosanmartin para mayor claridad @joaquim.moral ha editado el título original: VL y VLX

2 RESPUESTAS 2
Mensaje 2 de 3
calderg1000
en respuesta a: gustavosanmartin

calderg1000
Mentor
Mentor
Solución aceptada

Estimado @gustavosanmartin 

Para acceder a las funciones del Visual Lisp, hasta donde conozco tenemos los prefijos VLA,VLX y VLR que mediante una especie de combinación entre ellas y otras mas en un orden predefinido por las convenciones del lenguaje Visual Lisp nos permiten acceder a las diversas propiedades y métodos de las entidades u objetos ACAD.

Es muy posible que cuando recién se inicia cueste algo entender este gran paso de Autolisp a Visual Lisp, pero hay que comprender que es necesario porque luego de aprender Autolisp en un nivel por lo menos intermedio te vas a dar cuenta que se requiere algo mas para hacer cosas mas interesantes, y justamente esta extensión la que nos permitirá a ampliar nuestro panorama de programación.

Desde luego creo que hice mi mayor esfuerzo por explicar sintéticamente lo que es las funciones de Visual Lisp y no se si lo logre o confundí mas, pero hay que tener paciencia así es el comienzo al igual que cuando damos nuestros primeros para aprender a caminar o emprender cualquier cosa en la vida.

Para finalizar te voy a poner dos ejemplos básicos de utilidad rutinaria que creo que te pueden aclarar un poco el panorama para iniciarte en VLISP.

1. Para acceder a la base de datos de un objeto o entidad de ACAD, utilizando Autolisp, podemos hacerlo con los siguientes codigos:

(Setq s(entget(car(entsel)))) o (setq s(entget(ssname(ssget)0)))), con ello obtendriamos la lista compuesta por pares punteados y listas anidadas basados en codigos DXF; desde luego es con con la segunda linea de código que finalmente vamos a programar con mas frecuencia.

Para el caso de la selección de una entidad CIRCULO de radio 10 en la capa "0", luego de aplicar una de las 2 lineas de codigo Autolisp, por ejemplo la que es de uso mas frecuente:

((setq S(enget(ssname(ssget)0)));con ello obtendríamos lo siguiente:

Donde se puede apreciar algunos datos de la entidad seleccionada, precedida de un codigo DXF; por ejemplo el Código 10 nos muestra las coordenadas del centro del circulo seleccionado (-6541.78 37632.8 0.0).

 

Select object:
(-1 . <Entity name: 2079127fd30>)
(0 . "CIRCLE")
(330 . <Entity name: 20786cc39f0>)
(5 . "6D43")
(100 . "AcDbEntity")
(67 . 0)
(410 . "Model")
(8 . "0")
(100 . "AcDbCircle")
(10 -6541.78 37632.8 0.0)
(40 . 10.0)
(210 0.0 0.0 1.0) (210 0.0 0.0 1.0)

 

 

2. Para acceder a las propiedades y Metodos de un objeto o entidad de ACAD, utilizando Visual lisp, lo podemos hacer mediante las siguientes lineas de codigo.

(setq elist(vlax-ename->vla-object (ssname (ssget) 0)));mediante esta linea de codigo convertimos un objeto ACAD en un Objeto VL.

(vlax-dump-object elist);mediante esta linea de codigo, accedemos a las propiedades y metodos del objeto selecionado.

En caso también nos muestra la coordenadas del centro del circulo seleccionado; Center = (-6541.78 37632.8 0.0) y muchas mas opciones de información como se puede observar en las siguientes líneas de resultado.

 

; IAcadCircle: AutoCAD Circle Interface
; Property values:
;   Application (RO) = #<VLA-OBJECT IAcadApplication 00007ff6c133b910>
;   Area = 314.159
;   Center = (-6541.78 37632.8 0.0)
;   Circumference = 62.8319
;   Diameter = 20.0
;   Document (RO) = #<VLA-OBJECT IAcadDocument 00000207faea59b8>
;   EntityTransparency = "ByLayer"
;   Handle (RO) = "6D43"
;   HasExtensionDictionary (RO) = 0
;   Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 00000207faf43408>
;   Layer = "0"
;   Linetype = "ByLayer"
;   LinetypeScale = 1.0
;   Lineweight = -1
;   Material = "ByLayer"
;   Normal = (0.0 0.0 1.0)
;   ObjectID (RO) = 44
;   ObjectName (RO) = "AcDbCircle"
;   OwnerID (RO) = 43
;   PlotStyleName = "ByLayer"
;   Radius = 10.0
;   Thickness = 0.0
;   TrueColor = #<VLA-OBJECT IAcadAcCmColor 00000207faf43460>
;   Visible = -1
; Methods supported:
;   ArrayPolar (3)
;   ArrayRectangular (6)
;   Copy ()
;   Delete ()
;   GetBoundingBox (2)
;   GetExtensionDictionary ()
;   GetXData (3)
;   Highlight (1)
;   IntersectWith (2)
;   Mirror (2)
;   Mirror3D (3)
;   Move (2)
;   Offset (1)
;   Rotate (2)
;   Rotate3D (3)
;   ScaleEntity (2)
;   SetXData (2)
;   TransformBy (1)
;   Update ()
_$ 

 

El tema es bastante amplio, pero por el momento lo dejare ahí, esperando que mis comentarios o apreciaciones puedan ser de utilidad para los que se inician en el apasionante mundo de la programación con Autolisp o Visual Lisp.

Saludos Cordiales.

 

 

 


Carlos Calderon G
EESignature
>Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.

0 Me gusta

Estimado @gustavosanmartin 

Para acceder a las funciones del Visual Lisp, hasta donde conozco tenemos los prefijos VLA,VLX y VLR que mediante una especie de combinación entre ellas y otras mas en un orden predefinido por las convenciones del lenguaje Visual Lisp nos permiten acceder a las diversas propiedades y métodos de las entidades u objetos ACAD.

Es muy posible que cuando recién se inicia cueste algo entender este gran paso de Autolisp a Visual Lisp, pero hay que comprender que es necesario porque luego de aprender Autolisp en un nivel por lo menos intermedio te vas a dar cuenta que se requiere algo mas para hacer cosas mas interesantes, y justamente esta extensión la que nos permitirá a ampliar nuestro panorama de programación.

Desde luego creo que hice mi mayor esfuerzo por explicar sintéticamente lo que es las funciones de Visual Lisp y no se si lo logre o confundí mas, pero hay que tener paciencia así es el comienzo al igual que cuando damos nuestros primeros para aprender a caminar o emprender cualquier cosa en la vida.

Para finalizar te voy a poner dos ejemplos básicos de utilidad rutinaria que creo que te pueden aclarar un poco el panorama para iniciarte en VLISP.

1. Para acceder a la base de datos de un objeto o entidad de ACAD, utilizando Autolisp, podemos hacerlo con los siguientes codigos:

(Setq s(entget(car(entsel)))) o (setq s(entget(ssname(ssget)0)))), con ello obtendriamos la lista compuesta por pares punteados y listas anidadas basados en codigos DXF; desde luego es con con la segunda linea de código que finalmente vamos a programar con mas frecuencia.

Para el caso de la selección de una entidad CIRCULO de radio 10 en la capa "0", luego de aplicar una de las 2 lineas de codigo Autolisp, por ejemplo la que es de uso mas frecuente:

((setq S(enget(ssname(ssget)0)));con ello obtendríamos lo siguiente:

Donde se puede apreciar algunos datos de la entidad seleccionada, precedida de un codigo DXF; por ejemplo el Código 10 nos muestra las coordenadas del centro del circulo seleccionado (-6541.78 37632.8 0.0).

 

Select object:
(-1 . <Entity name: 2079127fd30>)
(0 . "CIRCLE")
(330 . <Entity name: 20786cc39f0>)
(5 . "6D43")
(100 . "AcDbEntity")
(67 . 0)
(410 . "Model")
(8 . "0")
(100 . "AcDbCircle")
(10 -6541.78 37632.8 0.0)
(40 . 10.0)
(210 0.0 0.0 1.0) (210 0.0 0.0 1.0)

 

 

2. Para acceder a las propiedades y Metodos de un objeto o entidad de ACAD, utilizando Visual lisp, lo podemos hacer mediante las siguientes lineas de codigo.

(setq elist(vlax-ename->vla-object (ssname (ssget) 0)));mediante esta linea de codigo convertimos un objeto ACAD en un Objeto VL.

(vlax-dump-object elist);mediante esta linea de codigo, accedemos a las propiedades y metodos del objeto selecionado.

En caso también nos muestra la coordenadas del centro del circulo seleccionado; Center = (-6541.78 37632.8 0.0) y muchas mas opciones de información como se puede observar en las siguientes líneas de resultado.

 

; IAcadCircle: AutoCAD Circle Interface
; Property values:
;   Application (RO) = #<VLA-OBJECT IAcadApplication 00007ff6c133b910>
;   Area = 314.159
;   Center = (-6541.78 37632.8 0.0)
;   Circumference = 62.8319
;   Diameter = 20.0
;   Document (RO) = #<VLA-OBJECT IAcadDocument 00000207faea59b8>
;   EntityTransparency = "ByLayer"
;   Handle (RO) = "6D43"
;   HasExtensionDictionary (RO) = 0
;   Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 00000207faf43408>
;   Layer = "0"
;   Linetype = "ByLayer"
;   LinetypeScale = 1.0
;   Lineweight = -1
;   Material = "ByLayer"
;   Normal = (0.0 0.0 1.0)
;   ObjectID (RO) = 44
;   ObjectName (RO) = "AcDbCircle"
;   OwnerID (RO) = 43
;   PlotStyleName = "ByLayer"
;   Radius = 10.0
;   Thickness = 0.0
;   TrueColor = #<VLA-OBJECT IAcadAcCmColor 00000207faf43460>
;   Visible = -1
; Methods supported:
;   ArrayPolar (3)
;   ArrayRectangular (6)
;   Copy ()
;   Delete ()
;   GetBoundingBox (2)
;   GetExtensionDictionary ()
;   GetXData (3)
;   Highlight (1)
;   IntersectWith (2)
;   Mirror (2)
;   Mirror3D (3)
;   Move (2)
;   Offset (1)
;   Rotate (2)
;   Rotate3D (3)
;   ScaleEntity (2)
;   SetXData (2)
;   TransformBy (1)
;   Update ()
_$ 

 

El tema es bastante amplio, pero por el momento lo dejare ahí, esperando que mis comentarios o apreciaciones puedan ser de utilidad para los que se inician en el apasionante mundo de la programación con Autolisp o Visual Lisp.

Saludos Cordiales.

 

 

 


Carlos Calderon G
EESignature
>Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.

Mensaje 3 de 3
gustavosanmartin
en respuesta a: calderg1000

gustavosanmartin
Advocate
Advocate
Solución aceptada

calderg1000 Muchas gracias por darte el tiempo de responder. Para complementar de lo que he podido leer y como bien indicas, a grandes rasgos podemos programar en lenguaje "Autolisp" y "VisualLisp" dejando de lado la programación en C++ u otro lenguaje mas avanzado.  Las funciones Vl, VLAX y VLR son funciones de programación en lenguaje visual Lisp. En el siguiente enlace se puede encontrar información al respecto además de todas la funciones en Visual Lisp.

 

https://help.autodesk.com/view/ACD/2019/ESP/?guid=GUID-5A0AB3C1-DD82-423E-986D-3583424A91AA

calderg1000 Muchas gracias por darte el tiempo de responder. Para complementar de lo que he podido leer y como bien indicas, a grandes rasgos podemos programar en lenguaje "Autolisp" y "VisualLisp" dejando de lado la programación en C++ u otro lenguaje mas avanzado.  Las funciones Vl, VLAX y VLR son funciones de programación en lenguaje visual Lisp. En el siguiente enlace se puede encontrar información al respecto además de todas la funciones en Visual Lisp.

 

https://help.autodesk.com/view/ACD/2019/ESP/?guid=GUID-5A0AB3C1-DD82-423E-986D-3583424A91AA

¿No encontraste lo que buscabas? Pregúntale a la comunidad o comparte tus conocimientos.

Publicar en los foros  

Autodesk Design & Make Report

New events in the Spanish Community