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
¡Resuelto! Ir a solución.
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
¡Resuelto! Ir a solución.
Resuelto por gustavosanmartin. Ir a solución.
Resuelto por calderg1000. Ir a solución.
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
>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.
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
>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.
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.