fabcad Posté(e) le 11 avril 2022 Posté(e) le 11 avril 2022 Bonjour à tous, Avant d'essayer de développer quoique ce soit, je souhaiterais savoir si quelqu’un a développé cette routine. - sélectionner des objets d'un calque intersectés ou traversés par des objets (lignes, plines, cercles) d'un autre calque. Merci d'avance, Fabcad Le Rennais Métropolitain
lecrabe Posté(e) le 11 avril 2022 Posté(e) le 11 avril 2022 Hello 1) C de l'analyse spatiale 2D ! 2) Avec AutoCAD MAP (ou CIVIL) l'analyse spatiale FDO (SHP, SDF, SQLite, etc) ne te suffit pas !? 3) Quel type d'objet exactement sur le calque 1 et Idem sur le calque 2 ?? La Sante, Bye, lecrabe Autodesk Expert Elite Team
fabcad Posté(e) le 11 avril 2022 Auteur Posté(e) le 11 avril 2022 Et bien : - Sélectionner des objets AutoCAD d'un calque de type Textuels, Blocs, Hachures (etc.) - intersectés ou traversés par des objets AutoCAD (lignes, plines, cercles) d'un autre calque. Cette routine serait un outil de plus dans le Spécial Sélections de Gile. Fabcad Le Rennais Métropolitain
Luna Posté(e) le 11 avril 2022 Posté(e) le 11 avril 2022 Coucou, Je n'ai pas forcément le temps d'écrire le programme directement en mode tout propre tout beau mais voilà un principe de résolution : 1°) Détermination du nom des calques sources / cibles via (getstring T "\nCalque :") ;; Demande à l'utilisateur d'écrire le nom du calque à la mano (espaces autorisés) ou (cdr (assoc 8 (entget (car (entsel))))) ;; Demande à l'utilisateur de cliquer sur un objet pour récupérer le nom du calque (erreur si sélection vide) ou bien (pour une version plus propre), regarder du côté de (ListBox) développé par (gile) pour faire la sélection du calque depuis une boîte de dialogue 2°) Créer un jeu de sélection des objets de type "LINE,LWPOLYLINE,ARC,CIRCLE" (ou plus si besoin d'en rajouter, mais plus le type d'objet est varié et plus il faudra adapter le programme pour récupérer la liste de points) appartenant au calque servant à réaliser l'intersection (setq ssel (ssget "_X" (list (cons 0 "LINE,LWPOLYLINE,ARC,CIRCLE") (cons 8 "Layer1")))) 3°) Parcourir le jeu de sélection par une boucle (repeat), (while), ... et pour chaque objet contenu dans le jeu de sélection faire 3.a°) Récupérer sa liste de points (selon les types d'objets, la méthode est différente, d'où la complexité, notamment pour les "CIRCLE" !..) 3.b°) Utiliser la méthode "_Fence" de (ssget) pour créer un second jeu de sélection filtré sur le second calque (setq snew (ssget "_F" (mapcar '(lambda (p) (trans p 0 1)) pt-list) (list (cons 8 "Layer2")))) avec 'pt-list' la liste des sommets récupérée auparavant et le but du (mapcar ...) c'est de transposer les coordonnées SCG des objets du premier jeu de sélection en coordonnées SCU (comme chat, dans le cas où tu n'es pas en SCG, ton jeu de sélection ne se fera pas ailleurs dans ton dessin car la méthode "_Fence" utiliser les coordonnées SCU !) 3.c°) Parcourir le second jeu de sélection et pour chaque entité, les ajouter à un troisième jeu de sélection via (ssadd ent sel3) 4°) Mettre fin à toutes les boucles et afficher le résultat contenu dans le troisième jeu de sélection via (sssetfirst nil sel3) Évidemment, c'est très brouillon et optimisable mais cela peut te donner des pistes de dev' (j'ai pas testé hein, c'est juste ce qui me passe par la tête sur le moment) Après bien sûr, si tu ne programmes pas, il faudra que l'on développe un programme pour toi 😉 Bisous, Luna
fabcad Posté(e) le 11 avril 2022 Auteur Posté(e) le 11 avril 2022 Merci Luna, Voici mon développement avec une reprise de ton algorithme en gardant Plines et lignes. Après une multitude de corrections, ca fonctionne. Il faudrait une case de dialogue avec double liste pour le choix des calques. Merci pour votre aide, Bisous, Fabcad Le Rennais Métropolitain Fabrice Demiel-Selection_Objets_intersectes.LSP
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant