Insérer des sommets sur une polyligne à intervalle régulier (LISP)

Comment peut-on ajouter automatiquement des sommets (vertex) à une polyligne existante sur AutoCAD, à un intervalle régulier défini (par exemple, tous les 5 mètres) ? Les commandes natives comme MESURER ou DIVISER insèrent des points ou des blocs, mais ne modifient pas directement la géométrie de la polyligne en y ajoutant de nouveaux sommets.

Pour ajouter des sommets à une polyligne à un intervalle constant, la méthode la plus efficace et automatisée est d’utiliser une routine AutoLISP. Les méthodes manuelles natives sont utiles pour des ajouts ponctuels mais inadaptées à cette tâche répétitive.

Méthode 1 : Utilisation d’une routine AutoLISP (Recommandée)

Cette solution utilise un code LISP qui parcourt la polyligne sélectionnée et y insère des sommets à la distance spécifiée. L’avantage majeur est que l’objet reste une seule et unique polyligne et conserve ses données étendues (XData) ou objets de données (OD).

Étape 1 : Créer le fichier LISP

  1. Ouvrez un éditeur de texte simple (comme le Bloc-notes).
  2. Copiez-collez l’intégralité du code ci-dessous.
  3. Enregistrez le fichier avec une extension .lsp, par exemple AddVtx2Dist.lsp.
(vl-load-com)
(defun add_vtx (obj add_pt ent_name / bulg)
 (vla-addVertex
  obj
  (1+ (fix add_pt))
  (vlax-make-variant
   (vlax-safearray-fill
    (vlax-make-safearray vlax-vbdouble (cons 0 1))
    (list
     (car (trans (vlax-curve-getpointatparam obj add_pt) 0 ent_name))
     (cadr (trans (vlax-curve-getpointatparam obj add_pt) 0 ent_name))
    )
   )
  )
 )
 (setq bulg (vla-GetBulge obj (fix add_pt)))
 (vla-SetBulge obj
  (fix add_pt)
  (/ (sin (/ (* 4 (atan bulg) (- add_pt (fix add_pt))) 4))
   (cos (/ (* 4 (atan bulg) (- add_pt (fix add_pt))) 4))
  )
 )
 (vla-SetBulge obj
  (1+ (fix add_pt))
  (/ (sin (/ (* 4 (atan bulg) (- (1+ (fix add_pt)) add_pt)) 4))
   (cos (/ (* 4 (atan bulg) (- (1+ (fix add_pt)) add_pt)) 4))
  )
 )
 (vla-update obj)
)

(defun c:AddVtx2Dist ( / js AcDoc Space interval n obj ename v_length)
 (princ "\nSélectionnez une polyligne.")
 (setq js (ssget '((0 . "LWPOLYLINE"))))
 (cond
  (js
   (setq
    AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
    Space (if (= 1 (getvar "CVPORT"))
            (vla-get-PaperSpace AcDoc)
            (vla-get-ModelSpace AcDoc)
          )
   )
   (initget 6)
   (setq interval (getdist "\nAjouter un sommet tous les <1.0>?: "))
   (if (not interval) (setq interval 1.0))
   (repeat (setq n (sslength js))
    (setq
     obj (ssname js (setq n (1- n)))
     ename (vlax-ename->vla-object obj)
     v_length 0.0
    )
    (while (< v_length (vlax-curve-getDistAtParam ename (vlax-curve-getEndParam ename)))
     (if (not (equal (fix (vlax-curve-getEndParam ename)) v_length 1E-13))
      (progn
       (add_vtx ename (vlax-curve-getParamAtDist ename v_length) obj)
       (setq v_length (+ interval v_length))
      )
      (setq v_length (+ interval v_length))
     )
    )
   )
  )
 )
 (prin1)
)

Étape 2 : Charger la routine dans AutoCAD

  1. Tapez la commande APPLOAD (ou CHARGAPP) dans la barre de commande d’AutoCAD.
  2. Naviguez jusqu’à votre fichier AddVtx2Dist.lsp et cliquez sur « Charger ».
  3. Pour un chargement automatique à chaque démarrage, ajoutez-le à la « Mallette de démarrage ».

Étape 3 : Exécuter la commande

  1. Tapez la commande ADDVTX2DIST dans la barre de commande et validez.
  2. Suivez les instructions : sélectionnez la polyligne à modifier.
  3. Entrez la distance souhaitée entre chaque nouveau sommet.

La routine modifiera la polyligne en ajoutant les sommets requis.

Méthode 2 : Ajout manuel de sommets (pour des ajouts ponctuels)

Pour ajouter un ou quelques sommets manuellement, sans contrainte de distance régulière, les outils d’édition par poignées (grips) sont très efficaces.

  1. Via le menu contextuel des poignées :

    • Sélectionnez la polyligne.
    • Survolez une poignée (un carré bleu) sur un segment où vous souhaitez ajouter un sommet, sans cliquer.
    • Un menu contextuel apparaît : choisissez « Ajouter un sommet ».
    • Cliquez pour positionner le nouveau sommet.
  2. Via le raccourci clavier CTRL :

    • Sélectionnez la polyligne.
    • Cliquez sur une poignée pour la rendre « chaude » (rouge).
    • Appuyez une fois sur la touche CTRL et relâchez-la. Le curseur se transforme pour indiquer l’ajout de sommet.
    • Cliquez pour placer le nouveau sommet. Vous pouvez continuer à en ajouter.

Point de vigilance : Si vous maintenez la touche CTRL enfoncée au lieu de la relâcher, vous ne créerez pas un sommet mais une copie de la polyligne à partir de la poignée sélectionnée.