.NET

.NET

Reply
Valued Contributor
dynamicscope
Posts: 95
Registered: ‎04-04-2012
Message 1 of 6 (1,144 Views)
Accepted Solution

Getting an intersecting point coordinate of two polylines(lines)

1144 Views, 5 Replies
07-12-2012 12:24 AM

Hi, I wonder if there is a way to get an intersecting point coordinate of two polylines(lines) programmatically.

For example, like in the below sample picture, I need to get coordinates of the points in the red cycles.

 

sample.PNG

 

 

Is there any method that I can easily use?

Could I get a sample code snippet that computes the coordinates? (in C# & ObjectARX 2010 if possible?)

 

I've looked up "Through the Interface" and this disscussion group. couldn't find any useful yet.

Please someone help me. =(

 

 

Thank you for your time.

 

Jake

*Expert Elite*
Hallex
Posts: 1,569
Registered: ‎10-08-2008
Message 2 of 6 (1,138 Views)

Re: Getting an intersecting point coordinate of two polylines(lines)

07-12-2012 12:57 AM in reply to: dynamicscope

Check this out

 

        [CommandMethod("checkinters")]
        public void CheckInterference()
        {
            Database db = HostApplicationServices.WorkingDatabase;
            Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
            Editor ed = doc.Editor;
    
                Transaction tr = db.TransactionManager.StartTransaction();

                using (tr)
                {
                    try
                    {
                        BlockTableRecord btr = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite);

                        PromptEntityOptions peo = new PromptEntityOptions("\nSelect a first polyline  >>");

                        peo.SetRejectMessage("\nSelected object might be of type polyline only >>");

                        peo.AddAllowedClass(typeof(Polyline), false);

                        PromptEntityResult res;

                        res = ed.GetEntity(peo);

                        if (res.Status != PromptStatus.OK)

                            return;

                        Entity ent = (Entity)tr.GetObject(res.ObjectId, OpenMode.ForRead);

                        if (ent == null)

                            return;

                        Polyline poly = (Polyline)ent as Polyline;
                        peo = new PromptEntityOptions("\nSelect second polyline  >>");

                        peo.SetRejectMessage("\nSelected object might be of type polyline only >>");

                        peo.AddAllowedClass(typeof(Polyline), false);

                        res = ed.GetEntity(peo);

                        if (res.Status != PromptStatus.OK)

                            return;

                        ent = (Entity)tr.GetObject(res.ObjectId, OpenMode.ForRead);

                        if (ent == null)

                            return;

                        Polyline poly2 = (Polyline)ent as Polyline;


                        Point3dCollection pts = new Point3dCollection();

                        poly.IntersectWith(poly2, Intersect.OnBothOperands, pts, (int)IntPtr.Zero, (int)IntPtr.Zero);

                        Autodesk.AutoCAD.ApplicationServices.Application.ShowAlertDialog(string.Format("Hint:\nNumber of Verices: {0}\nNumber of Intersections: {1}", poly.NumberOfVertices, pts.Count));
                     // test for visulization only
                        foreach (Point3d pt in pts)
                        {
                            Circle circ = new Circle(pt,Vector3d.ZAxis,10 * db.Dimtxt);
                            circ.ColorIndex = 1;
                            btr.AppendEntity(circ);
                            tr.AddNewlyCreatedDBObject(circ, true);

                        }
                        tr.Commit();
                    }
                    catch (System.Exception ex)
                    {
                        ed.WriteMessage("\n{0}\n{1}", ex.Message, ex.StackTrace);
                    }
                }

            }

 

 

~'J'~

_____________________________________
C6309D9E0751D165D0934D0621DFF27919
*Expert Elite*
Hallex
Posts: 1,569
Registered: ‎10-08-2008
Message 3 of 6 (1,135 Views)

Re: Getting an intersecting point coordinate of two polylines(lines)

07-12-2012 01:06 AM in reply to: dynamicscope

Can you upload the piece of this drawing

for testing?

 

~'J'~

_____________________________________
C6309D9E0751D165D0934D0621DFF27919
Valued Contributor
dynamicscope
Posts: 95
Registered: ‎04-04-2012
Message 4 of 6 (1,092 Views)

Re: Getting an intersecting point coordinate of two polylines(lines)

07-16-2012 10:34 PM in reply to: Hallex

It does work!! Thank you!! =)

*Expert Elite*
Hallex
Posts: 1,569
Registered: ‎10-08-2008
Message 5 of 6 (1,088 Views)

Re: Getting an intersecting point coordinate of two polylines(lines)

07-16-2012 11:38 PM in reply to: dynamicscope

You're welcome

Happy coding :smileyhappy:

 

~'J'~

_____________________________________
C6309D9E0751D165D0934D0621DFF27919
New Member
applie_3
Posts: 1
Registered: ‎12-14-2012
Message 6 of 6 (822 Views)

Re: Getting an intersecting point coordinate of two polylines(lines)

12-14-2012 11:16 PM in reply to: dynamicscope

Hi, i need to get coordinates of an image in autocad for my final year project. I am a student of computer engineering so dont have autocad background. Any help will highly be appriciated, thankyou.

Announcements
Are you familiar with the Autodesk Expert Elites? The Expert Elite program is made up of customers that help other customers by sharing knowledge and exemplifying an engaging style of collaboration. To learn more, please visit our Expert Elite website.
Need installation help?

Start with some of our most frequented solutions or visit the Installation and Licensing Forum to get help installing your software.