Skip to main content

MORET geometry viewer (OCCT/OCP + PyQt5) with batch tools

Project description

moret-geom-viewer

Vue 3D

Viewer de géométrie MORET (PyQt5 + OCP/OCCT) avec :

  • parsing du fichier de données MORET
  • affichage 3D + coupe 2D (section OCCT des shapes instanciés)
  • export CSV unique des volumes calculés :
    • volumes-instances
    • volumes logiques
    • milieux
    • globalité des volumes
  • export CSV de comparaison entre volumes calculés par moret-geom-viewer et volumes lus dans un fichier XML MORET
  • overlay scalaire à partir des résultats XML MORET, avec possibilité de normalisation à 1 cm³
  • overlay des neutrons sources par étape
  • mode batch (sans GUI) pour exports :
    • volumes / comparaison volumes
    • coupes 2D à partir des directives GRAP/PAIN

Installation

Le projet vise Python 3.10+.

Le moteur géométrique OCCT est fourni par le package cadquery-ocp
(il expose le module Python OCP, requis en GUI comme en batch).

Les dépendances obligatoires du projet sont :

  • matplotlib
  • cadquery-ocp (module OCP)
  • pandas
  • lxml

La dépendance optionnelle GUI est :

  • PyQt5

Option 1 — Installation dans un environnement virtuel (recommandé)

python -m venv venv
source venv/bin/activate
python -m pip install -U pip setuptools wheel
python -m pip install -e .[gui]

Notes :

  • cadquery-ocp est installé automatiquement (dépendance obligatoire).
  • [gui] installe PyQt5.
  • Le mode editable -e est utile en développement.

Option 2 — Installation sans venv (installation utilisateur)

Si tu ne veux pas utiliser de venv :

python -m pip install --upgrade --user pip setuptools wheel
python -m pip install --user -e .[gui]

Important :

  • si tu n’as pas les droits d’écriture sur les site-packages système, pip bascule automatiquement en installation utilisateur (--user);
  • le mode editable (-e) nécessite une version récente de pip/setuptools (PEP 660) ;
  • sinon, installe simplement sans -e :
python -m pip install --user .[gui]

Installation depuis un wheel (distribution binaire)

Si tu as un wheel déjà construit dans dist/, tu peux installer directement :

python -m pip install dist/moret_geom_viewer-0.1.0-py3-none-any.whl

Pour construire le wheel depuis les sources (dans le dépôt) :

python -m pip install -U build
python -m build

Les artefacts sont créés dans dist/ (wheel + sdist).

Pour désinstaller :

python -m pip uninstall moret-geom-viewer

Diagnostic version / environnement

Le diagnostic --check vérifie notamment :

  • matplotlib
  • OCP
  • pandas
  • lxml
  • PyQt5 (viewer GUI uniquement)

Viewer

moret-geom-viewer --version
moret-geom-viewer --check

Batch

moret-geom-viewer-batch --version
moret-geom-viewer-batch --check

Un code de sortie 2 indique qu’une dépendance obligatoire est absente.


Mode Viewer (GUI)

moret-geom-viewer <geom_path> [module_id]

Notes :

  • module_id est optionnel ; par défaut le module instancié est "0".

Exemples :

moret-geom-viewer BASIC_1_GEOM_2000_ASSO.m6
moret-geom-viewer BASIC_1_GEOM_2000_ASSO.m6 0
moret-geom-viewer BASIC_1_GEOM_2000_ASSO.m6 ASSEMBLIES

Raccourcis clavier (viewer)

Coupe / navigation

  • X / Y / Z : choisir l’axe de coupe
  • ↑ / ↓ : déplacer le plan de coupe
  • R : retour à la vue complète (sans coupe, vue isométrique, transparence réinitialisée)
  • I : vue isométrique

Fenêtre 2D

  • S : activer/désactiver la fenêtre de coupe 2D
  • G : basculer le rendu 2D PAIN / GRAP (remplissage ON/OFF)

Caméra

  • PgUp / PgDn : zoom clavier
  • Ctrl + ← / → : azimut
  • Ctrl + ↑ / ↓ : élévation
  • Ctrl + PgUp / PgDn : roll

Transparence globale

  • + : objets plus transparents
  • - : objets plus opaques

Recherche / filtre de volumes

  • F : ouvre une fenêtre persistante de filtre de sélection de volumes
    • champ texte : sélection par sous-chaîne sur le nom de volume
    • mode pour les volumes non sélectionnés :
      • Gray : grisage avec transparence 0.85
      • Hide : masquage
    • Invert : inverse sélection / non-sélection
    • Clear : efface le filtre
    • fermeture de la fenêtre : retour à l’affichage normal

Overlay scalaire

  • O : ouvre une fenêtre pour l’affichage de l’overlay des résultats XML
  • Les overlays XML scores peuvent être normalisés à 1 cm³ lorsque le score n’est pas déjà normalisé au volume.
  • Les overlays XML de stratification des sources peuvent aussi être normalisés à 1 cm³.
  • La normalisation à 1 cm³ est disponible pour les cibles :
    • By volume : division par le volume calculé du volume-instance
    • By medium : division par le volume calculé du milieu

Overlay des neutrons sources

  • N : ouvre la fenêtre de visualisation des neutrons sources

Fonctionnalités principales :

  • chargement d’un fichier / archive de neutrons sources par étape ;
  • affichage en mode nuage de neutrons ;
  • affichage alternatif en overlay scalaire des fractions de sources par volume-instance ;
  • choix du mode de représentation via un combo Representation mode :
    • Neutron cloud
    • Source-fraction scalar overlay
  • en mode nuage :
    • option Show only referenced volumes
    • géométrie rendue en arrière-plan, très transparente
  • en mode overlay scalaire :
    • choix du scope :
      • Current step
      • All loaded steps
    • réutilisation des options d’affichage de l’overlay scalaire :
      • échelle linéaire / logarithmique
      • gestion des valeurs absentes
      • gris / transparent / hide

Remarques :

  • le mode nuage et le mode overlay scalaire sont exclusifs ;
  • la lecture des étapes ne présente d’intérêt visuel que pour le mode nuage ou pour l’overlay scalaire en scope Current step.

Matériaux

  • M : ouvrir la boîte matériaux / couleurs

Exports

  • V : export CSV des volumes calculés
  • Shift + V : export CSV de comparaison avec les volumes d’un fichier XML MORET
  • P : export PDF des coupes 2D définies par les directives GRAP/PAIN du fichier de données MORET
  • E : screenshot 3D (PNG HQ)

Les exports GUI liés aux volumes utilisent les conventions suivantes :

  • <geom_path>.volumes.csv
  • <geom_path>.volumes_comparison.csv

Le nom complet du fichier de données MORET est conservé tel quel, y compris son extension finale éventuelle (.m6, par exemple).

L’export GRAP/PAIN en GUI produit les mêmes fichiers que le mode batch :

  • <geom_path>_NNN_PAIN_<AXIS>_<POS>.pdf
  • <geom_path>_NNN_GRAP_<AXIS>_<POS>[_ZOOM_...].pdf

Les couleurs utilisées sont :

  • la palette standard MORET
  • les directives COLO éventuellement définies dans les blocs GRAP/PAIN

Les couleurs personnalisées du viewer GUI ne sont pas utilisées.


Mode batch (sans GUI)

Le batch expose une CLI dédiée.
En mode batch, le module instancié est toujours le module principal "0" (pas d’argument module_id).

moret-geom-viewer-batch <geom_path> <jobs...> [options]

jobs est une liste (combinable) parmi :

  • volumes : export CSV des volumes calculés ; si --compar_xml est fourni, exporte aussi le CSV de comparaison avec le fichier XML MORET
  • slices2d : génère des coupes 2D à partir des directives GRAP/PAIN lues dans le fichier de données MORET

Export volumes CSV

moret-geom-viewer-batch <geom_path> volumes

Sortie (créée au même endroit que le fichier de données MORET) : <geom_path>.volumes.csv

Exemple : LR0_case.m6LR0_case.m6.volumes.csv

Comparaison de volumes calculés avec ceux calculés dans un fichier XML de MORET

moret-geom-viewer-batch <geom_path> volumes --compar_xml <results.xml>

Sortie (créée au même endroit que le fichier de données MORET) :

  • <geom_path>.volumes.csv
  • <geom_path>.volumes_comparison.csv

Exemple : LR0_case.m6LR0_case.m6.volumes.csv LR0_case.m6LR0_case.m6.volumes_comparison.csv


Génération coupes 2D depuis GRAP/PAIN (batch)

Certains jeux de données MORET peuvent contenir (hors bloc GEOM...ENDG) des directives :

GRAP  Z  0.0  ENDG
GRAP  Z  0.0  ZOOM  -10.0 -10.0 4.0 4.0 ENDG
PAIN  Z  0.0  ENDP
PAIN  Z  0.0  ZOOM  -10.0 -10.0 4.0 4.0 ENDP

Sémantique :

  • GRAP : contours uniquement (colorés par matériau), pas de remplissage
  • PAIN : remplissage par matériau
  • X/Y/Z : plan de coupe (normal à l’axe)
  • nombre après l’axe : altitude de coupe
  • ZOOM u_min v_min du dv :
    • u_min, v_min = coordonnées minimales dans le plan
    • du, dv = largeurs selon les 2 axes du plan
    • u_max = u_min + du ; v_max = v_min + dv

Commande :

moret-geom-viewer-batch <geom_path> slices2d [--format png|pdf|svg] [--dpi N]

Important (noms de fichiers) :

  • Les sorties sont créées au même endroit que le fichier de données MORET.
  • Le préfixe des fichiers commence toujours par le chemin complet geom_path (extension conservée).
  • Les fichiers incluent le suffixe _ZOOM_u0_v0_du_dv si une fenêtre ZOOM est fournie.

Exemple :

moret-geom-viewer-batch BASIC_1_GEOM_2000_ASSO.m6 slices2d --format png --dpi 200

Sorties typiques :

  • BASIC_1_GEOM_2000_ASSO.m6_001_PAIN_Z_0.pdf
  • BASIC_1_GEOM_2000_ASSO.m6_002_GRAP_Z_0_ZOOM_-10_-10_4_4.pdf

Le mode GUI (raccourci P) utilise exactement le même moteur que le mode batch et produit des fichiers identiques.


Exécution combinée (volumes + slices2d)

Il suffit de donner les deux jobs :

moret-geom-viewer-batch <geom_path> volumes slices2d [--format ...] [--dpi ...]

Avec comparaison volumes/XML :

moret-geom-viewer-batch <geom_path> volumes slices2d --compar_xml <results.xml> [--format ...] [--dpi ...]

Notes techniques

  • Dépendances principales :
    • OCP (cadquery-ocp) est requis en GUI comme en batch.
    • Matplotlib est requis en GUI comme en batch pour les coupes 2D et les exports (PNG/PDF/SVG).
    • PyQt5 est requis en GUI.
  • Les CSV sont en ; et les volumes sont en cm^3.

Tolérance aux fichiers XML incomplets

Certains fichiers XML MORET peuvent être tronqués ou non clôturés proprement (par exemple arrêt prématuré d’un calcul).

Le projet peut être configuré pour lire ces fichiers en mode tolérant (lxml.etree.XMLParser(recover=True)), ce qui permet de récupérer une partie des informations exploitables malgré une fin de fichier invalide.

Limites :

  • le document reconstruit peut être incomplet ;
  • certaines sections absentes ou tronquées resteront inexploitables ;
  • les résultats doivent être considérés avec prudence si le XML n’est pas complet.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

moret_geom_viewer-0.1.2-py3-none-any.whl (309.6 kB view details)

Uploaded Python 3

File details

Details for the file moret_geom_viewer-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for moret_geom_viewer-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 954ae2cddde0c4e75544b8bbfbe90fa5de0e9417f5109aea359b58a2756b99a8
MD5 de62e736f9018487290c458b37d0574b
BLAKE2b-256 489b9c525cce1ce90f14ed7c42757a98b85f166a4afeb119cb5b2ed6f4d1d228

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page