Aller au contenu

Sélectionner des objets d'un calque intersectés ou traversés par des objets d'un autre calque


fabcad

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é