¿Qué hace cli-anything-cloudcompare?
Adaptador de línea de comandos para agentes de CloudCompare — el software de código abierto para procesamiento de nubes de puntos 3D y mallas.
41 comandos en 9 grupos.
Instalación
pip install cli-anything-cloudcompare
Requisitos previos:
- Python 3.10+
- CloudCompare instalado en el sistema
- Linux (Flatpak):
flatpak install flathub org.cloudcompare.CloudCompare - macOS/Windows: descargar desde https://cloudcompare.org
- Linux (Flatpak):
Probado con: CloudCompare 2.13.2 (Flatpak, Linux)
Opciones globales
Estas opciones deben colocarse antes del subcomando:
cli-anything-cloudcompare [--project FILE] [--json] COMMAND [ARGS]...
| Opción | Descripción |
|---|---|
-p, --project TEXT | Ruta al archivo de proyecto JSON |
--json | Mostrar resultados en JSON (para consumo del agente) |
Grupos de comandos
1. project — Gestión de proyectos (3 comandos)
project new
Crear un nuevo archivo de proyecto vacío.
# Crear un proyecto con nombre por defecto
cli-anything-cloudcompare project new -o myproject.json
# Crear un proyecto con nombre personalizado
cli-anything-cloudcompare project new -o myproject.json -n "Puente Levadizo 2024"
# Salida JSON para agentes
cli-anything-cloudcompare --json project new -o myproject.json
Opciones: -o/--output TEXT (obligatorio), -n/--name TEXT
project info
Mostrar información del proyecto y entidades cargadas.
cli-anything-cloudcompare --project myproject.json project info
# Salida JSON
cli-anything-cloudcompare --project myproject.json --json project info
project status
Mostrar el estado rápido del proyecto (cantidad de nubes, cantidad de mallas, última operación).
cli-anything-cloudcompare --project myproject.json project status
2. session — Gestión de sesiones (4 comandos)
session save
Guardar el estado actual del proyecto en disco.
cli-anything-cloudcompare --project myproject.json session save
session history
Mostrar el historial de operaciones recientes.
# Mostrar las últimas 10 operaciones (por defecto)
cli-anything-cloudcompare --project myproject.json session history
# Mostrar las últimas 5 operaciones
cli-anything-cloudcompare --project myproject.json session history -n 5
Opciones: -n/--last INTEGER
session set-format
Actualizar el formato de exportación por defecto para operaciones futuras.
# Establecer formato de nube por defecto a LAS
cli-anything-cloudcompare --project myproject.json session set-format --cloud-fmt LAS --cloud-ext las
# Establecer formato de malla por defecto a OBJ
cli-anything-cloudcompare --project myproject.json session set-format --mesh-fmt OBJ --mesh-ext obj
# Establecer valores por defecto para nube y malla
cli-anything-cloudcompare --project myproject.json session set-format \
--cloud-fmt PLY --cloud-ext ply \
--mesh-fmt STL --mesh-ext stl
Opciones: --cloud-fmt TEXT, --cloud-ext TEXT, --mesh-fmt TEXT, --mesh-ext TEXT
session undo
Eliminar la última operación del historial (deshacer suave — no elimina archivos de salida).
cli-anything-cloudcompare --project myproject.json session undo
3. cloud — Operaciones con nubes de puntos (21 comandos)
Todos los comandos de nube aceptan CLOUD_INDEX (entero basado en 0 de cloud list) y la mayoría acepta --add-to-project para registrar la salida nuevamente en el proyecto.
cloud add
Agregar un archivo de nube de puntos al proyecto.
# Agregar un archivo LAS
cli-anything-cloudcompare --project myproject.json cloud add /data/scan.las
# Agregar con una etiqueta
cli-anything-cloudcompare --project myproject.json cloud add /data/scan.las -l "escaneo techo"
Opciones: -l/--label TEXT
cloud list
Listar todas las nubes presentes en el proyecto.
cli-anything-cloudcompare --project myproject.json cloud list
# Salida JSON para parsear índices
cli-anything-cloudcompare --project myproject.json --json cloud list
cloud convert
Convertir una nube de un formato a otro (el formato se determina por la extensión del archivo).
# LAS → PLY
cli-anything-cloudcompare cloud convert /data/scan.las /data/scan.ply
# PCD → LAS
cli-anything-cloudcompare cloud convert /data/cloud.pcd /data/cloud.las
cloud subsample
Reducir el número de puntos usando el método RANDOM, SPATIAL u OCTREE.
# Aleatorio: mantener 100 000 puntos
cli-anything-cloudcompare --project myproject.json cloud subsample 0 \
-o /data/sub_random.las -m random -n 100000
# Espacial: distancia mínima de 0.05 m entre puntos
cli-anything-cloudcompare --project myproject.json cloud subsample 0 \
-o /data/sub_spatial.las -m spatial -n 0.05
# Octree: nivel 8
cli-anything-cloudcompare --project myproject.json cloud subsample 0 \
-o /data/sub_octree.las -m octree -n 8 --add-to-project
Opciones: -o/--output TEXT (obligatorio), -m/--method [random|spatial|octree], -n/--param FLOAT, --add-to-project
cloud crop
Recortar una nube a una caja delimitadora alineada a los ejes.
# Mantener puntos dentro de la caja
cli-anything-cloudcompare --project myproject.json cloud crop 0 \
-o /data/cropped.las \
--xmin 0.0 --ymin 0.0 --zmin 0.0 \
--xmax 10.0 --ymax 10.0 --zmax 5.0
# Mantener puntos FUERA de la caja
cli-anything-cloudcompare --project myproject.json cloud crop 0 \
-o /data/exterior.las \
--xmin 0.0 --ymin 0.0 --zmin 0.0 \
--xmax 10.0 --ymax 10.0 --zmax 5.0 --outside
Opciones: -o/--output TEXT (obligatorio), --xmin/ymin/zmin/xmax/ymax/zmax FLOAT (todos obligatorios), --outside, --add-to-project
cloud normals
Calcular normales de superficie mediante el método del octree.
# Calcular normales en nivel de octree 6
cli-anything-cloudcompare --project myproject.json cloud normals 0 \
-o /data/with_normals.ply --level 6
# Calcular normales orientadas hacia +Z
cli-anything-cloudcompare --project myproject.json cloud normals 0 \
-o /data/with_normals.ply --level 6 --orientation plus_z --add-to-project
Opciones: -o/--output TEXT (obligatorio), --level INTEGER (1–10), --orientation [plus_x|plus_y|plus_z|minus_x|minus_y|minus_z], --add-to-project
cloud invert-normals
Invertir todos los vectores normales en la nube.
cli-anything-cloudcompare --project myproject.json cloud invert-normals 0 \
-o /data/flipped_normals.ply --add-to-project
Opciones: -o/--output TEXT (obligatorio), --add-to-project
cloud filter-sor
Eliminación de valores atípicos estadísticos (SOR): elimina puntos de ruido aislados.
# Parámetros por defecto (k=6 vecinos, 1.0 relación estándar)
cli-anything-cloudcompare --project myproject.json cloud filter-sor 0 \
-o /data/denoised.las
# Parámetros personalizados
cli-anything-cloudcompare --project myproject.json cloud filter-sor 0 \
-o /data/denoised.las --nb-points 12 --std-ratio 2.0 --add-to-project
Opciones: -o/--output TEXT (obligatorio), --nb-points INTEGER, --std-ratio FLOAT, --add-to-project
cloud noise-filter
Eliminar puntos ruidosos usando el filtro de ruido PCL (modo KNN o radio).
# Modo KNN (por defecto)
cli-anything-cloudcompare --project myproject.json cloud noise-filter 0 \
-o /data/clean.las --knn 8 --noisiness 1.0
# Modo radio
cli-anything-cloudcompare --project myproject.json cloud noise-filter 0 \
-o /data/clean.las --radius 0.1 --use-radius --add-to-project
Opciones: -o/--output TEXT (obligatorio), --knn INTEGER, --noisiness FLOAT, --radius FLOAT, --use-radius, --absolute, --add-to-project
cloud filter-csf
Filtrado de suelo mediante el algoritmo Cloth Simulation Filter (CSF). Separa el suelo de los puntos fuera del suelo (edificios, vegetación).
# Extraer solo el suelo — terreno mixto
cli-anything-cloudcompare --project myproject.json cloud filter-csf 0 \
--ground /data/ground.las --scene relief
# Dividir suelo + fuera del suelo — escena urbana
cli-anything-cloudcompare --project myproject.json cloud filter-csf 0 \
--ground /data/ground.las \
--offground /data/buildings.las \
--scene flat --cloth-resolution 0.5 --class-threshold 0.3
# Pendiente boscosa empinada con postprocesado de pendiente
cli-anything-cloudcompare --project myproject.json cloud filter-csf 0 \
--ground /data/terrain.las --scene slope --proc-slope --add-to-project
Opciones: -g/--ground TEXT (obligatorio), -u/--offground TEXT, --scene [slope|relief|flat], --cloth-resolution FLOAT, --class-threshold FLOAT, --max-iteration INTEGER, --proc-slope, --add-to-project
cloud filter-sf
Filtrar una nube por rango de valor de campo escalar (mantener puntos donde SF ∈ [min, max]).
# Mantener puntos con valor SF entre 10 y 50
cli-anything-cloudcompare --project myproject.json cloud filter-sf 0 \
-o /data/filtered.las --min 10.0 --max 50.0
# Filtrar usando un índice SF específico
cli-anything-cloudcompare --project myproject.json cloud filter-sf 0 \
-o /data/filtered.las --min 0.0 --max 1.5 --sf-index 2 --add-to-project
Opciones: -o/--output TEXT (obligatorio), --min FLOAT (obligatorio), --max FLOAT (obligatorio), --sf-index INTEGER, --add-to-project
cloud sf-from-coord
Convertir un eje de coordenadas (X/Y/Z) en un campo escalar. Comúnmente usado para crear un campo escalar de altura (Z).
# Crear campo escalar Z (altura)
cli-anything-cloudcompare --project myproject.json cloud sf-from-coord 0 \
-o /data/with_z_sf.las --dim z --add-to-project
# Crear campo escalar X con un índice activo específico
cli-anything-cloudcompare --project myproject.json cloud sf-from-coord 0 \
-o /data/with_x_sf.las --dim x --sf-index 0
Opciones: -o/--output TEXT (obligatorio), --dim [x|y|z] (por defecto: z), --sf-index INTEGER, --add-to-project
cloud sf-filter-z
Comando de conveniencia: convierte Z → campo escalar y filtra por rango de altura en un solo paso.
# Extraer puntos entre z=1.0 m y z=2.5 m
cli-anything-cloudcompare --project myproject.json cloud sf-filter-z 0 \
-o /data/slice.las --min 1.0 --max 2.5 --add-to-project
# Solo aplicar límite superior
cli-anything-cloudcompare --project myproject.json cloud sf-filter-z 0 \
-o /data/below_5m.las --max 5.0
Opciones: -o/--output TEXT (obligatorio), --min FLOAT, --max FLOAT, --add-to-project
cloud sf-to-rgb
Convertir el campo escalar activo en colores RGB.
cli-anything-cloudcompare --project myproject.json cloud sf-to-rgb 0 \
-o /data/coloured.ply --add-to-project
Opciones: -o/--output TEXT (obligatorio), --add-to-project
cloud rgb-to-sf
Convertir colores RGB en un campo escalar (valor de luminancia).
cli-anything-cloudcompare --project myproject.json cloud rgb-to-sf 0 \
-o /data/luminance.las --add-to-project
Opciones: -o/--output TEXT (obligatorio), --add-to-project
cloud curvature
Calcular campo escalar de curvatura (MEAN o GAUSS).
# Curvatura media con radio 0.5 m
cli-anything-cloudcompare --project myproject.json cloud curvature 0 \
-o /data/curvature.las --type mean --radius 0.5
# Curvatura gaussiana
cli-anything-cloudcompare --project myproject.json cloud curvature 0 \
-o /data/curvature.las --type gauss --radius 0.5 --add-to-project
Opciones: -o/--output TEXT (obligatorio), --type [mean|gauss], -r/--radius FLOAT, --add-to-project
cloud roughness
Calcular campo escalar de rugosidad (desviación del plano de mejor ajuste local).
cli-anything-cloudcompare --project myproject.json cloud roughness 0 \
-o /data/roughness.las --radius 0.2 --add-to-project
Opciones: -o/--output TEXT (obligatorio), -r/--radius FLOAT, --add-to-project
cloud density
Calcular campo escalar de densidad de puntos.
# Densidad KNN
cli-anything-cloudcompare --project myproject.json cloud density 0 \
-o /data/density.las --type knn --radius 0.5
# Densidad superficial
cli-anything-cloudcompare --project myproject.json cloud density 0 \
-o /data/density.las --type surface --radius 1.0 --add-to-project
Opciones: -o/--output TEXT (obligatorio), -r/--radius FLOAT, --type [knn|surface|volume], --add-to-project
cloud segment-cc
Segmentar nube en componentes conectados (clústeres). Cada componente se guarda como un archivo separado.
# Segmentar con nivel de octree 8, mínimo 100 puntos por componente
cli-anything-cloudcompare --project myproject.json cloud segment-cc 0 \
-o /data/components/ --octree-level 8 --min-points 100
# Guardar componentes como archivos PLY
cli-anything-cloudcompare --project myproject.json cloud segment-cc 0 \
-o /data/components/ --octree-level 6 --min-points 50 --fmt ply
Opciones: -o/--output-dir TEXT (obligatorio), --octree-level INTEGER, --min-points INTEGER, --fmt TEXT
cloud merge
Fusionar todas las nubes del proyecto en una sola nube.
cli-anything-cloudcompare --project myproject.json cloud merge \
-o /data/merged.las --add-to-project
Opciones: -o/--output TEXT (obligatorio), --add-to-project
cloud mesh-delaunay
Construir una malla de triangulación de Delaunay 2.5-D a partir de una nube.
# Malla Delaunay básica
cli-anything-cloudcompare --project myproject.json cloud mesh-delaunay 0 \
-o /data/surface.obj
# Plano de mejor ajuste con límite de longitud máxima de arista
cli-anything-cloudcompare --project myproject.json cloud mesh-delaunay 0 \
-o /data/surface.ply --best-fit --max-edge-length 2.0 --add-to-project
Opciones: -o/--output TEXT (obligatorio), --best-fit, --max-edge-length FLOAT, --add-to-project
4. mesh — Operaciones con mallas (3 comandos)
mesh add
Agregar un archivo de malla al proyecto.
cli-anything-cloudcompare --project myproject.json mesh add /data/model.obj
# Agregar con etiqueta
cli-anything-cloudcompare --project myproject.json mesh add /data/model.ply -l "modelo edificio"
Opciones: -l/--label TEXT
mesh list
Listar todas las mallas del proyecto.
cli-anything-cloudcompare --project myproject.json mesh list
# Salida JSON
cli-anything-cloudcompare --project myproject.json --json mesh list
mesh sample
Muestrear una nube de puntos desde una superficie de malla.
# Muestrear 50 000 puntos de la malla en el índice 0
cli-anything-cloudcompare --project myproject.json mesh sample 0 \
-o /data/sampled.las -n 50000
# Agregar nube muestreada de vuelta al proyecto
cli-anything-cloudcompare --project myproject.json mesh sample 0 \
-o /data/sampled.las -n 100000 --add-to-project
Opciones: -o/--output TEXT (obligatorio), -n/--count INTEGER (obligatorio), --add-to-project
5. dist — Cálculo de distancias (4 comandos)
dist cloud-to-cloud
Calcular las distancias nube a nube (C2C) absolutas entre dos nubes.
# Distancia C2C básica
cli-anything-cloudcompare --project myproject.json dist cloud-to-cloud 0 1 \
-o /data/c2c_dist.las
# Usar octree anidado para mayor precisión
cli-anything-cloudcompare --project myproject.json dist cloud-to-cloud 0 1 \
-o /data/c2c_precise.las --octree-level 10 --add-to-project
Opciones: CLOUD_REF INTEGER (obligatorio), CLOUD_COMP INTEGER (obligatorio), -o/--output TEXT (obligatorio), --octree-level INTEGER, --add-to-project
dist cloud-to-cloud-signed
Calcular las distancias nube a nube (C2C) firmadas. Requiere que la nube de referencia tenga normales.
cli-anything-cloudcompare --project myproject.json dist cloud-to-cloud-signed 0 1 \
-o /data/c2c_signed.las --add-to-project
Opciones: CLOUD_REF INTEGER (obligatorio), CLOUD_COMP INTEGER (obligatorio), -o/--output TEXT (obligatorio), --add-to-project
dist cloud-to-mesh
Calcular las distancias nube a malla (C2M) absolutas.
cli-anything-cloudcompare --project myproject.json dist cloud-to-mesh 0 0 \
-o /data/c2m_dist.las --add-to-project
Opciones: CLOUD_INDEX INTEGER (obligatorio), MESH_INDEX INTEGER (obligatorio), -o/--output TEXT (obligatorio), --add-to-project
dist cloud-to-mesh-signed
Calcular las distancias nube a malla (C2M) firmadas.
cli-anything-cloudcompare --project myproject.json dist cloud-to-mesh-signed 0 0 \
-o /data/c2m_signed.las --add-to-project
Opciones: CLOUD_INDEX INTEGER (obligatorio), MESH_INDEX INTEGER (obligatorio), -o/--output TEXT (obligatorio), --add-to-project
6. align — Alineación y transformación (4 comandos)
align icp
Registrar nube mediante Iterative Closest Point (ICP). La nube fuente se transforma para alinearse con la nube de destino.
# Registro ICP con parámetros por defecto (200 iteraciones, 1000 puntos de muestreo)
cli-anything-cloudcompare --project myproject.json align icp 0 1 \
-o /data/aligned.las
# Alta precisión
cli-anything-cloudcompare --project myproject.json align icp 0 1 \
-o /data/aligned.las -i 500 -s 5000 --overlap 80 --add-to-project
Opciones: SRC_CLOUD INTEGER (obligatorio), TGT_CLOUD INTEGER (obligatorio), -o/--output TEXT (obligatorio), -i/--iterations INTEGER, --sampling-limit INTEGER, -s/--sampling TEXT, --overlap FLOAT, --adjust-scale, --relative, --add-to-project
align matrix-apply
Aplicar una transformación rígida 4×4 a una nube desde un archivo (mismo formato que CloudCompare: 4 líneas de 4 números).
cli-anything-cloudcompare --project myproject.json align matrix-apply 0 \
-o /data/transformed.las --matrix /data/transform.txt --add-to-project
Opciones: CLOUD_INDEX INTEGER (obligatorio), -o/--output TEXT (obligatorio), --matrix FILE (obligatorio), --add-to-project
align matrix-to-file
Calcular la matriz de alineación entre dos nubes y guardarla en un archivo (sin transformar los datos).
# Calcular matriz de la fuente (índice 0) al destino (índice 1)
cli-anything-cloudcompare --project myproject.json align matrix-to-file 0 1 \
--matrix /data/icp_matrix.txt
Opciones: SRC_CLOUD INTEGER (obligatorio), TGT_CLOUD INTEGER (obligatorio), --matrix FILE (obligatorio)
align matrix-show
Mostrar la matriz de transformación que alinea dos nubes.
cli-anything-cloudcompare --project myproject.json --json align matrix-show 0 1
Opciones: SRC_CLOUD INTEGER (obligatorio), TGT_CLOUD INTEGER (obligatorio)
7. export — Comandos de exportación (4 comandos)
export cloud
Exportar una nube desde el proyecto a un archivo.
# Exportar como LAS
cli-anything-cloudcompare --project myproject.json export cloud 0 /data/export.las
# Exportar como PLY
cli-anything-cloudcompare --project myproject.json export cloud 0 /data/export.ply
export mesh
Exportar una malla desde el proyecto a un archivo.
cli-anything-cloudcompare --project myproject.json export mesh 0 /data/export.obj
export batch
Exportar todas las nubes o mallas del proyecto.
# Exportar todas las nubes como PLY
cli-anything-cloudcompare --project myproject.json export batch --clouds --fmt ply -o /data/exports/
# Exportar todas las mallas como OBJ
cli-anything-cloudcompare --project myproject.json export batch --meshes --fmt obj -o /data/exports/
# Exportar todo a la vez
cli-anything-cloudcompare --project myproject.json export batch \
--clouds --meshes --fmt las -o /data/exports/
Opciones: --clouds, --meshes, --fmt TEXT (obligatorio), -o/--output-dir TEXT (obligatorio)
export enums
Listar todos los formatos de exportación e importación disponibles (según soporte de CloudCompare local).
cli-anything-cloudcompare --project myproject.json export enums
# Salida JSON
cli-anything-cloudcompare --project myproject.json --json export enums
8. shell — Modo consola interactiva (1 comando)
shell
Iniciar una consola READ-EVAL-PRINT-LOOP (REPL) interactiva. Los comandos se ingresan como argumentos de línea simple, el historial se guarda como archivo .json plano.
# Iniciar sesión REPL interactiva
cli-anything-cloudcompare shell
# Comenzar con un proyecto existente
cli-anything-cloudcompare --project data/project.json shell
# Ejemplo de sesión:
# > cloud add /data/scan.las
# > cloud list
# > cloud subsample 0 -o /data/sub.las -m random -n 50000
# > session save
Opciones: (ninguna, excepto --project y --json desde el nivel superior)
9. gen — Comandos de generación interna (2 comandos)
Estos comandos sirven para que los agentes comprendan el esquema del proyecto e inspeccionen el estado de ejecución. Útil en modos de agente auto-descubrimiento.
gen schema
Mostrar la estructura del esquema del proyecto (ayuda a los agentes a comprender el modelo de datos JSON).
cli-anything-cloudcompare gen schema
gen tree
Mostrar el árbol de sesión actual como JSON (carga útil completa del historial de operaciones).
cli-anything-cloudcompare --project myproject.json gen tree
Guía rápida
# 1. Crear proyecto y agregar datos
cli-anything-cloudcompare project new -o proyecto.json
cli-anything-cloudcompare --project proyecto.json cloud add escaneo.las
# 2. Submuestrear nube
cli-anything-cloudcompare --project proyecto.json cloud subsample 0 \
-o sub.las -m random -n 50000 --add-to-project
# 3. Calcular normales y crear malla
cli-anything-cloudcompare --project proyecto.json cloud normals 1 -o normales.ply
cli-anything-cloudcompare --project proyecto.json cloud mesh-delaunay 1 \
-o superficie.obj --add-to-project
# 4. Verificar y exportar
cli-anything-cloudcompare --project proyecto.json project status
cli-anything-cloudcompare --project proyecto.json export mesh 0 superficie_final.obj
Notas
- Todas las rutas de archivo se resuelven con respecto al directorio de trabajo actual.
- Los comandos que no requieren un proyecto activo (
cloud convert,export enums) pueden ejecutarse sin--project. - Utilice
--jsonpara un análisis programático — todos los comandos devolverán una respuesta JSON. - Los índices de nube y malla son enteros basados en 0 que corresponden al orden del comando
<group> list.