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 EESignature](http://autodesk.i.lithium.com/t5/image/serverpage/image-id/1272565i464DC3DC646B4F11/image-size/original)
>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.