Aller au contenu

reperage contours exterieurs


Fishtonn

Messages recommandés

Bonjour,

 

A partir d'un dwg comme celui-ci: (dwg source) j'aimerai faire un lisp qui soit capable de repérer les différentes pièces et les exporter séparément.

 

Il existe peut-être déjà quelque chose qui le permette ? en tout cas je n'ai pas trouvé.

 

J'ai pensé structurer mon programme comme ça:

 

- eclater tous (au cas où il y aie une insertion de bloc, pour que tout soit au même niveau)

- convertir les splines en polyligne (au cas où il y en aie)

- convertir tout en polyligne jointe (ce qui me permettrait au passage de voir si un contour est resté ouvert)

- comparer les bounding box des différentes polylignes. Si la bounding box d'une polyligne est comprise entièrement dans la bounding box d'une autre c'est que c'est un contour intérieur, autrement c'est un contour extérieur.

- faire une sélection à partir des polylignes précédemment définies comme contour extérieur pour exporter les pièces.

 

Qu'en pensez vous ?

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

J'avance bien avec mon lisp, j'en suis à l'étape de la comparaison des bounding boxes.

 

Je pense faire une liste des contours avec les valeurs des points de leurs bounding box, pour pouvoir ensuite les comparer entre eux.

Mais je bloque un peu sur la création de cette liste, et comment lire dedans ensuite.

Est-ce qu'il est possible de faire une liste contenant des listes ?

Quelque chose du genre:

 

[liste bounding boxes]

[ (1) (nom contour 1) (Xmin Ymin Xmax Ymax) ]

[ (2) (nom contour 2) (Xmin Ymin Xmax Ymax) ]

.....

[fin liste bounding boxes]

 

Comment recuperer ensuite les elements pour les comparer ?

Je suppose qu'il s'agit de listes d'association ? J'essaie de m'y retrouver grâce au site de Gile (un grand merci à lui pour son boulot) mais je suis encore un peu confus là dessus...

 

lien avec le lisp en cours de développement et le fichier dwg de test.

lien wetransfer

Lien vers le commentaire
Partager sur d’autres sites

Coucou

ce sujet a été résolu par des "grands" de la programmation, je ne suis pas certain que débuter avec ce genre de challenge soit une vraie bonne idée

un exemple de liste contenant des listes, pas le meilleur exemple mais un exemple :

 

(setq a '( 10 20 30 40)) 
(setq nom "contour1")
(cons (list (list a nom)) (list (list a nom))) 

 

renvoie ((((10 20 30 40) "contour1")) ((10 20 30 40) "contour1"))

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é