Que fait cli-anything-cloudcompare ?
Harnais en ligne de commande adapté aux agents pour CloudCompare — le logiciel open-source de traitement de nuages de points 3D et de maillages.
41 commandes réparties en 9 groupes.
Installation
pip install cli-anything-cloudcompare
Prérequis :
- Python 3.10+
- CloudCompare installé sur votre système
- Linux (Flatpak) :
flatpak install flathub org.cloudcompare.CloudCompare - macOS/Windows : téléchargement depuis https://cloudcompare.org
- Linux (Flatpak) :
Testé avec : CloudCompare 2.13.2 (Flatpak, Linux)
Options globales
Ces options doivent être placées avant la sous-commande :
cli-anything-cloudcompare [--project FILE] [--json] COMMANDE [ARGS]...
| Option | Description |
|---|---|
-p, --project TEXTE | Chemin vers le fichier projet JSON |
--json | Sortie des résultats au format JSON (pour consommation par un agent) |
Groupes de commandes
1. project — Gestion de projet (3 commandes)
project new
Créer un nouveau fichier projet vide.
# Créer un projet avec un nom par défaut
cli-anything-cloudcompare project new -o monprojet.json
# Créer un projet avec un nom personnalisé
cli-anything-cloudcompare project new -o monprojet.json -n "Relevé Pont 2024"
# Sortie JSON pour les agents
cli-anything-cloudcompare --json project new -o monprojet.json
Options : -o/--output TEXTE (obligatoire), -n/--name TEXTE
project info
Afficher les informations du projet et les entités chargées.
cli-anything-cloudcompare --project monprojet.json project info
# Sortie JSON
cli-anything-cloudcompare --project monprojet.json --json project info
project status
Afficher un état rapide du projet (nombre de nuages, nombre de maillages, dernière opération).
cli-anything-cloudcompare --project monprojet.json project status
2. session — Gestion de session (4 commandes)
session save
Sauvegarder l'état actuel du projet sur le disque.
cli-anything-cloudcompare --project monprojet.json session save
session history
Afficher l'historique des opérations récentes.
# Afficher les 10 dernières opérations (par défaut)
cli-anything-cloudcompare --project monprojet.json session history
# Afficher les 5 dernières opérations
cli-anything-cloudcompare --project monprojet.json session history -n 5
Options : -n/--last ENTIER
session set-format
Mettre à jour le format d'export par défaut pour les opérations futures.
# Définir l'export cloud par défaut sur LAS
cli-anything-cloudcompare --project monprojet.json session set-format --cloud-fmt LAS --cloud-ext las
# Définir l'export mesh par défaut sur OBJ
cli-anything-cloudcompare --project monprojet.json session set-format --mesh-fmt OBJ --mesh-ext obj
# Définir les deux valeurs par défaut
cli-anything-cloudcompare --project monprojet.json session set-format \
--cloud-fmt PLY --cloud-ext ply \
--mesh-fmt STL --mesh-ext stl
Options : --cloud-fmt TEXTE, --cloud-ext TEXTE, --mesh-fmt TEXTE, --mesh-ext TEXTE
session undo
Supprimer la dernière opération de l'historique (annulation douce — ne supprime pas les fichiers de sortie).
cli-anything-cloudcompare --project monprojet.json session undo
3. cloud — Opérations sur les nuages de points (21 commandes)
Toutes les commandes cloud prennent CLOUD_INDEX (entier basé sur 0 de cloud list) et la plupart acceptent --add-to-project pour enregistrer la sortie dans le projet.
cloud add
Ajouter un fichier de nuage de points au projet.
# Ajouter un fichier LAS
cli-anything-cloudcompare --project monprojet.json cloud add /data/scan.las
# Ajouter avec une étiquette
cli-anything-cloudcompare --project monprojet.json cloud add /data/scan.las -l "scan toit"
Options : -l/--label TEXTE
cloud list
Lister tous les nuages actuellement dans le projet.
cli-anything-cloudcompare --project monprojet.json cloud list
# Sortie JSON pour analyser les indices
cli-anything-cloudcompare --project monprojet.json --json cloud list
cloud convert
Convertir un nuage d'un format à un autre (le format est déterminé par l'extension du fichier).
# 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
Réduire le nombre de points en utilisant la méthode RANDOM, SPATIAL ou OCTREE.
# Aléatoire : conserver 100 000 points
cli-anything-cloudcompare --project monprojet.json cloud subsample 0 \
-o /data/sub_random.las -m random -n 100000
# Spatial : distance minimale de 0,05 m entre les points
cli-anything-cloudcompare --project monprojet.json cloud subsample 0 \
-o /data/sub_spatial.las -m spatial -n 0.05
# Octree : niveau 8
cli-anything-cloudcompare --project monprojet.json cloud subsample 0 \
-o /data/sub_octree.las -m octree -n 8 --add-to-project
Options : -o/--output TEXTE (obligatoire), -m/--method [random|spatial|octree], -n/--param FLOTTANT, --add-to-project
cloud crop
Rogner un nuage selon une boîte de délimitation alignée sur les axes.
# Conserver les points à l'intérieur de la boîte
cli-anything-cloudcompare --project monprojet.json cloud crop 0 \
-o /data/rogne.las \
--xmin 0.0 --ymin 0.0 --zmin 0.0 \
--xmax 10.0 --ymax 10.0 --zmax 5.0
# Conserver les points à l'EXTÉRIEUR de la boîte
cli-anything-cloudcompare --project monprojet.json cloud crop 0 \
-o /data/exterieur.las \
--xmin 0.0 --ymin 0.0 --zmin 0.0 \
--xmax 10.0 --ymax 10.0 --zmax 5.0 --outside
Options : -o/--output TEXTE (obligatoire), --xmin/ymin/zmin/xmax/ymax/zmax FLOTTANT (tous obligatoires), --outside, --add-to-project
cloud normals
Calculer les normales de surface via la méthode de l'octree.
# Calculer les normales au niveau d'octree 6
cli-anything-cloudcompare --project monprojet.json cloud normals 0 \
-o /data/avec_normales.ply --level 6
# Calculer les normales orientées vers +Z
cli-anything-cloudcompare --project monprojet.json cloud normals 0 \
-o /data/avec_normales.ply --level 6 --orientation plus_z --add-to-project
Options : -o/--output TEXTE (obligatoire), --level ENTIER (1–10), --orientation [plus_x|plus_y|plus_z|minus_x|minus_y|minus_z], --add-to-project
cloud invert-normals
Inverser tous les vecteurs normaux dans le nuage.
cli-anything-cloudcompare --project monprojet.json cloud invert-normals 0 \
-o /data/normales_inversees.ply --add-to-project
Options : -o/--output TEXTE (obligatoire), --add-to-project
cloud filter-sor
Suppression des outliers statistiques — supprime les points de bruit isolés.
# Paramètres par défaut (k=6 voisins, rapport std=1.0)
cli-anything-cloudcompare --project monprojet.json cloud filter-sor 0 \
-o /data/denoised.las
# Paramètres personnalisés
cli-anything-cloudcompare --project monprojet.json cloud filter-sor 0 \
-o /data/denoised.las --nb-points 12 --std-ratio 2.0 --add-to-project
Options : -o/--output TEXTE (obligatoire), --nb-points ENTIER, --std-ratio FLOTTANT, --add-to-project
cloud noise-filter
Supprimer les points bruyants en utilisant le filtre de bruit PCL (mode KNN ou rayon).
# Mode KNN (par défaut)
cli-anything-cloudcompare --project monprojet.json cloud noise-filter 0 \
-o /data/propre.las --knn 8 --noisiness 1.0
# Mode rayon
cli-anything-cloudcompare --project monprojet.json cloud noise-filter 0 \
-o /data/propre.las --radius 0.1 --use-radius --add-to-project
Options : -o/--output TEXTE (obligatoire), --knn ENTIER, --noisiness FLOTTANT, --radius FLOTTANT, --use-radius, --absolute, --add-to-project
cloud filter-csf
Filtrage du sol à l'aide de l'algorithme CSF (Cloth Simulation Filter). Sépare le sol des points hors sol (bâtiments, végétation).
# Extraire uniquement le sol — terrain mixte
cli-anything-cloudcompare --project monprojet.json cloud filter-csf 0 \
--ground /data/sol.las --scene relief
# Séparer le sol + hors sol — scène urbaine
cli-anything-cloudcompare --project monprojet.json cloud filter-csf 0 \
--ground /data/sol.las \
--offground /data/batiments.las \
--scene flat --cloth-resolution 0.5 --class-threshold 0.3
# Pente boisée escarpée avec post-traitement de pente
cli-anything-cloudcompare --project monprojet.json cloud filter-csf 0 \
--ground /data/terrain.las --scene slope --proc-slope --add-to-project
Options : -g/--ground TEXTE (obligatoire), -u/--offground TEXTE, --scene [slope|relief|flat], --cloth-resolution FLOTTANT, --class-threshold FLOTTANT, --max-iteration ENTIER, --proc-slope, --add-to-project
cloud filter-sf
Filtrer un nuage par plage de valeurs de champ scalaire (conserver les points où SF ∈ [min, max]).
# Conserver les points avec une valeur SF entre 10 et 50
cli-anything-cloudcompare --project monprojet.json cloud filter-sf 0 \
-o /data/filtre.las --min 10.0 --max 50.0
# Filtrer avec un index SF spécifique
cli-anything-cloudcompare --project monprojet.json cloud filter-sf 0 \
-o /data/filtre.las --min 0.0 --max 1.5 --sf-index 2 --add-to-project
Options : -o/--output TEXTE (obligatoire), --min FLOTTANT (obligatoire), --max FLOTTANT (obligatoire), --sf-index ENTIER, --add-to-project
cloud sf-from-coord
Convertir un axe de coordonnées (X/Y/Z) en un champ scalaire. Couramment utilisé pour créer un champ scalaire de hauteur (Z).
# Créer un champ scalaire Z (hauteur)
cli-anything-cloudcompare --project monprojet.json cloud sf-from-coord 0 \
-o /data/avec_z_sf.las --dim z --add-to-project
# Créer un champ scalaire X avec un index actif spécifique
cli-anything-cloudcompare --project monprojet.json cloud sf-from-coord 0 \
-o /data/avec_x_sf.las --dim x --sf-index 0
Options : -o/--output TEXTE (obligatoire), --dim [x|y|z] (défaut : z), --sf-index ENTIER, --add-to-project
cloud sf-filter-z
Commande pratique : convertir Z → champ scalaire et filtrer par plage de hauteur en une seule étape.
# Extraire les points entre z=1.0 m et z=2.5 m
cli-anything-cloudcompare --project monprojet.json cloud sf-filter-z 0 \
-o /data/tranche.las --min 1.0 --max 2.5 --add-to-project
# Appliquer uniquement la limite supérieure
cli-anything-cloudcompare --project monprojet.json cloud sf-filter-z 0 \
-o /data/en_dessous_5m.las --max 5.0
Options : -o/--output TEXTE (obligatoire), --min FLOTTANT, --max FLOTTANT, --add-to-project
cloud sf-to-rgb
Convertir le champ scalaire actif en couleurs RVB.
cli-anything-cloudcompare --project monprojet.json cloud sf-to-rgb 0 \
-o /data/colore.ply --add-to-project
Options : -o/--output TEXTE (obligatoire), --add-to-project
cloud rgb-to-sf
Convertir les couleurs RVB en un champ scalaire (valeur de luminance).
cli-anything-cloudcompare --project monprojet.json cloud rgb-to-sf 0 \
-o /data/luminance.las --add-to-project
Options : -o/--output TEXTE (obligatoire), --add-to-project
cloud curvature
Calculer le champ scalaire de courbure (MOYENNE ou GAUSSIENNE).
# Courbure moyenne avec un rayon de 0.5 m
cli-anything-cloudcompare --project monprojet.json cloud curvature 0 \
-o /data/courbure.las --type mean --radius 0.5
# Courbure gaussienne
cli-anything-cloudcompare --project monprojet.json cloud curvature 0 \
-o /data/courbure.las --type gauss --radius 0.5 --add-to-project
Options : -o/--output TEXTE (obligatoire), --type [mean|gauss], -r/--radius FLOTTANT, --add-to-project
cloud roughness
Calculer le champ scalaire de rugosité (écart par rapport au plan local de meilleur ajustement).
cli-anything-cloudcompare --project monprojet.json cloud roughness 0 \
-o /data/rugosite.las --radius 0.2 --add-to-project
Options : -o/--output TEXTE (obligatoire), -r/--radius FLOTTANT, --add-to-project
cloud density
Calculer le champ scalaire de densité de points.
# Densité KNN
cli-anything-cloudcompare --project monprojet.json cloud density 0 \
-o /data/densite.las --type knn --radius 0.5
# Densité de surface
cli-anything-cloudcompare --project monprojet.json cloud density 0 \
-o /data/densite.las --type surface --radius 1.0 --add-to-project
Options : -o/--output TEXTE (obligatoire), -r/--radius FLOTTANT, --type [knn|surface|volume], --add-to-project
cloud segment-cc
Segmenter un nuage en composantes connexes (clusters). Chaque composante est sauvegardée dans un fichier séparé.
# Segmenter avec un niveau d'octree 8, minimum 100 points par composante
cli-anything-cloudcompare --project monprojet.json cloud segment-cc 0 \
-o /data/composantes/ --octree-level 8 --min-points 100
# Sauvegarder les composantes sous forme de fichiers PLY
cli-anything-cloudcompare --project monprojet.json cloud segment-cc 0 \
-o /data/composantes/ --octree-level 6 --min-points 50 --fmt ply
Options : -o/--output-dir TEXTE (obligatoire), --octree-level ENTIER, --min-points ENTIER, --fmt TEXTE
cloud merge
Fusionner tous les nuages du projet en un seul nuage.
cli-anything-cloudcompare --project monprojet.json cloud merge \
-o /data/fusionne.las --add-to-project
Options : -o/--output TEXTE (obligatoire), --add-to-project
cloud mesh-delaunay
Construire un maillage de triangulation 2.5D de Delaunay à partir d'un nuage.
# Maillage Delaunay de base
cli-anything-cloudcompare --project monprojet.json cloud mesh-delaunay 0 \
-o /data/surface.obj
# Plan de meilleur ajustement avec limite de longueur d'arête maximale
cli-anything-cloudcompare --project monprojet.json cloud mesh-delaunay 0 \
-o /data/surface.ply --best-fit --max-edge-length 2.0 --add-to-project
Options : -o/--output TEXTE (obligatoire), --best-fit, --max-edge-length FLOTTANT, --add-to-project
4. mesh — Opérations sur les maillages (3 commandes)
mesh add
Ajouter un fichier de maillage au projet.
cli-anything-cloudcompare --project monprojet.json mesh add /data/modele.obj
# Ajouter avec une étiquette
cli-anything-cloudcompare --project monprojet.json mesh add /data/modele.ply -l "modèle bâtiment"
Options : -l/--label TEXTE
mesh list
Lister tous les maillages du projet.
cli-anything-cloudcompare --project monprojet.json mesh list
# Sortie JSON
cli-anything-cloudcompare --project monprojet.json --json mesh list
mesh sample
Échantillonner un nuage de points à partir d'une surface de maillage.
# Échantillonner 50 000 points du maillage à l'indice 0
cli-anything-cloudcompare --project monprojet.json mesh sample 0 \
-o /data/echantillonne.las -n 50000
# Ajouter le nuage échantillonné au projet
cli-anything-cloudcompare --project monprojet.json mesh sample 0 \
-o /data/echantillonne.las -n 100000 --add-to-project
Options : -o/--output TEXTE (obligatoire), -n/--count ENTIER (obligatoire), --add-to-project
5. distance — Calculs de distance (15 commandes)
distance c2c (10 commandes)
Calcul de la distance d'un nuage à un autre (C2C) en utilisant l'une des 10 métriques suivantes :
c2c-dir: calcul de l'orientation des normalesc2c-don: différence d'orientation des normalesc2c-fpfh: histogramme de points de caractéristiques rapides (FPFH)c2c-hausdorff: distance de Hausdorffc2c-heights: distance de hauteur (coordonnée Z uniquement)c2c-knn: distance moyenne aux k plus proches voisinsc2c-manhattan: distance de Manhattanc2c-maxdist: distance maximale entre les nuagesc2c-pl2point: distance du plan local au pointc2c-pl2plane: distance du plan local au plan local (plan à plan)
Options communes pour toutes : -c/--cloud TEXTE (obligatoire, fichier source), -r/--reference TEXTE (obligatoire, fichier de référence), -o/--output TEXTE (obligatoire), --add-to-project
# Distance C2C - k plus proches voisins
cli-anything-cloudcompare --project monprojet.json distance c2c-knn \
-c nuage_a.las -r nuage_b.las -o /data/distance_c2c.las
# Distance C2C - Hausdorff
cli-anything-cloudcompare --project monprojet.json distance c2c-hausdorff \
-c scan1.ply -r scan2.ply -o /data/hausdorff.las --add-to-project
# Distance C2C - plan à plan
cli-anything-cloudcompare --project monprojet.json distance c2c-pl2plane \
-c scan.las -r modele.ply -o /data/plan2plan.las
distance c2m (5 commandes)
Calcul de la distance du nuage au maillage (C2M) en utilisant l'une des 5 métriques suivantes :
c2m-dir: distance directionnelle signéec2m-euclidean: distance euclidienne minimalec2m-heights: distance de hauteur (coordonnée Z uniquement)c2m-manhattan: distance de Manhattanc2m-maxdist: distance maximale du nuage au maillage
Options communes pour toutes : -c/--cloud TEXTE (obligatoire, fichier source), -m/--mesh TEXTE (obligatoire, fichier de maillage), -o/--output TEXTE (obligatoire), --add-to-project
# Distance C2M - euclidienne
cli-anything-cloudcompare --project monprojet.json distance c2m-euclidean \
-c scan.las -m modele.obj -o /data/c2m_euclid.las
# Distance C2M - Manhattan
cli-anything-cloudcompare --project monprojet.json distance c2m-manhattan \
-c scan.las -m modele.obj -o /data/c2m_manhattan.las --add-to-project
# Distance C2M - maximale
cli-anything-cloudcompare --project monprojet.json distance c2m-maxdist \
-c scan.las -m modele.obj -o /data/c2m_max.las
6. transform — Transformations (6 commandes)
transform icp
Alignement de nuage à nuage à l'aide de l'algorithme ICP (Iterative Closest Point).
# Alignement de base
cli-anything-cloudcompare --project monprojet.json transform icp \
-s scan1.las -t scan2.las -o /data/aligne.las
# Avec paramètres personnalisés
cli-anything-cloudcompare --project monprojet.json transform icp \
-s source.ply -t cible.ply -o /data/aligne.ply \
--iterations 50 --overlap 0.7 --random-sampling-limit 50000 \
--adjust-scale --add-to-project
Options : -s/--source TEXTE (obligatoire), -t/--target TEXTE (obligatoire), -o/--output TEXTE (obligatoire), --iterations ENTIER, --overlap FLOTTANT, --random-sampling-limit ENTIER, --adjust-scale, --add-to-project
transform matrix
Appliquer une transformation affine (matrice 4×4 homogène) à un nuage ou un maillage.
# Appliquer une matrice de translation
cli-anything-cloudcompare --project monprojet.json transform matrix \
-e nuage.las -m /data/matrice.txt -o /data/transforme.las
# Appliquer une rotation de 90° autour de Z
cli-anything-cloudcompare --project monprojet.json transform matrix \
-e maillage.obj -m /data/rotation90z.txt -o /data/transforme.obj --add-to-project
Options : -e/--entity TEXTE (obligatoire), -m/--matrix TEXTE (obligatoire), -o/--output TEXTE (obligatoire), --add-to-project
7. export — Exportation (3 commandes)
export cloud
Exporter un nuage vers n'importe quel format pris en charge. Si aucun format n'est spécifié, utilise celui du fichier projet.
# Exporter vers un format spécifique
cli-anything-cloudcompare --project monprojet.json export cloud 0 \
-o /data/export.las --format LAS
# Exporter au format PLY
cli-anything-cloudcompare --project monprojet.json export cloud 0 \
-o /data/export.ply --format PLY --add-to-project
Options : -o/--output TEXTE (obligatoire), --format TEXTE (obligatoire), --add-to-project
export mesh
Exporter un maillage vers n'importe quel format pris en charge.
# Exporter au format OBJ
cli-anything-cloudcompare --project monprojet.json export mesh 0 \
-o /data/maillage.obj --format OBJ
# Exporter au format STL
cli-anything-cloudcompare --project monprojet.json export mesh 0 \
-o /data/maillage.stl --format STL --add-to-project
Options : -o/--output TEXTE (obligatoire), --format TEXTE (obligatoire), --add-to-project
export all
Exporter toutes les entités du projet dans leurs formats par défaut.
# Exporter toutes les entités dans le répertoire actuel
cli-anything-cloudcompare --project monprojet.json export all
# Exporter dans un répertoire spécifique
cli-anything-cloudcompare --project monprojet.json export all -d /data/export/
Options : -d/--directory TEXTE
8. repl — Shell interactif
Lance une session REPL CloudCompare interactive. Toutes les commandes CLI ci-dessus sont disponibles dans le REPL, ainsi que !commandes_shell. Les résultats s'affichent dans le terminal.
cli-anything-cloudcompare --project monprojet.json repl
CC> cloud list
CC> cloud subsample 0 -o test.las -m random -n 1000
CC> !ls -lh *.las # commande shell
CC> exit
9. info — Informations et aide (1 commande)
info summary
Afficher un résumé de toutes les commandes disponibles (utile pour l'auto-découverte des agents).
cli-anything-cloudcompare info summary
# Sortie JSON
cli-anything-cloudcompare --json info summary
Résumé de sortie :
- 41 commandes au total
- 9 groupes de commandes
- 21 commandes cloud, 3 commandes mesh, 15 commandes de distance, 6 commandes de transformation
- 35+ formats de fichiers pris en charge pour l'entrée et la sortie
Formats de fichiers pris en charge
Formats d'entrée des nuages de points : LAS, LAZ, E57, PLY, PCD, XYZ, TXT, ASC, PTX, etc.
Formats d'entrée des maillages : OBJ, STL, PLY, OFF, FBX, COLLADA, 3DS, etc.
Formats de sortie des nuages de points : LAS, LAZ, PLY, PCD, E57, XYZ, TXT, ASC, PTX, BIN, etc.
Formats de sortie des maillages : OBJ, STL, PLY, OFF, FBX, COLLADA, 3DS, etc.
Les formats pris en charge dépendent de la version et de la compilation de CloudCompare.
Dépannage
CloudCompare introuvable
Vérifiez que CloudCompare est installé et accessible dans votre PATH système :
cloudcompare.CloudCompare -help
Sur Flatpak, l'outil détecte automatiquement la commande Flatpak. Sur macOS, le chemin par défaut est /Applications/CloudCompare.app/Contents/MacOS/CloudCompare.
Problèmes de performances
- Les grands nuages de points (> 10 millions de points) peuvent nécessiter une mémoire importante
- Utilisez
cloud subsamplepour réduire le nombre de points avant les opérations coûteuses - L'option
--random-sampling-limitdans ICP est utile pour les grandes scènes
Problèmes de format de fichier
- Certains formats E57 peuvent ne pas inclure les couleurs (RVB) dans tous les exportateurs
- Les fichiers PLY peuvent nécessiter des paramètres de format binaire/ASCII explicites dans certains cas
- Consultez les forums CloudCompare pour les problèmes de formats de fichiers non listés
Licence
cli-anything-cloudcompare est distribué sous licence MIT. CloudCompare est distribué sous licence GPLv2+.
Documentation générée (et maintenue) avec ❤️ par l'équipe cli-anything.