Aller au contenu

Problème avec Intersectwith


Messages recommandés

Bonjour,

 

j'ai un petit souci en C# avec Intersectwith pour trouver l'intersection d'un ligne et d'une polyligne via ce code:

_oLine.IntersectWith(oRefG, Intersect.OnBothOperands, pts, IntPtr.Zero, IntPtr.Zero);

 

 

En fait ça fonctionne bien sauf quand j'approche d'un sommet de polyligne, car dans ce cas, la fonction me renvoie 2 points d'intersection:

- la vraie intersection

- la fausse qui correspond à l'intersection virtuelle entre ma ligne et le segment de polyligne suivant (voir schéma http://img11.hostingpics.net/pics/266912IntersectWith.jpg)

 

Je peux m'en sortir en recalculant le GetClosestPoint et en vérifiant si la distance est inférieure à mon epsilon pour savoir si le point est bien sur la polyligne ou pas, mais c'est quand même bizarre. A moins d'utiliser les 2 inPtr des Graphismes, mais là je ne sais pas trop quoi utiliser.

 

Merci pour toute piste me permettant d'avancer.

 

Olivier

Lien vers le commentaire
Partager sur d’autres sites

Tiens c'est marrant j'ai eu le même problème hier.

 

Est-ce que par hasard les coordonnées de tes entités sont très grandes (genre 7 chiffres ou plus devant la virgule) ? Si oui, essaie de ramener tes entités à proximité de l'origine du SCG avec une translation, calcule ton intersection, puis rétablit tes entités à leur position de départ. Tu dois évidemment aussi transformer les points d'intersection renvoyés par IntersectWith pour obtenir leurs positions réelles.

 

C'est peut être un problème de stabilité numérique des fonctions géométrique d'AutoCAD.

Maxence DELANNOY

Développement de compléments aux logiciels Autodesk : AutoCAD, Revit, Inventor, Vault, Navisworks... et autres logiciels de CAO

WIIP - http://wiip.fr

Lien vers le commentaire
Partager sur d’autres sites

Effectivement, ce sont les coordonnées RGF93-CC49 qui posent problème. En décalant vers 0,0, plus de souci.

Je ne comprends pas pourquoi ce décalage n'est pas fait en interne dans les API d'AutoCAD, ça fait des années qu'on se traîne des galères dues aux grandes coordonnées.

 

Merci Maxence pour cette solution.

 

Olivier

Lien vers le commentaire
Partager sur d’autres sites

Je pense que ce n'est pas implémenté directement dans la bibliothèque géométrique pour des raisons d'optimisation. Si c'était fait dans IntersectWith, qui est utilisé par exemple pour l'accrochage aux objets, ça risquerait d'avoir un impact négatif sur les performances d'AutoCAD.

Maxence DELANNOY

Développement de compléments aux logiciels Autodesk : AutoCAD, Revit, Inventor, Vault, Navisworks... et autres logiciels de CAO

WIIP - http://wiip.fr

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é