Aller au contenu

Problème d'intersection


coyotte

Messages recommandés

Coucou

 

??

 

si elles sont en 2D et sur la même élévation

l'accrochage INTERSECTION fera merveille

 

si elles ont en 3D (altitudes de début et fin différentes)

tu vas utiliser intersection étendue (_appint)

 

la première ligne que tu vas sélectionner servira de référence altimétrique

et avec la deuxième AutoCAD trouvera l'intersection en plan.

 

en souhaitant avoir été explicatif.

 

Amicalement

Lien vers le commentaire
Partager sur d’autres sites

Salut

 

Il existe la méthode "Intersectwith" ;) .

 

 public Point3dCollection CollPt3d_Intersection(Database db, ObjectId IdA, ObjectId IdB, Editor ed)
       {
           Point3dCollection CollPt3d = new Point3dCollection();

           using (Transaction tr = db.TransactionManager.StartTransaction())
           {
               Entity EntA= tr.GetObject(IdA, OpenMode.ForRead) as Entity;
               Entity EntB = tr.GetObject(IdB, OpenMode.ForRead) as Entity;
               //Verifie si les 2 entitees s'intersectent
               EntiteeA.IntersectWith(EntiteeB, Autodesk.AutoCAD.DatabaseServices.Intersect.OnBothOperands, CollPt3d, IntPtr.Zero, IntPtr.Zero);
               ed.WriteMessage("\nNombre d'intersection trouvé: " + CollPt3d.Count);

               tr.Commit();
           }
           return CollPt3d;
       }

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Tes "droites" sont elles des entités graphiques de type Autodesk.AutoCAD.DatabaseServices.Xline ou des objets géométriques de type Autodesk.AutoCAD.Geometry.Line3d ?

 

Dans le premier cas, le plus simple est de créer une nouvelle instance de Autodesk.AutoCAD.Geometry.Line3d pour chaque Xline. Un constructeur de Line3d nécessite deux paramètres : un Point3d et un Vecteur3d (les propriétés BasePoint et UnitDir des objets Xline).

 

Les objets Line3d (qui dérivent de LinearEntity3d) ont une méthode (surchargée) IntersectWith() qui retourne un tableau de Point3d.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Re,

 

La méthode Entity.IntersectWith() donnée par Johnny_w fonctionne aussi, en fait,en interne, elle appelle la méthode IntersectWith sur les objets géométriques primitifs que j'ai donnée ci dessus. La doc ObjectARX conseille d'ailleurs d'utiliser plutôt celle-ci quand c'est possible.

 

Extrait de la doc (arxmgd.chm) d'ObjectARX 2010 pour la méthode Entity.IntersectWith():

When implementing the intersection calculation portion of this function you should take a good look at the graphics classes to see if they can provide any useful functionality to help in finding intersections with the geometric primitives that make up the entity this function is being called on and the entityPointer entity. For example, the Curve3d class has an IsOn() method that will indicate if a supplied point is on the curve and the CircularArc3d class has several IntersectWith() methods to find intersections with other graphics types.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

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é