Amigos, tengo que hacer una rutina en autolisp que exporte todos los objetos de una capa a Oracle, me dijeron que tengo que usar el comando FDO_CONECTION, alguien tiene alguna pista de cómo armarlo?
Amigos, tengo que hacer una rutina en autolisp que exporte todos los objetos de una capa a Oracle, me dijeron que tengo que usar el comando FDO_CONECTION, alguien tiene alguna pista de cómo armarlo?
Para exportar objetos desde AutoCAD a Oracle necesitas utilizar FDO (Feature Data Objects). El comando correcto es MAPEXPORT o trabajar con la API de FDO vía AutoLISP, aunque esto es complejo y limitado.
La solución más robusta actual es usar AutoCAD Map 3D o Civil 3D, que tienen herramientas de conexión FDO integradas. Puedes crear una conexión FDO a Oracle Spatial directamente desde la paleta Task Pane (ventana de tareas). Allí configuras el proveedor [b]Oracle Spatial] y los parámetros de tu base de datos.
Para automatizar con AutoLISP, no existe un comando simple. Debes usar la extensión .NET API o ObjectARX para acceder a los servicios FDO. Un enfoque más práctico desde AutoLISP es exportar los datos a un formato intermedio como SHP o SDF usando MAPEXPORT en lote, y luego usar una herramienta externa como ogr2ogr (de GDAL) para cargar ese archivo a Oracle. Puedes ejecutar ogr2ogr desde AutoLISP con el comando shell.
Un ejemplo de línea de comandos para ogr2ogr sería: ogr2ogr -f "OCI" OCI:usuario/contraseña@servidor:puerto/esquema archivo.shp. Esto lo pondrías en un script .bat y lo ejecutarías desde tu rutina LISP después de la exportación.
La alternativa más directa dentro de AutoCAD es escribir una rutina que recorra los objetos, extraiga las geometrías y atributos, y genere un archivo de inserción SQL (INSERT) con geometrías Well-Known Text (WKT). Luego ejecutas ese script SQL en Oracle. Para esto, necesitarías formar cadenas SQL largas desde LISP y usar una utilidad como SQL*Plus para ejecutarlas, nuevamente mediante el comando shell.
El proceso sería: abre la capa, filtra los objetos, extrae coordenadas y datos, escribe un archivo .sql con sentencias INSERT INTO tu_tabla VALUES (geometría SDO_GEOMETRY desde texto), y luego conecta y ejecuta con sqlplus usuario/contraseña@base_de_datos @archivo.sql.
Considera que manejar geometrías complejas y conexiones directas es arduo en AutoLISP puro. La mejor solución a largo plazo es desarrollar una pequeña aplicación en .NET (para AutoCAD) que use la API de FDO de Map 3D para una exportación directa y confiable a Oracle Spatial.