{
  "schemaVersion": 1,
  "generatedAt": "2026-09-09T18:53:55.583Z",
  "versionSource": "https://files.mdautomation.ca/versions.json",
  "vendor": {
    "name": "MD Automation",
    "url": "https://mdautomation.ca/",
    "docs": {
      "en": "https://mdautomation.ca/docs/",
      "fr": "https://mdautomation.ca/fr/docs/"
    },
    "contact": {
      "en": "https://mdautomation.ca/contact/",
      "fr": "https://mdautomation.ca/fr/contact/"
    },
    "llmsTxt": "https://mdautomation.ca/llms.txt"
  },
  "currency": "CAD",
  "requirements": {
    "host": "Autodesk AutoCAD",
    "minimumHostVersion": "2025",
    "os": "Windows 64-bit",
    "runtime": ".NET 8 (AutoCAD 2025) / .NET 10 (AutoCAD 2026+)"
  },
  "licensing": {
    "model": "perpetual",
    "binding": "node-locked",
    "activation": "offline",
    "trialDays": 15,
    "updatesAndSupportMonths": 12,
    "transferable": false
  },
  "ribbonTab": "MD Plugins",
  "plugins": [
    {
      "slug": "align-distribute",
      "tier": "essentials",
      "price": 99,
      "currency": "CAD",
      "commandCount": 14,
      "primaryCommand": "MDDISTRIBUTE",
      "ribbonPanel": "Arrange",
      "name": {
        "en": "Align & Distribute",
        "fr": "Aligner & Répartir"
      },
      "tagline": {
        "en": "Line up and space out any selection by its bounding boxes",
        "fr": "Alignez et répartissez toute sélection selon ses rectangles englobants"
      },
      "summary": {
        "en": "Fourteen commands to align objects to a shared edge or centre line, distribute them evenly, space them with an exact gap, or snap them to the drawing grid. Everything works on each object’s geometric bounding box, so lines, blocks, text and hatches all behave the same.",
        "fr": "Quatorze commandes pour aligner des objets sur une arête ou un axe commun, les répartir uniformément, les espacer d’un écart exact ou les accrocher à la grille. Tout fonctionne sur le rectangle englobant de chaque objet : lignes, blocs, textes et hachures se comportent de la même façon."
      },
      "features": {
        "en": [
          "Align to left, right, top, bottom, or centres: one click from the ribbon",
          "Distribute evenly, or with an exact gap between objects",
          "Snap object centres to the drawing grid with MDALIGNGRID",
          "Ribbon, right-click menu, or command line, with autocomplete icons"
        ],
        "fr": [
          "Alignez à gauche, à droite, en haut, en bas ou sur les centres : en un clic",
          "Répartissez uniformément, ou avec un écart exact entre les objets",
          "Accrochez les centres à la grille avec MDALIGNGRID",
          "Ruban, menu contextuel ou ligne de commande, avec icônes d’autocomplétion"
        ]
      },
      "includes": {
        "en": [
          "All 14 align and distribute commands",
          "Ribbon panel, right-click submenu, and command line",
          "One undo step per command"
        ],
        "fr": [
          "Les 14 commandes d’alignement et de répartition",
          "Panneau de ruban, sous-menu contextuel et ligne de commande",
          "Une seule annulation par commande"
        ]
      },
      "version": null,
      "releasedAt": null,
      "downloadable": false,
      "forSale": false,
      "urls": {
        "page": {
          "en": "https://mdautomation.ca/plugins/align-distribute/",
          "fr": "https://mdautomation.ca/fr/plugins/align-distribute/"
        },
        "docs": {
          "en": "https://mdautomation.ca/docs/align-distribute/",
          "fr": "https://mdautomation.ca/fr/docs/align-distribute/"
        },
        "buy": {
          "en": "https://mdautomation.ca/pricing/#align-distribute",
          "fr": "https://mdautomation.ca/fr/pricing/#align-distribute"
        },
        "download": "https://mdautomation.ca/api/download/align-distribute"
      }
    },
    {
      "slug": "rotate-flip",
      "tier": "essentials",
      "price": 99,
      "currency": "CAD",
      "commandCount": 4,
      "primaryCommand": "MDFLIPH",
      "ribbonPanel": "Rotate/Flip",
      "name": {
        "en": "Rotate & Flip",
        "fr": "Pivoter & Retourner"
      },
      "tagline": {
        "en": "Turn and mirror each object around its own pivot, in place",
        "fr": "Pivotez et retournez chaque objet autour de son propre pivot, sur place"
      },
      "summary": {
        "en": "Native ROTATE and MIRROR treat a multi-object selection as one group turning about a shared base point. Rotate & Flip transforms every object where it sits (around its own insertion point, or its centre) with no base point to pick and no mirror line to draw.",
        "fr": "Les commandes natives ROTATION et MIROIR traitent une sélection multiple comme un groupe qui pivote autour d’un point de base commun. Pivoter & Retourner transforme chaque objet là où il se trouve (autour de son point d’insertion, ou de son centre) sans point de base à choisir ni axe de symétrie à tracer."
      },
      "features": {
        "en": [
          "Rotate 90° clockwise or counterclockwise; repeat to compound",
          "Flip horizontally or vertically, every object around its own pivot",
          "Attribute text stays upright and its justification swaps to the flipped side",
          "Dynamic blocks turn and flip through their own authored parameter"
        ],
        "fr": [
          "Pivotez de 90° dans un sens ou dans l’autre ; répétez pour cumuler",
          "Retournez horizontalement ou verticalement, chaque objet sur son propre pivot",
          "Le texte d’attribut reste droit et sa justification bascule du bon côté",
          "Les blocs dynamiques pivotent et se retournent par leur propre paramètre"
        ]
      },
      "includes": {
        "en": [
          "All 4 rotate and flip commands",
          "Attribute-aware justification swap",
          "Dynamic block rotation and flip parameter support"
        ],
        "fr": [
          "Les 4 commandes de rotation et de retournement",
          "Bascule de justification tenant compte des attributs",
          "Prise en charge des paramètres de blocs dynamiques"
        ]
      },
      "version": null,
      "releasedAt": null,
      "downloadable": false,
      "forSale": false,
      "urls": {
        "page": {
          "en": "https://mdautomation.ca/plugins/rotate-flip/",
          "fr": "https://mdautomation.ca/fr/plugins/rotate-flip/"
        },
        "docs": {
          "en": "https://mdautomation.ca/docs/rotate-flip/",
          "fr": "https://mdautomation.ca/fr/docs/rotate-flip/"
        },
        "buy": {
          "en": "https://mdautomation.ca/pricing/#rotate-flip",
          "fr": "https://mdautomation.ca/fr/pricing/#rotate-flip"
        },
        "download": "https://mdautomation.ca/api/download/rotate-flip"
      }
    },
    {
      "slug": "quick-layer",
      "tier": "essentials",
      "price": 99,
      "currency": "CAD",
      "commandCount": 1,
      "primaryCommand": "MDQUICKLAYER",
      "ribbonPanel": "Layer",
      "name": {
        "en": "Quick Layer",
        "fr": "Calque rapide"
      },
      "tagline": {
        "en": "Fuzzy-search your layers and set one current in a keystroke",
        "fr": "Trouvez un calque par recherche floue et activez-le en quelques touches"
      },
      "summary": {
        "en": "A borderless popup that opens at your cursor. Type a few letters, watch the ranked matches filter live, hit Enter. That layer is now current. With objects already selected it reassigns them too, and every row carries the layer state controls you would otherwise open the Layer Properties Manager for.",
        "fr": "Une fenêtre sans bordure qui s’ouvre au curseur. Tapez quelques lettres, les correspondances classées se filtrent en direct, appuyez sur Entrée. Ce calque devient courant. Si des objets sont déjà sélectionnés, ils sont réaffectés au passage, et chaque ligne porte les contrôles d’état pour lesquels il faudrait autrement ouvrir le gestionnaire des calques."
      },
      "features": {
        "en": [
          "Fuzzy search, ranked as you type; no scrolling a layer dialog",
          "Objects selected? Picking a layer reassigns them too, like LAYCUR",
          "On/off, freeze, lock, plot and colour on every row, one layer or a batch",
          "Scope the list to all layers, only those in use, or xref layers"
        ],
        "fr": [
          "Recherche floue, classée à la frappe ; sans faire défiler une boîte de dialogue",
          "Des objets sélectionnés ? Choisir un calque les réaffecte aussi, comme LAYCUR",
          "Activé/désactivé, gelé, verrouillé, tracé et couleur sur chaque ligne, à l’unité ou par lot",
          "Restreignez la liste à tous les calques, à ceux utilisés, ou aux calques de xréf"
        ]
      },
      "includes": {
        "en": [
          "The MDQUICKLAYER popup, with fuzzy search and scope filter",
          "Inline layer state and colour controls, single or batch",
          "Selection reassignment, configurable per your preference"
        ],
        "fr": [
          "La fenêtre MDQUICKLAYER, avec recherche floue et filtre de portée",
          "Contrôles d’état et de couleur intégrés, à l’unité ou par lot",
          "Réaffectation de la sélection, configurable selon votre préférence"
        ]
      },
      "version": null,
      "releasedAt": null,
      "downloadable": false,
      "forSale": false,
      "urls": {
        "page": {
          "en": "https://mdautomation.ca/plugins/quick-layer/",
          "fr": "https://mdautomation.ca/fr/plugins/quick-layer/"
        },
        "docs": {
          "en": "https://mdautomation.ca/docs/quick-layer/",
          "fr": "https://mdautomation.ca/fr/docs/quick-layer/"
        },
        "buy": {
          "en": "https://mdautomation.ca/pricing/#quick-layer",
          "fr": "https://mdautomation.ca/fr/pricing/#quick-layer"
        },
        "download": "https://mdautomation.ca/api/download/quick-layer"
      }
    },
    {
      "slug": "trackpad",
      "tier": "essentials",
      "price": 99,
      "currency": "CAD",
      "commandCount": 1,
      "primaryCommand": "MDTRACKPAD",
      "ribbonPanel": "Trackpad",
      "name": {
        "en": "Trackpad",
        "fr": "Trackpad"
      },
      "tagline": {
        "en": "Pan, zoom and glide through a drawing with two fingers",
        "fr": "Panoramique, zoom et inertie dans un dessin, à deux doigts"
      },
      "summary": {
        "en": "AutoCAD’s wheel handling assumes a mouse: on a trackpad, two-finger scroll steps the zoom in jumps, horizontal scroll does nothing at all, and two-finger pan doesn’t exist. Trackpad answers both wheel messages itself: scroll pans, pinch zooms at the cursor, a flick glides and settles. No system variable gets you there: ZOOMWHEEL only inverts the zoom direction and ZOOMFACTOR only sizes its step.",
        "fr": "AutoCAD présume une souris : au pavé tactile, le défilement à deux doigts zoome par paliers, le défilement horizontal ne fait rien du tout et le panoramique à deux doigts n’existe pas. Trackpad répond lui-même aux deux messages de molette : le défilement fait un panoramique, le pincement zoome au curseur, un coup sec glisse puis s’arrête. Aucune variable système n’y arrive : ZOOMWHEEL ne fait qu’inverser le sens du zoom et ZOOMFACTOR n’en règle que le pas."
      },
      "features": {
        "en": [
          "Two-finger scroll pans, sideways as well, a message AutoCAD otherwise ignores",
          "Pinch or Ctrl+scroll zooms continuously at the cursor, not in notches",
          "A flick glides and settles, and shortens rather than crawling on a heavy drawing",
          "One toggle: plug in a mouse and MDTRACKPAD hands the wheel back"
        ],
        "fr": [
          "Le défilement à deux doigts fait un panoramique, à l’horizontale aussi, un message qu’AutoCAD ignore autrement",
          "Le pincement ou Ctrl+molette zoome en continu au curseur, sans paliers",
          "Un coup sec fait glisser la vue, qui s’écourte au lieu de ramper sur un dessin lourd",
          "Un seul interrupteur : branchez une souris et MDTRACKPAD vous rend la molette"
        ]
      },
      "includes": {
        "en": [
          "The MDTRACKPAD toggle, remembered between sessions",
          "Two-finger pan, sideways pan, pinch zoom at the cursor, and momentum",
          "MDTRACKPADSETTINGS: scroll direction, pan speed, zoom speed, invert zoom"
        ],
        "fr": [
          "L’interrupteur MDTRACKPAD, retenu d’une session à l’autre",
          "Panoramique à deux doigts, panoramique latéral, zoom au pincement et inertie",
          "MDTRACKPADSETTINGS : sens du défilement, vitesse de panoramique et de zoom, inversion du zoom"
        ]
      },
      "version": null,
      "releasedAt": null,
      "downloadable": false,
      "forSale": false,
      "urls": {
        "page": {
          "en": "https://mdautomation.ca/plugins/trackpad/",
          "fr": "https://mdautomation.ca/fr/plugins/trackpad/"
        },
        "docs": {
          "en": "https://mdautomation.ca/docs/trackpad/",
          "fr": "https://mdautomation.ca/fr/docs/trackpad/"
        },
        "buy": {
          "en": "https://mdautomation.ca/pricing/#trackpad",
          "fr": "https://mdautomation.ca/fr/pricing/#trackpad"
        },
        "download": "https://mdautomation.ca/api/download/trackpad"
      }
    },
    {
      "slug": "increment",
      "tier": "essentials",
      "price": 99,
      "currency": "CAD",
      "commandCount": 1,
      "primaryCommand": "MDINCREMENT",
      "ribbonPanel": "Number",
      "name": {
        "en": "Increment",
        "fr": "Incrémenter"
      },
      "tagline": {
        "en": "Renumber text, attributes and mleaders in one pass",
        "fr": "Numérotez textes, attributs et multilignes de repère"
      },
      "summary": {
        "en": "Select what needs numbering, then set the counter, what goes around it, and the order to sweep in. Every change is listed before anything is written: current value beside new value, including the ones that will be left alone and why. Apply writes the run as a single undo step.",
        "fr": "Sélectionnez ce qui doit être numéroté, puis réglez le compteur, ce qui l’entoure et l’ordre de balayage. Chaque modification est listée avant d’être écrite : valeur actuelle à côté de la nouvelle, y compris celles qui seront laissées intactes, avec la raison. Appliquer écrit toute la série en une seule annulation."
      },
      "features": {
        "en": [
          "Numbers text, mtext, block attributes and mleaders in the same run",
          "See every change before it happens, then undo the whole run with one Ctrl+Z",
          "Sweep in reading order from any corner, or along a path you draw",
          "Pick which attribute tag to write when your blocks carry several"
        ],
        "fr": [
          "Numérote textes, textes multilignes, attributs de bloc et multilignes de repère dans une même passe",
          "Voyez chaque modification avant qu’elle ait lieu, puis annulez toute la série avec un seul Ctrl+Z",
          "Balayez dans le sens de lecture depuis n’importe quel coin, ou le long d’un parcours tracé",
          "Choisissez l’étiquette d’attribut à écrire quand vos blocs en portent plusieurs"
        ]
      },
      "includes": {
        "en": [
          "The MDINCREMENT window: counter, prefix and suffix, order, live preview",
          "Number and letter counters, with start, step and zero padding",
          "Prefixes and suffixes, and numbering along a drawn path"
        ],
        "fr": [
          "La fenêtre MDINCREMENT : compteur, préfixe et suffixe, ordre, aperçu en direct",
          "Compteurs numériques et alphabétiques, avec début, pas et remplissage par zéros",
          "Préfixes et suffixes, et numérotation le long d’un parcours tracé"
        ]
      },
      "version": null,
      "releasedAt": null,
      "downloadable": false,
      "forSale": false,
      "urls": {
        "page": {
          "en": "https://mdautomation.ca/plugins/increment/",
          "fr": "https://mdautomation.ca/fr/plugins/increment/"
        },
        "docs": {
          "en": "https://mdautomation.ca/docs/increment/",
          "fr": "https://mdautomation.ca/fr/docs/increment/"
        },
        "buy": {
          "en": "https://mdautomation.ca/pricing/#increment",
          "fr": "https://mdautomation.ca/fr/pricing/#increment"
        },
        "download": "https://mdautomation.ca/api/download/increment"
      }
    }
  ],
  "upcoming": [
    {
      "quarter": {
        "en": "Q4 2026",
        "fr": "T4 2026"
      }
    },
    {
      "quarter": {
        "en": "Q4 2026",
        "fr": "T4 2026"
      }
    },
    {
      "quarter": {
        "en": "Q1 2027",
        "fr": "T1 2027"
      }
    },
    {
      "quarter": {
        "en": "Q1 2027",
        "fr": "T1 2027"
      }
    },
    {
      "quarter": {
        "en": "Q1 2027",
        "fr": "T1 2027"
      }
    }
  ]
}