Dataset CSV de Puntos de Topografía para Probar en FreeCAD
El modelado y análisis de terrenos naturales y superficies topográficas constituye el punto de partida fundamental para cualquier proyecto de obras viales, cimentaciones, parcelaciones y edificaciones. Los levantamientos ejecutados con estaciones totales, tecnología GNSS/RTK o vuelos fotogramétricos con drones generan habitualmente ficheros de texto delimitados por comas (formato CSV) que contienen miles de coordenadas tridimensionales de puntos del terreno.
Para los ingenieros, topógrafos y modeladores que buscan alternativas libres y no desean pagar costosas suscripciones anuales de software comercial como Autodesk Civil 3D, FreeCAD 1.0 ofrece potentes módulos para la gestión de nubes de puntos y mallas trianguladas. En esta guía técnica compartimos un dataset CSV de topografía real estructurado para pruebas, junto con el script en Python necesario para importar, procesar y triangular superficies de relieve tridimensionales directamente en FreeCAD.
Estructura Normativa del Dataset Topográfico CSV
El fichero de prueba se adhiere a la nomenclatura estándar de levantamientos topográficos georreferenciados:
| Campo / Columna | Tipo de Dato | Ejemplo de Valor | Descripción Técnica |
|---|---|---|---|
| ID | Entero / Alfanumérico | 1001 | Identificador único secuencial del punto levantado. |
| X / Este | Flotante (metros UTM) | 285430.250 | Coordenada en el eje X proyectada en el plano topográfico. |
| Y / Norte | Flotante (metros UTM) | 8671200.480 | Coordenada en el eje Y proyectada en el plano topográfico. |
| Z / Cota | Flotante (msnm) | 245.850 | Elevación o cota ortométrica sobre el nivel del mar. |
| Codigo | Texto corto | TERRENO_NAT | Descriptor de campo (EJE_VIA, BORDE, TALUD, etc.). |
Script Python: Generador del Dataset CSV e Importador en FreeCAD
El siguiente script en Python es autónomo: si no encuentra un archivo CSV en disco, genera de forma matemática un dataset sintético realista con ondulaciones topográficas y luego procede a instanciar la nube de puntos nativa dentro de FreeCAD:
"""
Generador de Dataset e Importador de Puntos Topograficos CSV para FreeCAD.
Permite crear nubes de puntos 3D y prepararlas para triangulacion de malla TIN.
Compatible con Python 3.10+ y la API de FreeCAD.
"""
import math
import os
import sys
import csv
def generar_dataset_topografia_csv(ruta_csv="puntos_topografia_ejemplo.csv", num_puntos=200):
"""Crea un dataset CSV sintetico de relieve topografico si no existe."""
print(f"--- Generando dataset topografico con {num_puntos} puntos ---")
filas = [["ID", "Este_X", "Norte_Y", "Cota_Z", "Codigo"]]
lado = int(math.sqrt(num_puntos))
paso = 5.0 # Espaciado de 5 metros entre puntos
punto_id = 1
for i in range(lado):
for j in range(lado):
x = i * paso
y = j * paso
# Funcion de elevacion con colinas y valles realistas
z = 100.0 + (3.5 * math.sin(x * 0.15)) + (2.8 * math.cos(y * 0.12))
tipo = "TALUD" if z > 104.0 else "TERRENO"
filas.append([punto_id, f"{x:.3f}", f"{y:.3f}", f"{z:.3f}", tipo])
punto_id += 1
with open(ruta_csv, mode="w", newline="", encoding="utf-8") as f:
escritor = csv.writer(f)
escritor.writerows(filas)
print(f"[OK] Archivo CSV generado exitosamente en: {ruta_csv}")
return ruta_csv
def importar_puntos_a_freecad(ruta_csv="puntos_topografia_ejemplo.csv"):
"""Lee el CSV e inserta los vectores en una nube de puntos de FreeCAD."""
if not os.path.exists(ruta_csv):
generar_dataset_topografia_csv(ruta_csv)
coordenadas = []
with open(ruta_csv, mode="r", encoding="utf-8") as f:
lector = csv.DictReader(f)
for fila in lector:
try:
x = float(fila["Este_X"])
y = float(fila["Norte_Y"])
z = float(fila["Cota_Z"])
coordenadas.append((x, y, z))
except (ValueError, KeyError):
continue
print(f"[*] Total de puntos leidos del archivo: {len(coordenadas)}")
try:
import FreeCAD as App
import Points
doc = App.ActiveDocument or App.newDocument("Topografia_Terreno_3D")
nube = doc.addObject("Points::Feature", "Nube_Puntos_Topograficos")
lista_vectores = [App.Vector(px, py, pz) for px, py, pz in coordenadas]
nube.Points = Points.Points(lista_vectores)
doc.recompute()
print(f"[OK] {len(lista_vectores)} puntos insertados en el objeto '{nube.Name}' de FreeCAD.")
return True
except ImportError:
print("[MODO CONSOLA] FreeCAD no disponible en entorno local.")
print(f"[RESUMEN] {len(coordenadas)} coordenadas validadas y listas para importar en FreeCAD.")
return True
if __name__ == "__main__":
archivo_csv = "puntos_topografia_ejemplo.csv"
generar_dataset_topografia_csv(archivo_csv)
importar_puntos_a_freecad(archivo_csv)
Flujo para Generar Mallas Trianguladas (TIN) y Curvas de Nivel
Una vez que la nube de puntos se encuentra insertada en el árbol de proyecto de FreeCAD, el proceso de modelado de superficie continúa de la siguiente forma:
- Activación del Banco MeshDesign: En el selector de bancos de trabajo, cambiar a
MeshDesign(Diseño de Mallas). - Creación de Malla Regular: Seleccionar el objeto de nube de puntos y ejecutar el comando
Mallas -> Crear Malla a partir de Puntoso utilizar la triangulación de Delaunay 2.5D. - Generación de Curvas de Nivel: Con el banco de trabajo
Curveso mediante herramientas de corte enPart, generar planos de sección horizontales a intervalos equidistantes (por ejemplo, cada 1.0 m para curvas menores y cada 5.0 m para curvas maestras). - Documentación en TechDraw: Insertar la vista superior de la malla en una lámina técnica para imprimir el plano topográfico con escala y norte magnético.
🏛️ Únete al Ecosistema Maestro BIM
Accede a mi repositorio personal de ingeniería OpenBIM. Obtén de inmediato todos los manuales y archivos base (.FCStd y Blender) de Vivienda, Estructuras, Sketcher y Python. Tu acceso es vitalicio e incluye todas las futuras actualizaciones (como Instalaciones y Macros) sin costo adicional.
Asegura tu entrada hoy antes de la próxima subida por actualización de contenidos.
Preguntas Frecuentes (FAQ)
¿FreeCAD puede procesar nubes de puntos de cientos de miles de coordenadas?
▼
¿Qué formato debe tener el archivo CSV para ser compatible con el script?
▼
¿Se pueden exportar las superficies generadas a otros programas como QGIS o AutoCAD?
▼