Nouveau projet

Titre, plan.json reçu de l'IA et image du plan : la 3D est créée tout de suite.

Information

Copie tout le texte ci-dessous dans CHATGPT AI OU CLAUDE AI , joins l'image du plan, et enregistre la réponse de l'IA.

Analyse l’image du plan d’appartement et retourne UNIQUEMENT un objet JSON valide, sans texte, sans markdown, sans commentaires et sans explication. FORMAT EXACT : { "name": "Nom du logement", "wall_height": 2.5, "wall_thickness": 0.15, "walls": [ { "id": "w1", "start": [0, 0], "end": [8, 0] } ], "openings": [ { "wall_id": "w1", "type": "window", "position": 2.0, "width": 1.2, "height": 1.2, "sill": 0.9 }, { "wall_id": "w1", "type": "door", "position": 5.0, "width": 0.9, "height": 2.1, "sill": 0 } ], "rooms": [ { "name": "Salon", "polygon": [[0, 0], [8, 0], [8, -4], [0, -4]] } ] } RÈGLES IMPÉRATIVES : 1. ÉCHELLE - Utilise exclusivement les cotes visibles sur le plan pour déterminer l'échelle. - Toutes les coordonnées et dimensions du JSON sont en mètres. - Convertis les millimètres du plan en mètres. - Arrondis toutes les valeurs numériques à 2 décimales. - Ne suppose jamais une dimension si une cote visible permet de la calculer. 2. SYSTÈME DE COORDONNÉES - L'origine [0, 0] est le coin supérieur gauche du logement. - X augmente vers la droite. - Y augmente vers le haut. - Comme l'image va vers le bas, toutes les coordonnées situées sous l'origine ont un Y négatif. - Exemple : un point situé 3,50 m sous l'origine a la coordonnée Y = -3.50. 3. MURS - Décris les murs par leur LIGNE MÉDIANE, et non par leur bord intérieur ou extérieur. - Utilise wall_thickness = 0.15 sauf indication contraire clairement visible. - Si un mur a clairement une épaisseur différente (ex. mur extérieur ou porteur), ajoute-lui "thickness" en mètres, par exemple { "id": "w1", "start": [0, 0], "end": [8, 0], "thickness": 0.3 } ; sinon n'ajoute pas ce champ. - Un mur droit continu doit être représenté par UN SEUL objet dans "walls", même s'il sépare plusieurs pièces ou comporte plusieurs ouvertures. - Ne découpe pas un mur en plusieurs segments simplement parce qu'une pièce ou une porte arrive dessus. - Deux murs ne doivent être séparés que s'il y a réellement une rupture géométrique, un changement de direction ou une extrémité. - Les murs extérieurs doivent former le contour global du logement. - Les murs intérieurs doivent suivre exactement les séparations visibles sur le plan. - Les coordonnées des murs doivent être cohérentes entre elles : les extrémités des murs qui se raccordent doivent avoir exactement les mêmes coordonnées. 4. PIÈCES - Identifie toutes les zones distinctes délimitées par les murs. - Chaque pièce doit avoir un nom UNIQUE. - Les noms doivent être explicites : "Chambre 1", "Chambre 2", "Salle de bain", "Cuisine", "Salon", "Entrée", etc. - Un couloir ou une entrée clairement délimité(e) doit être une pièce séparée. - Si une zone est clairement un balcon, une terrasse ou un espace extérieur délimité par les murs du plan, représente-la également comme une pièce avec un nom explicite, par exemple "Balcon". - Les polygones doivent suivre les LIGNES MÉDIANES des murs qui entourent la pièce. - Les points du polygone doivent être donnés dans l'ordre, horaire ou antihoraire. - Ne répète jamais le premier point à la fin. - Les polygones ne doivent pas se chevaucher. - Ensemble, les polygones doivent couvrir toute la géométrie intérieure représentée par le plan, sans trous ni chevauchements. - Ne crée jamais une pièce uniquement parce qu'une porte semble créer une séparation : il faut une véritable séparation par un mur. - Ne fusionne pas deux pièces séparées par un mur continu. 5.RÈGLE DE VALIDATION DES OUVERTURES — IMPÉRATIVE : Pour CHAQUE ouverture, vérifie mathématiquement qu'elle est entièrement contenue dans le mur auquel elle est rattachée. Si un mur va de START à END et a une longueur L, avec : - position = distance entre START et le CENTRE de l'ouverture ; - width = largeur totale de l'ouverture ; alors il faut impérativement respecter : position - width / 2 >= 0 ET position + width / 2 <= L Il est INTERDIT de produire une ouverture qui dépasse une extrémité du mur. Si la position estimée initialement ne respecte pas ces contraintes, CORRIGE AUTOMATIQUEMENT la position en fonction de la géométrie réellement visible sur le plan. Ne modifie pas la longueur du mur uniquement pour faire rentrer une ouverture. Exemple : Si w8 va de [0.00, -3.00] à [2.30, -3.00], sa longueur est 2.30 m. Une porte de largeur 0.90 m sur ce mur doit avoir une position comprise entre 0.45 m et 1.85 m. Une valeur comme position = 2.75 m est donc INTERDITE. Avant de retourner le JSON final, effectue cette vérification pour TOUTES les ouvertures, sans exception. Si une ouverture échoue à cette vérification, recalcule sa position avant de produire le JSON. 6. PORTES ET SENS D'OUVERTURE - Le symbole d'arc de porte sert à identifier une porte et sa largeur approximative. - Le sens d'ouverture n'a pas besoin d'être stocké dans le JSON. - Seule la position de l'ouverture dans le mur est nécessaire. - Ne crée pas un mur supplémentaire pour représenter l'arc d'ouverture. 7. LECTURE DES COTES - Les cotes servent à reconstruire la géométrie réelle, pas à créer des murs supplémentaires. - Une cote comme 6000 signifie 6.00 m. - Une cote comme 3500 signifie 3.50 m. - Une cote comme 1500 signifie 1.50 m. - Une cote comme 1075 signifie 1.075 m, soit 1.08 m après arrondi. - Lorsque plusieurs cotes permettent de déduire une position, utilise la somme ou la différence des cotes plutôt qu'une estimation visuelle. - Exemple : si la largeur totale est 6.00 m et qu'une séparation verticale est au milieu, utilise X = 3.00 m. 8. COHÉRENCE GÉOMÉTRIQUE OBLIGATOIRE Avant de produire le JSON, vérifie mentalement : - que le contour extérieur est fermé ; - que les murs intérieurs se raccordent correctement ; - que toutes les pièces sont fermées par des murs ; - que chaque ouverture appartient à un mur existant ; - qu'aucune ouverture ne dépasse de son mur ; - que les polygones des pièces ne se chevauchent pas ; - que les polygones utilisent les lignes médianes des murs ; - que les dimensions globales correspondent aux cotes du plan ; - que toutes les coordonnées sont en mètres ; - que toutes les valeurs sont arrondies à 2 décimales. 9. PRIORITÉ EN CAS D'AMBIGUÏTÉ Respecte cette priorité : 1. géométrie et murs réellement dessinés ; 2. cotes numériques du plan ; 3. raccordement logique des murs ; 4. symboles de portes et fenêtres ; 5. estimation visuelle uniquement en dernier recours. 10. SORTIE - Retourne uniquement le JSON. - Le JSON doit être syntaxiquement valide. - N'ajoute aucun commentaire. - N'ajoute aucun texte avant ou après le JSON. - N'utilise pas de coordonnées négatives en X. - Les Y sous l'origine doivent être négatifs. - Utilise des identifiants de murs uniques : "w1", "w2", "w3", etc. - Utilise des noms de pièces uniques. 11. NOM DU FICHIER DE SORTIE - Lorsque le JSON est fourni sous forme de fichier téléchargeable, le fichier doit impérativement être nommé exactement : `plan.json` - L'extension doit être `.json`. - Ne pas utiliser `.txt`, `.json.txt` ou un autre nom de fichier. - Le contenu du fichier doit être exactement le JSON généré, sans markdown, sans ``` et sans texte supplémentaire. - Le fichier doit être un fichier JSON valide encodé en UTF-8.
Exemple plan 3D

Titre, plan.json reçu de l'IA et image du plan : la 3D est créée tout de suite.

Créé à partir du titre : lettres, chiffres et tirets.

Optionnel : sans plan.json, tu traceras le plan dans le traceur.