coyotte Posté(e) le 20 septembre 2011 Posté(e) le 20 septembre 2011 Bonjour à tous, j'expose mon problème J'ai deux droites AB et CD qui se coupe en un point. Quelle méthode utiliser pour trouver le point d'intersection. Merci d'avance à toutes les bonnes âmes qui se pencheront sur le sujet. http://www.carpetdiem.netPlugins pour AutoCAD
didier Posté(e) le 20 septembre 2011 Posté(e) le 20 septembre 2011 Coucou ?? si elles sont en 2D et sur la même élévationl'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étriqueet avec la deuxième AutoCAD trouvera l'intersection en plan. en souhaitant avoir été explicatif. Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
x_all Posté(e) le 20 septembre 2011 Posté(e) le 20 septembre 2011 dans la rubrique : ObjectARX/DBX, C++, .NET, RealDWGje ne suis pas sur que son pb se résume à utiliser l’accrochage... mais bon.... on est loin de mon champ de compétence dans ce cas... quelques trucs sur autocad
didier Posté(e) le 20 septembre 2011 Posté(e) le 20 septembre 2011 oops !! je n'ai pas lu le nom du forum !!c'est pour ça que je commençais par des points d'interrogation tellement la question me paraissait étonnante. désolé, attendons le retour de (gile) Éternel débutant... Mon site perso : Programmer dans AutoCAD
Johnny_w Posté(e) le 20 septembre 2011 Posté(e) le 20 septembre 2011 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; }
(gile) Posté(e) le 20 septembre 2011 Posté(e) le 20 septembre 2011 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
(gile) Posté(e) le 20 septembre 2011 Posté(e) le 20 septembre 2011 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
coyotte Posté(e) le 21 septembre 2011 Auteur Posté(e) le 21 septembre 2011 Bonjour gile et johnny_w, mes deux lignes sont effectivement des line3d. Je posais la question, car quand j'appelle la méthode intersectWith, l'intellisense me dit que la méthode est obsolète sans donner d'autre piste. Merci encore de vos réponses à tous. http://www.carpetdiem.netPlugins pour AutoCAD
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