Aller au contenu

Classement

Contenu populaire

Affichage du contenu avec la meilleure réputation le 12/12/2023 dans toutes les zones

  1. Coucou, j'ai modifié le code plus haut, il y maintenant cotdeltaX et cotedeltaY. et pour répondre à ta question, c'est à ce niveau dist (- (cadr pt2) (cadr pt1)). ici nous soustrayions les Y des 2 points.
    1 point
  2. J'ai modifié le code, il prend en charge les polylignes 3D. Tu as en plus le code d'Oliviers, cela te permet de voir une autre façon. Il y en à plein ... je ne pense pas avoir envisager tous les bugs possibles.. n'hésite pas à le dire, cela profitera à la communauté. En tout cas, bienvenus et bon courage
    1 point
  3. Bonjour, Ci-joint le code pour choisir poly2D ou 3D (le code de dessin des poly2D et 3D a été repris depuis le site DA-Code de Didier Aveline) : ; Didier Aveline ; https://www.da-code.fr/poly-07/ (defun da:DessPoly2D (listesommets z closed) ; dessin de polyligne 2D depuis liste de sommmets (entmake (append (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") (if z (cons 38 z)) (cons 90 (length listesommets)) (if closed (cons 70 1) (cons 70 0)) ;;'(70 . 0) ) (mapcar '(lambda (p) (cons 10 p)) listesommets) ) ) ;_ Fin de entmake ) ; fin de defun da:DessPoly2D (defun da:DessPoly3D (ptlist closed / pt) ; dessin de polyligne 3D depuis liste de sommmets (entmake (list '(0 . "POLYLINE") '(100 . "AcDbEntity") '(100 . "AcDb3dPolyline") (if closed (cons 70 9) (cons 70 8)) ) ) (repeat (length ptlist) (setq pt (car ptlist) ptlist (cdr ptlist) ) (entmake (list '(0 . "VERTEX") '(100 . "AcDb3dPolylineVertex") (cons 10 pt) '(70 . 32) ) ) ) ;_ repeat (entmake '((0 . "SEQEND"))) ) ; fin de defun da:DessPoly3D ;Olivier Eckmann ;https://cadxp.com/topic/60969-routine-pour-créer-une-polyligne-à-partir-de-points-créés-avec-la-fonction-mesurer/ (defun C:Poly2Poly ( / dPas sTypePoly sSupprPoly oPoly oPolyDxf oPolyVla PTF dAbsc PT lsPts) (if (setq dPas (getreal "\nDistance entre sommets:")) (progn (initget "2D 3D") (setq sTypePoly (getkword "\nGénérer une polyligne [2D/3D] <3D> : ")) (if (not sTypePoly) (setq sTypePoly "3D") ) (initget "Oui Non") (setq sSupprPoly (getkword "\nSupprimer la polyligne initiale [Oui/Non] <Oui> : ")) (if (not sSupprPoly) (setq sSupprPoly "Oui") ) (while (and (setq oPoly (car (entsel "\nSélectionner une polyligne : "))) (setq oPolyDxf (entget oPoly)) (member (cdr (assoc 0 oPolyDxf)) (list "POLYLINE" "LWPOLYLINE")) ) (setq oPolyVla (vlax-ename->vla-object oPoly)) (setq dLength (vla-get-length oPolyVla)) (setq bClosed (eq (vla-get-Closed oPolyVla) :vlax-true)) (setq PTF (vlax-curve-getEndPoint oPolyVla)) (setq dAbsc 0.0 lsPts nil) (while (<= dAbsc dLength) (setq PT (vlax-curve-getPointAtDist oPolyVla dAbsc)) (setq lsPts (append lsPts (list PT))) (setq dAbsc (+ dAbsc dPas)) ) ; Ajout du dernier point si pas déjà présent en fin de liste (if (and (not bClosed) (> (distance (last lsPts) PTF) 0.001)) (setq lsPts (append lsPts (list PTF))) ) ; dessin de la poly 2D ou 3D (if (= sTypePoly "2D") (da:DessPoly2D lsPts (caddr (car lsPts)) bClosed) (da:DessPoly3D lsPts bClosed) ) ; Suppression de la poly de base si demandé (if (= sSupprPoly "Oui") (entdel oPoly) ) ) ) ) ) Poly2Poly.lsp
    1 point
  4. Yop, c'est fait, j'ai rajoute - un undomark qui permet de revenir en arrière avec un seul ctrl+Z - un controle du SCU - la question pour effacer la polyligne Pour la 3D, il faut revoir tout le code,
    1 point
  5. Bonjour, cad, cdr et leur composante sont des raccourcis pour accéder à un des 1er éléments d'une liste. la fonction générique pour accéder à un élément (base 0) est : nth par exemple avec une liste (setq lsInfo (list "A" "B" "C" "D" "E" "F")) La récupération d'un élément peut s'écrire (nth 0 lsInfo) ; 1er élément, la liste commence à l'indice 0 => "A" (nth 1 lsInfo) ; 2ème élément => "B" (nth 4 lsInfo) ; 5ème élément => "E" ou bien "Milla Jovovich" :) Olivier
    1 point
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité