{"id":166,"date":"2026-06-05T09:43:36","date_gmt":"2026-06-05T09:43:36","guid":{"rendered":"https:\/\/www.geometre-confiance.fr\/guide\/2026\/06\/05\/plan-de-masse-cote-dans-les-3-dimensions-guide-complet-pour-la-conception-precise\/"},"modified":"2026-06-05T09:43:36","modified_gmt":"2026-06-05T09:43:36","slug":"plan-de-masse-cote-dans-les-3-dimensions-guide-complet-pour-la-conception-precise","status":"publish","type":"post","link":"https:\/\/www.geometre-confiance.fr\/guide\/2026\/06\/05\/plan-de-masse-cote-dans-les-3-dimensions-guide-complet-pour-la-conception-precise\/","title":{"rendered":"Plan de masse cot\u00e9 dans les 3 dimensions\u00a0: guide complet pour la conception pr\u00e9cise"},"content":{"rendered":"<p class=\"wp-block-paragraph\">R\u00e9aliser un <strong>plan de masse<\/strong> cot\u00e9 dans les trois dimensions demande une compr\u00e9hension fine de la parcelle, des contraintes d\u2019urbanisme et des m\u00e9thodes de <strong>mod\u00e9lisation 3D<\/strong>. Ce guide pr\u00e9sente une d\u00e9marche pratique pour obtenir une <strong>conception pr\u00e9cise<\/strong>, depuis le rep\u00e9rage cadastral jusqu\u2019\u00e0 la production d\u2019un document exploitable pour une d\u00e9claration pr\u00e9alable ou un permis. Les points cl\u00e9s : positionnement sur le fond cadastral, cotations verticales et horizontales, respect des reculs et des r\u00e8gles du PLU, et v\u00e9rification des hauteurs en relation avec l\u2019existant. Le fil conducteur retenu suit l\u2019exemple d\u2019un projet r\u00e9sidentiel type \u2014 la transformation de l\u2019arri\u00e8re d\u2019une maison pour int\u00e9grer une v\u00e9randa et une petite piscine \u2014 afin d\u2019illustrer, \u00e9tape par \u00e9tape, la fa\u00e7on dont la <strong>g\u00e9om\u00e9trie<\/strong> d\u2019un terrain influence les choix d\u2019implantation et la qualit\u00e9 du <strong>dessin technique<\/strong>.<\/p>\n\n<ul class=\"wp-block-list\"><li><strong>Rep\u00e9rage cadastral<\/strong> : utiliser les donn\u00e9es officielles pour placer le b\u00e2timent.<\/li><li><strong>Cotations 3D<\/strong> : indiquer altitudes, pentes et hauteurs pour \u00e9viter les refus.<\/li><li><strong>Conformit\u00e9 administrative<\/strong> : fournir DPC1 (plan de situation) et DPC2 (plan de masse cot\u00e9).<\/li><li><strong>Outils pratiques<\/strong> : appuis et ressources pour dessiner sans logiciel SIG complexe.<\/li><li><strong>V\u00e9rifications<\/strong> : checklist finale avant d\u00e9p\u00f4t en mairie.<\/li><\/ul>\n\n<h2 class=\"wp-block-heading\">Plan de masse cot\u00e9 dans les 3 dimensions \u2014 d\u00e9claration pr\u00e9alable et rep\u00e9rage cadastral<\/h2>\n\n<p class=\"wp-block-paragraph\">Le point de d\u00e9part d\u2019une bonne <strong>conception pr\u00e9cise<\/strong> est le rep\u00e9rage exact de la parcelle sur le fond cadastral. Les flux de donn\u00e9es officiels fournis par les r\u00e9f\u00e9rentiels cadastraux permettent de r\u00e9cup\u00e9rer les limites parcelaires et l\u2019emprise du b\u00e2ti existant. Pour l\u2019\u00e9tude de cas de Mme Moreau, la parcelle a \u00e9t\u00e9 import\u00e9e depuis les sources officielles afin de garantir que les axes et limites sont conformes au cadastre. Ce positionnement \u00e9vite les erreurs d\u2019implantation et facilite la lecture du plan par le service d\u2019urbanisme.<\/p>\n\n<p class=\"wp-block-paragraph\">Dans la pratique, il est fr\u00e9quent d\u2019avoir besoin d\u2019un plan de situation (DPC1) et d\u2019un plan de masse cot\u00e9 (DPC2). Le plan de situation situe la parcelle dans son environnement tandis que le plan de masse cot\u00e9 d\u00e9crit pr\u00e9cis\u00e9ment l\u2019implantation sur la parcelle. Pour gagner du temps, certains outils en ligne proposent de dessiner le DPC1 et le DPC2 en quelques minutes. Par exemple, l\u2019outil de r\u00e9f\u00e9rence pour dessiner sur fond cadastral permet de produire un PDF adapt\u00e9 au dossier, utile pour une d\u00e9claration pr\u00e9alable de travaux. Un guide en ligne explique pas \u00e0 pas comment faire un plan de masse, ce qui est pratique pour des projets simples comme une serre, une v\u00e9randa ou une piscine (<a href=\"https:\/\/plandemasse-facile.fr\/\" target=\"_blank\" rel=\"noopener\">outil Plan de masse facile<\/a>).<\/p>\n\n<h3 class=\"wp-block-heading\">Proc\u00e9dure pour un rep\u00e9rage fiable<\/h3>\n\n<p class=\"wp-block-paragraph\">1) Importer les donn\u00e9es cadastrales officielles et v\u00e9rifier les limites avec la mairie si un doute subsiste. 2) Positionner l\u2019existant (habitation, annexes, acc\u00e8s) et l\u2019axe nord. 3) Dessiner l\u2019implantation du projet \u00e0 l\u2019\u00e9chelle choisie et reporter les distances aux limites. 4) Indiquer les <strong>dimensions<\/strong> et l\u2019emprise au sol pr\u00e9vue. Ces \u00e9tapes s\u2019accompagnent d\u2019un relev\u00e9 des hauteurs au niveau du sol naturel et du sol fini afin de pr\u00e9parer les cotations verticales.<\/p>\n\n<p class=\"wp-block-paragraph\">Pour l\u2019exemple, la v\u00e9randa de Mme Moreau a \u00e9t\u00e9 positionn\u00e9e \u00e0 3,5 m de la limite mitoyenne conform\u00e9ment aux prescriptions locales. L\u2019utilisation d\u2019un fond cadastral officiel a permis de v\u00e9rifier rapidement la conformit\u00e9 des reculs. Cette \u00e9tape r\u00e9duit les risques de demandes compl\u00e9mentaires lors de l\u2019instruction du dossier et am\u00e9liore la lisibilit\u00e9 du <strong>plan cot\u00e9<\/strong> pour l\u2019urbanisme.<\/p>\n\n<p class=\"wp-block-paragraph\">Insight : un rep\u00e9rage cadastral rigoureux simplifie la production du plan de masse et pr\u00e9vient les refus administratifs.<\/p>\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1376\" height=\"768\" src=\"https:\/\/www.geometre-confiance.fr\/guide\/wp-content\/uploads\/2026\/06\/Plan-de-masse-cote-dans-les-3-dimensions-guide-complet-pour-la-conception-precise-1.jpg\" alt=\"d\u00e9couvrez notre guide complet pour la conception pr\u00e9cise d&apos;un plan de masse cot\u00e9 en 3 dimensions, alliant rigueur technique et conseils pratiques pour vos projets.\" class=\"wp-image-164\" srcset=\"https:\/\/www.geometre-confiance.fr\/guide\/wp-content\/uploads\/2026\/06\/Plan-de-masse-cote-dans-les-3-dimensions-guide-complet-pour-la-conception-precise-1.jpg 1376w, https:\/\/www.geometre-confiance.fr\/guide\/wp-content\/uploads\/2026\/06\/Plan-de-masse-cote-dans-les-3-dimensions-guide-complet-pour-la-conception-precise-1-300x167.jpg 300w, https:\/\/www.geometre-confiance.fr\/guide\/wp-content\/uploads\/2026\/06\/Plan-de-masse-cote-dans-les-3-dimensions-guide-complet-pour-la-conception-precise-1-1024x572.jpg 1024w, https:\/\/www.geometre-confiance.fr\/guide\/wp-content\/uploads\/2026\/06\/Plan-de-masse-cote-dans-les-3-dimensions-guide-complet-pour-la-conception-precise-1-768x429.jpg 768w\" sizes=\"auto, (max-width: 1376px) 100vw, 1376px\" \/><\/figure>\n\n<h2 class=\"wp-block-heading\">Comment faire un plan de masse cot\u00e9 en 3 dimensions ? M\u00e9thode et cotations<\/h2>\n\n<p class=\"wp-block-paragraph\">Un <strong>plan de masse<\/strong> cot\u00e9 en 3D combine la projection horizontale de l\u2019implantation avec des cotations verticales : altitudes, pentes et hauteurs des \u00e9l\u00e9ments. La d\u00e9marche se d\u00e9compose en relev\u00e9 du terrain, dessin de l\u2019implantation, cotation horizontale, puis ajout des cotations verticales (cotes altim\u00e9triques). Dans le cas de la v\u00e9randa et de la piscine, il est n\u00e9cessaire d\u2019indiquer la diff\u00e9rence de niveau entre la maison existante et le fond de fouille de la piscine, ainsi que la hauteur totale de la v\u00e9randa depuis le sol naturel.<\/p>\n\n<p class=\"wp-block-paragraph\">Le dessin technique doit pr\u00e9ciser l\u2019\u00e9chelle, l\u2019orientation nord et les rep\u00e8res topographiques. Les <strong>cotations 3D<\/strong> servent \u00e0 montrer comment le projet modifie le volume existant : l\u2019indication des niveaux du plancher, du fa\u00eetage et des seuils est essentielle. Par exemple, pour une v\u00e9randa ajout\u00e9e \u00e0 une maison de plain-pied, la cote du seuil, la pente du sol fini et la hauteur sous plafond doivent \u00eatre report\u00e9es. Sans ces donn\u00e9es, l\u2019instruction peut \u00eatre retard\u00e9e.<\/p>\n\n<h3 class=\"wp-block-heading\">Exemples concrets de cotations<\/h3>\n\n<p class=\"wp-block-paragraph\">Exemple 1 : V\u00e9randa accroch\u00e9e \u00e0 la fa\u00e7ade \u2014 indiquer la cote du sol existant (NGF ou r\u00e9f\u00e9rence locale), la cote du sol fini et la cote du fa\u00eetage. Exemple 2 : Piscine enterr\u00e9e \u2014 indiquer la cote du fond de fouille, la cote du bord et la sur\u00e9l\u00e9vation \u00e9ventuelle des terrasses. Ces cotations traduisent la <strong>g\u00e9om\u00e9trie<\/strong> r\u00e9elle du projet et facilitent la v\u00e9rification par les services techniques.<\/p>\n\n<p class=\"wp-block-paragraph\">Des ressources pratiques expliquent comment r\u00e9aliser un plan de masse pour une demande de permis ou une d\u00e9claration pr\u00e9alable, avec des mod\u00e8les et des exemples conformes aux exigences 2026 (<a href=\"https:\/\/www.appvizer.fr\/magazine\/construction\/architecture\/faire-un-plan-masse\" target=\"_blank\" rel=\"noopener\">guide pour faire un plan de masse<\/a>).<\/p>\n\n<p class=\"wp-block-paragraph\">Insight : la pr\u00e9cision des cotations 3D conditionne la compr\u00e9hension du volume projet\u00e9 et \u00e9vite les rejets de dossier.<\/p>\n\n<figure class=\"is-provider-youtube is-type-video wp-block-embed wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"\ud83d\udd34\ud83d\udc49\ud83c\udffdCOMMENT GENERER UN PLAN DE MASSE A PARTIR DE LA 3D avec ArchiCAD?\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/CS6_kVjHpSk?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n<h2 class=\"wp-block-heading\">\u00c9l\u00e9ments obligatoires d\u2019un plan de masse cot\u00e9 en trois dimensions et v\u00e9rifications administratives<\/h2>\n\n<p class=\"wp-block-paragraph\">Pour une demande de d\u00e9claration pr\u00e9alable ou un permis, le plan de masse doit comporter plusieurs \u00e9l\u00e9ments obligatoires : le Nord, l\u2019\u00e9chelle, les limites de propri\u00e9t\u00e9, l\u2019implantation du projet, les distances aux limites et aux constructions voisines, l\u2019emprise au sol, et les <strong>hauteurs<\/strong>. Dans le contexte r\u00e8glementaire, la nature du projet (v\u00e9randa, abri, extension) d\u00e9termine les pi\u00e8ces \u00e0 fournir : DPC1, DPC2, parfois DPC3 suivant la commune. Les r\u00e8gles locales du PLU et le r\u00e8glement national d\u2019urbanisme donnent les pr\u00e9cisions n\u00e9cessaires sur les reculs et les hauteurs.<\/p>\n\n<p class=\"wp-block-paragraph\">La checklist suivante aide \u00e0 contr\u00f4ler la compl\u00e9tude du dossier :<\/p>\n\n<ul class=\"wp-block-list\"><li>Pr\u00e9sence du Nord et de l\u2019\u00e9chelle.<\/li><li>Fond cadastral officiel et limites parcellaire.<\/li><li>Cotations horizontales et verticales (cotations 3D).<\/li><li>Indication de l\u2019emprise au sol et des surfaces cr\u00e9\u00e9es.<\/li><li>Rep\u00e9rage des r\u00e9seaux et acc\u00e8s.<\/li><\/ul>\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>\u00c9l\u00e9ment<\/th>\n<th>\u00c0 inclure<\/th>\n<th>Raison<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Nord<\/td>\n<td>Oui<\/td>\n<td>Orientation et ombrages<\/td>\n<\/tr>\n<tr>\n<td>\u00c9chelle<\/td>\n<td>Oui<\/td>\n<td>Lecture fiable des cotes<\/td>\n<\/tr>\n<tr>\n<td>Cotations 3D<\/td>\n<td>Oui<\/td>\n<td>V\u00e9rification des hauteurs et volumes<\/td>\n<\/tr>\n<tr>\n<td>Fond cadastral<\/td>\n<td>Oui<\/td>\n<td>Conformit\u00e9 parcel aire<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n<p class=\"wp-block-paragraph\">En pratique, il est utile de s\u2019appuyer sur des mod\u00e8les et des exemples conformes pour 2026 : certains sites proposent des exemples PCMI2 et des PDF pr\u00eats \u00e0 l\u2019emploi, ce qui peut acc\u00e9l\u00e9rer la constitution du dossier (<a href=\"https:\/\/plan-dessineo.fr\/plan-de-masse-cote-dans-les-3-dimensions\" target=\"_blank\" rel=\"noopener\">exemple et mod\u00e8les<\/a>).<\/p>\n\n<p class=\"wp-block-paragraph\">Insight : v\u00e9rifier chaque \u00e9l\u00e9ment selon la checklist \u00e9vite les allers-retours avec la mairie et garantit une lecture claire par les services.<\/p>\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1376\" height=\"768\" src=\"https:\/\/www.geometre-confiance.fr\/guide\/wp-content\/uploads\/2026\/06\/Plan-de-masse-cote-dans-les-3-dimensions-guide-complet-pour-la-conception-precise-2.jpg\" alt=\"d\u00e9couvrez notre guide complet pour cr\u00e9er un plan de masse cot\u00e9 en 3 dimensions, assurant une conception pr\u00e9cise et d\u00e9taill\u00e9e pour tous vos projets architecturaux et d&apos;ing\u00e9nierie.\" class=\"wp-image-165\" srcset=\"https:\/\/www.geometre-confiance.fr\/guide\/wp-content\/uploads\/2026\/06\/Plan-de-masse-cote-dans-les-3-dimensions-guide-complet-pour-la-conception-precise-2.jpg 1376w, https:\/\/www.geometre-confiance.fr\/guide\/wp-content\/uploads\/2026\/06\/Plan-de-masse-cote-dans-les-3-dimensions-guide-complet-pour-la-conception-precise-2-300x167.jpg 300w, https:\/\/www.geometre-confiance.fr\/guide\/wp-content\/uploads\/2026\/06\/Plan-de-masse-cote-dans-les-3-dimensions-guide-complet-pour-la-conception-precise-2-1024x572.jpg 1024w, https:\/\/www.geometre-confiance.fr\/guide\/wp-content\/uploads\/2026\/06\/Plan-de-masse-cote-dans-les-3-dimensions-guide-complet-pour-la-conception-precise-2-768x429.jpg 768w\" sizes=\"auto, (max-width: 1376px) 100vw, 1376px\" \/><\/figure>\n\n\n\n<!--\nCalculateur de surfaces et distances pour plan de masse\nBloc pr\u00eat \u00e0 copier\/coller dans une page existante.\n\nAPI optionnelle utilis\u00e9e (gratuite, sans cl\u00e9) : r\u00e9cup\u00e9ration de la commune via code postal\nURL exemple :\nhttps:\/\/geo.api.gouv.fr\/communes?codePostal=75001\n\nExemple de r\u00e9ponse JSON (abr\u00e9g\u00e9) :\n[\n  {\n    \"code\": \"75056\",\n    \"nom\": \"Paris\",\n    \"codesPostaux\": [\"75001\",\"75002\",...],\n    \"centre\": { \"type\":\"Point\",\"coordinates\":[2.3397,48.8602] },\n    \"population\": 2140526\n  }\n]\n\nCette requ\u00eate est uniquement pour aider \u00e0 pr\u00e9-remplir le nom de la commune.\nLe calcul des distances minimales au droit des limites est une estimation bas\u00e9e sur des r\u00e8gles param\u00e9trables : v\u00e9rifier le PLU local pour validation officielle.\n-->\n\n<div id=\"calculateur-plan-masse\" class=\"max-w-4xl mx-auto p-4 bg-white shadow-md rounded-lg overflow-auto\" style=\"max-height:1200px\">\n  <h2 class=\"text-2xl font-semibold mb-3\">Calculateur de surfaces et distances pour plan de masse<\/h2>\n  <p class=\"text-sm text-gray-600 mb-4\">Entrez longueur et largeur des ouvrages (en m). Ajoutez autant d&rsquo;ouvrages que n\u00e9cessaire, renseignez la parcelle pour obtenir les pourcentages, et calculez des distances minimales estim\u00e9es selon des r\u00e8gles param\u00e9trables.<\/p>\n\n  <!-- Zone recherche commune (optionnel) -->\n  <fieldset class=\"mb-4 border p-3 rounded\" aria-labelledby=\"communeLegend\">\n    <legend id=\"communeLegend\" class=\"font-medium text-gray-800\">Recherche commune (optionnel)<\/legend>\n    <div class=\"flex gap-2 items-end\">\n      <div class=\"flex-1\">\n        <label class=\"block text-sm\">Code postal<\/label>\n        \n      <\/div>\n      <div>\n        <button id=\"btn-rechercher-commune\" class=\"bg-blue-600 text-white px-3 py-1 rounded\">Rechercher<\/button>\n      <\/div>\n      <div class=\"flex-1\">\n        <label class=\"block text-sm\">Commune d\u00e9tect\u00e9e<\/label>\n        \n      <\/div>\n    <\/div>\n    <p id=\"commune-note\" class=\"text-xs text-gray-500 mt-2\">Recherche via <span class=\"font-mono\">geo.api.gouv.fr<\/span>. R\u00e9sultat indicatif.<\/p>\n  <\/fieldset>\n\n  <!-- Formulaire ajout ouvrage -->\n  <fieldset class=\"mb-4 border p-3 rounded\" aria-labelledby=\"ouvrageLegend\">\n    <legend id=\"ouvrageLegend\" class=\"font-medium text-gray-800\">Ajouter \/ modifier un ouvrage<\/legend>\n    <div class=\"grid grid-cols-1 md:grid-cols-3 gap-3\">\n      <div>\n        <label class=\"block text-sm\">Nom de l&rsquo;ouvrage<\/label>\n        \n      <\/div>\n      <div>\n        <label class=\"block text-sm\">Longueur (m)<\/label>\n        \n      <\/div>\n      <div>\n        <label class=\"block text-sm\">Largeur (m)<\/label>\n        \n      <\/div>\n\n      <div>\n        <label class=\"block text-sm\">Hauteur (m) (si connu)<\/label>\n        \n      <\/div>\n      <div>\n        <label class=\"block text-sm\">Type<\/label>\n        \n          Habitation\n          Garage \/ Annexe\n          Local commercial\n          Autre\n        \n      <\/div>\n      <div>\n        <label class=\"block text-sm\">Zone PLU (estimation)<\/label>\n        \n          Zone urbaine (UA\/UB\/UC)\n          Zone rurale\n          Zone agricole\n          Zone industrielle\n          Personnalis\u00e9e (saisir distance)\n        \n      <\/div>\n\n      <div id=\"distance-personnalise-wrap\" class=\"hidden\">\n        <label class=\"block text-sm\">Distance minimale personnalis\u00e9e (m)<\/label>\n        \n      <\/div>\n\n      <div>\n        <label class=\"block text-sm\">Distance r\u00e9elle au limite (m)<\/label>\n        \n      <\/div>\n    <\/div>\n\n    <div class=\"mt-3 flex gap-2\">\n      <button id=\"btn-ajouter\" class=\"bg-green-600 text-white px-3 py-1 rounded\">Ajouter l&rsquo;ouvrage<\/button>\n      <button id=\"btn-reset-form\" class=\"bg-gray-200 text-gray-800 px-3 py-1 rounded\">R\u00e9initialiser<\/button>\n      <span id=\"form-msg\" class=\"text-sm text-red-600 ml-3\"><\/span>\n    <\/div>\n  <\/fieldset>\n\n  <!-- Liste ouvrages -->\n  <section class=\"mb-4\">\n    <h3 class=\"font-medium mb-2\">Liste des ouvrages<\/h3>\n    <div id=\"liste-ouvrages\" class=\"space-y-2\"><\/div>\n    <div class=\"mt-2\">\n      <button id=\"btn-vider\" class=\"bg-red-500 text-white px-3 py-1 rounded\">Vider la liste<\/button>\n      <button id=\"btn-export-json\" class=\"bg-indigo-600 text-white px-3 py-1 rounded ml-2\">Exporter JSON<\/button>\n      <button id=\"btn-export-csv\" class=\"bg-indigo-500 text-white px-3 py-1 rounded ml-2\">Exporter CSV<\/button>\n    <\/div>\n  <\/section>\n\n  <!-- R\u00e9sum\u00e9 -->\n  <section class=\"mb-4 border p-3 rounded\">\n    <h3 class=\"font-medium mb-2\">R\u00e9sum\u00e9<\/h3>\n    <div class=\"grid grid-cols-1 md:grid-cols-3 gap-3 items-end\">\n      <div>\n        <label class=\"block text-sm\">Surface parcelle (m\u00b2) (optionnel)<\/label>\n        \n      <\/div>\n      <div>\n        <label class=\"block text-sm\">Emprise totale (m\u00b2)<\/label>\n        <div id=\"total-emprise\" class=\"mt-1 font-medium\">0 m\u00b2<\/div>\n      <\/div>\n      <div>\n        <label class=\"block text-sm\">Emprise totale (ha)<\/label>\n        <div id=\"total-emprise-ha\" class=\"mt-1 font-medium\">0 ha<\/div>\n      <\/div>\n    <\/div>\n    <div class=\"mt-3\">\n      <label class=\"block text-sm\">Pourcentage d&#8217;emprise sur la parcelle<\/label>\n      <div id=\"pourcentage-emprise\" class=\"mt-1 font-medium\">&#8211;<\/div>\n    <\/div>\n  <\/section>\n\n  <!-- Calcul distances -->\n  <section class=\"mb-4 border p-3 rounded\">\n    <h3 class=\"font-medium mb-2\">Calcul des distances minimales (estimation)<\/h3>\n    <p class=\"text-sm text-gray-600 mb-2\">Les r\u00e8gles sont param\u00e9trables ci-dessous. Ce sont des valeurs indicatives. Consultez le PLU local pour validation officielle.<\/p>\n\n    <div class=\"grid grid-cols-1 md:grid-cols-3 gap-3\">\n      <div>\n        <label class=\"block text-sm\">Base zone urbaine (m)<\/label>\n        \n      <\/div>\n      <div>\n        <label class=\"block text-sm\">Base zone rurale (m)<\/label>\n        \n      <\/div>\n      <div>\n        <label class=\"block text-sm\">Majoration par m\u00e8tre de hauteur &gt; 12m (m par m)<\/label>\n        \n      <\/div>\n    <\/div>\n\n    <div class=\"mt-3\">\n      <button id=\"btn-calculer-distances\" class=\"bg-blue-600 text-white px-3 py-1 rounded\">Calculer distances<\/button>\n    <\/div>\n\n    <div id=\"resultats-distances\" class=\"mt-4\"><\/div>\n  <\/section>\n\n  <footer class=\"text-xs text-gray-500\">\n    Outil indicatif \u2014 v\u00e9rifier les prescriptions du PLU et les servitudes avant toute validation administrative.\n  <\/footer>\n<\/div>\n\n\n\/*\nScript de logique du calculateur (comment\u00e9 et lisible)\n&#8211; Gestion d&rsquo;une liste d&rsquo;ouvrages\n&#8211; Calcul de l&#8217;emprise au sol (m\u00b2) = longueur * largeur\n&#8211; Conversion m\u00b2 -&gt; ha\n&#8211; Estimation des distances minimales bas\u00e9e sur des r\u00e8gles param\u00e9trables\n&#8211; Requ\u00eate optionnelle vers geo.api.gouv.fr pour r\u00e9cup\u00e9rer le nom de la commune par code postal\n&#8211; Export JSON \/ CSV\n\nAPI utilis\u00e9e (gratuite, publique) pour la recherche de commune :\nhttps:\/\/geo.api.gouv.fr\/communes?codePostal=75001\n\nExemple simplifi\u00e9 de r\u00e9ponse JSON :\n[\n  {\n    \u00ab\u00a0code\u00a0\u00bb: \u00ab\u00a075056\u00a0\u00bb,\n    \u00ab\u00a0nom\u00a0\u00bb: \u00ab\u00a0Paris\u00a0\u00bb,\n    \u00ab\u00a0codesPostaux\u00a0\u00bb: [\u00ab\u00a075001&Prime;,\u00a0\u00bb75002\u00a0\u00bb],\n    \u00ab\u00a0centre\u00a0\u00bb: { \u00ab\u00a0type\u00a0\u00bb:\u00a0\u00bbPoint\u00a0\u00bb,\u00a0\u00bbcoordinates\u00a0\u00bb:[2.3397,48.8602] },\n    \u00ab\u00a0population\u00a0\u00bb: 2140526\n  }\n]\n\nToutes les cha\u00eenes affich\u00e9es sont en fran\u00e7ais et facilement modifiables ci-dessous.\n*\/\n\n(function () {\n  \/\/ &#8212; Utilitaires &#8212;\n  function qs(id) { return document.getElementById(id); }\n  function formatNumber(n, digits=2) { return Number.isFinite(n) ? Number(n).toFixed(digits) : n; }\n\n  \/\/ &#8212; \u00c9tat local &#8212;\n  let ouvrages = []; \/\/ tableau d&rsquo;objets {id, nom, longueur, largeur, hauteur, type, zone, distanceReelle, distancePersonnalise}\n  let nextId = 1;\n\n  \/\/ &#8212; R\u00e9f\u00e9rences DOM &#8212;\n  const nomInput = qs(&lsquo;nom&rsquo;);\n  const longueurInput = qs(&lsquo;longueur&rsquo;);\n  const largeurInput = qs(&lsquo;largeur&rsquo;);\n  const hauteurInput = qs(&lsquo;hauteur&rsquo;);\n  const typeSelect = qs(&lsquo;type&rsquo;);\n  const zoneSelect = qs(&lsquo;zone&rsquo;);\n  const distancePersWrap = qs(&lsquo;distance-personnalise-wrap&rsquo;);\n  const distancePersInput = qs(&lsquo;distance-personnalise&rsquo;);\n  const distanceReelleInput = qs(&lsquo;distance-reelle&rsquo;);\n\n  const btnAjouter = qs(&lsquo;btn-ajouter&rsquo;);\n  const btnResetForm = qs(&lsquo;btn-reset-form&rsquo;);\n  const btnVider = qs(&lsquo;btn-vider&rsquo;);\n  const listeOuvrages = qs(&lsquo;liste-ouvrages&rsquo;);\n  const formMsg = qs(&lsquo;form-msg&rsquo;);\n\n  const totalEmpriseEl = qs(&lsquo;total-emprise&rsquo;);\n  const totalEmpriseHaEl = qs(&lsquo;total-emprise-ha&rsquo;);\n  const pourcentageEmpriseEl = qs(&lsquo;pourcentage-emprise&rsquo;);\n  const surfaceParcelleInput = qs(&lsquo;surface-parcelle&rsquo;);\n\n  const regleUrbain = qs(&lsquo;regle-urbain&rsquo;);\n  const regleRurale = qs(&lsquo;regle-rurale&rsquo;);\n  const regleHauteur = qs(&lsquo;regle-hauteur&rsquo;);\n  const btnCalculerDistances = qs(&lsquo;btn-calculer-distances&rsquo;);\n  const resultatsDistances = qs(&lsquo;resultats-distances&rsquo;);\n\n  const btnExportJSON = qs(&lsquo;btn-export-json&rsquo;);\n  const btnExportCSV = qs(&lsquo;btn-export-csv&rsquo;);\n\n  \/\/ Commune recherche\n  const cpInput = qs(&lsquo;cp&rsquo;);\n  const btnRechercherCommune = qs(&lsquo;btn-rechercher-commune&rsquo;);\n  const communeInput = qs(&lsquo;commune&rsquo;);\n  const communeNote = qs(&lsquo;commune-note&rsquo;);\n\n  \/\/ &#8212; Gestion UI &#8212;\n  zoneSelect.addEventListener(&lsquo;change&rsquo;, () =&gt; {\n    if (zoneSelect.value === &lsquo;personnalise&rsquo;) {\n      distancePersWrap.classList.remove(&lsquo;hidden&rsquo;);\n    } else {\n      distancePersWrap.classList.add(&lsquo;hidden&rsquo;);\n    }\n  });\n\n  btnResetForm.addEventListener(&lsquo;click&rsquo;, (e) =&gt; {\n    e.preventDefault();\n    resetForm();\n  });\n\n  function resetForm() {\n    nomInput.value = \u00a0\u00bb;\n    longueurInput.value = \u00a0\u00bb;\n    largeurInput.value = \u00a0\u00bb;\n    hauteurInput.value = \u00a0\u00bb;\n    typeSelect.selectedIndex = 0;\n    zoneSelect.selectedIndex = 0;\n    distancePersWrap.classList.add(&lsquo;hidden&rsquo;);\n    distancePersInput.value = \u00a0\u00bb;\n    distanceReelleInput.value = \u00a0\u00bb;\n    formMsg.textContent = \u00a0\u00bb;\n  }\n\n  \/\/ &#8212; Ajout \/ suppression ouvrages &#8212;\n  btnAjouter.addEventListener(&lsquo;click&rsquo;, (e) =&gt; {\n    e.preventDefault();\n    formMsg.textContent = \u00a0\u00bb;\n\n    const nom = nomInput.value.trim() || `Ouvrage ${nextId}`;\n    const longueur = parseFloat(longueurInput.value);\n    const largeur = parseFloat(largeurInput.value);\n    const hauteur = parseFloat(hauteurInput.value);\n    const type = typeSelect.value;\n    const zone = zoneSelect.value;\n    const distancePersonnalise = distancePersInput.value ? parseFloat(distancePersInput.value) : null;\n    const distanceReelle = distanceReelleInput.value ? parseFloat(distanceReelleInput.value) : null;\n\n    if (!Number.isFinite(longueur) || !Number.isFinite(largeur)) {\n      formMsg.textContent = &lsquo;Veuillez saisir une longueur et une largeur valides (en m\u00e8tres).&rsquo;;\n      return;\n    }\n    if (longueur &lt;= 0 || largeur  {\n    if (!confirm(&lsquo;Vider la liste des ouvrages ?&rsquo;)) return;\n    ouvrages = [];\n    nextId = 1;\n    renderOuvrages();\n    updateResume();\n  });\n\n  function supprimerOuvrage(id) {\n    ouvrages = ouvrages.filter(o =&gt; o.id !== id);\n    renderOuvrages();\n    updateResume();\n  }\n\n  function editOuvrage(id) {\n    const o = ouvrages.find(x =&gt; x.id === id);\n    if (!o) return;\n    \/\/ remplir formulaire pour \u00e9dition (on va remplacer en supprimant l&rsquo;ancien et en ajoutant un nouveau)\n    nomInput.value = o.nom;\n    longueurInput.value = o.longueur;\n    largeurInput.value = o.largeur;\n    hauteurInput.value = o.hauteur || \u00a0\u00bb;\n    typeSelect.value = o.type;\n    zoneSelect.value = o.zone;\n    if (o.zone === &lsquo;personnalise&rsquo;) {\n      distancePersWrap.classList.remove(&lsquo;hidden&rsquo;);\n      distancePersInput.value = o.distancePersonnalise !== null ? o.distancePersonnalise : \u00a0\u00bb;\n    } else {\n      distancePersWrap.classList.add(&lsquo;hidden&rsquo;);\n    }\n    distanceReelleInput.value = o.distanceReelle !== null ? o.distanceReelle : \u00a0\u00bb;\n    \/\/ supprimer l&rsquo;ancienne entr\u00e9e ; l&rsquo;utilisateur peut modifier et cliquer \u00ab\u00a0Ajouter\u00a0\u00bb\n    supprimerOuvrage(id);\n    window.scrollTo({ top: 0, behavior: &lsquo;smooth&rsquo; });\n  }\n\n  function renderOuvrages() {\n    listeOuvrages.innerHTML = \u00a0\u00bb;\n    if (ouvrages.length === 0) {\n      listeOuvrages.innerHTML = &lsquo;<div class=\"text-sm text-gray-500\">Aucun ouvrage ajout\u00e9.<\/div>&lsquo;;\n      return;\n    }\n    ouvrages.forEach(o =&gt; {\n      const emprise = o.longueur * o.largeur;\n      const ha = emprise \/ 10000;\n      const container = document.createElement(&lsquo;div&rsquo;);\n      container.className = &lsquo;border rounded p-2 flex flex-col md:flex-row md:items-center md:justify-between bg-gray-50&rsquo;;\n      container.setAttribute(&lsquo;aria-live&rsquo;, &lsquo;polite&rsquo;);\n      container.innerHTML = `\n        <div class=\"flex-1\">\n          <div class=\"font-medium\">${escapeHtml(o.nom)}<\/div>\n          <div class=\"text-sm text-gray-600\">Type: ${escapeHtml(o.type)} \u2022 Zone: ${escapeHtml(o.zone)} ${o.hauteur ? &lsquo;\u2022 Hauteur: &lsquo; + formatNumber(o.hauteur) + &lsquo; m&rsquo; : \u00a0\u00bb}<\/div>\n          <div class=\"text-sm mt-1\">Dimensions: ${formatNumber(o.longueur,2)} m \u00d7 ${formatNumber(o.largeur,2)} m \u2192 Emprise ${formatNumber(emprise,2)} m\u00b2 (${formatNumber(ha,4)} ha)<\/div>\n          <div class=\"text-sm text-gray-700 mt-1\">Distance r\u00e9elle au limite: ${o.distanceReelle !== null ? formatNumber(o.distanceReelle,2) + &lsquo; m&rsquo; : &lsquo;-&lsquo; } ${o.distancePersonnalise !== null ? &lsquo; \u2022 Distance personnalis\u00e9e: &lsquo; + formatNumber(o.distancePersonnalise,2) + &lsquo; m&rsquo; : \u00a0\u00bb}<\/div>\n        <\/div>\n        <div class=\"mt-2 md:mt-0 md:ml-4 flex gap-2\">\n          <button class=\"edit-btn bg-yellow-400 text-white px-2 py-1 rounded\" data-id=\"${o.id}\">Modifier<\/button>\n          <button class=\"del-btn bg-red-500 text-white px-2 py-1 rounded\" data-id=\"${o.id}\">Supprimer<\/button>\n        <\/div>\n      `;\n      listeOuvrages.appendChild(container);\n    });\n\n    \/\/ Delegation des boutons\n    listeOuvrages.querySelectorAll(&lsquo;.del-btn&rsquo;).forEach(btn =&gt; {\n      btn.addEventListener(&lsquo;click&rsquo;, () =&gt; {\n        const id = parseInt(btn.getAttribute(&lsquo;data-id&rsquo;));\n        if (confirm(&lsquo;Supprimer cet ouvrage ?&rsquo;)) supprimerOuvrage(id);\n      });\n    });\n    listeOuvrages.querySelectorAll(&lsquo;.edit-btn&rsquo;).forEach(btn =&gt; {\n      btn.addEventListener(&lsquo;click&rsquo;, () =&gt; {\n        const id = parseInt(btn.getAttribute(&lsquo;data-id&rsquo;));\n        editOuvrage(id);\n      });\n    });\n  }\n\n  \/\/ &#8212; R\u00e9sum\u00e9 \/ Totaux &#8212;\n  function updateResume() {\n    const totalEmprise = ouvrages.reduce((s,o) =&gt; s + o.longueur * o.largeur, 0);\n    const totalHa = totalEmprise \/ 10000;\n    totalEmpriseEl.textContent = `${formatNumber(totalEmprise,2)} m\u00b2`;\n    totalEmpriseHaEl.textContent = `${formatNumber(totalHa,4)} ha`;\n    const parcelle = parseFloat(surfaceParcelleInput.value);\n    if (Number.isFinite(parcelle) &amp;&amp; parcelle &gt; 0) {\n      const pct = (totalEmprise \/ parcelle) * 100;\n      pourcentageEmpriseEl.textContent = `${formatNumber(pct,2)} %`;\n    } else {\n      pourcentageEmpriseEl.textContent = &lsquo;-&lsquo;;\n    }\n  }\n\n  surfaceParcelleInput.addEventListener(&lsquo;input&rsquo;, updateResume);\n\n  \/\/ &#8212; Calcul des distances minimales estim\u00e9es &#8212;\n  btnCalculerDistances.addEventListener(&lsquo;click&rsquo;, () =&gt; {\n    if (ouvrages.length === 0) {\n      resultatsDistances.innerHTML = &lsquo;<div class=\"text-sm text-gray-600\">Aucun ouvrage pour calculer les distances.<\/div>&lsquo;;\n      return;\n    }\n    \/\/ Lire r\u00e8gles\n    const baseUrbain = parseFloat(regleUrbain.value) || 0;\n    const baseRurale = parseFloat(regleRurale.value) || 0;\n    const majHauteur = parseFloat(regleHauteur.value) || 0;\n\n    \/\/ Construire table de r\u00e9sultats\n    let html = &lsquo;<div class=\"space-y-2\">&lsquo;;\n    ouvrages.forEach(o =&gt; {\n      const emprise = o.longueur * o.largeur;\n      \/\/ calcul distance minimale selon zone\n      let distanceMin;\n      if (o.zone === &lsquo;personnalise&rsquo;) {\n        distanceMin = (o.distancePersonnalise !== null) ? o.distancePersonnalise : baseUrbain;\n      } else if (o.zone === &lsquo;rurale&rsquo; || o.zone === &lsquo;agri&rsquo;) {\n        distanceMin = baseRurale;\n      } else if (o.zone === &lsquo;indus&rsquo;) {\n        distanceMin = Math.max(baseUrbain, baseRurale); \/\/ choix arbitraire\n      } else { \/\/ urbain par d\u00e9faut\n        distanceMin = baseUrbain;\n      }\n      \/\/ majoration selon hauteur &gt; 12m\n      if (o.hauteur &amp;&amp; o.hauteur &gt; 12) {\n        distanceMin += (o.hauteur &#8211; 12) * majHauteur;\n      }\n      \/\/ Arrondir\n      distanceMin = Number(distanceMin.toFixed(2));\n\n      \/\/ V\u00e9rifier conformit\u00e9 par rapport \u00e0 la distance r\u00e9elle si fournie\n      let conformite = &lsquo;Non renseign\u00e9e&rsquo;;\n      let statutClass = &lsquo;text-gray-700&rsquo;;\n      if (o.distanceReelle !== null) {\n        if (o.distanceReelle + 1e-9 &gt;= distanceMin) {\n          conformite = &lsquo;Respect\u00e9e&rsquo;;\n          statutClass = &lsquo;text-green-700 font-semibold&rsquo;;\n        } else {\n          conformite = &lsquo;Non respect\u00e9e&rsquo;;\n          statutClass = &lsquo;text-red-600 font-semibold&rsquo;;\n        }\n      }\n\n      html += `\n        <div class=\"border rounded p-2 bg-white\">\n          <div class=\"flex items-start justify-between\">\n            <div>\n              <div class=\"font-medium\">${escapeHtml(o.nom)}<\/div>\n              <div class=\"text-sm text-gray-600\">Zone: ${escapeHtml(o.zone)} \u2022 Type: ${escapeHtml(o.type)}<\/div>\n            <\/div>\n            <div class=\"text-right\">\n              <div class=\"${statutClass}\">${conformite}<\/div>\n            <\/div>\n          <\/div>\n          <div class=\"mt-2 text-sm\">\n            Distance minimale estim\u00e9e : <strong>${formatNumber(distanceMin,2)} m<\/strong>\n            ${o.distanceReelle !== null ? ` \u2022 Distance r\u00e9elle : ${formatNumber(o.distanceReelle,2)} m` : \u00a0\u00bb}\n          <\/div>\n        <\/div>\n      `;\n    });\n    html += &lsquo;<\/div>&lsquo;;\n    resultatsDistances.innerHTML = html;\n  });\n\n  \/\/ &#8212; Exports &#8212;\n  btnExportJSON.addEventListener(&lsquo;click&rsquo;, () =&gt; {\n    const payload = {\n      commune: communeInput.value || null,\n      date: new Date().toISOString(),\n      ouvrages,\n      totalEmprise_m2: ouvrages.reduce((s,o) =&gt; s + o.longueur * o.largeur, 0)\n    };\n    const blob = new Blob([JSON.stringify(payload, null, 2)], {type: &lsquo;application\/json&rsquo;});\n    downloadBlob(blob, `plan_masse_${(communeInput.value||&rsquo;export&rsquo;)}.json`);\n  });\n\n  btnExportCSV.addEventListener(&lsquo;click&rsquo;, () =&gt; {\n    if (ouvrages.length === 0) {\n      alert(&lsquo;Aucun ouvrage \u00e0 exporter.&rsquo;);\n      return;\n    }\n    const headers = [&lsquo;id&rsquo;,&rsquo;nom&rsquo;,&rsquo;longueur_m&rsquo;,&rsquo;largeur_m&rsquo;,&rsquo;hauteur_m&rsquo;,&rsquo;type&rsquo;,&rsquo;zone&rsquo;,&rsquo;distance_personnalise_m&rsquo;,&rsquo;distance_reelle_m&rsquo;,&#8217;emprise_m2&prime;];\n    const rows = ouvrages.map(o =&gt; [\n      o.id,\n      csvEscape(o.nom),\n      o.longueur,\n      o.largeur,\n      o.hauteur !== null ? o.hauteur : \u00a0\u00bb,\n      o.type,\n      o.zone,\n      o.distancePersonnalise !== null ? o.distancePersonnalise : \u00a0\u00bb,\n      o.distanceReelle !== null ? o.distanceReelle : \u00a0\u00bb,\n      (o.longueur * o.largeur).toFixed(3)\n    ].join(&lsquo;,&rsquo;));\n    const csv = headers.join(&lsquo;,&rsquo;) + &lsquo;n&rsquo; + rows.join(&lsquo;n&rsquo;);\n    const blob = new Blob([csv], {type: &lsquo;text\/csv;charset=utf-8;&rsquo;});\n    downloadBlob(blob, `plan_masse_${(communeInput.value||&rsquo;export&rsquo;)}.csv`);\n  });\n\n  function csvEscape(text) {\n    if (text == null) return \u00a0\u00bb;\n    const s = String(text);\n    if (s.includes(&lsquo;,&rsquo;) || s.includes(&lsquo;\u00a0\u00bb&lsquo;) || s.includes(&lsquo;n&rsquo;)) {\n      return &lsquo;\u00a0\u00bb&lsquo; + s.replace(\/\u00a0\u00bb\/g, &lsquo;\u00a0\u00bb\u00a0\u00bb&lsquo;) + &lsquo;\u00a0\u00bb&lsquo;;\n    }\n    return s;\n  }\n\n  function downloadBlob(blob, filename) {\n    const url = URL.createObjectURL(blob);\n    const a = document.createElement(&lsquo;a&rsquo;);\n    a.href = url;\n    a.download = filename;\n    document.body.appendChild(a);\n    a.click();\n    a.remove();\n    URL.revokeObjectURL(url);\n  }\n\n  \/\/ &#8212; Recherche commune (optionnelle) &#8212;\n  btnRechercherCommune.addEventListener(&lsquo;click&rsquo;, async () =&gt; {\n    const cp = cpInput.value.trim();\n    communeInput.value = \u00a0\u00bb;\n    if (!\/^d{2,5}$\/.test(cp)) {\n      communeInput.value = &lsquo;Code postal invalide&rsquo;;\n      return;\n    }\n    communeInput.value = &lsquo;Recherche&#8230;&rsquo;;\n    try {\n      \/\/ Utilisation de l&rsquo;API publique geo.api.gouv.fr\n      const url = `https:\/\/geo.api.gouv.fr\/communes?codePostal=${encodeURIComponent(cp)}&amp;fields=nom,code,codesPostaux&amp;boost=population`;\n      const resp = await fetch(url, {cache: &lsquo;no-store&rsquo;});\n      if (!resp.ok) throw new Error(&lsquo;Erreur API&rsquo;);\n      const data = await resp.json();\n      if (!Array.isArray(data) || data.length === 0) {\n        communeInput.value = &lsquo;Aucune commune trouv\u00e9e&rsquo;;\n        return;\n      }\n      \/\/ Si plusieurs communes, choisir la premi\u00e8re (la plus probable)\n      communeInput.value = data[0].nom + (data.length &gt; 1 ? ` (+${data.length-1})` : \u00a0\u00bb);\n    } catch (err) {\n      communeInput.value = &lsquo;Erreur de recherche&rsquo;;\n      console.error(err);\n    }\n  });\n\n  \/\/ &#8212; Helpers &#8212;\n  function escapeHtml(s) {\n    if (s == null) return \u00a0\u00bb;\n    return String(s).replace(\/[&amp;\u00a0\u00bb&lsquo;]\/g, function (m) {\n      return ({&lsquo;&amp;&rsquo;:&rsquo;&amp;&rsquo;,\u00a0\u00bb:&rsquo;&gt;&rsquo;,'\u00a0\u00bb&lsquo;:&rsquo;&quot;&rsquo;,\u00a0\u00bb&lsquo;\u00a0\u00bb:&rsquo;&#039;&rsquo;})[m];\n    });\n  }\n\n  \/\/ Init\n  renderOuvrages();\n  updateResume();\n\n  \/\/ Petit ajustement d&rsquo;accessibilit\u00e9: focus sur le premier champ\n  nomInput.focus();\n\n})();\n\n\n<h2 class=\"wp-block-heading\">Techniques de <strong>mod\u00e9lisation 3D<\/strong>, outils et bonnes pratiques pour un dessin technique exploitable<\/h2>\n\n<p class=\"wp-block-paragraph\">La <strong>mod\u00e9lisation 3D<\/strong> apporte un avantage technique majeur : visualiser les interactions entre volumes, orientation solaire et relief. Pour des projets modestes, il est possible d\u2019obtenir un rendu 3D pertinent sans recourir \u00e0 des logiciels SIG co\u00fbteux. Des plateformes en ligne et des applications d\u00e9di\u00e9es permettent d\u2019aligner le projet sur le fond cadastral, d\u2019annoter les <strong>dimensions<\/strong> et d\u2019exporter un PDF pr\u00eat pour la d\u00e9claration. Ces outils combinent simplicit\u00e9 d\u2019usage et respect des normes de <strong>dessin technique<\/strong>.<\/p>\n\n<p class=\"wp-block-paragraph\">Dans l\u2019exemple de Mme Moreau, la mod\u00e9lisation 3D a permis de v\u00e9rifier la hauteur d\u2019acrot\u00e8re de la v\u00e9randa par rapport au pignon voisin et d\u2019ajuster la pente de la toiture pour respecter les r\u00e8gles d\u2019ensoleillement. L\u2019ing\u00e9nierie de la structure et la g\u00e9om\u00e9trie des fondations ont \u00e9t\u00e9 simul\u00e9es pour estimer l\u2019emprise et anticiper les besoins de drainage autour de la piscine.<\/p>\n\n<h3 class=\"wp-block-heading\">Bonnes pratiques<\/h3>\n\n<ul class=\"wp-block-list\"><li>Travailler \u00e0 l\u2019\u00e9chelle et conserver une \u00e9chelle homog\u00e8ne sur toutes les vues.<\/li><li>Indiquer syst\u00e9matiquement les r\u00e9f\u00e9rences d\u2019altitude.<\/li><li>Inclure des coupes pour expliciter les niveaux et pentes.<\/li><li>Garder le dessin clair : privil\u00e9gier les traits nets et les annotations lisibles.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\">Pour approfondir les notions et obtenir des conseils pratiques, plusieurs ressources en ligne proposent des tutoriels et des fiches techniques d\u00e9di\u00e9es au plan de masse et aux pi\u00e8ces PCMI. Une r\u00e9f\u00e9rence utile pour comprendre les pi\u00e8ces \u00e0 fournir pour une v\u00e9randa en 2026 est disponible aupr\u00e8s d\u2019un guide professionnel (<a href=\"https:\/\/www.geometre-confiance.fr\/guide\/2026\/05\/14\/permis-de-construire-pour-une-veranda-ce-quil-faut-savoir-en-2026\/\">permis de construire pour une v\u00e9randa<\/a>).<\/p>\n\n<p class=\"wp-block-paragraph\">Insight : la mod\u00e9lisation 3D bien conduite transforme un plan cot\u00e9 en un outil d\u2019aide \u00e0 la d\u00e9cision pour l\u2019architecture et l\u2019ing\u00e9nierie du projet.<\/p>\n\n<figure class=\"is-provider-youtube is-type-video wp-block-embed wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Comprendre les plans de masse et de situation\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/v1d5FhoV7fI?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n<h2 class=\"wp-block-heading\">Contr\u00f4les finaux, d\u00e9p\u00f4t et r\u00e9ponses aux questions fr\u00e9quentes lors de la conception d\u2019un plan cot\u00e9<\/h2>\n\n<p class=\"wp-block-paragraph\">Avant le d\u00e9p\u00f4t, une v\u00e9rification syst\u00e9matique \u00e9vite les demandes de pi\u00e8ces compl\u00e9mentaires. Contr\u00f4ler l\u2019\u00e9chelle, la pr\u00e9sence du Nord, la pr\u00e9cision des <strong>dimensions<\/strong>, la coh\u00e9rence des cotations 3D et la lecture du fond cadastral. Penser \u00e9galement \u00e0 v\u00e9rifier la conformit\u00e9 avec le PLU local et, si n\u00e9cessaire, \u00e0 joindre des photos de l\u2019existant et des coupes repr\u00e9sentatives.<\/p>\n\n<p class=\"wp-block-paragraph\">Liste pertinente pour la v\u00e9rification finale :<\/p>\n\n<ul class=\"wp-block-list\"><li>Pr\u00e9sence et lisibilit\u00e9 du Nord.<\/li><li>\u00c9chelle pr\u00e9cise et coh\u00e9rente sur toutes les vues.<\/li><li>Cotations horizontales et verticales compl\u00e8tes.<\/li><li>Emprise au sol chiffr\u00e9e et compar\u00e9e aux limites autoris\u00e9es.<\/li><li>Raccordements et r\u00e9seaux rep\u00e9r\u00e9s.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\">Questions fr\u00e9quentes trait\u00e9es par les professionnels : certains travaux n\u00e9cessitent syst\u00e9matiquement un plan cot\u00e9 (ex. : modification de volume), d\u2019autres non. L\u2019essentiel est de savoir que le plan de masse sur fond cadastral permet au service d\u2019urbanisme de v\u00e9rifier l\u2019implantation et les distances aux voisins. Pour des ressources compl\u00e9mentaires, des guides pratiques et des exemples de plans masse c\u00f4t\u00e9 en trois dimensions sont disponibles en ligne pour s\u2019aligner sur les attentes administratives.<\/p>\n\n<p class=\"wp-block-paragraph\">Insight : un dernier contr\u00f4le suivant une checklist r\u00e9duit significativement les d\u00e9lais d\u2019instruction et s\u00e9curise la conformit\u00e9 du dossier.<\/p>\n\n\n{\u00ab\u00a0@context\u00a0\u00bb:\u00a0\u00bbhttps:\/\/schema.org\u00a0\u00bb,\u00a0\u00bb@type\u00a0\u00bb:\u00a0\u00bbFAQPage\u00a0\u00bb,\u00a0\u00bbmainEntity\u00a0\u00bb:[{\u00ab\u00a0@type\u00a0\u00bb:\u00a0\u00bbQuestion\u00a0\u00bb,\u00a0\u00bbname\u00a0\u00bb:\u00a0\u00bbQuelles sont les diffu00e9rences entre DPC1 et DPC2 ?\u00a0\u00bb,\u00a0\u00bbacceptedAnswer\u00a0\u00bb:{\u00ab\u00a0@type\u00a0\u00bb:\u00a0\u00bbAnswer\u00a0\u00bb,\u00a0\u00bbtext\u00a0\u00bb:\u00a0\u00bbLe DPC1 est le plan de situation qui situe la parcelle dans son environnement ; le DPC2 est le plan de masse cotu00e9 qui du00e9taille lu2019implantation du projet sur la parcelle avec les distances et hauteurs.\u00a0\u00bb}},{\u00ab\u00a0@type\u00a0\u00bb:\u00a0\u00bbQuestion\u00a0\u00bb,\u00a0\u00bbname\u00a0\u00bb:\u00a0\u00bbFaut-il indiquer les hauteurs sur un plan de masse ?\u00a0\u00bb,\u00a0\u00bbacceptedAnswer\u00a0\u00bb:{\u00ab\u00a0@type\u00a0\u00bb:\u00a0\u00bbAnswer\u00a0\u00bb,\u00a0\u00bbtext\u00a0\u00bb:\u00a0\u00bbOui, les hauteurs et niveaux (cotations 3D) sont souvent requises lorsque le projet modifie le volume existant. Elles permettent du2019u00e9valuer lu2019impact visuel et ru00e9glementaire.\u00a0\u00bb}},{\u00ab\u00a0@type\u00a0\u00bb:\u00a0\u00bbQuestion\u00a0\u00bb,\u00a0\u00bbname\u00a0\u00bb:\u00a0\u00bbPeut-on ru00e9aliser un plan de masse sans logiciel SIG ?\u00a0\u00bb,\u00a0\u00bbacceptedAnswer\u00a0\u00bb:{\u00ab\u00a0@type\u00a0\u00bb:\u00a0\u00bbAnswer\u00a0\u00bb,\u00a0\u00bbtext\u00a0\u00bb:\u00a0\u00bbOui, des outils en ligne et des services simplifiu00e9s permettent de positionner un ouvrage sur un fond cadastral et du2019exporter un PDF conforme pour une du00e9claration pru00e9alable.\u00a0\u00bb}},{\u00ab\u00a0@type\u00a0\u00bb:\u00a0\u00bbQuestion\u00a0\u00bb,\u00a0\u00bbname\u00a0\u00bb:\u00a0\u00bbQue faire en cas de doute sur une limite parcellaire ?\u00a0\u00bb,\u00a0\u00bbacceptedAnswer\u00a0\u00bb:{\u00ab\u00a0@type\u00a0\u00bb:\u00a0\u00bbAnswer\u00a0\u00bb,\u00a0\u00bbtext\u00a0\u00bb:\u00a0\u00bbContacter le service du cadastre ou la mairie pour vu00e9rification. Les donnu00e9es officielles doivent primer pour u00e9viter les litiges.\u00a0\u00bb}}]}\n\n<h3>Quelles sont les diff\u00e9rences entre DPC1 et DPC2 ?<\/h3>\n<p>Le DPC1 est le plan de situation qui situe la parcelle dans son environnement ; le DPC2 est le plan de masse cot\u00e9 qui d\u00e9taille l\u2019implantation du projet sur la parcelle avec les distances et hauteurs.<\/p>\n<h3>Faut-il indiquer les hauteurs sur un plan de masse ?<\/h3>\n<p>Oui, les hauteurs et niveaux (cotations 3D) sont souvent requises lorsque le projet modifie le volume existant. Elles permettent d\u2019\u00e9valuer l\u2019impact visuel et r\u00e9glementaire.<\/p>\n<h3>Peut-on r\u00e9aliser un plan de masse sans logiciel SIG ?<\/h3>\n<p>Oui, des outils en ligne et des services simplifi\u00e9s permettent de positionner un ouvrage sur un fond cadastral et d\u2019exporter un PDF conforme pour une d\u00e9claration pr\u00e9alable.<\/p>\n<h3>Que faire en cas de doute sur une limite parcellaire ?<\/h3>\n<p>Contacter le service du cadastre ou la mairie pour v\u00e9rification. Les donn\u00e9es officielles doivent primer pour \u00e9viter les litiges.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>R\u00e9aliser un plan de masse cot\u00e9 dans les trois dimensions demande une compr\u00e9hension fine de la parcelle, des contraintes d\u2019urbanisme &#8230; <a title=\"Plan de masse cot\u00e9 dans les 3 dimensions\u00a0: guide complet pour la conception pr\u00e9cise\" class=\"read-more\" href=\"https:\/\/www.geometre-confiance.fr\/guide\/2026\/06\/05\/plan-de-masse-cote-dans-les-3-dimensions-guide-complet-pour-la-conception-precise\/\" aria-label=\"En savoir plus sur Plan de masse cot\u00e9 dans les 3 dimensions\u00a0: guide complet pour la conception pr\u00e9cise\">Lire plus<\/a><\/p>\n","protected":false},"author":2,"featured_media":163,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-166","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cadastre-bornage"],"_links":{"self":[{"href":"https:\/\/www.geometre-confiance.fr\/guide\/wp-json\/wp\/v2\/posts\/166","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.geometre-confiance.fr\/guide\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.geometre-confiance.fr\/guide\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.geometre-confiance.fr\/guide\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.geometre-confiance.fr\/guide\/wp-json\/wp\/v2\/comments?post=166"}],"version-history":[{"count":0,"href":"https:\/\/www.geometre-confiance.fr\/guide\/wp-json\/wp\/v2\/posts\/166\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.geometre-confiance.fr\/guide\/wp-json\/wp\/v2\/media\/163"}],"wp:attachment":[{"href":"https:\/\/www.geometre-confiance.fr\/guide\/wp-json\/wp\/v2\/media?parent=166"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.geometre-confiance.fr\/guide\/wp-json\/wp\/v2\/categories?post=166"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.geometre-confiance.fr\/guide\/wp-json\/wp\/v2\/tags?post=166"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}