Aller au contenu

Edouard

Membres
  • Compteur de contenus

    4
  • Inscription

  • Dernière visite

Tout ce qui a été posté par Edouard

  1. Bonjour Luna, Oui c'est bien ça ! Il ne devrait y avoir ni chevauchement ni doublon dans les fichiers que j'ai à traiter. Oui c'est accepté d'avoir des lignes à la fin du programme. 😊
  2. Bonjour Didier, Dans votre exemple, ce ne sont que les segments 2 et 3 qui passent en rouge. La condition est que le point de début ET/OU le point de fin de ligne soit identiques, ET que les orientations soient similaires (avec une tolérance sur l'écart d'angle et à 180° près). Merci !
  3. Bonjour Didier, Certaines polylignes ont plusieurs sommets, d'autres non. J'ai pensé que c'était plus simple de tout décomposer en lignes afin d'avoir des objets homogènes. Effectivement, ça s'apparente plutôt au terme colinéaires, puisque peu importe le sens de la ligne. Merci !
  4. Bonjour à tous, Je suis débutant en LISP, j'ai commencé à chercher par moi-même mais je bloque. Je souhaite créer une LISP qui prend en compte les polylignes (ou lignes) d'un calque donné dans mon dessin dwg, et qui m'affiche en couleur (rouge par exemple) celles qui sont alignées entre elles. Mon approche pour cela est la suivante : le code va décomposer les polylignes de mon calque afin d'en faire des lignes (des segments), puis il va analyser les propriétés de ces lignes, et changer la couleur de celles dont les coordonnées XY "début de ligne" et/ou "extrémité" sont identiques, ET dont l'angle est similaire à 0.005 ± 200 grades (ou 0.00008 ± 𝝅 rad). Je vous ai mis en fichier joint les propriétés des lignes dans AutoCAD. À préciser que je travaille sur AutoCAD MAP 2014, avec Covadis 14. J'espère que ça n'est pas une grosse contrainte pour ce code... Jusqu'à maintenant, j'ai un code qui décompose mes polylignes et change la couleur des lignes résultantes en rouge : (vl-load-com) (defun c:color-align () ;; charger les fonctions Visual LISP (vl-load-com) ;; démarrer le chrono (setq t0 (* 84600 (getvar 'tdusrtimer))) ;; créer une variable globale pour le document actif si elle n'existe pas déjà (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object)))) (if (ssget "_X" (list '(0 . "LWPOLYLINE") (cons 410 (getvar 'ctab)))) (progn ;; démarrer un groupe d'annulation (vla-StartUndoMark *acdoc*) ;; pour chaque polyligne sélectionnée (vlax-for pl (setq ss (vla-get-ActiveSelectionSet *acdoc*)) (vla-Explode pl) ; décomposer la polyligne (vla-Delete pl) ; supprimer la polyligne ) (vla-Delete ss); supprimer le jeu de sélection (libérer les ressources) ;; terminer le groupe d'annulation (vla-EndUndoMark *acdoc*) ) ) ;Ajoute à la variable ss les objets du calque PARCELLES. (setq ss (ssget "_X" '((8 . "*PARCELLES")))) ; Applique la couleur Rouge dans les propriétés des objets de la sélection. (command "chprop" ss "" "CO" "Rouge" "") ;; arréter le chrono et afficher le temps d'exécution (setq t1 (* 84600 (getvar 'tdusrtimer))) (princ (strcat "\nTemps d'exécution : " (rtos (- t1 t0)) " secondes")) (princ) ) (c:color-align) ; (equal '(1.12345 12.0) '(1.12346 12.0) 0.00001) -> tolérance Merci d'avance pour votre aide 😇 Edouard test.lsp
×
×
  • 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é